{"version":3,"sources":["react-auth0-spa.js","components/PrivateRoute/index.js","constants/actionTypes.js","constants/inputFieldNames.js","constants/branchStatus.js","constants/companyStatus.js","constants/userStatus.js","constants/submitMode.js","constants/personnelStatus.js","constants/buttonNames.js","constants/userRoles.js","constants/userRolesEnum.js","constants/injuryConstants.js","constants/eventTypes.js","constants/courseCategories.js","constants/addCourseRecordDialogOpenSource.js","constants/hazardStatus.js","constants/hazardHierarchy.js","constants/domainType.js","constants/documentType.js","constants/hazardRisk.js","components/Page/index.js","components/Dialog/index.js","components/DualActionDialog/index.js","components/ChangePasswordDialog/index.js","actions/company.js","actions/branch.js","actions/user.js","actions/personnel.js","actions/accident.js","actions/event.js","actions/course.js","actions/hazard.js","actions/settings.js","containers/ChangePasswordDialog/index.js","components/MessageDisplay/index.js","containers/MessageDisplay/index.js","actions/general.js","components/BranchesPageHeader/index.js","containers/BranchesPageHeader/index.js","components/BranchRecordsItemsList/index.js","containers/BranchRecordsItemsList/index.js","components/DashboardPanel/DashboardCountBox/index.js","components/DashboardPanel/RecordsListForEvents/index.js","components/DashboardPanel/EventsDashboardBlade/index.js","components/DashboardPanel/RecordsListForTraining/index.js","components/DashboardPanel/TrainingDashboardBlade/index.js","mappers/injuryMappers.js","mappers/userRoleMapper.js","utils/timeConverter.js","components/DashboardPanel/AccidentsDashboardBlade/index.js","components/DashboardPanel/RecordsListForHazards/index.js","components/DashboardPanel/HazardDashboardBlade/index.js","components/DashboardPanel/index.js","containers/DashboardPanel/index.js","components/GenericViewPanel/index.js","components/CoursesList/index.js","containers/CoursesList/index.js","components/SearchBox/index.js","components/ButtonSearchBoxActionBar/index.js","components/FancyDropDown/index.js","components/StringDropDown/index.js","components/DocumenList/index.js","components/DocumentSearchDialog/index.js","components/DocumentListDialog/index.js","containers/DocumentListDialog/index.js","mappers/libraryDocumentMapper.js","components/LibraryDocumentList/index.js","components/CreateEditCourseFormUi/index.js","components/CreateCourseDialog/index.js","containers/CreateCourseDialog/index.js","components/DatePicker/index.js","components/Attachments/index.js","components/EditCoursePanel/EditCourseRecord/index.js","mappers/getPersonnelNameById.js","components/EditCoursePanel/SingleCourseRecord/index.js","components/EditCoursePanel/RecordsList/index.js","mappers/calculateNextEventDate.js","components/EditCoursePanel/AddRecord/index.js","components/AddCourseRecordDialog/index.js","containers/AddCourseRecordDialog/index.js","components/EditCoursePanel/index.js","containers/EditCoursePanel/index.js","components/EditCourseDialog/index.js","containers/EditCourseDialog/index.js","components/CoursesPanel/index.js","containers/CoursesPanel/index.js","components/CreateEditPersonnelFormUI/index.js","components/EditPersonnelDialog/index.js","containers/EditPersonnelDialog/index.js","components/CoursesForPersonnelDialog/index.js","containers/CoursesForPersonnelDialog/index.js","components/DeletePersonnedDialog/index.js","containers/DeletePersonnelDialog/index.js","mappers/sortByPropertyName.js","components/PersonnelsList/index.js","containers/PersonnelsList/index.js","mappers/duplicatePersonnelNameValidation.js","components/CreatePersonnelDialog/index.js","containers/CreatePersonnelDialog/index.js","components/PersonnelPanel/index.js","containers/PersonnelPanel/index.js","components/EventsList/index.js","containers/EventsList/index.js","components/CreateEditEventFormUi/index.js","components/CreateEventDialog/index.js","containers/CreateEventDialog/index.js","components/EditEventPanel/SingleEventRecord/index.js","components/EditEventPanel/EditEventRecord/index.js","components/EditEventPanel/RecordsList/index.js","components/EditEventPanel/AddRecord/index.js","components/AddEventRecordDialog/index.js","containers/AddEventRecordDialog/index.js","components/EditEventPanel/index.js","containers/EditEventPanel/index.js","components/EditEventDialog/index.js","containers/EditEventDialog/index.js","components/EventsPanel/index.js","containers/EventsPanel/index.js","components/InductionsPanel/index.js","containers/InductionsPanel/index.js","components/CreateEditAccidentFormUi/index.js","components/EditAccidentDialog/index.js","containers/EditAccidentDialog/index.js","components/DeleteOrDeactivateAccidentDialog/index.js","containers/DeleteOrDeactivateAccidentDialog/index.js","components/AccidentsList/index.js","containers/AccidentsList/index.js","components/CreateAccidentDialog/index.js","containers/CreateAccidentDialog/index.js","components/AccidentsPanel/index.js","containers/AccidentsPanel/index.js","components/MeetingsPanel/index.js","containers/MeetingsPanel/index.js","mappers/validateEmail.js","components/CreateEditUserFormUI/index.js","components/EditUserDialog/index.js","containers/EditUserDialog/index.js","components/EditUserFromBranchDialog/index.js","containers/EditUserFromBranchDialog/index.js","components/DeleteUserDialog/index.js","containers/DeleteUserDialog/index.js","components/UsersList/index.js","components/UserListForBranch/index.js","containers/UserListForBranch/index.js","components/CreateUserFromBranchDialog/index.js","containers/CreateUserFromBranchDialog/index.js","components/UserPannel/index.js","containers/UserPannel/index.js","components/HazardsList/index.js","containers/HazardsList/index.js","components/CardAttachments/index.js","components/HazardConsequncesDialog/index.js","components/CreateEditHazardFormUi/index.js","components/CreateHazardDialog/index.js","containers/CreateHazardDialog/index.js","components/EditHazardPanel/SingleHazardControl/index.js","components/EditHazardPanel/EditHazardControl/index.js","components/EditHazardPanel/DeletHazardControlDialog/index.js","containers/DeleteHazardControlDialog/index.js","components/EditHazardPanel/ControlsList/index.js","components/EditHazardPanel/AddControl/index.js","components/AddHazardControlDialog/index.js","containers/AddHazardControlDialog/index.js","components/EditHazardPanel/index.js","containers/EditHazardPanel/index.js","components/EditHazardDialog/index.js","containers/EditHazardDialog/index.js","components/HazardReviewPanel/SingleHazardReview/index.js","components/HazardReviewPanel/EditHazardReview/index.js","components/DeleteHazardReviewDialog/index.js","containers/DeleteHazardReviewDialog/index.js","components/HazardReviewPanel/ReviewList/index.js","components/HazardReviewPanel/AddReview/index.js","components/AddHazardReviewDialog/index.js","containers/AddHazardReviewDialog/index.js","components/HazardReviewPanel/index.js","containers/HazaradReviewPanel/index.js","components/HazardManagementLogPanel/SingleHazardManagemenLog/index.js","components/HazardManagementLogPanel/EditHazardManagementLog/index.js","components/DeleteHazardManagementLogDialog/index.js","containers/DeleteHazardManagementLogDialog/index.js","components/HazardManagementLogPanel/HazardManagementLogsList/index.js","components/HazardManagementLogPanel/AddHazardManagementLog/index.js","components/AddHazardManagementLogDialog/index.js","containers/AddHazardManagementLogDialog/index.js","components/HazardManagementLogPanel/index.js","containers/HazardManagementLogPanel/index.js","components/DropDown/index.js","components/HazardsPanel/index.js","containers/HazardsPanel/index.js","components/DocumentLibraryPanel/index.js","containers/DocumentLibraryPanel/index.js","components/DocumentLibraryPanelForBranch/AddFolder/index.js","components/DocumentLibraryPanelForBranch/index.js","containers/DocumentLibraryPanelForBranch/index.js","components/BranchesViewPanel/index.js","containers/BranchesViewPanel/index.js","components/BranchesDashboard/index.js","containers/BranchesDashboard/index.js","components/BranchesPage/index.js","components/DeativeOrDeleteBranchDialog/index.js","containers/DeativeOrDeleteBranchDialog/index.js","components/CreateEditBranchFormUI/index.js","components/EditBranchDialog/index.js","containers/EditBranchDialog/index.js","components/BranchesList/index.js","containers/BranchesList/index.js","components/CreateBranchDialog/index.js","containers/CreateBranchDialog/index.js","components/BranchDashboard/index.js","containers/BranchDashboard/index.js","components/CreateEditCompanyFormUI/index.js","components/CreateCompanyDialog/index.js","containers/CreateCompanyDialog/index.js","components/EditCompanyDialog/index.js","containers/EditCompanyDialog/index.js","components/DeativeOrDeleteCompanyDialog/index.js","containers/DeativeOrDeleteCompanyDialog/index.js","components/CompaniesList/index.js","containers/CompaniesList/index.js","components/CompanyDashboard/index.js","containers/CompanyDashboard/index.js","containers/UsersList/index.js","components/CreateUserDialog/index.js","containers/CreateUserDialog/index.js","components/UserDashboard/index.js","containers/UserDashboard/index.js","components/Header/index.js","containers/Header/index.js","components/DashboardPanelCompany/RecordsListInCompanyBlade/index.js","components/DashboardPanelCompany/EventsDashboardCompanyBlade/index.js","components/DashboardPanelCompany/TrainingDashboardCompanyBlade/index.js","components/DashboardPanelCompany/AccidentsDashboardCompanyBlade/index.js","components/DashboardPanelCompany/index.js","containers/DashboardPanelCompany/index.js","components/OverviewDashboard/index.js","containers/OverviewDashboard/index.js","components/AdminPage/index.js","containers/AdminPage/index.js","components/HomePage/index.js","containers/HomePage/index.js","components/AdminBranchView/index.js","containers/AdminBranchView/index.js","App.js","utils/serviceWorker.js","reducers/general.js","reducers/users.js","reducers/user.js","reducers/companies.js","reducers/company.js","reducers/branch.js","reducers/branches.js","reducers/settings.js","constants/sites.js","reducers/personnels.js","reducers/personnel.js","reducers/accidents.js","utils/attachmentUtils.js","reducers/accident.js","reducers/event.js","reducers/events.js","reducers/hazard.js","reducers/hazards.js","reducers/courses.js","reducers/course.js","reducers/index.js","api/baseClient.js","api/companies.js","sagas/companies.js","api/branches.js","sagas/branches.js","api/personnels.js","sagas/personnels.js","api/users.js","sagas/users.js","api/settings.js","api/attachment.js","sagas/settings.js","api/accidents.js","sagas/accidents.js","api/events.js","sagas/events.js","api/hazards.js","sagas/hazards.js","api/courses.js","sagas/courses.js","sagas/index.js","utils/history.js","utils/theme.js","index.js","store/index.js"],"names":["DEFAULT_REDIRECT_CALLBACK","window","history","replaceState","document","title","location","pathname","Auth0Context","React","createContext","useAuth0","useContext","Auth0Provider","children","onRedirectCallback","initOptions","useState","isAuthenticated","setIsAuthenticated","user","setUser","auth0Client","setAuth0","loading","setLoading","popupOpen","setPopupOpen","useEffect","a","createAuth0Client","auth0FromHook","search","includes","handleRedirectCallback","appState","getUser","initAuth0","loginWithPopup","params","console","error","Provider","value","getIdTokenClaims","loginWithRedirect","getTokenSilently","getTokenWithPopup","logout","PrivateRoute","Component","component","path","rest","targetUrl","fn","render","props","MESSAGE_SHOW","MESSAGE_HIDE","MESSAGE_NEXT","OPEN_CREATE_COMPANY_DIALOG","OPEN_EDIT_COMPANY_DIALOG","SAMPLE","OPEN_CREATE_BRANCH_DIALOG","OPEN_EDIT_BRANCH_DIALOG","CHANGE_SEARCH_TERM_ALL_BRANCH","CHECK_BRANCH_ACCESS_FOR_USER","START_CHECK_BRANCH_ACCESS_FOR_USER","CHECK_BRANCH_ACCESS_FOR_USER_SUCCESS","CHECK_BRANCH_ACCESS_FOR_USER_FAILURE","CHECK_BRANCH_ACCESS_FOR_USER_FINISHED","START_GET_ALL_BRANCH","GET_ALL_BRANCH","GET_ALL_BRANCH_SUCCESS","GET_ALL_BRANCH_FAILURE","GET_ALL_BRANCH_FINISH","INPUT_CHANGE_CREATE_BRANCH_FORM","EDIT_BRANCH","SUBMIT_BRANCH","START_SUBMIT_BRANCH","SUBMIT_BRANCH_SUCCESS","SUBMIT_BRANCH_FAILURE","SUBMIT_BRANCH_FINISHED","DEACTIVATE_OR_DELETE_BRANCH_DIALOG","DEACTIVATE_OR_DELETE_BRANCH","INPUT_CHANGE_CREATE_COMPANY_FORM","DEACTIVATE_OR_DELETE_COMPANY_DIALOG","DEACTIVATE_OR_DELETE_COMPANY","SUBMIT_COMPANY","START_SUBMIT_COMPANY","SUBMIT_COMPANY_SUCCESS","SUBMIT_COMPANY_FAILURE","SUBMIT_COMPANY_FINISHED","CHANGE_SEARCH_TERM_ALL_COMPANIES","FETCH_ALL_COMPANIES","START_FETCH_ALL_COMPANIES","FETCH_ALL_COMPANIES_SUCCESS","FETCH_ALL_COMPANIES_FAILURE","FETCH_ALL_COMPANIES_FINISHED","CHANGE_TAB_VALUE_IN_HEADER","EDIT_COMPANY","OPEN_CHANGE_PASSWORD_DIALOG","SEND_CHANGE_PASSWORD_REQUEST","START_SEND_CHANGE_PASSWORD_REQUEST","SEND_CHANGE_PASSWORD_REQUEST_SUCCESS","SEND_CHANGE_PASSWORD_REQUEST_FAILURE","SEND_CHANGE_PASSWORD_REQUEST_FINISHED","SET_LOGGED_IN_USER","FETCH_ALL_PERSONNELS","START_FETCH_ALL_PERSONNELS","FETCH_ALL_PERSONNELS_SUCCESS","FETCH_ALL_PERSONNELS_FAILURE","FETCH_ALL_PERSONNELS_FINISHED","OPEN_CREATE_PERSONNEL_DIALOG","OPEN_EDIT_PERSONNEL_DIALOG","CHANGE_SEARCH_TERM_ALL_PERSONNELS","INPUT_CHANGE_CREATE_PERSONNEL_FORM","SUBMIT_PERSONNEL","START_SUBMIT_PERSONNEL","SUBMIT_PERSONNEL_SUCCESS","SUBMIT_PERSONNEL_FAILURE","SUBMIT_PERSONNEL_FINISHED","CHANGE_NEW_PERSONNEL_VALIDATION_STATE","OPEN_DELETE_PERSONNEL_DIALOG","OPEN_ADD_COURSE_RECORD_DIALOG","OPEN_ADD_EVENT_RECORD_DIALOG","OPEN_ADD_HAZARD_CONTROL_DIALOG","FETCH_USER_DETAILS","START_FETCH_USER_DETAILS","FETCH_USER_DETAILS_SUCCESS","FETCH_USER_DETAILS_FAILURE","FETCH_USER_DETAILS_FINISHED","SET_CURRENT_BRANCHES_RECORD","EDIT_PERSONNEL","OPEN_COURSES_FOR_PERSONNEL_DIALOG","CLEAR_ALL_COURSES_FOR_PERSONNEL","FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER","START_FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER","FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER_SUCCESS","FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER_FAILURE","FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER_FINISHED","FETCH_BRANCH_DETAILS_BY_BRANCH_ID","START_FETCH_BRANCH_DETAILS_BY_BRANCH_ID","FETCH_BRANCH_DETAILS_BY_BRANCH_ID_SUCCESS","FETCH_BRANCH_DETAILS_BY_BRANCH_ID_FAILURE","FETCH_BRANCH_DETAILS_BY_BRANCH_ID_FINISHED","FETCH_ALL_ACCIDENTS_FOR_BRANCH","START_FETCH_ALL_ACCIDENTS_FOR_BRANCH","FETCH_ALL_ACCIDENTS_FOR_BRANCH_SUCCESS","FETCH_ALL_ACCIDENTS_FOR_BRANCH_FAILURE","FETCH_ALL_ACCIDENTS_FOR_BRANCH_FINISHED","FETCH_ALL_ACCIDENTS_FOR_COMPANY","START_FETCH_ALL_ACCIDENTS_FOR_COMPANY","FETCH_ALL_ACCIDENTS_FOR_COMPANY_SUCCESS","FETCH_ALL_ACCIDENTS_FOR_COMPANY_FAILURE","FETCH_ALL_ACCIDENTS_FOR_COMPANY_FINISHED","CHANGE_SEARCH_TERM_ALL_ACCIDENTS","OPEN_CREATE_ACCIDENT_DIALOG","OPEN_EDIT_ACCIDENT_DIALOG","INPUT_CHANGE_CREATE_ACCIDENT_FORM","EDIT_ACCIDENT","DEACTIVATE_OR_DELETE_ACCIDENT_DIALOG","DEACTIVATE_OR_DELETE_ACCIDENT","START_DEACTIVATE_OR_DELETE_ACCIDENT","DEACTIVATE_OR_DELETE_ACCIDENT_SUCCESS","DEACTIVATE_OR_DELETE_ACCIDENT_FAILURE","DEACTIVATE_OR_DELETE_ACCIDENT_FINISHED","SUBMIT_ACCIDENT","START_SUBMIT_ACCIDENT","SUBMIT_ACCIDENT_SUCCESS","SUBMIT_ACCIDENT_FAILURE","SUBMIT_ACCIDENT_FINISHED","FETCH_ALL_EVENTS_FOR_BRANCH","START_FETCH_ALL_EVENTS_FOR_BRANCH","FETCH_ALL_EVENTS_FOR_BRANCH_SUCCESS","FETCH_ALL_EVENTS_FOR_BRANCH_FAILURE","FETCH_ALL_EVENTS_FOR_BRANCH_FINISHED","FETCH_ALL_EVENTS_FOR_COMPANY","START_FETCH_ALL_EVENTS_FOR_COMPANY","FETCH_ALL_EVENTS_FOR_COMPANY_SUCCESS","FETCH_ALL_EVENTS_FOR_COMPANY_FAILURE","FETCH_ALL_EVENTS_FOR_COMPANY_FINISHED","CHANGE_SEARCH_TERM_ALL_EVENTS","OPEN_CREATE_EVENT_DIALOG","OPEN_EDIT_EVENT_DIALOG","OPEN_EDIT_EVENT_PANEL","INPUT_CHANGE_CREATE_EVENT_FORM","EDIT_EVENT","SUBMIT_EVENT","START_SUBMIT_EVENT","SUBMIT_EVENT_SUCCESS","SUBMIT_EVENT_FAILURE","SUBMIT_EVENT_FINISHED","OPEN_DELETE_EVENT_DIALOG","DELETE_EVENT","START_DELETE_EVENT","DELETE_EVENT_SUCCESS","DELETE_EVENT_FAILURE","DELETE_EVENT_FINISHED","FETCH_RECORDS_FOR_THE_EVENT","START_FETCH_RECORDS_FOR_THE_EVENT","FETCH_RECORDS_FOR_THE_EVENT_SUCCESS","FETCH_RECORDS_FOR_THE_EVENT_FAILURE","FETCH_RECORDS_FOR_THE_EVENT_FINISHED","DELETE_EVENT_RECORD","START_DELETE_EVENT_RECORD","DELETE_EVENT_RECORD_SUCCESS","DELETE_EVENT_RECORD_FAILURE","DELETE_EVENT_RECORD_FINISHED","SUBMIT_EVENT_RECORD","START_SUBMIT_EVENT_RECORD","SUBMIT_EVENT_RECORD_SUCCESS","SUBMIT_EVENT_RECORD_FAILURE","SUBMIT_EVENT_RECORD_FINISHED","FETCH_ALL_COURSES_FOR_BRANCH","START_FETCH_ALL_COURSES_FOR_BRANCH","FETCH_ALL_COURSES_FOR_BRANCH_SUCCESS","FETCH_ALL_COURSES_FOR_BRANCH_FAILURE","FETCH_ALL_COURSES_FOR_BRANCH_FINISHED","FETCH_ALL_COURSE_RECORDS_FOR_BRANCH","START_FETCH_ALL_COURSE_RECORDS_FOR_BRANCH","FETCH_ALL_COURSE_RECORDS_FOR_BRANCH_SUCCESS","FETCH_ALL_COURSE_RECORDS_FOR_BRANCH_FAILURE","FETCH_ALL_COURSE_RECORDS_FOR_BRANCH_FINISHED","FETCH_ALL_COURSES_FOR_COMPANY","START_FETCH_ALL_COURSES_FOR_COMPANY","FETCH_ALL_COURSES_FOR_COMPANY_SUCCESS","FETCH_ALL_COURSES_FOR_COMPANY_FAILURE","FETCH_ALL_COURSES_FOR_COMPANY_FINISHED","FETCH_ALL_COURSE_RECORDS_FOR_COMPANY","START_FETCH_ALL_COURSE_RECORDS_FOR_COMPANY","FETCH_ALL_COURSE_RECORDS_FOR_COMPANY_SUCCESS","FETCH_ALL_COURSE_RECORDS_FOR_COMPANY_FAILURE","FETCH_ALL_COURSE_RECORDS_FOR_COMPANY_FINISHED","CHANGE_SEARCH_TERM_ALL_COURSES","OPEN_CREATE_COURSE_DIALOG","OPEN_EDIT_COURSE_PANEL","INPUT_CHANGE_CREATE_COURSE_FORM","EDIT_COURSE","INPUT_CHANGE_EDIT_COURSE_RECORD","OPEN_EDIT_COURSE_DIALOG","SUBMIT_COURSE","START_SUBMIT_COURSE","SUBMIT_COURSE_SUCCESS","SUBMIT_COURSE_FAILURE","SUBMIT_COURSE_FINISHED","OPEN_DELETE_COURSE_DIALOG","DELETE_COURSE","START_DELETE_COURSE","DELETE_COURSE_SUCCESS","DELETE_COURSE_FAILURE","DELETE_COURSE_FINISHED","FETCH_RECORDS_FOR_THE_COURSE","START_FETCH_RECORDS_FOR_THE_COURSE","FETCH_RECORDS_FOR_THE_COURSE_SUCCESS","FETCH_RECORDS_FOR_THE_COURSE_FAILURE","FETCH_RECORDS_FOR_THE_COURSE_FINISHED","DELETE_COURSE_RECORD","START_DELETE_COURSE_RECORD","DELETE_COURSE_RECORD_SUCCESS","DELETE_COURSE_RECORD_FAILURE","DELETE_COURSE_RECORD_FINISHED","ENABLE_EDIT_COURSE_RECORD","EDIT_COURSE_RECORD","START_EDIT_COURSE_RECORD","EDIT_COURSE_RECORD_SUCCESS","EDIT_COURSE_RECORD_FAILURE","EDIT_COURSE_RECORD_FINISHED","SUBMIT_COURSE_RECORD","START_SUBMIT_COURSE_RECORD","SUBMIT_COURSE_RECORD_SUCCESS","SUBMIT_COURSE_RECORD_FAILURE","SUBMIT_COURSE_RECORD_FINISHED","FETCH_COURSES_FOR_PERSONNEL","START_FETCH_COURSES_FOR_PERSONNEL","FETCH_COURSES_FOR_PERSONNEL_SUCCESS","FETCH_COURSES_FOR_PERSONNEL_FAILURE","FETCH_COURSES_FOR_PERSONNEL_FINISHED","OPEN_CREATE_USER_DIALOG","OPEN_EDIT_USER_DIALOG","OPEN_DELETE_USER_DIALOG","CHANGE_SEARCH_TERM_ALL_USERS","FETCH_ALL_USERS","START_FETCH_ALL_USERS","FETCH_ALL_USERS_SUCCESS","FETCH_ALL_USERS_FAILURE","FETCH_ALL_USERS_FINISHED","EDIT_USER","INPUT_CHANGE_CREATE_USER_FORM","SUBMIT_USER","START_SUBMIT_USER","SUBMIT_USER_SUCCESS","SUBMIT_USER_FAILURE","SUBMIT_USER_FINISHED","ENABLE_EDIT_EVENT_RECORD","EDIT_EVENT_RECORD","START_EDIT_EVENT_RECORD","EDIT_EVENT_RECORD_SUCCESS","EDIT_EVENT_RECORD_FAILURE","EDIT_EVENT_RECORD_FINISHED","INPUT_CHANGE_EDIT_EVENT_RECORD","FETCH_ALL_HAZARDS_FOR_BRANCH","START_FETCH_ALL_HAZARDS_FOR_BRANCH","FETCH_ALL_HAZARDS_FOR_BRANCH_SUCCESS","FETCH_ALL_HAZARDS_FOR_BRANCH_FAILURE","FETCH_ALL_HAZARDS_FOR_BRANCH_FINISHED","FETCH_ALL_HAZARDS_FOR_COMPANY","START_FETCH_ALL_HAZARDS_FOR_COMPANY","FETCH_ALL_HAZARDS_FOR_COMPANY_SUCCESS","FETCH_ALL_HAZARDS_FOR_COMPANY_FAILURE","FETCH_ALL_HAZARDS_FOR_COMPANY_FINISHED","CHANGE_SEARCH_TERM_ALL_HAZARDS","OPEN_CREATE_HAZARD_DIALOG","OPEN_EDIT_HAZARD_DIALOG","OPEN_EDIT_HAZARD_PANEL","INPUT_CHANGE_CREATE_HAZARD_FORM","EDIT_HAZARD","SUBMIT_HAZARD","START_SUBMIT_HAZARD","SUBMIT_HAZARD_SUCCESS","SUBMIT_HAZARD_FAILURE","SUBMIT_HAZARD_FINISHED","OPEN_DELETE_HAZARD_DIALOG","DELETE_HAZARD","START_DELETE_HAZARD","DELETE_HAZARD_SUCCESS","DELETE_HAZARD_FAILURE","DELETE_HAZARD_FINISHED","FETCH_CONTROLS_FOR_THE_HAZARD","START_FETCH_CONTROLS_FOR_THE_HAZARD","FETCH_CONTROLS_FOR_THE_HAZARD_SUCCESS","FETCH_CONTROLS_FOR_THE_HAZARD_FAILURE","FETCH_CONTROLS_FOR_THE_HAZARD_FINISHED","DELETE_HAZARD_CONTROL","START_DELETE_HAZARD_CONTROL","DELETE_HAZARD_CONTROL_SUCCESS","DELETE_HAZARD_CONTROL_FAILURE","DELETE_HAZARD_CONTROL_FINISHED","SUBMIT_HAZARD_CONTROL","START_SUBMIT_HAZARD_CONTROL","SUBMIT_HAZARD_CONTROL_SUCCESS","SUBMIT_HAZARD_CONTROL_FAILURE","SUBMIT_HAZARD_CONTROL_FINISHED","ENABLE_EDIT_HAZARD_CONTROL","EDIT_HAZARD_CONTROL","START_EDIT_HAZARD_CONTROL","EDIT_HAZARD_CONTROL_SUCCESS","EDIT_HAZARD_CONTROL_FAILURE","EDIT_HAZARD_CONTROL_FINISHED","INPUT_CHANGE_EDIT_HAZARD_CONTROL","OPEN_DELETE_HAZARD_CONTROL_DIALOG","OPEN_HAZARD_REVIEW_PANEL","FETCH_REVIEWS_FOR_THE_HAZARD","START_FETCH_REVIEWS_FOR_THE_HAZARD","FETCH_REVIEWS_FOR_THE_HAZARD_SUCCESS","FETCH_REVIEWS_FOR_THE_HAZARD_FAILURE","FETCH_REVIEWS_FOR_THE_HAZARD_FINISHED","OPEN_CREATE_HAZARD_REVIEW_DIALOG","SUBMIT_HAZARD_REVIEW","START_SUBMIT_HAZARD_REVIEW","SUBMIT_HAZARD_REVIEW_SUCCESS","SUBMIT_HAZARD_REVIEW_FAILURE","SUBMIT_HAZARD_REVIEW_FINISHED","INPUT_CHANGE_EDIT_HAZARD_REVIEW","INPUT_CHANGE_ADD_HAZARD_REVIEW","ENABLE_EDIT_HAZARD_REVIEW","EDIT_HAZARD_REVIEW","START_EDIT_HAZARD_REVIEW","EDIT_HAZARD_REVIEW_SUCCESS","EDIT_HAZARD_REVIEW_FAILURE","EDIT_HAZARD_REVIEW_FINISHED","OPEN_DELETE_HAZARD_REVIEW_DIALOG","OPEN_HAZARD_MANAGEMENTLOG_PANEL","FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD","START_FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD","FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD_SUCCESS","FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD_FAILURE","FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD_FINISHED","OPEN_CREATE_HAZARD_MANAGEMENT_LOG_DIALOG","SUBMIT_HAZARD_MANAGEMENT_LOG","START_SUBMIT_HAZARD_MANAGEMENT_LOG","SUBMIT_HAZARD_MANAGEMENT_LOG_SUCCESS","SUBMIT_HAZARD_MANAGEMENT_LOG_FAILURE","SUBMIT_HAZARD_MANAGEMENT_LOG_FINISHED","INPUT_CHANGE_EDIT_HAZARD_MANAGEMENT_LOG","INPUT_CHANGE_ADD_HAZARD_MANAGEMENT_LOG","ENABLE_EDIT_HAZARD_MANAGEMENT_LOG","EDIT_HAZARD_MANAGEMENT_LOG","START_EDIT_HAZARD_MANAGEMENT_LOG","EDIT_HAZARD_MANAGEMENT_LOG_SUCCESS","EDIT_HAZARD_MANAGEMENT_LOG_FAILURE","EDIT_HAZARD_MANAGEMENT_LOG_FINISHED","OPEN_DELETE_HAZARD_MANAGEMENT_LOG_DIALOG","FETCH_ALL_REVIEWS_FOR_BRANCH","EDIT_REVIEW","CHANGE_SELECTED_HAZARD_STATUS_FILTER","CHANGE_SELECTED_HAZARD_DESCRIPTION_FILTER","CLEAR_HAZARD_FILTERS","FETCH_ALL_DOCUMENTS","START_FETCH_ALL_DOCUMENTS","FETCH_ALL_DOCUMENTS_SUCCESS","FETCH_ALL_DOCUMENTS_FAILURE","FETCH_ALL_DOCUMENTS_FINISHED","OPEN_DOCUMENT_LIST_DIALOG","DOCUMENT_SHOW_FOLDER_ITEMS","DOCUMENT_BACK_ARROW_CLICKED","DOCUMENT_RESET_ORIGINAL_STATE","DOCUMENT_SELECTED","FULL_RESET_DOCUMENTS","FETCH_ALL_DOCUMENTS_FOR_BRANCH","LOAD_ATTACHMENTS_FOR_HAZARD","START_LOAD_ATTACHMENTS_FOR_HAZARD","LOAD_ATTACHMENTS_FOR_HAZARD_SUCCESS","LOAD_ATTACHMENTS_FOR_HAZARD_FAILURE","LOAD_ATTACHMENTS_FOR_HAZARD_FINISHED","REMOVE_HAZARD_ATTACHMENT","UPLOAD_ATTACHMENTS_FOR_HAZARD","START_UPLOAD_ATTACHMENTS_FOR_HAZARD","UPLOAD_ATTACHMENTS_FOR_HAZARD_SUCCESS","UPLOAD_ATTACHMENTS_FOR_HAZARD_FAILURE","UPLOAD_ATTACHMENTS_FOR_HAZARD_FINISHED","DELETE_ATTACHMENTS_FOR_HAZARD","REMOVE_COURSE_RECORD_ATTACHMENT","REMOVE_COURSE_RECORD_ATTACHMENT_EDIT","LOAD_ATTACHMENTS_FOR_COURSE_RECORD","UPLOAD_ATTACHMENTS_FOR_COURSE_RECORD","DELETE_ATTACHMENTS_FOR_COURSE_RECORD","START_LOAD_ATTACHMENTS_FOR_COURSE_RECORD","LOAD_ATTACHMENTS_FOR_COURSE_RECORD_SUCCESS","LOAD_ATTACHMENTS_FOR_COURSE_RECORD_FAILURE","LOAD_ATTACHMENTS_FOR_COURSE_RECORD_FINISHED","REMOVE_EVENT_RECORD_ATTACHMENT","REMOVE_EVENT_RECORD_ATTACHMENT_EDIT","LOAD_ATTACHMENTS_FOR_EVENT_RECORD","UPLOAD_ATTACHMENTS_FOR_EVENT_RECORD","DELETE_ATTACHMENTS_FOR_EVENT_RECORD","START_LOAD_ATTACHMENTS_FOR_EVENT_RECORD","LOAD_ATTACHMENTS_FOR_EVENT_RECORD_SUCCESS","LOAD_ATTACHMENTS_FOR_EVENT_RECORD_FAILURE","LOAD_ATTACHMENTS_FOR_EVENT_RECORD_FINISHED","LOAD_ATTACHMENTS_FOR_ACCIDENT","START_LOAD_ATTACHMENTS_FOR_ACCIDENT","LOAD_ATTACHMENTS_FOR_ACCIDENT_SUCCESS","LOAD_ATTACHMENTS_FOR_ACCIDENT_FAILURE","LOAD_ATTACHMENTS_FOR_ACCIDENT_FINISHED","REMOVE_ACCIDENT_ATTACHMENT","UPLOAD_ATTACHMENTS_FOR_ACCIDENT","DELETE_ATTACHMENTS_FOR_ACCIDENT","REMOVE_HAZARD_REVIEW_ATTACHMENT","LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW","REMOVE_HAZARD_REVIEW_ATTACHMENT_EDIT","UPLOAD_ATTACHMENTS_FOR_HAZARD_REVIEW","DELETE_ATTACHMENTS_FOR_HAZARD_REVIEW","START_LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW","LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW_SUCCESS","LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW_FAILURE","LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW_FINISHED","REMOVE_HAZARD_MANAGEMENT_LOGS_ATTACHMENT","LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS","REMOVE_HAZARD_MANAGE_LOGS_ATTACHMENT_EDIT","UPLOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS","DELETE_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS","START_LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS","LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS_SUCCESS","LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS_FAILURE","LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS_FINISHED","REMOVE_HAZARD_CONTROL_ATTACHMENT","LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL","REMOVE_HAZARD_CONTROL_ATTACHMENT_EDIT","UPLOAD_ATTACHMENTS_FOR_HAZARD_CONTROL","DELETE_ATTACHMENTS_FOR_HAZARD_CONTROL","START_LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL","LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL_SUCCESS","LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL_FAILURE","LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL_FINISHED","FOLDER_ADDED","USER_ATTACHMENT_ADD","START_USER_ATTACHMENT_ADD","USER_ATTACHMENT_ADD_SUCCESS","USER_ATTACHMENT_ADD_FAILURE","USER_ATTACHMENT_ADD_FINISHED","USER_ATTACHMENT_REMOVE","START_USER_ATTACHMENT_REMOVE","USER_ATTACHMENT_REMOVE_SUCCESS","USER_ATTACHMENT_REMOVE_FAILURE","USER_ATTACHMENT_REMOVE_FINISHED","NAME","EMAIL","PHONE","CONTACT_PERSON","FAX","COMPANY","ADDRESS","NOTES","HAZARD_ATTACHMENT","HAZARD_REVIEW_ATTACHMENT","HAZARD_MANAGEMENT_LOGS_ATTACHMENT","HAZARD_CONTROL_ATTACHMENT","FIRST_NAME","LAST_NAME","WORK_PHONE","BRANCH","START_DATE_UTC","HOME_PHONE","ASSIGNEE","REQUESTOR","REG_DATE_UTC","SITE","INJURY_DATE","INJURY_TIME","DEPARTMENT","INJURY_LOCATION","INJURY_TYPE","PERSONNEL","INJURY_CAUSE","TREATMENT","WHAT_HAPPENEND","CAUSE","ASSESSMENT","ANALYSIS","ACTION","ACCIDENT_ATTACHMENT","DESCRIPTION","EVENT_NOTES","FREQUENCY","EVENT_TYPE","EVENT_COORDINATOR","LAST_HELD_DATE","NEXT_EVENT_DATE","EVENT_DOCUMENT_NAME","RECORD_DATE","RECORD_NOTES","EVENT_RECORD_ATTACHMENT","INITIAL_RISK_LIKELIHOOD","INITIAL_RISK_CONSEQUENCE","FINAL_RISK_LIKELIHOOD","FINAL_RISK_CONSEQUENCE","NEXT_REVIEW_DATE","HAZARD_STATUS","HAZARD_DOCUMENT","HAZARD_DEPARTMENT","CONTROL_COMMENTS","CONTROL_HIERARCHY","HAZARD_CONTROL_DOCUMENT","REVIEW_DESCRIPION","REVIEW_REVIEW_DATE","LOG_DESCRIPION","LOG_DATE","PERSONNEL_ID","COURSE_RECORD_ATTACHMENT","UNIT_DESCRIPTION","COURSE_CODE","TRAINING_PROVIDER","CONTACT_PERSON_FOR_COURSE","PHONE_FOR_COURSE","EMAIL_FOR_COURSE","COURSE_COST","DURATION","FREQUENCY_FOR_COURSE","COURSE_CATEGORY","COURSE","COURSE_NOTES","COURSE_DOCUMENT","USER_NAME","USER_EMAIL","USER_PASSWORD","USER_ROLE","USER_BRANCH","USER_COMPANY","userRolesEnum","id","injuryTypes","injuryCauses","injuryLocations","eventTypes","courseCategories","hazardStatus","hazardHierarchy","hazardRisks","index","columns","hasIndexNumber","indexNumber","isCoulumnHeading","heading","subHeading","color","isClicable","likelihood","consequnces","Page","className","join","Dialog","disableBackdropClick","disableEscapeKeyDown","useStyles","makeStyles","theme","errorMessage","position","left","actionButton","width","float","margin","spacing","DualActionDialog","classes","open","handleSubmit","handleClose","description","actionButtonText","cancelButtonText","showProgressBar","isDanger","Fragment","onClose","aria-labelledby","aria-describedby","LinearProgress","DialogTitle","DialogContent","DialogContentText","DialogActions","Typography","variant","Button","onClick","autoFocus","style","backgroundColor","ChangePasswordDialog","openDialog","onOpenChangePasswordDialog","onChangePassword","isSaving","email","openCreateCompanyDialogDispatch","type","types","openEditCompanyDialogDispatch","handleCompanyInputChangeDispatch","inputFieldName","submitCompanyDispatch","company","mode","fetchAllCompaniesDispatch","showDeleteOrDeactiveCompanyDialogStateChanged","companyId","status","fetchUserDetailsDispatch","userEmail","openCreateBranchDialogDispatch","openEditBranchDialogDispatch","getBranches","handleBranchInputChangeDispatch","submitBranchDispatch","branch","showDeleteOrDeactiveBranchDialogStateChanged","branchId","setCurrentBranchesRecordDispatch","recordType","openChangePasswordDialogDispatch","openDeleteUserDialogDispatch","setLoggedInUserDispatch","openCreateUserDialogDispatch","openEditUserDialogDispatch","handleUserInputChangeDispatch","submitUserDispatch","searchTermChangeForAllUsers","searchTerm","fetchAllUsersDispatch","userEditClickDispatch","fetchAllPersonnelsDispatch","openCreatePersonnelDialogDispatch","isShort","handlePersonnelInputChangeDispatch","submitPersonnelDispatch","personnel","openEditPersonnelDialogDispatch","personnelEditClickDispatch","openCoursesForPersonnelDialog","openDeletePersonnelDialogDispatch","openAddCourseRecordDialogDispatch","personnelId","source","fetchAllAccidentsForBranchDispatch","openCreateAccidentDialogDispatch","openEditAccidentDialogDispatch","handleAccidentInputChangeDispatch","submitAccidentDispatch","accident","showDeleteOrActivateAccidentDialogStatChanged","removeAccidentAttachment","attachment","fetchExistingAttachmentsForTheAccidentDispatch","domainTypeId","parentId","loggedInUserId","fetchAllEventsForBranchDispatch","openCreateEventDialogDispatch","handleEventInputChangeDispatch","submitEventDispatch","event","openEditEventPanelDispatch","openEditEventDialogDispatch","eventEditClickDispatch","submitRecordDispatch","payload","openAddEventRecordDialogDispatch","fetchAllCoursesForBranchDispatch","openCreateCourseDialogDispatch","onHandleInputChange","inputfieldName","submitCourseDispatch","course","openEditCoursePanelDispatch","openEditCourseDialogDispatch","courseEditClickDispatch","submitCourseRecordDispatch","fetchAllHazardsForBranchDispatch","openCreateHazardDialogDispatch","handleHazardInputChangeDispatch","submitHazardDispatch","hazard","openEditHazardPanelDispatch","openEditHazardDialogDispatch","hazardEditClickDispatch","submitControlDispatch","openAddHazardControlDialogDispatch","openDeleteHazardControlDialogDispatch","controlId","openHazardReviewPanelDispatch","handleAddHazardReviewInputChangeDispatch","submitHazardReviewDispatch","openAddHazardReviewDialogDispatch","openDeleteHazardReviewDialogDispatch","reviewId","openHazardManagementLogPanelDispatch","handleAddHazardManagementLogInputChangeDispatch","submitHazardManagementLogDispatch","openAddHazardManagementLogDialogDispatch","openDeleteHazardManagementLogDialogDispatch","managementLogId","removeAttachment","fetchExistingAttachmentsForTheHazardDispatch","fetchAllDocumentsDispatch","documentType","fetchAllDocumentsForBranchDispatch","openDocumentListDialogDispatch","onDocumentFolderShowDispatch","prefix","onDocumentListBackArrowDispatch","onResetDocumentDispatch","onDocumentSelectedForCourseDispatch","documentLink","connect","state","ownProps","users","openChangePasswordDialog","userInAuth0","item","changePasswordRequest","dispatch","changePasswordDispatch","MessageDisplay","text","visible","hideMessage","nextMessage","Snackbar","anchorOrigin","vertical","horizontal","autoHideDuration","onExited","reason","disableWindowBlurListener","ContentProps","message","action","IconButton","aria-label","key","Close","general","queue","length","navbarContainer","display","root","flexGrow","menuButton","marginRight","leftControls","marginTop","navigationLinks","marginLeft","homeButton","textDecoration","fontSize","letterSpacing","textTransform","rightControls","userName","loginLogoutButtons","appbar","background","settingsIcon","palette","tertiary","main","hastrakLogo","height","BranchesPageHeader","anchorEl","setAnchorEl","Boolean","userFromDb","fetchBranchDetailsForUser","isSavingEvent","isLoadingRecordsForTheEvent","isDeletingRecord","isSavingNewRecord","isSavingCourse","isLoadingRecordsForTheCourse","isDeletingCourseRecord","isLoadingCourses","isLoadingPersonnels","isLoadingEvents","isLoadingAccidents","viewBranchAsAdmin","fetchBranchDetailsByBranchId","setLoggedInUser","useParams","AppBar","Toolbar","src","alt","companyName","name","currentTarget","Menu","keepMounted","transformOrigin","MenuItem","defaultProps","withRouter","newEvent","recordsForTheEvent","isLoading","deleteRecord","newRecord","newCourse","recordsForTheCourse","courses","coursesByBranch","personnels","allPersonnels","events","eventsByBranch","accidents","accidentsByBranch","userId","fetchBranchDetailsForUserDispatch","fetchBranchDetailsByBranchIdDispatch","dashboardContainer","appBar","drawer","flexShrink","drawerPaper","top","toolbar","mixins","content","default","padding","listItem","selectedRecordItem","borderLeft","secondary","minor","BranchRecordsItemsList","setCurrentBranchesRecord","currentBranchesRecord","handleListItemClick","Drawer","paper","anchor","List","ListItem","button","buttonNames","ListItemIcon","Dashboard","ListItemText","primary","MenuBook","People","DateRange","Warning","Assignment","LibraryBooks","AccountTree","Divider","branches","container","textAlign","paddingTop","danger","count","fontWeight","label","DashboardCountBox","borderBottom","lightGrey","justifyContent","warning","fontStretch","fontStyle","lineHeight","marginBottom","textContent","buttonContent","RecordsListForEvents","items","allCourses","handleAddEditClick","dateLabel","titleField","subTitleField","dateField","courseId","seeMore","map","isExpired","moment","isAfter","expiryPrefix","calculateExpiryPrefiex","upcomingExpiryDate","format","startIcon","Edit","editButton","apaper","titleContainer","bladeIcon","bladeTitle","countBoxContainer","countBox","seeMoreButtonContainer","alignItems","seeMoreButton","border","noRecords","EventsDashboardBlade","fetchAllEventsForBranch","allEvents","handleEventRecordEditClick","setSeeMore","filter","nextEventDateUTC","sort","b","Date","nextOneMonthDate","add","upcomingEvents","overDueEvents","Paper","RecordsListForTraining","find","o","TrainingDashboardBlade","fetchAllCourseRecordssForBranch","fetchAllCoursesForBranch","handleCourseRecordEditClick","courseRecords","fetchAllPersonnels","nextCourseDate","upcomingCourses","overDueCourses","injuryTypeId","selectedInjuryType","injuryConstants","i","userRoleId","selectedUserRole","r","utcToLocal","utcDate","utc","local","accidentDate","AccidentsDashboardBlade","fetchAllAccidentsForBranch","allAccidents","injuryDate","last6MonthsDate","subtract","injuryMappers","convertedTime","get","formattedTime","RecordsListForHazards","HazardDashboardBlade","fetchAllHazardsForBranch","allHazards","handleHazardItemEditClick","hazards","nextReviewDate","upcomingHazardReviews","overHazardReviews","bladesContainer","blade","columnOne","columnTwo","DashboardPanel","courseRecordsByBranch","hazardsByBranch","itemsCopy","fetchAllCourseRecordssForBranchDispatch","GenericViewPanel","paddingLeft","personnelName","date","deactivateContainer","editDeleteContainer","deleteButton","SingleCourse","handleCourseEditClick","documents","openDeleteCourseDialog","Grid","xs","companyDetails","unitDescription","courseCode","CoursesList","fetchAllDocuments","openDeleteDialog","courseToBeDeleted","isDeletingCourse","submitDeleteCourseRequest","loggedInUser","role","e","settings","allDocuments","deleteCourse","openDeleteCourseDialogDispatch","submitDeleteCourseRequestDispatch","borderRadius","borderColor","input","flex","SearchBox","htmlId","handleSearchTermChange","placeholder","elevation","iconButton","InputBase","inputProps","onChange","target","actionBar","ButtonSearchBoxActionBar","openCreateDialog","buttonText","searchPlaceholder","hideCreate","disabled","searchBox","styles","formControl","minWidth","FancyDropDown","handleChange","dropDownWidth","fullWidth","valueField","displayField","required","FormControl","InputLabel","shrink","Select","select","Array","isArray","DocumentList","handleFolderClick","handleDocumentClick","showDelete","handleDeleteClick","toSearchArray","folders","x","isFolder","plainDocuments","folder","folderName","highlightClassName","searchWords","textToHighlight","documentName","dialog","dialogTitle","dialogContent","paddingBottom","footer","simpleLabel","editHazardFieldsContainer","backArrow","courseName","addControlButton","DocumentSearchDialog","handleSearchClosed","filterdDocuments","setDocuments","setSerchTerm","backArrowContainer","searchWord","result","toLowerCase","dropDown","DocumentListDialog","allDocumentsForLibrary","onOpenDocumentListDialog","currentDirectory","defaultDirectory","onShowFolderItems","onBackClicked","handleDocumentSelected","onReset","fetchAllDocumentsForLibrary","onFullReset","showDropdown","alignment","setAlignment","openSearch","setOpenSearch","onDialogClose","showBackBtn","blobName","dialogChild","ArrowBack","openDocumentListDialog","addDocumentToArray","previousDocument","commaSeperatedArray","split","push","removeDocumentFromArray","flexWrap","listStyle","chip","LibraryDocumentList","commeSeperatedDocument","onRemoveDocument","canEdit","mappedDocuments","mapDocumentToArray","href","startsWith","rel","documentButton","picker","browseButton","CreateEditCourseFormUi","openCreateCourseDialog","canEditDocuments","onDocumentSelected","handleInputChange","inputFieldNames","handleDocumentRemove","documentToRemove","updatedDocument","onSubmit","formContainer","TextField","trainingProvider","min","courseCost","frequency","courseCategoryId","multilineTextBox","multiline","rows","notes","defaultValue","readOnly","CreateCourseDialog","submitCourse","preventDefault","showCreateCourseDialog","submitMode","datePickerContainer","DatePicker","handleDateChange","selectedDate","utils","MomentUtils","minDate","KeyboardButtonProps","Attachments","allAttachments","onRemoveAttachment","checkedName","data","fileData","Chip","onDelete","attachmentToDelete","url","cancelButton","subTitle","addAttachmentFab","fab","borderWidth","extendedIcon","EditCourseRecord","record","handleEditCourseRecordInputChange","enableEditCourseRecord","handleSaveCourseRecordClick","handleRemoveAttachment","hiddenFileInput","createRef","TableCell","scope","recordDate","align","gridItem","Fab","current","click","Input","ref","multiple","file","files","newObj","newlyAdded","removed","getPersonnelNameById","selectedPersonnel","p","deleteIcon","SingleCourseRecord","handleDeleteCourseRecordClick","isValidExpiry","editIcon","size","Delete","recordsListContainer","table","boldText","RecordsList","records","isEditRecordEnabled","recordBeingEdited","TableContainer","Table","TableHead","TableRow","TableBody","isEditMode","calculateNextEventDate","frequencyInDays","header","AddRecord","hideTitle","freezePersonnelList","showTrainingDropDown","AddCourseRecordDialog","onOpenAddCourseRecordDialog","submitRecord","dialogOpenRequestSource","addCourseRecordDialogOpenSource","showingInDialogBox","Add","openAddCourseRecordDialog","attachmentFiles","removeCourseRecordAttachment","editEventFieldsContainer","addRecordButton","EditCoursePanel","openEditCoursePanel","fetchRecordsForTheCourse","onHandleDeleteCourseRecordClick","onHandleEditRecordInputChange","courseNameContainer","recordId","editRecord","enable","fetchRecordsForTheCourseDispatch","handleDeleteCourseRecordClickDispatch","enableEditRecordMode","fetchExistingAttachmentsForTheCourseRecordDispatch","domainType","handleEditRecordInputChangeDispatch","removeCourseRecordAttachmentEdit","EditCourseDialog","showEditCourseDialog","CoursesPanel","openPanel","coursessListAndActionBar","showEditCoursePanel","searchTermChangeForAllCoursesDispatch","validationFail","CreateEditPersonnelFormUI","openCreatePersonnelDialog","validationState","showAllField","checked","firstName","lastName","startDateUTC","EditPersonnelDialog","submitPersonnel","sites","personnelTypeId","personnelType","newPersonnel","showEditPersonnelDialog","allBranches","floatRight","addIcon","singleCourseContainer","paddingRight","expiry","expired","CoursesForPersonnelDialog","onOpenCoursesForPersonnelDialog","getCoursesForPersonnel","handleAddTrainingRecordClick","dense","coursesForPersonnel","dialogOpen","getCoursesForPersonnelDispatch","DeletePersonnelDialog","showDialog","isUpdating","handleConfirmAction","onConfirmPersonnelDelete","statusId","personnelStatus","showDeletePersonnelDialog","sortByPropertyName","list","propertyName","localeCompare","coursesContainer","coursesButton","SinglePersonnel","handlePersonnelEditClick","handlDeletePersonnelDialog","PersonnelsList","onPersonnelEditClick","onOpenDeletePersonnelDialog","companiesListContainer","setPersonnelListType","sortedPersonnels","SortByPropertyName","filteredPersonnel","duplicatePersonnelNameValidation","nameOnlyPersonnelsList","trim","fullName","CreatePersonnelDialog","changeValidationState","DuplicatePersonnelNameValidation","personnelTypeValue","showCreatePersonnelDialog","isShortPersonnelDialog","changeValidationStateDispatch","PersonnelPanel","searchTermChangeForAllPersonnels","dateExpired","SingleEvent","handleEventEditClick","openDeleteEventDialog","lastHeldDateUTC","EventsList","eventToBeDeleted","isDeletingEvent","submitDeleteEventRequest","deleteEvent","openDeleteEventDialogDispatch","submitDeleteEventRequestDispatch","CreateEditEventFormUi","openCreateEventDialog","step","eventTypeId","eventCoordinator","CreateEventDialog","submitEvent","departmentId","showCreateEventDialog","SingleEventRecord","enableEditEventRecord","handleDeleteEventRecordClick","nextEventDate","EditEventRecord","handleEditEventRecordInputChange","handleSaveEventRecordClick","maxRows","addRecordContainer","handleSubmitRecord","AddEventRecordDialog","onOpenAddEventRecordDialog","eventId","openAddEventRecordDialog","removeEventRecordAttachment","eventName","EditEventPanel","openEditEventPanel","fetchRecordsForTheEvent","onHandleDeleteEventRecordClick","onHandleEditEventRecordInputChange","showEditEventPanel","fetchRecordsForTheEventDispatch","handleDeleteEventRecordClickDispatch","enableEditEventRecordDispatch","fetchExistingAttachmentsForTheEventRecordDispatch","handleEditEventRecordInputChangeDispatch","removeEventRecordAttachmentEdit","EditEventDialog","showEditEventDialog","EventsPanel","openCreateAccidentDialog","eventsListAndActionBar","searchTermChangeForAllEvents","InductionsPanel","personnelbtn","CreateEditAccidentFormUi","isLoadingPersonnel","injuryLocationId","injuryCauseId","varient","EditAccidentDialog","submitAccident","fetchExistingAttachmentsForTheAccident","handleAttahmentChange","onUpdateAttachment","newAccident","showEditAccidentDialog","fetchExistingAttachmentsForTheHazard","DeleteOrDeactivateAccidentDialog","onConfirmDeleteDeactivateAccident","branchStatus","actionText","injuryType","toLocaleLowerCase","ownprops","deleteOrDeactivatingAccident","confirmDeleteDeactivateAccidentDispatc","SingleAccident","handleAccidentEditClick","openDeleteOrDeactiveAccidentDialog","AccidentsList","accidentsListContainer","accidentEditClickDispatch","CreateAccidentDialog","showCreateAccidentDialog","AccidentsPanel","searchTermChangeForAllAccidents","MeetingsPanel","validateEmail","test","String","CreateEditUserFormUI","openCreateUserDialog","companies","isLoadingBranches","isLoadingCompanies","creatingFromAdmin","isEmailCorrect","setEmailCorrectness","helperText","password","slice","visibility","EditUserDialog","openEditUserDialog","submitCompany","fetchAllBranches","fetchAllCompanies","newUser","showEditUserDialog","allCompanies","EditUserFromBranchDialog","submitUser","DeleteUserDialog","onConfirmUserDelete","userStatus","showDeleteUserDialog","bold","SingleUser","handleUserEditClick","handlDeleteUserDialog","isDeletable","userRoleMapper","UsersList","fetchAllUsers","onUserEditClick","isForBranch","onOpenDeleteUserDialog","UserListForBranch","allUsers","UsersListforBranch","CreateUserFromBranchDialog","showCreateUserDialog","UserPannel","hazardDescription","SingleHazard","handleHazardEditClick","handleHazardControlEditClick","handleHazardReviewClick","handleHazardManagementLogsClick","openDeleteHazardDialog","HazardsList","hazardToBeDeleted","isDeletingHazard","submitDeleteHazardRequest","selectedSortFilter","deleteHazard","hazardDescriptionFilter","openDeleteHazardDialogDispatch","submitDeleteHazardRequestDispatch","card","cardMedia","cardActions","SingleAttachement","handleDelete","fileName","imageUrl","setImageUrl","objectUrl","URL","createObjectURL","revokeObjectURL","Card","CardMedia","image","CardActions","Tooltip","CardAttachments","customTable","customCell","cursor","CustomCell","handleCellClicked","setColor","onMouseEnter","onMouseLeave","HazardConsequncesDialog","maxWidth","sx","row","dataColumn","CreateEditHazardFormUi","openCreateHazardDialog","consDialogOpen","setConsDialogOpen","isInitialScore","setIsInitialScore","handleConsequenceImageClick","isInitial","CardContent","gutterBottom","aria-readonly","initialRiskLikelihood","initialRiskConsequence","finalRiskLikelihood","finalRiskConsequence","reviewFrequency","department","CreateHazardDialog","submitHazard","newHazard","showCreateHazardDialog","SingleHazardControl","control","enableEditHazardControl","handleOpenDeleteHazardControlClick","hierarchy","comments","EditHazardControl","handleEditHazardControlInputChange","handleSaveHazardControlClick","DeleteHazardControlDialog","toDeleteControl","onConfirmHazardControlDelete","deleteControl","showDeleteHazardControlDialog","handleDeleteHazardControlClickDispatch","controlsListContainer","ControlsList","controls","isEditControlEnabled","controlBeingEdited","showDeleteControlDialog","addControlContainer","AddControl","handleSubmitControl","AddHazardControlDialog","onOpenAddHazardControlDialog","submitControl","hazardId","newControl","openAddHazardControlDialog","removeHazardControlAttachment","EditHazardPanel","openEditHazardPanel","fetchControlsForTheHazard","onHandleEditHazardControlInputChange","onOpenDeleteControlDialog","showEditHazardPanel","controlsForTheHazard","editControl","fetchControlsForTheHazardDispatch","enableEditControlMode","enableEditHazardControlDispatch","removeHazardControlAttachmentEdit","handleEditHazardControlInputChangeDispatch","EditHazardDialog","showEditHazardDialog","SingleHazardReview","review","enableEditHazardReview","handleOpenDeleteReviewClick","time","reviewDate","EditHazardReview","handleEditHazardReviewInputChange","handleSaveHazardReviewClick","DeleteHazardReviewDialog","onConfirmHazardReviewDelete","isActive","toBeDeleteReview","showDeleteHazardReviewDialog","newReview","reviewListContainer","ReviewList","reviews","isEditReviewEnabled","reviewBeingEdited","showDeleteReviewDialog","AddReview","handleSubmitReview","AddHazardReviewDialog","onOpenAddHazardReviewDialog","submitReview","openAddHazardReviewDialog","removeHazardReviewAttachment","HazardReviewPanel","openHazardReviewPanel","fetchReviewsForTheHazard","onHandleDeleteHazardReviewClick","onHandleEditHazardReviewInputChange","onOpenDeleteHazardReviewDialog","handleDeleteHazardReviewClick","reviewsForTheHazard","editReview","showHazardReviewPanel","openDeleteReviewDialog","fetchReviewsForTheHazardDispatch","DELETE_HAZARD_REVIEW","handleDeleteHazardReviewClickDispatch","enableEditReviewMode","fetchExistingAttachmentsForHazardReviewDispatch","removeHazardReviewAttachmentEdit","onHandleAddHazardReviewInputChange","handleEditHazardReviewInputChangeDispatch","SingleHazardManagementLog","managementLog","enableEditManagementLog","handleOpenDeleteManagementLogClick","logDate","EditHazardManagementLog","handleEditHazardManagementLogInputChange","handleSaveManagementLogClick","DeleteHazardManagementLogDialog","toBeDeleteManagementLog","showDeleteHazardManagementLogDialog","newManagementLog","DeleteHazardManagementDialog","HazardManagementLogsList","managementLogs","isEditManagmentLogEnabled","managementLogBeingEdited","showDeleteManagementLogDialog","AddHazardManagementLog","handleSubmitManagementLog","AddHazardManagementLogDialog","onOpenAddHazardManagementDialog","submitManagementLog","openAddHazardManagementDialog","removeHazardManagementLogsAttachment","HazardManagementLogPanel","openHazardManagementLogPanel","fetchManagementLogsForTheHazard","onHandleEditHazardManagementLogInputChange","onOpenDeleteHazardManagementLogDialog","openAddHazardManagementLogDialog","onOpenAddHazardManagementLogDialog","managementLogsForTheHazard","editManagementLog","showHazardManagementLogPanel","openDeleteManagementLogDialog","fetchManagementLogsForTheHazardDispatch","enableEditManagementLogMode","enableEditManagmentLogMode","fetchExistingAttachmentsForHazardManagementLogsDispatch","removeHazardManagementLogsAttachmentEdit","onHandleAddHazardManagementLogInputChange","handleEditHazardManagementLogInputChangeDispatch","borderGray","DropDown","widthRestricted","htmlFor","disableUnderline","dropdownSpace","leftMargin","HazardsPanel","openHazardLogsPanel","selectedStausFilter","statusFilters","descriptionFilters","isPanelOpen","hazardsListAndActionBar","searchBoxContainer","onHazardSortTypeFilterChange","onHazardStatsTypeFilterChange","hazardStatusFilter","searchTermChangeForAllHazards","stausId","sortId","changeHazardDescriptionSortTypeFilter","DocumentLibraryPanel","setOpen","blobFullUrl","AddFolder","DocumentLibraryPanelForBranch","onAddFolderDispatch","addFolderOpen","setFolderOpen","setFolderName","inputName","onAttachmentAdd","attachments","onAttachmentRemove","onFolderAddDispatch","onAttachmentAddDispatch","onAttachmentRemovedDispatch","viewPanelContainer","noPermissionHeader","BranchesViewPanel","currentPanelToShow","currentBranch","denyAccess","log","BranchesDashboard","BranchesPage","DeativeOrDeleteBranchDialog","onConfirmEmloyerStatusUpdate","deleteOrDeactivatingBranch","DeactiveOrDeleteBranchDispatch","CreateEditBranchFormUI","openCreateBranchDialog","contactPerson","phone","fax","address","EditBranchDialog","submitBranch","newBranch","showEditBranchDialog","flexDirection","branchList","overflowY","SingleBranch","handleBranchEditClick","openDeleteOrDeactiveBranchDialog","selectedCompany","c","mapComapnyIdToCompanyName","Link","viewAsAdminButton","BranchesList","onBranchEditClick","handlDeleteOrDeactiveBranchDialog","BranchEditClickDispatch","CreateBranchDialog","showCreateBranchDialog","BranchDashboard","searchTermChangeForBranch","CreateEditCompanyFormUI","openCreateCompanyDialog","CreateCompanyDialog","companyStatus","newCompany","showCreateCompanyDialog","EditCompanyDialog","showEditCompanyDialog","DeativeOrDeleteCompanyDialog","onConfirmCompanyStatusUpdate","deleteOrDeactivatingCompany","allComapanies","DeactiveOrDeleteCompanyDispatch","SingleCompany","handleCompanyEditClick","openDeleteOrDeactiveCompanyDialog","CompaniesList","onCompanyEditClick","handlDeleteOrDeactiveCompanyDialog","compayEditClickDispatch","CompanyDashboard","searchTermChangeForAllCompanies","CreateUserDialog","UserDashboard","Header","visibleTab","tabsContainer","Tabs","newValue","onChangeTabValueInHeader","tabsRoot","TabIndicatorProps","Tab","tabButton","changeTabValueInHeaderDispatch","collapsed","RecordsListInCompanyBlade","branchIdField","branchNameField","branchName","upcomingCount","overdueCount","EventsDashboardCompanyBlade","fetchAllEventsForCompany","initialValue","reduce","acc","curr","TrainingDashboardCompanyBlade","fetchAllCourseRecordssForCompany","fetchAllCoursesForCompany","textOuter","AccidentsDashboardCompanyBlade","fetchAllAccidentsForCompany","totalCount","DashboardPanelCompany","fetchAllCourseRecordsForCompany","eventsByCompany","coursesByCompany","accidentsByCompany","courseRecordsByCompany","fetchAllEventsForCompanyDispatch","fetchAllCourseRecordsForCompanyDispatch","fetchAllCoursesForCompanyDispatch","fetchAllAccidentsForCompanyDispatch","headerStyle","OverviewDashboard","AdminPage","dashboard","unavailable","HomePage","fetchUserDetails","userRole","userRoles","AdminBranchView","checkBranchAccessForUser","checkBranchAccessForUserDispatch","App","CssBaseline","from","to","hostname","match","handleActions","queueCopy","newQueue","filteredUsers","g","submittedUser","updatedUserIndex","findIndex","deleteIndex","splice","activeUsers","parseInt","filteredCompanies","activeCompanies","submittedCompany","updatedCompanyIndex","submittedBranch","Branch","INITIAL_STATE","activeBranches","filteredBranch","updatedBranchIndex","getCurrentDirectory","currentDocumentType","getParentDirectory","currentType","breadCrumbStack","breadCrumbItems","defaultDir","firstHierarchy","currentBreadCrumb","concat","itemsForCurrentDirectory","pop","lastDir","defaultItems","folderPath","fullPath","allPaths","shift","getProperCurretnPath","newFolder","currentDocuments","activePersonnels","submittedPersonnel","updatedPersonnelIndex","regDateUTC","workPhone","homePhone","assignee","requestor","siteId","Personnel","deleteOrDeactivatingPersonnel","filteredList","filteredAccidents","some","l","submittedAccident","updatedAccidentIndex","getUniqueArray","mixedArray","newArray","uniqueObject","getRecordAttachmentsToBeAdded","getRecordAttachmentsToBeDeleted","otherArray","existingAttahments","existingAttachmentFiles","other","injuryTime","converted","filteredArray","attachmentCustomObjets","element","remainingAttachements","Number","newDate","submittedEvent","filteredEvents","updatedEventIndex","eventssByBranch","uniqueArray","nextHazardDateUTC","INITIAL_SCORE","initialScore","FINAL_SCORE","finalScore","submittedHazard","CONTROL_NOTES","createdReview","SUBMIT_HAZARD_Review_FAILURE","SUBMIT_HAZARD_Review_FINISHED","createdManagementLog","openDeleteHazardReviewDialog","openDeleteHazardManagementDialog","filterHazardBasedOnStatusType","filteredHazards","filterHazardBasedOnDescriptionSortType","sortedFilteredHazards","hazardsByCompany","updatedHazardIndex","hazardssByBranch","filteredHazards_Copy","filteredHazards_Main","filteredCourses","submittedCourse","updatedCourseIndex","coursessByBranch","combineReducers","commonStack","token","createStack","accept","undefined","init","auth","parseJSON","commonStackWithoutJsonParse","getStack","enhancedFetchWithBody","methodType","commonStackWithoutJsonParseWithCustomHeader","createFetch","body","JSON","stringify","method","debug","then","rejectHandler","post","put","_delete","_payload","response","ok","Promise","resolve","reject","getAllCompanies","client","createCompany","editCompany","getLoggedInUserId","watchFetchAllCompanies","watchCreateEditCompany","watchDeleteOrDeactiveCompany","resolveError","companiesWatcher","extractLoggedInUserId","call","companiesApi","jsonData","errorMessageCaptured","completeErrorMessage","clone","parse","extractErrorMessage","exceptionMessage","messageDetail","takeLatest","getBranchForUser","getBranchById","getAllBranches","createBranch","updateBranch","watchLoadBranchesList","watchCreateEditBranch","watchDeleteOrDeactiveBranch","watchFetchBranchDetailsForLoggedinUser","watchFetchBranchDetailsByBranchId","BranchesWatcher","branchesApi","getAllPersonnels","createPersonnel","updatePersonnel","watchFetchAllPersonnels","watchCreateEditPersonnel","watchFetchCoursesForPersonnel","personnelsWatcher","personnelssApi","fetchUserPermissions","changePassword","getAllUsers","createUser","editUser","checkIfUserIsRelatedToBranch","watchFetchUserPermissions","watchSendChnagePasswordRequest","watchFetchAllUsers","watchSubmitUser","watchCheckBranchAccessForUser","branchesWatcher","usersApi","getDocuments","deleteAttachment","addAttachments","formData","FormData","append","axios","resp","catch","err","getAttachmentsForSingle","getDocumentsForBranch","deleteAttachments","attachmentIdsString","ex","watchFetchAllDocuments","watchFetchAllDocumentsForBranch","watchAddAttachment","watchRemoveAttachment","settingsWatcher","settingsApi","documentIdType","attachmentsApi","getInjuriesByBranch","getInjuriesByCompany","createAccident","editAccident","deleteAccident","accidentId","watchFetchAllAccidentsForBranch","watchFetchAllAccidentsForCompany","watchCreateEditAccident","watchDeleteOrDeactiveAccident","watchLoadAttachmentFilesForAccident","watchDeleteAttachmentsForAccident","watchUploadAttachmentsForAccident","accidentsApi","attachmentIdsArray","attachmentApi","getEventsByBranch","getEventsByCompany","createEvent","editEvent","getRecordsForEvent","deleteEventRecord","createRecord","updateRecord","watchFetchAllEventsForBranch","watchFetchAllEventsForCompany","watchCreateEditEvent","watchDeleteEvent","watchFetchRecordsForTheEvent","watchDeleteEventRecord","watchSubmitEventRecord","watchLoadAttachmentFilesForEventRecord","watchDeleteAttachmentsForEventRecord","watchUploadAttachmentsForEvent","eventsApi","createdRecord","getHazardsByBranch","getHazardsByCompany","createHazard","editHazard","getControlsForHazard","deleteHazardControl","createControl","updateControl","getReviewsForHazard","createReview","updateReview","getManagementLogsForHazard","createManagementLog","updateManagementLog","watchFetchAllHazardsForBranch","watchFetchAllHazardsForCompany","watchCreateEditHazard","watchDeleteHazard","watchFetchControlsForTheHazard","watchDeleteHazardControl","watchSubmitHazardControl","watchFetchReviewsForTheHazard","watchSubmitHazardReview","watchFetchManagementLogsForTheHazard","watchSubmitHazardManagementLog","watchLoadAttachmentFilesForHazard","watchDeleteAttachmentsForHazard","watchUploadAttachmentsForHazard","watchLoadAttachmentFilesForHazardReview","watchLoadAttachmentFilesForHazardManagementLogs","watchLoadAttachmentFilesForHazardControl","hazardsApi","createdControl","getCoursessByBranch","getCourseRecordsByBranch","getCoursessByCompany","getCourseRecordsByCompany","createCourse","editCourse","getRecordsForCourse","deleteCourseRecord","watchFetchAllCoursesForBranch","watchFetchAllCourseRecordsForBranch","watchFetchAllCoursesForCompany","watchFetchAllCourseRecordsForCompany","watchSubmitCourse","watchDeleteCourse","watchSubmitCourseRecord","watchFetchRecordsForTheCourse","watchDeleteCourseRecord","watchLoadAttachmentFilesForCourseRecord","watchDeleteAttachmentsForCourseRecord","watchUploadAttachmentsForCourseRecord","CoursesWatcher","coursesApi","rootSaga","all","createBrowserHistory","createMuiTheme","buttonWhite","highlight","light","dark","contrastText","red","A400","separator","dashboardDark","store","initialState","sagaMiddleware","createSagaMiddleware","createStore","rootReducer","composeWithDevTools","applyMiddleware","runSaga","run","close","END","configureStore","redirectUrl","origin","ReactDOM","ThemeProvider","domain","config","client_id","clientId","redirect_uri","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"qaAIMA,EAA4B,kBAChCC,OAAOC,QAAQC,aAAa,GAAIC,SAASC,MAAOJ,OAAOK,SAASC,WAErDC,EAAeC,IAAMC,gBACrBC,EAAW,kBAAMC,qBAAWJ,IAC5BK,EAAgB,SAAC,GAIvB,IAHLC,EAGI,EAHJA,SAGI,IAFJC,0BAEI,MAFiBf,EAEjB,EADDgB,EACC,mDAC0CC,qBAD1C,mBACGC,EADH,KACoBC,EADpB,OAEoBF,qBAFpB,mBAEGG,EAFH,KAESC,EAFT,OAG4BJ,qBAH5B,mBAGGK,EAHH,KAGgBC,EAHhB,OAI0BN,oBAAS,GAJnC,mBAIGO,EAJH,KAIYC,EAJZ,OAK8BR,oBAAS,GALvC,mBAKGS,EALH,KAKcC,EALd,KAOJC,qBAAU,YACO,uCAAG,oCAAAC,EAAA,sEACYC,YAAkBd,GAD9B,UACVe,EADU,OAEhBR,EAASQ,IAGP9B,OAAOK,SAAS0B,OAAOC,SAAS,WAChChC,OAAOK,SAAS0B,OAAOC,SAAS,UANlB,iCAQaF,EAAcG,yBAR3B,gBAQNC,EARM,EAQNA,SACRpB,EAAmBoB,GATL,yBAYcJ,EAAcb,kBAZ5B,WAYVA,EAZU,OAchBC,EAAmBD,IAEfA,EAhBY,kCAiBKa,EAAcK,UAjBnB,QAiBRhB,EAjBQ,OAkBdC,EAAQD,GAlBM,QAqBhBK,GAAW,GArBK,4CAAH,qDAuBfY,KAEC,IAEH,IAAMC,EAAc,uCAAG,0CAAAT,EAAA,6DAAOU,EAAP,+BAAgB,GACrCZ,GAAa,GADQ,kBAGbL,EAAYgB,eAAeC,GAHd,uDAKnBC,QAAQC,MAAR,MALmB,yBAOnBd,GAAa,GAPM,sCASFL,EAAYc,UATV,QASfhB,EATe,OAUrBC,EAAQD,GACRD,GAAmB,GAXE,+DAAH,qDAcde,EAAsB,uCAAG,4BAAAL,EAAA,6DAC7BJ,GAAW,GADkB,SAEvBH,EAAYY,yBAFW,uBAGVZ,EAAYc,UAHF,OAGvBhB,EAHuB,OAI7BK,GAAW,GACXN,GAAmB,GACnBE,EAAQD,GANqB,2CAAH,qDAQ5B,OACE,kBAACZ,EAAakC,SAAd,CACEC,MAAO,CACLzB,kBACAE,OACAI,UACAE,YACAY,iBACAJ,yBACAU,iBAAkB,kBAAUtB,EAAYsB,iBAAZ,MAAAtB,EAAW,YACvCuB,kBAAmB,kBAAUvB,EAAYuB,kBAAZ,MAAAvB,EAAW,YACxCwB,iBAAkB,kBAAUxB,EAAYwB,iBAAZ,MAAAxB,EAAW,YACvCyB,kBAAmB,kBAAUzB,EAAYyB,kBAAZ,MAAAzB,EAAW,YACxC0B,OAAQ,kBAAU1B,EAAY0B,OAAZ,MAAA1B,EAAW,cAG9BR,IC3DQmC,EArBM,SAAC,GAA6C,IAAhCC,EAA+B,EAA1CC,UAAsBC,EAAoB,EAApBA,KAASC,EAAW,sCACR1C,IAAhDa,EADwD,EACxDA,QAASN,EAD+C,EAC/CA,gBAAiB2B,EAD8B,EAC9BA,kBAElCjB,qBAAU,WACJJ,GAAWN,GAGP,uCAAG,sBAAAW,EAAA,sEACHgB,EAAkB,CACtBV,SAAU,CAAEmB,UAAWrD,OAAOK,SAASC,YAFhC,2CAAH,oDAKRgD,KACC,CAAC/B,EAASN,EAAiB2B,EAAmBO,IAKjD,OAAO,kBAAC,IAAD,eAAOA,KAAMA,EAAMI,OAHX,SAACC,GAAD,OACO,IAApBvC,EAA2B,kBAACgC,EAAcO,GAAY,OAEVJ,KCxBjC,GACbK,aAAc,eACdC,aAAc,eACdC,aAAc,eAEdC,2BAA4B,6BAC5BC,yBAA0B,2BAE1BC,OAAQ,SAGRC,0BAA2B,4BAC3BC,wBAAyB,0BAEzBC,8BAA+B,gCAE/BC,6BAA8B,+BAC9BC,mCAAoC,qCACpCC,qCAAsC,uCACtCC,qCAAsC,uCACtCC,sCACE,wCAGFC,qBAAsB,uBACtBC,eAAgB,iBAChBC,uBAAwB,yBACxBC,uBAAwB,yBACxBC,sBAAuB,wBAEvBC,gCAAiC,kCAEjCC,YAAa,cAGbC,cAAe,gBACfC,oBAAqB,sBACrBC,sBAAuB,wBACvBC,sBAAuB,wBACvBC,uBAAwB,yBAIxBC,mCAAoC,qCACpCC,4BAA6B,8BAI7BC,iCAAkC,mCAClCC,oCAAqC,sCAErCC,6BAA8B,+BAE9BC,eAAgB,iBAChBC,qBAAsB,uBACtBC,uBAAwB,yBACxBC,uBAAwB,yBACxBC,wBAAyB,0BAEzBC,iCAAkC,mCAElCC,oBAAqB,sBACrBC,0BAA2B,4BAC3BC,4BAA6B,8BAC7BC,4BAA6B,8BAC7BC,6BAA8B,+BAE9BC,2BAA4B,6BAE5BC,aAAc,eAEdC,4BAA6B,8BAE7BC,6BAA8B,+BAC9BC,mCAAoC,qCACpCC,qCAAsC,uCACtCC,qCAAsC,uCACtCC,sCACE,wCAEFC,mBAAoB,qBAEpBC,qBAAsB,uBACtBC,2BAA4B,6BAC5BC,6BAA8B,+BAC9BC,6BAA8B,+BAC9BC,8BAA+B,gCAE/BC,6BAA8B,+BAC9BC,2BAA4B,6BAE5BC,kCAAmC,oCAEnCC,mCAAoC,qCAEpCC,iBAAkB,mBAClBC,uBAAwB,yBACxBC,yBAA0B,2BAC1BC,yBAA0B,2BAC1BC,0BAA2B,4BAE3BC,sCACE,wCAEFC,6BAA8B,+BAC9BC,8BAA+B,gCAC/BC,6BAA8B,+BAC9BC,+BAAgC,iCAEhCC,mBAAoB,qBACpBC,yBAA0B,2BAC1BC,2BAA4B,6BAC5BC,2BAA4B,6BAC5BC,4BAA6B,8BAE7BC,4BAA6B,8BAC7BC,eAAgB,iBAEhBC,kCAAmC,oCACnCC,gCAAiC,kCAEjCC,uCACE,yCACFC,6CACE,+CACFC,+CACE,iDACFC,+CACE,iDACFC,gDACE,kDAEFC,kCAAmC,oCACnCC,wCACE,0CACFC,0CACE,4CACFC,0CACE,4CACFC,2CACE,6CAEFC,+BAAgC,iCAChCC,qCAAsC,uCACtCC,uCACE,yCACFC,uCACE,yCACFC,wCACE,0CAEFC,gCAAiC,kCACjCC,sCACE,wCACFC,wCACE,0CACFC,wCACE,0CACFC,yCACE,2CAEFC,iCAAkC,mCAClCC,4BAA6B,8BAC7BC,0BAA2B,4BAC3BC,kCAAmC,oCACnCC,cAAe,gBAEfC,qCAAsC,uCAEtCC,8BAA+B,gCAC/BC,oCAAqC,sCACrCC,sCACE,wCACFC,sCACE,wCACFC,uCACE,yCAEFC,gBAAiB,kBACjBC,sBAAuB,wBACvBC,wBAAyB,0BACzBC,wBAAyB,0BACzBC,yBAA0B,2BAE1BC,4BAA6B,8BAC7BC,kCAAmC,oCACnCC,oCAAqC,sCACrCC,oCAAqC,sCACrCC,qCAAsC,uCAEtCC,6BAA8B,+BAC9BC,mCAAoC,qCACpCC,qCAAsC,uCACtCC,qCAAsC,uCACtCC,sCACE,wCAEFC,8BAA+B,gCAC/BC,yBAA0B,2BAC1BC,uBAAwB,yBACxBC,sBAAuB,wBACvBC,+BAAgC,iCAChCC,WAAY,aAEZC,aAAc,eACdC,mBAAoB,qBACpBC,qBAAsB,uBACtBC,qBAAsB,uBACtBC,sBAAuB,wBAEvBC,yBAA0B,2BAE1BC,aAAc,eACdC,mBAAoB,qBACpBC,qBAAsB,uBACtBC,qBAAsB,uBACtBC,sBAAuB,wBAEvBC,4BAA6B,8BAC7BC,kCAAmC,oCACnCC,oCAAqC,sCACrCC,oCAAqC,sCACrCC,qCAAsC,uCAEtCC,oBAAqB,sBACrBC,0BAA2B,4BAC3BC,4BAA6B,8BAC7BC,4BAA6B,8BAC7BC,6BAA8B,+BAE9BC,oBAAqB,sBACrBC,0BAA2B,4BAC3BC,4BAA6B,8BAC7BC,4BAA6B,8BAC7BC,6BAA8B,+BAE9BC,6BAA8B,+BAC9BC,mCAAoC,qCACpCC,qCAAsC,uCACtCC,qCAAsC,uCACtCC,sCACE,wCAEFC,oCAAqC,sCACrCC,0CACE,4CACFC,4CACE,8CACFC,4CACE,8CACFC,6CACE,+CAEFC,8BAA+B,gCAC/BC,oCAAqC,sCACrCC,sCACE,wCACFC,sCACE,wCACFC,uCACE,yCAEFC,qCAAsC,uCACtCC,2CACE,6CACFC,6CACE,+CACFC,6CACE,+CACFC,8CACE,gDAEFC,+BAAgC,iCAChCC,0BAA2B,4BAC3BC,uBAAwB,yBACxBC,gCAAiC,kCACjCC,YAAa,cACbC,gCAAiC,kCACjCC,wBAAyB,0BAEzBC,cAAe,gBACfC,oBAAqB,sBACrBC,sBAAuB,wBACvBC,sBAAuB,wBACvBC,uBAAwB,yBAExBC,0BAA2B,4BAE3BC,cAAe,gBACfC,oBAAqB,sBACrBC,sBAAuB,wBACvBC,sBAAuB,wBACvBC,uBAAwB,yBAExBC,6BAA8B,+BAC9BC,mCAAoC,qCACpCC,qCAAsC,uCACtCC,qCAAsC,uCACtCC,sCACE,wCAEFC,qBAAsB,uBACtBC,2BAA4B,6BAC5BC,6BAA8B,+BAC9BC,6BAA8B,+BAC9BC,8BAA+B,gCAE/BC,0BAA2B,4BAC3BC,mBAAoB,qBACpBC,yBAA0B,2BAC1BC,2BAA4B,6BAC5BC,2BAA4B,6BAC5BC,4BAA6B,8BAE7BC,qBAAsB,uBACtBC,2BAA4B,6BAC5BC,6BAA8B,+BAC9BC,6BAA8B,+BAC9BC,8BAA+B,gCAE/BC,4BAA6B,8BAC7BC,kCAAmC,oCACnCC,oCAAqC,sCACrCC,oCAAqC,sCACrCC,qCAAsC,uCAEtCC,wBAAyB,0BACzBC,sBAAuB,wBACvBC,wBAAyB,0BAEzBC,6BAA8B,+BAE9BC,gBAAiB,kBACjBC,sBAAuB,wBACvBC,wBAAyB,0BACzBC,wBAAyB,0BACzBC,yBAA0B,2BAE1BC,UAAW,YAEXC,8BAA+B,gCAE/BC,YAAa,cACbC,kBAAmB,oBACnBC,oBAAqB,sBACrBC,oBAAqB,sBACrBC,qBAAsB,uBAEtBC,yBAA0B,2BAC1BC,kBAAmB,oBACnBC,wBAAyB,0BACzBC,0BAA2B,4BAC3BC,0BAA2B,4BAC3BC,2BAA4B,6BAE5BC,+BAAgC,iCAGhCC,6BAA8B,+BAC9BC,mCAAoC,qCACpCC,qCAAsC,uCACtCC,qCAAsC,uCACtCC,sCACE,wCAEFC,8BAA+B,gCAC/BC,oCAAqC,sCACrCC,sCACE,wCACFC,sCACE,wCACFC,uCACE,yCAEFC,+BAAgC,iCAChCC,0BAA2B,4BAC3BC,wBAAyB,0BACzBC,uBAAwB,yBACxBC,gCAAiC,kCACjCC,YAAa,cAEbC,cAAe,gBACfC,oBAAqB,sBACrBC,sBAAuB,wBACvBC,sBAAuB,wBACvBC,uBAAwB,yBAExBC,0BAA2B,4BAE3BC,cAAe,gBACfC,oBAAqB,sBACrBC,sBAAuB,wBACvBC,sBAAuB,wBACvBC,uBAAwB,yBAExBC,8BAA+B,gCAC/BC,oCAAqC,sCACrCC,sCACE,wCACFC,sCACE,wCACFC,uCACE,yCAEFC,sBAAuB,wBACvBC,4BAA6B,8BAC7BC,8BAA+B,gCAC/BC,8BAA+B,gCAC/BC,+BAAgC,iCAEhCC,sBAAuB,wBACvBC,4BAA6B,8BAC7BC,8BAA+B,gCAC/BC,8BAA+B,gCAC/BC,+BAAgC,iCAEhCC,2BAA4B,6BAC5BC,oBAAqB,sBACrBC,0BAA2B,4BAC3BC,4BAA6B,8BAC7BC,4BAA6B,8BAC7BC,6BAA8B,+BAE9BC,iCAAkC,mCAElCC,kCAAmC,oCAInCC,yBAA0B,2BAE1BC,6BAA8B,+BAC9BC,mCAAoC,qCACpCC,qCAAsC,uCACtCC,qCAAsC,uCACtCC,sCACE,wCAEFC,iCAAkC,mCAElCC,qBAAsB,uBACtBC,2BAA4B,6BAC5BC,6BAA8B,+BAC9BC,6BAA8B,+BAC9BC,8BAA+B,gCAE/BC,gCAAiC,kCAEjCC,+BAAgC,iCAEhCC,0BAA2B,4BAC3BC,mBAAoB,qBACpBC,yBAA0B,2BAC1BC,2BAA4B,6BAC5BC,2BAA4B,6BAC5BC,4BAA6B,8BAE7BC,iCAAkC,mCAIlCC,gCAAiC,kCAEjCC,qCAAsC,uCACtCC,2CACE,6CACFC,6CACE,+CACFC,6CACE,+CACFC,8CACE,gDAEFC,yCACE,2CAEFC,6BAA8B,+BAC9BC,mCAAoC,qCACpCC,qCAAsC,uCACtCC,qCAAsC,uCACtCC,sCACE,wCAEFC,wCACE,0CAEFC,uCACE,yCAEFC,kCAAmC,oCACnCC,2BAA4B,6BAC5BC,iCAAkC,8BAClCC,mCAAoC,qCACpCC,mCAAoC,qCACpCC,oCAAqC,sCAErCC,yCACE,2CAEFC,6BAA8B,+BAC9BC,YAAa,cAEbC,qCAAsC,uCACtCC,0CACE,4CAEFC,qBAAsB,uBAEtBC,oBAAqB,sBACrBC,0BAA2B,4BAC3BC,4BAA6B,8BAC7BC,4BAA6B,8BAC7BC,6BAA8B,+BAE9BC,0BAA2B,4BAC3BC,2BAA4B,6BAC5BC,4BAA6B,8BAC7BC,8BAA+B,gCAC/BC,kBAAmB,oBAEnBC,qBAAqB,uBAErBC,+BAAgC,iCAGhCC,4BAA6B,8BAC7BC,kCAAmC,oCACnCC,oCAAqC,sCACrCC,oCAAqC,sCACrCC,qCAAsC,uCAEtCC,yBAA0B,2BAE1BC,8BAA+B,gCAC/BC,oCAAqC,sCACrCC,sCACE,wCACFC,sCACE,wCACFC,uCACE,yCAEFC,8BAA+B,gCAG/BC,gCAAiC,kCACjCC,qCAAsC,uCACtCC,mCAAoC,qCAEpCC,qCAAsC,uCACtCC,qCAAsC,uCAEtCC,yCACE,2CACFC,2CACE,6CACFC,2CACE,6CACFC,4CACE,8CAGFC,+BAAgC,iCAChCC,oCAAqC,sCACrCC,kCAAmC,oCAEnCC,oCAAqC,sCACrCC,oCAAqC,sCAErCC,wCACE,0CACFC,0CACE,4CACFC,0CACE,4CACFC,2CACE,6CAGFC,8BAA+B,gCAC/BC,oCAAqC,sCACrCC,sCACE,wCACFC,sCACE,wCACFC,uCACE,yCAEFC,2BAA4B,6BAE5BC,gCAAiC,kCACjCC,gCAAiC,kCAGjCC,gCAAiC,kCACjCC,mCAAoC,qCACpCC,qCAAsC,uCAEtCC,qCAAsC,uCACtCC,qCAAsC,uCAEtCC,yCACE,2CACFC,2CACE,6CACFC,2CACE,6CACFC,4CACE,8CAIFC,yCACE,2CACFC,4CACE,8CACFC,0CACE,4CAEFC,8CACE,gDACFC,8CACE,gDAEFC,kDACE,oDACFC,oDACE,sDACFC,oDACE,sDACFC,qDACE,uDAGFC,iCAAkC,mCAClCC,oCAAqC,sCACrCC,sCACE,wCAEFC,sCACE,wCACFC,sCACE,wCAEFC,0CACE,4CACFC,4CACE,8CACFC,4CACE,8CACFC,6CACE,+CAIAC,aAAc,eAEdC,oBAAsB,sBACtBC,0BACA,4BACAC,4BACA,8BACAC,4BACA,8BACAC,6BACA,+BAGAC,uBAAyB,yBACzBC,6BACA,+BACAC,+BACA,iCACAC,+BACA,iCACAC,gCACA,mCCrjBW,GACbC,KAhHkB,OAiHlBC,MAhHmB,QAiHnBC,MAhHmB,QAiHnBC,eAhH4B,iBAiH5BC,IAhHiB,MAiHjBC,QAhHqB,UAiHrBC,QAhHqB,UAiHrBC,MAhHmB,QAmHnBC,kBAlB+B,oBAmB/BC,yBAlBsC,2BAmBtCC,kCAjBA,oCAkBAC,0BAjBuC,4BAqBvCC,WAvHwB,aAwHxBC,UAvHuB,YAwHvBC,WAvHwB,aAwHxBC,OAvHoB,SAwHpBC,eAvH4B,iBAwH5BC,WAvHwB,aAwHxBC,SAvHsB,WAwHtBC,UAvHuB,YAwHvBC,aAvH0B,eAwH1BC,KAvHkB,OA0HlBC,YAvHyB,cAwHzBC,YAvHyB,cAwHzBC,WAvHwB,aAwHxBC,gBAvH6B,kBAwH7BC,YAvHyB,cAwHzBC,UAvHuB,YAwHvBC,aAvH0B,eAwH1BC,UAvHuB,YAwHvBC,eAvH4B,iBAwH5BC,MAvHmB,QAwHnBC,WAvHwB,aAwHxBC,SAvHsB,WAwHtBC,OAvHoB,SAwHpBC,oBAvHiC,sBA0HjCC,YAvHyB,cAwHzBC,YAvHyB,cAwHzBC,UAvHuB,YAwHvBC,WAvHwB,aAwHxBC,kBAvH+B,oBAwH/BC,eAvH4B,iBAwH5BC,gBAvH6B,kBAwH7BC,oBAvHiC,sBA0HjCC,YAvHyB,cAwHzBC,aAvH0B,eAwH1BC,wBAvHqC,0BA0HrCC,wBAvHqC,0BAwHrCC,yBAvHsC,2BAwHtCC,sBAtHmC,wBAuHnCC,uBAtHoC,yBAuHpCC,iBArH8B,mBAsH9BC,cArH2B,gBAsH3BC,gBArH6B,kBAsH7BC,kBArH+B,oBAwH/BC,iBArH8B,mBAsH9BC,kBArH+B,oBAsH/BC,wBA3EqC,0BA8ErCC,kBA3F+B,oBA4F/BC,mBA3FgC,qBA8FhCC,eA3F4B,iBA4F5BC,SA3FsB,WA8FtBC,aA9H0B,eA+H1BC,yBA9HsC,2BAiItCC,iBA9H8B,mBA+H9BC,YA9HyB,cA+HzBC,kBA9H+B,oBA+H/BC,0BA9HuC,4BA+HvCC,iBA9H8B,mBA+H9BC,iBA9H8B,mBA+H9BC,YA9HyB,cA+HzBC,SA9HsB,WA+HtBC,qBA9HkC,uBA+HlCC,gBA9H6B,kBA+H7BC,OA9HoB,SA+HpBC,aA7H0B,eA8H1BC,gBA/H6B,kBAkI7BC,UA9HuB,YA+HvBC,WA9HwB,aA+HxBC,cA9H2B,gBA+H3BC,UA9HuB,YA+HvBC,YA9HyB,cA+HzBC,aA9H0B,gBCzFb,EAJO,EAIP,EAHS,EAGT,EAFO,ECEP,EAJO,EAIP,EAHS,EAGT,EAFO,ECEP,EAJO,EAIP,EAFO,ECCP,EAHO,SAGP,EAFO,SCGP,EAJO,EAIP,EAFO,ECUP,EAZU,YAYV,EAXQ,WAWR,EAVU,YAUV,EATO,SASP,EARW,aAQX,EAPU,YAOV,EANS,WAMT,EALM,QAKN,EAJQ,UAIR,EAHiB,kCAGjB,EAF4B,0BCL5B,EALY,EAKZ,EAJM,EAIN,EAHO,EAGP,EAFc,ECId,GAAEC,cAPK,CACpB,CAAEC,GAAI,EAAGhhB,MAAO,eAChB,CAAEghB,GAAI,EAAGhhB,MAAO,SAChB,CAAEghB,GAAI,EAAGhhB,MAAO,UAChB,CAAEghB,GAAI,EAAGhhB,MAAO,mBC+BH,GAAEihB,YAnCG,CAClB,CAAED,GAAI,EAAGhhB,MAAO,YAChB,CAAEghB,GAAI,EAAGhhB,MAAO,SAChB,CAAEghB,GAAI,EAAGhhB,MAAO,mBAChB,CAAEghB,GAAI,EAAGhhB,MAAO,gBAChB,CAAEghB,GAAI,EAAGhhB,MAAO,aAChB,CAAEghB,GAAI,EAAGhhB,MAAO,cAChB,CAAEghB,GAAI,EAAGhhB,MAAO,SAChB,CAAEghB,GAAI,EAAGhhB,MAAO,QAChB,CAAEghB,GAAI,EAAGhhB,MAAO,oBA0BYkhB,aAvBT,CACnB,CAAEF,GAAI,EAAGhhB,MAAO,sBAChB,CAAEghB,GAAI,EAAGhhB,MAAO,eAChB,CAAEghB,GAAI,EAAGhhB,MAAO,oBAChB,CAAEghB,GAAI,EAAGhhB,MAAO,iBAChB,CAAEghB,GAAI,EAAGhhB,MAAO,aAChB,CAAEghB,GAAI,EAAGhhB,MAAO,YAChB,CAAEghB,GAAI,EAAGhhB,MAAO,QAChB,CAAEghB,GAAI,EAAGhhB,MAAO,mBAChB,CAAEghB,GAAI,EAAGhhB,MAAO,mBAc0BmhB,gBAXpB,CACtB,CAAEH,GAAI,EAAGhhB,MAAO,QAChB,CAAEghB,GAAI,EAAGhhB,MAAO,QAChB,CAAEghB,GAAI,EAAGhhB,MAAO,iBAChB,CAAEghB,GAAI,EAAGhhB,MAAO,QAChB,CAAEghB,GAAI,EAAGhhB,MAAO,aAChB,CAAEghB,GAAI,EAAGhhB,MAAO,cAChB,CAAEghB,GAAI,EAAGhhB,MAAO,cAChB,CAAEghB,GAAI,EAAGhhB,MAAO,WCjBH,GAAEohB,WAfE,CACjB,CAAEJ,GAAI,EAAGhhB,MAAO,iBAChB,CAAEghB,GAAI,EAAGhhB,MAAO,yBAChB,CAAEghB,GAAI,EAAGhhB,MAAO,oBAChB,CAAEghB,GAAI,EAAGhhB,MAAO,sBAChB,CAAEghB,GAAI,EAAGhhB,MAAO,mBAChB,CAAEghB,GAAI,EAAGhhB,MAAO,oBAChB,CAAEghB,GAAI,EAAGhhB,MAAO,qBAChB,CAAEghB,GAAI,EAAGhhB,MAAO,kBAChB,CAAEghB,GAAI,EAAGhhB,MAAO,gBAChB,CAAEghB,GAAI,GAAIhhB,MAAO,0BACjB,CAAEghB,GAAI,GAAIhhB,MAAO,mBACjB,CAAEghB,GAAI,GAAIhhB,MAAO,uBCNJ,IAAEqhB,iBANQ,CACvB,CAAEL,GAAI,EAAGhhB,MAAO,qBAChB,CAAEghB,GAAI,EAAGhhB,MAAO,UAChB,CAAEghB,GAAI,EAAGhhB,MAAO,YCEH,GAJb,oCAIa,GAFb,oCCIa,IAAEshB,aAPI,CACnB,CAAEN,GAAI,EAAGhhB,MAAO,UAChB,CAAEghB,GAAI,EAAGhhB,MAAO,WAChB,CAAEghB,GAAI,EAAGhhB,MAAO,WAChB,CAAEghB,GAAI,EAAGhhB,MAAO,aCKH,IAAEuhB,gBATO,CACtB,CAAEP,GAAI,EAAGhhB,MAAO,aAChB,CAAEghB,GAAI,EAAGhhB,MAAO,cAChB,CAAEghB,GAAI,EAAGhhB,MAAO,WAChB,CAAEghB,GAAI,EAAGhhB,MAAO,eAChB,CAAEghB,GAAI,EAAGhhB,MAAO,SAChB,CAAEghB,GAAI,EAAGhhB,MAAO,SCGH,GATO,EASP,GARc,EAQd,GAPa,EAOb,GANS,EAMT,GALc,EAKd,GAJY,ECDZ,GAHiB,EAGjB,GAF4B,ECyDxBwhB,GA3DG,CACf,CACCC,MAAO,EACPC,QAAS,CACL,CAAEV,GAAI,EAAGhhB,MAAO,iBAAkB2hB,gBAAgB,EAAMC,YAAa,EAAGC,kBAAkB,EAAMC,QAAS,iBAAkBC,WAAY,mCAAoCC,MAAO,UAAWC,YAAY,EAAOC,WAAY,EAAGC,YAAa,GAC5O,CAAEnB,GAAI,EAAGhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,cAAeC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,GAC/L,CAAEnB,GAAI,EAAGhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,eAAgBC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,GAChM,CAAEnB,GAAI,EAAGhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,eAAgBC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,GAChM,CAAEnB,GAAI,EAAGhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,eAAgBC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,GAChM,CAAEnB,GAAI,EAAGhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,eAAgBC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,KAGpM,CACIV,MAAO,EACPC,QAAS,CACL,CAAEV,GAAI,EAAGhhB,MAAO,SAAU2hB,gBAAgB,EAAMC,YAAa,EAAGC,kBAAkB,EAAMC,QAAS,SAAUC,WAAY,2CAA4CC,MAAO,UAAWC,YAAY,EAAOC,WAAY,EAAGC,YAAa,GACpO,CAAEnB,GAAI,EAAGhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,cAAeC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,GAC/L,CAAEnB,GAAI,EAAGhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,cAAeC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,GAC/L,CAAEnB,GAAI,GAAIhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,eAAgBC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,GACjM,CAAEnB,GAAI,GAAIhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,eAAgBC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,GACjM,CAAEnB,GAAI,GAAIhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,eAAgBC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,KAGzM,CACIV,MAAO,EACPC,QAAS,CACL,CAAEV,GAAI,GAAIhhB,MAAO,WAAY2hB,gBAAgB,EAAMC,YAAa,EAAGC,kBAAkB,EAAMC,QAAS,WAAYC,WAAY,6BAA8BC,MAAO,UAAWC,YAAY,EAAOC,WAAY,EAAGC,YAAa,GAC3N,CAAEnB,GAAI,GAAIhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,cAAeC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,GAChM,CAAEnB,GAAI,GAAIhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,cAAeC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,GAChM,CAAEnB,GAAI,GAAIhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,cAAeC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,GAChM,CAAEnB,GAAI,GAAIhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,eAAgBC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,GACjM,CAAEnB,GAAI,GAAIhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,eAAgBC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,KAGzM,CACIV,MAAO,EACPC,QAAS,CACL,CAAEV,GAAI,GAAIhhB,MAAO,WAAY2hB,gBAAgB,EAAMC,YAAa,EAAGC,kBAAkB,EAAMC,QAAS,WAAYC,WAAY,yCAA0CC,MAAO,UAAWC,YAAY,EAAOC,WAAY,EAAGC,YAAa,GACvO,CAAEnB,GAAI,GAAIhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,cAAeC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,GAChM,CAAEnB,GAAI,GAAIhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,cAAeC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,GAChM,CAAEnB,GAAI,GAAIhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,cAAeC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,GAChM,CAAEnB,GAAI,GAAIhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,cAAeC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,GAChM,CAAEnB,GAAI,GAAIhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,eAAgBC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,KAGzM,CACIV,MAAO,EACPC,QAAS,CACL,CAAEV,GAAI,GAAIhhB,MAAO,OAAQ2hB,gBAAgB,EAAMC,YAAa,EAAGC,kBAAkB,EAAMC,QAAS,OAAQC,WAAY,2CAA4CC,MAAO,UAAWC,YAAY,EAAOC,WAAY,EAAGC,YAAa,GACjO,CAAEnB,GAAI,GAAIhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,cAAeC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,GAChM,CAAEnB,GAAI,GAAIhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,cAAeC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,GAChM,CAAEnB,GAAI,GAAIhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,cAAeC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,GAChM,CAAEnB,GAAI,GAAIhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,cAAeC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,GAChM,CAAEnB,GAAI,GAAIhhB,MAAO,IAAK2hB,gBAAgB,EAAOC,aAAc,EAAGC,kBAAkB,EAAOC,QAAS,IAAKC,WAAY,cAAeC,MAAO,UAAWC,YAAY,EAAMC,WAAY,EAAGC,YAAa,M,mGCxCjMC,I,OARF,SAAC,GAAD,IAAGjkB,EAAH,EAAGA,SAAUkkB,EAAb,EAAaA,UAAb,OACX,yBAAKA,UAAW,CAAC,OAAQA,GAAWC,KAAK,KAAMnkB,K,4DCDlC,SAASokB,GAAOzhB,GAE7B,OACE,kBAAC,KAAD,eACE0hB,sBAAsB,EACtBC,sBAAsB,GAElB3hB,GAEHA,EAAM3C,UCCb,IAAMukB,GAAYC,cAAW,SAACC,GAC5B,MAAO,CACLC,aAAc,CACZb,MAAO,MACPc,SAAU,WACVC,KAAM,IAERC,aAAc,CACZC,MAAO,IACPC,MAAO,QACPC,OAAQP,EAAMQ,QAAQ,QAmFbC,GA9EU,SAACviB,GACxB,IAAMwiB,EAAUZ,KAGda,EAUEziB,EAVFyiB,KACAC,EASE1iB,EATF0iB,aACAC,EAQE3iB,EARF2iB,YACA/lB,EAOEoD,EAPFpD,MACAgmB,EAME5iB,EANF4iB,YACAC,EAKE7iB,EALF6iB,iBACAC,EAIE9iB,EAJF8iB,iBACAC,EAGE/iB,EAHF+iB,gBACAhB,EAEE/hB,EAFF+hB,aACAiB,EACEhjB,EADFgjB,SAGF,OACE,kBAAC,IAAMC,SAAP,KACE,kBAAC,GAAD,CACER,KAAMA,EACNS,QAASP,EACTQ,kBAAgB,qBAChBC,mBAAiB,4BAEhBL,GAAmB,kBAACM,GAAA,EAAD,MAEpB,kBAACC,GAAA,EAAD,CAAapD,GAAG,sBAAsBtjB,GACtC,kBAAC2mB,GAAA,EAAD,KACE,kBAACC,GAAA,EAAD,CAAmBtD,GAAG,4BACnB0C,IAGL,kBAACa,GAAA,EAAD,KACE,kBAACC,GAAA,EAAD,CAAYC,QAAQ,UAAUpC,UAAWiB,EAAQT,cAC9CA,GAEH,kBAAC6B,GAAA,EAAD,CACED,QAAQ,WACRzC,MAAM,UACN2C,QAASlB,EACTzC,GAAG,eACHqB,UAAWiB,EAAQN,cAElBY,GAEH,kBAACc,GAAA,EAAD,CACEC,QAASnB,EACTiB,QAAQ,YACRzC,MAAM,UACN4C,WAAS,EACT5D,GAAG,eACH6D,MACEf,EACI,CAAEgB,gBAAiB,OACnB,CAAEA,gBAAiB,WAEzBzC,UAAWiB,EAAQN,cAElBW,OCnDEoB,GAjCc,SAACjkB,GAAW,IAAD,EAOlCA,EALFkkB,kBAFoC,SAGpCC,EAIEnkB,EAJFmkB,2BACAC,EAGEpkB,EAHFokB,iBACAzmB,EAEEqC,EAFFrC,KACA0mB,EACErkB,EADFqkB,SAUF,OACE,kBAAC,IAAMpB,SAAP,KACE,kBAAC,GAAD,CACER,KAAMyB,EACNvB,YAZc,WAClBwB,GAA2B,IAYvBzB,aATe,WACnB0B,EAAiBzmB,EAAK2mB,QASlB1nB,MAAM,kBACNgmB,YAAY,4CACZC,iBAAiB,MACjBC,iBAAiB,SACjBC,gBAAiBsB,EACjBtC,aAAa,OC7BRwC,GAAkC,SAAC9B,GAAD,MAAW,CACxD+B,KAAMC,EAAMrkB,2BACZqiB,SAGWiC,GAAgC,SAACjC,GAAD,MAAW,CACtD+B,KAAMC,EAAMpkB,yBACZoiB,SAGWkC,GAAmC,SAACzlB,EAAO0lB,GAAR,MAA4B,CAC1EJ,KAAMC,EAAM5iB,iCACZ3C,QACA0lB,mBAGWC,GAAwB,SAACC,EAASC,GAAV,MAAoB,CACvDP,KAAMC,EAAMziB,eACZ8iB,UACAC,SAQWC,GAA4B,iBAAO,CAC9CR,KAAMC,EAAMniB,sBAQD2iB,GAAgD,SAC3DxC,EACAyC,EACAC,GAH2D,MAIvD,CACJX,KAAMC,EAAM3iB,oCACZ2gB,OACAyC,YACAC,WAQWC,GAA2B,SAACC,GAAD,MAAgB,CACtDb,KAAMC,EAAMlgB,mBACZ8gB,cCtDWC,GAAiC,SAAC7C,GAAD,MAAW,CACvD+B,KAAMC,EAAMlkB,0BACZkiB,SAGW8C,GAA+B,SAAC9C,GAAD,MAAW,CACrD+B,KAAMC,EAAMjkB,wBACZiiB,SAQW+C,GAAc,iBAAO,CAChChB,KAAMC,EAAMzjB,iBAGDykB,GAAkC,SAACvmB,EAAO0lB,GAAR,MAA4B,CACzEJ,KAAMC,EAAMrjB,gCACZlC,QACA0lB,mBAGWc,GAAuB,SAACC,EAAQZ,GAAT,MAAmB,CACrDP,KAAMC,EAAMnjB,cACZqkB,SACAZ,SAQWa,GAA+C,SAC1DnD,EACAoD,EACAV,GAH0D,MAItD,CACJX,KAAMC,EAAM9iB,mCACZ8gB,OACAoD,WACAV,WAQWW,GAAmC,SAACC,GAAD,MAAiB,CAC/DvB,KAAMC,EAAM7f,4BACZmhB,eCtDWC,GAAmC,SAACvD,GAAD,MAAW,CACzD+B,KAAMC,EAAM5hB,4BACZ4f,SAGWwD,GAA+B,SAACxD,GAAD,MAAW,CACrD+B,KAAMC,EAAMzW,wBACZyU,SAQWyD,GAA0B,SAACvoB,GAAD,MAAW,CAChD6mB,KAAMC,EAAMthB,mBACZxF,SAGWwoB,GAA+B,SAAC1D,GAAD,MAAW,CACrD+B,KAAMC,EAAM3W,wBACZ2U,SAGW2D,GAA6B,SAAC3D,GAAD,MAAW,CACnD+B,KAAMC,EAAM1W,sBACZ0U,SAGW4D,GAAgC,SAACnnB,EAAO0lB,GAAR,MAA4B,CACvEJ,KAAMC,EAAMjW,8BACZtP,QACA0lB,mBAGW0B,GAAqB,SAAC3oB,EAAMonB,GAAP,MAAiB,CACjDP,KAAMC,EAAMhW,YACZ9Q,OACAonB,SAGWwB,GAA8B,SAACC,GAAD,MAAiB,CAC1DhC,KAAMC,EAAMxW,6BACZuY,eAGWC,GAAwB,iBAAO,CAC1CjC,KAAMC,EAAMvW,kBAGDwY,GAAwB,SAAC/oB,GAAD,MAAW,CAC9C6mB,KAAMC,EAAMlW,UACZ5Q,SCrDWgpB,GAA6B,SAACd,GAAD,MAAe,CACvDrB,KAAMC,EAAMrhB,qBACZyiB,aAGWe,GAAoC,SAACnE,EAAMoE,GAAP,MAAoB,CACnErC,KAAMC,EAAMhhB,6BACZgf,OACAoE,YAQWC,GAAqC,SAAC5nB,EAAO0lB,GAAR,MAA4B,CAC5EJ,KAAMC,EAAM7gB,mCACZ1E,QACA0lB,mBAGWmC,GAA0B,SAACC,EAAWjC,GAAZ,MAAsB,CAC3DP,KAAMC,EAAM5gB,iBACZmjB,YACAjC,SAQWkC,GAAkC,SAACxE,GAAD,MAAW,CACxD+B,KAAMC,EAAM/gB,2BACZ+e,SAGWyE,GAA6B,SAACF,GAAD,MAAgB,CACxDxC,KAAMC,EAAM5f,eACZmiB,cAGWG,GAAgC,SAAC1E,EAAMuE,GAAP,MAAsB,CACjExC,KAAMC,EAAM3f,kCACZ2d,OACAuE,cAYWI,GAAoC,SAAC3E,GAAD,MAAW,CAC1D+B,KAAMC,EAAMtgB,6BACZse,SAGW4E,GAAoC,SAC/C5E,EACA6E,EACAC,GAH+C,MAI3C,CACJ/C,KAAMC,EAAMrgB,8BACZqe,OACA6E,cACAC,WCvEWC,GAAqC,SAAC3B,GAAD,MAAe,CAC/DrB,KAAMC,EAAM/e,+BACZmgB,aAaW4B,GAAmC,SAAChF,GAAD,MAAW,CACzD+B,KAAMC,EAAMpe,4BACZoc,SAGWiF,GAAiC,SAACjF,GAAD,MAAW,CACvD+B,KAAMC,EAAMne,0BACZmc,SAGWkF,GAAoC,SAACzoB,EAAO0lB,GAAR,MAA4B,CAC3EJ,KAAMC,EAAMle,kCACZrH,QACA0lB,mBAGWgD,GAAyB,SAACC,EAAU9C,GAAX,MAAqB,CACzDP,KAAMC,EAAM1d,gBACZ8gB,WACA9C,SAQW+C,GAAgD,SAC3DrF,EACAoF,EACA1C,GAH2D,MAIvD,CACJX,KAAMC,EAAMhe,qCACZgc,OACAoF,WACA1C,WAQW4C,GAA2B,SAACC,GAAD,MAAiB,CACvDxD,KAAMC,EAAMpM,2BACZ2P,eAGWC,GAAiD,SAC5DC,EACAC,EACAC,GAH4D,MAIxD,CACJ5D,KAAMC,EAAMzM,8BACZkQ,eACAC,WACAC,mBCvEWC,GAAkC,SAACxC,GAAD,MAAe,CAC5DrB,KAAMC,EAAMrd,4BACZye,aAaWyC,GAAgC,SAAC7F,GAAD,MAAW,CACtD+B,KAAMC,EAAM1c,yBACZ0a,SAGW8F,GAAiC,SAACrpB,EAAO0lB,GAAR,MAA4B,CACxEJ,KAAMC,EAAMvc,+BACZhJ,QACA0lB,mBAGW4D,GAAsB,SAACC,EAAO1D,GAAR,MAAkB,CACnDP,KAAMC,EAAMrc,aACZqgB,QACA1D,SAGW2D,GAA6B,SAACjG,GAAD,MAAW,CACnD+B,KAAMC,EAAMxc,sBACZwa,SAGWkG,GAA8B,SAAClG,GAAD,MAAW,CACpD+B,KAAMC,EAAMzc,uBACZya,SAGWmG,GAAyB,SAACH,GAAD,MAAY,CAChDjE,KAAMC,EAAMtc,WACZsgB,UAwBWI,GAAuB,SAACC,EAAS/D,EAAMc,GAAhB,MAA8B,CAChErB,KAAMC,EAAMhb,oBACZqf,UACA/D,OACAc,aAqBWkD,GAAmC,SAACtG,GAAD,MAAW,CACzD+B,KAAMC,EAAMpgB,6BACZoe,SC/FWuG,GAAmC,SAACnD,GAAD,MAAe,CAC7DrB,KAAMC,EAAM3a,6BACZ+b,aAuBWoD,GAAiC,SAACxG,GAAD,MAAW,CACvD+B,KAAMC,EAAMtZ,0BACZsX,SAGWyG,GAAsB,SAAChqB,EAAOiqB,GAAR,MAA4B,CAC7D3E,KAAMC,EAAMpZ,gCACZnM,QACAiqB,mBASWC,GAAuB,SAACC,EAAQtE,GAAT,MAAmB,CACrDP,KAAMC,EAAMhZ,cACZ4d,SACAtE,SAGWuE,GAA8B,SAAC7G,GAAD,MAAW,CACpD+B,KAAMC,EAAMrZ,uBACZqX,SAGW8G,GAA+B,SAAC9G,GAAD,MAAW,CACrD+B,KAAMC,EAAMjZ,wBACZiX,SAcW+G,GAA0B,SAACH,GAAD,MAAa,CAClD7E,KAAMC,EAAMnZ,YACZ+d,WAmBWI,GAA6B,SACxCX,EACA/D,EACAwC,EACA1B,GAJwC,MAKpC,CACJrB,KAAMC,EAAMrX,qBACZ0b,UACA/D,OACAwC,SACA1B,aCpGW6D,GAAmC,SAAC7D,GAAD,MAAe,CAC7DrB,KAAMC,EAAMpV,6BACZwW,aAaW8D,GAAiC,SAAClH,GAAD,MAAW,CACvD+B,KAAMC,EAAMzU,0BACZyS,SAGWmH,GAAkC,SAAC1qB,EAAO0lB,GAAR,MAA4B,CACzEJ,KAAMC,EAAMtU,gCACZjR,QACA0lB,mBAGWiF,GAAuB,SAACC,EAAQ/E,GAAT,MAAmB,CACrDP,KAAMC,EAAMpU,cACZyZ,SACA/E,SAGWgF,GAA8B,SAACtH,GAAD,MAAW,CACpD+B,KAAMC,EAAMvU,uBACZuS,SAGWuH,GAA+B,SAACvH,GAAD,MAAW,CACrD+B,KAAMC,EAAMxU,wBACZwS,SAGWwH,GAA0B,SAACH,GAAD,MAAa,CAClDtF,KAAMC,EAAMrU,YACZ0Z,WAwBWI,GAAwB,SAACpB,EAAS/D,EAAMc,GAAhB,MAA8B,CACjErB,KAAMC,EAAM/S,sBACZoX,UACA/D,OACAc,aAqBWsE,GAAqC,SAAC1H,GAAD,MAAW,CAC3D+B,KAAMC,EAAMngB,+BACZme,SAGW2H,GAAwC,SAAC3H,EAAM4H,GAAP,MAAsB,CACzE7F,KAAMC,EAAMnS,kCACZmQ,OACA4H,cAIWC,GAAgC,SAAC7H,GAAD,MAAW,CACtD+B,KAAMC,EAAMlS,yBACZkQ,SAYW8H,GAA2C,SACtDrrB,EACA0lB,GAFsD,MAGlD,CACJJ,KAAMC,EAAMrR,+BACZlU,QACA0lB,mBAGW4F,GAA6B,SAAC1B,EAAS/D,EAAMc,GAAhB,MAA8B,CACtErB,KAAMC,EAAM3R,qBACZgW,UACA/D,OACAc,aAaW4E,GAAoC,SAAChI,GAAD,MAAW,CAC1D+B,KAAMC,EAAM5R,iCACZ4P,SAYWiI,GAAuC,SAACjI,EAAMkI,GAAP,MAAqB,CACvEnG,KAAMC,EAAM9Q,iCACZ8O,OACAkI,aAIWC,GAAuC,SAACnI,GAAD,MAAW,CAC7D+B,KAAMC,EAAM7Q,gCACZ6O,SAYWoI,GAAkD,SAC7D3rB,EACA0lB,GAF6D,MAGzD,CACJJ,KAAMC,EAAMhQ,uCACZvV,QACA0lB,mBAGWkG,GAAoC,SAAChC,EAAS/D,EAAMc,GAAhB,MAA8B,CAC7ErB,KAAMC,EAAMtQ,6BACZ2U,UACA/D,OACAc,aAQWkF,GAA2C,SAACtI,GAAD,MAAW,CACjE+B,KAAMC,EAAMvQ,yCACZuO,SAYWuI,GAA8C,SACzDvI,EACAwI,GAFyD,MAGrD,CACJzG,KAAMC,EAAMzP,yCACZyN,OACAwI,oBAaWC,GAAmB,SAAClD,GAAD,MAAiB,CAC/CxD,KAAMC,EAAMlO,yBACZyR,eAGWmD,GAA+C,SAC1DjD,EACAC,EACAC,GAH0D,MAItD,CACJ5D,KAAMC,EAAMvO,4BACZgS,eACAC,WACAC,mBCvPWgD,GAA4B,SAACC,EAAcxF,GAAf,MAA6B,CACpErB,KAAMC,EAAMnP,oBACZ+V,eACAxF,aAGWyF,GAAqC,SAACzF,GAAD,MAAe,CAC/DrB,KAAMC,EAAMxO,+BACZ4P,aAGW0F,GAAiC,SAAC9I,GAAD,MAAW,CACvD+B,KAAMC,EAAM9O,0BACZ8M,SAGW+I,GAA+B,SAACC,GAAD,MAAa,CACvDjH,KAAMC,EAAM7O,2BACZ6V,WAGWC,GAAkC,iBAAO,CACpDlH,KAAMC,EAAM5O,8BAGD8V,GAA0B,iBAAO,CAC5CnH,KAAMC,EAAM3O,gCAQD8V,GAAsC,SAACC,GAAD,MAAmB,CACpErH,KAAMC,EAAM1O,kBACZ8V,iBCVaC,oBAnBf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAME,MAAMC,yBACxBvuB,KAAMouB,EAAME,MAAME,YAAYC,KAC9B/H,SAAU0H,EAAME,MAAMI,sBAAsBhI,aAIhD,SAA4BiI,EAAUN,GACpC,MAAO,CACL7H,2BAA4B,SAAC1B,GAC3B6J,EAAStG,GAAiCvD,KAE5C2B,iBAAkB,SAACiB,GACjBiH,EPXgC,SAACjH,GAAD,MAAgB,CACpDb,KAAMC,EAAM3hB,6BACZuiB,aOSakH,CAAuBlH,QAKvByG,CAGb7H,I,oBCWauI,OArCf,SAAwBxsB,GAAQ,IACtBysB,EAA4CzsB,EAA5CysB,KAAMC,EAAsC1sB,EAAtC0sB,QAASC,EAA6B3sB,EAA7B2sB,YAAaC,EAAgB5sB,EAAhB4sB,YAEpC,OACE,kBAACC,GAAA,EAAD,CACEC,aAAc,CACZC,SAAU,SACVC,WAAY,SAEdC,iBAAkB,IAClBxK,KAAMiK,EACNQ,SAAUN,EACV1J,QAAS,SAACuF,EAAO0E,GACA,cAAXA,GAGJR,KAEFS,2BAA2B,EAC3BC,aAAc,CACZ,mBAAoB,oBAEtBC,QAAS,0BAAMpN,GAAG,oBAAoBuM,GACtCc,OAAQ,CACN,kBAACC,GAAA,EAAD,CACEC,aAAW,QACXC,IAAI,QACJxM,MAAM,UACN2C,QAAS8I,GAET,kBAACgB,GAAA,EAAD,WCTK7B,oBArBf,SAAyBC,EAAOC,GAC9B,IACMS,EADSV,EAAM6B,QAAQN,QAAQO,MAAMC,OAAS,EAC9B/B,EAAM6B,QAAQN,QAAQO,MAAM,GAAK,GAEvD,MAAO,CACLnB,QAASX,EAAM6B,QAAQN,QAAQZ,QAC/BD,WAIJ,SAA4BH,EAAUN,GACpC,MAAO,CACLW,YAAa,WACXL,ECP4B,CAChC9H,KAAMC,EAAMvkB,gBDQV0sB,YAAa,WACXN,ECN4B,CAChC9H,KAAMC,EAAMtkB,mBDUC2rB,CAA6CU,IENtD5K,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCiM,gBAAiB,CACfC,QAAS,QAEXC,KAAM,CACJC,SAAU,GAEZC,WAAY,CACVC,YAAatM,EAAMQ,QAAQ,IAE7B+L,aAAc,CACZH,SAAU,EACVF,QAAS,QAEXpxB,MAAO,CACL0xB,UAAW,GAEbC,gBAAiB,CACfD,UAAW,EACXE,WAAY,IAEdC,WAAY,CACVC,eAAgB,OAChBC,SAAU,OACVC,cAAe,YACf1N,MAAO,yBACP2N,cAAe,aAEjBC,cAAe,CACbd,QAAS,QAEXe,SAAU,CACRT,UAAW,GACXF,YAAa,GACbO,SAAU,IAEZK,mBAAoB,GACpBC,OAAQ,CACNC,WACE,oFAEJC,aAAc,CACZjO,MAAOY,EAAMsN,QAAQC,SAASC,MAEhCC,YAAa,CACXpN,MAAO,GACPqN,OAAQ,GACRxB,QAAS,eACTI,YAAa,QAIjB,SAASqB,GAAmBzvB,GAC1B,IAAMwiB,EAAUZ,KADiB,EAED5kB,IAAMQ,SAAS,MAFd,mBAE1BkyB,EAF0B,KAEhBC,EAFgB,KAG3BlN,EAAOmN,QAAQF,GAHY,EAIRxyB,IAAjBqC,EAJyB,EAIzBA,OAAQ5B,EAJiB,EAIjBA,KAEdkyB,EAkBE7vB,EAlBF6vB,WACAC,EAiBE9vB,EAjBF8vB,0BACAnK,EAgBE3lB,EAhBF2lB,OACAoK,EAeE/vB,EAfF+vB,cACAC,EAcEhwB,EAdFgwB,4BACAC,EAaEjwB,EAbFiwB,iBACAC,EAYElwB,EAZFkwB,kBACAC,EAWEnwB,EAXFmwB,eACAC,EAUEpwB,EAVFowB,6BACAC,EASErwB,EATFqwB,uBACAC,EAQEtwB,EARFswB,iBACAC,EAOEvwB,EAPFuwB,oBACAC,EAMExwB,EANFwwB,gBACAC,EAKEzwB,EALFywB,mBACAC,EAIE1wB,EAJF0wB,kBACAC,EAGE3wB,EAHF2wB,6BACAvM,EAEEpkB,EAFFokB,iBACAwM,EACE5wB,EADF4wB,gBAEI/K,EAAagL,cAAbhL,SAEN7oB,IAAMmB,WACJ,WACEyyB,EAAgBjzB,GAEZ+yB,EACFC,EAA6B9K,GAE7BiK,EAA0BD,EAAW3P,MAKzC,CAAC2P,EAAYa,EAAmB/yB,IAgBlC,OACE,kBAAC,IAAMslB,SAAP,KACE,kBAAC,GAAD,MACA,kBAAC,GAAD,MAEA,yBAAK1B,UAAWiB,EAAQuL,iBACtB,kBAAC+C,GAAA,EAAD,CAAQ9O,SAAS,QAAQT,UAAWiB,EAAQyM,QAC1C,kBAAC,GAAD,KACE,kBAAC8B,GAAA,EAAD,KACE,yBAAKxP,UAAWiB,EAAQ6L,cACtB,yBACE2C,IAAI,oEACJC,IAAI,eACJ1P,UAAWiB,EAAQ+M,cAErB,kBAAC7L,GAAA,EAAD,CAAYC,QAAQ,KAAKpC,UAAWiB,EAAQ5lB,OACzC+oB,GAAM,UAAOA,EAAOuL,YAAd,cAA+BvL,EAAOwL,QAIjD,yBAAK5P,UAAWiB,EAAQsM,eACtB,yBAAKvN,UAAWiB,EAAQuM,UAAWpxB,EAAKwzB,MAExC,yBAAK5P,UAAWiB,EAAQwM,oBACtB,kBAAC,IAAM/L,SAAP,KACE,kBAACuK,GAAA,EAAD,CACEC,aAAW,mBACXvM,MAAM,UACN2C,QArCD,SAAC4E,GAClBkH,EAAYlH,EAAM2I,gBAqCAlR,GAAG,mBAEH,kBAAC,KAAD,CACEgB,MAAM,UACNK,UAAWiB,EAAQ2M,gBAGvB,kBAACkC,GAAA,EAAD,CACEnR,GAAG,cACHwP,SAAUA,EACV5C,aAAc,CACZC,SAAU,MACVC,WAAY,SAEdsE,aAAW,EACXC,gBAAiB,CACfxE,SAAU,MACVC,WAAY,SAEdvK,KAAMA,EACNS,QA9DI,WACtByM,EAAY,QA+DM,kBAAC6B,GAAA,EAAD,CACE3N,QAzDY,WAChC8L,EAAY,MACZvL,KAwDoBlE,GAAG,oBAFL,mBAMA,kBAACsR,GAAA,EAAD,CAAU3N,QAAS,kBAAMtkB,KAAU2gB,GAAG,oBAAtC,gBASX6P,GACDC,GACAC,GACAC,GACAE,GACAC,GACAC,GACAC,GACAC,GACAC,GACAN,EACE,kBAAC9M,GAAA,EAAD,MACE,QAWdoM,GAAmBgC,aAAe,GAInBhC,UC9KAiC,eACb5F,aApCsB,SAACC,EAAOC,GAC9B,MAAO,CACL6D,WAAY9D,EAAME,MAAMtuB,KAAKyuB,KAC7BzG,OAAQoG,EAAMpG,OAAOA,OAAOyG,KAC5B2D,cAAehE,EAAMtD,MAAMkJ,SAAStN,SACpC2L,4BAA6BjE,EAAMtD,MAAMmJ,mBAAmBC,UAC5D5B,iBAAkBlE,EAAMtD,MAAMqJ,aAAazN,SAC3C6L,kBAAmBnE,EAAMtD,MAAMsJ,UAAU1N,SACzC8L,eAAgBpE,EAAM1C,OAAO2I,UAAU3N,SACvC+L,6BAA8BrE,EAAM1C,OAAO4I,oBAAoBJ,UAC/DxB,uBAAwBtE,EAAM1C,OAAOyI,aAAazN,SAClDiM,iBAAkBvE,EAAMmG,QAAQC,gBAAgBN,UAChDtB,oBAAqBxE,EAAMqG,WAAWC,cAAcR,UACpDrB,gBAAiBzE,EAAMuG,OAAOC,eAAeV,UAC7CpB,mBAAoB1E,EAAMyG,UAAUC,kBAAkBZ,cAI/B,SAACvF,EAAUN,GACpC,MAAO,CACL8D,0BAA2B,SAAC4C,GAC1BpG,Eb2B2C,SAACoG,GAAD,MAAa,CAC5DlO,KAAMC,EAAMzf,uCACZ0tB,Ua7BaC,CAAkCD,KAE7CtO,iBAAkB,WAChBkI,EAAStG,IAAiC,KAE5C2K,6BAA8B,SAAC9K,GAC7ByG,Eb0B8C,SAACzG,GAAD,MAAe,CACjErB,KAAMC,EAAMpf,kCACZwgB,Ya5Ba+M,CAAqC/M,KAEhD+K,gBAAiB,SAACjzB,GAChB2uB,EAASpG,GAAwBvoB,QAMrCmuB,CAA6C2D,K,sJCtBzC7N,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvC+Q,mBAAoB,CAClBvE,UAAW,IAEbL,KAAM,CACJD,QAAS,QAEX8E,OAAQ,CACN3Q,MAAM,eAAD,OATW,IASX,OACLqM,WAVgB,KAYlBuE,OAAQ,CACN5Q,MAbgB,IAchB6Q,WAAY,GAEdC,YAAa,CACX9Q,MAjBgB,IAkBhB+Q,IAAK,IAGPC,QAASrR,EAAMsR,OAAOD,QACtBE,QAAS,CACPnF,SAAU,EACVlK,gBAAiBlC,EAAMsN,QAAQF,WAAWoE,QAC1CC,QAASzR,EAAMQ,QAAQ,IAEzBkR,SAAU,CACRhE,OAAQ,mBAEViE,mBAAoB,CAClBvE,WAAY,UACZwE,WAAW,aAAD,OAAe5R,EAAMsN,QAAQuE,UAAUC,YA6KtCC,GAzKgB,SAAC7zB,GAC9B,IAAMwiB,EAAUZ,KACRkS,EAAoD9zB,EAApD8zB,yBAA0BC,EAA0B/zB,EAA1B+zB,sBAE5BC,EAAsB,SAACjO,GAC3B+N,EAAyB/N,IAG3B,OACE,kBAAC,IAAM9C,SAAP,KACE,kBAACgR,GAAA,EAAD,CACE1S,UAAWiB,EAAQuQ,OACnBpP,QAAQ,YACRnB,QAAS,CACP0R,MAAO1R,EAAQyQ,aAEjBkB,OAAO,QAEP,kBAACC,GAAA,EAAD,KACE,kBAACC,GAAA,EAAD,CACEC,QAAM,EACN/S,WACG,UAAGiB,EAAQgR,UACZO,IAA0BQ,EAA1B,UACO/R,EAAQiR,oBACX,MAEN5P,QAAS,kBAAMmQ,EAAoBO,KAEnC,kBAACC,GAAA,EAAD,KACE,kBAACC,GAAA,EAAD,OAEF,kBAACC,GAAA,EAAD,CAAcC,QAASJ,KAEzB,kBAACF,GAAA,EAAD,CACEC,QAAM,EACN/S,WACG,UAAGiB,EAAQgR,UACZO,IAA0BQ,EAA1B,UACO/R,EAAQiR,oBACX,MAEN5P,QAAS,kBAAMmQ,EAAoBO,KAEnC,kBAACC,GAAA,EAAD,KACE,kBAACI,GAAA,EAAD,OAEF,kBAACF,GAAA,EAAD,CAAcC,QAASJ,KAEzB,kBAACF,GAAA,EAAD,CACEC,QAAM,EACN/S,WACG,UAAGiB,EAAQgR,UACZO,IAA0BQ,EAA1B,UACO/R,EAAQiR,oBACX,MAEN5P,QAAS,kBAAMmQ,EAAoBO,KAEnC,kBAACC,GAAA,EAAD,KACE,kBAACK,GAAA,EAAD,OAEF,kBAACH,GAAA,EAAD,CAAcC,QAASJ,KAEzB,kBAACF,GAAA,EAAD,CACEC,QAAM,EACN/S,WACG,UAAGiB,EAAQgR,UACZO,IAA0BQ,EAA1B,UACO/R,EAAQiR,oBACX,MAEN5P,QAAS,kBAAMmQ,EAAoBO,KAEnC,kBAACC,GAAA,EAAD,KACE,kBAACM,GAAA,EAAD,OAEF,kBAACJ,GAAA,EAAD,CAAcC,QAASJ,KAGzB,kBAACF,GAAA,EAAD,CACEC,QAAM,EACN/S,WACG,UAAGiB,EAAQgR,UACZO,IAA0BQ,EAA1B,UACO/R,EAAQiR,oBACX,MAEN5P,QAAS,kBAAMmQ,EAAoBO,KAEnC,kBAACC,GAAA,EAAD,KACE,kBAACO,GAAA,EAAD,OAEF,kBAACL,GAAA,EAAD,CAAcC,QAASJ,KAGzB,kBAACF,GAAA,EAAD,CACEC,QAAM,EACN/S,WACG,UAAGiB,EAAQgR,UACZO,IAA0BQ,EAA1B,UACO/R,EAAQiR,oBACX,MAEN5P,QAAS,kBAAMmQ,EAAoBO,KAEnC,kBAACC,GAAA,EAAD,KACE,kBAACQ,GAAA,EAAD,OAEF,kBAACN,GAAA,EAAD,CAAcC,QAASJ,KAGzB,kBAACF,GAAA,EAAD,CACEC,QAAM,EACN/S,WACG,UAAGiB,EAAQgR,UACZO,IAA0BQ,EAA1B,UACO/R,EAAQiR,oBACX,MAEN5P,QAAS,kBAAMmQ,EAAoBO,KAEnC,kBAACC,GAAA,EAAD,KACE,kBAACS,GAAA,EAAD,OAEF,kBAACP,GAAA,EAAD,CAAcC,QAASJ,KAGzB,kBAACF,GAAA,EAAD,CACEC,QAAM,EACN/S,WACG,UAAGiB,EAAQgR,UACZO,IAA0BQ,EAA1B,UACO/R,EAAQiR,oBACX,MAEN5P,QAAS,kBACPmQ,EAAoBO,KAGtB,kBAACC,GAAA,EAAD,KACE,kBAACU,GAAA,EAAD,OAEF,kBAACR,GAAA,EAAD,CAAcC,QAASJ,KAGzB,kBAACF,GAAA,EAAD,CACEC,QAAM,EACN/S,WACG,UAAGiB,EAAQgR,UACZO,IAA0BQ,EAA1B,UACO/R,EAAQiR,oBACX,MAEN5P,QAAS,kBAAMmQ,EAAoBO,KAEnC,kBAACC,GAAA,EAAD,KACE,kBAAC,KAAD,OAEF,kBAACE,GAAA,EAAD,CAAcC,QAASJ,MAG3B,kBAACY,GAAA,EAAD,OAzJJ,MCjDWrJ,oBAdf,SAAyBC,EAAOC,GAC9B,MAAO,CACL+H,sBAAuBhI,EAAMqJ,SAASrB,0BAI1C,SAA4BzH,EAAUN,GACpC,MAAO,CACL8H,yBAA0B,SAAC/N,GACzBuG,EAASxG,GAAiCC,QAKjC+F,CAGb+H,I,kDCpBIjS,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCuT,UAAW,CACTnG,WAAY,UACZM,OAAQ,GACRnN,OAAQ,GACRmM,WAAY,GAEd6E,QAAS,CACPiC,UAAW,SACXC,WAAY,GAEdC,OAAQ,CACNtU,MAAO,OAETuU,MAAO,CACL9G,SAAU,GACV+G,WAAY,IACZtH,YAAa,GAEfuH,MAAO,CACLD,WAAY,SAsBDE,GAlBW,SAAC51B,GACzB,IAAMwiB,EAAUZ,KACR6T,EAAmCz1B,EAAnCy1B,MAF2B,EAEQz1B,EAA5BgjB,gBAFoB,SAEF2S,EAAU31B,EAAV21B,MAEjC,OACE,kBAAC,IAAM1S,SAAP,KACE,yBAAK1B,UAAWiB,EAAQ6S,WACtB,yBACE9T,UAAS,UAAKiB,EAAQ6Q,QAAb,aAAyBrQ,EAAWR,EAAQgT,OAAS,KAE9D,0BAAMjU,UAAWiB,EAAQiT,OAAzB,IAAkCA,GAClC,0BAAMlU,UAAWiB,EAAQmT,OAAzB,IAAkCA,O,kBChCtC/T,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCuT,UAAW,CACTQ,aAAa,aAAD,OAAe/T,EAAMsN,QAAQ0G,UAAUxC,SACnDC,QAAS,mBACTvF,QAAS,OACT+H,eAAgB,iBAElBP,OAAQ,CACNtU,MAAO,OAET8U,QAAS,CACP9U,MAAO,UAETF,QAAS,CACP0U,WAAY,IACZO,YAAa,SACbC,UAAW,SACXC,WAAY,SACZvH,cAAe,SACfwH,aAAc,GAEhBnV,WAAY,CACVyU,WAAY,IACZO,YAAa,SACbC,UAAW,SACXC,WAAY,SACZvH,cAAe,SACfwH,aAAc,GAEhBC,YAAa,GACbC,cAAe,OAqGFC,GAtFc,SAACv2B,GAC5B,IAAMwiB,EAAUZ,KAGd4U,GASEx2B,EAVFy2B,WAUEz2B,EATFw2B,OACAE,EAQE12B,EARF02B,mBACAC,EAOE32B,EAPF22B,UACAC,EAME52B,EANF42B,WACAC,EAKE72B,EALF62B,cACAC,EAIE92B,EAJF82B,UAEAvP,GAEEvnB,EAHF+2B,SAGE/2B,EAFFunB,QACAyP,EACEh3B,EADFg3B,QAWF,OARAh6B,IAAMmB,WACJ,cAIA,CAAC64B,IAID,kBAAC,IAAM/T,SAAP,KACGuT,GACCA,EAAMS,KAAI,SAAC7K,EAAMzL,GACf,IAAMuW,EAAYC,OAASC,QAAQhL,EAAK0K,IAClCO,EAxCe,SAAC9P,EAAQ2P,GACtC,MAAe,aAAX3P,EACE2P,EACK,IAEA,IAGF,GAgCoBI,CAAuB/P,EAAQ2P,GAGpD,OAAIF,GAAWrW,EAAQ,EACd,KAIP,yBAAKY,UAAWiB,EAAQ6S,UAAW3H,IAAK/M,GACtC,yBAAKY,UAAWiB,EAAQ6T,aACtB,kBAAC3S,GAAA,EAAD,CAAYC,QAAQ,KAAKpC,UAAWiB,EAAQxB,SACzCoL,EAAKwK,IAER,kBAAClT,GAAA,EAAD,CAAYC,QAAQ,YAAYpC,UAAWiB,EAAQvB,YAChDmL,EAAKyK,IAER,yBACEtV,UAAS,8BACP2V,EAAY1U,EAAQgT,OAAS,GADtB,iCAEqB,IAA5BpJ,EAAKmL,mBAA8B/U,EAAQwT,QAAU,KAElC,OAApB5J,EAAK0K,GAAL,UACMH,GADN,OACkBU,GACf,GAAI,IACa,OAApBjL,EAAK0K,GACFK,KAAO/K,EAAK0K,IAAYU,OAAO,cAC/B,KAGR,yBAAKjW,UAAWiB,EAAQ8T,eACtB,kBAAC1S,GAAA,EAAD,CACE1C,MAAM,YACNuW,UAAW,kBAACC,GAAA,EAAD,MACXnW,UAAWiB,EAAQmV,WACnB9T,QAAS,WACP6S,EAAmB,gBAAKtK,MAL5B,mBCjGVxK,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvC8V,OAAQ,CACNrE,QAAS,GACTlR,OAAQ,IAEVwV,eAAgB,CACd7V,SAAU,WACVkR,KAAM,IAER4E,UAAW,CACT9V,SAAU,YAEZ+V,WAAY,CACVzJ,WAAY,EACZtM,SAAU,WACVC,KAAM,GACNiR,IAAK,GAEP8E,kBAAmB,CACjBhK,QAAS,OACTM,UAAW,IAEb2J,SAAU,CACR9V,MAAO,QAET+V,uBAAwB,CACtBlK,QAAS,OACTmK,WAAY,SACZpC,eAAgB,SAChBzH,UAAW,GAEb8J,cAAe,CACblJ,WAAY,UACZhO,MAAO,QACPiB,MAAO,IACPqN,OAAQ,GACR,UAAW,CACTN,WAAY,QACZhO,MAAO,UACPmX,OAAQ,sBAGZC,UAAW,CACT3J,SAAU,GACV2G,UAAW,SACXpU,MAAO,UACPkV,aAAc,OAmIHmC,OA/Hf,SAA8Bv4B,GAC5B,IAAMwiB,EAAUZ,KAEdiE,EAKE7lB,EALF6lB,SACA2S,EAIEx4B,EAJFw4B,wBACAC,EAGEz4B,EAHFy4B,UACA3E,EAEE9zB,EAFF8zB,yBACA4E,EACE14B,EADF04B,2BAPiC,EAUNl7B,oBAAS,GAVH,mBAU7Bw5B,EAV6B,KAUpB2B,EAVoB,KAY/BrG,EAASmG,EAab,GAXAz7B,IAAMmB,WACJ,WACM0nB,GACF2S,EAAwB3S,KAK5B,CAACA,IAGCyM,EAAOxE,OAAS,EAAG,EAErBwE,EAASA,EAAOsG,QAAO,SAACnQ,GAAD,OAAsC,OAA3BA,EAAMoQ,sBAItCvG,EAAOwG,MAAK,SAAU16B,EAAG26B,GACvB,OAAO,IAAIC,KAAK56B,EAAEy6B,kBAAoB,IAAIG,KAAKD,EAAEF,qBAIrD,IAAMI,EAAmB9B,OAAS+B,IAAI,EAAG,UACzC5G,EAASA,EAAOsG,QACd,SAACnQ,GAAD,OAAW,IAAIuQ,KAAKvQ,EAAMoQ,kBAAoBI,KAIlD,IAAME,EAAiB7G,EAAOsG,QAC5B,SAACnQ,GAAD,OAAW,IAAIuQ,KAAKvQ,EAAMoQ,mBAAqB,IAAIG,QAE/CI,EAAgB9G,EAAOsG,QAC3B,SAACnQ,GAAD,OAAW,IAAIuQ,KAAKvQ,EAAMoQ,kBAAoB,IAAIG,QAgBpD,OACE,kBAAC,IAAM/V,SAAP,KACE,kBAACoW,GAAA,EAAD,CAAO9X,UAAWiB,EAAQoV,QACxB,kBAAC,IAAM3U,SAAP,KACE,wBAAI1B,UAAWiB,EAAQqV,gBACrB,kBAAC,KAAD,CAAetW,UAAWiB,EAAQsV,YAClC,0BAAMvW,UAAWiB,EAAQuV,YAAzB,WAGF,yBAAKxW,UAAWiB,EAAQwV,mBACtB,yBAAKzW,UAAWiB,EAAQyV,UACtB,kBAAC,GAAD,CACExC,MAAO0D,EAAerL,OACtB6H,MAAM,cAGV,yBAAKpU,UAAWiB,EAAQyV,UACtB,kBAAC,GAAD,CACExC,MAAO2D,EAActL,OACrB6H,MAAM,UACN3S,SAAUoW,EAActL,OAAS,MAIvC,kBAAC,GAAD,CACE0I,MAAOlE,EACPsE,WAAW,cACXC,cAAe,KACfF,UAAU,OACVG,UAAU,mBACVJ,mBA3CiB,SAACtK,GAC1B0H,EAAyBS,GACzBmE,EAA2BtM,IA0CnB4K,QAASA,IAGQ,IAAlB1E,EAAOxE,OACN,uBAAGvM,UAAWiB,EAAQ8V,WAAtB,cACE,KAEHhG,EAAOxE,OAAS,EACf,yBAAKvM,UAAWiB,EAAQ0V,wBACnBlB,EAAW,kBAACpT,GAAA,EAAD,CACd1C,MAAM,YACNK,UAAWiB,EAAQ4V,cACnBvU,QAAS,WAjDnB8U,GAAW,KA8Ca,YAQF,kBAAC/U,GAAA,EAAD,CACZ1C,MAAM,YACNK,UAAWiB,EAAQ4V,cACnBvU,QAAS,WAtDnB8U,GAAW,KAmDW,aAUZ,S,qBChLR/W,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCuT,UAAW,CACTQ,aAAa,aAAD,OAAe/T,EAAMsN,QAAQ0G,UAAUxC,SACnDC,QAAS,mBACTvF,QAAS,OACT+H,eAAgB,iBAElBP,OAAQ,CACNtU,MAAO,OAET8U,QAAS,CACP9U,MAAO,UAETF,QAAS,CACP0U,WAAY,IACZO,YAAa,SACbC,UAAW,SACXC,WAAY,SACZvH,cAAe,SACfwH,aAAc,GAEhBnV,WAAY,CACVyU,WAAY,IACZO,YAAa,SACbC,UAAW,SACXC,WAAY,SACZvH,cAAe,SACfwH,aAAc,GAEhBC,YAAa,GACbC,cAAe,OA8FFgD,GA/EgB,SAACt5B,GAC9B,IAAMwiB,EAAUZ,KAEd6U,EAWEz2B,EAXFy2B,WACAD,EAUEx2B,EAVFw2B,MACAE,EASE12B,EATF02B,mBACAC,EAQE32B,EARF22B,UACAC,EAOE52B,EAPF42B,WACAC,EAME72B,EANF62B,cACAC,EAKE92B,EALF82B,UACAC,EAIE/2B,EAJF+2B,SACAxP,EAGEvnB,EAHFunB,OACAyP,EAEEh3B,EAFFg3B,QAEEh3B,EADF6lB,SAUF,OAPA7oB,IAAMmB,WACJ,cAGA,CAAC64B,IAID,kBAAC,IAAM/T,SAAP,KACGuT,GACCA,EAAMS,KAAI,SAAC7K,EAAMzL,GACf,IAAMuW,EAAYC,OAASC,QAAQhL,EAAK0K,IAClCO,EAxCe,SAAC9P,EAAQ2P,GACtC,MAAe,aAAX3P,EACE2P,EACK,IAEA,IAGF,GAgCoBI,CAAuB/P,EAAQ2P,GAGpD,OAAIF,GAAWrW,EAAQ,EACZ,KAIT,yBAAKY,UAAWiB,EAAQ6S,UAAW3H,IAAK/M,GACtC,yBAAKY,UAAWiB,EAAQ6T,aACtB,kBAAC3S,GAAA,EAAD,CAAYC,QAAQ,KAAKpC,UAAWiB,EAAQxB,SACzCoL,EAAKwK,IAER,kBAAClT,GAAA,EAAD,CAAYC,QAAQ,YAAYpC,UAAWiB,EAAQvB,YAChDmL,EAAKyK,IAER,yBACEtV,UAAS,8BACP2V,EAAY1U,EAAQgT,OAAS,GADtB,iCAEqB,IAA5BpJ,EAAKmL,mBAA8B/U,EAAQwT,QAAU,KAElC,OAApB5J,EAAK0K,GAAL,UACMH,GADN,OACkBU,GACf,GAAI,IACa,OAApBjL,EAAK0K,GACFK,KAAO/K,EAAK0K,IAAYU,OAAO,cAC/B,KAGR,yBAAKjW,UAAWiB,EAAQ8T,eACtB,kBAAC1S,GAAA,EAAD,CACE1C,MAAM,YACNuW,UAAW,kBAACC,GAAA,EAAD,MACXnW,UAAWiB,EAAQmV,WACnB9T,QAAS,WACP,IAAIwF,EACFoN,GACAA,EAAW8C,MAAK,SAACC,GAAD,OAAOA,EAAEtZ,KAAOkM,EAAK2K,MACvCL,EAAmB,gBAAKrN,MAR5B,mBClGVzH,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCoS,MAAO,CACLX,QAAS,GACTlR,OAAQ,IAEVwV,eAAgB,CACd7V,SAAU,WACVkR,KAAM,IAER4E,UAAW,CACT9V,SAAU,YAEZ+V,WAAY,CACVzJ,WAAY,EACZtM,SAAU,WACVC,KAAM,GACNiR,IAAK,GAEP8E,kBAAmB,CACjBhK,QAAS,OACTM,UAAW,IAEb2J,SAAU,CACR9V,MAAO,QAET+V,uBAAwB,CACtBlK,QAAS,OACTmK,WAAY,SACZpC,eAAgB,SAChBzH,UAAW,GAEb8J,cAAe,CACblJ,WAAY,UACZhO,MAAO,QACPiB,MAAO,IACPqN,OAAQ,GACR,UAAW,CACTN,WAAY,QACZhO,MAAO,UACPmX,OAAQ,sBAGZC,UAAW,CACT3J,SAAU,GACV2G,UAAW,SACXpU,MAAO,UACPkV,aAAc,OAsJHqD,OAlJf,SAAgCz5B,GAC9B,IAAMwiB,EAAUZ,KAGdiE,EAQE7lB,EARF6lB,SACA6T,EAOE15B,EAPF05B,gCACAC,EAME35B,EANF25B,yBACAlD,EAKEz2B,EALFy2B,WACA3C,EAIE9zB,EAJF8zB,yBACA8F,EAGE55B,EAHF45B,4BACAC,EAEE75B,EAFF65B,cACAC,EACE95B,EADF85B,mBAXmC,EAcRt8B,oBAAS,GAdD,mBAc/Bw5B,EAd+B,KActB2B,EAdsB,KAgBjCzG,EAAU2H,EAcd,GAZA78B,IAAMmB,WACJ,WACM0nB,IACF6T,EAAgC7T,GAChC8T,EAAyB9T,GACzBiU,EAAmBjU,MAIvB,CAACA,IAGCqM,EAAQpE,OAAS,EAAG,CAKtBoE,GACEA,EAAQ4G,MAAK,SAAU16B,EAAG26B,GACxB,OAAO,IAAIC,KAAK56B,EAAE27B,gBAAkB,IAAIf,KAAKD,EAAEgB,mBAInD,IAAMd,EAAmB9B,OAAS+B,IAAI,EAAG,UACzChH,EAAUA,EAAQ+E,KAAI,SAAC5N,GAQrB,OANE,IAAI2P,KAAK3P,EAAO0Q,gBAAkBd,GAClC,IAAID,KAAK3P,EAAO0Q,iBAAmB,IAAIf,OAEvC3P,EAAOkO,oBAAqB,GAGvBlO,KAQX,IAAM2Q,EAAkB9H,EAAQ0G,QAC9B,SAACvP,GAAD,OAAY,IAAI2P,KAAK3P,EAAO0Q,iBAAmB,IAAIf,QAE/CiB,EAAiB/H,EAAQ0G,QAC7B,SAACvP,GAAD,OAAY,IAAI2P,KAAK3P,EAAO0Q,gBAAkB,IAAIf,QAiBpD,OACE,kBAAC,IAAM/V,SAAP,KACE,kBAACoW,GAAA,EAAD,CAAO9X,UAAWiB,EAAQ0R,OACxB,wBAAI3S,UAAWiB,EAAQqV,gBACrB,kBAAC,KAAD,CAActW,UAAWiB,EAAQsV,YACjC,0BAAMvW,UAAWiB,EAAQuV,YAAzB,aAGF,yBAAKxW,UAAWiB,EAAQwV,mBACtB,yBAAKzW,UAAWiB,EAAQyV,UACtB,kBAAC,GAAD,CACExC,MAAOuE,EAAgBlM,OACvB6H,MAAM,cAGV,yBAAKpU,UAAWiB,EAAQyV,UACtB,kBAAC,GAAD,CACExC,MAAOwE,EAAenM,OACtB6H,MAAM,UACN3S,SAAUiX,EAAenM,OAAS,MAKxC,kBAAC,GAAD,CACE2I,WAAYA,EACZD,MAAOtE,EACP3K,OAAO,WACPqP,WAAW,gBACXC,cAAc,aACdF,UAAU,SACVG,UAAU,iBACVC,SAAS,WACTL,mBA/CmB,SAACtK,GAC1B0H,EAAyBS,GACzBqF,EAA4BxN,IA8CtB4K,QAASA,IAGS,IAAnB9E,EAAQpE,OACP,uBAAGvM,UAAWiB,EAAQ8V,WAAtB,cACE,KAEHpG,EAAQpE,OAAS,EAChB,yBAAKvM,UAAWiB,EAAQ0V,wBACrBlB,EAAW,kBAACpT,GAAA,EAAD,CACV1C,MAAM,YACNK,UAAWiB,EAAQ4V,cACnBvU,QAAS,WArDnB8U,GAAW,KAkDS,YAQE,kBAAC/U,GAAA,EAAD,CACZ1C,MAAM,YACNK,UAAWiB,EAAQ4V,cACnBvU,QAAS,WAzDnB8U,GAAW,KAsDW,aAUd,Q,qBC9LG,GATa,SAACuB,GAC3B,IACIC,EADOC,EAAgBja,YACGyY,QAAO,SAACyB,GAAD,OAAOA,EAAEna,KAAOga,KAAc,GACnE,OAAIC,EACKA,EAAmBj7B,MAErB,WCGM,GATK,SAACo7B,GACnB,IACIC,EADOta,EAAcA,cACG2Y,QAAO,SAAC4B,GAAD,OAAOA,EAAEta,KAAOoa,KAAY,GAC/D,OAAIC,EACKA,EAAiBr7B,MAEnB,WCNHu7B,GAAa,SAACC,GAClB,OAAgB,OAAZA,EACK,KAEWvD,KAAOwD,IAAID,EAAS,yBACrBE,SCKfhZ,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCoS,MAAO,CACLX,QAAS,GACTlR,OAAQ,IAEVwV,eAAgB,CACd7V,SAAU,WACVkR,KAAM,IAER4E,UAAW,CACT9V,SAAU,YAEZ+V,WAAY,CACVzJ,WAAY,EACZtM,SAAU,WACVC,KAAM,GACNiR,IAAK,GAEP8E,kBAAmB,CACjBhK,QAAS,OACTM,UAAW,IAEb2J,SAAU,CACR9V,MAAO,QAETkT,UAAW,CACTQ,aAAa,aAAD,OAAe/T,EAAMsN,QAAQ0G,UAAUxC,SACnDC,QAAS,mBACTvF,QAAS,OACT+H,eAAgB,iBAElB/U,QAAS,CACP0U,WAAY,KAEdW,YAAa,CACXrI,QAAS,OACT+H,eAAgB,gBAChB5T,MAAO,QAETmU,cAAe,GACf4B,uBAAwB,CACtBlK,QAAS,OACTmK,WAAY,SACZpC,eAAgB,SAChBzH,UAAW,GAEb8J,cAAe,CACblJ,WAAY,UACZhO,MAAO,QACPiB,MAAO,IACPqN,OAAQ,GACR,UAAW,CACTN,WAAY,QACZhO,MAAO,UACPmX,OAAQ,sBAGZC,UAAW,CACT3J,SAAU,GACV2G,UAAW,SACXpU,MAAO,UACPkV,aAAc,GAEhByE,aAAc,CACZxY,OAAQ,EACRiM,UAAW,OA6HAwM,OAzHf,SAAiC96B,GAC/B,IAAMwiB,EAAUZ,KAGdmZ,EAIE/6B,EAJF+6B,2BACAlV,EAGE7lB,EAHF6lB,SACAmV,EAEEh7B,EAFFg7B,aANoC,GAQlCh7B,EADF8zB,yBAG2Bt2B,oBAAS,IAVA,mBAUhCw5B,EAVgC,KAUvB2B,EAVuB,KAYlCnG,EAAYwI,EAahB,GAXAh+B,IAAMmB,WACJ,WACM0nB,GACFkV,EAA2BlV,KAK/B,CAACA,IAGC2M,EAAU1E,OAAS,EAAG,CAExB0E,GACEA,EAAUsG,MAAK,SAAU16B,EAAG26B,GAC1B,OAAO,IAAIC,KAAKD,EAAEkC,YAAc,IAAIjC,KAAK56B,EAAE68B,eAI/C,IAAMC,EAAkB/D,OAASgE,SAAS,EAAG,UAC7C3I,EAAYA,EAAUoG,QACpB,SAAC/Q,GAAD,OAAc,IAAImR,KAAKnR,EAASoT,YAAcC,KAsBlD,OACE,kBAAC7B,GAAA,EAAD,CAAO9X,UAAWiB,EAAQ0R,OACxB,kBAAC,IAAMjR,SAAP,KACE,wBAAI1B,UAAWiB,EAAQqV,gBACrB,kBAAC,KAAD,CAAatW,UAAWiB,EAAQsV,YAChC,0BAAMvW,UAAWiB,EAAQuV,YAAzB,cAGF,yBAAKxW,UAAWiB,EAAQwV,mBACtB,yBAAKzW,UAAWiB,EAAQyV,UACtB,kBAAC,GAAD,CACExC,MAAOjD,EAAU1E,OACjB6H,MAAM,uBAKXnD,GACCA,EAAUyE,KAAI,SAACpP,EAAUlH,GAEvB,OAAIqW,GAAWrW,EAAQ,EACd,KAIP,yBAAKY,UAAWiB,EAAQ6S,UAAW3H,IAAK/M,GACtC,yBAAKY,UAAWiB,EAAQ6T,aACtB,kBAAC3S,GAAA,EAAD,CAAYC,QAAQ,KAAKpC,UAAWiB,EAAQxB,SACzCoa,GAAkCvT,EAASqS,eAE9C,uBAAG3Y,UAAWiB,EAAQqY,cACnBhT,GAjDG,SAACA,GACrB,IAAMwT,EAAgBZ,GAAW5S,EAASoT,YAE1C,OADeI,EAAcC,IAAI,UAClB,EACND,EAAc7D,OAAO,sBAErB6D,EAAc7D,OAAO,cA2CD+D,CAAc1T,GAAW,UAOjD2K,EAAU1E,OAAS,EAClB,yBAAKvM,UAAWiB,EAAQ0V,wBACrBlB,EAAW,kBAACpT,GAAA,EAAD,CACV1C,MAAM,YACNK,UAAWiB,EAAQ4V,cACnBvU,QAAS,WAlDnB8U,GAAW,KA+CS,YAQE,kBAAC/U,GAAA,EAAD,CACZ1C,MAAM,YACNK,UAAWiB,EAAQ4V,cACnBvU,QAAS,WAtDnB8U,GAAW,KAmDW,aAUd,Q,qBC9LN/W,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCuT,UAAW,CACTQ,aAAa,aAAD,OAAe/T,EAAMsN,QAAQ0G,UAAUxC,SACnDC,QAAS,mBACTvF,QAAS,OACT+H,eAAgB,iBAElBP,OAAQ,CACNtU,MAAO,OAET8U,QAAS,CACP9U,MAAO,UAETF,QAAS,CACP0U,WAAY,IACZO,YAAa,SACbC,UAAW,SACXC,WAAY,SACZvH,cAAe,SACfwH,aAAc,GAEhBnV,WAAY,CACVyU,WAAY,IACZO,YAAa,SACbC,UAAW,SACXC,WAAY,SACZvH,cAAe,SACfwH,aAAc,GAEhBC,YAAa,GACbC,cAAe,OAyFFkF,GA1Ee,SAACx7B,GAC7B,IAAMwiB,EAAUZ,KAEd4U,EAQEx2B,EARFw2B,MACAE,EAOE12B,EAPF02B,mBACAC,EAME32B,EANF22B,UACAC,EAKE52B,EALF42B,WACAC,EAIE72B,EAJF62B,cACAC,EAGE92B,EAHF82B,UACAvP,EAEEvnB,EAFFunB,OACAyP,EACEh3B,EADFg3B,QAWF,OARAh6B,IAAMmB,WACJ,cAIA,CAAC64B,IAID,kBAAC,IAAM/T,SAAP,KACGuT,GACCA,EAAMS,KAAI,SAAC7K,EAAMzL,GACf,IAAMuW,EAAYC,OAASC,QAAQhL,EAAK0K,IAClCO,EAtCe,SAAC9P,EAAQ2P,GACtC,MAAe,aAAX3P,EACE2P,EACK,IAEA,IAGF,GA8BoBI,CAAuB/P,EAAQ2P,GAGpD,OAAIF,GAAWrW,EAAQ,EACd,KAIP,yBAAKY,UAAWiB,EAAQ6S,UAAW3H,IAAK/M,GACtC,yBAAKY,UAAWiB,EAAQ6T,aACtB,kBAAC3S,GAAA,EAAD,CAAYC,QAAQ,KAAKpC,UAAWiB,EAAQxB,SACzCoL,EAAKwK,IAER,kBAAClT,GAAA,EAAD,CAAYC,QAAQ,YAAYpC,UAAWiB,EAAQvB,YAChDmL,EAAKyK,IAER,yBACEtV,UAAS,8BACP2V,EAAY1U,EAAQgT,OAAS,GADtB,iCAEqB,IAA5BpJ,EAAKmL,mBAA8B/U,EAAQwT,QAAU,KAElC,OAApB5J,EAAK0K,GAAL,UACMH,GADN,OACkBU,GACf,GAAI,IACa,OAApBjL,EAAK0K,GACFK,KAAO/K,EAAK0K,IAAYU,OAAO,cAC/B,KAGR,yBAAKjW,UAAWiB,EAAQ8T,eACtB,kBAAC1S,GAAA,EAAD,CACE1C,MAAM,YACNuW,UAAW,kBAACC,GAAA,EAAD,MACXnW,UAAWiB,EAAQmV,WACnB9T,QAAS,WACP6S,EAAmB,gBAAKtK,MAL5B,mBC/FVxK,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvC8V,OAAQ,CACNrE,QAAS,GACTlR,OAAQ,IAEVwV,eAAgB,CACd7V,SAAU,WACVkR,KAAM,IAER4E,UAAW,CACT9V,SAAU,YAEZ+V,WAAY,CACVzJ,WAAY,EACZtM,SAAU,WACVC,KAAM,GACNiR,IAAK,GAEP8E,kBAAmB,CACjBhK,QAAS,OACTM,UAAW,IAEb2J,SAAU,CACR9V,MAAO,QAET+V,uBAAwB,CACtBlK,QAAS,OACTmK,WAAY,SACZpC,eAAgB,SAChBzH,UAAW,GAEb8J,cAAe,CACblJ,WAAY,UACZhO,MAAO,QACPiB,MAAO,IACPqN,OAAQ,GACR,UAAW,CACTN,WAAY,QACZhO,MAAO,UACPmX,OAAQ,sBAGZC,UAAW,CACT3J,SAAU,GACV2G,UAAW,SACXpU,MAAO,UACPkV,aAAc,OAmIHqF,OA/Hf,SAA8Bz7B,GAC5B,IAAMwiB,EAAUZ,KAEdiE,EAKE7lB,EALF6lB,SACA6V,EAIE17B,EAJF07B,yBACAC,EAGE37B,EAHF27B,WACA7H,EAEE9zB,EAFF8zB,yBACA8H,EACE57B,EADF47B,0BAPiC,EAUNp+B,oBAAS,GAVH,mBAU7Bw5B,EAV6B,KAUpB2B,EAVoB,KAY/BkD,EAAUF,EAad,GAXA3+B,IAAMmB,WACJ,WACM0nB,GACF6V,EAAyB7V,KAK7B,CAACA,IAGCgW,EAAQ/N,OAAS,EAAG,EAEtB+N,EAAUA,EAAQjD,QAAO,SAAC9O,GAAD,OAAsC,OAA1BA,EAAOgS,oBAI1CD,EAAQ/C,MAAK,SAAU16B,EAAG26B,GACxB,OAAO,IAAIC,KAAK56B,EAAE09B,gBAAkB,IAAI9C,KAAKD,EAAE+C,mBAInD,IAAM7C,EAAmB9B,OAAS+B,IAAI,EAAG,UACzC2C,EAAUA,EAAQjD,QAChB,SAAC9O,GAAD,OAAY,IAAIkP,KAAKlP,EAAOgS,gBAAkB7C,KAIlD,IAAM8C,EAAwBF,EAAQjD,QACpC,SAAC9O,GAAD,OAAY,IAAIkP,KAAKlP,EAAOgS,iBAAmB,IAAI9C,QAE/CgD,EAAoBH,EAAQjD,QAChC,SAAC9O,GAAD,OAAY,IAAIkP,KAAKlP,EAAOgS,gBAAkB,IAAI9C,QAgBpD,OACE,kBAAC,IAAM/V,SAAP,KACE,kBAACoW,GAAA,EAAD,CAAO9X,UAAWiB,EAAQoV,QACxB,kBAAC,IAAM3U,SAAP,KACE,wBAAI1B,UAAWiB,EAAQqV,gBACrB,kBAAC,KAAD,CAAgBtW,UAAWiB,EAAQsV,YACnC,0BAAMvW,UAAWiB,EAAQuV,YAAzB,mBAGF,yBAAKxW,UAAWiB,EAAQwV,mBACtB,yBAAKzW,UAAWiB,EAAQyV,UACtB,kBAAC,GAAD,CACExC,MAAOsG,EAAsBjO,OAC7B6H,MAAM,cAGV,yBAAKpU,UAAWiB,EAAQyV,UACtB,kBAAC,GAAD,CACExC,MAAOuG,EAAkBlO,OACzB6H,MAAM,UACN3S,SAAUgZ,EAAkBlO,OAAS,MAI3C,kBAAC,GAAD,CACE0I,MAAOqF,EACPjF,WAAW,cACXC,cAAe,KACfF,UAAU,OACVG,UAAU,iBACVJ,mBA3CiB,SAACtK,GAC1B0H,EAAyBS,GACzBqH,EAA0BxP,IA0ClB4K,QAAWA,IAGO,IAAnB6E,EAAQ/N,OACP,uBAAGvM,UAAWiB,EAAQ8V,WAAtB,cACE,KAEHuD,EAAQ/N,OAAS,EAChB,yBAAKvM,UAAWiB,EAAQ0V,wBACnBlB,EAAW,kBAACpT,GAAA,EAAD,CACd1C,MAAM,YACNK,UAAWiB,EAAQ4V,cACnBvU,QAAS,WAjDnB8U,GAAW,KA8Ca,YAQF,kBAAC/U,GAAA,EAAD,CACZ1C,MAAM,YACNK,UAAWiB,EAAQ4V,cACnBvU,QAAS,WAtDnB8U,GAAW,KAmDW,aAUZ,SC7KR/W,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCma,gBAAiB,CACfjO,QAAS,QAEXkO,MAAO,GACPC,UAAW,CACTha,MAAO,OAETia,UAAW,CACTja,MAAO,WA6EIka,OAzEf,SAAwBr8B,GACtB,IAAMwiB,EAAUZ,KAGdiE,EAgBE7lB,EAhBF6lB,SACA2S,EAeEx4B,EAfFw4B,wBACAlG,EAcEtyB,EAdFsyB,OACAwB,EAaE9zB,EAbF8zB,yBACA4E,EAYE14B,EAZF04B,2BACAgB,EAWE15B,EAXF05B,gCACAC,EAUE35B,EAVF25B,yBACAoB,EASE/6B,EATF+6B,2BACA7I,EAQElyB,EARFkyB,QACAM,EAOExyB,EAPFwyB,UACAoH,EAME55B,EANF45B,4BACAC,EAKE75B,EALF65B,cACA6B,EAIE17B,EAJF07B,yBACAG,EAGE77B,EAHF67B,QACAD,EAEE57B,EAFF47B,0BACA9B,EACE95B,EADF85B,mBAGF,OACE,kBAAC,IAAM7W,SAAP,KACE,yBAAK1B,UAAWiB,EAAQyZ,iBACtB,yBAAK1a,UAAWiB,EAAQ2Z,WACtB,yBAAK5a,UAAWiB,EAAQ0Z,OACtB,kBAAC,GAAD,CACErW,SAAUA,EACV2S,wBAAyBA,EACzBC,UAAWnG,EACXwB,yBAA0BA,EAC1B4E,2BAA4BA,KAGhC,yBAAKnX,UAAWiB,EAAQ0Z,OACtB,kBAAC,GAAD,CACElB,aAAcxI,EACd3M,SAAUA,EACViO,yBAA0BA,EAC1BiH,2BAA4BA,MAIlC,yBAAKxZ,UAAWiB,EAAQ4Z,WACtB,yBAAK7a,UAAWiB,EAAQ0Z,OACtB,kBAAC,GAAD,CACErW,SAAUA,EACV6T,gCAAiCA,EACjCC,yBAA0BA,EAC1BlD,WAAYvE,EACZ4B,yBAA0BA,EAC1B8F,4BAA6BA,EAC7BC,cAAeA,EACfC,mBAAsBA,KAI1B,yBAAKvY,UAAWiB,EAAQ0Z,OACtB,kBAAC,GAAD,CACErW,SAAUA,EACV6V,yBAA0BA,EAC1BC,WAAYE,EACZ/H,yBAA0BA,EAC1B8H,0BAA2BA,SClB1B9P,oBAjDf,SAAyBC,EAAOC,GAC9B,MAAO,CACLnG,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,GAC/DoS,OAAQvG,EAAMuG,OAAOC,eAAeiE,MACpCtE,QAASnG,EAAMmG,QAAQC,gBAAgBqE,MACvChE,UAAWzG,EAAMyG,UAAUC,kBAAkB+D,MAC7CqD,cAAe9N,EAAMmG,QAAQoK,sBAAsB9F,MACnDqF,QAAS9P,EAAM8P,QAAQU,gBAAgBC,cAI3C,SAA4BlQ,EAAUN,GACpC,MAAO,CACLwM,wBAAyB,SAAC3S,GACxByG,EAASjE,GAAgCxC,KAE3CiU,mBAAoB,SAACjU,GACnByG,EAAS3F,GAA2Bd,KAEtC6T,gCAAiC,SAAC7T,GAChCyG,EvBhCiD,SAACzG,GAAD,MAAe,CACpErB,KAAMC,EAAMta,oCACZ0b,YuB8Ba4W,CAAwC5W,KAEnD8T,yBAA0B,SAAC9T,GACzByG,EAAStD,GAAiCnD,KAE5CkV,2BAA4B,SAAClV,GAC3ByG,EAAS9E,GAAmC3B,KAE9CiO,yBAA0B,SAAC/N,GACzBuG,EAASxG,GAAiCC,KAE5C2S,2BAA4B,SAACjQ,GAC3B6D,EAAS5D,IAA2B,IACpC4D,EAAS1D,GAAuBH,KAElCmR,4BAA6B,SAACvQ,GAC5BiD,EAAShD,IAA4B,IACrCgD,EAAS9C,GAAwBH,KAEnCqS,yBAA0B,SAAC7V,GACzByG,EAAS5C,GAAiC7D,KAE5C+V,0BAA2B,SAACxP,GAC1BE,EAAShC,IAA8B,IACvCgC,EAASrC,GAAwBmC,QAKxBN,CAA6CuQ,ICjEtDza,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCuT,UAAW,CACT9B,QAAS,gBASEmJ,GALU,SAAC18B,GACxB,IAAMwiB,EAAUZ,KAChB,OAAO,yBAAKL,UAAWiB,EAAQ6S,WAAYr1B,EAAM3C,W,kDCJ7CukB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCuT,UAAW,CACT9B,QAASzR,EAAMQ,QAAQ,GACvBqa,YAAa7a,EAAMQ,QAAQ,GAC3B8T,aAActU,EAAMQ,QAAQ,IAE9Bsa,cAAe,CACbjO,SAAU,GACV+G,WAAY,SACZH,WAAYzT,EAAMQ,QAAQ,IAE5Bua,KAAM,CACJtH,WAAYzT,EAAMQ,QAAQ,GAC1B0L,QAAS,SAEX8O,oBAAqB,CACnBvH,WAAYzT,EAAMQ,QAAQ,IAE5Bya,oBAAqB,GAGrBpF,WAAY,CACVzW,MAAOY,EAAMsN,QAAQuE,UAAUrE,MAEjC0N,aAAc,CACZ9b,MAAOY,EAAMsN,QAAQoG,OAAOlG,UAI1B2N,GAAe,SAACj9B,GAAW,IAE7BqpB,EAKErpB,EALFqpB,OAEA6T,GAGEl9B,EAJFm9B,UAIEn9B,EAHFk9B,uBACAtD,EAEE55B,EAFF45B,4BACAwD,EACEp9B,EADFo9B,uBAEI5a,EAAUZ,KAEhB,OACE,kBAAC,IAAMqB,SAAP,KACE,kBAACoW,GAAA,EAAD,KACE,yBAAK9X,UAAWiB,EAAQ6S,WACtB,kBAACgI,GAAA,EAAD,CAAMhI,WAAS,GACb,kBAACgI,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,yBAAK/b,UAAWiB,EAAQ+a,gBACtB,kBAAC7Z,GAAA,EAAD,CAAYC,QAAQ,KAAKpC,UAAWiB,EAAQoa,eACzCvT,GAAUA,EAAOmU,iBAEpB,kBAAC9Z,GAAA,EAAD,CAAYC,QAAQ,YAAYpC,UAAWiB,EAAQqa,MAChDxT,GAAUA,EAAOoU,cAIxB,kBAACJ,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAG,QACZ,yBAAK/b,UAAWiB,EAAQua,qBACtB,kBAACnZ,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACXlW,UAAWiB,EAAQmV,WACnB9T,QAAS,kBAAMqZ,EAAsB,gBAAK7T,MAH5C,mBAOA,kBAACzF,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACXlW,UAAWiB,EAAQmV,WACnB9T,QAAS,kBAAM+V,EAA4B,gBAAKvQ,MAHlD,WAOA,kBAACzF,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACXlW,UAAWiB,EAAQwa,aACnBnZ,QAAS,kBAAMuZ,GAAuB,EAAD,gBAAY/T,MAHnD,iBAoFDqU,GApEK,SAAC19B,GAAW,IAE5B6lB,EAcE7lB,EAdF6lB,SACA8T,EAaE35B,EAbF25B,yBACAzH,EAYElyB,EAZFkyB,QACAiL,EAWEn9B,EAXFm9B,UACAQ,EAUE39B,EAVF29B,kBACAT,EASEl9B,EATFk9B,sBACAtD,EAQE55B,EARF45B,4BACAwD,EAOEp9B,EAPFo9B,uBACAQ,EAME59B,EANF49B,iBACAC,EAKE79B,EALF69B,kBACA9b,EAIE/hB,EAJF+hB,aACA+b,EAGE99B,EAHF89B,iBACAC,EAEE/9B,EAFF+9B,0BACAC,EACEh+B,EADFg+B,aAGFhhC,IAAMmB,WACJ,WACM0nB,GACF8T,EAAyB9T,GAED,IAAtBmY,EAAaC,MACfN,EAAkB9X,KAItB,CAACA,IAOH,OACE,kBAAC,IAAM5C,SAAP,MACwB,IAArB2a,EACC,kBAAC,GAAD,CACEnb,KAAMmb,EACNhhC,MAAK,iBAAYihC,EAAkBL,iBACnC5a,YAAW,uEAAkEib,EAAkBL,gBAApF,KACX3a,iBAAiB,SACjBC,iBAAiB,SACjBH,YAAa,kBAAMya,GAAuB,EAAOS,IACjDnb,aAdoB,SAACwb,GAC3BH,EAA0BF,IAcpB9a,gBAAiB+a,IAAoB,EACrC/b,aAAcA,GAAgB,GAC9BiB,UAAU,IAEV,KACHkP,GACCA,EAAQ+E,KAAI,SAAC5N,GACX,OACE,kBAAC,GAAD,CACEA,OAAQA,EACRqE,IAAKrE,EAAOnJ,GACZid,UAAWA,EACXD,sBAAuBA,EACvBtD,4BAA6BA,EAC7BwD,uBAAwBA,SCpGvBtR,oBAtCf,SAAyBC,EAAOC,GAC9B,MAAO,CACLnG,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,GAC/DgS,QAASnG,EAAMmG,QAAQC,gBAAgBqE,MACvC2G,UAAWpR,EAAMoS,SAASC,aAAa5H,MACvCoH,iBAAkB7R,EAAMmG,QAAQmM,aAAana,WAC7C2Z,kBAAmB9R,EAAMmG,QAAQmM,aAAahV,OAC9CtH,aAAcgK,EAAMmG,QAAQmM,aAAatc,aACzC+b,iBAAkB/R,EAAMmG,QAAQmM,aAAaha,SAC7C2Z,aAAcjS,EAAME,MAAMtuB,KAAKyuB,SAInC,SAA4BE,EAAUN,GACpC,MAAO,CACL2N,yBAA0B,SAAC9T,GACzByG,EAAStD,GAAiCnD,KAE5C8X,kBAAmB,SAAC9X,GAClByG,EAASlB,GAA0BC,GAA+BxF,KAEpEqX,sBAAuB,SAAC7T,GACtBiD,EAAS/C,IAA6B,IACtC+C,EAAS9C,GAAwBH,KAEnCuQ,4BAA6B,SAACvQ,GAC5BiD,EAAShD,IAA4B,IACrCgD,EAAS9C,GAAwBH,KAEnC+T,uBAAwB,SAAC3a,EAAM4G,GAC7BiD,E1BewC,SAAC7J,EAAM4G,GAAP,MAAmB,CAC/D7E,KAAMC,EAAM3Y,0BACZ2W,OACA4G,U0BlBaiV,CAA+B7b,EAAM4G,KAEhD0U,0BAA2B,SAAC1U,GAC1BiD,E1BkB2C,SAACjD,GAAD,MAAa,CAC5D7E,KAAMC,EAAM1Y,cACZsd,U0BpBakV,CAAkClV,QAKlCyC,CAA6C4R,I,8BC9CtD9b,GAAYC,cAAW,SAACC,GAC5B,MAAO,CACLmM,KAAM,CACJD,QAAS,OACTmK,WAAY,SACZqG,aAAc,GACdhP,OAAQ,GACRN,WAAY,OACZmJ,OAAQ,YACRoG,YAAa,UAEfC,MAAO,CACLrc,OAAQP,EAAMQ,QAAQ,GACtBqc,KAAM,OAKG,SAASC,GAAU5+B,GAChC,IAAMwiB,EAAUZ,KACRid,EAA4D7+B,EAA5D6+B,OAAQC,EAAoD9+B,EAApD8+B,uBAAwBtY,EAA4BxmB,EAA5BwmB,WAAYuY,EAAgB/+B,EAAhB++B,YAMpD,OACE,kBAAC1F,GAAA,EAAD,CAAO9X,UAAWiB,EAAQyL,KAAM+Q,UAAW,GACzC,kBAACxR,GAAA,EAAD,CAAYjM,UAAWiB,EAAQyc,WAAYxR,aAAW,UACpD,kBAAC,KAAD,OAEF,kBAACyR,GAAA,EAAD,CACEhf,GAAI2e,EACJtd,UAAWiB,EAAQkc,MACnBK,YAAaA,EACbI,WAAY,CAAE,aAAc,gBAC5BC,SAde,SAAClB,GACpBY,EAAuBZ,EAAEmB,OAAOngC,QAc5BA,MAAOsnB,KCtCf,IAAM5E,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCwd,UAAW,CACThR,UAAWxM,EAAMQ,QAAQ,GACzB8T,aAActU,EAAMQ,QAAQ,QAyCjBid,GArCkB,SAACv/B,GAAW,IAEzCw/B,EAMEx/B,EANFw/B,iBACAhZ,EAKExmB,EALFwmB,WACAsY,EAIE9+B,EAJF8+B,uBACAW,EAGEz/B,EAHFy/B,WACAC,EAEE1/B,EAFF0/B,kBACAC,EACE3/B,EADF2/B,WAEInd,EAAUZ,KAEhB,OACE,yBAAKL,UAAWiB,EAAQ8c,WACtB,kBAACjC,GAAA,EAAD,CAAMhI,WAAS,EAAC/S,QAAS,GACvB,kBAAC+a,GAAA,EAAD,CAAMC,GAAI,EAAGlR,MAAI,GACf,kBAACxI,GAAA,EAAD,CACE1C,MAAM,UACNyC,QAAQ,YACRic,SAAUD,EACV9b,QAAS,kBAAM2b,GAAiB,KAE/BC,IAGL,kBAACpC,GAAA,EAAD,CAAMC,GAAI,GAAIlR,MAAI,GAChB,kBAACwS,GAAD,CACErd,UAAWiB,EAAQqd,UACnBf,uBAAwBA,EACxBtY,WAAYA,EACZuY,YAAaW,Q,wCCjCnBI,GAASje,cAAW,SAACC,GACzB,MAAO,CACLie,YAAa,CACXC,SAAU,SAkEDC,GAxDO,SAACjgC,GACrB,IAAMwiB,EAAUsd,KAEdI,EAWElgC,EAXFkgC,aACAvK,EAUE31B,EAVF21B,MACAa,EASEx2B,EATFw2B,MACAt3B,EAQEc,EARFd,MAN6B,EAc3Bc,EAPFmgC,qBAP6B,MAOb,QAPa,EAQ7BtB,EAME7+B,EANF6+B,OACAe,EAKE5/B,EALF4/B,SACAQ,EAIEpgC,EAJFogC,UACAC,EAGErgC,EAHFqgC,WACAC,EAEEtgC,EAFFsgC,aAZ6B,EAc3BtgC,EADFugC,gBAb6B,SAgB/B,OACE,kBAAC,IAAMtd,SAAP,KACE,kBAACud,GAAA,EAAD,CACEjf,UAAWiB,EAAQud,YACnBhc,MAAO,CAAE5B,MAAOge,GAChBxc,QAAQ,WACRzD,GAAI2e,EACJ0B,SAAUA,GAEV,kBAACE,GAAA,EAAD,CAAYvgB,GAAG,6BAA6BwgB,QAAQ,GACjD/K,GAEH,kBAACgL,GAAA,EAAD,CACEzgB,GAAI2e,EACJ3/B,MAAOA,EACPkgC,SAAUc,EACV3e,UAAWiB,EAAQoe,OACnBhB,SAAUA,EACVQ,UAAWA,GAEV5J,GACCA,EAAMS,KAAI,SAAC7K,GACT,OACE,kBAACoF,GAAA,EAAD,CACE9D,IAAKtB,EAAKlM,GACVhhB,MAAOktB,EAAKiU,GACZngB,GAAE,gBAAWkM,EAAKltB,QAEjB2hC,MAAMC,QAAQR,GAAd,UACMlU,EAAKkU,EAAa,IADxB,YAC+BlU,EAAKkU,EAAa,KAC9ClU,EAAKkU,W,IC3DZze,cAAW,SAACC,GACzB,MAAO,CACLie,YAAa,CACXC,SAAU,S,6ECKVpe,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCuT,UAAW,CACT9B,QAASzR,EAAMQ,QAAQ,GACvBqa,YAAa7a,EAAMQ,QAAQ,GAC3B8T,aAActU,EAAMQ,QAAQ,IAE9B2L,KAAM,CACJ9L,MAAO,OACP6B,gBAAiBlC,EAAMsN,QAAQF,WAAWgF,OAE5C8I,aAAc,CACZ9b,MAAOY,EAAMsN,QAAQoG,OAAOlG,UAyFjByR,GArFM,SAAC/gC,GAAW,IAE7Bm9B,EAMEn9B,EANFm9B,UACA6D,EAKEhhC,EALFghC,kBACAC,EAIEjhC,EAJFihC,oBACAza,EAGExmB,EAHFwmB,WACA0a,EAEElhC,EAFFkhC,WACAC,EACEnhC,EADFmhC,kBAGI3e,EAAUZ,KAEVwf,EAAgB5a,GAA6B,KAAfA,EAAoB,CAACA,GAAc,GAEjE6a,EAAUlE,EAAUvE,QAAO,SAAC0I,GAAD,OAAsB,IAAfA,EAAEC,YACpCC,EAAiBrE,EAAUvE,QAAO,SAAC0I,GAAD,OAAsB,IAAfA,EAAEC,YAEjD,OACE,kBAAC,IAAMte,SAAP,KACE,yBAAK1B,UAAWiB,EAAQyL,MACtB,kBAACmG,GAAA,EAAD,CAAM10B,UAAU,MAAM+tB,aAAW,UAC9B4T,GACCA,EAAQpK,KAAI,SAACwK,GACX,OACE,kBAACpN,GAAA,EAAD,CACEC,QAAM,EACN5G,IAAK+T,EACL5d,QAAS,kBAAMmd,EAAkBS,KAEjC,kBAACjN,GAAA,EAAD,KACE,kBAAC,KAAD,OAEF,kBAACE,GAAA,EAAD,CAAcC,QAAS8M,EAAOC,kBAKxC,kBAACvM,GAAA,EAAD,MACA,kBAACf,GAAA,EAAD,CAAM10B,UAAU,MAAM+tB,aAAW,aAC9B+T,GACCA,EAAevK,KAAI,SAACt6B,GAClB,OAGJ,kBAAC0gC,GAAA,EAAD,CAAMhI,WAAS,GACb,kBAACgI,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACf,kBAACjJ,GAAA,EAAD,CACMC,QAAM,EACN5G,IAAK/wB,EACLknB,QAAS,kBAAMod,EAAoBtkC,KAEnC,kBAAC63B,GAAA,EAAD,KACE,kBAAC,KAAD,OAEF,kBAACE,GAAA,EAAD,KACE,kBAAC,KAAD,CACEiN,mBAAmB,qBACnBC,YAAaR,EACbS,gBAAiBllC,EAASmlC,kBAM7BZ,GAAe,kBAAC7D,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACjC,kBAAC1Z,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACXlW,UAAWiB,EAAQwa,aACnBnZ,QAAS,kBAAMsd,EAAkBxkC,KAHnC,mBC/EVilB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCigB,OAAQ,GACRC,YAAa,CACX9S,WAAY,WAEd+S,cAAe,CACb9f,MAAO,IACPoT,WAAYzT,EAAMQ,QAAQ,GAC1B4f,cAAepgB,EAAMQ,QAAQ,IAE/BJ,aAAc,CACZC,MAAO,IACPC,MAAO,QACPC,OAAQP,EAAMQ,QAAQ,IAExB6f,OAAQ,CACNjT,WAAY,WAEdkT,YAAa,CACXpU,QAAS,eACTM,UAAW,GAEb+T,0BAA2B,CACzB9O,QAASzR,EAAMQ,QAAQ,IAEzBggB,UAAW,CACT9T,YAAa,IAEf+T,WAAY,CACV7M,WAAY,KAEd8M,iBAAkB,CAChBlU,UAAW,OA8GAmU,GA1Gc,SAACziC,GAC5B,IAAMwiB,EAAUZ,KACRa,EAA6DziB,EAA7DyiB,KAAM0a,EAAuDn9B,EAAvDm9B,UAAW8D,EAA4CjhC,EAA5CihC,oBAAqByB,EAAuB1iC,EAAvB0iC,mBAFR,EAIGllC,mBACvC2/B,EAAUvE,QAAO,SAAC0I,GAAD,OAAsB,IAAfA,EAAEC,aALU,mBAI/BoB,EAJ+B,KAIbC,EAJa,OAQHplC,mBAAS,IARN,mBAQ/BgpB,EAR+B,KAQnBqc,EARmB,KAqCtC,OACE,kBAAC,IAAM5f,SAAP,KACE,kBAAC,GAAD,CACER,KAAMA,EACNS,QAASwf,EACTvf,kBAAgB,qBAChBC,mBAAiB,2BACjB7B,UAAWiB,EAAQuf,QAEnB,kBAACze,GAAA,EAAD,CAAapD,GAAG,qBAAqBqB,UAAWiB,EAAQwf,aAAxD,aAGA,kBAACze,GAAA,EAAD,CAAehC,UAAWiB,EAAQyf,eAmB9B,yBAAK1gB,UAAWiB,EAAQsgB,qBAOzBH,GACC,6BACE,kBAAC/D,GAAD,CACErd,UAAWiB,EAAQqd,UACnBf,uBA7DkB,SAACiE,GAE/B,GADAF,EAAaE,GACM,KAAfA,EACFH,EAAazF,EAAUvE,QAAO,SAAC0I,GAAD,OAAsB,IAAfA,EAAEC,iBAClC,CACL,IAAIyB,EAAS7F,EAAUvE,QAAO,SAACY,GAAD,OAC5BA,EAAEsI,aAAamB,cAAczkC,SAASukC,EAAWE,kBAOnDL,EAAaI,EAAOpK,QAAO,SAAC0I,GAAD,OAAsB,IAAfA,EAAEC,eAiD1BxC,YAAY,qBAEd,kBAAC,GAAD,CACEvY,WAAYA,EACZ2W,UAAWwF,EACX3B,kBA3EY,SAACS,KA4EbR,oBAAqBA,MAK7B,kBAACxd,GAAA,EAAD,CAAelC,UAAWiB,EAAQ2f,QAChC,kBAACve,GAAA,EAAD,CACErC,UAAWiB,EAAQN,aACnBhB,MAAM,UACNyC,QAAQ,WACRE,QAAS6e,GAJX,aC1HJ9gB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCigB,OAAQ,GACRC,YAAa,CACX9S,WAAY,WAEd+S,cAAe,CACb9f,MAAO,IACPoT,WAAYzT,EAAMQ,QAAQ,GAC1B4f,cAAepgB,EAAMQ,QAAQ,IAE/BJ,aAAc,CACZC,MAAO,IACPC,MAAO,QACPC,OAAQP,EAAMQ,QAAQ,IAExB6f,OAAQ,CACNjT,WAAY,WAEdkT,YAAa,CACXpU,QAAS,eACTM,UAAW,GAEb+T,0BAA2B,CACzB9O,QAASzR,EAAMQ,QAAQ,IAEzBggB,UAAW,CACT9T,YAAa,IAEf+T,WAAY,CACV7M,WAAY,KAEd8M,iBAAkB,CAChBlU,UAAW,GAEb4U,SAAU,CACR/gB,MAAO,SAoOIghB,GAhOY,SAACnjC,GAC1B,IAAMwiB,EAAUZ,KAEda,EAkBEziB,EAlBFyiB,KACA0a,EAiBEn9B,EAjBFm9B,UACAiG,EAgBEpjC,EAhBFojC,uBACA/Z,EAeErpB,EAfFqpB,OACAga,EAcErjC,EAdFqjC,yBACAC,EAaEtjC,EAbFsjC,iBACAC,EAYEvjC,EAZFujC,iBACAC,EAWExjC,EAXFwjC,kBACAC,EAUEzjC,EAVFyjC,cAEAC,GAQE1jC,EATF2jC,QASE3jC,EARF0jC,wBACA7R,EAOE7xB,EAPF6xB,UACA8L,EAME39B,EANF29B,kBACAiG,EAKE5jC,EALF4jC,4BACAC,EAIE7jC,EAJF6jC,YACAC,EAGE9jC,EAHF8jC,aACAje,EAEE7lB,EAFF6lB,SAnBkC,EA0BF7oB,IAAMQ,SAAS,GA1Bb,mBA0B7BumC,EA1B6B,KA0BlBC,EA1BkB,OA4BAhnC,IAAMQ,UAAS,GA5Bf,mBA4B7BymC,EA5B6B,KA4BjBC,EA5BiB,KAgClClnC,IAAMmB,WACN,WASE,OAPY,IAATskB,GAA+B,IAAdshB,EAClBpG,EAAkB9X,IAEH,IAATpD,GAA+B,IAAdshB,GACvBH,EAA4B/d,GAGvB,WACLme,EAAa,MAIjB,CAACvhB,IAGH,IAMM0hB,EAAgB,WACpBd,GAAyB,GACzBQ,KAkDIO,EAAcd,IAAqBC,EAEzC,OACE,kBAAC,IAAMtgB,SAAP,KAEHghB,GACO,kBAAC,GAAD,CACExhB,KAAMwhB,EACN9G,UAAWiG,EACXV,mBAnEmB,WAEzBwB,GAAc,IAkERjD,oBAzC8B,SAACtkC,GAGrCunC,GAAc,GACd,IAAMrY,EACNlvB,EAAS0nC,SACZX,EAAuB7X,GACvBsY,OAsCK,kBAAC,GAAD,CACE9mC,UAAQ,EACRolB,KAAMA,EACNS,QAASihB,EACThhB,kBAAgB,qBAChBC,mBAAiB,2BACjB7B,UAAWiB,EAAQ8hB,aAEnB,kBAAChhB,GAAA,EAAD,CAAapD,GAAG,qBAAqBqB,UAAWiB,EAAQwf,aAAxD,aAGA,kBAAC1e,GAAA,EAAD,CAAapD,GAAG,qBAAqBqB,UAAWiB,EAAQwf,aAErD8B,GAAiB,kBAAC,GAAD,CACZjF,OAAO,mBACPlJ,MAAM,mBACNtT,OAAO,SAEP6d,aA5Ce,SAAChC,GAE5B8F,EAAa9F,EAAEmB,OAAOngC,OAEC,IAAnBg/B,EAAEmB,OAAOngC,MACXy+B,EAAkB9X,GAEQ,IAAnBqY,EAAEmB,OAAOngC,OACjB0kC,EAA4B/d,IAsCjB2Q,MAtHA,CAAC,CAACtW,GAAG,EAAGhhB,MAAO,2BAA4BiyB,KAAM,aAAc,CAACjR,GAAG,EAAGhhB,MAAM,0BAA2BiyB,KAAK,qBAuH5GjyB,MAAO6kC,EACP5D,cAAc,OACd5e,UAAW,WACX8e,WAAW,KACXC,aAAa,QACbC,UAAU,KAMlB,kBAACjd,GAAA,EAAD,CAAapD,GAAG,qBAAqBqB,UAAWiB,EAAQwf,aACvD8B,GAAgB3G,GAAaA,EAAUrP,OAAS,GAC3C,kBAAClK,GAAA,EAAD,CACE1C,MAAM,UACNyC,QAAQ,YACRE,QAAS,kBAAMqgB,GAAc,KAH/B,qBASN,kBAAC3gB,GAAA,EAAD,CAAehC,UAAWiB,EAAQyf,eAC/BpQ,EAAY,kBAACxO,GAAA,EAAD,MAAqB,GAEjC+gB,EACC,yBAAK7iB,UAAWiB,EAAQsgB,oBACtB,kBAACtV,GAAA,EAAD,CACEtM,MAAM,UACN2C,QArFkB,WAC9B4f,KAqFYvjB,GAAG,kBACHqB,UAAWiB,EAAQ8f,WAEnB,kBAACiC,GAAA,EAAD,CAAerjB,MAAM,aAEvB,kBAACwC,GAAA,EAAD,CAAYnC,UAAWiB,EAAQ4f,aAC5B,IACAkB,IAIL,yBAAK/hB,UAAWiB,EAAQsgB,oBACtB,kBAACpf,GAAA,EAAD,CAAYnC,UAAWiB,EAAQ4f,aAC5B,IACAkB,IAINnG,GACC,kBAAC,GAAD,CACEA,UAAWA,EACX6D,kBArIc,SAACS,GACzB+B,EAAkB/B,EAAOK,eAqIfb,oBAlIgB,SAACtkC,GAE3B,IAAMkvB,EACHlvB,EAAS0nC,SACZX,EAAuB7X,GAEvBsY,QAgII,kBAAC1gB,GAAA,EAAD,CAAelC,UAAWiB,EAAQ2f,QACZ,MAAnB9Y,EAAO1sB,UACN,kBAACinB,GAAA,EAAD,CACErC,UAAWiB,EAAQN,aACnBhB,MAAM,UACNyC,QAAQ,WACRE,QAlHsB,WAChC6f,EAAuB,MACvBS,MA4GQ,UASF,kBAACvgB,GAAA,EAAD,CACErC,UAAWiB,EAAQN,aACnBhB,MAAM,UACNyC,QAAQ,WACRE,QAASsgB,GAJX,aC5NKrY,oBAvCf,SAAyBC,EAAOC,GAC9B,MAAO,CACLvJ,KAAMsJ,EAAMoS,SAASqG,uBACrBrH,UAAWpR,EAAMoS,SAASC,aAAa5H,MACvC4M,uBAAwBrX,EAAMoS,SAASC,aAAa5B,UACpDnT,OAAQ0C,EAAM1C,OAAO2I,UAAU5F,KAC/BkX,iBAAkBvX,EAAMoS,SAASmF,iBACjCC,iBAAkBxX,EAAMoS,SAASoF,iBACjC1R,UAAW9F,EAAMoS,SAASC,aAAavM,UACvChM,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,OAInE,SAA4BoM,EAAUN,GACpC,MAAO,CACLqX,yBAA0B,SAAC5gB,GACzB6J,EAASf,GAA+B9I,KAE1CkhB,QAAS,WACPrX,EAASX,OAEXkY,YAAY,WACVvX,EhCJ4C,CAChD9H,KAAMC,EAAMzO,wBgCKVytB,cAAe,WACbnX,EAASZ,OAEX8X,kBAAmB,SAAC/X,GAClBa,EAASd,GAA6BC,KAExCkS,kBAAmB,SAAC9X,GAClByG,EAASlB,GAA0BC,GAA+BxF,KAEpE+d,4BAA6B,SAAC/d,GAC5ByG,EAAShB,GAAmCzF,QAKnCiG,CAA6CqX,ICzC7CsB,GAAqB,SAACC,EAAkB/nC,GACnD,GAAwB,OAArB+nC,GAAyD,qBAArBA,GAAyD,KAArBA,EAAyB,OAAO/nC,EAC3G,IAAIgoC,EAAwBD,EAAiBE,MAAM,KAEnD,OADAD,EAAoBE,KAAKloC,GAClBgoC,EAAoBnjB,KAAK,MAGvBsjB,GAA0B,SAACJ,EAAkB/nC,GACtD,OAAwB,OAArB+nC,GAAyD,qBAArBA,GAAyD,KAArBA,EAAgC,GAC/EA,EAAiBE,MAAM,KACfhM,QAAO,SAAA0I,GAAC,OAAGA,IAAM3kC,KACrC6kB,KAAK,MCHnBI,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCmM,KAAM,CACJD,QAAS,OACT+H,eAAgB,OAChBgP,SAAU,OACVC,UAAW,OACXzR,QAASzR,EAAMQ,QAAQ,IACvBD,OAAQ,GAEV4iB,KAAM,CACJ5iB,OAAQP,EAAMQ,QAAQ,SA4DX4iB,GAxDa,SAACllC,GAC3B,IAAMwiB,EAAUZ,KACTujB,EAAsDnlC,EAAtDmlC,uBAAwBC,EAA8BplC,EAA9BolC,iBAAkBC,EAAYrlC,EAAZqlC,QAEjDroC,IAAMmB,WACJ,cAIA,CAACgnC,IAGH,IAIMG,EDhD0B,SAAC3oC,GAC/B,OAAgB,OAAbA,GAAyC,qBAAbA,GAAyC,KAAbA,EAAwB,GAC5EA,EAASioC,MAAM,KC8CAW,CAAmBJ,GAE3C,GAAKG,IAAmBA,EAAgBxX,OAGxC,OACE,kBAAC,IAAM7K,SAAP,KACI,kBAACmR,GAAA,EAAD,CAAM10B,UAAU,MAAM+tB,aAAW,aAE7B6X,EAAgBrO,KAAI,SAACt6B,GACnB,OACJ,kBAAC0gC,GAAA,EAAD,CAAMhI,WAAS,GACb,kBAACgI,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IACV+H,EAAU,uBACP9jB,UAAWiB,EAAQqJ,aACnB2Z,MDvCa1D,ECuCUnlC,GDtCnB,OAAjBmlC,GAAiD,qBAAjBA,GAAgCA,EAAa2D,WAAW,UAChF,sDAGA,kDCkCwC9oC,GACnC0iC,OAAO,SACPqG,IAAI,uBAEH/oC,GACK,CAACA,aAGR0oC,GAAY,kBAAChI,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAC9B,kBAAC1Z,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACXlW,UAAWiB,EAAQwa,aACnBnZ,QAAS,WA9BvBuhB,EA8BwCzoC,KAH5B,YDhDgB,IAACmlC,QEH3BlgB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCigB,OAAQ,GACRC,YAAa,CACX9S,WAAY,WAEd+S,cAAe,CACb9f,MAAO,IACPoT,WAAYzT,EAAMQ,QAAQ,GAC1B4f,cAAepgB,EAAMQ,QAAQ,IAE/BJ,aAAc,CACZC,MAAO,IACPC,MAAO,QACPC,OAAQP,EAAMQ,QAAQ,IAExBqjB,eAAgB,CACdxjB,MAAO,QAETggB,OAAQ,CACNjT,WAAY,WAEd0W,OAAQ,CACNvjB,OAAQ,EACRkR,QAAS,GAEX1H,aAAc,CACZmC,QAAS,QACTM,UAAWxM,EAAMQ,QAAQ,GACzB8T,aAActU,EAAMQ,QAAQ,IAE9BujB,aAAc,CACZvX,UAAW,YAoOAwX,GAhOgB,SAAC9lC,GAAW,IAEvCkkB,EAYElkB,EAZFkkB,WACAG,EAWErkB,EAXFqkB,SACA6E,EAUElpB,EAVFkpB,oBACA6c,EASE/lC,EATF+lC,uBACArjB,EAQE1iB,EARF0iB,aACA9lB,EAOEoD,EAPFpD,MACAysB,EAMErpB,EANFqpB,OACA8T,EAKEn9B,EALFm9B,UACA6I,EAIEhmC,EAJFgmC,iBAVsC,EAcpChmC,EAHF6iB,wBAXsC,MAWnB,MAXmB,EAYtC2hB,EAEExkC,EAFFwkC,uBACAyB,EACEjmC,EADFimC,mBAEIzjB,EAAUZ,KAMVuiB,GAFgBhH,EAAUvE,QAAO,SAAC0I,GAAD,OAAsB,IAAfA,EAAEC,YAE1B,WACpBwE,GAAuB,KAOnBG,EAAoB,SAAChI,EAAG/U,GAK1BD,EAHAC,IAAmBgd,EAAgB5oB,gBACnC4L,IAAmBgd,EAAgB3oB,gBAEf0gB,EAEAA,EAAEmB,OAAOngC,MAFNiqB,IAcrBid,EAAuB,SAACC,GAAsB,IAC3C1pC,EAAY0sB,EAAZ1sB,SACD2pC,EAAkBxB,GAAwBnoC,EAAU0pC,GAC1DJ,EAAmBK,IAGrB,OACE,kBAAC,IAAMrjB,SAAP,KACG,kBAAC,GAAD,CAAoBygB,uBAdM,SAAC7X,GAAkB,IACzClvB,EAAY0sB,EAAZ1sB,SACD2pC,EAAkB7B,GAAmB9nC,EAAUkvB,GACrDoa,EAAmBK,IAWoDxC,cAAc,IACnF,kBAAC,GAAD,CACErhB,KAAMyB,EACNhB,QAASihB,EACThhB,kBAAgB,qBAChBC,mBAAiB,2BACjB7B,UAAWiB,EAAQuf,QAElB1d,EAAW,kBAAChB,GAAA,EAAD,MAAqB,GACjC,kBAACC,GAAA,EAAD,CAAapD,GAAG,qBAAqBqB,UAAWiB,EAAQwf,aACrDplC,GAEH,0BAAM2pC,SAAU7jB,GACd,kBAACa,GAAA,EAAD,CAAehC,UAAWiB,EAAQyf,eAChC,kBAAC5E,GAAA,EAAD,CAAMhI,WAAS,EAAC9T,UAAWiB,EAAQgkB,cAAelkB,QAAS,GACzD,kBAAC+a,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACEvmB,GAAG,kBACHyV,MAAM,mBACNyK,WAAS,EACTzc,QAAQ,WACRyb,SAAU,SAAClB,GAAD,OACRgI,EAAkBhI,EAAGiI,EAAgBrnB,mBAEvC5f,MAAOmqB,EAAOmU,gBACd+C,UAAU,KAGd,kBAAClD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACEvmB,GAAG,mBACHyV,MAAM,oBACNyK,WAAS,EACTzc,QAAQ,WACRyb,SAAU,SAAClB,GAAD,OACRgI,EAAkBhI,EAAGiI,EAAgBnnB,oBAEvC9f,MAAOmqB,EAAOqd,oBAIlB,kBAACrJ,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACEvmB,GAAG,aACHyV,MAAM,sBACNyK,WAAS,EACTzc,QAAQ,WACRwb,WAAY,CAAEwH,IAAK,GACnBniB,KAAK,SACL4a,SAAU,SAAClB,GAAD,OACRgI,EAAkBhI,EAAGiI,EAAgB/mB,cAEvClgB,MAAOmqB,EAAOud,cAGlB,kBAACvJ,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACEvmB,GAAG,YACHyV,MAAM,wBACNyK,WAAS,EACTzc,QAAQ,WACRwb,WAAY,CAAEwH,IAAK,GACnBniB,KAAK,SACL4a,SAAU,SAAClB,GAAD,OACRgI,EAAkBhI,EAAGiI,EAAgB7mB,uBAEvCpgB,MAAOmqB,EAAOwd,WAAa,MAG/B,kBAACxJ,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAEb,kBAAC,GAAD,CACEuB,OAAO,iBACPlJ,MAAM,oBACNtT,OAAO,SACPnjB,MAAOmqB,EAAOyd,iBACd5G,aAAc,SAAChC,GAAD,OACZgI,EAAkBhI,EAAGiI,EAAgB5mB,kBAEvCiX,MAAOjW,GAAiBA,iBACxB4f,cAAc,OACd5e,UAAWiB,EAAQ0gB,SACnB7C,WAAW,KACXC,aAAa,WAGjB,kBAACjD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQukB,kBACrC,kBAACN,GAAA,EAAD,CACEvmB,GAAG,SACHyV,MAAM,QACNqR,WAAS,EACTC,KAAM,EACN7G,WAAS,EACTzc,QAAQ,WACRyb,SAAU,SAAClB,GAAD,OAAOgI,EAAkBhI,EAAGiI,EAAgB1mB,eACtDvgB,MAAOmqB,EAAO6d,SAGhBlB,EACC,kBAAC3I,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACEjiB,KAAK,OACLua,YAAY,kBACZoI,aAAc9d,EAAO1sB,SACrBgnB,QAAQ,WACRwb,WAAY,CAAEiI,UAAU,GACxBhH,WAAS,EACTlhC,MAAOmqB,EAAO1sB,WAEpB,kBAAC,GAAD,CAAqBwoC,uBAA0B9b,EAAO1sB,SAAUyoC,iBAAoBgB,EAAsBf,QAASW,KAajH,kBAAC,GAAD,CAAqBb,uBAA0B9b,EAAO1sB,SAAUyoC,iBAAoBgB,EAAsBf,QAASW,IAEpHA,GACC,kBAAC3I,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAAC1Z,GAAA,EAAD,CACE1C,MAAM,UACNyC,QAAQ,YACRpC,WAAYiB,EAAQmjB,eAAgBnjB,EAAQqjB,cAC5C3lB,GAAG,mBACH2D,QAlKe,WAC/B2gB,GAAuB,KAmKN,aAMX,kBAAC/gB,GAAA,EAAD,CAAelC,UAAWiB,EAAQ2f,QAChC,kBAACve,GAAA,EAAD,CACEC,QAASsgB,EACTjjB,MAAM,UACNyC,QAAQ,WACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,gBALL,UASA,kBAAC0D,GAAA,EAAD,CACEY,KAAK,SACLtD,MAAM,UACNyC,QAAQ,YACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,kBAGF2C,QClOAwkB,GAzCY,SAACrnC,GAAW,IAEnCkkB,EAWElkB,EAXFkkB,WACAmF,EAUErpB,EAVFqpB,OACA8T,EASEn9B,EATFm9B,UACA9Y,EAQErkB,EARFqkB,SACAwB,EAOE7lB,EAPF6lB,SACAkgB,EAME/lC,EANF+lC,uBACA7c,EAKElpB,EALFkpB,oBACAoe,EAIEtnC,EAJFsnC,aAEA9C,GAEExkC,EAHFg+B,aAGEh+B,EAFFwkC,wBACAyB,EACEjmC,EADFimC,mBASF,OACE,kBAAC,IAAMhjB,SAAP,KACE,kBAAC,GAAD,CACEiB,WAAYA,EACZG,SAAUA,EACV6E,oBAAqBA,EACrB6c,uBAAwBA,EACxBrjB,aAbe,SAACwb,GACpBA,EAAEqJ,iBACFle,EAAOxD,SAAWA,EAClByhB,EAAaje,IAWTzsB,MAAM,sBACNysB,OAAQA,EACR8T,UAAWA,EACX6I,kBAAkB,EAClBnjB,iBAAiB,OACjB2hB,uBAAwBA,EACxByB,mBAAoBA,MCMbna,oBAhCf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAM1C,OAAO2I,UAAUwV,uBACnCne,OAAQ0C,EAAM1C,OAAO2I,UAAU5F,KAC/B+Q,UAAWpR,EAAMoS,SAASC,aAAa5B,UACvCnY,SAAU0H,EAAM1C,OAAO2I,UAAU3N,SACjCwB,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,GAC/D8d,aAAcjS,EAAME,MAAMtuB,KAAKyuB,SAInC,SAA4BE,EAAUN,GACpC,MAAO,CACL+Z,uBAAwB,SAACtjB,GACvB6J,EAASrD,GAA+BxG,KAE1CyG,oBAAqB,SAAChqB,EAAOiqB,GAC3BmD,EAASpD,GAAoBhqB,EAAOiqB,KAEtCme,aAAc,SAACje,GAEbiD,EAASlD,GAAqBC,EADjBoe,KAGfjD,uBAAwB,SAAC/hB,GACvB6J,EAASf,GAA+B9I,KAE1CwjB,mBAAoB,SAACpa,GACnBS,EAASV,GAAoCC,QAKpCC,CAA6Cub,I,sHCpCtDvH,GAASje,cAAW,SAACC,GACzB,MAAO,CACL4lB,oBAAqB,GAGrBzZ,KAAM,CACJ/M,MAAOY,EAAMsN,QAAQuF,QAAQrF,KAC7B8G,aAActU,EAAMQ,QAAQ,IAE9Boc,MAAO,CACLsB,SAAU,IACV7d,MAAO,OACPqc,aAAc,EAEd,UAAW,CACThQ,WAAY,GACZ4H,aAActU,EAAMQ,QAAQ,IAE9B,UAAW,CACTkM,WAAY,SAMPmZ,GAAa,SAAC3nC,GACzB,IAAMwiB,EAAUsd,KACR8H,EAA4D5nC,EAA5D4nC,iBAAkBC,EAA0C7nC,EAA1C6nC,aAAchJ,EAA4B7+B,EAA5B6+B,OAAQjiC,EAAoBoD,EAApBpD,MAAO2jC,EAAavgC,EAAbugC,SAEvD,OACE,yBAAKhf,UAAWiB,EAAQklB,qBACtB,kBAAC,KAAD,CAAyBI,MAAOC,MAC9B,kBAAC,KAAD,CACE7nB,GAAI2e,EACJ3/B,MAAO2oC,EACPlS,MAAO/4B,EACPwiC,SAAUwI,EACVI,QAAQ,WACRxQ,OAAO,aACP7T,QAAQ,YACRpC,UAAWiB,EAAQkc,MACnBuJ,oBAAqB,CAAE1mB,UAAWiB,EAAQyL,MAC1CsS,SAAUA,O,oBC9Cd3e,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCmM,KAAM,CACJD,QAAS,OACT+H,eAAgB,OAChBgP,SAAU,OACVC,UAAW,OACXzR,QAASzR,EAAMQ,QAAQ,IACvBD,OAAQ,GAEV4iB,KAAM,CACJ5iB,OAAQP,EAAMQ,QAAQ,SAoCX4lB,GAhCK,SAACloC,GACnB,IAAMwiB,EAAUZ,KACRumB,EAAuCnoC,EAAvCmoC,eAAgBC,EAAuBpoC,EAAvBooC,mBAMxB,GAAKD,EAAL,CAEA,IAAME,EAAc,SAACC,GACnB,OAAyB,OAAlBA,EAAKC,SAAoBD,EAAKnX,KAAOmX,EAAKC,SAASpX,MAG5D,OACE,kBAACkI,GAAA,EAAD,CAAO35B,UAAU,KAAK6hB,UAAWiB,EAAQyL,MACtCka,EAAelR,KAAI,SAACqR,EAAM3nB,GACzB,OACE,wBAAI+M,IAAK/M,GACP,kBAAC6nB,GAAA,EAAD,CACE7S,MAAO0S,EAAYC,GACnBG,UAjBUC,EAiBaJ,EAjBU,WAC3CF,EAAmBM,KAiBTnnB,UAAWiB,EAAQyiB,KACnBphB,QAAS,kBAAMrnB,OAAOimB,KAAK6lB,EAAKK,SAnBvB,IAACD,QCLlB9mB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvC8mB,aAAc,CACZpa,WAAY,GACZtN,MAAOY,EAAMsN,QAAQyZ,SAASvZ,MAEhCwZ,iBAAkB,CAChBzmB,OAAQP,EAAMQ,QAAQ,GACtBkM,WAAY,GAEdua,IAAK,CACH1mB,OAAQP,EAAMQ,QAAQ,IAExBgS,OAAQ,CACNjS,OAAQP,EAAMQ,QAAQ,GACtBH,MAAO,IACPqN,OAAQ,kBACRwZ,YAAa,IACbrK,KAAM,GAERsK,aAAc,CACZ7a,YAAatM,EAAMQ,QAAQ,QA6IhB4mB,GAzIU,SAAClpC,GACxB,IAAMwiB,EAAUZ,KAEdunB,EAOEnpC,EAPFmpC,OACAC,EAMEppC,EANFopC,kCACAhX,EAKEpyB,EALFoyB,WACAiX,EAIErpC,EAJFqpC,uBACAC,EAGEtpC,EAHFspC,4BACAC,EAEEvpC,EAFFupC,uBACApB,EACEnoC,EADFmoC,eAGIqB,EAAkBxsC,IAAMysC,YAsB9B,OACE,kBAAC,IAAMxmB,SAAP,KACE,kBAACymB,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC9B,kBAAC,GAAD,CACE9K,OAAO,cACPlJ,MAAM,YACNz2B,MAAOiqC,EAAO7hB,YACd4Y,aAAc,SAAChC,GAAD,OACZkL,EAAkClL,EAAGiI,EAAgBvnB,eAEvD4X,MAAOpE,EACP+N,cAAc,OACdE,WAAW,KACXC,aAAc,CAAC,YAAa,YAC5BC,UAAU,KAGd,kBAACmJ,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC9B,kBAAC,GAAD,CACEzpB,GAAG,kBACH2e,OAAO,kBACPjiC,MAAM,OACNgrC,iBAAkB,SAAC/K,GAAD,OAChBuM,EAAkCvM,EAAMsJ,EAAgBzoB,cAE1DmqB,aAAcsB,EAAOS,WACrBrJ,UAAU,KAGd,kBAACmJ,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,QAChC,kBAACD,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC9B,kBAAClD,GAAA,EAAD,CACEvmB,GAAG,WACHyV,MAAM,OACNyJ,SAAU,SAAClB,GAAD,OACRkL,EAAkClL,EAAGiI,EAAgBxoB,eAEvDze,MAAOiqC,EAAOjC,MACd9G,WAAW,KAIf,kBAACsJ,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,MAAME,MAAM,UAC1C,kBAAC,IAAM5mB,SAAP,KAEE,kBAACoa,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAACpmB,GAAA,EAAD,CAAYnC,UAAWiB,EAAQmT,OAA/B,gBAEF,kBAAC0H,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAACC,GAAA,EAAD,CACE7pB,GAAG,mBACHgB,MAAM,UACNyC,QAAQ,WACR8J,aAAW,MACX5J,QA1EQ,SAAC4E,GACnB+gB,EAAgBQ,QAAQ3sC,SAAS,GAAG4sC,SA0E1B1oB,UAAS,UAAKiB,EAAQsmB,iBAAb,YAAiCtmB,EAAQ8R,SAElD,kBAAC,KAAD,CAAgB/S,UAAWiB,EAAQymB,eARrC,iBAUE,kBAACiB,GAAA,EAAD,CACE1lB,KAAK,OACL2lB,IAAKX,EACLY,UAAU,EACVhL,SA/EY,SAAC3W,GACzBA,EAAM8e,iBACN,IAAM8C,EAAO5hB,EAAM4W,OAAOiL,MAAM,GAC1BC,EAAS,CACbC,YAAY,EACZC,SAAS,EACTlC,SAAU8B,EACVlZ,KAAMkZ,EAAKlZ,MAEbiY,EACEmB,EACApE,EAAgBtnB,0BAElB2qB,EAAgBQ,QAAQ3sC,SAAS,GAAG6B,MAAQ,MAmEhC6kB,MAAO,CAAEiK,QAAS,YAIvBma,GACC,kBAAC9K,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAAC,GAAD,CACE3B,eAAgBA,EAChBC,mBAAoBmB,OAO9B,kBAACG,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,MAAME,MAAM,UAC1C,kBAAC,IAAM5mB,SAAP,KACE,kBAACW,GAAA,EAAD,CACEC,QAASylB,EACTpoB,MAAM,UACNyC,QAAQ,WACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,cALL,QASA,kBAAC0D,GAAA,EAAD,CACEC,QAAS,kBAAMwlB,GAAuB,EAAOF,EAAOjpB,KACpDqB,UAAWiB,EAAQomB,aACnB1oB,GAAG,gBAHL,c,UCjKKwqB,GALc,SAACtY,EAAY9K,GACxC,IAAMqjB,EAAoBvY,EAAWwG,QAAO,SAACgS,GAAD,OAAOA,EAAE1qB,KAAOoH,KAAa,GACzE,OAAOqjB,GAAqBA,EAAkBxZ,MCM1CvP,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvC+oB,WAAY,CACV3pB,MAAOY,EAAMsN,QAAQoG,OAAO5B,OAE9BgV,aAAc,CACZpa,WAAY,GACZtN,MAAOY,EAAMsN,QAAQyZ,SAASvZ,UAwDnBwb,GApDY,SAAC9qC,GAC1B,IAAMwiB,EAAUZ,KAEdunB,EAKEnpC,EALFmpC,OACAzW,EAIE1yB,EAJF0yB,OACAN,EAGEpyB,EAHFoyB,WACA2Y,EAEE/qC,EAFF+qC,8BACA1B,EACErpC,EADFqpC,uBAEIzM,EAAgB8N,GAAqBtY,EAAY+W,EAAO7hB,aACxD0jB,EACJ7B,EAAOpP,gBAAkBoP,EAAOS,YAChCzS,KAAOgS,EAAOpP,gBAAgB3C,QAAQD,KAAOwD,IAAI,eAEnD,OACE,kBAAC,IAAM1X,SAAP,KACE,kBAACymB,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC7B/M,GAEH,kBAAC8M,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC7BxS,KAAOgS,EAAOS,YAAYpS,OAAO,gBAEpC,kBAACkS,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC7BqB,EACG7T,KAAOgS,EAAOpP,gBAAgBvC,OAAO,eACrC,QAEN,kBAACkS,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC7BR,EAAOjC,OAEV,kBAACwC,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,MAAME,MAAM,UAC1C,kBAACrc,GAAA,EAAD,CACEC,aAAW,OACXlM,UAAWiB,EAAQyoB,SACnBC,KAAK,QACLrnB,QAAS,kBAAMwlB,GAAuB,EAAMF,EAAOjpB,GAAIwS,KAEvD,kBAACgF,GAAA,EAAD,OAEF,kBAAClK,GAAA,EAAD,CACEC,aAAW,SACXlM,UAAWiB,EAAQqoB,WACnBK,KAAK,QACLrnB,QAAS,kBAAMknB,EAA8B5B,EAAOjpB,MAEpD,kBAACirB,GAAA,EAAD,UCjDJvpB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCspB,qBAAsB,CACpB7X,QAASzR,EAAMQ,QAAQ,GACvBgM,UAAWxM,EAAMQ,QAAQ,GACzB8T,aAActU,EAAMQ,QAAQ,IAE9B+oB,MAAO,CACLrL,SAAU,KAEZsL,SAAU,CACR5V,WAAY,KAEdmV,WAAY,CACV3pB,MAAOY,EAAMsN,QAAQoG,OAAO5B,OAE9BgV,aAAc,CACZpa,WAAY,GACZtN,MAAOY,EAAMsN,QAAQyZ,SAASvZ,UAiFnBic,GA7EK,SAACvrC,GACnB,IAAMwiB,EAAUZ,KAEd4pB,EAaExrC,EAbFwrC,QACAT,EAYE/qC,EAZF+qC,8BACArY,EAWE1yB,EAXF0yB,OACAN,EAUEpyB,EAVFoyB,WACAiX,EASErpC,EATFqpC,uBACAoC,EAQEzrC,EARFyrC,oBACAC,EAOE1rC,EAPF0rC,kBACAtC,EAMEppC,EANFopC,kCACAE,EAKEtpC,EALFspC,4BACAxP,EAIE95B,EAJF85B,mBACAjU,EAGE7lB,EAHF6lB,SACA0jB,EAEEvpC,EAFFupC,uBACApB,EACEnoC,EADFmoC,eAWF,OARAnrC,IAAMmB,WAAU,WACY,IAAtBi0B,EAAWtE,QACbgM,EAAmBjU,KAIpB,IAGD,kBAAC8lB,GAAA,EAAD,CAAgBjsC,UAAW25B,KAAO9X,UAAWiB,EAAQ4oB,sBACnD,kBAACQ,GAAA,EAAD,CAAOrqB,UAAWiB,EAAQ6oB,MAAO5d,aAAW,gBAC1C,kBAACoe,GAAA,EAAD,KACE,kBAACC,GAAA,EAAD,KACE,kBAACpC,GAAA,EAAD,CAAWnoB,UAAWiB,EAAQ8oB,UAA9B,aACA,kBAAC5B,GAAA,EAAD,CAAWnoB,UAAWiB,EAAQ8oB,UAA9B,QACA,kBAAC5B,GAAA,EAAD,CAAWnoB,UAAWiB,EAAQ8oB,UAA9B,WACA,kBAAC5B,GAAA,EAAD,CAAWnoB,UAAWiB,EAAQ8oB,UAA9B,SACA,kBAAC5B,GAAA,EAAD,CAAWnoB,UAAWiB,EAAQ8oB,SAAUzB,MAAM,aAGlD,kBAACkC,GAAA,EAAD,KACGP,EAAQvU,KAAI,SAACkS,GACZ,IAAM6C,EACJP,GAAuBtC,EAAOjpB,KAAOwrB,EAAkBxrB,GAEzD,OACE,kBAAC4rB,GAAA,EAAD,CAAUpe,IAAKyb,EAAOjpB,IACnB8rB,EACC,kBAAC,GAAD,CACE7C,OAAQuC,EACRtC,kCACEA,EAEFhX,WAAYA,EACZiX,uBAAwBA,EACxBC,4BAA6BA,EAC7BnB,eAAgBA,EAChBoB,uBAAwBA,IAG1B,kBAAC,GAAD,CACEJ,OAAQA,EACRzW,OAAQA,EACRN,WAAYA,EACZ2Y,8BACEA,EAEF1B,uBAAwBA,YC1F7B4C,GARgB,SAACrC,EAAYsC,GAK1C,OAJc/U,KAAO,IAAI6B,KAAK4Q,GAAa,cAAc1Q,IACvD,SACAgT,I,UCKEtqB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCqqB,OAAQ,CACNjK,cAAepgB,EAAMQ,QAAQ,IAE/BkkB,cAAe,CACbtE,cAAepgB,EAAMQ,QAAQ,IAE/B4gB,SAAU,CACR5U,UAAW,GAEbsa,aAAc,CACZ1nB,MAAO,WAET4nB,iBAAkB,CAChBzmB,OAAQP,EAAMQ,QAAQ,GACtBkM,WAAY,GAEdua,IAAK,CACH1mB,OAAQP,EAAMQ,QAAQ,IAExBgS,OAAQ,CACNjS,OAAQP,EAAMQ,QAAQ,GACtBH,MAAO,IACPqN,OAAQ,kBACRwZ,YAAa,IACbrK,KAAM,GAERsK,aAAc,CACZ7a,YAAatM,EAAMQ,QAAQ,QAoKhB8pB,GAhKG,SAACpsC,GACjB,IAAMwiB,EAAUZ,KAEdunB,EAYEnpC,EAZFmpC,OACAjD,EAWElmC,EAXFkmC,kBACA9T,EAUEpyB,EAVFoyB,WACA0H,EASE95B,EATF85B,mBACAjU,EAQE7lB,EARF6lB,SACAwmB,EAOErsC,EAPFqsC,UACAC,EAMEtsC,EANFssC,oBACAC,EAKEvsC,EALFusC,qBACAra,EAIElyB,EAJFkyB,QACAyH,EAGE35B,EAHF25B,yBACA4P,EAEEvpC,EAFFupC,uBACApB,EACEnoC,EADFmoC,eAGIqB,EAAkBxsC,IAAMysC,YAE9BzsC,IAAMmB,WAAU,WACY,IAAtBi0B,EAAWtE,QACbgM,EAAmBjU,GAKE,IAAnBqM,EAAQpE,QACNjI,GACF8T,EAAyB9T,KAK5B,IAmBH,OACE,kBAAC,IAAM5C,SAAP,KACIopB,EAIE,KAHF,kBAAC3oB,GAAA,EAAD,CAAYC,QAAQ,KAAKpC,UAAWiB,EAAQ2pB,QAA5C,cAIF,kBAAC9O,GAAA,EAAD,CAAMhI,WAAS,EAAC/S,QAAS,EAAGf,UAAWiB,EAAQgkB,eAC7C,kBAACnJ,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAAC,GAAD,CACEpd,GAAG,kBACH2e,OAAO,kBACPjiC,MAAM,OACNgrC,iBAAkB,SAAC/K,GAAD,OAChBqJ,EAAkBrJ,EAAMsJ,EAAgBzoB,cAE1CmqB,aAAcsB,EAAOS,WACrBrJ,UAAU,KAGd,kBAAClD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,yBAAK/b,UAAWiB,EAAQ0gB,UACtB,kBAAC,GAAD,CACErE,OAAO,cACPlJ,MAAM,YACNz2B,MAAOiqC,EAAO7hB,YACd4Y,aAAc,SAAChC,GAAD,OACZgI,EAAkBhI,EAAGiI,EAAgBvnB,eAEvC4X,MAAOpE,EACP+N,cAAc,OACdE,WAAW,KACXC,aAAc,CAAC,YAAa,YAC5BC,UAAU,EACVX,SAAU0M,MAIfC,EACC,kBAAClP,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,yBAAK/b,UAAWiB,EAAQ0gB,UACtB,kBAAC,GAAD,CACErE,OAAO,YACPlJ,MAAM,WAENuK,aAAc,SAAChC,GAAD,OACZgI,EAAkBhI,EAAGiI,EAAgB3mB,SAEvCgX,MAAOtE,EACPiO,cAAc,OACdE,WAAW,KACXC,aAAc,kBACdC,UAAU,MAId,KACJ,kBAAClD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IACf,kBAACD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IACb,kBAACmJ,GAAA,EAAD,CACEvmB,GAAG,cACHyV,MAAM,QACNqR,WAAS,EACTC,KAAM,EACN7G,WAAS,EACTzc,QAAQ,WACRyb,SAAU,SAAClB,GAAD,OAAOgI,EAAkBhI,EAAGiI,EAAgBxoB,eACtDze,MAAOiqC,EAAOjC,UAMpB,kBAAC7J,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAACpmB,GAAA,EAAD,CAAYnC,UAAWiB,EAAQmT,OAA/B,gBAEF,kBAAC0H,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAACC,GAAA,EAAD,CACE7pB,GAAG,mBACHgB,MAAM,UACNyC,QAAQ,WACR8J,aAAW,MACX5J,QAnGY,SAAC4E,GACnB+gB,EAAgBQ,QAAQ3sC,SAAS,GAAG4sC,SAmG9B1oB,UAAS,UAAKiB,EAAQsmB,iBAAb,YAAiCtmB,EAAQ8R,SAElD,kBAAC,KAAD,CAAgB/S,UAAWiB,EAAQymB,eARrC,iBAUE,kBAACiB,GAAA,EAAD,CACE1lB,KAAK,OACL2lB,IAAKX,EACLY,UAAU,EACVhL,SAxGgB,SAAC3W,GACzBA,EAAM8e,iBACN,IAAM8C,EAAO5hB,EAAM4W,OAAOiL,MAAM,GAC1BC,EAAS,CACbC,YAAY,EACZC,SAAS,EACTlC,SAAU8B,EACVlZ,KAAMkZ,EAAKlZ,MAEb+U,EAAkBqE,EAAQpE,EAAgBtnB,0BAC1C2qB,EAAgBQ,QAAQ3sC,SAAS,GAAG6B,MAAQ,MA+FpC6kB,MAAO,CAAEiK,QAAS,YAIvBma,GACC,kBAAC9K,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAAC,GAAD,CACE3B,eAAgBA,EAChBC,mBAAoBmB,OC/K1B3nB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCigB,OAAQ,GACRC,YAAa,CACX9S,WAAY,WAEd+S,cAAe,CACb9f,MAAO,IACPoT,WAAYzT,EAAMQ,QAAQ,GAC1B4f,cAAepgB,EAAMQ,QAAQ,IAE/BJ,aAAc,CACZC,MAAO,IACPC,MAAO,QACPC,OAAQP,EAAMQ,QAAQ,IAExB6f,OAAQ,CACNjT,WAAY,eA+HDsd,GA3He,SAACxsC,GAAW,IAEtCkkB,EAcElkB,EAdFkkB,WACAuoB,EAaEzsC,EAbFysC,4BACApoB,EAYErkB,EAZFqkB,SACA8kB,EAWEnpC,EAXFmpC,OACAjgB,EAUElpB,EAVFkpB,oBACAG,EASErpB,EATFqpB,OACAqjB,EAQE1sC,EARF0sC,aACA5S,EAOE95B,EAPF85B,mBACA1H,EAMEpyB,EANFoyB,WACAF,EAKElyB,EALFkyB,QACAya,EAIE3sC,EAJF2sC,wBACAxE,EAGEnoC,EAHFmoC,eACAC,EAEEpoC,EAFFooC,mBACAviB,EACE7lB,EADF6lB,SAGIrD,EAAUZ,KAGhB5kB,IAAMmB,WAAU,WACTi0B,EAAWtE,SAAyB,IAAf5J,GACxB4V,EAAmBjU,KAGpB,CAAC3B,IAEJ,IAAMigB,EAAgB,WACpBsI,GAA4B,IAiC9B,OACE,kBAAC,IAAMxpB,SAAP,KACE,kBAAC,GAAD,CACER,KAAMyB,EACNhB,QAASihB,EACThhB,kBAAgB,qBAChBC,mBAAiB,2BACjB7B,UAAWiB,EAAQuf,QAElB1d,EAAW,kBAAChB,GAAA,EAAD,MAAqB,GACjC,kBAACC,GAAA,EAAD,CAAapD,GAAG,qBAAqBqB,UAAWiB,EAAQwf,aAAxD,cAGA,0BAAMuE,SAhCe,SAACrI,GAC1BA,EAAEqJ,iBAEF,IAAMze,EAAO,2BACXiO,SAAU1N,EAAOnJ,IACdipB,GAFQ,IAGXpP,eAAgBkS,GACd9C,EAAOS,WACPvgB,EAAOwd,aAIX6F,EAAa5jB,EAAS2e,EADP,SACkC5hB,KAqB3C,kBAACtC,GAAA,EAAD,CAAehC,UAAWiB,EAAQyf,eAChC,kBAAC,GAAD,CACE/P,QAASA,EACTiX,OAAQA,EACRjD,kBAhDc,SAAChI,EAAG/U,GAK1BD,EAHAC,IAAmBgd,EAAgBzoB,aACnCyL,IAAmBgd,EAAgBtnB,yBAEfqf,EAEAA,EAAEmB,OAAOngC,MAFNiqB,IA4CfiJ,WAAYA,EACZ0H,mBAAoBA,EACpBjU,SAAUA,EACVwmB,WAAW,EACXC,oBACEK,IACAC,GAEFL,qBACEI,IACAC,GAEFC,oBAAoB,EACpB1I,cAAeA,EACfgE,eAAgBA,EAChBoB,uBAtCmB,SAACvhB,GAC9BogB,EAAmBpgB,OAwCb,kBAACvE,GAAA,EAAD,CAAelC,UAAWiB,EAAQ2f,QAChC,kBAACve,GAAA,EAAD,CACErC,UAAWiB,EAAQN,aACnByB,QAAQ,WACRE,QAASsgB,GAHX,UAOA,kBAACvgB,GAAA,EAAD,CACEY,KAAK,SACLtD,MAAM,UACNK,UAAWiB,EAAQN,aACnByB,QAAQ,YACR8T,UAAW,kBAACqV,GAAA,EAAD,OALb,YC9FGhhB,oBAvCf,SAAyBC,EAAOC,GAC9B,MAAO,CACLnG,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,GAC/DmJ,OAAQ0C,EAAM1C,OAAO2I,UAAU5F,KAC/BlI,WAAY6H,EAAM1C,OAAO0I,UAAUgb,0BACnC1oB,SAAU0H,EAAM1C,OAAO0I,UAAU1N,SACjCtC,aAAcgK,EAAM1C,OAAO0I,UAAUhQ,aACrCuF,YAAayE,EAAM1C,OAAO0I,UAAU3F,KAAK9E,YACzC8K,WAAYrG,EAAMqG,WAAWC,cAAcmE,MAC3C2S,OAAQpd,EAAM1C,OAAO0I,UAAU3F,KAC/B8F,QAASnG,EAAMmG,QAAQC,gBAAgBqE,MACvCmW,wBAAyB5gB,EAAM1C,OAAO0I,UAAU4a,wBAChDxE,eAAgBpc,EAAM1C,OAAO0I,UAAU3F,KAAK4gB,oBAIhD,SAA4B1gB,EAAUN,GACpC,MAAO,CACLygB,4BAA6B,SAAChqB,EAAM6E,GAClCgF,EAASjF,GAAkC5E,EAAM6E,KAEnD4B,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAASpD,GAAoBhqB,EAAO0lB,KAEtC8nB,aAAc,SAAC5jB,EAAS/D,EAAMwC,EAAQ1B,GACpCyG,EAAS7C,GAA2BX,EAAS/D,EAAMwC,EAAQ1B,KAE7DiU,mBAAoB,SAACjU,GACnByG,EAAS3F,GAA2Bd,KAEtC8T,yBAA0B,SAAC9T,GACzByG,EAAStD,GAAiCnD,KAE5CuiB,mBAAoB,SAACpgB,GACnBsE,EjD0DsC,SAACtE,GAAD,MAAiB,CAC3DxD,KAAMC,EAAM3N,gCACZkR,ciD5DailB,CAA6BjlB,QAK7B8D,CAGb0gB,ICzCI5qB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCsgB,YAAa,CACXpU,QAAS,eACTM,UAAW,GAEb4e,yBAA0B,CACxB3Z,QAASzR,EAAMQ,QAAQ,IAEzBggB,UAAW,CACT9T,YAAa,IAEf+T,WAAY,CACV7M,WAAY,KAEdyX,gBAAiB,CACf7e,UAAW,OAiIA8e,GA7HS,SAACptC,GAAW,IAEhCqpB,EAiBErpB,EAjBFqpB,OACAmiB,EAgBExrC,EAhBFwrC,QACA9Y,EAeE1yB,EAfF0yB,OACA2a,EAcErtC,EAdFqtC,oBACAC,EAaEttC,EAbFstC,yBACAC,EAYEvtC,EAZFutC,gCACAb,EAWE1sC,EAXF0sC,aACAta,EAUEpyB,EAVFoyB,WACA0H,EASE95B,EATF85B,mBACAuP,EAQErpC,EARFqpC,uBACAoC,EAOEzrC,EAPFyrC,oBACAC,EAME1rC,EANF0rC,kBACA8B,EAKExtC,EALFwtC,8BACAT,EAIE/sC,EAJF+sC,0BACAN,EAGEzsC,EAHFysC,4BACArE,EAEEpoC,EAFFooC,mBACAD,EACEnoC,EADFmoC,eAEI3lB,EAAUZ,KACViE,EAAagL,cAAbhL,SAEN7oB,IAAMmB,WACJ,WACEmvC,EAAyBjkB,EAAOnJ,MAIlC,CAACmJ,EAAOnJ,KAyCV,OACE,kBAAC,IAAM+C,SAAP,KACG8pB,EAA4B,kBAAC,GAAD,MAA4B,KAEzD,yBAAKxrB,UAAWiB,EAAQsgB,oBACtB,kBAACtV,GAAA,EAAD,CACEtM,MAAM,UACN2C,QAAS,kBAAMwpB,GAAoB,IACnCntB,GAAG,kBACHqB,UAAWiB,EAAQ8f,WAEnB,kBAACiC,GAAA,EAAD,CAAerjB,MAAM,aAEvB,kBAACwC,GAAA,EAAD,CAAYnC,UAAWiB,EAAQ4f,aAA/B,aAGF,yBAAK7gB,UAAWiB,EAAQirB,qBACtB,kBAAC/pB,GAAA,EAAD,CAAYnC,UAAWiB,EAAQ+f,YAC5BlZ,EAAOmU,kBAGZ,kBAAC5Z,GAAA,EAAD,CACE1C,MAAM,UACNyC,QAAQ,YACRpC,UAAWiB,EAAQ2qB,gBACnBtpB,QAAS,kBACP4oB,GACE,EACA,KACAG,MARN,cAeA,kBAAC,GAAD,CACEpB,QAASA,EACTpZ,WAAYA,EACZ2Y,8BAlEgC,SAAC2C,GACrC,IAAM5kB,EAAU,CACdiO,SAAU1N,EAAOnJ,GACjBwtB,YAGFH,EAAgCzkB,IA6D5B4J,OAAQA,EACR2W,uBAAwBA,EACxBoC,oBAAqBA,EACrBC,kBAAmBA,EACnBtC,kCAlFoC,SAAClL,EAAG/U,GAK1CqkB,EAHArkB,IAAmBgd,EAAgBzoB,aACnCyL,IAAmBgd,EAAgBtnB,yBAELqf,EAEAA,EAAEmB,OAAOngC,MAFNiqB,IA8E/BmgB,4BA3D8B,SAACpL,GACnCA,EAAEqJ,iBACF,IAAMze,EAAO,2BACXiO,SAAU1N,EAAOnJ,IACdwrB,GAFQ,IAGX3R,eAAgBkS,GACdP,EAAkB9B,WAClBvgB,EAAOwd,aAIX6F,EAAa5jB,EAAS2e,EAAmB5hB,IAiDrCiU,mBAAoBA,EACpBjU,SAAUA,EACV0jB,uBAlEyB,SAACvhB,GAC9BogB,EAAmBpgB,IAkEfmgB,eAAgBA,MCjETrc,oBAjEf,SAAyBC,EAAOC,GAC9B,MAAO,CACL3C,OAAQ0C,EAAM1C,OAAO2I,UAAU5F,KAC/Bof,QAASzf,EAAM1C,OAAO4I,oBAAoBuE,MAC1C2S,OAAQpd,EAAM1C,OAAO0I,UAAU3F,KAC/BgG,WAAYrG,EAAMqG,WAAWC,cAAcmE,MAC3C9D,OAAQ3G,EAAME,MAAMtuB,KAAKyuB,KAAKlM,GAC9BurB,oBAAqB1f,EAAM1C,OAAOskB,WAAWC,OAC7ClC,kBAAmB3f,EAAM1C,OAAOskB,WAAWvhB,KAC3C2gB,0BAA2BhhB,EAAM1C,OAAO0I,UAAUgb,0BAClD5E,eAAgBpc,EAAM1C,OAAOskB,WAAWvhB,KAAK4gB,gBAC7CnnB,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,OAInE,SAA4BoM,EAAUN,GACpC,MAAO,CACLqhB,oBAAqB,SAAC5qB,GACpB6J,EAAShD,GAA4B7G,KAEvCyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAASpD,GAAoBhqB,EAAO0lB,KAEtC0iB,aAAc,SAACje,GAEbiD,EAASlD,GAAqBC,EADjBoe,KAGf6F,yBAA0B,SAACvW,GACzBzK,EnD0B0C,SAACyK,GAAD,MAAe,CAC7DvS,KAAMC,EAAMrY,6BACZ2qB,YmD5Ba8W,CAAiC9W,KAE5CwW,gCAAiC,SAACzkB,GAChCwD,EnD4B+C,SAACxD,GAAD,MAAc,CACjEtE,KAAMC,EAAMhY,qBACZqc,WmD9BaglB,CAAsChlB,KAEjD4jB,aAAc,SAAC5jB,EAAS/D,EAAMc,GAC5ByG,EAAS7C,GAA2BX,EAAS/D,EAAM,OAAQc,KAE7DiU,mBAAoB,SAACjU,GACnByG,EAAS3F,GAA2Bd,KAEtCwjB,uBAAwB,SACtB0E,EACAL,EACAtlB,GAEAkE,EnDoBgC,SAACyhB,EAAsBL,GAAvB,MAAqC,CACzElpB,KAAMC,EAAM3X,0BACZihC,uBACAL,YmDvBarE,CAAuB0E,EAAsBL,IACtDphB,EnD2C4D,SAChEpE,EACAC,EACAC,GAHgE,MAI5D,CACJ5D,KAAMC,EAAMzN,mCACZkR,eACAC,WACAC,kBmDlDM4lB,CACEC,GACAP,EACAtlB,KAINolB,8BAA+B,SAACtuC,EAAO0lB,GACrC0H,EnDtC6C,SAACptB,EAAOiqB,GAAR,MAA4B,CAC7E3E,KAAMC,EAAMlZ,gCACZrM,QACAiqB,kBmDmCa+kB,CAAoChvC,EAAO0lB,KAEtD6nB,4BAA6B,SAAChqB,EAAM6E,EAAaC,GAC/C+E,EAASjF,GAAkC5E,EAAM6E,EAAaC,KAEhE6gB,mBAAoB,SAACpgB,GACnBsE,EnDuC0C,SAACtE,GAAD,MAAiB,CAC/DxD,KAAMC,EAAM1N,qCACZiR,cmDzCammB,CAAiCnmB,QAKjC8D,CAA6CshB,IC5C7CgB,GAvCU,SAACpuC,GAAW,IAEjCqpB,EAUErpB,EAVFqpB,OACA8T,EASEn9B,EATFm9B,UACAjZ,EAQElkB,EARFkkB,WACAG,EAOErkB,EAPFqkB,SACA6E,EAMElpB,EANFkpB,oBACA6c,EAKE/lC,EALF+lC,uBACAuB,EAIEtnC,EAJFsnC,aAEA9C,GAEExkC,EAHFg+B,aAGEh+B,EAFFwkC,wBACAyB,EACEjmC,EADFimC,mBAQF,OACE,kBAAC,IAAMhjB,SAAP,KACE,kBAAC,GAAD,CACEiB,WAAYA,EACZG,SAAUA,EACV6E,oBAAqBA,EACrB6c,uBAAwBA,EACxBrjB,aAZe,SAACwb,GACpBA,EAAEqJ,iBACFD,EAAaje,IAWTzsB,MAAM,kBACNysB,OAAQA,EACR8T,UAAWA,EACX6I,kBAAkB,EAClBnjB,iBAAiB,SACjB2hB,uBAAwBA,EACxByB,mBAAoBA,MCQbna,oBAhCf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAM1C,OAAO2I,UAAUqc,qBACnChlB,OAAQ0C,EAAM1C,OAAO2I,UAAU5F,KAC/B+Q,UAAWpR,EAAMoS,SAASC,aAAa5B,UACvCnY,SAAU0H,EAAM1C,OAAO2I,UAAU3N,SACjCwB,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,GAC/D8d,aAAcjS,EAAME,MAAMtuB,KAAKyuB,SAInC,SAA4BE,EAAUN,GACpC,MAAO,CACL+Z,uBAAwB,SAACtjB,GACvB6J,EAAS/C,GAA6B9G,KAExCyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAASpD,GAAoBhqB,EAAO0lB,KAEtC0iB,aAAc,SAACje,GAEbiD,EAASlD,GAAqBC,EADjBoe,KAGfjD,uBAAwB,SAAC/hB,GACvB6J,EAASf,GAA+B9I,KAE1CwjB,mBAAoB,SAACpa,GACnBS,EAASV,GAAoCC,QAKpCC,CAA6CsiB,ICnCtDxsB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCwd,UAAW,CACThR,UAAWxM,EAAMQ,QAAQ,GACzB8T,aAActU,EAAMQ,QAAQ,QAwCjBgsB,GApCM,SAACtuC,GAAW,IAE7BuuC,EAKEvuC,EALFuuC,UACA/nB,EAIExmB,EAJFwmB,WACAsY,EAGE9+B,EAHF8+B,uBACAiH,EAEE/lC,EAFF+lC,uBACA7hB,EACElkB,EADFkkB,WAEI1B,EAAUZ,KAEhB,OACE,kBAAC,GAAD,KACE,kBAAC,GAAD,MAECsC,EAAa,kBAAC,GAAD,MAAuB,KAEpCqqB,EACC,kBAAC,GAAD,MAEA,yBAAKhtB,UAAWiB,EAAQgsB,0BACtB,yBAAKjtB,UAAWiB,EAAQ8c,WACtB,kBAAC,GAAD,CACEE,iBAAkBuG,EAClBvf,WAAYA,EACZsY,uBAAwBA,EACxBW,WAAW,kBACXC,kBAAkB,qBAGtB,kBAAC,GAAD,SClBK5T,oBAnBf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAM1C,OAAO2I,UAAUqc,qBACnCE,UAAWxiB,EAAM1C,OAAO2I,UAAUyc,oBAClCjoB,WAAYuF,EAAMmG,QAAQC,gBAAgB3L,eAI9C,SAA4B8F,EAAUN,GACpC,MAAO,CACL8S,uBAAwB,SAACtY,GACvB8F,EvDE+C,SAAC9F,GAAD,MAAiB,CACpEhC,KAAMC,EAAMvZ,+BACZsb,cuDJakoB,CAAsCloB,KAEjDuf,uBAAwB,SAACtjB,GACvB6J,EAASrD,GAA+BxG,QAK/BqJ,CAA6CwiB,I,UCXtD1sB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCigB,OAAQ,GACRC,YAAa,CACX9S,WAAY,WAEd+S,cAAe,CACb9f,MAAO,IACPoT,WAAYzT,EAAMQ,QAAQ,GAC1B4f,cAAepgB,EAAMQ,QAAQ,IAE/BJ,aAAc,CACZC,MAAO,IACPC,MAAO,QACPC,OAAQP,EAAMQ,QAAQ,IAExB6f,OAAQ,CACNjT,WAAY,WAEd6X,iBAAkB,CAChBzY,UAAW,IAEbsX,OAAQ,CACNvjB,OAAQ,EACRkR,QAAS,GAEXob,eAAgB,CACdztB,MAAO,WAsJI0tB,GAlJmB,SAAC5uC,GACjC,IAAMwiB,EAAUZ,KAEdsC,EAUElkB,EAVFkkB,WACA2qB,EASE7uC,EATF6uC,0BACA3lB,EAQElpB,EARFkpB,oBACAlC,EAOEhnB,EAPFgnB,UACA3C,EAMErkB,EANFqkB,SACA3B,EAKE1iB,EALF0iB,aACA9lB,EAIEoD,EAJFpD,MATyC,EAavCoD,EAHF6iB,wBAVyC,MAUtB,MAVsB,EAWzCisB,EAEE9uC,EAFF8uC,gBACAjoB,EACE7mB,EADF6mB,QAGIsd,EAAgB,WACpB0K,GAA0B,IAGtBE,GAA2B,IAAZloB,GAAwC,qBAAZA,EAE3Cqf,EAAoB,SAAChI,EAAG/U,GACxB+U,GAKAhV,EAHAC,IAAmBgd,EAAgBnqB,UACnCmN,IAAmBgd,EAAgBlqB,UAEfiiB,EAAEmB,OAAO2P,QAE7B7lB,IAAmBgd,EAAgBrqB,gBACnCqN,IAAmBgd,EAAgBjqB,aAEfgiB,GAAKA,EAAE1G,OAAO,cAEd0G,EAAEmB,OAAOngC,MAPSiqB,IAY5C,OACE,kBAAC,IAAMlG,SAAP,KACE,kBAAC,GAAD,CACER,KAAMyB,EACNhB,QAASihB,EACThhB,kBAAgB,qBAChBC,mBAAiB,2BACjB7B,UAAWiB,EAAQuf,QAElB1d,EAAW,kBAAChB,GAAA,EAAD,MAAqB,GACjC,kBAACC,GAAA,EAAD,CAAapD,GAAG,qBAAqBqB,UAAWiB,EAAQwf,aACrDplC,GAEH,0BAAM2pC,SAAU7jB,GACd,kBAACa,GAAA,EAAD,CAAehC,UAAWiB,EAAQyf,eAChC,kBAAC5E,GAAA,EAAD,CAAMhI,WAAS,EAAC9T,UAAWiB,EAAQgkB,cAAelkB,QAAS,GACzD,kBAAC+a,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACElG,UAAQ,EACRrgB,GAAG,qBACHyV,MAAM,aACNyJ,SAAU,SAAClB,GAAD,OACRgI,EAAkBhI,EAAGiI,EAAgBzqB,aAEvCxc,MAAO8nB,EAAUioB,UACjB7O,WAAS,KAGb,kBAAC/C,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACElG,UAAQ,EACRrgB,GAAG,oBACHyV,MAAM,YACNyJ,SAAU,SAAClB,GAAD,OACRgI,EAAkBhI,EAAGiI,EAAgBxqB,YAEvCzc,MAAO8nB,EAAUkoB,SACjB9O,WAAS,MAIQ,IAApB0O,EACC,kBAACzR,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IACb,0BAAM/b,UAAWiB,EAAQmsB,gBAAzB,mBAGF,GAGAI,EACA,6BACF,kBAAC1R,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACd,kBAAC,GAAD,CACEpd,GAAG,qBACH2e,OAAO,qBACPjiC,MAAM,aACN2kB,UAAWiB,EAAQojB,OACnBgC,iBAAkB,SAAC/K,GAAD,OAChBqJ,EAAkBrJ,EAAMsJ,EAAgBrqB,iBAE1C+rB,aAAc7gB,EAAUmoB,gBAG5B,kBAAC9R,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQukB,kBACpC,kBAACN,GAAA,EAAD,CACEvmB,GAAG,SACHyV,MAAM,QACNqR,WAAS,EACTC,KAAM,EACN7G,WAAS,EACTzc,QAAQ,WACRyb,SAAU,SAAClB,GAAD,OAAOgI,EAAkBhI,EAAGiI,EAAgB9qB,QACtDnc,MAAO8nB,EAAUkgB,SAtBlB,KAwBc,OAMpB,kBAACzjB,GAAA,EAAD,CAAelC,UAAWiB,EAAQ2f,QAChC,kBAACve,GAAA,EAAD,CACEC,QAASsgB,EACTjjB,MAAM,UACNyC,QAAQ,WACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,gBALL,UASA,kBAAC0D,GAAA,EAAD,CACEY,KAAK,SACLtD,MAAM,UACNyC,QAAQ,YACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,kBAGF2C,QC7IAusB,GAvCa,SAACpvC,GAAW,IAEpCkkB,EAQElkB,EARFkkB,WACA2qB,EAOE7uC,EAPF6uC,0BACA3lB,EAMElpB,EANFkpB,oBACAlC,EAKEhnB,EALFgnB,UACAqoB,EAIErvC,EAJFqvC,gBACAhrB,EAGErkB,EAHFqkB,SACA+Q,EAEEp1B,EAFFo1B,SACAka,EACEtvC,EADFsvC,MAYF,OACE,kBAAC,IAAMrsB,SAAP,KACE,kBAAC,GAAD,CACEiB,WAAYA,EACZ2qB,0BAA2BA,EAC3B3lB,oBAAqBA,EACrBlC,UAAWA,EACX3C,SAAUA,EACV+Q,SAAUA,EACV1S,aAlBe,SAACwb,GACpBA,EAAEqJ,iBACF,IAAMze,EAAO,6BACR9B,GADQ,IAEXuoB,gBAAiBvoB,EAAUwoB,gBAE7BH,EAAgBvmB,IAaZwmB,MAAOA,EACP1yC,MAAM,mBACNimB,iBAAiB,aCDViJ,oBAzBf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAM/E,UAAUyoB,aAAaC,wBACzC1oB,UAAW+E,EAAM/E,UAAUyoB,aAAarjB,KACxC/H,SAAU0H,EAAM/E,UAAUyoB,aAAaprB,SACvC+Q,SAAUrJ,EAAMqJ,SAASua,aAAe5jB,EAAMqJ,SAASua,YAAYnZ,MACnE8Y,MAAOvjB,EAAMqG,WAAWkd,MAAM9Y,UAIlC,SAA4BlK,EAAUN,GACpC,MAAO,CACL6iB,0BAA2B,SAACpsB,GAC1B6J,EAASrF,GAAgCxE,KAE3CyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAASxF,GAAmC5nB,EAAO0lB,KAErDyqB,gBAAiB,SAACroB,GAEhBsF,EAASvF,GAAwBC,EADpBygB,QAMJ3b,CAGbsjB,ICpBIxtB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCigB,OAAQ,GACRC,YAAa,CACX9S,WAAY,WAEd+S,cAAe,CACb9f,MAAO,IACPoT,WAAYzT,EAAMQ,QAAQ,GAC1B4f,cAAepgB,EAAMQ,QAAQ,IAE/BJ,aAAc,CACZC,MAAO,IACPC,MAAO,QACPC,OAAQP,EAAMQ,QAAQ,IAExB6f,OAAQ,CACNjT,WAAY,WAEd6X,iBAAkB,CAChBzY,UAAW,IAEbshB,WAAY,CACVxtB,MAAO,SAETytB,QAAS,CACPvhB,UAAW,GAEbwhB,sBAAuB,CACrBvc,QAASzR,EAAMQ,QAAQ,IAEzBigB,WAAY,CACV5T,SAAU,GACV+G,WAAY,IACZH,WAAYzT,EAAMQ,QAAQ,GAC1BytB,aAAcjuB,EAAMQ,QAAQ,GAC5B0L,QAAS,UAEXgiB,OAAQ,CACNza,WAAYzT,EAAMQ,QAAQ,GAC1B0L,QAAS,UAEXiiB,QAAS,CACP1a,WAAYzT,EAAMQ,QAAQ,GAC1BpB,MAAOY,EAAMsN,QAAQoG,OAAOlG,KAC5BtB,QAAS,cAIPiP,GAAe,SAACj9B,GAAW,IACvBqpB,EAAWrpB,EAAXqpB,OACF7G,EAAUZ,KACVopB,EAAgB7T,KAAO9N,EAAO0Q,gBAAgB3C,QAClDD,KAAOwD,IAAI,eAEPzD,EAAYC,OAASC,QAAQ/N,EAAO0Q,iBAAmBiR,EAE7D,OACE,yBAAKzpB,UAAWiB,EAAQstB,uBACtB,kBAACpsB,GAAA,EAAD,CAAYC,QAAQ,KAAKpC,UAAWiB,EAAQ+f,YACzClZ,EAAOmU,iBAEV,kBAAC9Z,GAAA,EAAD,CACEC,QAAQ,YACRpC,UAAW2V,EAAY1U,EAAQytB,QAAUztB,EAAQwtB,QAFnD,UAIM9Y,EAAY,UAAY,cAJ9B,cAKI8T,EACI3hB,GAAU8N,KAAO9N,EAAO0Q,gBAAgBvC,OAAO,cAC/C,WA6FC0Y,GAtFmB,SAAClwC,GAAW,IAE1CkkB,EAQElkB,EARFkkB,WACA8C,EAOEhnB,EAPFgnB,UACAmpB,EAMEnwC,EANFmwC,gCACAC,EAKEpwC,EALFowC,uBACAle,EAIElyB,EAJFkyB,QACAL,EAGE7xB,EAHF6xB,UACA4a,EAEEzsC,EAFFysC,4BACAM,EACE/sC,EADF+sC,0BAEIvqB,EAAUZ,KAEhB5kB,IAAMmB,WACJ,WACM6oB,GACFopB,EAAuBppB,EAAU9G,MAKrC,CAAC8G,IAGH,IAAMmd,EAAgB,WACpBgM,GAAgC,IAelC,OAJAje,EAAQ4G,MAAK,SAAC16B,EAAG26B,GACf,OAAO,IAAIC,KAAKD,EAAEgB,gBAAkB,IAAIf,KAAK56B,EAAE27B,mBAI/C,kBAAC,IAAM9W,SAAP,KACG8pB,EAA4B,kBAAC,GAAD,MAA4B,KAEzD,kBAAC,GAAD,CACEtqB,KAAMyB,EACNhB,QAASihB,EACThhB,kBAAgB,qBAChBC,mBAAiB,2BACjB7B,UAAWiB,EAAQuf,QAElBlQ,EAAY,kBAACxO,GAAA,EAAD,MAAqB,GAClC,kBAACC,GAAA,EAAD,CAAapD,GAAG,qBAAqBqB,UAAWiB,EAAQwf,aACrDhb,GAAS,UAAOA,EAAUioB,UAAjB,YAA8BjoB,EAAUkoB,UAElD,kBAAC1hB,GAAA,EAAD,CACEtM,MAAM,UACNxhB,UAAU,OACV6hB,UAAWiB,EAAQotB,WACnB/rB,QAASsgB,GAET,kBAACxW,GAAA,EAAD,OAEF,kBAAC/J,GAAA,EAAD,CACE1C,MAAM,UACNyC,QAAQ,YACR8T,UAAW,kBAACqV,GAAA,EAAD,MACXvrB,UAAS,UAAKiB,EAAQotB,WAAb,YAA2BptB,EAAQqtB,SAC5ChsB,QAAS,kBAxCkB,SAACmD,GACpC,IAAIO,EACFqlB,GAEFH,GAA4B,EAAMzlB,EAAU9G,GAAIqH,GAoCzB8oB,CAA6B,gBAAKrpB,MALnD,QAUF,kBAACzD,GAAA,EAAD,CAAehC,UAAWiB,EAAQyf,eAChC,kBAAC7N,GAAA,EAAD,CAAMkc,OAAO,GACVpe,GACCA,EAAQ+E,KAAI,SAAC5N,GACX,OAAO,kBAAC,GAAD,CAAcA,OAAQA,EAAQqE,IAAKrE,EAAOnJ,SAE/C,QCzIH4L,oBA1Bf,SAAyBC,EAAOC,GAC9B,IAAMukB,EAAsBxkB,EAAM/E,UAAUupB,oBAE5C,MAAO,CACLrsB,WAAYqsB,EAAoBC,WAChCxpB,UAAWupB,EAAoB5F,kBAC/BzY,QAASqe,EAAoB/Z,MAC7B3E,UAAW0e,EAAoB1e,UAC/Bkb,0BAA2BhhB,EAAM1C,OAAO0I,UAAUgb,8BAItD,SAA4BzgB,EAAUN,GACpC,MAAO,CACLmkB,gCAAiC,SAAC1tB,EAAMuE,GACtCsF,EAASnF,GAA8B1E,EAAMuE,KAE/CopB,uBAAwB,SAAC9oB,GACvBgF,E/D2BwC,SAAChF,GAAD,MAAkB,CAC9D9C,KAAMC,EAAMhX,4BACZ6Z,e+D7BampB,CAA+BnpB,KAE1CmlB,4BAA6B,SAAChqB,EAAM6E,EAAaC,GAC/C+E,EAASjF,GAAkC5E,EAAM6E,EAAaC,QAKrDuE,CAGbokB,ICLaQ,GA9Be,SAAC1wC,GAAW,IAChCgnB,EAA0DhnB,EAA1DgnB,UAAWvE,EAA+CziB,EAA/CyiB,KAAMkuB,EAAyC3wC,EAAzC2wC,WAAY5uB,EAA6B/hB,EAA7B+hB,aAAc6uB,EAAe5wC,EAAf4wC,WAE7CC,EAAmB,uCAAG,WAAOpoB,GAAP,mBAAArqB,EAAA,sDAC1BqqB,EAAM8e,iBACEuJ,EAAwC9wC,EAAxC8wC,yBAA0B9pB,EAAchnB,EAAdgnB,UAC5B8B,EAHoB,6BAIrB9B,GAJqB,IAKxB+pB,SAAUC,EACVzB,gBAAiBvoB,EAAUwoB,gBAE7BsB,EAAyBhoB,GARC,2CAAH,sDAWzB,OACE,kBAAC,GAAD,CACErG,KAAMA,EACN7lB,MAAU,SAAL,WAAiBoqB,EAAUmK,MAChCvO,YAAW,2EACXC,iBAAkB,SAClBC,iBAAiB,SACjBH,YAAa,kBAAMguB,GAAW,EAAO3pB,IACrCtE,aAAcmuB,EACd9tB,gBAAiB6tB,EACjB7uB,aAAcA,EACdiB,UAAU,KCCD8I,oBArBf,SAAyBC,EAAOC,GAC9B,MAAO,CACLhF,UAAW+E,EAAM/E,UAAUyoB,aAAarjB,KACxC3J,KAAMsJ,EAAM/E,UAAUyoB,aAAawB,0BACnCL,WAAY7kB,EAAM/E,UAAUyoB,aAAaprB,SACzCtC,aAAcgK,EAAM/E,UAAUyoB,aAAa1tB,iBAI/C,SAA4BuK,EAAUN,GACpC,MAAO,CACL2kB,WAAY,SAACluB,EAAMuE,GACjBsF,EAASlF,GAAkC3E,KAE7CquB,yBAA0B,SAAC9pB,GAEzBsF,EAASvF,GAAwBC,EADpBygB,QAMJ3b,CAGb4kB,IC3BaQ,GANY,SAACC,EAAMC,GAChC,OACED,GAAQA,EAAKrY,MAAK,SAAC16B,EAAG26B,GAAJ,OAAU36B,EAAEgzC,GAAcC,cAActY,EAAEqY,QCe1DxvB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCuT,UAAW,CACT9B,QAASzR,EAAMQ,QAAQ,GACvBqa,YAAa7a,EAAMQ,QAAQ,GAC3B8T,aAActU,EAAMQ,QAAQ,IAE9Bsa,cAAe,CACbjO,SAAU,GACV+G,WAAY,SACZH,WAAYzT,EAAMQ,QAAQ,IAE5BgC,MAAO,CACLiR,WAAYzT,EAAMQ,QAAQ,IAE5BgvB,iBAAkB,GAGlBvU,oBAAqB,GAGrBpF,WAAY,CACVzW,MAAOY,EAAMsN,QAAQuE,UAAUrE,MAEjC0N,aAAc,CACZ9b,MAAOY,EAAMsN,QAAQoG,OAAOlG,MAE9BiiB,cAAe,CACbrwB,MAAOY,EAAMsN,QAAQuE,UAAUrE,MAEjC4T,SAAU,CACR/gB,MAAO,IACPiU,aAActU,EAAMQ,QAAQ,QAI1BkvB,GAAkB,SAACxxC,GACvB,IAAMwiB,EAAUZ,KAEdoF,EAIEhnB,EAJFgnB,UACAG,EAGEnnB,EAHFmnB,8BACAsqB,EAEEzxC,EAFFyxC,yBACAC,EACE1xC,EADF0xC,2BAMF,OACE,kBAAC,IAAMzuB,SAAP,KACE,kBAACoW,GAAA,EAAD,KACE,yBAAK9X,UAAWiB,EAAQ6S,WACtB,kBAACgI,GAAA,EAAD,CAAMhI,WAAS,GACb,kBAACgI,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,yBAAK/b,UAAWiB,EAAQ+a,gBACtB,kBAAC7Z,GAAA,EAAD,CAAYC,QAAQ,KAAKpC,UAAWiB,EAAQoa,eACzC5V,GAAS,UAAOA,EAAUioB,UAAjB,YAA8BjoB,EAAUkoB,WAEpD,kBAACxrB,GAAA,EAAD,CAAYC,QAAQ,YAAYpC,UAAWiB,EAAQ8B,OAChD0C,GAAaA,EAAU1C,SAI9B,kBAAC+Y,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,yBAAK/b,UAAWiB,EAAQ8uB,kBACtB,kBAAC1tB,GAAA,EAAD,CACE6T,UAAW,kBAACxC,GAAA,EAAD,MACX1T,UAAWiB,EAAQ+uB,cACnB1tB,QAAS,kBAAMsD,GAA8B,EAAMH,KAHrD,cASJ,kBAACqW,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,yBAAK/b,UAAWiB,EAAQua,qBACtB,kBAACnZ,GAAA,EAAD,CACE6T,UAAW,kBAACC,GAAA,EAAD,MACXnW,UAAWiB,EAAQmV,WACnB9T,QAAS,kBAAM4tB,EAAyB,gBAAKzqB,MAH/C,oBAOA,kBAACpD,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACXlW,UAAWiB,EAAQwa,aACnBnZ,QAAS,kBACP6tB,GAA2B,EAAD,gBAAY1qB,MAJ1C,iBAyHD2qB,OAvGf,SAAwB3xC,GAQlBA,EANF85B,mBAF4B,IAG5B1H,EAKEpyB,EALFoyB,WACAwf,EAIE5xC,EAJF4xC,qBAEAzB,GAEEnwC,EAHF6lB,SAGE7lB,EAFFmwC,iCACA0B,EACE7xC,EADF6xC,4BAcIrvB,EAVYX,cAAW,SAACC,GAAD,MAAY,CACvCohB,SAAU,CACR/gB,MAAO,IACPiU,aAActU,EAAMQ,QAAQ,IAE9BwvB,uBAAuB,CACrBxjB,UAAWxM,EAAMQ,QAAQ,OAIbV,GArBa,EAyBiB5kB,IAAMQ,SAAS,GAzBhC,mBAyBtBgyC,EAzBsB,KAyBPuC,EAzBO,KAiC7B,GALA/0C,IAAMmB,WAAU,cAGb,CAACqxC,KAECpd,EACH,OAAO,KAGT,IAAMqf,EAA2B,SAACzqB,GAChC4qB,EAAqB5qB,IAGjBG,EAAgC,SAAC1E,EAAMuE,GAC3CmpB,EAAgC1tB,EAAMuE,IAGlC0qB,EAA6B,SAACjvB,EAAMuE,GACxC6qB,EAA4BpvB,EAAMuE,IAGhCgrB,EAAmBC,GAAmB7f,EAAY,aAEhD8f,EAAwC,IAAlB1C,EAAuBwC,EAAmBA,EAAiBpZ,QAAO,SAAA0I,GAAC,OAAGA,EAAEkO,gBAAkBA,KAOtH,OACE,kBAAC,IAAMvsB,SAAP,KAEE,kBAAC,GAAD,MACA,kBAAC,GAAD,MACA,kBAAC,GAAD,MAEA,kBAAC,GAAD,CACU4b,OAAO,mBACPlJ,MAAM,iBACNtT,OAAO,SACPnjB,MAAOswC,EACPtP,aAhBe,SAAChC,GAC5B6T,EAAqB7T,EAAEmB,OAAOngC,QAiBlBs3B,MAjDA,CAAE,CAACtW,GAAG,EAAGhhB,MAAM,YAAaiyB,KAAK,aAAc,CAACjR,GAAG,EAAGhhB,MAAM,gBAAiBiyB,KAAK,iBAAkB,CAACjR,GAAG,EAAGhhB,MAAO,gBAAiBiyB,KAAM,kBAkDzIgP,cAAc,MACd5e,UAAWiB,EAAQ0gB,SACnB7C,WAAW,KACXC,aAAa,QACbC,UAAU,IAKpB,yBAAKhf,UAAWiB,EAAQsvB,wBAIrBI,GACCA,EAAkBjb,KAAI,SAACjQ,GACrB,OACE,kBAAC,GAAD,CACEA,UAAWA,EACX0G,IAAK1G,EAAU9G,GACfuxB,yBAA0BA,EAC1BtqB,8BAA+BA,EAC/BuqB,2BAA4BA,UCzK7B5lB,oBA5Bf,SAAyBC,EAAOC,GAC9B,MAAO,CACLoG,WACErG,EAAMqG,WAAWC,eAAiBtG,EAAMqG,WAAWC,cAAcmE,MACnE3Q,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,OAInE,SAA4BoM,EAAUN,GACpC,MAAO,CACL8N,mBAAoB,SAACjU,GACnByG,EAAS3F,GAA2Bd,KAEtC+rB,qBAAsB,SAAC5qB,GACrBsF,EAASrF,IAAgC,IACzCqF,EAASpF,GAA2BF,KAEtCmpB,gCAAiC,SAAC1tB,EAAMuE,GACtCsF,EpEmB4C,CAChD9H,KAAMC,EAAM1f,kCoEnBRunB,EAASnF,GAA8B1E,EAAMuE,KAE/C6qB,4BAA6B,SAACpvB,EAAMuE,GAClCsF,EAASlF,IAAkC,IAC3CkF,EAASpF,GAA2BF,QAK3B8E,CAA6C6lB,IC3B7CQ,GAd0B,SAAC/f,EAAYpL,GACpD,IAAIorB,EAAyBhgB,EAAW6E,KACtC,SAAC2T,GAAD,OAAOA,EAAEqE,UAAUhM,cAAcoP,OAASzH,EAAEsE,SAASjM,cAAcoP,UAE/DC,EACJtrB,EAAUioB,UAAUhM,cAAcoP,OAClCrrB,EAAUkoB,SAASjM,cAAcoP,OACnC,OAAID,EAAuB5zC,SAAS8zC,ICsDvBC,GAxDe,SAACvyC,GAAW,IAEtCkkB,EAYElkB,EAZFkkB,WACA2qB,EAWE7uC,EAXF6uC,0BACA3lB,EAUElpB,EAVFkpB,oBACAlC,EASEhnB,EATFgnB,UACAqoB,EAQErvC,EARFqvC,gBACAhrB,EAOErkB,EAPFqkB,SACAirB,EAMEtvC,EANFsvC,MACA3pB,EAKE3lB,EALF2lB,OACAyM,EAIEpyB,EAJFoyB,WACAogB,EAGExyC,EAHFwyC,sBACA1D,EAEE9uC,EAFF8uC,gBACAjoB,EACE7mB,EADF6mB,QA2BF,OACE,kBAAC,GAAD,CACE3C,WAAYA,EACZ2qB,0BAA2BA,EAC3B3lB,oBAAqBA,EACrBlC,UAAWA,EACX3C,SAAUA,EACV3B,aA/BiB,SAACwb,GACpBA,EAAEqJ,iBADwB,IAElBvgB,EAAchnB,EAAdgnB,UAER,GAAIyrB,GAAiCrgB,EAAYpL,GAAY,CAE3D,IAAI0rB,EAAqB7rB,EAAU,EAAI,EAEjCiC,EAAO,6BACR9B,GADQ,IAEX+pB,SAAUC,EACVnrB,SAAUF,EAAOzF,GACjB2G,QAASA,EACT0oB,gBAAkBmD,IAIpBF,GAAsB,GACtBnD,EAAgBvmB,QAEhB0pB,GAAsB,IAYtBlD,MAAOA,EACP1yC,MAAM,uBACNkyC,gBAAiBA,EACjBjoB,QAASA,KCbAiF,oBAhCf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAM/E,UAAUyoB,aAAakD,0BACzC9rB,QAASkF,EAAM/E,UAAUyoB,aAAamD,uBACtC5rB,UAAW+E,EAAM/E,UAAUyoB,aAAarjB,KACxC/H,SAAU0H,EAAM/E,UAAUyoB,aAAaprB,SACvC+Q,SAAUrJ,EAAMqJ,SAASua,YAAYnZ,MACrC8Y,MAAOvjB,EAAMqG,WAAWkd,MAAM9Y,MAC9B7Q,OAAQoG,EAAMpG,OAAOA,OAAOyG,KAC5BgG,WAAYrG,EAAMqG,WAAWC,cAAcmE,MAC3CsY,gBAAiB/iB,EAAM/E,UAAUyoB,aAAaX,oBAIlD,SAA4BxiB,EAAUN,GACpC,MAAO,CACL6iB,0BAA2B,SAACpsB,GAC1B6J,EAAS1F,GAAkCnE,GAAM,KAEnDyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAASxF,GAAmC5nB,EAAO0lB,KAErDyqB,gBAAiB,SAACroB,GAEhBsF,EAASvF,GAAwBC,EADpBygB,KAGf+K,sBAAuB,SAAC1D,GACtBxiB,EvETuC,SAACwiB,GAAD,MAAsB,CACjEtqB,KAAMC,EAAMvgB,sCACZ4qC,mBuEOa+D,CAA8B/D,QAK9BhjB,CAGbymB,ICvCI3wB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCwd,UAAW,CACThR,UAAWxM,EAAMQ,QAAQ,GACzB8T,aAActU,EAAMQ,QAAQ,QA8BjBwwB,GA1BQ,SAAC9yC,GACtB,IAAMwiB,EAAUZ,KAEditB,EAIE7uC,EAJF6uC,0BACAroB,EAGExmB,EAHFwmB,WACAsY,EAEE9+B,EAFF8+B,uBAIF,OACE,kBAAC,GAAD,KACE,kBAAC,GAAD,MACA,yBAAKvd,UAAWiB,EAAQ8c,WACtB,kBAAC,GAAD,CACEE,iBAAkBqP,EAClBroB,WAAYA,EACZsY,uBAAwBA,EACxBW,WAAW,mBACXC,kBAAkB,sBAGtB,kBAAC,GAAD,QCVS5T,oBAjBf,SAAyBC,EAAOC,GAC9B,MAAO,CACLxF,WAAYuF,EAAMqG,WAAWC,cAAc7L,eAI/C,SAA4B8F,EAAUN,GACpC,MAAO,CACL6iB,0BAA2B,SAACpsB,GAC1B6J,EAAS1F,GAAkCnE,KAE7Cqc,uBAAwB,SAACtY,GACvB8F,EzER0C,SAAC9F,GAAD,MAAiB,CAC/DhC,KAAMC,EAAM9gB,kCACZ6iB,cyEMausB,CAAiCvsB,QAKjCsF,CAA6CgnB,IClBtDlxB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCuT,UAAW,CACT9B,QAASzR,EAAMQ,QAAQ,GACvBqa,YAAa7a,EAAMQ,QAAQ,GAC3B8T,aAActU,EAAMQ,QAAQ,IAE9Bsa,cAAe,CACbjO,SAAU,GACV+G,WAAY,SACZH,WAAYzT,EAAMQ,QAAQ,GAC1BytB,aAAcjuB,EAAMQ,QAAQ,GAC5B0L,QAAS,UAEX6O,KAAM,CACJtH,WAAYzT,EAAMQ,QAAQ,GAC1B0L,QAAS,SACT+hB,aAAcjuB,EAAMQ,QAAQ,IAE9B0wB,YAAa,CACXzd,WAAYzT,EAAMQ,QAAQ,GAC1B0L,QAAS,SACT+hB,aAAcjuB,EAAMQ,QAAQ,GAC5BpB,MAAOY,EAAMsN,QAAQoG,OAAOlG,KAC5BoG,WAAY,KAEdoH,oBAAqB,CACnBvH,WAAYzT,EAAMQ,QAAQ,IAE5Bya,oBAAqB,GAGrBpF,WAAY,CACVzW,MAAOY,EAAMsN,QAAQuE,UAAUrE,MAEjC0N,aAAc,CACZ9b,MAAOY,EAAMsN,QAAQoG,OAAOlG,MAE9BiO,eAAgB,CACdvP,QAAS,cAIPilB,GAAc,SAACjzC,GAAW,IAE5ByoB,EAIEzoB,EAJFyoB,MACAyqB,EAGElzC,EAHFkzC,qBACAxa,EAEE14B,EAFF04B,2BACAya,EACEnzC,EADFmzC,sBAEI3wB,EAAUZ,KACVsV,EAAYC,OAASC,QAAQ3O,EAAMoQ,kBAEzC,OACE,kBAAC,IAAM5V,SAAP,KACE,kBAACoW,GAAA,EAAD,KACE,yBAAK9X,UAAWiB,EAAQ6S,WACtB,kBAACgI,GAAA,EAAD,CAAMhI,WAAS,GACb,kBAACgI,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,yBAAK/b,UAAWiB,EAAQ+a,gBACtB,kBAAC7Z,GAAA,EAAD,CAAYC,QAAQ,KAAKpC,UAAWiB,EAAQoa,eACzCnU,GAASA,EAAM7F,aAElB,kBAACc,GAAA,EAAD,CAAYC,QAAQ,YAAYpC,UAAWiB,EAAQqa,MAChDpU,GACCA,EAAM2qB,iBADP,iBAEWjc,KAAO1O,EAAM2qB,iBAAiB5b,OACtC,gBAGN,kBAAC9T,GAAA,EAAD,CACEC,QAAQ,YACRpC,UAAW2V,EAAY1U,EAAQwwB,YAAcxwB,EAAQqa,MAEpDpU,GACCA,EAAMoQ,kBADP,iBAEW1B,KAAO1O,EAAMoQ,kBAAkBrB,OACvC,kBAKV,kBAAC6F,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAG,QACZ,yBAAK/b,UAAWiB,EAAQua,qBACtB,kBAACnZ,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACXlW,UAAWiB,EAAQmV,WACnB9T,QAAS,kBAAMqvB,EAAqB,gBAAKzqB,MAH3C,gBAOA,kBAAC7E,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACXlW,UAAWiB,EAAQmV,WACnB9T,QAAS,kBAAM6U,EAA2B,gBAAKjQ,MAHjD,oBAOA,kBAAC7E,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACXlW,UAAWiB,EAAQwa,aACnBnZ,QAAS,kBAAMsvB,GAAsB,EAAD,gBAAY1qB,MAHlD,iBAkFD4qB,GAlEI,SAACrzC,GAAW,IAE3B6lB,EAaE7lB,EAbF6lB,SACAyM,EAYEtyB,EAZFsyB,OACAkG,EAWEx4B,EAXFw4B,wBACA0a,EAUElzC,EAVFkzC,qBACAxa,EASE14B,EATF04B,2BACAkF,EAQE59B,EARF49B,iBACAuV,EAOEnzC,EAPFmzC,sBACAG,EAMEtzC,EANFszC,iBACAC,EAKEvzC,EALFuzC,gBACAxxB,EAIE/hB,EAJF+hB,aACAyxB,EAGExzC,EAHFwzC,yBACAxV,EAEEh+B,EAFFg+B,aACAL,EACE39B,EADF29B,kBAGF3gC,IAAMmB,WACJ,WACM0nB,GACF2S,EAAwB3S,GAEA,IAAtBmY,EAAaC,MACfN,EAAkB9X,KAItB,CAACA,IAOH,OACE,kBAAC,IAAM5C,SAAP,MACwB,IAArB2a,EACC,kBAAC,GAAD,CACEnb,KAAMmb,EACNhhC,MAAK,iBAAY02C,EAAiB1wB,aAClCA,YAAW,sEAAiE0wB,EAAiB1wB,YAAlF,KACXC,iBAAiB,SACjBC,iBAAiB,SACjBH,YAAa,kBAAMwwB,GAAsB,EAAOG,IAChD5wB,aAdoB,SAACwb,GAC3BsV,EAAyBF,IAcnBvwB,gBAAiBwwB,IAAmB,EACpCxxB,aAAcA,GAAgB,GAC9BiB,UAAU,IAEV,KACHsP,GACCA,EAAO2E,KAAI,SAACxO,GACV,OACE,kBAAC,GAAD,CACEA,MAAOA,EACPiF,IAAKjF,EAAMvI,GACXgzB,qBAAsBA,EACtBxa,2BAA4BA,EAC5Bya,sBAAuBA,SC9HtBrnB,oBAtCf,SAAyBC,EAAOC,GAC9B,MAAO,CACLnG,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,GAC/DoS,OAAQvG,EAAMuG,OAAOC,eAAeiE,MACpCoH,iBAAkB7R,EAAMuG,OAAOmhB,YAAYvvB,WAC3CovB,iBAAkBvnB,EAAMuG,OAAOmhB,YAAYhrB,MAC3C1G,aAAcgK,EAAMuG,OAAOmhB,YAAY1xB,aACvCwxB,gBAAiBxnB,EAAMuG,OAAOmhB,YAAYpvB,SAC1C8Y,UAAWpR,EAAMoS,SAASC,aAAa5H,MACvCwH,aAAcjS,EAAME,MAAMtuB,KAAKyuB,SAInC,SAA4BE,EAAUN,GACpC,MAAO,CACLwM,wBAAyB,SAAC3S,GACxByG,EAASjE,GAAgCxC,KAE3CqtB,qBAAsB,SAACzqB,GACrB6D,EAAS3D,IAA4B,IACrC2D,EAAS1D,GAAuBH,KAElCiQ,2BAA4B,SAACjQ,GAC3B6D,EAAS5D,IAA2B,IACpC4D,EAAS1D,GAAuBH,KAElC0qB,sBAAuB,SAAC1wB,EAAMgG,GAC5B6D,EzEOuC,SAAC7J,EAAMgG,GAAP,MAAkB,CAC7DjE,KAAMC,EAAMhc,yBACZga,OACAgG,SyEVairB,CAA8BjxB,EAAMgG,KAE/C+qB,yBAA0B,SAAC/qB,GACzB6D,EzEU0C,SAAC7D,GAAD,MAAY,CAC1DjE,KAAMC,EAAM/b,aACZ+f,SyEZakrB,CAAiClrB,KAE5CkV,kBAAmB,SAAC9X,GAClByG,EAASlB,GAA0BC,GAA+BxF,QAKzDiG,CAA6CunB,IChCtDzxB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCigB,OAAQ,GACRC,YAAa,CACX9S,WAAY,WAEd+S,cAAe,CACb9f,MAAO,IACPoT,WAAYzT,EAAMQ,QAAQ,GAC1B4f,cAAepgB,EAAMQ,QAAQ,IAE/BJ,aAAc,CACZC,MAAO,IACPC,MAAO,QACPC,OAAQP,EAAMQ,QAAQ,IAExB6f,OAAQ,CACNjT,WAAY,WAEd0W,OAAQ,CACNvjB,OAAQ,EACRkR,QAAS,GAEXoS,eAAgB,CACdxjB,MAAO,QAET0J,aAAc,CACZmC,QAAS,QACTM,UAAWxM,EAAMQ,QAAQ,GACzB8T,aAActU,EAAMQ,QAAQ,IAE9BujB,aAAc,CACZvX,UAAW,YA+OAslB,GA3Oe,SAAC5zC,GAAW,IAEtCkkB,EAWElkB,EAXFkkB,WACAG,EAUErkB,EAVFqkB,SACA6E,EASElpB,EATFkpB,oBACA2qB,EAQE7zC,EARF6zC,sBACAnxB,EAOE1iB,EAPF0iB,aACA9lB,EAMEoD,EANFpD,MACA6rB,EAKEzoB,EALFyoB,MARqC,EAanCzoB,EAJF6iB,wBATqC,MASlB,MATkB,EAUrCsa,EAGEn9B,EAHFm9B,UACA6I,EAEEhmC,EAFFgmC,iBACAxB,EACExkC,EADFwkC,uBAEIhiB,EAAUZ,KAIVuiB,GAFgBhH,EAAUvE,QAAO,SAAC0I,GAAD,OAAsB,IAAfA,EAAEC,YAE1B,WACpBsS,GAAsB,KAOlB3N,EAAoB,SAAChI,EAAG/U,GAK1BD,EAHAC,IAAmBgd,EAAgB5oB,gBACnC4L,IAAmBgd,EAAgB3oB,gBAEf0gB,EAEAA,EAAEmB,OAAOngC,MAFNiqB,IAYrBid,EAAuB,SAACC,GAAsB,IAC3C1pC,EAAY8rB,EAAZ9rB,SACD2pC,EAAkBxB,GAAwBnoC,EAAU0pC,GAC1Dnd,EAAoBod,EAAiBH,EAAgB1oB,sBAGvD,OACE,kBAAC,IAAMwF,SAAP,KACE,kBAAC,GAAD,CAAoBygB,uBAdO,SAAC7X,GAAkB,IACzClvB,EAAY8rB,EAAZ9rB,SACD2pC,EAAkB7B,GAAmB9nC,EAAUkvB,GACrD3C,EAAoBod,EAAiBH,EAAgB1oB,sBAWiBqmB,cAAc,IAClF,kBAAC,GAAD,CACErhB,KAAMyB,EACNhB,QAASihB,EACThhB,kBAAgB,qBAChBC,mBAAiB,2BACjB7B,UAAWiB,EAAQuf,QAElB1d,EAAW,kBAAChB,GAAA,EAAD,MAAqB,GACjC,kBAACC,GAAA,EAAD,CAAapD,GAAG,qBAAqBqB,UAAWiB,EAAQwf,aACrDplC,GAEH,0BAAM2pC,SAAU7jB,GACd,kBAACa,GAAA,EAAD,CAAehC,UAAWiB,EAAQyf,eAChC,kBAAC5E,GAAA,EAAD,CAAMhI,WAAS,EAAC9T,UAAWiB,EAAQgkB,cAAelkB,QAAS,GACzD,kBAAC+a,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IACb,kBAACmJ,GAAA,EAAD,CACEvmB,GAAG,cACHyV,MAAM,cACNqR,WAAS,EACTC,KAAM,EACN7G,WAAS,EACTzc,QAAQ,WACRyb,SAAU,SAAClB,GAAD,OACRgI,EAAkBhI,EAAGiI,EAAgBjpB,cAEvChe,MAAOupB,EAAM7F,YACb2d,UAAU,KAiBd,kBAAClD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACEvmB,GAAG,YACHyV,MAAM,wBACNnR,KAAK,SACL2a,WAAY,CAAEwH,IAAK,EAAGmN,KAAM,KAC5B1U,SAAU,SAAClB,GAAD,OACRgI,EAAkBhI,EAAGiI,EAAgB/oB,YAEvCle,MAAOupB,EAAMoe,WAAa,GAC1BzG,WAAS,KAGb,kBAAC/C,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAEb,kBAAC,GAAD,CACEuB,OAAO,YACPlJ,MAAM,aACNtT,OAAO,SACPnjB,MAAOupB,EAAMsrB,YACb7T,aAAc,SAAChC,GAAD,OACZgI,EAAkBhI,EAAGiI,EAAgB9oB,aAEvCmZ,MAAOlW,EAAWA,WAClB6f,cAAc,OACd5e,UAAWiB,EAAQ0gB,SACnB7C,WAAW,KACXC,aAAa,QACbC,UAAU,KAGd,kBAAClD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACEvmB,GAAG,mBACHyV,MAAM,oBACNyJ,SAAU,SAAClB,GAAD,OACRgI,EAAkBhI,EAAGiI,EAAgB7oB,oBAEvCpe,MAAOupB,EAAMurB,iBACb5T,WAAS,KAGb,kBAAC/C,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IAyBJ,kBAACD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQukB,kBAChD,kBAACN,GAAA,EAAD,CACEvmB,GAAG,SACHyV,MAAM,QACNqR,WAAS,EACTC,KAAM,EACN7G,WAAS,EACTzc,QAAQ,WACRyb,SAAU,SAAClB,GAAD,OAAOgI,EAAkBhI,EAAGiI,EAAgBhpB,cACtDje,MAAOupB,EAAMye,SAIflB,EACC,kBAAC3I,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACEjiB,KAAK,OACLua,YAAY,kBACZoI,aAAc1e,EAAM9rB,SACpBgnB,QAAQ,WACRwb,WAAY,CAAEiI,UAAU,GACxBhH,WAAS,EACTlhC,MAAOupB,EAAM9rB,WAEf,kBAAC,GAAD,CAAqBwoC,uBAA0B1c,EAAM9rB,SAAUyoC,iBAAoBgB,EAAsBf,QAASW,KAGpH,kBAAC3I,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IACd,kBAAC,GAAD,CAAqB6H,uBAA0B1c,EAAM9rB,SAAUyoC,iBAAoBgB,EAAsBf,QAASW,KAGpHA,GACC,kBAAC3I,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAAC1Z,GAAA,EAAD,CACE1C,MAAM,UACNyC,QAAQ,YACRpC,WAAYiB,EAAQmjB,eAAgBnjB,EAAQqjB,cAC5C3lB,GAAG,mBACH2D,QAlLe,WAC/B2gB,GAAuB,KAmLN,aAMX,kBAAC/gB,GAAA,EAAD,CAAelC,UAAWiB,EAAQ2f,QAChC,kBAACve,GAAA,EAAD,CACEC,QAASsgB,EACTjjB,MAAM,UACNyC,QAAQ,WACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,gBALL,UASA,kBAAC0D,GAAA,EAAD,CACEY,KAAK,SACLtD,MAAM,UACNyC,QAAQ,YACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,kBAGF2C,QC/OAoxB,GAvCW,SAACj0C,GAAW,IAElCkkB,EAUElkB,EAVFkkB,WACAuE,EASEzoB,EATFyoB,MACApE,EAQErkB,EARFqkB,SACAwB,EAOE7lB,EAPF6lB,SACAguB,EAME7zC,EANF6zC,sBACA3qB,EAKElpB,EALFkpB,oBACAgrB,EAIEl0C,EAJFk0C,YAEA1P,GAEExkC,EAHFg+B,aAGEh+B,EAFFwkC,wBACArH,EACEn9B,EADFm9B,UAUF,OACE,kBAAC,IAAMla,SAAP,KACE,kBAAC,GAAD,CACEiB,WAAYA,EACZG,SAAUA,EACV6E,oBAAqBA,EACrB2qB,sBAAuBA,EACvBnxB,aAde,SAACwb,GACpBA,EAAEqJ,iBACF9e,EAAM5C,SAAWA,EACjB4C,EAAM0rB,aAAe,EACrBD,EAAYzrB,IAWR7rB,MAAM,mBACN6rB,MAAOA,EACP0U,UAAWA,EACX6I,kBAAkB,EAClBxB,uBAAwBA,MCIjB1Y,oBA7Bf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAMtD,MAAMkJ,SAASyiB,sBACjC3rB,MAAOsD,EAAMtD,MAAMkJ,SAASvF,KAC5B/H,SAAU0H,EAAMtD,MAAMkJ,SAAStN,SAC/BwB,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,GAC/Did,UAAWpR,EAAMoS,SAASC,aAAa5B,UACvCwB,aAAcjS,EAAME,MAAMtuB,KAAKyuB,SAInC,SAA4BE,EAAUN,GACpC,MAAO,CACL6nB,sBAAuB,SAACpxB,GACtB6J,EAAShE,GAA8B7F,KAEzCyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAAS/D,GAA+BrpB,EAAO0lB,KAEjDsvB,YAAa,SAACrsB,GAEZyE,EAAS9D,GAAoBX,EADhB4f,KAGfjD,uBAAwB,SAAC/hB,GACvB6J,EAASf,GAA+B9I,QAK/BqJ,CAA6CmoB,ICnCtDryB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvC+oB,WAAY,CACV3pB,MAAOY,EAAMsN,QAAQoG,OAAO5B,OAE9BiJ,KAAM,GACNmW,YAAa,CACX9xB,MAAOY,EAAMsN,QAAQoG,OAAOlG,UAoDjB+kB,GAhDW,SAACr0C,GACzB,IAAMwiB,EAAUZ,KAEdunB,EAKEnpC,EALFmpC,OACAzW,EAIE1yB,EAJF0yB,OACAwE,EAGEl3B,EAHFk3B,UACAod,EAEEt0C,EAFFs0C,sBACAC,EACEv0C,EADFu0C,6BAGF,OACE,kBAAC,IAAMtxB,SAAP,KACE,kBAACymB,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC7BxS,KAAOgS,EAAOS,YAAYpS,OAAO,gBAEpC,kBAACkS,GAAA,EAAD,CACEhqC,UAAU,KACViqC,MAAM,MACNpoB,UAAW2V,EAAY1U,EAAQwwB,YAAcxwB,EAAQqa,MAEpD1F,KAAOgS,EAAOqL,eAAehd,OAAO,gBAEvC,kBAACkS,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC7BR,EAAOjC,OAEV,kBAACwC,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,MAAME,MAAM,UAC1C,kBAACrc,GAAA,EAAD,CACEC,aAAW,OACXlM,UAAWiB,EAAQyoB,SACnBC,KAAK,QACLrnB,QAAS,kBAAMywB,GAAsB,EAAMnL,EAAOjpB,GAAIwS,KAEtD,kBAACgF,GAAA,EAAD,OAGF,kBAAClK,GAAA,EAAD,CACEC,aAAW,SACXlM,UAAWiB,EAAQqoB,WACnBK,KAAK,QACLrnB,QAAS,kBAAM0wB,EAA6BpL,EAAOjpB,MAEnD,kBAACirB,GAAA,EAAD,UCtCJvpB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvC8mB,aAAc,CACZpa,WAAY,GACZtN,MAAOY,EAAMsN,QAAQyZ,SAASvZ,MAEhCwZ,iBAAkB,CAChBzmB,OAAQP,EAAMQ,QAAQ,GACtBkM,WAAY,GAEdua,IAAK,CACH1mB,OAAQP,EAAMQ,QAAQ,IAExBgS,OAAQ,CACNjS,OAAQP,EAAMQ,QAAQ,GACtBH,MAAO,IACPqN,OAAQ,kBACRwZ,YAAa,IACbrK,KAAM,GAERsK,aAAc,CACZ7a,YAAatM,EAAMQ,QAAQ,QAsIhBmyB,GAlIS,SAACz0C,GACvB,IAAMwiB,EAAUZ,KAEdunB,EAMEnpC,EANFmpC,OACAuL,EAKE10C,EALF00C,iCACAJ,EAIEt0C,EAJFs0C,sBACAK,EAGE30C,EAHF20C,2BACApL,EAEEvpC,EAFFupC,uBACApB,EACEnoC,EADFmoC,eAGIqB,EAAkBxsC,IAAMysC,YAsB9B,OACE,kBAAC,IAAMxmB,SAAP,KACE,kBAACymB,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC9B,kBAAC,GAAD,CACEzpB,GAAG,kBACH2e,OAAO,kBACPjiC,MAAM,OACNgrC,iBAAkB,SAAC/K,GAAD,OAChB6X,EAAiC7X,EAAMsJ,EAAgBzoB,cAEzDmqB,aAAcsB,EAAOS,WACrBrJ,UAAU,KAGd,kBAACmJ,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAChC,kBAAClD,GAAA,EAAD,CACIvmB,GAAG,cACHyV,MAAM,aACNiK,UAAQ,EACR1gC,MAAQi4B,KAAOgS,EAAOqL,eAAehd,OAAO,eAC5C4I,WAAS,KAIb,kBAACsJ,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC9B,kBAAClD,GAAA,EAAD,CACEvmB,GAAG,cACHyV,MAAM,QACNyJ,SAAU,SAAClB,GAAD,OACRwW,EAAiCxW,EAAGiI,EAAgBxoB,eAEtDze,MAAQiqC,EAAOjC,MACf9G,WAAS,EACT4G,WAAS,EACT4N,QAAS,KAGb,kBAAClL,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,MAAME,MAAM,UAC1C,kBAAC,IAAM5mB,SAAP,KAEE,kBAACoa,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAACpmB,GAAA,EAAD,CAAYnC,UAAWiB,EAAQmT,OAA/B,gBAEF,kBAAC0H,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAACC,GAAA,EAAD,CACE7pB,GAAG,mBACHgB,MAAM,UACNyC,QAAQ,WACR8J,aAAW,MACX5J,QArEQ,SAAC4E,GACnB+gB,EAAgBQ,QAAQ3sC,SAAS,GAAG4sC,SAqE1B1oB,UAAS,UAAKiB,EAAQsmB,iBAAb,YAAiCtmB,EAAQ8R,SAElD,kBAAC,KAAD,CAAgB/S,UAAWiB,EAAQymB,eARrC,iBAUE,kBAACiB,GAAA,EAAD,CACE1lB,KAAK,OACL2lB,IAAKX,EACLY,UAAU,EACVhL,SA1EY,SAAC3W,GACzBA,EAAM8e,iBACN,IAAM8C,EAAO5hB,EAAM4W,OAAOiL,MAAM,GAC1BC,EAAS,CACbC,YAAY,EACZC,SAAS,EACTlC,SAAU8B,EACVlZ,KAAMkZ,EAAKlZ,MAEbujB,EACEnK,EACApE,EAAgBvoB,yBAElB4rB,EAAgBQ,QAAQ3sC,SAAS,GAAG6B,MAAQ,MA8DhC6kB,MAAO,CAAEiK,QAAS,YAIvBma,GACC,kBAAC9K,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAAC,GAAD,CACE3B,eAAgBA,EAChBC,mBAAoBmB,OAM9B,kBAACG,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,MAAME,MAAM,UAC1C,kBAAC,IAAM5mB,SAAP,KACE,kBAACW,GAAA,EAAD,CACEC,QAAS8wB,EACTzzB,MAAM,UACNyC,QAAQ,WACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,cALL,QASA,kBAAC0D,GAAA,EAAD,CACEC,QAAS,kBAAMywB,GAAsB,EAAOnL,EAAOjpB,KACnDqB,UAAWiB,EAAQomB,aACnB1oB,GAAG,gBAHL,cC/IJ0B,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCspB,qBAAsB,CACpB7X,QAASzR,EAAMQ,QAAQ,GACvBgM,UAAWxM,EAAMQ,QAAQ,GACzB8T,aAActU,EAAMQ,QAAQ,IAE9B+oB,MAAO,CACLrL,SAAU,KAEZsL,SAAU,CACR5V,WAAY,SAoED6V,GAhEK,SAACvrC,GACnB,IAAMwiB,EAAUZ,KAEd4pB,EAUExrC,EAVFwrC,QACA+I,EASEv0C,EATFu0C,6BACAD,EAQEt0C,EARFs0C,sBACA7I,EAOEzrC,EAPFyrC,oBACAC,EAME1rC,EANF0rC,kBACAgJ,EAKE10C,EALF00C,iCACAC,EAIE30C,EAJF20C,2BACAjiB,EAGE1yB,EAHF0yB,OACA6W,EAEEvpC,EAFFupC,uBACApB,EACEnoC,EADFmoC,eAGF,OACE,kBAACwD,GAAA,EAAD,CAAgBjsC,UAAW25B,KAAO9X,UAAWiB,EAAQ4oB,sBACnD,kBAACQ,GAAA,EAAD,CAAOrqB,UAAWiB,EAAQ6oB,MAAO5d,aAAW,gBAC1C,kBAACoe,GAAA,EAAD,KACE,kBAACC,GAAA,EAAD,KACE,kBAACpC,GAAA,EAAD,CAAWnoB,UAAWiB,EAAQ8oB,UAA9B,QACA,kBAAC5B,GAAA,EAAD,CAAWnoB,UAAWiB,EAAQ8oB,UAA9B,cACA,kBAAC5B,GAAA,EAAD,CAAWnoB,UAAWiB,EAAQ8oB,UAA9B,SACA,kBAAC5B,GAAA,EAAD,CAAWnoB,UAAWiB,EAAQ8oB,SAAUzB,MAAM,aAGlD,kBAACkC,GAAA,EAAD,KACGP,EAAQvU,KAAI,SAACkS,GACZ,IAAMjS,EAAYC,OAASC,QAAQ+R,EAAOqL,eAEpCxI,EACJP,GAAuBtC,EAAOjpB,KAAOwrB,EAAkBxrB,GAEzD,OACE,kBAAC4rB,GAAA,EAAD,CAAUpe,IAAKyb,EAAOjpB,IACnB8rB,EACC,kBAAC,GAAD,CACE7C,OAAQuC,EACRgJ,iCACEA,EAEFJ,sBAAuBA,EACvBK,2BAA4BA,EAC5BxM,eAAgBA,EAChBoB,uBAAwBA,IAG1B,kBAAC,GAAD,CACEJ,OAAQA,EACRzW,OAAQA,EACRwE,UAAWA,EACXod,sBAAuBA,EACvBC,6BAA8BA,YCzE5C3yB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvC+yB,mBAAoB,CAClBthB,QAASzR,EAAMQ,QAAQ,GACvBgM,UAAWxM,EAAMQ,QAAQ,IAE3B6pB,OAAQ,CACNjK,cAAepgB,EAAMQ,QAAQ,IAE/BkkB,cAAe,CACbtE,cAAepgB,EAAMQ,QAAQ,IAE/BwmB,iBAAkB,CAChBzmB,OAAQP,EAAMQ,QAAQ,GACtBkM,WAAY,GAEdua,IAAK,CACH1mB,OAAQP,EAAMQ,QAAQ,IAExBgS,OAAQ,CACNjS,OAAQP,EAAMQ,QAAQ,GACtBH,MAAO,IACPqN,OAAQ,kBACRwZ,YAAa,IACbrK,KAAM,GAERsK,aAAc,CACZ7a,YAAatM,EAAMQ,QAAQ,QAkGhB8pB,GA9FG,SAACpsC,GACjB,IAAMwiB,EAAUZ,KAEdunB,EAKEnpC,EALFmpC,OACAjD,EAIElmC,EAJFkmC,kBACA4O,EAGE90C,EAHF80C,mBACAvL,EAEEvpC,EAFFupC,uBACApB,EACEnoC,EADFmoC,eAGIqB,EAAkBxsC,IAAMysC,YAmB9B,OACE,0BAAMlD,SAAUuO,GACd,kBAACzX,GAAA,EAAD,CAAMhI,WAAS,EAAC/S,QAAS,EAAGf,UAAWiB,EAAQgkB,eAC7C,kBAACnJ,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAAC,GAAD,CACEpd,GAAG,kBACH2e,OAAO,kBACPjiC,MAAM,OACNgrC,iBAAkB,SAAC/K,GAAD,OAChBqJ,EAAkBrJ,EAAMsJ,EAAgBzoB,cAE1CmqB,aAAcsB,EAAOS,WACrBrJ,UAAU,KAGd,kBAAClD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IACf,kBAACD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IACb,kBAACmJ,GAAA,EAAD,CACEvmB,GAAG,cACHyV,MAAM,QACNqR,WAAS,EACTC,KAAM,EACN7G,WAAS,EACTzc,QAAQ,WACRyb,SAAU,SAAClB,GAAD,OAAOgI,EAAkBhI,EAAGiI,EAAgBxoB,eACtDze,MAAOiqC,EAAOjC,SAIlB,kBAAC7J,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAACpmB,GAAA,EAAD,CAAYnC,UAAWiB,EAAQmT,OAA/B,gBAEF,kBAAC0H,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAACC,GAAA,EAAD,CACE7pB,GAAG,mBACHgB,MAAM,UACNyC,QAAQ,WACR8J,aAAW,MACX5J,QAvDU,SAAC4E,GACnB+gB,EAAgBQ,QAAQ3sC,SAAS,GAAG4sC,SAuD5B1oB,UAAS,UAAKiB,EAAQsmB,iBAAb,YAAiCtmB,EAAQ8R,SAElD,kBAAC,KAAD,CAAgB/S,UAAWiB,EAAQymB,eARrC,iBAUE,kBAACiB,GAAA,EAAD,CACE1lB,KAAK,OACL2lB,IAAKX,EACLY,UAAU,EACVhL,SA5Dc,SAAC3W,GACzBA,EAAM8e,iBACN,IAAM8C,EAAO5hB,EAAM4W,OAAOiL,MAAM,GAC1BC,EAAS,CACbC,YAAY,EACZC,SAAS,EACTlC,SAAU8B,EACVlZ,KAAMkZ,EAAKlZ,MAEb+U,EAAkBqE,EAAQpE,EAAgBvoB,yBAC1C4rB,EAAgBQ,QAAQ3sC,SAAS,GAAG6B,MAAQ,MAmDlC6kB,MAAO,CAAEiK,QAAS,YAIvBma,GACC,kBAAC9K,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAAC,GAAD,CACE3B,eAAgBA,EAChBC,mBAAoBmB,QC5G5B3nB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCigB,OAAQ,GACRC,YAAa,CACX9S,WAAY,WAEd+S,cAAe,CACb9f,MAAO,IACPoT,WAAYzT,EAAMQ,QAAQ,GAC1B4f,cAAepgB,EAAMQ,QAAQ,IAE/BJ,aAAc,CACZC,MAAO,IACPC,MAAO,QACPC,OAAQP,EAAMQ,QAAQ,IAExB6f,OAAQ,CACNjT,WAAY,eAkGD6lB,GA9Fc,SAAC/0C,GAC5B,IAAMwiB,EAAUZ,KAEdsC,EAUElkB,EAVFkkB,WACA8wB,EASEh1C,EATFg1C,2BACA3wB,EAQErkB,EARFqkB,SACA8kB,EAOEnpC,EAPFmpC,OACAjgB,EAMElpB,EANFkpB,oBACAT,EAKEzoB,EALFyoB,MACAikB,EAIE1sC,EAJF0sC,aACAvE,EAGEnoC,EAHFmoC,eACAC,EAEEpoC,EAFFooC,mBACAviB,EACE7lB,EADF6lB,SAGIse,EAAgB,WACpB6Q,GAA2B,IAGvBF,EAAqB,SAAC5W,GAC1BA,EAAEqJ,iBAEF,IAAMze,EAAO,2BACXmsB,QAASxsB,EAAMvI,IACZipB,GAFQ,IAGXqL,cAAevI,GAAuB9C,EAAOS,WAAYnhB,EAAMoe,aAEjE6F,EAAa5jB,EAAS2e,EAAmB5hB,IAoB3C,OACE,kBAAC,IAAM5C,SAAP,KACE,kBAAC,GAAD,CACER,KAAMyB,EACNhB,QAASihB,EACThhB,kBAAgB,qBAChBC,mBAAiB,2BACjB7B,UAAWiB,EAAQuf,QAElB1d,EAAW,kBAAChB,GAAA,EAAD,MAAqB,GACjC,kBAACC,GAAA,EAAD,CAAapD,GAAG,qBAAqBqB,UAAWiB,EAAQwf,aAAxD,cAGA,0BAAMuE,SAAUuO,GACd,kBAACvxB,GAAA,EAAD,CAAehC,UAAWiB,EAAQyf,eAChC,kBAAC,GAAD,CACEkH,OAAQA,EACRjD,kBA9Bc,SAAChI,EAAG/U,GAO1BD,EALAC,IAAmBgd,EAAgB5oB,gBACnC4L,IAAmBgd,EAAgB3oB,iBACnC2L,IAAmBgd,EAAgBzoB,aACnCyL,IAAmBgd,EAAgBvoB,wBAEfsgB,EAEAA,EAAEmB,OAAOngC,MAFNiqB,IAwBf2rB,mBAAoBA,EACpB3M,eAAgBA,EAChBoB,uBArCmB,SAACvhB,GAC9BogB,EAAmBpgB,OAuCb,kBAACvE,GAAA,EAAD,CAAelC,UAAWiB,EAAQ2f,QAChC,kBAACve,GAAA,EAAD,CACErC,UAAWiB,EAAQN,aACnByB,QAAQ,WACRE,QAASsgB,GAHX,UAOA,kBAACvgB,GAAA,EAAD,CACEY,KAAK,SACLtD,MAAM,UACNK,UAAWiB,EAAQN,aACnByB,QAAQ,YACR8T,UAAW,kBAACqV,GAAA,EAAD,OALb,YC5EGhhB,oBA5Bf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAMtD,MAAMsJ,UAAUmjB,yBAClC7wB,SAAU0H,EAAMtD,MAAMsJ,UAAU1N,SAChC8kB,OAAQpd,EAAMtD,MAAMsJ,UAAU3F,KAC9B3D,MAAOsD,EAAMtD,MAAMkJ,SAASvF,KAC5B+b,eAAgBpc,EAAMtD,MAAMsJ,UAAU3F,KAAK4gB,gBAC3CnnB,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,OAInE,SAA4BoM,EAAUN,GACpC,MAAO,CACLgpB,2BAA4B,SAACvyB,GAC3B6J,EAASvD,GAAiCtG,KAE5CyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAAS/D,GAA+BrpB,EAAO0lB,KAEjD8nB,aAAc,SAAC5jB,EAAS/D,EAAMc,GAC5ByG,EAASzD,GAAqBC,EAAS/D,EAAMc,KAE/CuiB,mBAAoB,SAACpgB,GACnBsE,ElFkEqC,SAACtE,GAAD,MAAiB,CAC1DxD,KAAMC,EAAMlN,+BACZyQ,ckFpEamtB,CAA4BntB,QAK5B8D,CAGbipB,IC9BInzB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCsgB,YAAa,CACXpU,QAAS,eACTM,UAAW,GAEb4e,yBAA0B,CACxB3Z,QAASzR,EAAMQ,QAAQ,IAEzBggB,UAAW,CACT9T,YAAa,IAEf4mB,UAAW,CACT1f,WAAY,KAEdyX,gBAAiB,CACf7e,UAAW,OA8HA+mB,GA1HQ,SAACr1C,GAAW,IAE/ByoB,EAgBEzoB,EAhBFyoB,MACA6sB,EAeEt1C,EAfFs1C,mBACAC,EAcEv1C,EAdFu1C,wBACA/J,EAaExrC,EAbFwrC,QACAgK,EAYEx1C,EAZFw1C,+BACA9I,EAWE1sC,EAXF0sC,aACA4H,EAUEt0C,EAVFs0C,sBACA7I,EASEzrC,EATFyrC,oBACAC,EAQE1rC,EARF0rC,kBACA+J,EAOEz1C,EAPFy1C,mCACAT,EAMEh1C,EANFg1C,2BACAE,EAKEl1C,EALFk1C,yBACAxiB,EAIE1yB,EAJF0yB,OACA0V,EAGEpoC,EAHFooC,mBACAD,EAEEnoC,EAFFmoC,eACAtiB,EACE7lB,EADF6lB,SAEIrD,EAAUZ,KAEhB5kB,IAAMmB,WACJ,WACEo3C,EAAwB9sB,EAAMvI,MAIhC,CAACuI,EAAMvI,KAyCT,OACE,kBAAC,IAAM+C,SAAP,KACGiyB,EAA2B,kBAAC,GAAD,MAA2B,KAEvD,yBAAK3zB,UAAWiB,EAAQsgB,oBACtB,kBAACtV,GAAA,EAAD,CACEC,aAAW,mBACXvM,MAAM,UACN2C,QAAS,kBAAMyxB,GAAmB,IAClCp1B,GAAG,kBACHqB,UAAWiB,EAAQ8f,WAEnB,kBAACiC,GAAA,EAAD,CAAerjB,MAAM,aAEvB,kBAACwC,GAAA,EAAD,CAAYnC,UAAWiB,EAAQ4f,aAA/B,WAGF,yBAAK7gB,UAAWiB,EAAQirB,qBACtB,kBAAC/pB,GAAA,EAAD,CAAYnC,UAAWiB,EAAQ4yB,WAC5B3sB,EAAM7F,cAIX,kBAACgB,GAAA,EAAD,CACE1C,MAAM,UACNyC,QAAQ,YACRpC,UAAWiB,EAAQ2qB,gBACnBtpB,QAAS,kBAAMmxB,GAA2B,KAJ5C,cAeA,kBAAC,GAAD,CACExJ,QAASA,EACT+I,6BAnE+B,SAAC7G,GACpC,IAAM5kB,EAAU,CACdmsB,QAASxsB,EAAMvI,GACfwtB,YAEF8H,EAA+B1sB,IA+D3BwrB,sBAAuBA,EACvB7I,oBAAqBA,EACrBC,kBAAmBA,EACnBgJ,iCAlFmC,SAACxW,EAAG/U,GAKzCssB,EAHAtsB,IAAmBgd,EAAgBzoB,aACnCyL,IAAmBgd,EAAgBvoB,wBAEAsgB,EAEAA,EAAEmB,OAAOngC,MAFNiqB,IA8EpCwrB,2BA5D6B,SAACzW,GAClCA,EAAEqJ,iBAEF,IAAMze,EAAO,2BACXmsB,QAASxsB,EAAMvI,IACZwrB,GAFQ,IAGX8I,cAAevI,GACbP,EAAkB9B,WAClBnhB,EAAMoe,aAIV6F,EAAa5jB,EAAS2e,EAAmB5hB,IAiDrC6M,OAAQA,EACR6W,uBAlEyB,SAACvhB,GAC9BogB,EAAmBpgB,IAkEfmgB,eAAgBA,MChETrc,oBA7Df,SAAyBC,EAAOC,GAC9B,MAAO,CACLuiB,UAAWxiB,EAAMtD,MAAMkJ,SAAS+jB,mBAChCjtB,MAAOsD,EAAMtD,MAAMkJ,SAASvF,KAC5BvG,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,GAC/DsrB,QAASzf,EAAMtD,MAAMmJ,mBAAmB4E,MACxC2S,OAAQpd,EAAMtD,MAAMsJ,UAAU3F,KAC9Bqf,oBAAqB1f,EAAMtD,MAAMklB,WAAWC,OAC5ClC,kBAAmB3f,EAAMtD,MAAMklB,WAAWvhB,KAC1C8oB,yBAA0BnpB,EAAMtD,MAAMsJ,UAAUmjB,yBAChDlX,aAAcjS,EAAME,MAAMtuB,KAAKyuB,KAC/B+b,eAAgBpc,EAAMtD,MAAMklB,WAAWvhB,KAAK4gB,oBAIhD,SAA4B1gB,EAAUN,GACpC,MAAO,CACLspB,mBAAoB,SAAC7yB,GACnB6J,EAAS5D,GAA2BjG,KAEtCyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAAS/D,GAA+BrpB,EAAO0lB,KAEjDsvB,YAAa,SAACrsB,GAEZyE,EAAS9D,GAAoBX,EADhB4f,KAGf8N,wBAAyB,SAACN,GACxB3oB,EpFUyC,SAAC2oB,GAAD,MAAc,CAC3DzwB,KAAMC,EAAM1b,4BACZksC,WoFZaU,CAAgCV,KAE3CO,+BAAgC,SAAC1sB,GAC/BwD,EpFY8C,SAACxD,GAAD,MAAc,CAChEtE,KAAMC,EAAMrb,oBACZ0f,WoFda8sB,CAAqC9sB,KAEhD4jB,aAAc,SAAC5jB,EAAS/D,EAAMc,GAC5ByG,EAASzD,GAAqBC,EAAS/D,EAAMc,KAE/CyuB,sBAAuB,SAACvG,EAAsBL,EAAUtlB,GACtDkE,EpFkBuC,SAC3CyhB,EACAL,GAF2C,MAGvC,CACJlpB,KAAMC,EAAM3V,yBACZi/B,uBACAL,YoFxBamI,CAA8B9H,EAAsBL,IAC7DphB,EpF6C2D,SAC/DpE,EACAC,EACAC,GAH+D,MAI3D,CACJ5D,KAAMC,EAAMhN,kCACZyQ,eACAC,WACAC,kBoFpDM0tB,CACE7H,GACAP,EACAtlB,KAINqtB,mCAAoC,SAACv2C,EAAO0lB,GAC1C0H,EpFiBkD,SACtDptB,EACA0lB,GAFsD,MAGlD,CACJJ,KAAMC,EAAMrV,+BACZlQ,QACA0lB,kBoFvBamxB,CAAyC72C,EAAO0lB,KAE3DowB,2BAA4B,SAACvyB,GAC3B6J,EAASvD,GAAiCtG,KAE5C+hB,uBAAwB,SAAC/hB,GACvB6J,EAASf,GAA+B9I,KAE1C2lB,mBAAoB,SAACpgB,GACnBsE,EpFsCyC,SAACtE,GAAD,MAAiB,CAC9DxD,KAAMC,EAAMjN,oCACZwQ,coFxCaguB,CAAgChuB,QAKhC8D,CAA6CupB,I,QCtC7CY,GAzCS,SAACj2C,GAAW,IAAD,EAE/ByoB,EAUEzoB,EAVFyoB,MACAvE,EASElkB,EATFkkB,WACAG,EAQErkB,EARFqkB,SACA6E,EAOElpB,EAPFkpB,oBACA2qB,EAME7zC,EANF6zC,sBACAK,EAKEl0C,EALFk0C,YACAruB,EAIE7lB,EAJF6lB,SAEA2e,GAEExkC,EAHFg+B,aAGEh+B,EAFFwkC,wBACArH,EACEn9B,EADFm9B,UAUF,OACE,kBAAC,IAAMla,SAAP,KACE,kBAAC,IAAD,GACEiB,WAAYA,EACZG,SAAUA,EACV6E,oBAAqBA,EACrB2qB,sBAAuBA,EACvBnxB,aAde,SAACwb,GACpBA,EAAEqJ,iBACF9e,EAAM5C,SAAWA,EACjB4C,EAAM0rB,aAAe,EACrBD,EAAYzrB,IAWR7rB,MAAM,eACN6rB,MAAOA,EACP5F,iBAAiB,SACjBsa,UAAWA,EACX6I,kBAAkB,GAVpB,kCAWmB,QAXnB,wCAY0BxB,GAZ1B,MCcS1Y,oBA7Bf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAMtD,MAAMkJ,SAASukB,oBACjCztB,MAAOsD,EAAMtD,MAAMkJ,SAASvF,KAC5B/H,SAAU0H,EAAMtD,MAAMkJ,SAAStN,SAC/BwB,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,GAC/Did,UAAWpR,EAAMoS,SAASC,aAAa5B,UACvCwB,aAAcjS,EAAME,MAAMtuB,KAAKyuB,SAInC,SAA4BE,EAAUN,GACpC,MAAO,CACL6nB,sBAAuB,SAACpxB,GACtB6J,EAAS3D,GAA4BlG,KAEvCyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAAS/D,GAA+BrpB,EAAO0lB,KAEjDsvB,YAAa,SAACrsB,GAEZyE,EAAS9D,GAAoBX,EADhB4f,KAGfjD,uBAAwB,SAAC/hB,GACvB6J,EAASf,GAA+B9I,QAK/BqJ,CAA6CmqB,IC/BtDr0B,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCwd,UAAW,CACThR,UAAWxM,EAAMQ,QAAQ,GACzB8T,aAActU,EAAMQ,QAAQ,QAuCjB6zB,GAnCK,SAACn2C,GACnB,IAAMwiB,EAAUZ,KAEd4E,EAKExmB,EALFwmB,WACAsY,EAIE9+B,EAJF8+B,uBACAsX,EAGEp2C,EAHFo2C,yBACA7H,EAEEvuC,EAFFuuC,UACArqB,EACElkB,EADFkkB,WAGF,OACE,kBAAC,GAAD,KACE,kBAAC,GAAD,MACCA,EAAa,kBAAC,GAAD,MAAsB,KAEnCqqB,EACC,kBAAC,GAAD,MAEA,yBAAKhtB,UAAWiB,EAAQ6zB,wBACtB,yBAAK90B,UAAWiB,EAAQ8c,WACtB,kBAAC,GAAD,CACEE,iBAAkB4W,EAClB5vB,WAAYA,EACZsY,uBAAwBA,EACxBW,WAAW,eACXC,kBAAkB,mBAGtB,kBAAC,GAAD,SCjBK5T,oBAnBf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAMtD,MAAMkJ,SAASukB,oBACjC3H,UAAWxiB,EAAMtD,MAAMkJ,SAAS+jB,mBAChClvB,WAAYuF,EAAMuG,OAAOC,eAAe/L,eAI5C,SAA4B8F,EAAUN,GACpC,MAAO,CACL8S,uBAAwB,SAACtY,GACvB8F,ExFRsC,SAAC9F,GAAD,MAAiB,CAC3DhC,KAAMC,EAAM3c,8BACZ0e,cwFMa8vB,CAA6B9vB,KAExC4vB,yBAA0B,SAAC3zB,GACzB6J,EAAShE,GAA8B7F,QAK9BqJ,CAA6CqqB,IChB7CI,GARS,SAACv2C,GACvB,OACE,kBAAC,GAAD,KACE,gDCKS8rB,oBARf,SAAyBC,EAAOC,GAC9B,MAAO,MAGT,SAA4BM,EAAUN,GACpC,MAAO,KAGMF,CAA6CyqB,ICetD30B,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCigB,OAAQ,GACRC,YAAa,CACX9S,WAAY,WAEd+S,cAAe,CACb9f,MAAO,IACPoT,WAAYzT,EAAMQ,QAAQ,GAC1B4f,cAAepgB,EAAMQ,QAAQ,IAE/BJ,aAAc,CACZC,MAAO,IACPC,MAAO,QACPC,OAAQP,EAAMQ,QAAQ,IAExBk0B,aAAc,CACZr0B,MAAO,IACPC,MAAO,QAET+f,OAAQ,CACNjT,WAAY,WAEd0W,OAAQ,CACNvjB,OAAQ,EACRkR,QAAS,OA+PEkjB,GA3PkB,SAACz2C,GAAW,IAEzCkkB,EAaElkB,EAbFkkB,WACAG,EAYErkB,EAZFqkB,SACA6E,EAWElpB,EAXFkpB,oBACAktB,EAUEp2C,EAVFo2C,yBACA1zB,EASE1iB,EATF0iB,aACA9lB,EAQEoD,EARFpD,MACAirB,EAOE7nB,EAPF6nB,SACAuK,EAMEpyB,EANFoyB,WACAskB,EAKE12C,EALF02C,mBAVwC,EAetC12C,EAJF6iB,wBAXwC,MAWrB,MAXqB,EAYxC0mB,EAGEvpC,EAHFupC,uBACApB,EAEEnoC,EAFFmoC,eACA0G,EACE7uC,EADF6uC,0BAGIrF,EAAkBxsC,IAAMysC,YAExBjnB,EAAUZ,KAEVuiB,EAAgB,WACpBiS,GAAyB,IAGrBlQ,EAAoB,SAAChI,EAAG/U,GAK1BD,EAHAC,IAAmBgd,EAAgB/pB,aACnC+M,IAAmBgd,EAAgB9pB,YAEf6hB,EAEAA,EAAEmB,OAAOngC,MAFNiqB,IAwB3B,OACE,kBAAC,IAAMlG,SAAP,KAED,kBAAC,GAAD,MAEG,kBAAC,GAAD,CACER,KAAMyB,EACNhB,QAASihB,EACThhB,kBAAgB,qBAChBC,mBAAiB,2BACjB7B,UAAWiB,EAAQuf,QAElB1d,GAAYqyB,EAAqB,kBAACrzB,GAAA,EAAD,MAAqB,GACvD,kBAACC,GAAA,EAAD,CAAapD,GAAG,qBAAqBqB,UAAWiB,EAAQwf,aACrDplC,GAEH,0BAAM2pC,SAAU7jB,GACd,kBAACa,GAAA,EAAD,CAAehC,UAAWiB,EAAQyf,eAChC,kBAAC5E,GAAA,EAAD,CAAMhI,WAAS,EAAC9T,UAAWiB,EAAQgkB,cAAelkB,QAAS,GACzD,kBAAC+a,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAAC,GAAD,CACEpd,GAAG,aACH2e,OAAO,aACPjiC,MAAM,gBACN2kB,UAAWiB,EAAQojB,OACnBgC,iBAAkB,SAAC/K,GAAD,OAChBqJ,EAAkBrJ,EAAMsJ,EAAgB/pB,cAE1CyrB,aACuB,QAArBhlB,EACIgF,EAASoT,WACTR,GAAW5S,EAASoT,YAE1BsF,UAAU,KAGd,kBAAClD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IAkBf,kBAACD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAAC,GAAD,CACEuB,OAAO,iBACPlJ,MAAM,kBACNtT,OAAO,SACPnjB,MAAO2oB,EAAS8uB,iBAChBzW,aAAc,SAAChC,GAAD,OACZgI,EAAkBhI,EAAGiI,EAAgB5pB,kBAEvCia,MAAO4D,EAAgB/Z,gBACvB8f,cAAc,OACd5e,UAAWiB,EAAQ0gB,SACnB7C,WAAW,KACXC,aAAa,WAGjB,kBAACjD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAAC,GAAD,CACEuB,OAAO,aACPlJ,MAAM,cACNtT,OAAO,SACPnjB,MAAO2oB,EAASqS,aAChBgG,aAAc,SAAChC,GAAD,OACZgI,EAAkBhI,EAAGiI,EAAgB3pB,cAEvCga,MAAO4D,EAAgBja,YACvBggB,cAAc,OACd5e,UAAWiB,EAAQ0gB,SACnB7C,WAAW,KACXC,aAAa,WAGjB,kBAACjD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAAC,GAAD,CACEuB,OAAO,cACPlJ,MAAM,eACNtT,OAAO,SACPnjB,MAAO2oB,EAAS+uB,cAChB1W,aAAc,SAAChC,GAAD,OACZgI,EAAkBhI,EAAGiI,EAAgBzpB,eAEvC8Z,MAAO4D,EAAgBha,aACvB+f,cAAc,OACd5e,UAAWiB,EAAQ0gB,SACnB7C,WAAW,KACXC,aAAa,WAGjB,kBAACjD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IACf,kBAACD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAAC,GAAD,CACEuB,OAAO,gBACPlJ,MAAM,YACNtT,OAAO,SACPnjB,MAAO2oB,EAASP,YAChB4Y,aAAc,SAAChC,GAAD,OACZgI,EAAkBhI,EAAGiI,EAAgB1pB,YAEvC+Z,MAAOpE,EACP+N,cAAc,OACd5e,UAAWiB,EAAQ0gB,SACnB7C,WAAW,KACXC,aAAc,CAAC,YAAa,eAIhC,kBAACjD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACf,kBAACD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAIuZ,QAAU,SAC3B,kBAACnzB,GAAA,EAAD,CAAYnC,UAAWiB,EAAQmT,OAA/B,sBAEF,kBAAC/R,GAAA,EAAD,CACAC,QAAS,kBAAMgrB,GAA0B,IACzC3tB,MAAM,UACNyC,QAAQ,YACRpC,UAAWiB,EAAQg0B,aACnBt2B,GAAG,kBALH,yBAaA,kBAACmd,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAACpmB,GAAA,EAAD,CAAYnC,UAAWiB,EAAQmT,OAA/B,gBAEF,kBAAC0H,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAACC,GAAA,EAAD,CACE7pB,GAAG,mBACHgB,MAAM,UACNyC,QAAQ,WACR8J,aAAW,MACX5J,QApKI,SAAC4E,GACnB+gB,EAAgBQ,QAAQ3sC,SAAS,GAAG4sC,SAoKtB1oB,UAAS,UAAKiB,EAAQsmB,iBAAb,YAAiCtmB,EAAQ8R,SAElD,kBAAC,KAAD,CAAgB/S,UAAWiB,EAAQymB,eARrC,iBAUE,kBAACiB,GAAA,EAAD,CACE1lB,KAAK,OACL2lB,IAAKX,EACLY,UAAU,EACVhL,SAzKQ,SAAC3W,GACzBA,EAAM8e,iBAD6B,IAE3Bre,EAAwBlpB,EAAxBkpB,oBACFmhB,EAAO5hB,EAAM4W,OAAOiL,MAAM,GAOhCphB,EANe,CACbshB,YAAY,EACZC,SAAS,EACTlC,SAAU8B,EACVlZ,KAAMkZ,EAAKlZ,MAEegV,EAAgBlpB,qBAC5CusB,EAAgBQ,QAAQ3sC,SAAS,GAAG6B,MAAQ,MA+J5B6kB,MAAO,CAAEiK,QAAS,YAIvBma,GACC,kBAAC9K,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAAC,GAAD,CACE3B,eAAgBA,EAChBC,mBAAoBmB,OAM9B,kBAAC9lB,GAAA,EAAD,CAAelC,UAAWiB,EAAQ2f,QAChC,kBAACve,GAAA,EAAD,CACEC,QAASsgB,EACTjjB,MAAM,UACNyC,QAAQ,WACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,gBALL,UASA,kBAAC0D,GAAA,EAAD,CACEY,KAAK,SACLtD,MAAM,UACNyC,QAAQ,YACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,kBAGF2C,QCtOAi0B,GA9DY,SAAC92C,GAAW,IAEnCkkB,EAcElkB,EAdFkkB,WACAkyB,EAaEp2C,EAbFo2C,yBACAltB,EAYElpB,EAZFkpB,oBACArB,EAWE7nB,EAXF6nB,SACAkvB,EAUE/2C,EAVF+2C,eACA1yB,EASErkB,EATFqkB,SACA+N,EAQEpyB,EARFoyB,WACAM,EAOE1yB,EAPF0yB,OACAoH,EAME95B,EANF85B,mBACA4c,EAKE12C,EALF02C,mBACAvO,EAIEnoC,EAJFmoC,eACAC,EAGEpoC,EAHFooC,mBAGEpoC,EAFFg+B,aAEEh+B,EADFg3C,uCAEFh6C,IAAMmB,WAAU,WACTi0B,EAAWtE,SAAyB,IAAf5J,GACxB4V,EAAmBpH,KAGpB,CAACxO,IAmBJ,OACE,kBAAC,IAAMjB,SAAP,KACE,kBAAC,GAAD,CACEiB,WAAYA,EACZG,SAAUA,EACV6E,oBAAqBA,EACrBktB,yBAA0BA,EAC1B1zB,aAxBe,SAACwb,GACpBA,EAAEqJ,iBAIFwP,EAAelvB,IAoBXjrB,MAAM,kBACNirB,SAAUA,EACVuK,WAAYA,EACZskB,mBAAoBA,EACpB7zB,iBAAiB,SACjBslB,eAAgBA,EAChBoB,uBAvByB,SAACvhB,GAC9BogB,EAAmBpgB,IAuBfivB,sBApBwB,SAAC/3C,EAAO0lB,IAEpCsyB,EAD+Bl3C,EAAvBk3C,oBACWh4C,EAAO0lB,QCsBfkH,oBAnDf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAMlE,SAASsvB,YAAYC,uBACvCvvB,SAAUkE,EAAMlE,SAASsvB,YAAY/qB,KACrC/H,SAAU0H,EAAMlE,SAASsvB,YAAY9yB,SACrC+N,WAAYrG,EAAMqG,WAAWC,cAAcmE,MAC3C9D,OAAQ3G,EAAME,MAAMtuB,KAAKyuB,KAAKlM,GAC9B2F,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,GAC/Dw2B,mBAAoB3qB,EAAMqG,WAAWC,cAAcR,UACnDsW,eAAgBpc,EAAMlE,SAASsvB,YAAY/qB,KAAK4gB,gBAChDhP,aAAcjS,EAAME,MAAMtuB,KAAKyuB,SAInC,SAA4BE,EAAUN,GACpC,MAAO,CACLoqB,yBAA0B,SAAC3zB,GACzB6J,EAAS5E,GAA+BjF,KAE1CyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAAS3E,GAAkCzoB,EAAO0lB,KAEpDmyB,eAAgB,SAAClvB,GAEfyE,EAAS1E,GAAuBC,EADnB4f,KAGf3N,mBAAoB,SAACpH,GACnBpG,EAAS3F,GAA2B+L,KAEtCwkB,mBAAoB,SAACh4C,EAAO0lB,GAC1B0H,EAAS3E,GAAkCzoB,EAAO0lB,KAEpDwjB,mBAAoB,SAACpgB,GACnBsE,EAASvE,GAAyBC,KAEpCqvB,qCAAsC,SACpCnvB,EACAC,EACAC,GAEAkE,EACErE,GACEC,EACAC,EACAC,QAOK0D,CAA6CgrB,ICZ7CQ,OA9Cf,SAA0Ct3C,GAAQ,IAE9CyiB,EAOEziB,EAPFyiB,KACA0C,EAMEnlB,EANFmlB,OACA0C,EAKE7nB,EALF6nB,SACA8oB,EAIE3wC,EAJF2wC,WACA4G,EAGEv3C,EAHFu3C,kCACAlzB,EAEErkB,EAFFqkB,SACAtC,EACE/hB,EADF+hB,aAGInlB,EAAQuoB,IAAWqyB,EAAwB,WAAa,SACxDC,EACJtyB,IAAWqyB,EAAwB,cAAgB,UAE/CE,EACJ7vB,GAAYuT,GAAkCvT,EAASqS,cAYzD,OACE,kBAAC,IAAMjX,SAAP,KACE,kBAAC,GAAD,CACER,KAAMA,EACN7lB,MAAK,UAAKA,EAAL,YAAc86C,GACnB90B,YAAW,gCAA2B60B,EAAWxU,cAAtC,sCAAiFrmC,EAAM+6C,oBAAvF,KACX90B,iBAAkBjmB,EAClBkmB,iBAAiB,SACjBH,YAAa,kBAAMguB,GAAW,EAAO9oB,EAAU1C,IAC/CzC,aAnBsB,SAAC+F,GAC3BA,EAAM8e,iBAMNgQ,EAJgB,CACd1vB,WACA1C,YAeEpC,gBAAiBsB,EACjBtC,aAAcA,EACdiB,UAAU,MChBH8I,gBAvBS,SAACC,EAAO6rB,GAC9B,MAAO,CACL/vB,SAAUkE,EAAMlE,SAASgwB,6BAA6BhwB,SACtDpF,KAAMsJ,EAAMlE,SAASgwB,6BAA6Bp1B,KAClD0C,OAAQ4G,EAAMlE,SAASgwB,6BAA6B1yB,OACpDd,SAAU0H,EAAMlE,SAASgwB,6BAA6BxzB,SACtDtC,aAAcgK,EAAMlE,SAASgwB,6BAA6B91B,iBAInC,SAACuK,EAAUN,GACpC,MAAO,CACL2kB,WAAY,SAACluB,EAAMoF,EAAU1C,GAC3BmH,EACExE,GAA8CrF,EAAMoF,EAAU1C,KAGlEoyB,kCAAmC,SAACzuB,GAClCwD,EhG6BgD,SAACxD,GAAD,MAAc,CAClEtE,KAAMC,EAAM/d,8BACZoiB,WgG/BagvB,CAAuChvB,QAKvCgD,CAGbwrB,ICrBI11B,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCuT,UAAW,CACT9B,QAASzR,EAAMQ,QAAQ,GACvBqa,YAAa7a,EAAMQ,QAAQ,GAC3B8T,aAActU,EAAMQ,QAAQ,IAE9Bsa,cAAe,CACbjO,SAAU,GACV+G,WAAY,SACZH,WAAYzT,EAAMQ,QAAQ,GAC1BytB,aAAcjuB,EAAMQ,QAAQ,GAC5B0L,QAAS,UAEX1J,MAAO,CACLiR,WAAYzT,EAAMQ,QAAQ,GAC1B0L,QAAS,UAEX8O,oBAAqB,CACnBvH,WAAYzT,EAAMQ,QAAQ,IAE5Bya,oBAAqB,GAGrBpF,WAAY,CACVzW,MAAOY,EAAMsN,QAAQuE,UAAUrE,MAEjC0N,aAAc,CACZ9b,MAAOY,EAAMsN,QAAQoG,OAAOlG,MAE9BiO,eAAgB,CACdvP,QAAS,cAIP+pB,GAAiB,SAAC/3C,GAAW,IAE/B6nB,EAIE7nB,EAJF6nB,SACAmwB,EAGEh4C,EAHFg4C,wBACAC,EAEEj4C,EAFFi4C,mCACAja,EACEh+B,EADFg+B,aAEIxb,EAAUZ,KAYhB,OACE,kBAAC,IAAMqB,SAAP,KACE,kBAACoW,GAAA,EAAD,KACE,yBAAK9X,UAAWiB,EAAQ6S,WACtB,kBAACgI,GAAA,EAAD,CAAMhI,WAAS,GACb,kBAACgI,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,yBAAK/b,UAAWiB,EAAQ+a,gBACtB,kBAAC7Z,GAAA,EAAD,CAAYC,QAAQ,KAAKpC,UAAWiB,EAAQoa,eACzC/U,GACCuT,GAAkCvT,EAASqS,eAE/C,kBAACxW,GAAA,EAAD,CAAYC,QAAQ,YAAYpC,UAAWiB,EAAQ8B,OAChDuD,GAtBK,SAACA,GACrB,IAAMwT,EAAgBZ,GAAW5S,EAASoT,YAE1C,OADeI,EAAcC,IAAI,UAClB,EACND,EAAc7D,OAAO,sBAErB6D,EAAc7D,OAAO,cAgBH+D,CAAc1T,MAIjC,kBAACwV,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,yBAAK/b,UAAWiB,EAAQsa,uBAW1B,kBAACO,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,yBAAK/b,UAAWiB,EAAQua,qBACtB,kBAACnZ,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACXlW,UAAWiB,EAAQmV,WACnB9T,QAAS,kBACPm0B,EAAwB,gBAAKnwB,GAAYmW,KAJ7C,mBASA,6BACA,kBAACpa,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACXlW,UAAWiB,EAAQwa,aACnBnZ,QAAS,kBACPo0B,GACE,EADgC,gBAE3BpwB,GACL2vB,KAPN,iBAyEDU,GAnDO,SAACl4C,GAAW,IAE9B+6B,EAME/6B,EANF+6B,2BACAlV,EAKE7lB,EALF6lB,SACA2M,EAIExyB,EAJFwyB,UACAwlB,EAGEh4C,EAHFg4C,wBACAC,EAEEj4C,EAFFi4C,mCACAja,EACEh+B,EADFg+B,aAEIxb,EAAUZ,KAiBhB,OAfA5kB,IAAMmB,WACJ,WACM0nB,GACFkV,EAA2BlV,KAK/B,CAACA,IAGH2M,EAAUsG,MAAK,SAAC16B,EAAG26B,GACjB,OAAO,IAAIC,KAAKD,EAAEkC,YAAc,IAAIjC,KAAK56B,EAAE68B,eAI3C,kBAAC,IAAMhY,SAAP,KACE,kBAAC,GAAD,MACA,kBAAC,GAAD,MAEA,yBAAK1B,UAAWiB,EAAQ21B,wBACrB3lB,GACCA,EAAUyE,KAAI,SAACpP,GACb,OACE,kBAAC,GAAD,CACEA,SAAUA,EACV6F,IAAK7F,EAAS3H,GACd83B,wBAAyBA,EACzBC,mCACEA,EAEFja,aAAcA,UC9HflS,oBA/Bf,SAAyBC,EAAOC,GAC9B,MAAO,CACLnG,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,GAC/DsS,UAAWzG,EAAMyG,UAAUC,kBAAkB+D,UAIjD,SAA4BlK,EAAUN,GACpC,MAAO,CACL+O,2BAA4B,SAAClV,GAC3ByG,EAAS9E,GAAmC3B,KAE9CmyB,wBAAyB,SAACnwB,EAAUO,GAClCkE,EAAS5E,IAA+B,IACxC4E,ElGYmC,SAACzE,GAAD,MAAe,CACtDrD,KAAMC,EAAMje,cACZqhB,YkGdauwB,CAA0BvwB,IACnCyE,EACErE,GACEgmB,GACApmB,EAAS3H,GACTkI,KAIN6vB,mCAAoC,SAACx1B,EAAMoF,EAAU1C,GACnDmH,EACExE,GAA8CrF,EAAMoF,EAAU1C,QAMvD2G,CAA6CosB,ICuB7CG,GA/Dc,SAACr4C,GAAW,IAErCkkB,EAcElkB,EAdFkkB,WACAkyB,EAaEp2C,EAbFo2C,yBACAltB,EAYElpB,EAZFkpB,oBACArB,EAWE7nB,EAXF6nB,SACAkvB,EAUE/2C,EAVF+2C,eACA1yB,EASErkB,EATFqkB,SACA+N,EAQEpyB,EARFoyB,WAEA0H,GAME95B,EAPF0yB,OAOE1yB,EANF85B,oBACAjU,EAKE7lB,EALF6lB,SACA6wB,EAIE12C,EAJF02C,mBACAvO,EAGEnoC,EAHFmoC,eACAC,EAEEpoC,EAFFooC,mBACAyG,EACE7uC,EADF6uC,0BAGF7xC,IAAMmB,WAAU,WACTi0B,EAAWtE,SAAyB,IAAf5J,GACxB4V,EAAmBjU,KAGpB,CAAC3B,IAmBJ,OACE,kBAAC,IAAMjB,SAAP,KACE,kBAAC,GAAD,CACEiB,WAAYA,EACZG,SAAUA,EACV6E,oBAAqBA,EACrBktB,yBAA0BA,EAC1B1zB,aAxBe,SAACwb,GACpBA,EAAEqJ,iBACF1f,EAASssB,aAAe,EACxBtsB,EAAShC,SAAWA,EAEpBkxB,EAAelvB,IAoBXjrB,MAAM,sBACNirB,SAAUA,EACVuK,WAAYA,EACZskB,mBAAoBA,EACpBvO,eAAgBA,EAChBoB,uBAtByB,SAACvhB,GAC9BogB,EAAmBpgB,IAsBfivB,sBAnBwB,SAAC/3C,EAAO0lB,IAEpCsyB,EAD+Bl3C,EAAvBk3C,oBACWh4C,EAAO0lB,IAkBtBiqB,0BAA2BA,MCPpB/iB,oBAxCf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAMlE,SAASsvB,YAAYmB,yBACvCzwB,SAAUkE,EAAMlE,SAASsvB,YAAY/qB,KACrC/H,SAAU0H,EAAMlE,SAASsvB,YAAY9yB,SACrC+N,WAAYrG,EAAMqG,WAAWC,cAAcmE,MAC3C9D,OAAQ3G,EAAME,MAAMtuB,KAAKyuB,KAAKlM,GAC9B2F,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,GAC/Dw2B,mBAAoB3qB,EAAMqG,WAAWC,cAAcR,UACnDsW,eAAgBpc,EAAMlE,SAASsvB,YAAY/qB,KAAK4gB,oBAIpD,SAA4B1gB,EAAUN,GACpC,MAAO,CACLoqB,yBAA0B,SAAC3zB,GACzB6J,EAAS7E,GAAiChF,KAE5CyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAAS3E,GAAkCzoB,EAAO0lB,KAEpDmyB,eAAgB,SAAClvB,GAEfyE,EAAS1E,GAAuBC,EADnB4f,KAGf3N,mBAAoB,SAACpH,GACnBpG,EAAS3F,GAA2B+L,KAEtCwkB,mBAAoB,SAACh4C,EAAO0lB,GAC1B0H,EAAS3E,GAAkCzoB,EAAO0lB,KAEpDwjB,mBAAoB,SAACpgB,GACnBsE,EAASvE,GAAyBC,KAEpC6mB,0BAA2B,SAACpsB,GAC1B6J,EAAS1F,GAAkCnE,GAAM,QAKxCqJ,CAGbusB,ICjDIz2B,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCwd,UAAW,CACThR,UAAWxM,EAAMQ,QAAQ,GACzB8T,aAActU,EAAMQ,QAAQ,QA8BjBi2B,GA1BQ,SAACv4C,GACtB,IAAMwiB,EAAUZ,KAEd4E,EAGExmB,EAHFwmB,WACAsY,EAEE9+B,EAFF8+B,uBACAsX,EACEp2C,EADFo2C,yBAGF,OACE,kBAAC,GAAD,KACE,kBAAC,GAAD,MAEA,yBAAK70B,UAAWiB,EAAQ8c,WACtB,kBAAC,GAAD,CACEE,iBAAkB4W,EAClB5vB,WAAYA,EACZsY,uBAAwBA,EACxBW,WAAW,kBACXC,kBAAkB,qBAGtB,kBAAC,GAAD,QCVS5T,oBAjBf,SAAyBC,EAAOC,GAC9B,MAAO,CACLxF,WAAYuF,EAAMyG,UAAUC,kBAAkBjM,eAIlD,SAA4B8F,EAAUN,GACpC,MAAO,CACL8S,uBAAwB,SAACtY,GACvB8F,EtGNyC,SAAC9F,GAAD,MAAiB,CAC9DhC,KAAMC,EAAMre,iCACZogB,csGIagyB,CAAgChyB,KAE3C4vB,yBAA0B,SAAC3zB,GACzB6J,EAAS7E,GAAiChF,QAKjCqJ,CAA6CysB,ICd7CE,GARO,SAACz4C,GACrB,OACE,kBAAC,GAAD,KACE,8CCKS8rB,oBARf,SAAyBC,EAAOC,GAC9B,MAAO,MAGT,SAA4BM,EAAUN,GACpC,MAAO,KAGMF,CAA6C2sB,I,oBCP7CC,GALO,SAACp0B,GAErB,MADW,0JACDq0B,KAAKC,OAAOt0B,GAAO2e,gBCgBzBrhB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCigB,OAAQ,GACRC,YAAa,CACX9S,WAAY,WAEd+S,cAAe,CACb9f,MAAO,IACPoT,WAAYzT,EAAMQ,QAAQ,GAC1B4f,cAAepgB,EAAMQ,QAAQ,IAE/BJ,aAAc,CACZC,MAAO,IACPC,MAAO,QACPC,OAAQP,EAAMQ,QAAQ,IAExB6f,OAAQ,CACNjT,WAAY,eAkND2pB,GA9Mc,SAAC74C,GAAW,IAiCnChB,EA/BFklB,EAcElkB,EAdFkkB,WACAG,EAaErkB,EAbFqkB,SACA3B,EAYE1iB,EAZF0iB,aACA9lB,EAWEoD,EAXFpD,MACAe,EAUEqC,EAVFrC,KACAurB,EASElpB,EATFkpB,oBACA4vB,EAQE94C,EARF84C,qBACA1jB,EAOEp1B,EAPFo1B,SACA2jB,EAME/4C,EANF+4C,UACAC,EAKEh5C,EALFg5C,kBACAC,EAIEj5C,EAJFi5C,mBAZoC,EAgBlCj5C,EAHF6iB,wBAboC,MAajB,MAbiB,EAcpCq2B,EAEEl5C,EAFFk5C,kBACAlb,EACEh+B,EADFg+B,aAfoC,EAiBQhhC,IAAMQ,SAAS,MAjBvB,mBAiB/B27C,EAjB+B,KAiBfC,EAjBe,KAmBhC52B,EAAUZ,KAEVuiB,EAAgB,WACpB2U,GAAqB,IAGjB5S,EAAoB,SAAChI,EAAG/U,GACxBA,IAAmBgd,EAAgBvmB,YACrCw5B,EAAoBV,GAAcxa,EAAEmB,OAAOngC,QAG7CgqB,EAAoBgV,EAAEmB,OAAOngC,MAAOiqB,IAUtC,OANuB,IAAnBgwB,EACFn6C,GAAQ,GACoB,IAAnBm6C,IACTn6C,GAAQ,GAIR,kBAAC,IAAMikB,SAAP,KACE,kBAAC,GAAD,CACER,KAAMyB,EACNhB,QAASihB,EACThhB,kBAAgB,qBAChBC,mBAAiB,2BACjB7B,UAAWiB,EAAQuf,QAElB1d,EAAW,kBAAChB,GAAA,EAAD,MAAqB,GACjC,kBAACC,GAAA,EAAD,CAAapD,GAAG,qBAAqBqB,UAAWiB,EAAQwf,aACrDplC,GAEH,0BAAM2pC,SAAU7jB,GACd,kBAACa,GAAA,EAAD,CAAehC,UAAWiB,EAAQyf,eAChC,kBAAC5E,GAAA,EAAD,CAAMhI,WAAS,EAAC9T,UAAWiB,EAAQgkB,cAAelkB,QAAS,GACzD,kBAAC+a,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IACb,kBAACmJ,GAAA,EAAD,CACElG,UAAQ,EACRrgB,GAAG,WACHyV,MAAM,OACNyJ,SAAU,SAAClB,GAAD,OACRgI,EAAkBhI,EAAGiI,EAAgBxmB,YAEvCzgB,MAAOvB,EAAKwzB,KACZiP,WAAW,KAGf,kBAAC/C,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACElG,UAAQ,EACRvhC,MAAOA,EACPq6C,WAAYr6C,EAAQ,0BAA4B,GAChDkhB,GAAG,YACHyV,MAAM,QACNyJ,SAAU,SAAClB,GAAD,OACRgI,EAAkBhI,EAAGiI,EAAgBvmB,aAEvC1gB,MAAOvB,EAAK2mB,MACZ8b,WAAW,KAGdziC,EAAKuiB,GACJ,GAEA,kBAACmd,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACElG,UAAQ,EACR/b,KAAK,WACLtE,GAAG,WACHyV,MAAM,WACNyJ,SAAU,SAAClB,GAAD,OACRgI,EAAkBhI,EAAGiI,EAAgBtmB,gBAEvC3gB,MAAOvB,EAAK27C,SACZlZ,WAAW,KAKhB8Y,GACC,kBAAC7b,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAAC,GAAD,CACEuB,OAAO,WACPlJ,MAAM,YACNtT,OAAO,SACPnjB,MAAOvB,EAAKsgC,KACZiC,aAAc,SAAChC,GAAD,OACZgI,EAAkBhI,EAAGiI,EAAgBrmB,YAEvC0W,MACwB,IAAtBwH,EAAaC,KACThe,EAAcA,cAAcs5B,MAAM,GAClCt5B,EAAcA,cAAcs5B,MAAM,GAExCpZ,cAAc,OACd5e,UAAWiB,EAAQ0gB,SACnB7C,WAAW,KACXC,aAAa,QACbC,UAAQ,KAKb2Y,GAAmC,IAAdv7C,EAAKsgC,MACzB,kBAACZ,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,yBACEvZ,MAAO,CACLy1B,WAA0B,IAAd77C,EAAKsgC,KAAa,UAAY,WAG5C,kBAAC,GAAD,CACEY,OAAO,SACPlJ,MAAM,SACNtT,OAAO,SACPnjB,MAAOvB,EAAKkoB,SACZqa,aAAc,SAAChC,GAAD,OACZgI,EAAkBhI,EAAGiI,EAAgBpmB,cAEvCyW,MAAOpB,EACP+K,cAAc,OACd5e,UAAWiB,EAAQ0gB,SACnB7C,WAAW,KACXC,aAAa,OACbV,SAAUoZ,EACVzY,SAAwB,IAAd5iC,EAAKsgC,SAMtBib,GAAmC,IAAdv7C,EAAKsgC,MACzB,kBAACZ,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,yBACEvZ,MAAO,CACLy1B,WAA0B,IAAd77C,EAAKsgC,KAAa,UAAY,WAG5C,kBAAC,GAAD,CACEY,OAAO,UACPlJ,MAAM,UACNtT,OAAO,SACPnjB,MAAOvB,EAAKunB,UACZgb,aAAc,SAAChC,GAAD,OACZgI,EAAkBhI,EAAGiI,EAAgBnmB,eAEvCwW,MAAOuiB,EACP5Y,cAAc,OACd5e,UAAWiB,EAAQ0gB,SACnB7C,WAAW,KACXC,aAAa,OACbV,SAAUqZ,EACV1Y,SAAwB,IAAd5iC,EAAKsgC,WAO3B,kBAACxa,GAAA,EAAD,CAAelC,UAAWiB,EAAQ2f,QAChC,kBAACve,GAAA,EAAD,CACEC,QAASsgB,EACTjjB,MAAM,UACNyC,QAAQ,WACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,gBALL,UASA,kBAAC0D,GAAA,EAAD,CACEY,KAAK,SACLtD,MAAM,UACNyC,QAAQ,YACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,kBAGF2C,QClLA42B,GArDQ,SAACz5C,GAAW,IAE/BkkB,EAaElkB,EAbFkkB,WACAvmB,EAYEqC,EAZFrC,KACA0mB,EAWErkB,EAXFqkB,SACAq1B,EAUE15C,EAVF05C,mBACAxwB,EASElpB,EATFkpB,oBACAywB,EAQE35C,EARF25C,cACAvkB,EAOEp1B,EAPFo1B,SACA2jB,EAME/4C,EANF+4C,UACAC,EAKEh5C,EALFg5C,kBACAC,EAIEj5C,EAJFi5C,mBACAW,EAGE55C,EAHF45C,iBACAC,EAEE75C,EAFF65C,kBACA7b,EACEh+B,EADFg+B,aAGFhhC,IAAMmB,WAAU,WACVi3B,GAAgC,IAApBA,EAAStH,QAAgB5J,IACvC01B,IACAC,OAID,CAAC31B,IAOJ,OACE,kBAAC,IAAMjB,SAAP,KACE,kBAAC,GAAD,CACEiB,WAAYA,EACZG,SAAUA,EACV6E,oBAAqBA,EACrB4vB,qBAAsBY,EACtBh3B,aAZe,SAACwb,GACpBA,EAAEqJ,iBACFoS,EAAch8C,IAWVf,MAAM,cACNe,KAAMA,EACNy3B,SAAUA,EACV2jB,UAAWA,EACXC,kBAAmBA,EACnBC,mBAAoBA,EACpBp2B,iBAAiB,SACjBq2B,mBAAmB,EACnBlb,aAAcA,MCJPlS,oBAlCf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAMpuB,KAAKm8C,QAAQC,mBAC/Bp8C,KAAMouB,EAAMpuB,KAAKm8C,QAAQ1tB,KACzB/H,SAAU0H,EAAMpuB,KAAKm8C,QAAQz1B,SAC7B+Q,SAAUrJ,EAAMqJ,SAASua,YAAYnZ,MACrCuiB,UAAWhtB,EAAMgtB,UAAUiB,aAAaxjB,MACxCwiB,kBAAmBjtB,EAAMqJ,SAASua,YAAY9d,UAC9ConB,mBAAoBltB,EAAMgtB,UAAUiB,aAAanoB,UACjDmM,aAAcjS,EAAME,MAAMtuB,KAAKyuB,SAInC,SAA4BE,EAAUN,GACpC,MAAO,CACL0tB,mBAAoB,SAACj3B,GACnB6J,EAASlG,GAA2B3D,KAEtCyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAASjG,GAA8BnnB,EAAO0lB,KAEhD+0B,cAAe,SAAC70B,GAEdwH,EAAShG,GAAmBxB,EADf2iB,KAGfmS,iBAAkB,WAChBttB,EAAS9G,OAEXq0B,kBAAmB,WACjBvtB,EAAStH,UAKA8G,CAA6C2tB,ICI7CQ,GA/CkB,SAACj6C,GAAW,IAEzCkkB,EAUElkB,EAVFkkB,WACAvmB,EASEqC,EATFrC,KACA0mB,EAQErkB,EARFqkB,SACAq1B,EAOE15C,EAPF05C,mBACAxwB,EAMElpB,EANFkpB,oBACAgxB,EAKEl6C,EALFk6C,WACA9kB,EAIEp1B,EAJFo1B,SACA4jB,EAGEh5C,EAHFg5C,kBACAY,EAEE55C,EAFF45C,iBACA5b,EACEh+B,EADFg+B,aAGFhhC,IAAMmB,WAAU,WACVi3B,GAAgC,IAApBA,EAAStH,QAAgB5J,GACvC01B,MAID,CAAC11B,IAOJ,OACE,kBAAC,IAAMjB,SAAP,KACE,kBAAC,GAAD,CACEiB,WAAYA,EACZG,SAAUA,EACV6E,oBAAqBA,EACrB4vB,qBAAsBY,EACtBh3B,aAZe,SAACwb,GACpBA,EAAEqJ,iBACF2S,EAAWv8C,IAWPf,MAAM,cACNe,KAAMA,EACNy3B,SAAUA,EACV4jB,kBAAmBA,EACnBn2B,iBAAiB,SACjBq2B,mBAAmB,EACnBlb,aAAcA,MCJPlS,oBA7Bf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAMpuB,KAAKm8C,QAAQC,mBAC/Bp8C,KAAMouB,EAAMpuB,KAAKm8C,QAAQ1tB,KACzB/H,SAAU0H,EAAMpuB,KAAKm8C,QAAQz1B,SAC7B+Q,SAAUrJ,EAAMqJ,SAASua,YAAYnZ,MACrCwiB,kBAAmBjtB,EAAMqJ,SAASua,YAAY9d,UAC9CmM,aAAcjS,EAAME,MAAMtuB,KAAKyuB,SAInC,SAA4BE,EAAUN,GACpC,MAAO,CACL0tB,mBAAoB,SAACj3B,GACnB6J,EAASlG,GAA2B3D,KAEtCyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAASjG,GAA8BnnB,EAAO0lB,KAEhDs1B,WAAY,SAACv8C,GAEX2uB,EAAShG,GAAmB3oB,EADf8pC,KAGfmS,iBAAkB,WAChBttB,EAAS9G,UAKAsG,CAGbmuB,ICXaE,GA7BU,SAACn6C,GAAW,IAC3BrC,EAAqDqC,EAArDrC,KAAM8kB,EAA+CziB,EAA/CyiB,KAAMkuB,EAAyC3wC,EAAzC2wC,WAAY5uB,EAA6B/hB,EAA7B+hB,aAAc6uB,EAAe5wC,EAAf4wC,WAExCC,EAAmB,uCAAG,WAAOpoB,GAAP,mBAAArqB,EAAA,sDAC1BqqB,EAAM8e,iBACE6S,EAA8Bp6C,EAA9Bo6C,oBAAqBz8C,EAASqC,EAATrC,KACvBmrB,EAHoB,6BAIrBnrB,GAJqB,IAKxBwnB,OAAQk1B,IAEVD,EAAoBtxB,GAPM,2CAAH,sDAUzB,OACE,kBAAC,GAAD,CACErG,KAAMA,EACN7lB,MAAU,SAAL,WAAiBe,EAAKwzB,MAC3BvO,YAAW,8DACXC,iBAAkB,SAClBC,iBAAiB,SACjBH,YAAa,kBAAMguB,GAAW,EAAOhzC,IACrC+kB,aAAcmuB,EACd9tB,gBAAiB6tB,EACjB7uB,aAAcA,EACdiB,UAAU,KCED8I,oBArBf,SAAyBC,EAAOC,GAC9B,MAAO,CACLruB,KAAMouB,EAAMpuB,KAAKm8C,QAAQ1tB,KACzB3J,KAAMsJ,EAAMpuB,KAAKm8C,QAAQQ,qBACzB1J,WAAY7kB,EAAMpuB,KAAKm8C,QAAQz1B,SAC/BtC,aAAcgK,EAAMpuB,KAAKm8C,QAAQ/3B,iBAIrC,SAA4BuK,EAAUN,GACpC,MAAO,CACL2kB,WAAY,SAACluB,EAAM9kB,GACjB2uB,EAASrG,GAA6BxD,KAExC23B,oBAAqB,SAACz8C,GAEpB2uB,EAAShG,GAAmB3oB,EADf8pC,QAMJ3b,CAA6CquB,ICbtDv4B,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCuT,UAAW,CACT9B,QAASzR,EAAMQ,QAAQ,GACvBqa,YAAa7a,EAAMQ,QAAQ,GAC3B8T,aAActU,EAAMQ,QAAQ,IAE9ByM,SAAU,CACRJ,SAAU,GACV+G,WAAY,IACZH,WAAYzT,EAAMQ,QAAQ,IAE5BgC,MAAO,CACLiR,WAAYzT,EAAMQ,QAAQ,IAE5Bwa,oBAAqB,CACnBvH,WAAYzT,EAAMQ,QAAQ,IAE5Bya,oBAAqB,GAGrBpF,WAAY,CACVzW,MAAOY,EAAMsN,QAAQuE,UAAUrE,MAEjC0N,aAAc,CACZ9b,MAAOY,EAAMsN,QAAQoG,OAAOlG,MAE9BirB,KAAM,CACJ7kB,WAAY,SAIV8kB,GAAa,SAACx6C,GAClB,IAAMwiB,EAAUZ,KACRjkB,EAAqDqC,EAArDrC,KAAM88C,EAA+Cz6C,EAA/Cy6C,oBAAqBC,EAA0B16C,EAA1B06C,sBAE7BC,EAAch9C,GAAQA,EAAKsgC,KAAO,EAExC,OACE,kBAAC,IAAMhb,SAAP,KACE,kBAACoW,GAAA,EAAD,KACE,yBAAK9X,UAAWiB,EAAQ6S,WACtB,kBAACgI,GAAA,EAAD,CAAMhI,WAAS,GACb,kBAACgI,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,yBAAK/b,UAAWiB,EAAQ+a,gBACtB,kBAAC7Z,GAAA,EAAD,CAAYC,QAAQ,KAAKpC,UAAWiB,EAAQuM,UACzCpxB,GAAQA,EAAKwzB,MAEhB,kBAACzN,GAAA,EAAD,CAAYC,QAAQ,YAAYpC,UAAWiB,EAAQ8B,OACjD,0BAAM/C,UAAWiB,EAAQ+3B,MAAzB,UAA6C,IAC5C58C,GAAQA,EAAK2mB,OAEhB,kBAACZ,GAAA,EAAD,CAAYC,QAAQ,YAAYpC,UAAWiB,EAAQ8B,OACjD,0BAAM/C,UAAWiB,EAAQ+3B,MAAzB,SAA4C,IAC3C58C,GAAQi9C,GAA2Bj9C,EAAKsgC,OAE3C,kBAACva,GAAA,EAAD,CAAYC,QAAQ,YAAYpC,UAAWiB,EAAQ8B,OACjD,0BAAM/C,UAAWiB,EAAQ+3B,MAAzB,YAA+C,IAC9C58C,GAAQA,EAAKwnB,QAAU,YAI9B,kBAACkY,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,yBAAK/b,UAAWiB,EAAQsa,qBACtB,kBAAClZ,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MAQX1T,MAAO,CAAEy1B,WAAY,WATvB,gBAeJ,kBAACnc,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,yBAAK/b,UAAWiB,EAAQua,qBACtB,kBAACnZ,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACXlW,UAAWiB,EAAQmV,WACnB9T,QAAS,kBAAM42B,EAAoB,gBAAK98C,MAH1C,QAOCg9C,GACC,kBAAC/2B,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACXlW,UAAWiB,EAAQwa,aACnBnZ,QAAS,kBAAM62B,GAAsB,EAAD,gBAAY/8C,MAHlD,iBAoEHk9C,GAnDG,SAAC76C,GAAW,IAE1BisB,EAKEjsB,EALFisB,MACA6uB,EAIE96C,EAJF86C,cACAC,EAGE/6C,EAHF+6C,gBACAC,EAEEh7C,EAFFg7C,YACAC,EACEj7C,EADFi7C,uBAGFj+C,IAAMmB,WAAU,WACd28C,MAEC,IAEH,IAAML,EAAsB,SAAC31B,GAC3Bi2B,EAAgBj2B,IAGlB,GAAKmH,EAAL,CAIA,IAAMyuB,EAAwB,SAACj4B,EAAM9kB,GACnCs9C,EAAuBx4B,EAAM9kB,IAG/B,OACE,kBAAC,IAAMslB,SAAP,KACG+3B,GAAe,kBAAC,GAAD,OAEdA,GAAe,kBAAC,GAAD,MAEjB,kBAAC,GAAD,MAEA,6BACG/uB,GACCA,EAAMgL,KAAI,SAACt5B,GACT,OACE,kBAAC,GAAD,CACEA,KAAMA,EACN+vB,IAAK/vB,EAAKuiB,GACVu6B,oBAAqBA,EACrBC,sBAAuBA,WClIxBQ,GA/BW,SAACl7C,GAAW,IAElCisB,EAKEjsB,EALFisB,MACAtG,EAIE3lB,EAJF2lB,OACAm1B,EAGE96C,EAHF86C,cACAC,EAEE/6C,EAFF+6C,gBACAE,EACEj7C,EADFi7C,uBAQF,GALAj+C,IAAMmB,WAAU,WACd28C,MAEC,IAEE7uB,EAIL,OACE,kBAAC,IAAMhJ,SAAP,KACE,kBAAC,GAAD,CACEgJ,MAAOA,EAAM2M,QAAO,SAACG,GAAD,OAAOA,EAAElT,WAAaF,EAAOyG,KAAKlM,MACtD46B,cAAeA,EACfC,gBAAiBA,EACjBC,aAAa,EACbC,uBAAwBA,MCMjBnvB,oBAvBf,SAAyBC,EAAOC,GAC9B,MAAO,CACLC,MAAOF,EAAME,MAAMkvB,UAAYpvB,EAAME,MAAMkvB,SAAS3kB,MACpD7Q,OAAQoG,EAAMpG,OAAOA,QAAUoG,EAAMpG,OAAOA,WAIhD,SAA4B2G,EAAUN,GACpC,MAAO,CACL8uB,cAAe,WACbxuB,EAAS7F,OAEXs0B,gBAAiB,SAACp9C,GAChB2uB,EAASlG,IAA2B,IACpCkG,EAAS5F,GAAsB/oB,KAEjCs9C,uBAAwB,SAACx4B,EAAM9kB,GAC7B2uB,EAASrG,IAA6B,IACtCqG,EAAS5F,GAAsB/oB,QAKtBmuB,CAA6CsvB,IC2B7CC,OAvDf,SAAoCr7C,GAAQ,IAExCkkB,EAWElkB,EAXFkkB,WACAvmB,EAUEqC,EAVFrC,KACAgoB,EASE3lB,EATF2lB,OACAtB,EAQErkB,EARFqkB,SACAy0B,EAOE94C,EAPF84C,qBACA5vB,EAMElpB,EANFkpB,oBACAgxB,EAKEl6C,EALFk6C,WACA9kB,EAIEp1B,EAJFo1B,SACAwkB,EAGE55C,EAHF45C,iBACAZ,EAEEh5C,EAFFg5C,kBACAhb,EACEh+B,EADFg+B,aAuBF,OApBAhhC,IAAMmB,WAAU,WACVi3B,GAAgC,IAApBA,EAAStH,QAAgB5J,GACvC01B,MAID,CAAC11B,IAeF,kBAAC,IAAMjB,SAAP,KACE,kBAAC,GAAD,CACEiB,WAAYA,EACZG,SAAUA,EACV6E,oBAAqBA,EACrB4vB,qBAAsBA,EACtBp2B,aAnBe,SAACwb,GACpBA,EAAEqJ,iBADwB,IAElB5pC,EAAiBqC,EAAjBrC,KAAMgoB,EAAW3lB,EAAX2lB,OACRmD,EAAO,6BACRnrB,GADQ,IAEXwnB,OAAQk1B,EACRx0B,SAAUF,EAAOzF,GACjB+d,KAAM,IAERic,EAAWpxB,IAWPlsB,MAAM,kBACN+oB,OAAQA,EACRhoB,KAAMA,EACNy3B,SAAUA,EACV4jB,kBAAmBA,EACnBE,mBAAmB,EACnBlb,aAAcA,MCbPlS,gBA9BS,SAACC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAMpuB,KAAKm8C,QAAQwB,qBAC/B39C,KAAMouB,EAAMpuB,KAAKm8C,QAAQ1tB,KACzBzG,OAAQoG,EAAMpG,OAAOA,OAAOyG,KAC5B/H,SAAU0H,EAAMpuB,KAAKm8C,QAAQz1B,SAC7B+Q,SAAUrJ,EAAMqJ,SAASua,YAAYnZ,MACrCwiB,kBAAmBjtB,EAAMqJ,SAASua,YAAY9d,UAC9CmM,aAAcjS,EAAME,MAAMtuB,KAAKyuB,SAIR,SAACE,EAAUN,GACpC,MAAO,CACL8sB,qBAAsB,SAACr2B,GACrB6J,EAASnG,GAA6B1D,KAExCyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAASjG,GAA8BnnB,EAAO0lB,KAEhDs1B,WAAY,SAACv8C,GAEX2uB,EAAShG,GAAmB3oB,EADf8pC,KAGfmS,iBAAkB,WAChBttB,EAAS9G,UAKAsG,CAGbuvB,ICrCIz5B,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCwd,UAAW,CACThR,UAAWxM,EAAMQ,QAAQ,GACzB8T,aAActU,EAAMQ,QAAQ,QA0BjBi5B,GAtBI,SAACv7C,GAClB,IAAMwiB,EAAUZ,KACRk3B,EAA6D94C,EAA7D84C,qBAAsBtyB,EAAuCxmB,EAAvCwmB,WAAYsY,EAA2B9+B,EAA3B8+B,uBAE1C,OACE,kBAAC,GAAD,KACE,kBAAC,GAAD,MAEA,yBAAKvd,UAAWiB,EAAQ8c,WACtB,kBAAC,GAAD,CACEE,iBAAkBsZ,EAClBtyB,WAAYA,EACZsY,uBAAwBA,EACxBW,WAAW,cACXC,kBAAkB,iBAGtB,kBAAC,GAAD,QCPS5T,oBAjBf,SAAyBC,EAAOC,GAC9B,MAAO,CACLxF,WAAYuF,EAAME,MAAMkvB,SAAS30B,eAIrC,SAA4B8F,EAAUN,GACpC,MAAO,CACL8sB,qBAAsB,SAACr2B,GACrB6J,EAASnG,GAA6B1D,KAExCqc,uBAAwB,SAACtY,GACvB8F,EAAS/F,GAA4BC,QAK5BsF,CAA6CyvB,IChBtD35B,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCuT,UAAW,CACT9B,QAASzR,EAAMQ,QAAQ,GACvBqa,YAAa7a,EAAMQ,QAAQ,GAC3B8T,aAActU,EAAMQ,QAAQ,IAE9Bua,KAAM,CACJtH,WAAYzT,EAAMQ,QAAQ,GAC1B0L,QAAS,SACT2O,YAAa7a,EAAMQ,QAAQ,IAE7B0wB,YAAa,CACXzd,WAAYzT,EAAMQ,QAAQ,GAC1B0L,QAAS,SACT2O,YAAa7a,EAAMQ,QAAQ,GAC3BpB,MAAOY,EAAMsN,QAAQoG,OAAOlG,KAC5BoG,WAAY,KAEdoH,oBAAqB,CACnBvH,WAAYzT,EAAMQ,QAAQ,IAE5Bya,oBAAqB,GAGrBpF,WAAY,CACVzW,MAAOY,EAAMsN,QAAQuE,UAAUrE,MAEjC0N,aAAc,CACZ9b,MAAOY,EAAMsN,QAAQoG,OAAOlG,MAE9BiO,eAAgB,CACdvP,QAAS,UAEXwtB,kBAAmB,CACjB7sB,SAAU,GACV+G,WAAY,SACZH,WAAYzT,EAAMQ,QAAQ,GAC1BytB,aAAcjuB,EAAMQ,QAAQ,GAC5B0L,QAAS,UAEXxN,aAAc,CACZwN,QAAS,SACT+hB,aAAcjuB,EAAMQ,QAAQ,SAI1Bm5B,GAAe,SAACz7C,GAAW,IAcN+wC,EAZvBjnB,EAQE9pB,EARF8pB,OAEA4xB,GAME17C,EAPFm9B,UAOEn9B,EANF07C,uBACAC,EAKE37C,EALF27C,6BACAC,EAIE57C,EAJF47C,wBACAC,EAGE77C,EAHF67C,gCACAC,EAEE97C,EAFF87C,uBACA9d,EACEh+B,EADFg+B,aAEIxb,EAAUZ,KACVsV,EAAYC,OAASC,QAAQtN,EAAOgS,gBAQ1C,OACE,kBAAC,IAAM7Y,SAAP,KACE,kBAACoW,GAAA,EAAD,KACE,yBAAK9X,UAAWiB,EAAQ6S,WACtB,kBAACgI,GAAA,EAAD,CAAMhI,WAAS,GACb,kBAACgI,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,yBAAK/b,UAAWiB,EAAQ+a,gBACtB,kBAAC7Z,GAAA,EAAD,CAAYC,QAAQ,KAAKpC,UAAWiB,EAAQg5B,mBACzC1xB,GAAUA,EAAOlH,eAIxB,kBAACya,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAG,QAAd,cAEE,kBAAC5Z,GAAA,EAAD,CAAYC,QAAQ,YAAYpC,UAAWiB,EAAQhC,cAChDsJ,IArBUinB,EAqBgBjnB,EAAO3E,OApBhC3E,GAAaA,aAAa+Y,MAAK,SAACnN,GAAD,OAAUA,EAAKlM,KAAO6wB,KAChE7xC,QAqBO,kBAACwkB,GAAA,EAAD,CACEC,QAAQ,YACRpC,UAAW2V,EAAY1U,EAAQwwB,YAAcxwB,EAAQqa,MAEpD/S,GACCA,EAAOgS,gBADR,wBAEkB3E,KAAOrN,EAAOgS,gBAAgBtE,OAC7C,iBAIR,kBAAC6F,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAG,QACZ,yBAAK/b,UAAWiB,EAAQua,qBACtB,kBAACnZ,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACXlW,UAAWiB,EAAQmV,WACnB9T,QAAS,kBACP63B,EAAsB,gBAAK5xB,GAAUkU,EAAa9d,MAJtD,iBASA,kBAAC0D,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACXlW,UAAWiB,EAAQmV,WACnB9T,QAAS,kBAAM83B,EAA6B,gBAAK7xB,MAHnD,YAOA,kBAAClG,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACXlW,UAAWiB,EAAQmV,WACnB9T,QAAS,kBAAM+3B,EAAwB,gBAAK9xB,MAH9C,WAOA,kBAAClG,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACXlW,UAAWiB,EAAQmV,WACnB9T,QAAS,kBAAMg4B,EAAgC,gBAAK/xB,MAHtD,mBAOA,kBAAClG,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACXlW,UAAWiB,EAAQwa,aACnBnZ,QAAS,kBAAMi4B,GAAuB,EAAD,gBAAYhyB,MAHnD,iBA0FDiyB,GA1EK,SAAC/7C,GAAW,IAE5B6lB,EAiBE7lB,EAjBF6lB,SACAgW,EAgBE77B,EAhBF67B,QACAsB,EAeEn9B,EAfFm9B,UACAzB,EAcE17B,EAdF07B,yBACAiC,EAaE39B,EAbF29B,kBACA+d,EAYE17C,EAZF07C,sBACAC,EAWE37C,EAXF27C,6BACAC,EAUE57C,EAVF47C,wBACAC,EASE77C,EATF67C,gCACAje,EAQE59B,EARF49B,iBACAke,EAOE97C,EAPF87C,uBACAE,EAMEh8C,EANFg8C,kBACAC,EAKEj8C,EALFi8C,iBACAl6B,EAIE/hB,EAJF+hB,aACAm6B,EAGEl8C,EAHFk8C,0BAEAle,GACEh+B,EAFFm8C,mBAEEn8C,EADFg+B,cAGFhhC,IAAMmB,WACJ,WACM0nB,GACF6V,EAAyB7V,GAED,IAAtBmY,EAAaC,MACfN,EAAkB9X,KAItB,CAACA,IAOH,OACE,kBAAC,IAAM5C,SAAP,MACwB,IAArB2a,EACC,kBAAC,GAAD,CACEnb,KAAMmb,EACNhhC,MAAK,iBAAYo/C,EAAkBp5B,aACnCA,YAAW,uEAAkEo5B,EAAkBp5B,YAApF,KACXC,iBAAiB,SACjBC,iBAAiB,SACjBH,YAAa,kBAAMm5B,GAAuB,EAAOE,IACjDt5B,aAdoB,SAACwb,GAC3Bge,EAA0BF,IAcpBj5B,gBAAiBk5B,IAAoB,EACrCl6B,aAAcA,GAAgB,GAC9BiB,UAAU,IAEV,KACH6Y,GACCA,EAAQ5E,KAAI,SAACnN,GACX,OACE,kBAAC,GAAD,CACEA,OAAQA,EACR4D,IAAK5D,EAAO5J,GACZid,UAAWA,EACXue,sBAAuBA,EACvBC,6BAA8BA,EAC9BC,wBAAyBA,EACzBC,gCAAiCA,EACjCC,uBAAwBA,EACxB9d,aAAcA,SC/IblS,oBAtDf,SAAyBC,EAAOC,GAC9B,MAAO,CACLnG,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,GAC/D2b,QAAS9P,EAAM8P,QAAQU,gBAAgB/F,MACvC2G,UAAWpR,EAAMoS,SAASC,aAAa5H,MACvCoH,iBAAkB7R,EAAM8P,QAAQugB,aAAal4B,WAC7C83B,kBAAmBjwB,EAAM8P,QAAQugB,aAAatyB,OAC9C/H,aAAcgK,EAAM8P,QAAQugB,aAAar6B,aACzCk6B,iBAAkBlwB,EAAM8P,QAAQugB,aAAa/3B,SAC7C83B,mBAAoBpwB,EAAM8P,QAAQwgB,wBAAwBzjB,OAC1DoF,aAAcjS,EAAME,MAAMtuB,KAAKyuB,SAInC,SAA4BE,EAAUN,GACpC,MAAO,CACL0P,yBAA0B,SAAC7V,GACzByG,EAAS5C,GAAiC7D,KAE5C8X,kBAAmB,SAAC9X,GAClByG,EAASlB,GAA0BC,GAA+BxF,KAEpE61B,sBAAuB,SAAC5xB,EAAQ1B,GAC9BkE,EAAStC,IAA6B,IACtCsC,EAASrC,GAAwBH,IACjCwC,EACEnB,GACE8iB,GACAnkB,EAAO5J,GACPkI,KAINuzB,6BAA8B,SAAC7xB,GAC7BwC,EAASvC,IAA4B,IACrCuC,EAASrC,GAAwBH,KAEnC8xB,wBAAyB,SAAC9xB,GACxBwC,EAAShC,IAA8B,IACvCgC,EAASrC,GAAwBH,KAEnC+xB,gCAAiC,SAAC/xB,GAChCwC,EAAS1B,IAAqC,IAC9C0B,EAASrC,GAAwBH,KAEnCgyB,uBAAwB,SAACr5B,EAAMqH,GAC7BwC,EtHjBwC,SAAC7J,EAAMqH,GAAP,MAAmB,CAC/DtF,KAAMC,EAAM/T,0BACZ+R,OACAqH,UsHcawyB,CAA+B75B,EAAMqH,KAEhDoyB,0BAA2B,SAACpyB,GAC1BwC,EtHd2C,SAACxC,GAAD,MAAa,CAC5DtF,KAAMC,EAAM9T,cACZmZ,UsHYayyB,CAAkCzyB,QAKlCgC,CAA6CiwB,I,kDCnEtDn6B,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCmM,KAAM,CACJD,QAAS,OACT+H,eAAgB,OAChBgP,SAAU,OACVC,UAAW,OACXzR,QAASzR,EAAMQ,QAAQ,IACvBD,OAAQ,GAEV4iB,KAAM,CACJ5iB,OAAQP,EAAMQ,QAAQ,KAExBk6B,KAAM,CACJr6B,MAAO,IACPqN,OAAQ,IACRnN,OAAQ,QAEVo6B,UAAU,CACRt6B,MAAO,IACPqN,OAAQ,IACRnN,OAAQ,QAEVq6B,YAAY,CACVpuB,UAAWxM,EAAMQ,QAAQ,GACzBkN,OAAQ,QAKNmtB,GAAoB,SAAC38C,GAAW,IAErCsoC,EAGKtoC,EAHLsoC,KACAsU,EAEK58C,EAFL48C,aACAC,EACK78C,EADL68C,SAEOr6B,EAAUZ,KANmB,EAQH5kB,IAAMQ,SAAS,IARZ,mBAQ5Bs/C,EAR4B,KAQlBC,EARkB,KAwBnC,OAdA5+C,qBAAU,WACR,GAAqB,MAAjBmqC,EAAKC,SAAT,CAKA,IAAMyU,EAAYC,IAAIC,gBAAgB5U,EAAKC,UAI3C,OAHAwU,EAAYC,GAGL,kBAAMC,IAAIE,gBAAgBH,IAR/BD,EAAYzU,EAAKK,OASpB,CAACL,IAIA,kBAAC8U,GAAA,EAAD,CAAM77B,UAAWiB,EAAQg6B,MACzB,kBAACa,GAAA,EAAD,CACE39C,UAAU,MACVuxB,IAAK4rB,EACLrtB,OAAO,MACP8tB,MAAOR,EACPv7B,UAAWiB,EAAQi6B,YAIrB,kBAACc,GAAA,EAAD,CAAeh8B,UAAWiB,EAAQk6B,aAClC,kBAACc,GAAA,EAAD,CAAS5gD,MAAQigD,GACK,MAAjBvU,EAAKC,SAAoB,kBAAC3kB,GAAA,EAAD,CAAQsnB,KAAK,QAAQrnB,QAAS,kBAAMrnB,OAAOimB,KAAK6lB,EAAKK,OAArD,YAAiF,kBAAC/kB,GAAA,EAAD,CAAQsnB,KAAK,QAAStL,UAAQ,GAA9B,aAG7G,kBAAChc,GAAA,EAAD,CAAQsnB,KAAK,QAAQrnB,QAAS+4B,EAAatU,IAA3C,aAkCSmV,GA3BS,SAACz9C,GACvB,IAAMwiB,EAAUZ,KACRumB,EAAuCnoC,EAAvCmoC,eAAgBC,EAAuBpoC,EAAvBooC,mBAElBwU,EAAe,SAAClU,GAAD,OAAwB,WAC3CN,EAAmBM,KAGrB,GAAKP,EAAL,CAEA,IAAME,EAAc,SAACC,GACnB,OAAyB,OAAlBA,EAAKC,SAAoBD,EAAKnX,KAAOmX,EAAKC,SAASpX,MAG5D,OACE,kBAACkI,GAAA,EAAD,CAAO35B,UAAU,KAAK6hB,UAAWiB,EAAQyL,MACtCka,EAAelR,KAAI,SAACqR,EAAM3nB,GACzB,OACE,wBAAI+M,IAAK/M,GACJ,kBAAE,GAAF,CAAoB2nB,KAAQA,EAAMsU,aAAgBA,EAAcC,SAAYxU,EAAYC,IAAxF,YC/ET1mB,GAAYC,cAAW,SAACC,GAC5B,MAAO,CACL47B,YAAa,CAEX,uBAAyB,CACzB,eAAmB,qCAOrB37B,aAAc,CACZb,MAAO,MACPc,SAAU,WACVC,KAAM,IAERC,aAAc,CACZC,MAAO,IACPC,MAAO,QACPC,OAAQP,EAAMQ,QAAQ,IAExBq7B,WAAW,CACTC,OAAQ,UACR,WAAa,CAAC55B,gBAAiB,gBAM/B65B,GAAa,SAAC79C,GAAW,IAE3BosB,EAEEpsB,EAFFosB,KACA0xB,EACE99C,EADF89C,kBAEIt7B,EAAUZ,KALY,EAOF5kB,IAAMQ,SAAS4uB,EAAKlL,OAPlB,mBAOrBA,EAPqB,KAOd68B,EAPc,KAiB5B,OAEM,kBAACrU,GAAA,EAAD,CACQG,MAAM,SACNnc,IAAKtB,EAAKlM,GACVxgB,UAAU,KAAKiqC,MAAM,MACrB9lB,QAAS,kBAAMi6B,EAAkB1xB,IACjC7K,UAAWiB,EAAQm7B,WACnBK,aAhBM,WAClBD,EAAS,YAgBGE,aAbI,WAClBF,EAAS3xB,EAAKlL,QAaAiB,MAAS,IACT4B,MAAS,CAACC,gBAAiB9C,IAEvB,2BAAIkL,EAAKvL,eAAiBuL,EAAKtL,YAAc,IAXzD,IAWkEsL,EAAKvL,gBAAmB,6BAX1F,IAWiG,2BAAIuL,EAAKpL,QAAT,KAAsB,6BAXvH,KAW+HoL,EAAKnL,aA4F7Hi9B,GArFiB,SAACl+C,GAC/B,IAAMwiB,EAAUZ,KAGda,EAGEziB,EAHFyiB,KACAC,EAEE1iB,EAFF0iB,aACAC,EACE3iB,EADF2iB,YAIF,OACE,kBAAC,IAAMM,SAAP,KACE,kBAAC,GAAD,CACER,KAAMA,EACNS,QAASP,EACTQ,kBAAgB,qBAChBC,mBAAiB,2BACjB+6B,UAAW,GAEX,kBAAC76B,GAAA,EAAD,CAAapD,GAAG,qBAAsB2pB,MAAM,UAA5C,yBAEA,kBAACvmB,GAAA,EAAD,CAAapD,GAAG,qBAAsB2pB,MAAM,UAA5C,0CAIA,kBAACtmB,GAAA,EAAD,KACA,kBAACooB,GAAA,EAAD,CAAgBjsC,UAAW25B,MAC7B,kBAACuS,GAAA,EAAD,CAAOV,KAAK,QAAQzd,aAAW,gBAAiBlM,UAAWiB,EAAQk7B,YAAcU,GAAI,CAAEpe,SAAU,MAC/F,kBAAC6L,GAAA,EAAD,KACE,kBAACC,GAAA,EAAD,KACE,kBAACpC,GAAA,EAAD,CAAWG,MAAM,UAAS,0CAC1B,kBAACH,GAAA,EAAD,CAAWG,MAAM,UAAjB,IAA2B,gCAAQ,6BAAK,4CAAoB,6BAA5D,iBACA,kBAACH,GAAA,EAAD,CAAWG,MAAM,UAAS,gCAAQ,6BAAK,oCAAY,6BAAnD,iCACA,kBAACH,GAAA,EAAD,CAAWG,MAAM,UAAS,gCAAQ,6BAAK,uCAAe,6BAAtD,uBACA,kBAACH,GAAA,EAAD,CAAWG,MAAM,UAAS,gCAAQ,6BAAK,oCAAY,6BAAnD,wBACA,kBAACH,GAAA,EAAD,CAAWG,MAAM,UAAS,gCAAQ,6BAAK,2CAAmB,6BAA1D,gBAGJ,kBAACkC,GAAA,EAAD,KACGrrB,GAAYuW,KAAI,SAAConB,GAAD,OACf,kBAACvS,GAAA,EAAD,CACEpe,IAAK2wB,EAAI19B,MACTy9B,GAAI,CAAE,mCAAoC,CAAE/lB,OAAQ,KAGlDgmB,EAAIz9B,QAAQqW,KAAI,SAACqnB,GAAD,OAEc,IAA9BA,EAAWz9B,eACX,kBAAC6oB,GAAA,EAAD,CACAG,MAAM,SACNnc,IAAK4wB,EAAWp+B,GAChBxgB,UAAU,KAAKiqC,MAAM,OAEb,2BAAI2U,EAAWz9B,eAAiBy9B,EAAWx9B,YAAc,IALjE,IAK0Ew9B,EAAWz9B,gBAAmB,6BALxG,IAK+G,2BAAIy9B,EAAWt9B,QAAf,KAA4B,6BAL3I,KAKmJs9B,EAAWr9B,YAG9J,kBAAC,GAAD,CAAYmL,KAAQkyB,EAAaR,kBAAqBp7B,GAAtD,gBAYR,kBAACe,GAAA,EAAD,KACE,kBAACG,GAAA,EAAD,CACED,QAAQ,WACRzC,MAAM,UACN2C,QAASlB,EACTzC,GAAG,eACHqB,UAAWiB,EAAQN,cALrB,cC5HJN,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCigB,OAAQ,GACRC,YAAa,CACX9S,WAAY,WAEd+S,cAAe,CACb9f,MAAO,IACPoT,WAAYzT,EAAMQ,QAAQ,GAC1B4f,cAAepgB,EAAMQ,QAAQ,IAE/BJ,aAAc,CACZC,MAAO,IACPC,MAAO,QACPC,OAAQP,EAAMQ,QAAQ,IAExB6f,OAAQ,CACNjT,WAAY,WAEd0W,OAAQ,CACNvjB,OAAQ,EACRkR,QAAS,GAEXuV,iBAAkB,CAChBzmB,OAAQP,EAAMQ,QAAQ,GACtBkM,WAAY,GAEdua,IAAK,CACH1mB,OAAQP,EAAMQ,QAAQ,IAExBgS,OAAQ,CACNjS,OAAQP,EAAMQ,QAAQ,GACtBH,MAAO,IACPqN,OAAQ,kBACRwZ,YAAa,IACbrK,KAAM,GAERsK,aAAc,CACZ7a,YAAatM,EAAMQ,QAAQ,IAE7Bk6B,KAAM,CACJoB,OAAQ,UACRpuB,OAAQ,IACRnN,OAAQ,OACRF,MAAO,YAyVIo8B,GApVgB,SAACv+C,GAAW,IAEvCkkB,EAaElkB,EAbFkkB,WACAG,EAYErkB,EAZFqkB,SACA6E,EAWElpB,EAXFkpB,oBACAs1B,EAUEx+C,EAVFw+C,uBACA97B,EASE1iB,EATF0iB,aACA9lB,EAQEoD,EARFpD,MACAktB,EAOE9pB,EAPF8pB,OARsC,GAepC9pB,EANFm9B,UAMEn9B,EALF6iB,yBAVsC,MAUnB,MAVmB,EAWtC0mB,EAIEvpC,EAJFupC,uBACApB,EAGEnoC,EAHFmoC,eACAnC,EAEEhmC,EAFFgmC,iBACAxB,EACExkC,EADFwkC,uBAGIgF,EAAkBxsC,IAAMysC,YAjBU,EAmBZzsC,IAAMQ,UAAS,GAnBH,gCAqBIR,IAAMQ,UAAS,IArBnB,mBAqBjCihD,EArBiC,KAqBjBC,EArBiB,OAuBI1hD,IAAMQ,UAAS,GAvBnB,mBAuBjCmhD,EAvBiC,KAuBjBC,EAvBiB,KAyBlCp8B,EAAUZ,KAEVuiB,EAAgB,WACpBqa,GAAuB,IAGnBtY,EAAoB,SAAChI,EAAG/U,GAK1BD,EAHAC,IAAmBgd,EAAgB5oB,gBACnC4L,IAAmBgd,EAAgB3oB,gBAEf0gB,EAEAA,EAAEmB,OAAOngC,MAFNiqB,IAyBrBid,EAAuB,SAACC,GAAsB,IAC3C1pC,EAAYmtB,EAAZntB,SACD2pC,EAAkBxB,GAAwBnoC,EAAU0pC,GAC1Dnd,EAAoBod,EAAiBH,EAAgBhoB,kBAOjD0gC,EAA8B,SAACC,GAEnCF,EAAkBE,GAClBJ,GAAkB,IAyBpB,OACE,kBAAC,IAAMz7B,SAAP,KACE,kBAAC,GAAD,CACER,KAAMyB,EACNhB,QAASihB,EACThhB,kBAAgB,qBAChBC,mBAAiB,2BACjB7B,UAAWiB,EAAQuf,OACnBoc,UAAW,GAEV95B,EAAW,kBAAChB,GAAA,EAAD,MAAqB,GACjC,kBAACC,GAAA,EAAD,CAAapD,GAAG,qBAAqBqB,UAAWiB,EAAQwf,aACrDplC,GAEH,0BAAM2pC,SAAU7jB,GACd,kBAACa,GAAA,EAAD,CAAehC,UAAWiB,EAAQyf,eAChC,kBAAC5E,GAAA,EAAD,CAAMhI,WAAS,EAAC9T,UAAWiB,EAAQgkB,cAAelkB,QAAS,GACzD,kBAAC+a,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IACb,kBAACmJ,GAAA,EAAD,CACEvmB,GAAG,cACHyV,MAAM,cACNqR,WAAS,EACTC,KAAM,EACN7G,WAAS,EACTzc,QAAQ,WACRyb,SAAU,SAAClB,GAAD,OACRgI,EAAkBhI,EAAGiI,EAAgBjpB,cAEvChe,MAAO4qB,EAAOlH,YACd2d,UAAU,KAId,kBAAClD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACjB,kBAAC8f,GAAA,EAAD,CAAM77B,UAAWiB,EAAQg6B,KAAO34B,QAAS,kBAAMg7B,GAA4B,KACrE,kBAACxB,GAAA,EAAD,CACE39C,UAAU,MACV49C,MAAM,mEACNrsB,IAAI,sBACJlN,MAAS,CAACyL,OAAQ,IAAKrN,MAAO,UAEtB,kBAAC48B,GAAA,EAAD,KACN,kBAACr7B,GAAA,EAAD,CAAYs7B,cAAY,EAACr7B,QAAQ,KAAKjkB,UAAU,MAAMwhB,MAAQ,WAA9D,2BAOZ,kBAACmc,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IAEX,kBAACD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACEvmB,GAAG,eACH++B,iBAAA,EACAtpB,MAAM,gBACNz2B,MACE4qB,EAAOo1B,sBAAwBp1B,EAAOq1B,uBAExC/e,WAAS,KAGb,kBAAC/C,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IAE7B,kBAACD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACf,kBAAC8f,GAAA,EAAD,CAAM77B,UAAWiB,EAAQg6B,KAAO34B,QAAS,kBAAMg7B,GAA4B,KACzD,kBAACxB,GAAA,EAAD,CACE39C,UAAU,MACV49C,MAAM,mEACNrsB,IAAI,sBACJlN,MAAS,CAACyL,OAAQ,IAAKrN,MAAO,UAEtB,kBAAC48B,GAAA,EAAD,KACN,kBAACr7B,GAAA,EAAD,CAAYs7B,cAAY,EAACr7B,QAAQ,KAAKjkB,UAAU,MAAMwhB,MAAQ,WAA9D,yBAOZ,kBAACmc,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IAIX,kBAACD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACEvmB,GAAG,aACH++B,iBAAA,EACAtpB,MAAM,cACNz2B,MACE4qB,EAAOs1B,oBAAsBt1B,EAAOu1B,qBAEtCjf,WAAS,KAGb,kBAAC/C,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IAGf,kBAACD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAAC,GAAD,CACEuB,OAAO,eACPlJ,MAAM,gBACNtT,OAAO,SACPnjB,MAAO4qB,EAAO3E,OACd+a,aAAc,SAAChC,GAAD,OACZgI,EAAkBhI,EAAGiI,EAAgBjoB,gBAEvCsY,MAAOhW,GAAaA,aAAaoY,QAAO,SAAC0I,GAAD,OAAgB,IAATA,EAAEphB,MACjDigB,cAAc,OACd5e,UAAWiB,EAAQ0gB,SACnB7C,WAAW,KACXC,aAAa,WAGjB,kBAACjD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACEvmB,GAAG,kBACHyV,MAAM,+BACNnR,KAAK,SACL2a,WAAY,CAAEwH,IAAK,GACnBvH,SAAU,SAAClB,GAAD,OACRgI,EAAkBhI,EAAGiI,EAAgB/oB,YAEvCle,MAAO4qB,EAAOw1B,iBAAmB,GACjClf,WAAS,KAIb,kBAAC/C,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACEvmB,GAAG,aACHyV,MAAM,aACNyK,WAAS,EACThB,SAAU,SAAClB,GAAD,OACRgI,EAAkBhI,EAAGiI,EAAgB/nB,oBAEvClf,MAAO4qB,EAAOy1B,cAKlB,kBAACliB,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAACpmB,GAAA,EAAD,CAAYnC,UAAWiB,EAAQmT,OAA/B,gBAEF,kBAAC0H,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAACC,GAAA,EAAD,CACE7pB,GAAG,mBACHgB,MAAM,UACNyC,QAAQ,WACR8J,aAAW,MACX5J,QA/MM,SAAA4E,GACpB+gB,EAAgBQ,QAAQ3sC,SAAS,GAAG4sC,SA+MtB1oB,UAAS,UAAKiB,EAAQsmB,iBAAb,YAAiCtmB,EAAQ8R,SAElD,kBAAC,KAAD,CAAgB/S,UAAWiB,EAAQymB,eARrC,iBAUE,kBAACiB,GAAA,EAAD,CACE1lB,KAAK,OACL2lB,IAAKX,EACLY,UAAU,EACVhL,SApNQ,SAAC3W,GACzBA,EAAM8e,iBAD6B,IAE3B0P,EAA0Bj3C,EAA1Bi3C,sBACF5M,EAAO5hB,EAAM4W,OAAOiL,MAAM,GAEhC2M,EADe,CAAEzM,YAAY,EAAMC,SAAS,EAAOlC,SAAU8B,EAAMlZ,KAAMkZ,EAAKlZ,MAChDgV,EAAgB7qB,mBAC9CkuB,EAAgBQ,QAAQ3sC,SAAS,GAAG6B,MAAQ,MA+M5B6kB,MAAO,CAAEiK,QAAS,YAIvBma,GACC,kBAAC9K,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAAC,GAAD,CACE3B,eAAgBA,EAChBC,mBAAoBmB,KAMvCvD,EACe,kBAAC3I,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACEjiB,KAAK,OACLua,YAAY,kBACZoI,aAAcrd,EAAOntB,SACrBgnB,QAAQ,WACRwb,WAAY,CAAEiI,UAAU,GACxBhH,WAAS,EACTlhC,MAAO4qB,EAAOntB,WAEf,kBAAC,GAAD,CAAqBwoC,uBAA0Brb,EAAOntB,SAAUyoC,iBAAoBgB,EAAsBf,QAASW,KAGtH,kBAAC3I,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IACb,kBAAC,GAAD,CAAqB6H,uBAA0Brb,EAAOntB,SAAUyoC,iBAAoBgB,EAAsBf,QAASW,KAGtHA,GACC,kBAAC3I,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAAC1Z,GAAA,EAAD,CACE1C,MAAM,UACNyC,QAAQ,YACRpC,WAAYiB,EAAQmjB,eAAgBnjB,EAAQqjB,cAC5C3lB,GAAG,mBACH2D,QAvOe,WAC/B2gB,GAAuB,KAwON,aAQX,kBAAC/gB,GAAA,EAAD,CAAelC,UAAWiB,EAAQ2f,QAChC,kBAACve,GAAA,EAAD,CACEC,QAASsgB,EACTjjB,MAAM,UACNyC,QAAQ,WACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,gBALL,UASA,kBAAC0D,GAAA,EAAD,CACEY,KAAK,SACLtD,MAAM,UACNyC,QAAQ,YACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,kBAGF2C,MAKT,kBAAC,GAAD,CAAoB6gB,uBApRO,SAAC7X,GAAkB,IACzClvB,EAAYmtB,EAAZntB,SACD2pC,EAAkB7B,GAAmB9nC,EAAUkvB,GACrD3C,EAAoBod,EAAiBH,EAAgBhoB,kBAiRiB2lB,cAAc,IAElF,kBAAC,GAAD,CAA0BrhB,KAAQg8B,EAAiB97B,YAhQlB,WAEnC+7B,GAAkB,IA8PiFh8B,aA3PxE,SAAC0J,IAEN,IAAnBuyB,GACDz1B,EAAoBkD,EAAKhL,WAAY+kB,EAAgBtoB,yBACrDqL,EAAoBkD,EAAK/K,YAAa8kB,EAAgBroB,4BAItDoL,EAAoBkD,EAAKhL,WAAY+kB,EAAgBpoB,uBACrDmL,EAAoBkD,EAAK/K,YAAa8kB,EAAgBnoB,yBAIxD0gC,GAAkB,QCxHPc,GAtDY,SAACx/C,GAAW,IAAD,EAElCkkB,EAYElkB,EAZFkkB,WACA4F,EAWE9pB,EAXF8pB,OACAzF,EAUErkB,EAVFqkB,SACAwB,EASE7lB,EATF6lB,SACA24B,EAQEx+C,EARFw+C,uBACAt1B,EAOElpB,EAPFkpB,oBACAu2B,EAMEz/C,EANFy/C,aACAtX,EAKEnoC,EALFmoC,eACAC,EAIEpoC,EAJFooC,mBAEA5D,GAEExkC,EAHFg+B,aAGEh+B,EAFFwkC,wBACArH,EACEn9B,EADFm9B,UAmBF,OACE,kBAAC,IAAMla,SAAP,KACE,kBAAC,IAAD,GACEiB,WAAYA,EACZG,SAAUA,EACV6E,oBAAqBA,EACrBs1B,uBAAwBA,EACxB97B,aAvBe,SAACwb,GACpBA,EAAEqJ,iBACFzd,EAAOjE,SAAWA,EAClBiE,EAAOqqB,aAAe,EACtBsL,EAAa31B,IAoBTltB,MAAM,oBACNktB,OAAQA,EACRqT,UAAWA,EACXgL,eAAgBA,EAChBoB,uBArByB,SAACvhB,GAC9BogB,EAAmBpgB,IAqBfivB,sBAlBwB,SAAC/3C,EAAO0lB,IAEpCsyB,EAD+Bl3C,EAAvBk3C,oBACWh4C,EAAO0lB,KAKxB,2BAYauY,GAZb,mCAaoB,GAbpB,wCAc0BqH,GAd1B,MCYS1Y,oBArCf,SAAyBC,EAAOC,GAC9B,OAAO,cACL9H,WAAY6H,EAAMjC,OAAO41B,UAAUC,uBACnC71B,OAAQiC,EAAMjC,OAAO41B,UAAUtzB,KAC/B+Q,UAAWpR,EAAMoS,SAASC,aAAa5H,MACvCnS,SAAU0H,EAAMjC,OAAO41B,UAAUr7B,SACjCwB,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,GAC/DioB,eAAgBpc,EAAMjC,OAAO41B,UAAUtzB,KAAK4gB,gBAC5ChP,aAAcjS,EAAME,MAAMtuB,KAAKyuB,MAPjC,YAQaL,EAAMoS,SAASC,aAAa5B,cAI3C,SAA4BlQ,EAAUN,GACpC,MAAO,CACLwyB,uBAAwB,SAAC/7B,GACvB6J,EAAS3C,GAA+BlH,KAE1CyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAAS1C,GAAgC1qB,EAAO0lB,KAElD66B,aAAc,SAAC31B,GAEbwC,EAASzC,GAAqBC,EADjB2d,KAGfyP,mBAAoB,SAACh4C,EAAO0lB,GAC1B0H,EAAS1C,GAAgC1qB,EAAO0lB,KAElDwjB,mBAAoB,SAACpgB,GACnBsE,EAASpB,GAAiBlD,KAE5Bwc,uBAAwB,SAAC/hB,GACvB6J,EAASf,GAA+B9I,QAK/BqJ,CAA6C0zB,IC5CtD59B,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvC+oB,WAAY,CACV3pB,MAAOY,EAAMsN,QAAQoG,OAAO5B,OAE9BiJ,KAAM,GACNmW,YAAa,CACX9xB,MAAOY,EAAMsN,QAAQoG,OAAOlG,UAqDjBswB,GAjDa,SAAC5/C,GAC3B,IAQ0BkgB,EARpBsC,EAAUZ,KAEdi+B,EAIE7/C,EAJF6/C,QAEAC,GAEE9/C,EAHF0yB,OAGE1yB,EAFF8/C,yBACAC,EACE//C,EADF+/C,mCASF,OACE,kBAAC,IAAM98B,SAAP,KACE,kBAACymB,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,QARVzpB,EASF2/B,EAAQG,UARhBv/B,GAAgBA,gBAAgB8Y,MAAK,SAACnN,GAAD,OAAUA,EAAKlM,KAAOA,KACtEhhB,QASD,kBAACwqC,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC7BkW,EAAQI,UAEX,kBAACvW,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC7BkW,EAAQljD,UAEX,kBAAC+sC,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,MAAME,MAAM,UAC1C,kBAACrc,GAAA,EAAD,CACEC,aAAW,OACXlM,UAAWiB,EAAQyoB,SACnBC,KAAK,QACLrnB,QAAS,kBAAMi8B,GAAwB,EAAMD,EAAQ3/B,MAErD,kBAACwX,GAAA,EAAD,OAGF,kBAAClK,GAAA,EAAD,CACEC,aAAW,SACXlM,UAAWiB,EAAQqoB,WACnBK,KAAK,QACLrnB,QAAS,kBAAMk8B,GAAmC,EAAMF,EAAQ3/B,MAEhE,kBAACirB,GAAA,EAAD,UCvCJvpB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvC8mB,aAAc,CACZpa,WAAY,GACZtN,MAAOY,EAAMsN,QAAQyZ,SAASvZ,MAEhCwZ,iBAAkB,CAChBzmB,OAAQP,EAAMQ,QAAQ,GACtBkM,WAAY,GAEdua,IAAK,CACH1mB,OAAQP,EAAMQ,QAAQ,IAExBgS,OAAQ,CACNjS,OAAQP,EAAMQ,QAAQ,GACtBH,MAAO,IACPqN,OAAQ,kBACRwZ,YAAa,IACbrK,KAAM,GAERsK,aAAc,CACZ7a,YAAatM,EAAMQ,QAAQ,QAuIhB49B,GAnIW,SAAClgD,GACzB,IAAMwiB,EAAUZ,KAEdi+B,EAME7/C,EANF6/C,QACAntB,EAKE1yB,EALF0yB,OACAytB,EAIEngD,EAJFmgD,mCACAL,EAGE9/C,EAHF8/C,wBACAM,EAEEpgD,EAFFogD,6BACA5b,EACExkC,EADFwkC,uBAWI4B,EAAuB,SAACC,GAAsB,IAC3C1pC,EAAYkjD,EAAZljD,SACD2pC,EAAkBxB,GAAwBnoC,EAAU0pC,GAC1D8Z,EAAmC7Z,EAAiBH,EAAgB5nB,0BAKtE,OACE,kBAAC,IAAM0E,SAAP,KACK,kBAAC,GAAD,CAAoBygB,uBAhBI,SAAC7X,GAAkB,IACzClvB,EAAYkjD,EAAZljD,SACD2pC,EAAkB7B,GAAmB9nC,EAAUkvB,GACrDs0B,EAAmC7Z,EAAkBH,EAAgB5nB,0BAaIulB,cAAc,IACrF,kBAAC4F,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC9B,kBAAC,GAAD,CACE9K,OAAO,kBACPlJ,MAAM,YACNtT,OAAO,SACPnjB,MAAO2gD,EAAQG,UACf9f,aAAc,SAAChC,GAAD,OACZiiB,EACEjiB,EACAiI,EAAgB7nB,oBAGpBkY,MAAO/V,GAAgBA,gBACvB0f,cAAc,OACd5e,UAAWiB,EAAQ0gB,SACnB7C,WAAW,KACXC,aAAa,QACbC,UAAU,KAGd,kBAACmJ,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC9B,kBAAClD,GAAA,EAAD,CACEvmB,GAAG,kBACHyV,MAAM,WACNyJ,SAAU,SAAClB,GAAD,OACRiiB,EACEjiB,EACAiI,EAAgB9nB,mBAGpBnf,MAAO2gD,EAAQI,SACf7f,WAAW,KAIf,kBAACsJ,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,MAAME,MAAM,UAC1C,kBAAC,IAAM5mB,SAAP,KACE,kBAACoa,GAAA,EAAD,CAAMhI,WAAS,GAGT,kBAACgI,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACEjiB,KAAK,OACLua,YAAY,kBACZoI,aAAc0Y,EAAQljD,SACtBgnB,QAAQ,WACRwb,WAAY,CAAEiI,UAAU,GACxBhH,WAAS,EACTlhC,MAAO2gD,EAAQljD,WAEjB,kBAAC,GAAD,CAAqBwoC,uBAA0B0a,EAAQljD,SAAUyoC,iBAAoBgB,EAAsBf,SAvDlG,KA+DX,kBAAChI,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAAC1Z,GAAA,EAAD,CACE1C,MAAM,UACNyC,QAAQ,YACRpC,WAAYiB,EAAQmjB,eAAgBnjB,EAAQqjB,cAC5C3lB,GAAG,mBACH2D,QAAS2gB,GAER,cASf,kBAACkF,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,MAAME,MAAM,UAC1C,kBAAC,IAAM5mB,SAAP,KACE,kBAACW,GAAA,EAAD,CACEC,QAASu8B,EACTl/B,MAAM,UACNyC,QAAQ,WACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,cALL,QASA,kBAAC0D,GAAA,EAAD,CACEC,QAAS,kBACPi8B,GAAwB,EAAOD,EAAQ3/B,GAAIwS,EAAOxS,KAEpDqB,UAAWiB,EAAQomB,aACnB1oB,GAAG,gBALL,cC5HKmgC,GAhCmB,SAACrgD,GAAW,IACpCsgD,EAA8DtgD,EAA9DsgD,gBAAiB79B,EAA6CziB,EAA7CyiB,KAAMkuB,EAAuC3wC,EAAvC2wC,WAAY5uB,EAA2B/hB,EAA3B+hB,aAAcsC,EAAarkB,EAAbqkB,SAEnDwsB,EAAmB,uCAAG,WAAOpoB,GAAP,mBAAArqB,EAAA,sDAC1BqqB,EAAM8e,iBACEgZ,EAAkDvgD,EAAlDugD,6BAA8BD,EAAoBtgD,EAApBsgD,gBAChCx3B,EAHoB,gBAIrBw3B,GAELC,EAA6Bz3B,GANH,2CAAH,sDASzB,GAAKw3B,EAIL,OACE,kBAAC,GAAD,CACE79B,KAAMA,EACN7lB,MAAU,SAAL,WAAiB0jD,EAAgBL,UACtCr9B,YAAW,+EAA0E09B,EAAgBL,SAA1F,KACXp9B,iBAAkB,SAClBC,iBAAiB,SACjBH,YAAa,kBAAMguB,GAAW,EAAO2P,EAAgBpgC,KACrDwC,aAAcmuB,EACd9tB,gBAAiBsB,EACjBtC,aAAcA,EACdiB,UAAU,KCFD8I,oBApBf,SAAyBC,EAAOC,GAC9B,MAAO,CACLs0B,gBAAiBv0B,EAAMjC,OAAO02B,cAAcp0B,KAC5C3J,KAAMsJ,EAAMjC,OAAO02B,cAAcC,8BACjCp8B,SAAU0H,EAAMjC,OAAO02B,cAAcn8B,SACrCtC,aAAcgK,EAAMjC,OAAO02B,cAAcz+B,iBAI7C,SAA4BuK,EAAUN,GACpC,MAAO,CACL2kB,WAAY,SAACluB,EAAM4H,GACjBiC,EAASlC,GAAsC3H,EAAM4H,KAEvDk2B,6BAA8B,SAACz3B,GAC7BwD,E/H0CgD,SAACxD,GAAD,MAAc,CAClEtE,KAAMC,EAAMpT,sBACZyX,W+H5Ca43B,CAAuC53B,QAKvCgD,CAGbu0B,ICfIz+B,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvC6+B,sBAAuB,CACrBptB,QAASzR,EAAMQ,QAAQ,GACvBgM,UAAWxM,EAAMQ,QAAQ,GACzB8T,aAActU,EAAMQ,QAAQ,IAE9B+oB,MAAO,CACLrL,SAAU,KAEZsL,SAAU,CACR5V,WAAY,SA8EDkrB,GA1EM,SAAC5gD,GACpB,IAAMwiB,EAAUZ,KAEdi/B,EAUE7gD,EAVF6gD,SACAnuB,EASE1yB,EATF0yB,OACAotB,EAQE9/C,EARF8/C,wBACAgB,EAOE9gD,EAPF8gD,qBACAC,EAME/gD,EANF+gD,mBACAZ,EAKEngD,EALFmgD,mCACAC,EAIEpgD,EAJFogD,6BACAY,EAGEhhD,EAHFghD,wBACAjB,EAEE//C,EAFF+/C,mCACAvb,EACExkC,EADFwkC,uBAGF,OACE,kBAAC,IAAMvhB,SAAP,KACG+9B,EAA0B,kBAAC,GAAD,MAAgC,KAC3D,kBAACrV,GAAA,EAAD,CACEjsC,UAAW25B,KACX9X,UAAWiB,EAAQm+B,uBAEnB,kBAAC/U,GAAA,EAAD,CAAOrqB,UAAWiB,EAAQ6oB,MAAO5d,aAAW,gBAC1C,kBAACoe,GAAA,EAAD,KACE,kBAACC,GAAA,EAAD,KACE,kBAACpC,GAAA,EAAD,CAAWnoB,UAAWiB,EAAQ8oB,UAA9B,YACA,kBAAC5B,GAAA,EAAD,CAAWnoB,UAAWiB,EAAQ8oB,UAA9B,UACA,kBAAC5B,GAAA,EAAD,CAAWnoB,UAAWiB,EAAQ8oB,UAA9B,YACA,kBAAC5B,GAAA,EAAD,CACEnoB,UAAWiB,EAAQ8oB,SACnBzB,MAAM,aAIZ,kBAACkC,GAAA,EAAD,KACG8U,EAAS5pB,KAAI,SAAC4oB,GACb,IAAM7T,EACJ8U,GAAwBjB,EAAQ3/B,KAAO6gC,EAAmB7gC,GAE5D,OACE,kBAAC4rB,GAAA,EAAD,CAAUpe,IAAKmyB,EAAQ3/B,IACpB8rB,EACC,kBAAC,GAAD,CACE6T,QAASkB,EACTruB,OAAQA,EACRytB,mCACEA,EAEFL,wBAAyBA,EACzBM,6BACEA,EAEF5b,uBAAwBA,IAG1B,kBAAC,GAAD,CACEqb,QAASA,EACTntB,OAAQA,EACRotB,wBAAyBA,EACzBC,mCACEA,aC7ElBn+B,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCm/B,oBAAqB,CACnB1tB,QAASzR,EAAMQ,QAAQ,GACvBgM,UAAWxM,EAAMQ,QAAQ,IAE3B6pB,OAAQ,CACNjK,cAAepgB,EAAMQ,QAAQ,IAE/BkkB,cAAe,CACbtE,cAAepgB,EAAMQ,QAAQ,IAE/BwmB,iBAAkB,CAChBzmB,OAAQP,EAAMQ,QAAQ,GACtBkM,WAAY,GAEdua,IAAK,CACH1mB,OAAQP,EAAMQ,QAAQ,IAExBgS,OAAQ,CACNjS,OAAQP,EAAMQ,QAAQ,GACtBH,MAAO,IACPqN,OAAQ,kBACRwZ,YAAa,IACbrK,KAAM,GAERsK,aAAc,CACZ7a,YAAatM,EAAMQ,QAAQ,QAoGhB4+B,GAhGI,SAAClhD,GAClB,IAAMwiB,EAAUZ,KAEdi+B,EAQE7/C,EARF6/C,QACA3Z,EAOElmC,EAPFkmC,kBACAib,EAMEnhD,EANFmhD,oBACAnb,EAKEhmC,EALFgmC,iBACAxB,EAIExkC,EAJFwkC,uBAGAd,GACE1jC,EAHFupC,uBAGEvpC,EAFFmoC,eAEEnoC,EADF0jC,wBAII0C,EAAuB,SAACC,GAAsB,IAC3C1pC,EAAYkjD,EAAZljD,SACD2pC,EAAkBxB,GAAwBnoC,EAAU0pC,GAC1D3C,EAAuB4C,IAIzB,OACE,0BAAMC,SAAU4a,GACd,kBAAC9jB,GAAA,EAAD,CAAMhI,WAAS,EAAC/S,QAAS,EAAGf,UAAWiB,EAAQgkB,eAC7C,kBAACnJ,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAAC,GAAD,CACEuB,OAAO,kBACPlJ,MAAM,YACNtT,OAAO,SACPnjB,MAAO2gD,EAAQG,UACf9f,aAAc,SAAChC,GAAD,OACZgI,EAAkBhI,EAAGiI,EAAgB7nB,oBAEvCkY,MAAO/V,GAAgBA,gBACvB0f,cAAc,OACd5e,UAAWiB,EAAQ0gB,SACnB7C,WAAW,KACXC,aAAa,QACbC,UAAU,KAGd,kBAAClD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IACf,kBAACD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IACb,kBAACmJ,GAAA,EAAD,CACEvmB,GAAG,kBACHyV,MAAM,WACNyJ,SAAU,SAAClB,GAAD,OACRgI,EAAkBhI,EAAGiI,EAAgB9nB,mBAEvCnf,MAAO2gD,EAAQI,SACf7f,WAAW,EACX4G,WAAS,EACTC,KAAM,EACNtjB,QAAQ,cAKXqiB,EACO,kBAAC3I,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACEjiB,KAAK,OACLua,YAAY,kBACZoI,aAAc0Y,EAAQljD,SACtBgnB,QAAQ,WACRwb,WAAY,CAAEiI,UAAU,GACxBhH,WAAS,EACTlhC,MAAO2gD,EAAQljD,WAElB,kBAAC,GAAD,CAAqBwoC,uBAA0B0a,EAAQljD,SAAUyoC,iBAAoBgB,EAAsBf,QAASW,KAGrH,kBAAC3I,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IACb,kBAAC,GAAD,CAAqB6H,uBAA0B0a,EAAQljD,SAAUyoC,iBAAoBgB,EAAsBf,QAASW,KAGvHA,GACC,kBAAC3I,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAAC1Z,GAAA,EAAD,CACE1C,MAAM,UACNyC,QAAQ,YACRpC,WAAYiB,EAAQmjB,eAAgBnjB,EAAQqjB,cAC5C3lB,GAAG,mBACH2D,QAAS2gB,GAER,cC9Gf5iB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCigB,OAAQ,GACRC,YAAa,CACX9S,WAAY,WAEd+S,cAAe,CACb9f,MAAO,IACPoT,WAAYzT,EAAMQ,QAAQ,GAC1B4f,cAAepgB,EAAMQ,QAAQ,IAE/BJ,aAAc,CACZC,MAAO,IACPC,MAAO,QACPC,OAAQP,EAAMQ,QAAQ,IAExB6f,OAAQ,CACNjT,WAAY,eA4GDkyB,GAxGgB,SAACphD,GAC9B,IAAMwiB,EAAUZ,KAEdsC,EAYElkB,EAZFkkB,WACAm9B,EAWErhD,EAXFqhD,6BACAh9B,EAUErkB,EAVFqkB,SACAw7B,EASE7/C,EATF6/C,QACA32B,EAQElpB,EARFkpB,oBACAY,EAOE9pB,EAPF8pB,OACAw3B,EAMEthD,EANFshD,cACAnZ,EAKEnoC,EALFmoC,eACAC,EAIEpoC,EAJFooC,mBACAviB,EAGE7lB,EAHF6lB,SAEA2e,GACExkC,EAFFg+B,aAEEh+B,EADFwkC,wBAGIL,EAAgB,WACpBkd,GAA6B,IAGzBF,EAAsB,SAACjjB,GAC3BA,EAAEqJ,iBAEF,IAAMze,EAAO,cACXy4B,SAAUz3B,EAAO5J,IACd2/B,GAELyB,EAAcx4B,EAAS2e,EAAmB5hB,IAmBtC6d,EAAyB,SAAC7X,GAAkB,IACzClvB,EAAYkjD,EAAZljD,SACD2pC,EAAkB7B,GAAmB9nC,EAAUkvB,GACrD3C,EAAoBod,EAAiBH,EAAgB5nB,0BAGvD,OACE,kBAAC,IAAM0E,SAAP,KACI,kBAAC,GAAD,CAAoBygB,uBAAwBA,EAAwBI,cAAc,IACpF,kBAAC,GAAD,CACErhB,KAAMyB,EACNhB,QAASihB,EACThhB,kBAAgB,qBAChBC,mBAAiB,2BACjB7B,UAAWiB,EAAQuf,QAElB1d,EAAW,kBAAChB,GAAA,EAAD,MAAqB,GACjC,kBAACC,GAAA,EAAD,CAAapD,GAAG,qBAAqBqB,UAAWiB,EAAQwf,aAAxD,eAGA,0BAAMuE,SAAU4a,GACd,kBAAC59B,GAAA,EAAD,CAAehC,UAAWiB,EAAQyf,eAChC,kBAAC,GAAD,CACE4d,QAASA,EACT3Z,kBAxCc,SAAChI,EAAG/U,GAE1BD,EADEC,IAAmBgd,EAAgB1qB,0BACjByiB,EAEAA,EAAEmB,OAAOngC,MAFNiqB,IAuCfg4B,oBAAqBA,EACrBhZ,eAAgBA,EAChBoB,uBAnCmB,SAACvhB,GAC9BogB,EAAmBpgB,IAmCTge,kBAAkB,EAClBxB,uBAjCqB,WAC/BA,GAAuB,IAiCbd,uBAAwBA,KAG5B,kBAACjgB,GAAA,EAAD,CAAelC,UAAWiB,EAAQ2f,QAChC,kBAACve,GAAA,EAAD,CACErC,UAAWiB,EAAQN,aACnByB,QAAQ,WACRE,QAASsgB,GAHX,UAOA,kBAACvgB,GAAA,EAAD,CACEY,KAAK,SACLtD,MAAM,UACNK,UAAWiB,EAAQN,aACnByB,QAAQ,YACR8T,UAAW,kBAACqV,GAAA,EAAD,OALb,YCjFGhhB,oBAlCf,SAAyBC,EAAOC,GAC9B,OAAO,cACL9H,WAAY6H,EAAMjC,OAAO03B,WAAWC,2BACpCp9B,SAAU0H,EAAMjC,OAAO03B,WAAWn9B,SAClCw7B,QAAS9zB,EAAMjC,OAAO03B,WAAWp1B,KACjCtC,OAAQiC,EAAMjC,OAAO41B,UAAUtzB,KAC/BvG,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,GAC/DioB,eAAgBpc,EAAMjC,OAAO03B,WAAWp1B,KAAK4gB,gBAC7ChP,aAAcjS,EAAME,MAAMtuB,KAAKyuB,MAPjC,iBAQkBL,EAAMjC,OAAO03B,WAAWp1B,KAAK4gB,oBAKjD,SAA4B1gB,EAAUN,GACpC,MAAO,CACLq1B,6BAA8B,SAAC5+B,GAC7B6J,EAASnC,GAAmC1H,KAE9CyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAAS1C,GAAgC1qB,EAAO0lB,KAElD08B,cAAe,SAACx4B,EAAS/D,EAAMc,GAC7ByG,EAASpC,GAAsBpB,EAAS/D,EAAMc,KAEhDuiB,mBAAoB,SAACpgB,GACnBsE,EnIoQuC,SAACtE,GAAD,MAAiB,CAC5DxD,KAAMC,EAAM/K,iCACZsO,cmItQa05B,CAA8B15B,KAEzCwc,uBAAwB,SAAC/hB,GACvB6J,EAASf,GAA+B9I,QAK/BqJ,CAGbs1B,ICpCIx/B,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCsgB,YAAa,CACXpU,QAAS,eACTM,UAAW,GAEb+T,0BAA2B,CACzB9O,QAASzR,EAAMQ,QAAQ,IAEzBggB,UAAW,CACT9T,YAAa,IAEf+T,WAAY,CACV7M,WAAY,KAEd8M,iBAAkB,CAChBlU,UAAW,OA6GAqzB,GAzGS,SAAC3hD,GAAW,IAEhC8pB,EAgBE9pB,EAhBF8pB,OACA83B,EAeE5hD,EAfF4hD,oBACAC,EAcE7hD,EAdF6hD,0BACAhB,EAaE7gD,EAbF6gD,SACAS,EAYEthD,EAZFshD,cACAxB,EAWE9/C,EAXF8/C,wBACAgB,EAUE9gD,EAVF8gD,qBACAC,EASE/gD,EATF+gD,mBACAe,EAQE9hD,EARF8hD,qCACAT,EAOErhD,EAPFqhD,6BACAI,EAMEzhD,EANFyhD,2BACAhB,EAKEzgD,EALFygD,8BACAsB,EAIE/hD,EAJF+hD,0BACAl8B,EAGE7lB,EAHF6lB,SACA6M,EAEE1yB,EAFF0yB,OACA8R,EACExkC,EADFwkC,uBAEIhiB,EAAUZ,KAEhB5kB,IAAMmB,WACJ,WACE0jD,EAA0B/3B,EAAO5J,MAInC,CAAC4J,EAAO5J,KA8BV,OACE,kBAAC,IAAM+C,SAAP,KACGw+B,EAA6B,kBAAC,GAAD,MAA6B,KAE3D,yBAAKlgC,UAAWiB,EAAQsgB,oBACtB,kBAACtV,GAAA,EAAD,CACEC,aAAW,mBACXvM,MAAM,UACN2C,QAAS,kBAAM+9B,GAAoB,IACnC1hC,GAAG,kBACHqB,UAAWiB,EAAQ8f,WAEnB,kBAACiC,GAAA,EAAD,CAAerjB,MAAM,aAEvB,kBAACwC,GAAA,EAAD,CAAYnC,UAAWiB,EAAQ4f,aAA/B,YAGF,yBAAK7gB,UAAWiB,EAAQirB,qBACtB,kBAAC/pB,GAAA,EAAD,CAAYnC,UAAWiB,EAAQ+f,YAC5BzY,EAAOlH,cAIZ,kBAACgB,GAAA,EAAD,CACE1C,MAAM,UACNyC,QAAQ,YACRpC,UAAWiB,EAAQggB,iBACnB3e,QAAS,kBAAMw9B,GAA6B,KAJ9C,eASA,kBAAC,GAAD,CACER,SAAUA,EACVf,wBAAyBA,EACzBptB,OAAQA,EACRouB,qBAAsBA,EACtBC,mBAAoBA,EACpBZ,mCAjEqC,SAACjiB,EAAG/U,GAK3C24B,EAHA34B,IAAmBgd,EAAgBzoB,aACnCyL,IAAmBgd,EAAgB5nB,wBAEE2f,EAEAA,EAAEmB,OAAOngC,MAFNiqB,IA6DtCi3B,6BAvD+B,SAACliB,GACpCA,EAAEqJ,iBAEF,IAAMze,EAAO,cACXy4B,SAAUz3B,EAAO5J,IACd6gC,GAGLO,EAAcx4B,EAAS2e,EAAmB5hB,IAgDtCm7B,wBAAyBP,EACzBV,mCA9CqC,SAACt9B,EAAM4H,GAChD03B,EAA0Bt/B,EAAM4H,IA8C5Bma,uBAAwBA,MC9CjB1Y,oBA/Df,SAAyBC,EAAOC,GAC9B,MAAO,CACLuiB,UAAWxiB,EAAMjC,OAAO41B,UAAUsC,oBAClCl4B,OAAQiC,EAAMjC,OAAO41B,UAAUtzB,KAC/BvG,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,GAC/D2gC,SAAU90B,EAAMjC,OAAOm4B,qBAAqBzrB,MAC5CqpB,QAAS9zB,EAAMjC,OAAO03B,WAAWp1B,KACjC00B,qBAAsB/0B,EAAMjC,OAAOo4B,YAAYtU,OAC/CmT,mBAAoBh1B,EAAMjC,OAAOo4B,YAAY91B,KAC7Cq1B,2BACE11B,EAAMjC,OAAO03B,WAAWC,2BAC1BhB,8BACE10B,EAAMjC,OAAO02B,cAAcC,8BAC7B/tB,OAAQ3G,EAAME,MAAMtuB,KAAKyuB,KACzB+b,eACEpc,EAAMjC,OAAOo4B,YAAY91B,MACzBL,EAAMjC,OAAOo4B,YAAY91B,KAAK4gB,oBAIpC,SAA4B1gB,EAAUN,GACpC,MAAO,CACL41B,oBAAqB,SAACn/B,GACpB6J,EAASvC,GAA4BtH,KAEvCyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAAS1C,GAAgC1qB,EAAO0lB,KAElD66B,aAAc,SAAC53B,GAEbyE,EAASzC,GAAqBhC,EADjB4f,KAGfoa,0BAA2B,SAACN,GAC1Bj1B,ErIM2C,SAACi1B,GAAD,MAAe,CAC9D/8B,KAAMC,EAAMzT,8BACZuwC,YqIRaY,CAAkCZ,KAE7CD,cAAe,SAACx4B,EAAS/D,EAAMc,GAC7ByG,EAASpC,GAAsBpB,EAAS/D,EAAMc,KAEhDi6B,wBAAyB,SAACsC,EAAuBj6B,EAAUuK,GACzDpG,ErIiByC,SAC7C81B,EACA/3B,GAF6C,MAGzC,CACJ7F,KAAMC,EAAM1S,2BACZqwC,wBACA/3B,aqItBMg4B,CAAgCD,EAAuBj6B,KAG3DigB,mBAAoB,SAACpgB,GACnBsE,ErIwP2C,SAACtE,GAAD,MAAiB,CAChExD,KAAMC,EAAM7K,sCACZoO,cqI1Pas6B,CAAkCt6B,KAE7C85B,qCAAsC,SAAC5iD,EAAO0lB,GAC5C0H,ErIkBoD,SACxDptB,EACA0lB,GAFwD,MAGpD,CACJJ,KAAMC,EAAMpS,iCACZnT,QACA0lB,kBqIvBM29B,CAA2CrjD,EAAO0lB,KAGtDy8B,6BAA8B,SAAC5+B,GAC7B6J,EAASnC,GAAmC1H,KAE9Cs/B,0BAA2B,SAACt/B,EAAM4H,GAChCiC,EAASlC,GAAsC3H,EAAM4H,KAEvDma,uBAAwB,SAAC/hB,GACvB6J,EAASf,GAA+B9I,QAK/BqJ,CAA6C61B,ICzB7Ca,GAtDU,SAACxiD,GAAW,IAAD,EAEhC8pB,EAaE9pB,EAbF8pB,OACA5F,EAYElkB,EAZFkkB,WACAG,EAWErkB,EAXFqkB,SACA6E,EAUElpB,EAVFkpB,oBACAs1B,EASEx+C,EATFw+C,uBACAiB,EAQEz/C,EARFy/C,aACA55B,EAOE7lB,EAPF6lB,SACAsiB,EAMEnoC,EANFmoC,eACAC,EAKEpoC,EALFooC,mBAGA5D,GAEExkC,EAJFq3C,qCAIEr3C,EAHFg+B,aAGEh+B,EAFFwkC,wBACArH,EACEn9B,EADFm9B,UAiBF,OACE,kBAAC,IAAMla,SAAP,KACE,kBAAC,IAAD,GACEiB,WAAYA,EACZG,SAAUA,EACV6E,oBAAqBA,EACrBs1B,uBAAwBA,EACxB97B,aArBe,SAACwb,GACpBA,EAAEqJ,iBACFzd,EAAOjE,SAAWA,EAClB45B,EAAa31B,IAmBTltB,MAAM,gBACNktB,OAAQA,EACRqT,UAAWA,EACXta,iBAAiB,SACjBslB,eAAgBA,EAChBoB,uBAtByB,SAACvhB,GAC9BogB,EAAmBpgB,IAsBfivB,sBAnBwB,SAAC/3C,EAAO0lB,IAEpCsyB,EAD+Bl3C,EAAvBk3C,oBACWh4C,EAAO0lB,KAKxB,2BAaauY,GAbb,mCAcoB,GAdpB,wCAe0BqH,GAf1B,MCyBS1Y,oBAjDf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAMjC,OAAO41B,UAAU+C,qBACnC34B,OAAQiC,EAAMjC,OAAO41B,UAAUtzB,KAC/B/H,SAAU0H,EAAMjC,OAAO41B,UAAUr7B,SACjCwB,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,GAC/DioB,eAAgBpc,EAAMjC,OAAO41B,UAAUtzB,KAAK4gB,gBAC5ChP,aAAcjS,EAAME,MAAMtuB,KAAKyuB,KAC/B+Q,UAAWpR,EAAMoS,SAASC,aAAa5B,cAI3C,SAA4BlQ,EAAUN,GACpC,MAAO,CACLwyB,uBAAwB,SAAC/7B,GACvB6J,EAAStC,GAA6BvH,KAExCyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAAS1C,GAAgC1qB,EAAO0lB,KAElD66B,aAAc,SAAC53B,GAEbyE,EAASzC,GAAqBhC,EADjB4f,KAGfyP,mBAAoB,SAACh4C,EAAO0lB,GAC1B0H,EAAS1C,GAAgC1qB,EAAO0lB,KAElDwjB,mBAAoB,SAACpgB,GACnBsE,EAASpB,GAAiBlD,KAE5Bwc,uBAAwB,SAAC/hB,GACvB6J,EAASf,GAA+B9I,KAE1C40B,qCAAsC,SACpCnvB,EACAC,EACAC,GAEAkE,EACEnB,GACEjD,EACAC,EACAC,QAOK0D,CAA6C02B,ICxDtD5gC,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvC+oB,WAAY,CACV3pB,MAAOY,EAAMsN,QAAQoG,OAAO5B,OAE9BiJ,KAAM,GACNmW,YAAa,CACX9xB,MAAOY,EAAMsN,QAAQoG,OAAOlG,UA4CjBozB,GAxCY,SAAC1iD,GAC1B,IAAMwiB,EAAUZ,KAEd+gC,EAIE3iD,EAJF2iD,OACAC,EAGE5iD,EAHF4iD,uBACAC,EAEE7iD,EAFF6iD,4BACAnwB,EACE1yB,EADF0yB,OAEIowB,EAAOroB,GAAWkoB,EAAOI,YAC/B,OACE,kBAAC,IAAM9/B,SAAP,KACE,kBAACymB,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC7BgZ,EAAO//B,aAEV,kBAAC8mB,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC7BxS,KAAO2rB,GAAMtrB,OAAO,gBAEvB,kBAACkS,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,MAAME,MAAM,UAC1C,kBAACrc,GAAA,EAAD,CACEC,aAAW,OACXlM,UAAWiB,EAAQyoB,SACnBC,KAAK,QACLrnB,QAAS,kBAAM++B,GAAuB,EAAMD,EAAOziC,MAEnD,kBAACwX,GAAA,EAAD,OAGF,kBAAClK,GAAA,EAAD,CACEC,aAAW,SACXlM,UAAWiB,EAAQqoB,WACnBK,KAAK,QACLrnB,QAAS,kBAAMg/B,GAA4B,EAAMF,EAAOziC,GAAIwS,KAE5D,kBAACyY,GAAA,EAAD,UChCJvpB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvC8mB,aAAc,CACZpa,WAAY,GACZtN,MAAOY,EAAMsN,QAAQyZ,SAASvZ,MAEhCwZ,iBAAkB,CAChBzmB,OAAQP,EAAMQ,QAAQ,GACtBkM,WAAY,GAEdua,IAAK,CACH1mB,OAAQP,EAAMQ,QAAQ,IAExBgS,OAAQ,CACNjS,OAAQP,EAAMQ,QAAQ,GACtBH,MAAO,IACPqN,OAAQ,kBACRwZ,YAAa,IACbrK,KAAM,GAERsK,aAAc,CACZ7a,YAAatM,EAAMQ,QAAQ,QAsIhB0gC,GAlIU,SAAChjD,GACxB,IAAMwiB,EAAUZ,KAEd+gC,EAME3iD,EANF2iD,OACAM,EAKEjjD,EALFijD,kCACAL,EAIE5iD,EAJF4iD,uBACAM,EAGEljD,EAHFkjD,4BACA3Z,EAEEvpC,EAFFupC,uBACApB,EACEnoC,EADFmoC,eAGIqB,EAAkBxsC,IAAMysC,YAsB9B,OACE,kBAAC,IAAMxmB,SAAP,KACE,kBAACymB,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC9B,kBAAClD,GAAA,EAAD,CACEvmB,GAAG,kBACHyV,MAAM,cACNyJ,SAAU,SAAClB,GAAD,OACR+kB,EACE/kB,EACAiI,EAAgB3nB,oBAGpBtf,MAAOyjD,EAAO//B,YACdwd,WAAW,EACX4G,WAAS,EACTC,KAAM,EACNtjB,QAAQ,cAGZ,kBAAC+lB,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC9B,kBAAC,GAAD,CACEzpB,GAAG,aACH2e,OAAO,aACPjiC,MAAM,cACN2kB,UAAWiB,EAAQojB,OACnBgC,iBAAkB,SAAC/K,GAAD,OAChBomB,EACEpmB,EACAsJ,EAAgB1nB,qBAGpBopB,aAAcpN,GAAWkoB,EAAOI,YAChCxiB,UAAU,KAId,kBAACmJ,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,MAAME,MAAM,UAC1C,kBAAC,IAAM5mB,SAAP,KAEE,kBAACoa,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAACpmB,GAAA,EAAD,CAAYnC,UAAWiB,EAAQmT,OAA/B,gBAEF,kBAAC0H,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAACC,GAAA,EAAD,CACE7pB,GAAG,mBACHgB,MAAM,UACNyC,QAAQ,WACR8J,aAAW,MACX5J,QApEQ,SAAC4E,GACnB+gB,EAAgBQ,QAAQ3sC,SAAS,GAAG4sC,SAoE1B1oB,UAAS,UAAKiB,EAAQsmB,iBAAb,YAAiCtmB,EAAQ8R,SAElD,kBAAC,KAAD,CAAgB/S,UAAWiB,EAAQymB,eARrC,iBAUE,kBAACiB,GAAA,EAAD,CACE1lB,KAAK,OACL2lB,IAAKX,EACLY,UAAU,EACVhL,SAzEY,SAAC3W,GACzBA,EAAM8e,iBACN,IAAM8C,EAAO5hB,EAAM4W,OAAOiL,MAAM,GAC1BC,EAAS,CACbC,YAAY,EACZC,SAAS,EACTlC,SAAU8B,EACVlZ,KAAMkZ,EAAKlZ,MAEb8xB,EACE1Y,EACApE,EAAgB5qB,0BAElBiuB,EAAgBQ,QAAQ3sC,SAAS,GAAG6B,MAAQ,MA6DhC6kB,MAAO,CAAEiK,QAAS,YAIvBma,GACC,kBAAC9K,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAAC,GAAD,CACE3B,eAAgBA,EAChBC,mBAAoBmB,OAO9B,kBAACG,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,MAAME,MAAM,UAC1C,kBAAC,IAAM5mB,SAAP,KACE,kBAACW,GAAA,EAAD,CACEC,QAASq/B,EACThiC,MAAM,UACNyC,QAAQ,WACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,cALL,QASA,kBAAC0D,GAAA,EAAD,CACEC,QAAS,kBAAM++B,GAAuB,EAAOD,EAAOziC,KACpDqB,UAAWiB,EAAQomB,aACnB1oB,GAAG,gBAHL,cC3HKijC,GAjCkB,SAACnjD,GAAW,IACnC2iD,EAAqD3iD,EAArD2iD,OAAQlgC,EAA6CziB,EAA7CyiB,KAAMkuB,EAAuC3wC,EAAvC2wC,WAAY5uB,EAA2B/hB,EAA3B+hB,aAAcsC,EAAarkB,EAAbqkB,SAE1CwsB,EAAmB,uCAAG,WAAOpoB,GAAP,mBAAArqB,EAAA,sDAC1BqqB,EAAM8e,iBACE6b,EAAwCpjD,EAAxCojD,4BAA6BT,EAAW3iD,EAAX2iD,QAC/B75B,EAHoB,gBAIrB65B,IAEGU,UAAW,EACnBD,EAA4Bt6B,EAASA,EAAQy4B,UAPnB,2CAAH,sDAUzB,GAAKoB,EAIL,OACE,kBAAC,GAAD,CACElgC,KAAMA,EACN7lB,MAAU,SAAL,WAAiB+lD,EAAO//B,aAC7BA,YAAW,8EAAyE+/B,EAAO//B,YAAhF,KACXC,iBAAkB,SAClBC,iBAAiB,SACjBH,YAAa,kBAAMguB,GAAW,EAAOgS,EAAOziC,KAC5CwC,aAAcmuB,EACd9tB,gBAAiBsB,EACjBtC,aAAcA,EACdiB,UAAU,KCDD8I,oBArBf,SAAyBC,EAAOC,GAC9B,MAAO,CACL22B,OAAQ52B,EAAMjC,OAAOw5B,iBAAiBl3B,KACtC3J,KAAMsJ,EAAMjC,OAAOw5B,iBAAiBC,6BACpCl/B,SAAU0H,EAAMjC,OAAOw5B,iBAAiBj/B,SACxCtC,aAAcgK,EAAMjC,OAAO05B,UAAUzhC,iBAIzC,SAA4BuK,EAAUN,GACpC,MAAO,CACL2kB,WAAY,SAACluB,EAAMkI,GACjB2B,EAAS5B,GAAqCjI,EAAMkI,KAEtDy4B,4BAA6B,SAACt6B,GAE5BwD,EAAS9B,GAA2B1B,EADvB2e,QAMJ3b,CAGbq3B,ICjBIvhC,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvC2hC,oBAAqB,CACnBlwB,QAASzR,EAAMQ,QAAQ,GACvBgM,UAAWxM,EAAMQ,QAAQ,GACzB8T,aAActU,EAAMQ,QAAQ,IAE9B+oB,MAAO,CACLrL,SAAU,KAEZsL,SAAU,CACR5V,WAAY,SAgFDguB,GA5EI,SAAC1jD,GAClB,IAAMwiB,EAAUZ,KAEd+hC,EAWE3jD,EAXF2jD,QACAf,EAUE5iD,EAVF4iD,uBACAgB,EASE5jD,EATF4jD,oBACAC,EAQE7jD,EARF6jD,kBACAZ,EAOEjjD,EAPFijD,kCACAC,EAMEljD,EANFkjD,4BACAL,EAKE7iD,EALF6iD,4BACAiB,EAIE9jD,EAJF8jD,uBACApxB,EAGE1yB,EAHF0yB,OACA6W,EAEEvpC,EAFFupC,uBACApB,EACEnoC,EADFmoC,eAGF,OACE,kBAAC,IAAMllB,SAAP,KACG6gC,EAAyB,kBAAC,GAAD,MAA+B,KACxDH,GACC,kBAAChY,GAAA,EAAD,CACEjsC,UAAW25B,KACX9X,UAAWiB,EAAQihC,qBAEnB,kBAAC7X,GAAA,EAAD,CAAOrqB,UAAWiB,EAAQ6oB,MAAO5d,aAAW,gBAC1C,kBAACoe,GAAA,EAAD,KACE,kBAACC,GAAA,EAAD,KACE,kBAACpC,GAAA,EAAD,CAAWnoB,UAAWiB,EAAQ8oB,UAA9B,eACA,kBAAC5B,GAAA,EAAD,CAAWnoB,UAAWiB,EAAQ8oB,UAA9B,eACA,kBAAC5B,GAAA,EAAD,CACEnoB,UAAWiB,EAAQ8oB,SACnBzB,MAAM,aAIZ,kBAACkC,GAAA,EAAD,KACG4X,EAAQ1sB,KAAI,SAAC0rB,GACZ,IAAM3W,EACJ4X,GAAuBjB,EAAOziC,KAAO2jC,EAAkB3jC,GAEzD,OACE,kBAAC4rB,GAAA,EAAD,CAAUpe,IAAKi1B,EAAOziC,IACnB8rB,EACC,kBAAC,GAAD,CACE2W,OAAQkB,EACRZ,kCACEA,EAEFL,uBAAwBA,EACxBM,4BACEA,EAEF/a,eAAgBA,EAChBoB,uBAAwBA,IAG1B,kBAAC,GAAD,CACEoZ,OAAQA,EACRC,uBAAwBA,EACxBC,4BACEA,EAEFnwB,OAAQA,aClF1B9Q,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCm/B,oBAAqB,CACnB1tB,QAASzR,EAAMQ,QAAQ,GACvBgM,UAAWxM,EAAMQ,QAAQ,IAE3B6pB,OAAQ,CACNjK,cAAepgB,EAAMQ,QAAQ,IAE/BkkB,cAAe,CACbtE,cAAepgB,EAAMQ,QAAQ,IAE/BwmB,iBAAkB,CAChBzmB,OAAQP,EAAMQ,QAAQ,GACtBkM,WAAY,GAEdua,IAAK,CACH1mB,OAAQP,EAAMQ,QAAQ,IAExBgS,OAAQ,CACNjS,OAAQP,EAAMQ,QAAQ,GACtBH,MAAO,IACPqN,OAAQ,kBACRwZ,YAAa,IACbrK,KAAM,GAERsK,aAAc,CACZ7a,YAAatM,EAAMQ,QAAQ,QA0GhByhC,GAtGG,SAAC/jD,GACjB,IAAMwiB,EAAUZ,KAEd+gC,EAME3iD,EANF2iD,OACAzc,EAKElmC,EALFkmC,kBAJyB,GASvBlmC,EAJFgkD,mBAIEhkD,EAHF6iB,yBANyB,MAMN,MANM,EAOzB0mB,EAEEvpC,EAFFupC,uBACApB,EACEnoC,EADFmoC,eAGIqB,EAAkBxsC,IAAMysC,YAmB9B,OACE,kBAACpM,GAAA,EAAD,CAAMhI,WAAS,EAAC/S,QAAS,EAAGf,UAAWiB,EAAQgkB,eAC7C,kBAACnJ,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IACb,kBAACmJ,GAAA,EAAD,CACEvmB,GAAG,kBACHyV,MAAM,cACNyJ,SAAU,SAAClB,GAAD,OACRgI,EAAkBhI,EAAGiI,EAAgB3nB,oBAEvCtf,MAAOyjD,EAAO//B,YACdwd,WAAW,EACX4G,WAAS,EACTC,KAAM,EACNtjB,QAAQ,cAIZ,kBAAC0Z,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAAC,GAAD,CACEpd,GAAG,aACH2e,OAAO,aACPjiC,MAAM,cACN2kB,UAAWiB,EAAQojB,OACnBgC,iBAAkB,SAAC/K,GAAD,OAChBqJ,EAAkBrJ,EAAMsJ,EAAgB1nB,qBAE1CopB,aACuB,QAArBhlB,EACI8/B,EAAOI,WACPtoB,GAAWkoB,EAAOI,YAExBxiB,UAAU,KAGd,kBAAClD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IAGf,kBAACD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAACpmB,GAAA,EAAD,CAAYnC,UAAWiB,EAAQmT,OAA/B,gBAEF,kBAAC0H,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAACC,GAAA,EAAD,CACE7pB,GAAG,mBACHgB,MAAM,UACNyC,QAAQ,WACR8J,aAAW,MACX5J,QA/DY,SAAC4E,GACnB+gB,EAAgBQ,QAAQ3sC,SAAS,GAAG4sC,SA+D9B1oB,UAAS,UAAKiB,EAAQsmB,iBAAb,YAAiCtmB,EAAQ8R,SAElD,kBAAC,KAAD,CAAgB/S,UAAWiB,EAAQymB,eARrC,iBAUE,kBAACiB,GAAA,EAAD,CACE1lB,KAAK,OACL2lB,IAAKX,EACLY,UAAU,EACVhL,SApEgB,SAAC3W,GACzBA,EAAM8e,iBACN,IAAM8C,EAAO5hB,EAAM4W,OAAOiL,MAAM,GAC1BC,EAAS,CACbC,YAAY,EACZC,SAAS,EACTlC,SAAU8B,EACVlZ,KAAMkZ,EAAKlZ,MAEb+U,EAAkBqE,EAAQpE,EAAgB5qB,0BAC1CiuB,EAAgBQ,QAAQ3sC,SAAS,GAAG6B,MAAQ,MA2DpC6kB,MAAO,CAAEiK,QAAS,YAIvBma,GACC,kBAAC9K,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAAC,GAAD,CACE3B,eAAgBA,EAChBC,mBAAoBmB,OCtH1B3nB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCigB,OAAQ,GACRC,YAAa,CACX9S,WAAY,WAEd+S,cAAe,CACb9f,MAAO,IACPoT,WAAYzT,EAAMQ,QAAQ,GAC1B4f,cAAepgB,EAAMQ,QAAQ,IAE/BJ,aAAc,CACZC,MAAO,IACPC,MAAO,QACPC,OAAQP,EAAMQ,QAAQ,IAExB6f,OAAQ,CACNjT,WAAY,eAgGD+0B,GA5Fe,SAACjkD,GAC7B,IAAMwiB,EAAUZ,KAEdsC,EAUElkB,EAVFkkB,WACAggC,EASElkD,EATFkkD,4BACA7/B,EAQErkB,EARFqkB,SACAs+B,EAOE3iD,EAPF2iD,OACAz5B,EAMElpB,EANFkpB,oBACAY,EAKE9pB,EALF8pB,OACAq6B,EAIEnkD,EAJFmkD,aACAhc,EAGEnoC,EAHFmoC,eACAC,EAEEpoC,EAFFooC,mBACAviB,EACE7lB,EADF6lB,SAGIse,EAAgB,WACpB+f,GAA4B,IAGxBF,EAAqB,SAAC9lB,GAC1BA,EAAEqJ,iBAEF,IAAMze,EAAO,cACXy4B,SAAUz3B,EAAO5J,GACjBmjC,UAAU,GACPV,GAELwB,EAAar7B,EAAS2e,EAAmB5hB,IAkB3C,OACE,kBAAC,IAAM5C,SAAP,KACE,kBAAC,GAAD,CACER,KAAMyB,EACNhB,QAASihB,EACThhB,kBAAgB,qBAChBC,mBAAiB,2BACjB7B,UAAWiB,EAAQuf,QAElB1d,EAAW,kBAAChB,GAAA,EAAD,MAAqB,GACjC,kBAACC,GAAA,EAAD,CAAapD,GAAG,qBAAqBqB,UAAWiB,EAAQwf,aAAxD,qBAGA,0BAAMuE,SAAUyd,GACd,kBAACzgC,GAAA,EAAD,CAAehC,UAAWiB,EAAQyf,eAChC,kBAAC,GAAD,CACE0gB,OAAQA,EACRzc,kBAhCc,SAAChI,EAAG/U,GAK1BD,EAHAC,IAAmBgd,EAAgB1nB,oBACnC0K,IAAmBgd,EAAgB5qB,yBAEf2iB,EAEAA,EAAEmB,OAAOngC,MAFNiqB,IA4Bf66B,mBAAoBA,EACpB7b,eAAgBA,EAChBoB,uBAxBmB,SAACvhB,GAC9BogB,EAAmBpgB,OA0Bb,kBAACvE,GAAA,EAAD,CAAelC,UAAWiB,EAAQ2f,QAChC,kBAACve,GAAA,EAAD,CACErC,UAAWiB,EAAQN,aACnByB,QAAQ,WACRE,QAASsgB,GAHX,UAOA,kBAACvgB,GAAA,EAAD,CACEY,KAAK,SACLtD,MAAM,UACNK,UAAWiB,EAAQN,aACnByB,QAAQ,YACR8T,UAAW,kBAACqV,GAAA,EAAD,OALb,YC1EGhhB,oBA5Bf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAMjC,OAAO05B,UAAUY,0BACnC//B,SAAU0H,EAAMjC,OAAO05B,UAAUn/B,SACjCs+B,OAAQ52B,EAAMjC,OAAO05B,UAAUp3B,KAC/BtC,OAAQiC,EAAMjC,OAAO41B,UAAUtzB,KAC/B+b,eAAgBpc,EAAMjC,OAAO05B,UAAUp3B,KAAK4gB,gBAC5CnnB,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,OAInE,SAA4BoM,EAAUN,GACpC,MAAO,CACLk4B,4BAA6B,SAACzhC,GAC5B6J,EAAS7B,GAAkChI,KAE7CyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAAS/B,GAAyCrrB,EAAO0lB,KAE3Du/B,aAAc,SAACr7B,EAAS/D,EAAMc,GAC5ByG,EAAS9B,GAA2B1B,EAAS/D,EAAMc,KAErDuiB,mBAAoB,SAACpgB,GACnBsE,E/I4NsC,SAACtE,GAAD,MAAiB,CAC3DxD,KAAMC,EAAMjM,gCACZwP,c+I9Naq8B,CAA6Br8B,QAK7B8D,CAGbm4B,IC9BIriC,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCsgB,YAAa,CACXpU,QAAS,eACTM,UAAW,GAEb+T,0BAA2B,CACzB9O,QAASzR,EAAMQ,QAAQ,IAEzBggB,UAAW,CACT9T,YAAa,IAEf+T,WAAY,CACV7M,WAAY,KAEd8M,iBAAkB,CAChBlU,UAAW,OAoHAg2B,GAhHW,SAACtkD,GAAW,IAElC8pB,EAkBE9pB,EAlBF8pB,OACAy6B,EAiBEvkD,EAjBFukD,sBACAC,EAgBExkD,EAhBFwkD,yBACAb,EAeE3jD,EAfF2jD,QACAc,EAcEzkD,EAdFykD,gCACAN,EAaEnkD,EAbFmkD,aACAvB,EAYE5iD,EAZF4iD,uBACAgB,EAWE5jD,EAXF4jD,oBACAC,EAUE7jD,EAVF6jD,kBACAa,EASE1kD,EATF0kD,oCACAR,EAQElkD,EARFkkD,4BACAE,EAOEpkD,EAPFokD,0BACAO,EAME3kD,EANF2kD,+BACAb,EAKE9jD,EALF8jD,uBACApxB,EAIE1yB,EAJF0yB,OACA0V,EAGEpoC,EAHFooC,mBACAD,EAEEnoC,EAFFmoC,eACAtiB,EACE7lB,EADF6lB,SAEIrD,EAAUZ,KAEhB5kB,IAAMmB,WAAU,WACdqmD,EAAyB16B,EAAO5J,MAC/B,CAAC4J,EAAO5J,KAqCX,OACE,kBAAC,IAAM+C,SAAP,KACGmhC,EAA4B,kBAAC,GAAD,MAA4B,KAEzD,yBAAK7iC,UAAWiB,EAAQsgB,oBACtB,kBAACtV,GAAA,EAAD,CACEC,aAAW,mBACXvM,MAAM,UACN2C,QAAS,kBAAM0gC,GAAsB,IACrCrkC,GAAG,kBACHqB,UAAWiB,EAAQ8f,WAEnB,kBAACiC,GAAA,EAAD,CAAerjB,MAAM,aAEvB,kBAACwC,GAAA,EAAD,CAAYnC,UAAWiB,EAAQ4f,aAA/B,YAGF,yBAAK7gB,UAAWiB,EAAQirB,qBACtB,kBAAC/pB,GAAA,EAAD,CAAYnC,UAAWiB,EAAQ+f,YAC5BzY,EAAOlH,cAIZ,kBAACgB,GAAA,EAAD,CACE1C,MAAM,UACNyC,QAAQ,YACRpC,UAAWiB,EAAQggB,iBACnB3e,QAAS,kBAAMqgC,GAA4B,KAJ7C,qBASA,kBAAC,GAAD,CACEP,QAASA,EACTiB,8BA1DgC,SAACj6B,GACrC,IAAM7B,EAAU,CACdy4B,SAAUz3B,EAAO5J,GACjByK,YAEF85B,EAAgC37B,IAsD5B85B,uBAAwBA,EACxBgB,oBAAqBA,EACrBC,kBAAmBA,EACnBZ,kCAzEoC,SAAC/kB,EAAG/U,GAK1Cu7B,EAHAv7B,IAAmBgd,EAAgB1nB,oBACnC0K,IAAmBgd,EAAgB5qB,yBAEC2iB,EAEAA,EAAEmB,OAAOngC,MAFNiqB,IAqErC+5B,4BAvD8B,SAAChlB,GACnCA,EAAEqJ,iBACF,IAAMze,EAAO,gBACR+6B,GAELM,EAAar7B,EAAS2e,EAAmB5hB,IAmDrCg9B,4BAhD8B,SAACpgC,EAAMkI,GACzCg6B,EAA+BliC,EAAMkI,IAgDjCm5B,uBAAwBA,EACxBpxB,OAAQA,EACR6W,uBA/CyB,SAACvhB,GAC9BogB,EAAmBpgB,IA+CfmgB,eAAgBA,MCtCTrc,oBA7Ef,SAAyBC,EAAOC,GAC9B,MAAO,CACLuiB,UAAWxiB,EAAMjC,OAAO41B,UAAUsC,oBAClCl4B,OAAQiC,EAAMjC,OAAO41B,UAAUtzB,KAC/BvG,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,GAC/DyjC,QAAS53B,EAAMjC,OAAO+6B,oBAAoBruB,MAC1CmsB,OAAQ52B,EAAMjC,OAAO05B,UAAUp3B,KAC/Bw3B,oBAAqB73B,EAAMjC,OAAOg7B,WAAWlX,OAC7CiW,kBAAmB93B,EAAMjC,OAAOg7B,WAAW14B,KAC3Cg4B,0BAA2Br4B,EAAMjC,OAAO05B,UAAUY,0BAClDG,sBAAuBx4B,EAAMjC,OAAO41B,UAAUqF,sBAC9CC,uBACEj5B,EAAMjC,OAAOw5B,iBAAiBC,6BAChCO,uBACE/3B,EAAMjC,OAAOw5B,iBAAiBC,6BAChC7wB,OAAQ3G,EAAME,MAAMtuB,KAAKyuB,KACzB+b,eACEpc,EAAMjC,OAAOg7B,WAAW14B,MACxBL,EAAMjC,OAAOg7B,WAAW14B,KAAK4gB,oBAInC,SAA4B1gB,EAAUN,GACpC,MAAO,CACLu4B,sBAAuB,SAAC9hC,GACtB6J,EAAShC,GAA8B7H,KAEzCyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAAS1C,GAAgC1qB,EAAO0lB,KAElD66B,aAAc,SAAC31B,GAEbwC,EAASzC,GAAqBC,EADjB2d,KAGf+c,yBAA0B,SAACjD,GACzBj1B,EjJiF0C,SAACi1B,GAAD,MAAe,CAC7D/8B,KAAMC,EAAMjS,6BACZ+uC,YiJnFa0D,CAAiC1D,KAE5CkD,gCAAiC,SAAC37B,GAChCwD,EjJmF+C,SAACxD,GAAD,MAAc,CACjEtE,KAAMC,EAAMygC,qBACZp8B,WiJrFaq8B,CAAsCr8B,KAEjDq7B,aAAc,SAACr7B,EAAS/D,EAAMc,GAC5ByG,EAAS9B,GAA2B1B,EAAS/D,EAAMc,KAErD+8B,uBAAwB,SACtBR,EACAj6B,EACAC,GAEAkE,EjJsFA,CACJ9H,KAAMC,EAAMpR,0BACZ+xC,qBiJxF4ChD,EjJyF5Cz3B,SiJzFmExC,IAC/DmE,EjJ4LyD,SAC7DpE,EACAC,EACAC,GAH6D,MAIzD,CACJ5D,KAAMC,EAAMhM,mCACZyP,eACAC,WACAC,kBiJnMMi9B,CACEpX,GACA9lB,EACAC,KAINggB,mBAAoB,SAACpgB,GACnBsE,EjJ8L0C,SAACtE,GAAD,MAAiB,CAC/DxD,KAAMC,EAAM/L,qCACZsP,ciJhMas9B,CAAiCt9B,KAE5Cu9B,mCAAoC,SAACrmD,EAAO0lB,GAC1C0H,EAAS/B,GAAyCrrB,EAAO0lB,KAE3D8/B,oCAAqC,SAACxlD,EAAO0lB,GAC3C0H,EjJ2BmD,SACvDptB,EACA0lB,GAFuD,MAGnD,CACJJ,KAAMC,EAAMtR,gCACZjU,QACA0lB,kBiJhCM4gC,CAA0CtmD,EAAO0lB,KAGrDs/B,4BAA6B,SAACzhC,GAC5B6J,EAAS7B,GAAkChI,KAE7CkiC,+BAAgC,SAACliC,EAAMkI,GACrC2B,EAAS5B,GAAqCjI,EAAMkI,QAK3CmB,CAA6Cw4B,IC3FtD1iC,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvC+oB,WAAY,CACV3pB,MAAOY,EAAMsN,QAAQoG,OAAO5B,OAE9BiJ,KAAM,GACNmW,YAAa,CACX9xB,MAAOY,EAAMsN,QAAQoG,OAAOlG,UA8CjBm2B,GA1CmB,SAACzlD,GACjC,IAAMwiB,EAAUZ,KAEd8jC,EAIE1lD,EAJF0lD,cACAC,EAGE3lD,EAHF2lD,wBACAC,EAEE5lD,EAFF4lD,mCACAlzB,EACE1yB,EADF0yB,OAEIowB,EAAOroB,GAAWirB,EAAcG,SACtC,OACE,kBAAC,IAAM5iC,SAAP,KACE,kBAACymB,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC7B+b,EAAc9iC,aAEjB,kBAAC8mB,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC7BxS,KAAO2rB,GAAMtrB,OAAO,gBAEvB,kBAACkS,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,MAAME,MAAM,UAC1C,kBAACrc,GAAA,EAAD,CACEC,aAAW,OACXlM,UAAWiB,EAAQyoB,SACnBC,KAAK,QACLrnB,QAAS,kBAAM8hC,GAAwB,EAAMD,EAAcxlC,MAE3D,kBAACwX,GAAA,EAAD,OAGF,kBAAClK,GAAA,EAAD,CACEC,aAAW,SACXlM,UAAWiB,EAAQqoB,WACnBK,KAAK,QACLrnB,QAAS,kBACP+hC,GAAmC,EAAMF,EAAcxlC,GAAIwS,KAG7D,kBAACyY,GAAA,EAAD,UClCJvpB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvC8mB,aAAc,CACZpa,WAAY,GACZtN,MAAOY,EAAMsN,QAAQyZ,SAASvZ,MAEhCwZ,iBAAkB,CAChBzmB,OAAQP,EAAMQ,QAAQ,GACtBkM,WAAY,GAEdua,IAAK,CACH1mB,OAAQP,EAAMQ,QAAQ,IAExBgS,OAAQ,CACNjS,OAAQP,EAAMQ,QAAQ,GACtBH,MAAO,IACPqN,OAAQ,kBACRwZ,YAAa,IACbrK,KAAM,GAERsK,aAAc,CACZ7a,YAAatM,EAAMQ,QAAQ,QAuIhBwjC,GAnIiB,SAAC9lD,GAC/B,IAAMwiB,EAAUZ,KAEd8jC,EAOE1lD,EAPF0lD,cACAK,EAME/lD,EANF+lD,yCACAJ,EAKE3lD,EALF2lD,wBACAK,EAIEhmD,EAJFgmD,6BACAzc,EAGEvpC,EAHFupC,uBACApB,EAEEnoC,EAFFmoC,eAIIqB,GAFFxpC,EADF6lB,SAGsB7oB,IAAMysC,aAsB9B,OACE,kBAAC,IAAMxmB,SAAP,KACE,kBAACymB,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC9B,kBAAClD,GAAA,EAAD,CACEvmB,GAAG,kBACHyV,MAAM,cACNyJ,SAAU,SAAClB,GAAD,OACR6nB,EACE7nB,EACAiI,EAAgBznB,iBAGpBxf,MAAOwmD,EAAc9iC,YACrBwd,WAAW,EACX4G,WAAS,EACTC,KAAM,EACNtjB,QAAQ,cAGZ,kBAAC+lB,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,OAC9B,kBAAC,GAAD,CACEzpB,GAAG,aACH2e,OAAO,aACPjiC,MAAM,WACN2kB,UAAWiB,EAAQojB,OACnBgC,iBAAkB,SAAC/K,GAAD,OAChBkpB,EACElpB,EACAsJ,EAAgBxnB,WAGpBkpB,aAAcpN,GAAWirB,EAAcG,SACvCtlB,UAAU,KAId,kBAACmJ,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,MAAME,MAAM,UAC1C,kBAAC,IAAM5mB,SAAP,KAEE,kBAACoa,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAACpmB,GAAA,EAAD,CAAYnC,UAAWiB,EAAQmT,OAA/B,gBAEF,kBAAC0H,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAACC,GAAA,EAAD,CACE7pB,GAAG,mBACHgB,MAAM,UACNyC,QAAQ,WACR8J,aAAW,MACX5J,QApEQ,SAAC4E,GACnB+gB,EAAgBQ,QAAQ3sC,SAAS,GAAG4sC,SAoE1B1oB,UAAS,UAAKiB,EAAQsmB,iBAAb,YAAiCtmB,EAAQ8R,SAElD,kBAAC,KAAD,CAAgB/S,UAAWiB,EAAQymB,eARrC,iBAUE,kBAACiB,GAAA,EAAD,CACE1lB,KAAK,OACL2lB,IAAKX,EACLY,UAAU,EACVhL,SAzEY,SAAC3W,GACzBA,EAAM8e,iBACN,IAAM8C,EAAO5hB,EAAM4W,OAAOiL,MAAM,GAC1BC,EAAS,CACbC,YAAY,EACZC,SAAS,EACTlC,SAAU8B,EACVlZ,KAAMkZ,EAAKlZ,MAEb40B,EACExb,EACApE,EAAgB3qB,mCAElBguB,EAAgBQ,QAAQ3sC,SAAS,GAAG6B,MAAQ,MA6DhC6kB,MAAO,CAAEiK,QAAS,YAIvBma,GACC,kBAAC9K,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAAC,GAAD,CACE3B,eAAgBA,EAChBC,mBAAoBmB,OAO9B,kBAACG,GAAA,EAAD,CAAWhqC,UAAU,KAAKiqC,MAAM,MAAME,MAAM,UAC1C,kBAAC,IAAM5mB,SAAP,KACE,kBAACW,GAAA,EAAD,CACEC,QAASmiC,EACT9kC,MAAM,UACNyC,QAAQ,WACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,cALL,QASA,kBAAC0D,GAAA,EAAD,CACEC,QAAS,kBAAM8hC,GAAwB,EAAOD,EAAcxlC,KAC5DqB,UAAWiB,EAAQomB,aACnB1oB,GAAG,gBAHL,cC5HK+lC,GAjCyB,SAACjmD,GAAW,IAC1C0lD,EAA4D1lD,EAA5D0lD,cAAejjC,EAA6CziB,EAA7CyiB,KAAMkuB,EAAuC3wC,EAAvC2wC,WAAY5uB,EAA2B/hB,EAA3B+hB,aAAcsC,EAAarkB,EAAbqkB,SAEjDwsB,EAAmB,uCAAG,WAAOpoB,GAAP,mBAAArqB,EAAA,sDAC1BqqB,EAAM8e,iBACE6b,EAA+CpjD,EAA/CojD,4BAA6BsC,EAAkB1lD,EAAlB0lD,eAC/B58B,EAHoB,gBAIrB48B,IAEGrC,UAAW,EACnBD,EAA4Bt6B,EAASA,EAAQy4B,UAPnB,2CAAH,sDAUzB,GAAKmE,EAIL,OACE,kBAAC,GAAD,CACEjjC,KAAMA,EACN7lB,MAAU,SAAL,WAAiB8oD,EAAc9iC,aACpCA,YAAW,sFAAiF8iC,EAAc9iC,YAA/F,KACXC,iBAAkB,SAClBC,iBAAiB,SACjBH,YAAa,kBAAMguB,GAAW,EAAO+U,EAAcxlC,KACnDwC,aAAcmuB,EACd9tB,gBAAiBsB,EACjBtC,aAAcA,EACdiB,UAAU,KCED8I,oBAxBf,SAAyBC,EAAOC,GAC9B,MAAO,CACL05B,cAAe35B,EAAMjC,OAAOo8B,wBAAwB95B,KACpD3J,KACEsJ,EAAMjC,OAAOo8B,wBAAwBC,oCACvC9hC,SAAU0H,EAAMjC,OAAOs8B,iBAAiB/hC,SACxCtC,aAAcgK,EAAMjC,OAAOs8B,iBAAiBrkC,iBAIhD,SAA4BuK,EAAUN,GACpC,MAAO,CACL2kB,WAAY,SAACluB,EAAMwI,GACjBqB,EACEtB,GAA4CvI,EAAMwI,KAGtDm4B,4BAA6B,SAACt6B,GAE5BwD,EAASxB,GAAkChC,EAD9B2e,QAMJ3b,CAGbu6B,ICpBIzkC,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvC2hC,oBAAqB,CACnBlwB,QAASzR,EAAMQ,QAAQ,GACvBgM,UAAWxM,EAAMQ,QAAQ,GACzB8T,aAActU,EAAMQ,QAAQ,IAE9B+oB,MAAO,CACLrL,SAAU,KAEZsL,SAAU,CACR5V,WAAY,SAqFD4wB,GAjFkB,SAACtmD,GAChC,IAAMwiB,EAAUZ,KAEd2kC,EAYEvmD,EAZFumD,eACAZ,EAWE3lD,EAXF2lD,wBACAa,EAUExmD,EAVFwmD,0BACAC,EASEzmD,EATFymD,yBACAV,EAQE/lD,EARF+lD,yCACAC,EAOEhmD,EAPFgmD,6BACAJ,EAME5lD,EANF4lD,mCACAc,EAKE1mD,EALF0mD,8BACAh0B,EAIE1yB,EAJF0yB,OACA6W,EAGEvpC,EAHFupC,uBACApB,EAEEnoC,EAFFmoC,eACAtiB,EACE7lB,EADF6lB,SAGF,OACE,kBAAC,IAAM5C,SAAP,KACGyjC,EACC,kBAAC,GAAD,MACE,KAEHH,GACC,kBAAC5a,GAAA,EAAD,CACEjsC,UAAW25B,KACX9X,UAAWiB,EAAQihC,qBAEnB,kBAAC7X,GAAA,EAAD,CAAOrqB,UAAWiB,EAAQ6oB,MAAO5d,aAAW,gBAC1C,kBAACoe,GAAA,EAAD,KACE,kBAACC,GAAA,EAAD,KACE,kBAACpC,GAAA,EAAD,CAAWnoB,UAAWiB,EAAQ8oB,UAA9B,eACA,kBAAC5B,GAAA,EAAD,CAAWnoB,UAAWiB,EAAQ8oB,UAA9B,eACA,kBAAC5B,GAAA,EAAD,CACEnoB,UAAWiB,EAAQ8oB,SACnBzB,MAAM,aAIZ,kBAACkC,GAAA,EAAD,KACGwa,EAAetvB,KAAI,SAACyuB,GACnB,IAAM1Z,EACJwa,GACAd,EAAcxlC,KAAOumC,EAAyBvmC,GAChD,OACE,kBAAC4rB,GAAA,EAAD,CAAUpe,IAAKg4B,EAAcxlC,IAC1B8rB,EACC,kBAAC,GAAD,CACE0Z,cAAee,EACfV,yCACEA,EAEFJ,wBAAyBA,EACzBK,6BACEA,EAEF7d,eAAgBA,EAChBoB,uBAAwBA,EACxB1jB,SAAUA,IAGZ,kBAAC,GAAD,CACE6/B,cAAeA,EACfC,wBAAyBA,EACzBC,mCACEA,EAEFlzB,OAAQA,aCvF1B9Q,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCm/B,oBAAqB,CACnB1tB,QAASzR,EAAMQ,QAAQ,GACvBgM,UAAWxM,EAAMQ,QAAQ,IAE3B6pB,OAAQ,CACNjK,cAAepgB,EAAMQ,QAAQ,IAE/BkkB,cAAe,CACbtE,cAAepgB,EAAMQ,QAAQ,IAE/BwmB,iBAAkB,CAChBzmB,OAAQP,EAAMQ,QAAQ,GACtBkM,WAAY,GAEdua,IAAK,CACH1mB,OAAQP,EAAMQ,QAAQ,IAExBgS,OAAQ,CACNjS,OAAQP,EAAMQ,QAAQ,GACtBH,MAAO,IACPqN,OAAQ,kBACRwZ,YAAa,IACbrK,KAAM,GAERsK,aAAc,CACZ7a,YAAatM,EAAMQ,QAAQ,QA2GhBqkC,GAvGgB,SAAC3mD,GAC9B,IAAMwiB,EAAUZ,KAEd8jC,EAME1lD,EANF0lD,cACAxf,EAKElmC,EALFkmC,kBAJsC,GASpClmC,EAJF4mD,0BAIE5mD,EAHF6iB,yBANsC,MAMnB,MANmB,EAOtC0mB,EAEEvpC,EAFFupC,uBACApB,EACEnoC,EADFmoC,eAGIqB,EAAkBxsC,IAAMysC,YAsB9B,OACE,kBAACpM,GAAA,EAAD,CAAMhI,WAAS,EAAC/S,QAAS,EAAGf,UAAWiB,EAAQgkB,eAC7C,kBAACnJ,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IACb,kBAACmJ,GAAA,EAAD,CACEvmB,GAAG,kBACHyV,MAAM,cACNyJ,SAAU,SAAClB,GAAD,OAAOgI,EAAkBhI,EAAGiI,EAAgBznB,iBACtDxf,MAAOwmD,EAAc9iC,YACrBwd,WAAW,EACX4G,WAAS,EACTC,KAAM,EACNtjB,QAAQ,cAIZ,kBAAC0Z,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAAC,GAAD,CACEpd,GAAG,aACH2e,OAAO,aACPjiC,MAAM,WACN2kB,UAAWiB,EAAQojB,OACnBgC,iBAAkB,SAAC/K,GAAD,OAChBqJ,EAAkBrJ,EAAMsJ,EAAgBxnB,WAE1CkpB,aACuB,QAArBhlB,EACI6iC,EAAcG,QACdprB,GAAWirB,EAAcG,SAE/BtlB,UAAU,KAGd,kBAAClD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,IAGf,kBAACD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAACpmB,GAAA,EAAD,CAAYnC,UAAWiB,EAAQmT,OAA/B,gBAEF,kBAAC0H,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAACC,GAAA,EAAD,CACE7pB,GAAG,mBACHgB,MAAM,UACNyC,QAAQ,WACR8J,aAAW,MACX5J,QAhEY,SAAC4E,GACnB+gB,EAAgBQ,QAAQ3sC,SAAS,GAAG4sC,SAgE9B1oB,UAAS,UAAKiB,EAAQsmB,iBAAb,YAAiCtmB,EAAQ8R,SAElD,kBAAC,KAAD,CAAgB/S,UAAWiB,EAAQymB,eARrC,iBAUE,kBAACiB,GAAA,EAAD,CACE1lB,KAAK,OACL2lB,IAAKX,EACLY,UAAU,EACVhL,SArEgB,SAAC3W,GACzBA,EAAM8e,iBACN,IAAM8C,EAAO5hB,EAAM4W,OAAOiL,MAAM,GAC1BC,EAAS,CACbC,YAAY,EACZC,SAAS,EACTlC,SAAU8B,EACVlZ,KAAMkZ,EAAKlZ,MAEb+U,EACEqE,EACApE,EAAgB3qB,mCAElBguB,EAAgBQ,QAAQ3sC,SAAS,GAAG6B,MAAQ,MAyDpC6kB,MAAO,CAAEiK,QAAS,YAIvBma,GACC,kBAAC9K,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQsnB,UACpC,kBAAC,GAAD,CACE3B,eAAgBA,EAChBC,mBAAoBmB,OCvH1B3nB,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCigB,OAAQ,GACRC,YAAa,CACX9S,WAAY,WAEd+S,cAAe,CACb9f,MAAO,IACPoT,WAAYzT,EAAMQ,QAAQ,GAC1B4f,cAAepgB,EAAMQ,QAAQ,IAE/BJ,aAAc,CACZC,MAAO,IACPC,MAAO,QACPC,OAAQP,EAAMQ,QAAQ,IAExB6f,OAAQ,CACNjT,WAAY,eAgGD23B,GA5FsB,SAAC7mD,GACpC,IAAMwiB,EAAUZ,KAEdsC,EAUElkB,EAVFkkB,WACA4iC,EASE9mD,EATF8mD,gCACAziC,EAQErkB,EARFqkB,SACAqhC,EAOE1lD,EAPF0lD,cACAx8B,EAMElpB,EANFkpB,oBACAY,EAKE9pB,EALF8pB,OACAi9B,EAIE/mD,EAJF+mD,oBACA5e,EAGEnoC,EAHFmoC,eACAC,EAEEpoC,EAFFooC,mBACAviB,EACE7lB,EADF6lB,SAGIse,EAAgB,WACpB2iB,GAAgC,IAG5BF,EAA4B,SAAC1oB,GACjCA,EAAEqJ,iBAEF,IAAMze,EAAO,cACXy4B,SAAUz3B,EAAO5J,GACjBmjC,UAAU,GACPqC,GAELqB,EAAoBj+B,EAAS2e,EAAmB5hB,IAkBlD,OACE,kBAAC,IAAM5C,SAAP,KACE,kBAAC,GAAD,CACER,KAAMyB,EACNhB,QAASihB,EACThhB,kBAAgB,qBAChBC,mBAAiB,2BACjB7B,UAAWiB,EAAQuf,QAElB1d,EAAW,kBAAChB,GAAA,EAAD,MAAqB,GACjC,kBAACC,GAAA,EAAD,CAAapD,GAAG,qBAAqBqB,UAAWiB,EAAQwf,aAAxD,6BAGA,0BAAMuE,SAAUqgB,GACd,kBAACrjC,GAAA,EAAD,CAAehC,UAAWiB,EAAQyf,eAChC,kBAAC,GAAD,CACEyjB,cAAeA,EACfxf,kBAhCc,SAAChI,EAAG/U,GAK1BD,EAHAC,IAAmBgd,EAAgBxnB,UACnCwK,IAAmBgd,EAAgB3qB,kCAEf0iB,EAEAA,EAAEmB,OAAOngC,MAFNiqB,IA4Bfy9B,0BAA2BA,EAC3Bze,eAAgBA,EAChBoB,uBAxBmB,SAACvhB,GAC9BogB,EAAmBpgB,OA0Bb,kBAACvE,GAAA,EAAD,CAAelC,UAAWiB,EAAQ2f,QAChC,kBAACve,GAAA,EAAD,CACErC,UAAWiB,EAAQN,aACnByB,QAAQ,WACRE,QAASsgB,GAHX,UAOA,kBAACvgB,GAAA,EAAD,CACEY,KAAK,SACLtD,MAAM,UACNK,UAAWiB,EAAQN,aACnByB,QAAQ,YACR8T,UAAW,kBAACqV,GAAA,EAAD,OALb,YCxEGhhB,oBA9Bf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAMjC,OAAOs8B,iBAAiBY,8BAC1C3iC,SAAU0H,EAAMjC,OAAOs8B,iBAAiB/hC,SACxCqhC,cAAe35B,EAAMjC,OAAOs8B,iBAAiBh6B,KAC7CtC,OAAQiC,EAAMjC,OAAO41B,UAAUtzB,KAC/B+b,eAAgBpc,EAAMjC,OAAOs8B,iBAAiBh6B,KAAK4gB,gBACnDnnB,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,OAInE,SAA4BoM,EAAUN,GACpC,MAAO,CACL86B,gCAAiC,SAACrkC,GAChC6J,EAASvB,GAAyCtI,KAEpDyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EACEzB,GAAgD3rB,EAAO0lB,KAG3DmiC,oBAAqB,SAACj+B,EAAS/D,EAAMc,GACnCyG,EAASxB,GAAkChC,EAAS/D,EAAMc,KAE5DuiB,mBAAoB,SAACpgB,GACnBsE,EzJgP8C,SAACtE,GAAD,MAAiB,CACnExD,KAAMC,EAAMxL,yCACZ+O,cyJlPai/B,CAAqCj/B,QAKrC8D,CAGb+6B,IChCIjlC,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCsgB,YAAa,CACXpU,QAAS,eACTM,UAAW,GAEb+T,0BAA2B,CACzB9O,QAASzR,EAAMQ,QAAQ,IAEzBggB,UAAW,CACT9T,YAAa,IAEf+T,WAAY,CACV7M,WAAY,KAEd8M,iBAAkB,CAChBlU,UAAW,OAmHA44B,GA/GkB,SAAClnD,GAAW,IAAD,EAExC8pB,EAiBE9pB,EAjBF8pB,OACAq9B,EAgBEnnD,EAhBFmnD,6BACAC,EAeEpnD,EAfFonD,gCACAb,EAcEvmD,EAdFumD,eACAQ,EAaE/mD,EAbF+mD,oBACApB,EAYE3lD,EAZF2lD,wBACAa,EAWExmD,EAXFwmD,0BACAC,EAUEzmD,EAVFymD,yBACAY,EASErnD,EATFqnD,2CACAC,EAQEtnD,EARFsnD,sCACAC,EAOEvnD,EAPFunD,iCACAC,EAMExnD,EANFwnD,mCACAd,EAKE1mD,EALF0mD,8BACAh0B,EAIE1yB,EAJF0yB,OACA0V,EAGEpoC,EAHFooC,mBACAD,EAEEnoC,EAFFmoC,eACAtiB,EACE7lB,EADF6lB,SAEIrD,EAAUZ,KAEhB5kB,IAAMmB,WAAU,WACdipD,EAAgCt9B,EAAO5J,MACtC,CAAC4J,EAAO5J,KAEX,IAsBM0lC,EAAqC,SAACnjC,EAAMwI,GAChDq8B,EAAsC7kC,EAAMwI,IAO9C,OACE,kBAAC,IAAMhI,SAAP,KACGskC,EACC,kBAAC,GAAD,MACE,KAEJ,yBAAKhmC,UAAWiB,EAAQsgB,oBACtB,kBAACtV,GAAA,EAAD,CACEC,aAAW,mBACXvM,MAAM,UACN2C,QAAS,kBAAMsjC,GAA6B,IAC5CjnC,GAAG,kBACHqB,UAAWiB,EAAQ8f,WAEnB,kBAACiC,GAAA,EAAD,CAAerjB,MAAM,aAEvB,kBAACwC,GAAA,EAAD,CAAYnC,UAAWiB,EAAQ4f,aAA/B,YAGF,yBAAK7gB,UAAWiB,EAAQirB,qBACtB,kBAAC/pB,GAAA,EAAD,CAAYnC,UAAWiB,EAAQ+f,YAC5BzY,EAAOlH,cAIZ,kBAACgB,GAAA,EAAD,CACE1C,MAAM,UACNyC,QAAQ,YACRpC,UAAWiB,EAAQggB,iBACnB3e,QAAS,kBAAM2jC,GAAmC,KAJpD,6BASA,kBAAC,IAAD,GACEjB,eAAgBA,EAChBX,mCAAoCA,EACpCD,wBAAyBA,EACzBa,0BAA2BA,EAC3BC,yBAA0BA,EAC1BV,yCAtE2C,SAAC7nB,EAAG/U,GAKjDk+B,EAHAl+B,IAAmBgd,EAAgBxnB,UACnCwK,IAAmBgd,EAAgB3qB,kCAEQ0iB,EAGzCA,EAAEmB,OAAOngC,MAHmCiqB,IAoE5C68B,6BA3D+B,SAAC9nB,GACpCA,EAAEqJ,iBACF,IAAMze,EAAO,gBACR29B,GAELM,EAAoBj+B,EAAS2e,EAAmB5hB,KA6C9C,oDAUsC+/B,GAVtC,+CAWiCc,GAXjC,wBAYUh0B,GAZV,yCAtC2B,SAAC1K,GAC9BogB,EAAmBpgB,MAqCjB,gCAckBmgB,GAdlB,0BAeYtiB,GAfZ,MCxBSiG,oBA9Ef,SAAyBC,EAAOC,GAC9B,MAAO,CACLuiB,UAAWxiB,EAAMjC,OAAO41B,UAAUsC,oBAClCl4B,OAAQiC,EAAMjC,OAAO41B,UAAUtzB,KAC/BvG,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,GAC/DqmC,eAAgBx6B,EAAMjC,OAAO29B,2BAA2BjxB,MACxDkvB,cAAe35B,EAAMjC,OAAOs8B,iBAAiBh6B,KAC7Co6B,0BAA2Bz6B,EAAMjC,OAAO49B,kBAAkB9Z,OAC1D6Y,yBAA0B16B,EAAMjC,OAAO49B,kBAAkBt7B,KACzDm7B,iCACEx7B,EAAMjC,OAAOs8B,iBAAiBY,8BAChCG,6BACEp7B,EAAMjC,OAAO41B,UAAUiI,6BACzBC,8BACE77B,EAAMjC,OAAOo8B,wBAAwBC,oCACvCO,8BACE36B,EAAMjC,OAAOo8B,wBAAwBC,oCACvCzzB,OAAQ3G,EAAME,MAAMtuB,KAAKyuB,KACzB+b,eACEpc,EAAMjC,OAAO49B,kBAAkBt7B,MAC/BL,EAAMjC,OAAO49B,kBAAkBt7B,KAAK4gB,oBAI1C,SAA4B1gB,EAAUN,GACpC,MAAO,CACLm7B,6BAA8B,SAAC1kC,GAC7B6J,EAAS1B,GAAqCnI,KAEhD2kC,gCAAiC,SAAC7F,GAChCj1B,E3JsJiD,SAACi1B,GAAD,MAAe,CACpE/8B,KAAMC,EAAM5Q,qCACZ0tC,Y2JxJasG,CAAwCtG,KAEnDwF,oBAAqB,SAACj+B,EAAS/D,EAAMc,GACnCyG,EAASxB,GAAkChC,EAAS/D,EAAMc,KAE5D8/B,wBAAyB,SACvBmC,EACA3/B,EACAC,GAEAkE,E3JyJA,CACJ9H,KAAMC,EAAM/P,kCACZqzC,2B2JzJQD,E3J0JR78B,gB2JzJQ9C,IAGJmE,E3JwNiE,SACrEpE,EACAC,EACAC,GAHqE,MAIjE,CACJ5D,KAAMC,EAAMvL,4CACZgP,eACAC,WACAC,kB2J/NM4/B,CACE/Z,GACA9lB,EACAC,KAINggB,mBAAoB,SAACpgB,GACnBsE,E3J0NkD,SAACtE,GAAD,MAAiB,CACvExD,KAAMC,EAAMtL,0CACZ6O,c2J5NaigC,CAAyCjgC,KAEpDkgC,0CAA2C,SAAChpD,EAAO0lB,GACjD0H,EACEzB,GAAgD3rB,EAAO0lB,KAG3DyiC,2CAA4C,SAACnoD,EAAO0lB,GAClD0H,E3J4F0D,SAC9DptB,EACA0lB,GAF8D,MAG1D,CACJJ,KAAMC,EAAMjQ,wCACZtV,QACA0lB,kB2JjGMujC,CAAiDjpD,EAAO0lB,KAG5D4iC,mCAAoC,SAAC/kC,GACnC6J,EAASvB,GAAyCtI,KAEpD6kC,sCAAuC,SAAC7kC,EAAMwI,GAC5CqB,EACEtB,GAA4CvI,EAAMwI,QAM3Ca,CAGbo7B,IC1FIpnB,GAASje,cAAW,SAACC,GACzB,MAAO,CACLie,YAAa,CAEXvB,aAAc,IAEdpI,aAAc,IAEhBwK,OAAQ,CACNvI,OAAQ,aAAevW,EAAMsN,QAAQg5B,WAAW90B,QAChDkL,aAAc,IACd7B,YAAa,GACbpH,WAAY,EACZ/F,OAAQ,GACRlB,UAAW,eACXK,SAAU,QA2DD05B,GAtDE,SAACroD,GAChB,IAAMwiB,EAAUsd,KAEdI,EAWElgC,EAXFkgC,aACAvK,EAUE31B,EAVF21B,MACAa,EASEx2B,EATFw2B,MALwB,EActBx2B,EARFd,aANwB,MAMhB,EANgB,IActBc,EAPFmgC,qBAPwB,MAOR,QAPQ,EAQxBtB,EAME7+B,EANF6+B,OACAe,EAKE5/B,EALF4/B,SACAQ,EAIEpgC,EAJFogC,UACAC,EAGErgC,EAHFqgC,WACAC,EAEEtgC,EAFFsgC,aAEEtgC,EADFsoD,gBAEF,OACE,kBAAC,IAAMrlC,SAAP,KACE,kBAACud,GAAA,EAAD,CACEjf,UAAWiB,EAAQud,YACnBhc,MAAO,CAAE5B,MAAOge,IAEhB,kBAACM,GAAA,EAAD,CAAY8nB,QAAQ,cAAc5yB,GAClC,kBAACgL,GAAA,EAAD,CACEzgB,GAAI2e,EACJ3/B,MAAOA,EACPkgC,SAAUc,EACVf,WAAY,CACVhO,KAAM,MACNjR,GAAI,CAAE2e,WAER2pB,kBAAgB,EAChBjnC,UAAWiB,EAAQoe,OACnBhB,SAAUA,EACVQ,UAAWA,GAEV5J,EAAMS,KAAI,SAAC7K,GACV,OACE,kBAACoF,GAAA,EAAD,CACE9D,IAAKtB,EAAKlM,GACVhhB,MAAOktB,EAAKiU,GACZngB,GAAE,gBAAWkM,EAAKltB,QAEjB2hC,MAAMC,QAAQR,GAAd,UACMlU,EAAKkU,EAAa,IADxB,YAC+BlU,EAAKkU,EAAa,KAC9ClU,EAAKkU,WCxDnB1e,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCwd,UAAW,CACThR,UAAWxM,EAAMQ,QAAQ,GACzB8T,aAActU,EAAMQ,QAAQ,IAE9BmmC,cAAe,CACbn6B,UAAWxM,EAAMQ,QAAQ,GACzB8T,aAActU,EAAMQ,QAAQ,IAE9BomC,WAAY,CACVl6B,WAAY1M,EAAMQ,QAAQ,GAC1B8L,YAAatM,EAAMQ,SAAS,QAyFjBqmC,GArFM,SAAC3oD,GACpB,IAAMwiB,EAAUZ,KAEd4E,EAWExmB,EAXFwmB,WACAsY,EAUE9+B,EAVF8+B,uBACAsX,EASEp2C,EATFo2C,yBACA7H,EAQEvuC,EARFuuC,UACArqB,EAOElkB,EAPFkkB,WACA0kC,EAME5oD,EANF4oD,oBACArE,EAKEvkD,EALFukD,sBACAsE,EAIE7oD,EAJF6oD,oBACA1M,EAGEn8C,EAHFm8C,mBACA2M,EAEE9oD,EAFF8oD,cACAC,EACE/oD,EADF+oD,mBAWIC,GACU,IAAdza,IACwB,IAAxBqa,IAC0B,IAA1BrE,EAEF,OACE,kBAAC,GAAD,KACE,kBAAC,GAAD,MACCrgC,EAAa,kBAAC,GAAD,MAAuB,KAEpC8kC,GACEza,EAAY,kBAAC,GAAD,MAAsB,QAClCgW,EAAwB,kBAAC,GAAD,MAAwB,QAChDqE,EAAsB,kBAAC,GAAD,MAA+B,MAEtD,yBAAKrnC,UAAWiB,EAAQymC,yBACtB,yBAAK1nC,UAAWiB,EAAQ8c,WACtB,kBAACjC,GAAA,EAAD,CAAMhI,WAAS,GACb,kBAACgI,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,EAAG/b,UAAWiB,EAAQ0mC,oBACnC,kBAAC,GAAD,CACE1pB,iBAAkB4W,EAClB5vB,WAAYA,EACZsY,uBAAwBA,EACxBW,WAAW,gBACXC,kBAAkB,oBAItB,kBAACrC,GAAA,EAAD,CACEjR,MAAI,EACJkR,GAAI,EACJ/b,UAAS,UAAKiB,EAAQimC,cAAb,YAA8BjmC,EAAQkmC,aAE/C,kBAAC,GAAD,CACExpD,MAAOi9C,EACPjc,aAvCyB,SAACzX,GACxCzoB,EAAMmpD,6BAA6B1gC,EAAM4W,OAAOngC,QAuClCs3B,MAAOuyB,EACPlqB,OAAO,uBACPwB,WAAW,KACXC,aAAa,WAGjB,kBAACjD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,EAAG/b,UAAWiB,EAAQimC,eACnC,kBAAC,GAAD,CACEvpD,MAAO2pD,EACP3oB,aArDqB,SAACzX,GACpCzoB,EAAMopD,8BAA8B3gC,EAAM4W,OAAOngC,QAqDnCs3B,MAAOsyB,EACPjqB,OAAO,yBACPwB,WAAW,KACXC,aAAa,aAKrB,kBAAC,GAAD,SCrEKxU,oBA/Bf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAMjC,OAAO41B,UAAU+C,qBACnClU,UAAWxiB,EAAMjC,OAAO41B,UAAUsC,oBAClCx7B,WAAYuF,EAAM8P,QAAQU,gBAAgB/V,WAC1C+9B,sBAAuBx4B,EAAMjC,OAAO41B,UAAUqF,sBAC9C6D,oBAAqB78B,EAAMjC,OAAO41B,UAAUiI,6BAC5CkB,oBAAqB98B,EAAM8P,QAAQwtB,mBAAmBzwB,OACtDujB,mBAAoBpwB,EAAM8P,QAAQwgB,wBAAwBzjB,OAC1DkwB,cAAe/8B,EAAM8P,QAAQwtB,mBAAmB7yB,MAChDuyB,mBAAoBh9B,EAAM8P,QAAQwgB,wBAAwB7lB,UAI9D,SAA4BlK,EAAUN,GACpC,MAAO,CACL8S,uBAAwB,SAACtY,GACvB8F,E9JfuC,SAAC9F,GAAD,MAAiB,CAC5DhC,KAAMC,EAAM1U,+BACZyW,c8Jaa8iC,CAA8B9iC,KAEzC4vB,yBAA0B,SAAC3zB,GACzB6J,EAAS3C,GAA+BlH,KAE1C2mC,8BAA+B,SAACG,GAC9Bj9B,E9JiMqD,CACzD9H,KAAMC,EAAMtP,qCACZ47B,S8JnM0CwY,KAExCJ,6BAA8B,SAACK,GAC7Bl9B,E9JmM+C,SAACk9B,GAAD,MAAa,CAChEhlC,KAAMC,EAAMrP,0CACZo0C,U8JrMaC,CAAsCD,QAKtC19B,CAA6C68B,ICnBtD/mC,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCwd,UAAW,CACThR,UAAWxM,EAAMQ,QAAQ,GACzB8T,aAActU,EAAMQ,QAAQ,IAE9B1lB,MAAO,CACLw5B,aAActU,EAAMQ,QAAQ,QA+HjBonC,GA3Hc,SAAC1pD,GAC5B,IAAMwiB,EAAUZ,KAEdub,EAWEn9B,EAXFm9B,UACAiG,EAUEpjC,EAVFojC,uBACAE,EASEtjC,EATFsjC,iBACAC,EAQEvjC,EARFujC,iBACAC,EAOExjC,EAPFwjC,kBACAC,EAMEzjC,EANFyjC,cAGAG,GAGE5jC,EALF2jC,QAKE3jC,EAJF0jC,uBAIE1jC,EAHF4jC,6BACA/R,EAEE7xB,EAFF6xB,UACAhM,EACE7lB,EADF6lB,SAGF7oB,IAAMmB,WACJ,WACEylC,EAA4B/d,KAG9B,IArBoC,MAwBdroB,oBAAS,GAxBK,mBAwB/BilB,EAxB+B,KAwBzBknC,EAxByB,KA8BhC1oB,EAAsB,SAACtkC,GAC3BH,OAAOimB,KAAK9lB,EAASitD,YAAa,SAAU,wBAgBxCxlB,EAAcd,IAAqBC,EAEzC,OACE,kBAAC,GAAD,KACG9gB,GACC,kBAAC,GAAD,CACEA,KAAMA,EACN0a,UAAWiG,EACXV,mBAZmB,WACzBinB,GAAQ,IAYF1oB,oBAAqBA,IAIzB,yBAAK1f,UAAWiB,EAAQ8c,WACtB,kBAACjC,GAAA,EAAD,CAAMhI,WAAS,EAAC/S,QAAS,GACvB,kBAAC+a,GAAA,EAAD,CAAMC,GAAI,GAAIlR,MAAI,GAChB,kBAAC9I,GAAA,EAAD,CACEpD,GAAG,qBACHqB,UAAWiB,EAAQwf,aAFrB,YAOF,kBAAC3E,GAAA,EAAD,CAAMC,GAAI,EAAGlR,MAAI,GACd+Q,GAAaA,EAAUrP,OAAS,GAC/B,kBAAClK,GAAA,EAAD,CACE1C,MAAM,UACNyC,QAAQ,YACRE,QAAS,kBAAM8lC,GAAQ,KAHzB,sBAWL93B,EAAY,kBAACxO,GAAA,EAAD,MAAqB,IAChCwO,GACA,kBAAC,WAAD,KACGuS,EACC,yBAAK7iB,UAAWiB,EAAQsgB,oBACtB,kBAACtV,GAAA,EAAD,CACEtM,MAAM,UACN2C,QAvDgB,WAC9B4f,KAuDcvjB,GAAG,kBACHqB,UAAWiB,EAAQ8f,WAEnB,kBAACiC,GAAA,EAAD,CAAerjB,MAAM,aAEvB,kBAACwC,GAAA,EAAD,CAAYnC,UAAWiB,EAAQ4f,aAC5B,IACAkB,IAIL,yBAAK/hB,UAAWiB,EAAQsgB,oBACtB,kBAACpf,GAAA,EAAD,CAAYnC,UAAWiB,EAAQ4f,aAC5B,IACAkB,IAINnG,GACC,kBAAC,GAAD,CACEA,UAAWA,EACX6D,kBAtFY,SAACS,GACzB+B,EAAkB/B,EAAOK,eAsFbb,oBAAqBA,QCzGtBnV,oBA5Bf,SAAyBC,EAAOC,GAC9B,MAAO,CACLmR,UAAWpR,EAAMoS,SAASC,aAAa5H,MACvC4M,uBAAwBrX,EAAMoS,SAASC,aAAa5B,UACpD8G,iBAAkBvX,EAAMoS,SAASmF,iBACjCC,iBAAkBxX,EAAMoS,SAASoF,iBACjC1R,UAAW9F,EAAMoS,SAASC,aAAavM,UACvChM,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,OAInE,SAA4BoM,EAAUN,GACpC,MAAO,CACL2X,QAAS,WACPrX,EAASX,OAEX8X,cAAe,WACbnX,EAASZ,OAEX8X,kBAAmB,SAAC/X,GAClBa,EAASd,GAA6BC,KAExCmY,4BAA6B,SAAC/d,GAC5ByG,EAASlB,GAA0BC,GAA+BxF,QAKzDiG,CAGb49B,IC7BI9nC,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCigB,OAAQ,GACRC,YAAa,CACX9S,WAAY,WAEd+S,cAAe,CACb9f,MAAO,IACPoT,WAAYzT,EAAMQ,QAAQ,GAC1B4f,cAAepgB,EAAMQ,QAAQ,IAE/BJ,aAAc,CACZC,MAAO,IACPC,MAAO,QACPC,OAAQP,EAAMQ,QAAQ,IAExB6f,OAAQ,CACNjT,WAAY,eA+ED26B,GA3EG,SAAC7pD,GAAW,IAE1BkkB,EAMElkB,EANFkkB,WACAG,EAKErkB,EALFqkB,SACA3B,EAIE1iB,EAJF0iB,aACAgf,EAGE1hC,EAHF0hC,WACAxY,EAEElpB,EAFFkpB,oBACAvG,EACE3iB,EADF2iB,YAGIH,EAAUZ,KAEVuiB,EAAgB,WACpBxhB,KAQF,OACE,kBAAC,IAAMM,SAAP,KACE,kBAAC,GAAD,CACER,KAAMyB,EACNhB,QAASihB,EACThhB,kBAAgB,qBAChBC,mBAAiB,2BACjB7B,UAAWiB,EAAQuf,QAElB1d,EAAW,kBAAChB,GAAA,EAAD,MAAqB,GACjC,kBAACC,GAAA,EAAD,CAAapD,GAAG,qBAAqBqB,UAAWiB,EAAQwf,aAAxD,cAGA,0BAAMuE,SAAU7jB,GACd,kBAACa,GAAA,EAAD,CAAehC,UAAWiB,EAAQyf,eAChC,kBAAC5E,GAAA,EAAD,CAAMhI,WAAS,EAAC9T,UAAWiB,EAAQgkB,eACjC,kBAACnJ,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACElG,UAAQ,EACRrgB,GAAG,cACHyV,MAAM,OACNyJ,SAAU,SAAClB,GAAD,OA1BA,SAACA,EAAG/U,GAC5BD,EAAoBgV,EAAEmB,OAAOngC,MAAOiqB,GAyBL+c,CAAkBhI,EAAG,WACtCh/B,MAAOwiC,OAKf,kBAACje,GAAA,EAAD,CAAelC,UAAWiB,EAAQ2f,QAChC,kBAACve,GAAA,EAAD,CACEC,QAASsgB,EACTjjB,MAAM,UACNyC,QAAQ,WACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,gBALL,UASA,kBAAC0D,GAAA,EAAD,CACEY,KAAK,SACLtD,MAAM,UACNyC,QAAQ,YACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,kBALL,YC/DN0B,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCwd,UAAW,CACThR,UAAWxM,EAAMQ,QAAQ,GACzB8T,aAActU,EAAMQ,QAAQ,IAE9BwmB,iBAAkB,CAChB1a,YAActM,EAAMQ,QAAQ,IAE9BymB,IAAK,CACH1mB,OAAQP,EAAMQ,QAAQ,IAExBgS,OAAQ,CACNjS,OAAQP,EAAMQ,QAAQ,GACtBH,MAAO,IACPqN,OAAQ,kBACRwZ,YAAa,IACbrK,KAAM,GAERsK,aAAa,CACX7a,YAActM,EAAMQ,QAAQ,QAiOjBwnC,GA7NuB,SAAC9pD,GACrC,IAAMwiB,EAAUZ,KAEdub,EAYEn9B,EAZFm9B,UACAiG,EAWEpjC,EAXFojC,uBACAE,EAUEtjC,EAVFsjC,iBACAC,EASEvjC,EATFujC,iBACAC,EAQExjC,EARFwjC,kBACAC,EAOEzjC,EAPFyjC,cAGAG,GAIE5jC,EANF2jC,QAME3jC,EALF0jC,uBAKE1jC,EAJF4jC,6BACA/R,EAGE7xB,EAHF6xB,UACAhM,EAEE7lB,EAFF6lB,SACAkkC,EACE/pD,EADF+pD,oBAGF/sD,IAAMmB,WACJ,WACEylC,EAA4B/d,KAG9B,IAtB6C,MAyBvBroB,oBAAS,GAzBc,mBAyBxCilB,EAzBwC,KAyBlCknC,EAzBkC,KAiCzC1oB,EAAsB,SAACtkC,GAC3BH,OAAOimB,KAAK9lB,EAASitD,YAAa,SAAU,wBAkBxCpgB,EAAkBxsC,IAAMysC,YApDiB,EAkFRjsC,oBAAS,GAlFD,mBAkFxCwsD,EAlFwC,KAkFzBC,EAlFyB,OAmFXzsD,mBAAS,IAnFE,mBAmFxCkkC,EAnFwC,KAmF5BwoB,EAnF4B,KAoGzC9lB,EAAcd,IAAqBC,EAAmB,UAAY1d,EAAW,IAEnF,OACE,kBAAC,GAAD,KACGpD,GACC,kBAAC,GAAD,CACEA,KAAMA,EACN0a,UAAWiG,EACXV,mBAhEmB,WACzBinB,GAAQ,IAgEF1oB,oBAAqBA,IAIxB+oB,GACA,kBAAC,GAAD,CACC9lC,WAAc8lC,EACd3lC,UAAY,EACZ3B,aAvBwB,WACxBqnC,EAAoBroB,GACrBuoB,GAAc,GACdC,EAAc,KAqBbxoB,WAAcA,EACdxY,oBAjCsB,SAACgV,EAAGisB,GAC9BD,EAAchsB,IAiCVvb,YA9BwB,WAC5BsnC,GAAc,MAgCZ,yBAAK1oC,UAAWiB,EAAQ8c,WACtB,kBAACjC,GAAA,EAAD,CAAMhI,WAAS,GACb,kBAACgI,GAAA,EAAD,CAAMC,GAAI,EAAGlR,MAAI,GACf,kBAAC9I,GAAA,EAAD,CACEpD,GAAG,qBACHqB,UAAWiB,EAAQwf,aAFrB,YAQF,kBAAC3E,GAAA,EAAD,CAAMC,GAAI,EAAGlR,MAAI,GACb,kBAAC2d,GAAA,EAAD,CACG7oB,MAAM,UACNyC,QAAQ,WACR8J,aAAW,MACZ5J,QAAS,kBAAMomC,GAAc,IAC7B1oC,UAAS,UAAKiB,EAAQsmB,iBAAb,YAAiCtmB,EAAQ8R,SAEjD,kBAAC,KAAD,CAAY/S,UAAWiB,EAAQymB,eAPlC,cAWA,kBAACc,GAAA,EAAD,CACI7pB,GAAG,mBACHgB,MAAM,UACNyC,QAAQ,WACR8J,aAAW,MACX5J,QAjGI,SAAC4E,GACnB+gB,EAAgBQ,QAAQ3sC,SAAS,GAAG4sC,SAiGtB1oB,UAAS,UAAKiB,EAAQsmB,iBAAb,YAAiCtmB,EAAQ8R,SAElD,kBAAC,KAAD,CAAgB/S,UAAWiB,EAAQymB,eARvC,iBAUI,kBAACiB,GAAA,EAAD,CACE1lB,KAAK,OACL2lB,IAAKX,EACLY,UAAU,EACVhL,SAtGQ,SAAC3W,GACzBA,EAAM8e,iBAD6B,IAG5B6iB,EAAmBpqD,EAAnBoqD,gBAED/f,EAAO5hB,EAAM4W,OAAOiL,MAAM,GAIhC8f,EAFgB,CAACvkC,WAAUwkC,YAAahgB,EAAM/G,mBAAkBC,qBAMhEiG,EAAgBQ,QAAQ3sC,SAAS,GAAG6B,MAAQ,MA0F5B6kB,MAAO,CAAEiK,QAAS,WAIrBmP,GAAaA,EAAUrP,OAAS,GACnC,kBAACic,GAAA,EAAD,CACE7oB,MAAM,UACNyC,QAAQ,WACRE,QAAS,kBAAM8lC,GAAQ,IACvBpoC,UAAS,UAAKiB,EAAQsmB,iBAAb,YAAiCtmB,EAAQ8R,SAEjD,kBAAC,KAAD,CAAY/S,UAAWiB,EAAQymB,eANlC,sBAaLpX,EAAY,kBAACxO,GAAA,EAAD,MAAqB,IAChCwO,GACA,kBAAC,WAAD,KACGuS,EACC,yBAAK7iB,UAAWiB,EAAQsgB,oBACtB,kBAACtV,GAAA,EAAD,CACEtM,MAAM,UACN2C,QApJgB,SAACqa,GAC/BA,EAAEqJ,iBACF9D,KAmJcvjB,GAAG,kBACHqB,UAAWiB,EAAQ8f,WAEnB,kBAACiC,GAAA,EAAD,CAAerjB,MAAM,aAEvB,kBAACwC,GAAA,EAAD,CAAYnC,UAAWiB,EAAQ4f,aAC5B,IACAkB,IAIL,yBAAK/hB,UAAWiB,EAAQsgB,oBACtB,kBAACpf,GAAA,EAAD,CAAYnC,UAAWiB,EAAQ4f,aAC5B,IACAkB,IAINnG,GACC,kBAAC,GAAD,CACEA,UAAWA,EACX6D,kBAnLY,SAACS,GACzB+B,EAAkB/B,EAAOK,eAmLbb,oBAAqBA,EACrBE,kBAxIY,SAACxkC,IAGzB2tD,EAF4BtqD,EAAtBsqD,oBACM,6BAAO3tD,GAAP,IAAiBkpB,eAuIjBqb,YAAc,QCnNfpV,oBArCf,SAAyBC,EAAOC,GAC9B,MAAO,CACLmR,UAAWpR,EAAMoS,SAASC,aAAa5H,MACvC4M,uBAAwBrX,EAAMoS,SAASC,aAAa5B,UACpD8G,iBAAkBvX,EAAMoS,SAASmF,iBACjCC,iBAAkBxX,EAAMoS,SAASoF,iBACjC1R,UAAW9F,EAAMoS,SAASC,aAAavM,UACvChM,SAAUkG,EAAMpG,OAAOA,OAAOyG,MAAQL,EAAMpG,OAAOA,OAAOyG,KAAKlM,OAInE,SAA4BoM,EAAUN,GACpC,MAAO,CACL2X,QAAS,WACPrX,EAASX,OAEX8X,cAAe,WACbnX,EAASZ,OAEX8X,kBAAmB,SAAC/X,GAClBa,EAASd,GAA6BC,KAExCmY,4BAA6B,SAAC/d,GAC5ByG,EAAShB,GAAmCzF,KAE9CkkC,oBAAoB,SAACroB,GACnBpV,ElKC6B,SAACoV,GAAD,MAAiB,CAClDld,KAAMC,EAAMtK,aACZunB,ckKHa6oB,CAAoB7oB,KAE/B0oB,gBAAiB,SAACthC,GAChBwD,ElKGiC,SAACxD,GAAD,MAAc,CACnDtE,KAAMC,EAAMrK,oBACZ0O,WkKLa0hC,CAAwB1hC,KAEnCwhC,mBAAoB,SAACxhC,GACnBwD,ElKKqC,SAACxD,GAAD,MAAc,CACvDtE,KAAMC,EAAMhK,uBACZqO,WkKPa2hC,CAA4B3hC,QAK5BgD,CAGbg+B,ICvCIloC,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvC4oC,mBAAoB,CAClBp8B,UAAW,GACXE,WAAY,IACZJ,YAAa,IAEfu8B,mBAAoB,CAClBr8B,UAAW,QAsEAs8B,GAlEW,SAAC5qD,GACzB,IAEI6qD,EAFEroC,EAAUZ,KACRmS,EAAuD/zB,EAAvD+zB,sBAAuBiK,EAAgCh+B,EAAhCg+B,aAAc8sB,EAAkB9qD,EAAlB8qD,cAGvCC,EACa,MAAjBD,IAC4B,MAA1B9sB,EAAa9Y,WACb4lC,EAAc5lC,YAAc8Y,EAAa9Y,WACf,MAAzB8Y,EAAanY,UACZilC,EAAc5qC,KAAO8d,EAAanY,UAExC,OAAQkO,GACN,KAAKQ,EACHs2B,EAAqB,kBAAC,GAAD,MACrB,MACF,KAAKt2B,EACHs2B,EAAqB,kBAAC,GAAD,MACrB,MACF,KAAKt2B,EACHs2B,EAAqB,kBAAC,GAAD,MACrB,MACF,KAAKt2B,EACHs2B,EAAqB,kBAAC,GAAD,MACrB,MACF,KAAKt2B,EACHs2B,EAAqB,kBAAC,GAAD,MACrB,MACF,KAAKt2B,EACHs2B,EAAqB,kBAAC,GAAD,MACrB,MACF,KAAKt2B,EACHs2B,EAAqB,kBAAC,GAAD,MACrB,MACF,KAAKt2B,EACHs2B,EAAqB,kBAAC,GAAD,MACrB,MACF,KAAKt2B,EACHs2B,EAAqB,kBAAC,GAAD,MACrB,MACF,KAAKt2B,EACHs2B,EAAqB,kBAAC,GAAD,MACrB,MACF,KAAKt2B,EACHs2B,EAAqB,kBAAC,GAAD,MACrB,MACF,QACEA,EAAqB,kBAAC,GAAD,MAMzB,OAFA9rD,QAAQisD,IAAIH,GAGV,yBAAKtpC,UAAWiB,EAAQkoC,oBACrBK,EACC,wBAAIxpC,UAAWiB,EAAQmoC,oBAAvB,gDAIAE,ICvEO/+B,oBAZf,SAAyBC,EAAOC,GAC9B,MAAO,CACL+H,sBAAuBhI,EAAMqJ,SAASrB,sBACtCiK,aAAcjS,EAAME,MAAMtuB,KAAKyuB,KAC/B0+B,cAAe/+B,EAAMpG,OAAOA,OAAOyG,SAIvC,SAA4BE,EAAUN,GACpC,MAAO,KAGMF,CAA6C8+B,ICV5D,SAASK,GAAkBjrD,GACzB,OACE,kBAAC,IAAMijB,SAAP,KACE,kBAAC,GAAD,MACA,kBAAC,GAAD,OASNgoC,GAAkBx5B,aAAe,GAIlBw5B,UCTAv5B,eACb5F,aATsB,SAACC,EAAOC,GAC9B,MAAO,MAGkB,SAACM,EAAUN,GACpC,MAAO,KAIPF,CAA6Cm/B,KCTzCC,GAAe,SAAClrD,GAAW,IACvB0wB,EAAsB1wB,EAAtB0wB,kBACR,OACE,kBAAC,IAAMzN,SAAP,KACE,kBAAC,GAAD,CAAoByN,kBAAmBA,IACvC,kBAAC,GAAD,QASNw6B,GAAaz5B,aAAe,GAIby5B,U,UCaAC,GAjCqB,SAACnrD,GAAW,IACtC2lB,EAA+D3lB,EAA/D2lB,OAAQlD,EAAuDziB,EAAvDyiB,KAAMkuB,EAAiD3wC,EAAjD2wC,WAAY5uB,EAAqC/hB,EAArC+hB,aAAc6uB,EAAuB5wC,EAAvB4wC,WAAYzrB,EAAWnlB,EAAXmlB,OAEtDvoB,EAAQuoB,IAAWqyB,EAAwB,WAAa,SACxDC,EACJtyB,IAAWqyB,EAAwB,cAAgB,UAE/C3G,EAAmB,uCAAG,WAAOpoB,GAAP,qBAAArqB,EAAA,sDAC1BqqB,EAAM8e,iBACE6jB,EAAiDprD,EAAjDorD,6BAA8BzlC,EAAmB3lB,EAAnB2lB,OAAQR,EAAWnlB,EAAXmlB,OACxC2D,EAHoB,6BAIrBnD,GAJqB,IAKxBR,WAEFimC,EAA6BtiC,GAPH,2CAAH,sDAUzB,OACE,kBAAC,GAAD,CACErG,KAAMA,EACN7lB,MAAK,UAAKA,EAAL,YAAc+oB,EAAOwL,MAC1BvO,YAAW,sCAAiC60B,EAAWxU,cAA5C,sCAAuFrmC,EAAM+6C,oBAA7F,KACX90B,iBAAkBjmB,EAClBkmB,iBAAiB,SACjBH,YAAa,kBAAMguB,GAAW,EAAOhrB,EAAOzF,GAAIiF,IAChDzC,aAAcmuB,EACd9tB,gBAAiB6tB,EACjB7uB,aAAcA,EACdiB,UAAU,KCID8I,oBA5Bf,SAAyBC,EAAOC,GAC9B,IAAMnG,EAAWkG,EAAMpG,OAAO0lC,2BAA2BxlC,SACnD8pB,EAAc5jB,EAAMqJ,SAASua,YAAYnZ,MAI/C,MAAO,CACL7Q,OAHa,IAAbE,EAAiB,GAAK8pB,EAAY/W,QAAO,SAACsF,GAAD,OAAOA,EAAEhe,KAAO2F,KAAU,GAInEpD,KAAMsJ,EAAMpG,OAAO0lC,2BAA2B5oC,KAC9CmuB,WAAY7kB,EAAMpG,OAAO0lC,2BAA2BhnC,SACpDtC,aAAcgK,EAAMpG,OAAO0lC,2BAA2BtpC,aACtDoD,OAAQ4G,EAAMpG,OAAO0lC,2BAA2BlmC,WAIpD,SAA4BmH,EAAUN,GACpC,MAAO,CACL2kB,WAAY,SAACluB,EAAMoD,EAAUV,GAC3BmH,EACE1G,GAA6CnD,EAAMoD,EAAUV,KAGjEimC,6BAA8B,SAACzlC,GAC7B2G,EhLkBwC,SAAC3G,GAAD,MAAa,CACzDnB,KAAMC,EAAM7iB,4BACZ+jB,UgLpBa2lC,CAA+B3lC,QAK/BmG,CAGbq/B,ICvBIvpC,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCigB,OAAQ,GACRC,YAAa,CACX9S,WAAY,WAEd+S,cAAe,CACb9f,MAAO,IACPoT,WAAYzT,EAAMQ,QAAQ,GAC1B4f,cAAepgB,EAAMQ,QAAQ,IAE/BJ,aAAc,CACZC,MAAO,IACPC,MAAO,QACPC,OAAQP,EAAMQ,QAAQ,IAExB6f,OAAQ,CACNjT,WAAY,WAEd6X,iBAAkB,CAChBzY,UAAW,QA6JAi9B,GAzJgB,SAACvrD,GAC9B,IAAMwiB,EAAUZ,KAEdsC,EAQElkB,EARFkkB,WACAsnC,EAOExrD,EAPFwrD,uBACAtiC,EAMElpB,EANFkpB,oBACAvD,EAKE3lB,EALF2lB,OACA/oB,EAIEoD,EAJFpD,MACAynB,EAGErkB,EAHFqkB,SACA00B,EAEE/4C,EAFF+4C,UACAr2B,EACE1iB,EADF0iB,aAGIyhB,EAAgB,WACpBqnB,GAAuB,IAGnBtlB,EAAoB,SAAChI,EAAG/U,GAC5BD,EAAoBgV,EAAEmB,OAAOngC,MAAOiqB,IAGtC,OACE,kBAAC,IAAMlG,SAAP,KACE,kBAAC,GAAD,CACER,KAAMyB,EACNhB,QAASihB,EACThhB,kBAAgB,qBAChBC,mBAAiB,2BACjB7B,UAAWiB,EAAQuf,QAElB1d,EAAW,kBAAChB,GAAA,EAAD,MAAqB,GACjC,kBAACC,GAAA,EAAD,CAAapD,GAAG,qBAAqBqB,UAAWiB,EAAQwf,aACrDplC,GAEH,0BAAM2pC,SAAU7jB,GACd,kBAACa,GAAA,EAAD,CAAehC,UAAWiB,EAAQyf,eAChC,kBAAC5E,GAAA,EAAD,CAAMhI,WAAS,EAAC9T,UAAWiB,EAAQgkB,eACjC,kBAACnJ,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACElG,UAAQ,EACRrgB,GAAG,aACHyV,MAAM,OACNyJ,SAAU,SAAClB,GAAD,OAAOgI,EAAkBhI,EAAGiI,EAAgBrrB,OACtD5b,MAAOymB,EAAOwL,QAGlB,kBAACkM,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACElG,UAAQ,EACRrgB,GAAG,sBACHyV,MAAM,iBACNyJ,SAAU,SAAClB,GAAD,OACRgI,EAAkBhI,EAAGiI,EAAgBlrB,iBAEvC/b,MAAOymB,EAAO8lC,iBAGlB,kBAACpuB,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACEvmB,GAAG,cACHyV,MAAM,QACNyJ,SAAU,SAAClB,GAAD,OAAOgI,EAAkBhI,EAAGiI,EAAgBprB,QACtD7b,MAAOymB,EAAOrB,SAGlB,kBAAC+Y,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAAC,GAAD,CACEuB,OAAO,kBACPlJ,MAAM,UACNtT,OAAO,SACPnjB,MAAOymB,EAAOT,UACdgb,aAAc,SAAChC,GAAD,OACZgI,EAAkBhI,EAAGiI,EAAgBhrB,UAEvCqb,MAAOuiB,EACP5Y,cAAc,OACd5e,UAAWiB,EAAQ0gB,SACnB7C,WAAW,KACXC,aAAa,OACbC,UAAU,KAGd,kBAAClD,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACEvmB,GAAG,cACHyV,MAAM,QACNyJ,SAAU,SAAClB,GAAD,OAAOgI,EAAkBhI,EAAGiI,EAAgBnrB,QACtD9b,MAAOymB,EAAO+lC,SAGlB,kBAACruB,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACEvmB,GAAG,YACHyV,MAAM,MACNyJ,SAAU,SAAClB,GAAD,OAAOgI,EAAkBhI,EAAGiI,EAAgBjrB,MACtDhc,MAAOymB,EAAOgmC,OAGlB,kBAACtuB,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQukB,kBACpC,kBAACN,GAAA,EAAD,CACEvmB,GAAG,YACHyV,MAAM,UACNqR,WAAS,EACTC,KAAM,EACN7G,WAAS,EACTzc,QAAQ,WACRyb,SAAU,SAAClB,GAAD,OACRgI,EAAkBhI,EAAGiI,EAAgB/qB,UAEvClc,MAAOymB,EAAOimC,WAGlB,kBAACvuB,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GAAI/b,UAAWiB,EAAQukB,kBACpC,kBAACN,GAAA,EAAD,CACEvmB,GAAG,SACHyV,MAAM,QACNqR,WAAS,EACTC,KAAM,EACN7G,WAAS,EACTzc,QAAQ,WACRyb,SAAU,SAAClB,GAAD,OAAOgI,EAAkBhI,EAAGiI,EAAgB9qB,QACtDnc,MAAOymB,EAAOuhB,WAKtB,kBAACzjB,GAAA,EAAD,CAAelC,UAAWiB,EAAQ2f,QAChC,kBAACve,GAAA,EAAD,CACEC,QAASsgB,EACTjjB,MAAM,UACNyC,QAAQ,WACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,gBALL,UASA,kBAAC0D,GAAA,EAAD,CACEY,KAAK,SACLtD,MAAM,UACNyC,QAAQ,YACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,kBALL,YC3IG2rC,GAhCU,SAAC7rD,GAAW,IAEjCkkB,EAOElkB,EAPFkkB,WACAsnC,EAMExrD,EANFwrD,uBACAtiC,EAKElpB,EALFkpB,oBACAvD,EAIE3lB,EAJF2lB,OACAmmC,EAGE9rD,EAHF8rD,aACAznC,EAEErkB,EAFFqkB,SACA00B,EACE/4C,EADF+4C,UAQF,OACE,kBAAC,IAAM91B,SAAP,KACE,kBAAC,GAAD,CACEiB,WAAYA,EACZsnC,uBAAwBA,EACxBtiC,oBAAqBA,EACrBvD,OAAQA,EACRtB,SAAUA,EACV00B,UAAWA,EACXr2B,aAde,SAACwb,GACpBA,EAAEqJ,iBACFukB,EAAanmC,IAaT/oB,MAAM,kBCMCkvB,oBAzBf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAMpG,OAAOomC,UAAUC,qBACnCrmC,OAAQoG,EAAMpG,OAAOomC,UAAU3/B,KAC/B/H,SAAU0H,EAAMpG,OAAOomC,UAAU1nC,SACjC00B,UACEhtB,EAAMgtB,UAAUiB,cAAgBjuB,EAAMgtB,UAAUiB,aAAaxjB,UAInE,SAA4BlK,EAAUN,GACpC,MAAO,CACLw/B,uBAAwB,SAAC/oC,GACvB6J,EAAS/G,GAA6B9C,KAExCyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAAS7G,GAAgCvmB,EAAO0lB,KAElDknC,aAAc,SAACnmC,GAEb2G,EAAS5G,GAAqBC,EADjB8hB,QAMJ3b,CAA6C+/B,ICzBtDjqC,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCuT,UAAW,CACT9B,QAASzR,EAAMQ,QAAQ,GACvBqa,YAAa7a,EAAMQ,QAAQ,GAC3B8T,aAActU,EAAMQ,QAAQ,IAE9B4O,YAAa,CACXvC,SAAU,GACV+G,WAAY,IACZH,WAAYzT,EAAMQ,QAAQ,IAE5BgC,MAAO,CACLiR,WAAYzT,EAAMQ,QAAQ,IAE5Bwa,oBAAqB,GACrBC,oBAAqB,CACnB/O,QAAS,OACTi+B,cAAe,SACfl2B,eAAgB,UAElB4B,WAAY,CACVzW,MAAOY,EAAMsN,QAAQuE,UAAUrE,MAEjC0N,aAAc,CACZ9b,MAAOY,EAAMsN,QAAQoG,OAAOlG,MAE9BrB,KAAM,CAAEmI,aAAc,IACtB81B,WAAY,CACV18B,OAAQ,OACR28B,UAAW,OACX54B,QAAS,EACT6C,aAAc,QASZg2B,GAAe,SAACpsD,GACpB,IAAMwiB,EAAUZ,KAGd+D,EAIE3lB,EAJF2lB,OACAq0B,EAGEh6C,EAHFg6C,aACAqS,EAEErsD,EAFFqsD,sBACAC,EACEtsD,EADFssD,iCAEIzmC,EAAWF,EAAOzF,GAExBljB,IAAMmB,WACJ,cAGA,IAGF,IAAI+yB,EAAc,GAKlB,OAJI8oB,GAAgBA,EAAalsB,OAAS,IACxCoD,EAzB8B,SAAC8oB,EAAc90B,GAC/C,IAAIqnC,EAAkBvS,EAAaphB,QAAO,SAAC4zB,GAAD,OAAOA,EAAEtsC,KAAOgF,KAAW,GACrE,OAAOqnC,EAAkBA,EAAgBp7B,KAAO,oBAuBhCs7B,CAA0BzS,EAAcr0B,EAAOT,YAI7D,kBAACmU,GAAA,EAAD,KACE,yBAAK9X,UAAWiB,EAAQ6S,WACtB,kBAACgI,GAAA,EAAD,CAAMhI,WAAS,GACb,kBAACgI,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,yBAAK/b,UAAWiB,EAAQ+a,gBACtB,kBAAC7Z,GAAA,EAAD,CAAYC,QAAQ,KAAKpC,UAAWiB,EAAQ0O,aACzCvL,GAAUA,EAAOwL,MAEpB,kBAACzN,GAAA,EAAD,CAAYC,QAAQ,YAAYpC,UAAWiB,EAAQ8B,OAChD4M,KAIP,kBAACmM,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,yBAAK/b,UAAWiB,EAAQsa,qBACtB,kBAAClZ,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACX5T,QAAS,kBACPyoC,GACE,EACAzmC,EACA2xB,IAGJzzB,MAAO,CAAEiK,QAAS,SATpB,cAaA,kBAAC0+B,GAAA,EAAD,CACElnB,KAAI,6BAAwB3f,GAC5BwZ,OAAO,SACP9d,UAAWiB,EAAQmqC,mBAHrB,mBASJ,kBAACtvB,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,yBAAK/b,UAAWiB,EAAQua,qBACtB,kBAACnZ,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACXlW,UAAWiB,EAAQmV,WACnB9T,QAAS,kBAAMwoC,EAAsB,gBAAK1mC,MAH5C,QAOA,kBAAC/B,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACXlW,UAAWiB,EAAQwa,aACnBnZ,QAAS,kBACPyoC,GACE,EACAzmC,EACA2xB,KAPN,gBAuECoV,OAlDf,SAAsB5sD,GACpB,IAAMwiB,EAAUZ,KAEdwT,EAMEp1B,EANFo1B,SACAwkB,EAKE55C,EALF45C,iBACAiT,EAIE7sD,EAJF6sD,kBACAP,EAGEtsD,EAHFssD,iCACAvT,EAEE/4C,EAFF+4C,UACAc,EACE75C,EADF65C,kBAEF78C,IAAMmB,WAAU,WACdy7C,IACIb,GAAkC,IAArBA,EAAUjrB,QACzB+rB,MAGD,IAEH,IAAMiT,EAAoC,SAACrqC,EAAMoD,EAAUV,GACzDmnC,EAAiC7pC,EAAMoD,EAAUV,IAG7CknC,EAAwB,SAAC1mC,GAC7BknC,EAAkBlnC,IAGpB,OACE,kBAAC,IAAM1C,SAAP,KACE,kBAAC,GAAD,MACA,kBAAC,GAAD,MACA,yBAAK1B,UAAWiB,EAAQsvB,wBACrB1c,GACCA,EAAS6B,KAAI,SAACtR,GACZ,OACE,kBAAC,GAAD,CACEA,OAAQA,EACR+H,IAAK/H,EAAOzF,GACZosC,iCACEQ,EAEFT,sBAAuBA,EACvBrS,aAAcjB,UChJfrnB,eACb5F,aA5BsB,SAACC,EAAOC,GAC9B,MAAO,CACLoJ,SAAUrJ,EAAMqJ,SAASua,YAAYnZ,MACrCuiB,UAAWhtB,EAAMgtB,UAAUiB,aAAaxjB,UAIjB,SAAClK,EAAUN,GACpC,MAAO,CACL4tB,iBAAkB,WAChBttB,EAAS9G,OAEX8mC,iCAAkC,SAAC7pC,EAAMoD,EAAUV,GACjDmH,EACE1G,GAA6CnD,EAAMoD,EAAUV,KAGjE0nC,kBAAmB,SAAClnC,GAClB2G,EAAS/G,IAA6B,IACtC+G,ErLEiC,SAAC3G,GAAD,MAAa,CAClDnB,KAAMC,EAAMpjB,YACZskB,UqLJaonC,CAAwBpnC,KAEnCk0B,kBAAmB,WACjBvtB,EAAStH,UAMb8G,CAA6C8gC,KCDhCI,GAnCY,SAAChtD,GAAW,IAEnCkkB,EAOElkB,EAPFkkB,WACAsnC,EAMExrD,EANFwrD,uBACAtiC,EAKElpB,EALFkpB,oBACAvD,EAIE3lB,EAJF2lB,OACAmmC,EAGE9rD,EAHF8rD,aACAznC,EAEErkB,EAFFqkB,SACA00B,EACE/4C,EADF+4C,UAaF,OACE,kBAAC,GAAD,CACE70B,WAAYA,EACZsnC,uBAAwBA,EACxBtiC,oBAAqBA,EACrBvD,OAAQA,EACRtB,SAAUA,EACV00B,UAAWA,EACXr2B,aAlBiB,SAACwb,GACpBA,EAAEqJ,iBADwB,IAElB5hB,EAAW3lB,EAAX2lB,OACFmD,EAAO,6BACRnD,GADQ,IAEXR,OAAQqyB,IAEVsU,EAAahjC,IAYXlsB,MAAM,uBCCGkvB,oBAxBf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAMpG,OAAOomC,UAAUkB,uBACnCtnC,OAAQoG,EAAMpG,OAAOomC,UAAU3/B,KAC/B/H,SAAU0H,EAAMpG,OAAOomC,UAAU1nC,SACjC00B,UAAWhtB,EAAMgtB,UAAUiB,aAAaxjB,UAI5C,SAA4BlK,EAAUN,GACpC,MAAO,CACLw/B,uBAAwB,SAAC/oC,GACvB6J,EAAShH,GAA+B7C,KAE1CyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAAS7G,GAAgCvmB,EAAO0lB,KAElDknC,aAAc,SAACnmC,GAEb2G,EAAS5G,GAAqBC,EADjB8hB,QAMJ3b,CAA6CkhC,IC3BtDprC,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCwd,UAAW,CACThR,UAAWxM,EAAMQ,QAAQ,GACzB8T,aAActU,EAAMQ,QAAQ,QAI1B4qC,GAAkB,SAACltD,GAAW,IAEhCwmB,EAIExmB,EAJFwmB,WACAsY,EAGE9+B,EAHF8+B,uBACA0sB,EAEExrD,EAFFwrD,uBACAxtB,EACEh+B,EADFg+B,aAEIxb,EAAUZ,KAEhB,OACE,kBAAC,IAAMqB,SAAP,KACE,kBAAC,GAAD,MACA,yBAAK1B,UAAWiB,EAAQ8c,WACtB,kBAAC,GAAD,CACEE,iBAAkBgsB,EAClBhlC,WAAYA,EACZsY,uBAAwBA,EACxBW,WAAW,gBACXC,kBAAkB,kBAClBC,WAAY3B,EAAaC,KAAO,KAGpC,kBAAC,GAAD,QASNivB,GAAgBz7B,aAAe,GAIhBy7B,UCtBAx7B,eACb5F,aAnBsB,SAACC,EAAOC,GAC9B,MAAO,CACLxF,WAAYuF,EAAMqJ,SAASua,YAAYnpB,WACvCwX,aAAcjS,EAAME,MAAMtuB,KAAKyuB,SAIR,SAACE,EAAUN,GACpC,MAAO,CACL8S,uBAAwB,SAACtY,GACvB8F,EzLRmC,SAAC9F,GAAD,MAAiB,CACxDhC,KAAMC,EAAMhkB,8BACZ+lB,cyLMa2mC,CAA0B3mC,KAErCglC,uBAAwB,WACtBl/B,EAAShH,IAA+B,QAM5CwG,CAA6CohC,KCdzCtrC,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCigB,OAAQ,GACRC,YAAa,CACX9S,WAAY,WAEd+S,cAAe,CACb9f,MAAO,IACPoT,WAAYzT,EAAMQ,QAAQ,GAC1B4f,cAAepgB,EAAMQ,QAAQ,IAE/BJ,aAAc,CACZC,MAAO,IACPC,MAAO,QACPC,OAAQP,EAAMQ,QAAQ,IAExB6f,OAAQ,CACNjT,WAAY,eA+FDk+B,GA3FiB,SAACptD,GAAW,IAExCkkB,EAOElkB,EAPFkkB,WACAG,EAMErkB,EANFqkB,SACA3B,EAKE1iB,EALF0iB,aACA9lB,EAIEoD,EAJFpD,MACAkoB,EAGE9kB,EAHF8kB,QACAoE,EAEElpB,EAFFkpB,oBACAmkC,EACErtD,EADFqtD,wBAEI7qC,EAAUZ,KAEVuiB,EAAgB,WACpBkpB,GAAwB,IAGpBnnB,EAAoB,SAAChI,EAAG/U,GAC5BD,EAAoBgV,EAAEmB,OAAOngC,MAAOiqB,IAGtC,OACE,kBAAC,IAAMlG,SAAP,KACE,kBAAC,GAAD,CACER,KAAMyB,EACNhB,QAASihB,EACThhB,kBAAgB,qBAChBC,mBAAiB,2BACjB7B,UAAWiB,EAAQuf,QAElB1d,EAAW,kBAAChB,GAAA,EAAD,MAAqB,GACjC,kBAACC,GAAA,EAAD,CAAapD,GAAG,qBAAqBqB,UAAWiB,EAAQwf,aACrDplC,GAEH,0BAAM2pC,SAAU7jB,GACd,kBAACa,GAAA,EAAD,CAAehC,UAAWiB,EAAQyf,eAChC,kBAAC5E,GAAA,EAAD,CAAMhI,WAAS,EAAC9T,UAAWiB,EAAQgkB,eACjC,kBAACnJ,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACElG,UAAQ,EACRrgB,GAAG,cACHyV,MAAM,OACNyJ,SAAU,SAAClB,GAAD,OAAOgI,EAAkBhI,EAAGiI,EAAgBrrB,OACtD5b,MAAO4lB,EAAQqM,QAGnB,kBAACkM,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACElG,UAAQ,EACRrgB,GAAG,eACHyV,MAAM,QACNyJ,SAAU,SAAClB,GAAD,OAAOgI,EAAkBhI,EAAGiI,EAAgBprB,QACtD7b,MAAO4lB,EAAQR,SAGnB,kBAAC+Y,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,kBAACmJ,GAAA,EAAD,CACEvmB,GAAG,eACHyV,MAAM,QACNyJ,SAAU,SAAClB,GAAD,OAAOgI,EAAkBhI,EAAGiI,EAAgBnrB,QACtD9b,MAAO4lB,EAAQ4mC,WAKvB,kBAACjoC,GAAA,EAAD,CAAelC,UAAWiB,EAAQ2f,QAChC,kBAACve,GAAA,EAAD,CACEC,QAASsgB,EACTjjB,MAAM,UACNyC,QAAQ,WACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,gBALL,UASA,kBAAC0D,GAAA,EAAD,CACEY,KAAK,SACLtD,MAAM,UACNyC,QAAQ,YACRpC,UAAWiB,EAAQN,aACnBhC,GAAG,kBALL,YCrEGotC,GAnCa,SAACttD,GAAW,IAEpCkkB,EAMElkB,EANFkkB,WACAmpC,EAKErtD,EALFqtD,wBACAnkC,EAIElpB,EAJFkpB,oBACApE,EAGE9kB,EAHF8kB,QACA60B,EAEE35C,EAFF25C,cACAt1B,EACErkB,EADFqkB,SAaF,OACE,kBAAC,IAAMpB,SAAP,KACE,kBAAC,GAAD,CACEiB,WAAYA,EACZG,SAAUA,EACV6E,oBAAqBA,EACrBmkC,wBAAyBA,EACzB3qC,aAjBe,SAACwb,GACpBA,EAAEqJ,iBADwB,IAElBziB,EAAY9kB,EAAZ8kB,QACFgE,EAAO,6BACRhE,GADQ,IAEXK,OAAQooC,IAEV5T,EAAc7wB,IAWVlsB,MAAM,qBACNkoB,QAASA,MCCFgH,oBAvBf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAMjH,QAAQ0oC,WAAWC,wBACrC3oC,QAASiH,EAAMjH,QAAQ0oC,WAAWphC,KAClC/H,SAAU0H,EAAMjH,QAAQ0oC,WAAWnpC,aAIvC,SAA4BiI,EAAUN,GACpC,MAAO,CACLqhC,wBAAyB,SAAC5qC,GACxB6J,EAAS/H,GAAgC9B,KAE3CyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAAS3H,GAAiCzlB,EAAO0lB,KAEnD+0B,cAAe,SAAC70B,GAEdwH,EAASzH,GAAsBC,EADlB2iB,QAMJ3b,CAGbwhC,ICJaI,GA9BW,SAAC1tD,GAAW,IAElCkkB,EAMElkB,EANFkkB,WACAY,EAKE9kB,EALF8kB,QACAT,EAIErkB,EAJFqkB,SACAgpC,EAGErtD,EAHFqtD,wBACAnkC,EAEElpB,EAFFkpB,oBACAywB,EACE35C,EADF25C,cAQF,OACE,kBAAC,IAAM12B,SAAP,KACE,kBAAC,GAAD,CACEiB,WAAYA,EACZG,SAAUA,EACV6E,oBAAqBA,EACrBmkC,wBAAyBA,EACzB3qC,aAZe,SAACwb,GACpBA,EAAEqJ,iBACFoS,EAAc70B,IAWVloB,MAAM,eACNkoB,QAASA,MCMFgH,oBAvBf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAMjH,QAAQ0oC,WAAWG,sBACrC7oC,QAASiH,EAAMjH,QAAQ0oC,WAAWphC,KAClC/H,SAAU0H,EAAMjH,QAAQ0oC,WAAWnpC,aAIvC,SAA4BiI,EAAUN,GACpC,MAAO,CACLqhC,wBAAyB,SAAC5qC,GACxB6J,EAAS5H,GAA8BjC,KAEzCyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAAS3H,GAAiCzlB,EAAO0lB,KAEnD+0B,cAAe,SAAC70B,GAEdwH,EAASzH,GAAsBC,EADlB2iB,QAMJ3b,CAA6C4hC,ICG7CE,GAjCsB,SAAC5tD,GAAW,IACvC8kB,EAAgE9kB,EAAhE8kB,QAASrC,EAAuDziB,EAAvDyiB,KAAMkuB,EAAiD3wC,EAAjD2wC,WAAY5uB,EAAqC/hB,EAArC+hB,aAAc6uB,EAAuB5wC,EAAvB4wC,WAAYzrB,EAAWnlB,EAAXmlB,OAEvDvoB,EAAQuoB,IAAWooC,EAAyB,WAAa,SACzD9V,EACJtyB,IAAWooC,EAAyB,cAAgB,UAEhD1c,EAAmB,uCAAG,WAAOpoB,GAAP,qBAAArqB,EAAA,sDAC1BqqB,EAAM8e,iBACEsmB,EAAkD7tD,EAAlD6tD,6BAA8B/oC,EAAoB9kB,EAApB8kB,QAASK,EAAWnlB,EAAXmlB,OACzC2D,EAHoB,6BAIrBhE,GAJqB,IAKxBK,WAEF0oC,EAA6B/kC,GAPH,2CAAH,sDAUzB,OACE,kBAAC,GAAD,CACErG,KAAMA,EACN7lB,MAAK,UAAKA,EAAL,YAAckoB,EAAQqM,MAC3BvO,YAAW,uCAAkC60B,EAAWE,oBAA7C,sCAA8F/6C,EAAM+6C,oBAApG,KACX90B,iBAAkBjmB,EAClBkmB,iBAAiB,SACjBH,YAAa,kBAAMguB,GAAW,EAAO7rB,EAAQ5E,GAAIiF,IACjDzC,aAAcmuB,EACd9tB,gBAAiB6tB,EACjB7uB,aAAcA,EACdiB,UAAU,KCID8I,oBA5Bf,SAAyBC,EAAOC,GAC9B,IAAM9G,EAAY6G,EAAMjH,QAAQgpC,4BAA4B5oC,UACtD6oC,EACJhiC,EAAMgtB,UAAUiB,cAAgBjuB,EAAMgtB,UAAUiB,aAAaxjB,MAG/D,MAAO,CACL1R,QAFc,IAAdI,EAAkB,GAAK6oC,EAAcn1B,QAAO,SAACsF,GAAD,OAAOA,EAAEhe,KAAOgF,KAAW,GAGvEzC,KAAMsJ,EAAMjH,QAAQgpC,4BAA4BrrC,KAChDmuB,WAAY7kB,EAAMjH,QAAQgpC,4BAA4BzpC,SACtDtC,aAAcgK,EAAMjH,QAAQgpC,4BAA4B/rC,aACxDoD,OAAQ4G,EAAMjH,QAAQgpC,4BAA4B3oC,WAItD,SAA4BmH,EAAUN,GACpC,MAAO,CACL2kB,WAAY,SAACluB,EAAMyC,EAAWC,GAC5BmH,EACErH,GAA8CxC,EAAMyC,EAAWC,KAGnE0oC,6BAA8B,SAAC/oC,GAC7BwH,EjMkByC,SAACxH,GAAD,MAAc,CAC3DN,KAAMC,EAAM1iB,6BACZ+iB,WiMpBakpC,CAAgClpC,QAKhCgH,CAGb8hC,IC1BIhsC,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCuT,UAAW,CACT9B,QAASzR,EAAMQ,QAAQ,GACvBqa,YAAa7a,EAAMQ,QAAQ,GAC3B8T,aAActU,EAAMQ,QAAQ,IAE9B4O,YAAa,CACXvC,SAAU,GACV+G,WAAY,IACZH,WAAYzT,EAAMQ,QAAQ,IAE5BgC,MAAO,CACLiR,WAAYzT,EAAMQ,QAAQ,IAE5Bwa,oBAAqB,CACnBvH,WAAYzT,EAAMQ,QAAQ,IAE5Bya,oBAAqB,GAGrBpF,WAAY,CACVzW,MAAOY,EAAMsN,QAAQuE,UAAUrE,MAEjC0N,aAAc,CACZ9b,MAAOY,EAAMsN,QAAQoG,OAAOlG,UAI1B2+B,GAAgB,SAACjuD,GACrB,IAAMwiB,EAAUZ,KAEdkD,EAGE9kB,EAHF8kB,QACAopC,EAEEluD,EAFFkuD,uBACAC,EACEnuD,EADFmuD,kCAGIjpC,EAAYJ,EAAQ5E,GAE1B,OACE,kBAAC,IAAM+C,SAAP,KACE,kBAACoW,GAAA,EAAD,KACE,yBAAK9X,UAAWiB,EAAQ6S,WACtB,kBAACgI,GAAA,EAAD,CAAMhI,WAAS,GACb,kBAACgI,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,yBAAK/b,UAAWiB,EAAQ+a,gBACtB,kBAAC7Z,GAAA,EAAD,CAAYC,QAAQ,KAAKpC,UAAWiB,EAAQ0O,aACzCpM,GAAWA,EAAQqM,MAEtB,kBAACzN,GAAA,EAAD,CAAYC,QAAQ,YAAYpC,UAAWiB,EAAQ8B,OAChDQ,GAAWA,EAAQR,SAI1B,kBAAC+Y,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,yBAAK/b,UAAWiB,EAAQsa,qBACtB,kBAAClZ,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACX5T,QAAS,kBACPsqC,GACE,EACAjpC,EACAqoC,IAGJxpC,MAAO,CAAEy1B,WAAY,WATvB,gBAeJ,kBAACnc,GAAA,EAAD,CAAMjR,MAAI,EAACkR,GAAI,GACb,yBAAK/b,UAAWiB,EAAQua,qBACtB,kBAACnZ,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACXlW,UAAWiB,EAAQmV,WACnB9T,QAAS,kBAAMqqC,EAAuB,gBAAKppC,MAH7C,QAOA,6BACA,kBAAClB,GAAA,EAAD,CACE6T,UAAW,kBAAC,KAAD,MACXlW,UAAWiB,EAAQwa,aACnBnZ,QAAS,kBACPsqC,GACE,EACAjpC,EACAqoC,KAPN,iBAuEDa,OAjDf,SAAuBpuD,GAAQ,IAE3B65C,EAIE75C,EAJF65C,kBACAd,EAGE/4C,EAHF+4C,UACAsV,EAEEruD,EAFFquD,mBACAF,EACEnuD,EADFmuD,kCAEI3rC,EAAUZ,KAEhB5kB,IAAMmB,WAAU,WACd07C,MAEC,IAEH,IAAMyU,EAAqC,SAAC7rC,EAAMyC,EAAWC,GAC3DgpC,EAAkC1rC,EAAMyC,EAAWC,IAG/C+oC,EAAyB,SAACppC,GAC9BupC,EAAmBvpC,IAGrB,OAAKi0B,EAKH,kBAAC,IAAM91B,SAAP,KACE,kBAAC,GAAD,MACA,kBAAC,GAAD,MACA,yBAAK1B,UAAWiB,EAAQsvB,wBACrBiH,GACCA,EAAU9hB,KAAI,SAACnS,GACb,OACE,kBAAC,GAAD,CACEA,QAASA,EACT4I,IAAK5I,EAAQ5E,GACbiuC,kCACEG,EAEFJ,uBAAwBA,SAjB7B,MCvGIpiC,oBAxBf,SAAyBC,EAAOC,GAC9B,MAAO,CACL+sB,UACEhtB,EAAMgtB,UAAUiB,cAAgBjuB,EAAMgtB,UAAUiB,aAAaxjB,UAInE,SAA4BlK,EAAUN,GACpC,MAAO,CACL6tB,kBAAmB,WACjBvtB,EAAStH,OAEXqpC,mBAAoB,SAACvpC,GACnBwH,EAAS5H,IAA8B,IACvC4H,EnMQiC,SAACxH,GAAD,MAAc,CACnDN,KAAMC,EAAM7hB,aACZkiB,WmMVaypC,CAAwBzpC,KAEnCqpC,kCAAmC,SAAC1rC,EAAMyC,EAAWC,GACnDmH,EACErH,GAA8CxC,EAAMyC,EAAWC,QAMxD2G,CAA6CsiC,IC5BtDxsC,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCwd,UAAW,CACThR,UAAWxM,EAAMQ,QAAQ,GACzB8T,aAActU,EAAMQ,QAAQ,QAkCjBksC,GA9BU,SAACxuD,GAAW,IAEjCqtD,EAIErtD,EAJFqtD,wBACAvuB,EAGE9+B,EAHF8+B,uBACAtY,EAEExmB,EAFFwmB,WACAwX,EACEh+B,EADFg+B,aAEIxb,EAAUZ,KAEhB,OACE,kBAAC,IAAMqB,SAAP,KACE,kBAAC,GAAD,MACA,yBAAK1B,UAAWiB,EAAQ8c,WACtB,kBAAC,GAAD,CACEE,iBAAkB6tB,EAClB7mC,WAAYA,EACZsY,uBAAwBA,EACxBW,WAAW,iBACXC,kBAAkB,mBAClBC,WAAY3B,EAAaC,KAAO,KAIpC,yBAAK1c,UAAWiB,EAAQsvB,wBACtB,kBAAC,GAAD,SCXOhmB,oBAlBf,SAAyBC,EAAOC,GAC9B,MAAO,CACLxF,WAAYuF,EAAMgtB,UAAUiB,aAAaxzB,WACzCwX,aAAcjS,EAAME,MAAMtuB,KAAKyuB,SAInC,SAA4BE,EAAUN,GACpC,MAAO,CACLqhC,wBAAyB,SAAC5qC,GACxB6J,EAAS/H,GAAgC9B,KAE3Cqc,uBAAwB,SAACtY,GACvB8F,ErMEyC,SAAC9F,GAAD,MAAiB,CAC9DhC,KAAMC,EAAMpiB,iCACZmkB,cqMJaioC,CAAgCjoC,QAKhCsF,CAA6C0iC,ICM7C1iC,oBAtBf,SAAyBC,EAAOC,GAC9B,MAAO,CACLC,MAAOF,EAAME,MAAMkvB,UAAYpvB,EAAME,MAAMkvB,SAAS3kB,UAIxD,SAA4BlK,EAAUN,GACpC,MAAO,CACL8uB,cAAe,WACbxuB,EAAS7F,OAEXs0B,gBAAiB,SAACp9C,GAChB2uB,EAASlG,IAA2B,IACpCkG,EAAS5F,GAAsB/oB,KAEjCs9C,uBAAwB,SAACx4B,EAAM9kB,GAC7B2uB,EAASrG,IAA6B,IACtCqG,EAAS5F,GAAsB/oB,QAKtBmuB,CAA6C+uB,IC8B7C6T,OAzDf,SAA0B1uD,GAAQ,IAE9BkkB,EAaElkB,EAbFkkB,WACAvmB,EAYEqC,EAZFrC,KACA0mB,EAWErkB,EAXFqkB,SACAy0B,EAUE94C,EAVF84C,qBACA5vB,EASElpB,EATFkpB,oBACAgxB,EAQEl6C,EARFk6C,WACA9kB,EAOEp1B,EAPFo1B,SACA2jB,EAME/4C,EANF+4C,UACAa,EAKE55C,EALF45C,iBACAC,EAIE75C,EAJF65C,kBACAb,EAGEh5C,EAHFg5C,kBACAC,EAEEj5C,EAFFi5C,mBACAjb,EACEh+B,EADFg+B,aAsBF,OAnBAhhC,IAAMmB,WAAU,WACVi3B,GAAgC,IAApBA,EAAStH,QAAgB5J,IACvC01B,IACAC,OAID,CAAC31B,IAaF,kBAAC,IAAMjB,SAAP,KACE,kBAAC,GAAD,CACEiB,WAAYA,EACZG,SAAUA,EACV6E,oBAAqBA,EACrB4vB,qBAAsBA,EACtBp2B,aAjBe,SAACwb,GACpBA,EAAEqJ,iBADwB,IAElB5pC,EAASqC,EAATrC,KACFmrB,EAAO,6BACRnrB,GADQ,IAEXwnB,OAAQk1B,IAEVH,EAAWpxB,IAWPlsB,MAAM,kBACNe,KAAMA,EACNy3B,SAAUA,EACV2jB,UAAWA,EACXC,kBAAmBA,EACnBC,mBAAoBA,EACpBC,mBAAmB,EACnBlb,aAAcA,MCVPlS,gBAlCS,SAACC,EAAOC,GAC9B,MAAO,CACL9H,WAAY6H,EAAMpuB,KAAKm8C,QAAQwB,qBAC/B39C,KAAMouB,EAAMpuB,KAAKm8C,QAAQ1tB,KACzB/H,SAAU0H,EAAMpuB,KAAKm8C,QAAQz1B,SAC7B+Q,SAAUrJ,EAAMqJ,SAASua,YAAYnZ,MACrCuiB,UAAWhtB,EAAMgtB,UAAUiB,aAAaxjB,MACxCwiB,kBAAmBjtB,EAAMqJ,SAASua,YAAY9d,UAC9ConB,mBAAoBltB,EAAMgtB,UAAUiB,aAAanoB,UACjDmM,aAAcjS,EAAME,MAAMtuB,KAAKyuB,SAIR,SAACE,EAAUN,GACpC,MAAO,CACL8sB,qBAAsB,SAACr2B,GACrB6J,EAASnG,GAA6B1D,KAExCyG,oBAAqB,SAAChqB,EAAO0lB,GAC3B0H,EAASjG,GAA8BnnB,EAAO0lB,KAEhDs1B,WAAY,SAACv8C,GAEX2uB,EAAShG,GAAmB3oB,EADf8pC,KAGfmS,iBAAkB,WAChBttB,EAAS9G,OAEXq0B,kBAAmB,WACjBvtB,EAAStH,UAKA8G,CAA6C4iC,ICvCtD9sC,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCwd,UAAW,CACThR,UAAWxM,EAAMQ,QAAQ,GACzB8T,aAActU,EAAMQ,QAAQ,QA6BjBqsC,GAzBO,SAAC3uD,GAAW,IACxB84C,EAA6D94C,EAA7D84C,qBAAsBha,EAAuC9+B,EAAvC8+B,uBAAwBtY,EAAexmB,EAAfwmB,WAChDhE,EAAUZ,KAEhB,OACE,kBAAC,IAAMqB,SAAP,KACE,kBAAC,GAAD,MAEA,yBAAK1B,UAAWiB,EAAQ8c,WACtB,kBAAC,GAAD,CACEE,iBAAkBsZ,EAClBtyB,WAAYA,EACZsY,uBAAwBA,EACxBW,WAAW,cACXC,kBAAkB,kBAItB,6BACE,kBAAC,GAAD,SCRO5T,oBAjBf,SAAyBC,EAAOC,GAC9B,MAAO,CACLxF,WAAYuF,EAAME,MAAMkvB,SAAS30B,eAIrC,SAA4B8F,EAAUN,GACpC,MAAO,CACL8sB,qBAAsB,SAACr2B,GACrB6J,EAASnG,GAA6B1D,KAExCqc,uBAAwB,SAACtY,GACvB8F,EAAS/F,GAA4BC,QAK5BsF,CAA6C6iC,I,oBCHtD/sC,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCiM,gBAAiB,CACfC,QAAS,QAEXC,KAAM,CACJC,SAAU,GAEZC,WAAY,CACVC,YAAatM,EAAMQ,QAAQ,IAE7B+L,aAAc,CACZH,SAAU,EACVF,QAAS,QAEXpxB,MAAO,CACL0xB,UAAW,EACXF,YAAa,IAEfG,gBAAiB,CACfD,UAAW,EACXE,WAAY,IAEdC,WAAY,CACVC,eAAgB,OAChBC,SAAU,OACVC,cAAe,YACf1N,MAAO,yBACP2N,cAAe,aAEjBC,cAAe,CACbd,QAAS,QAEXe,SAAU,CACRT,UAAW,GACXF,YAAa,GACbO,SAAU,IAEZK,mBAAoB,GACpBC,OAAQ,CACNC,WACE,oFAEJC,aAAc,CACZjO,MAAOY,EAAMsN,QAAQC,SAASC,MAEhC6D,QAAS,CACPwJ,YAAa,EACboT,aAAc,GAEhBxgB,YAAa,CACXpN,MAAO,GACPqN,OAAQ,GACRxB,QAAS,eACTI,YAAa,QA8KFwgC,GA1KA,SAAC5uD,GAAW,IAAD,EACQhD,IAAMQ,SAAS,MADvB,mBACjBkyB,EADiB,KACPC,EADO,KAElBlN,EAAOmN,QAAQF,GAFG,EAUpBxyB,IALFO,EALsB,EAKtBA,gBACA2B,EANsB,EAMtBA,kBACAG,EAPsB,EAOtBA,OACAxB,EARsB,EAQtBA,QACAJ,EATsB,EAStBA,KAIAkxD,EAIE7uD,EAJF6uD,WACAzqC,EAGEpkB,EAHFokB,iBACAwM,EAEE5wB,EAFF4wB,gBACA7N,EACE/iB,EADF+iB,gBAEIP,EAAUZ,KAEhB5kB,IAAMmB,WAAU,WACdyyB,EAAgBjzB,KACf,CAACizB,EAAiBjzB,IAmBrB,OAAII,IAAYJ,EACP,sCAGP,kBAAC,IAAMslB,SAAP,KACE,kBAAC,GAAD,MACA,kBAAC,GAAD,MAEA,yBAAK1B,UAAWiB,EAAQuL,iBACtB,kBAAC+C,GAAA,EAAD,CAAQ9O,SAAS,QAAQT,UAAWiB,EAAQyM,QAC1C,kBAAC,GAAD,KACE,kBAAC8B,GAAA,EAAD,CAASxP,UAAWiB,EAAQ2Q,SAC1B,yBAAK5R,UAAWiB,EAAQ6L,cACtB,yBACE2C,IAAI,oEACJC,IAAI,eACJ1P,UAAWiB,EAAQ+M,cAErB,kBAAC7L,GAAA,EAAD,CAAYC,QAAQ,KAAKpC,UAAWiB,EAAQ5lB,OAA5C,WAICa,GACC,yBAAK8jB,UAAWiB,EAAQssC,eACtB,kBAACC,GAAA,EAAD,CACE7vD,MAAO2vD,EACPzvB,SAnCC,SAAC3W,EAAOumC,GAC3BhvD,EAAMivD,yBAAyBD,IAmCbztC,UAAWiB,EAAQ0sC,SACnBzhC,aAAW,sBACX0hC,kBAAmB,CACjBprC,MAAO,CAAEC,gBAAiB,WAG5B,kBAACorC,GAAA,EAAD,CACEz5B,MAAM,YACNzV,GAAG,eACHqB,UAAWiB,EAAQ6sC,UACnBnwD,MAAO,IAET,kBAACkwD,GAAA,EAAD,CACEz5B,MAAM,WACNzV,GAAG,cACHqB,UAAWiB,EAAQ6sC,UACnBnwD,MAAO,IAET,kBAACkwD,GAAA,EAAD,CACEz5B,MAAM,QACNzV,GAAG,UACHqB,UAAWiB,EAAQ6sC,UACnBnwD,MAAO,IAET,kBAACkwD,GAAA,EAAD,CACEz5B,MAAM,WACNzV,GAAG,cACHqB,UAAWiB,EAAQ6sC,UACnBnwD,MAAO,OAOjB,yBAAKqiB,UAAWiB,EAAQsM,eACtB,yBAAKvN,UAAWiB,EAAQuM,UAAWpxB,EAAKwzB,MAExC,yBAAK5P,UAAWiB,EAAQwM,qBACpBvxB,GACA,kBAACmmB,GAAA,EAAD,CACE1C,MAAM,UACN2C,QAAS,kBAAMzkB,EAAkB,MAFnC,UAQF,kBAAC,IAAM6jB,SAAP,KACE,kBAACuK,GAAA,EAAD,CACEC,aAAW,mBACXvM,MAAM,UACN2C,QA5FD,SAAC4E,GAClBkH,EAAYlH,EAAM2I,gBA4FAlR,GAAG,mBAEH,kBAAC,KAAD,CACEgB,MAAM,UACNK,UAAWiB,EAAQ2M,gBAGtB1xB,EACC,kBAAC4zB,GAAA,EAAD,CACEnR,GAAG,cACHwP,SAAUA,EACV5C,aAAc,CACZC,SAAU,MACVC,WAAY,SAEdsE,aAAW,EACXC,gBAAiB,CACfxE,SAAU,MACVC,WAAY,SAEdvK,KAAMA,EACNS,QAtHE,WACtByM,EAAY,QAuHQ,kBAAC6B,GAAA,EAAD,CACE3N,QA7GU,WAChC8L,EAAY,MACZvL,KA4GsBlE,GAAG,oBAFL,mBAMA,kBAACsR,GAAA,EAAD,CACE3N,QAAS,kBAAMtkB,KACf2gB,GAAG,oBAFL,WAOA,UAMb6C,GAAmB,kBAACM,GAAA,EAAD,UCjNfyI,oBAxBf,SAAyBC,EAAOC,GAC9B,MAAO,CACL6iC,WAAY9iC,EAAM6B,QAAQihC,WAC1B9rC,gBACEgJ,EAAMqJ,SAASua,YAAY9d,WAC3B9F,EAAMgtB,UAAUiB,aAAanoB,WAC7B9F,EAAME,MAAMkvB,SAAStpB,cAI3B,SAA4BvF,EAAUN,GACpC,MAAO,CACLijC,yBAA0B,SAACD,GACzB1iC,EhMJwC,SAAC0iC,GAAD,MAAe,CAC3DxqC,KAAMC,EAAM9hB,2BACZqsD,YgMEaM,CAA+BN,KAE1C5qC,iBAAkB,WAChBkI,EAAStG,IAAiC,KAE5C4K,gBAAiB,SAACjzB,GAChB2uB,EAASpG,GAAwBvoB,QAKxBmuB,CAA6C8iC,IC5BtDhtC,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCuT,UAAW,CACTQ,aAAa,aAAD,OAAe/T,EAAMsN,QAAQ0G,UAAUxC,SACnDC,QAAS,mBACTvF,QAAS,OACT+H,eAAgB,iBAElBP,OAAQ,CACNtU,MAAO,OAETquC,UAAW,CACTvhC,QAAS,QAEXgI,QAAS,CACP9U,MAAO,UAETF,QAAS,CACP0U,WAAY,IACZO,YAAa,SACbC,UAAW,SACXC,WAAY,SACZvH,cAAe,SACfwH,aAAc,GAEhBnV,WAAY,CACVyU,WAAY,IACZO,YAAa,SACbC,UAAW,SACXC,WAAY,SACZvH,cAAe,SACfwH,aAAc,GAEhBC,YAAa,GACbC,cAAe,OAgFFk5B,GAjEmB,SAACxvD,GACjC,IAAMwiB,EAAUZ,KAGd4U,GAUEx2B,EAXFy2B,WAWEz2B,EAVFw2B,OAOAi5B,GAGEzvD,EATF02B,mBASE12B,EARF22B,UAQE32B,EAPF42B,WAOE52B,EANF62B,cAME72B,EALF82B,UAKE92B,EAJF+2B,SAIE/2B,EAHFyvD,eAGEzvD,EAFF0vD,gBAEE1vD,EADFunB,OAGF,OACE,kBAAC,IAAMtE,SAAP,KACGuT,GACCA,EAAMS,KAAI,SAAC7K,EAAMzL,GACf,OACE,yBAAKY,UAAWiB,EAAQ6S,UAAW3H,IAAK/M,GACtC,yBAAKY,UAAWiB,EAAQ6T,aACtB,kBAAC3S,GAAA,EAAD,CAAYC,QAAQ,KAAKpC,UAAWiB,EAAQxB,SACzCoL,EAAKujC,YAER,kBAACjsC,GAAA,EAAD,CAAYC,QAAQ,YAAYpC,UAAWiB,EAAQvB,YAChDmL,EAAKwjC,cAAgB,GAAKxjC,EAAKyjC,aAAe,EAC7C,6BACE,0BACEtuC,UAAS,UACgB,IAAvB6K,EAAKwjC,cAAsBptC,EAAQ+sC,UAAY,KAGhDnjC,EAAKwjC,cALR,aAKiC,KAEjC,0BACEruC,UAAS,UACP6K,EAAKyjC,aAAe,EAAIrtC,EAAQgT,OAAS,KAG1CpJ,EAAKyjC,aALR,aASF,cAIN,yBAAKtuC,UAAWiB,EAAQ8T,eACtB,kBAACo2B,GAAA,EAAD,CACElnB,KAAI,6BAAwBpZ,EAAKqjC,IACjCpwB,OAAO,SACP9d,UAAWiB,EAAQmqC,mBAHrB,uBC5FV/qC,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvC8V,OAAQ,CACNrE,QAAS,GACTlR,OAAQ,IAEVwV,eAAgB,CACd7V,SAAU,WACVkR,KAAM,IAER4E,UAAW,CACT9V,SAAU,YAEZ+V,WAAY,CACVzJ,WAAY,EACZtM,SAAU,WACVC,KAAM,GACNiR,IAAK,GAEP8E,kBAAmB,CACjBhK,QAAS,OACTM,UAAW,IAEb2J,SAAU,CACR9V,MAAO,QAET+V,uBAAwB,CACtBlK,QAAS,OACTmK,WAAY,SACZpC,eAAgB,SAChBzH,UAAW,GAEb8J,cAAe,CACblJ,WAAY,UACZhO,MAAO,QACPiB,MAAO,IACPqN,OAAQ,GACR,UAAW,CACTN,WAAY,QACZhO,MAAO,UACPmX,OAAQ,sBAGZC,UAAW,CACT3J,SAAU,GACV2G,UAAW,SACXpU,MAAO,UACPkV,aAAc,OA6GH05B,OAzGf,SAAqC9vD,GACnC,IAAMwiB,EAAUZ,KAEdsD,EAKEllB,EALFklB,UACA6qC,EAIE/vD,EAJF+vD,yBACAt3B,EAGEz4B,EAHFy4B,UACA3E,EAEE9zB,EAFF8zB,yBACA4E,EACE14B,EADF04B,2BAGEpG,EAASmG,EAEbz7B,IAAMmB,WACJ,WACM+mB,GACF6qC,EAAyB7qC,KAK7B,CAACA,IAGCoN,EAAOxE,OAAS,IAElBwE,EAASA,EAAOsG,QACd,SAACnQ,GAAD,OAAWA,EAAMonC,aAAe,GAAKpnC,EAAMmnC,cAAgB,MAI/D,IAAII,EAAe,EACb72B,EAAiB7G,EAAO29B,QAC5B,SAACC,EAAKC,GAAN,OAAeD,EAAMC,EAAKP,gBAC1BI,GAEFA,EAAe,EACf,IAAM52B,EAAgB9G,EAAO29B,QAC3B,SAACC,EAAKC,GAAN,OAAeD,EAAMC,EAAKN,eAC1BG,GAYF,OACE,kBAAC,IAAM/sC,SAAP,KACE,kBAACoW,GAAA,EAAD,CAAO9X,UAAWiB,EAAQoV,QACxB,kBAAC,IAAM3U,SAAP,KACE,wBAAI1B,UAAWiB,EAAQqV,gBACrB,kBAAC,KAAD,CAAetW,UAAWiB,EAAQsV,YAClC,0BAAMvW,UAAWiB,EAAQuV,YAAzB,WAGF,yBAAKxW,UAAWiB,EAAQwV,mBACtB,yBAAKzW,UAAWiB,EAAQyV,UACtB,kBAAC,GAAD,CAAmBxC,MAAO0D,EAAgBxD,MAAM,cAElD,yBAAKpU,UAAWiB,EAAQyV,UACtB,kBAAC,GAAD,CACExC,MAAO2D,EACPzD,MAAM,UACN3S,SAAUoW,EAAgB,MAIhC,kBAAC,GAAD,CACE5C,MAAOlE,EACPsE,WAAW,cACXC,cAAe,KACfF,UAAU,OACVG,UAAU,mBACV24B,cAAc,WACdC,gBAAgB,aAChBh5B,mBAtCiB,SAACtK,GAC1B0H,EAAyBS,GACzBmE,EAA2BtM,MAuCF,IAAlBkG,EAAOxE,OACN,uBAAGvM,UAAWiB,EAAQ8V,WAAtB,cACE,SCvIR1W,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCoS,MAAO,CACLX,QAAS,GACTlR,OAAQ,IAEVwV,eAAgB,CACd7V,SAAU,WACVkR,KAAM,IAER4E,UAAW,CACT9V,SAAU,YAEZ+V,WAAY,CACVzJ,WAAY,EACZtM,SAAU,WACVC,KAAM,GACNiR,IAAK,GAEP8E,kBAAmB,CACjBhK,QAAS,OACTM,UAAW,IAEb2J,SAAU,CACR9V,MAAO,QAET+V,uBAAwB,CACtBlK,QAAS,OACTmK,WAAY,SACZpC,eAAgB,SAChBzH,UAAW,GAEb8J,cAAe,CACblJ,WAAY,UACZhO,MAAO,QACPiB,MAAO,IACPqN,OAAQ,GACR,UAAW,CACTN,WAAY,QACZhO,MAAO,UACPmX,OAAQ,sBAGZC,UAAW,CACT3J,SAAU,GACV2G,UAAW,SACXpU,MAAO,UACPkV,aAAc,OAkHHg6B,OA9Gf,SAAuCpwD,GACrC,IAAMwiB,EAAUZ,KAGdsD,EAOEllB,EAPFklB,UACAmrC,EAMErwD,EANFqwD,iCACAC,EAKEtwD,EALFswD,0BACA75B,EAIEz2B,EAJFy2B,WACA3C,EAGE9zB,EAHF8zB,yBACA8F,EAEE55B,EAFF45B,4BAIE1H,EAFAlyB,EADF65B,cAKF78B,IAAMmB,WACJ,WACM+mB,IACFmrC,EAAiCnrC,GACjCorC,EAA0BprC,MAI9B,CAACA,IAGCgN,EAAQpE,OAAS,IAEnBoE,EAAUA,EAAQ0G,QAChB,SAACvP,GAAD,OAAYA,EAAOwmC,aAAe,GAAKxmC,EAAOumC,cAAgB,MAIlE,IAAII,EAAe,EACbh2B,EAAkB9H,EAAQ+9B,QAC9B,SAACC,EAAKC,GAAN,OAAeD,EAAMC,EAAKP,gBAC1BI,GAEFA,EAAe,EACf,IAAM/1B,EAAiB/H,EAAQ+9B,QAC7B,SAACC,EAAKC,GAAN,OAAeD,EAAMC,EAAKN,eAC1BG,GAYF,OACE,kBAAC,IAAM/sC,SAAP,KACE,kBAACoW,GAAA,EAAD,CAAO9X,UAAWiB,EAAQ0R,OACxB,wBAAI3S,UAAWiB,EAAQqV,gBACrB,kBAAC,KAAD,CAActW,UAAWiB,EAAQsV,YACjC,0BAAMvW,UAAWiB,EAAQuV,YAAzB,aAGF,yBAAKxW,UAAWiB,EAAQwV,mBACtB,yBAAKzW,UAAWiB,EAAQyV,UACtB,kBAAC,GAAD,CAAmBxC,MAAOuE,EAAiBrE,MAAM,cAEnD,yBAAKpU,UAAWiB,EAAQyV,UACtB,kBAAC,GAAD,CACExC,MAAOwE,EACPtE,MAAM,UACN3S,SAAUiX,EAAiB,MAKjC,kBAAC,GAAD,CACExD,WAAYA,EACZD,MAAOtE,EACP3K,OAAO,WACPqP,WAAW,gBACXC,cAAc,aACdF,UAAU,SACVG,UAAU,iBACVC,SAAS,WACT04B,cAAc,WACdC,gBAAgB,aAChBh5B,mBAzCmB,SAACtK,GAC1B0H,EAAyBS,GACzBqF,EAA4BxN,MA0CJ,IAAnB8F,EAAQpE,OACP,uBAAGvM,UAAWiB,EAAQ8V,WAAtB,cACE,QC3IN1W,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCoS,MAAO,CACLX,QAAS,GACTlR,OAAQ,IAEVwV,eAAgB,CACd7V,SAAU,WACVkR,KAAM,IAER4E,UAAW,CACT9V,SAAU,YAEZ+V,WAAY,CACVzJ,WAAY,EACZtM,SAAU,WACVC,KAAM,GACNiR,IAAK,GAEP8E,kBAAmB,CACjBhK,QAAS,OACTM,UAAW,IAEb2J,SAAU,CACR9V,MAAO,QAETkT,UAAW,CACTQ,aAAa,aAAD,OAAe/T,EAAMsN,QAAQ0G,UAAUxC,SACnDC,QAAS,mBACTvF,QAAS,OACT+H,eAAgB,iBAElB/U,QAAS,CACP0U,WAAY,KAEdW,YAAa,CACXrI,QAAS,OACT+H,eAAgB,gBAChB5T,MAAO,QAETouC,UAAW,CACTpuC,MAAO,QAETmU,cAAe,GACf4B,uBAAwB,CACtBlK,QAAS,OACTmK,WAAY,SACZpC,eAAgB,SAChBzH,UAAW,GAEb8J,cAAe,CACblJ,WAAY,UACZhO,MAAO,QACPiB,MAAO,IACPqN,OAAQ,GACR,UAAW,CACTN,WAAY,QACZhO,MAAO,UACPmX,OAAQ,sBAGZC,UAAW,CACT3J,SAAU,GACV2G,UAAW,SACXpU,MAAO,UACPkV,aAAc,GAEhByE,aAAc,CACZxY,OAAQ,EACRiM,UAAW,GAEbrN,WAAY,CACVyU,WAAY,IACZO,YAAa,SACbC,UAAW,SACXC,WAAY,SACZvH,cAAe,SACfwH,aAAc,OA2GHo6B,OAvGf,SAAwCxwD,GACtC,IAAMwiB,EAAUZ,KAGd6uC,EAIEzwD,EAJFywD,4BACAvrC,EAGEllB,EAHFklB,UACA8V,EAEEh7B,EAFFg7B,aAIExI,GAFAxyB,EADF8zB,yBAGckH,GAEhBh+B,IAAMmB,WACJ,WACM+mB,GACFurC,EAA4BvrC,KAKhC,CAACA,IAGCsN,EAAU1E,OAAS,IACrB0E,EAAYA,EAAUoG,QAAO,SAACxM,GAAD,OAAUA,EAAKqJ,MAAQ,MAGtD,IACMi7B,EAAal+B,EAAUy9B,QAC3B,SAACC,EAAKC,GAAN,OAAeD,EAAMC,EAAK16B,QAFT,GAUnB,OACE,kBAAC4D,GAAA,EAAD,CAAO9X,UAAWiB,EAAQ0R,OACxB,kBAAC,IAAMjR,SAAP,KACE,wBAAI1B,UAAWiB,EAAQqV,gBACrB,kBAAC,KAAD,CAAatW,UAAWiB,EAAQsV,YAChC,0BAAMvW,UAAWiB,EAAQuV,YAAzB,cAGF,yBAAKxW,UAAWiB,EAAQwV,mBACtB,yBAAKzW,UAAWiB,EAAQyV,UACtB,kBAAC,GAAD,CAAmBxC,MAAOi7B,EAAY/6B,MAAM,wBAI/CnD,GACCA,EAAUyE,KAAI,SAACpP,EAAUlH,GACvB,OAAIA,EAAQ,EACH,KAIP,yBAAKY,UAAWiB,EAAQ6S,UAAW3H,IAAK/M,GACtC,yBAAKY,UAAWiB,EAAQ+tC,WACtB,yBAAKhvC,UAAWiB,EAAQ6T,aACtB,kBAAC3S,GAAA,EAAD,CAAYC,QAAQ,KAAKpC,UAAWiB,EAAQxB,SACzC6G,EAAS8nC,YAEZ,yBAAKpuC,UAAWiB,EAAQ8T,eACtB,kBAACo2B,GAAA,EAAD,CACElnB,KAAI,6BAAwB3d,EAAShC,UACrCwZ,OAAO,SACP9d,UAAWiB,EAAQmqC,mBAHrB,kBASJ,kBAACjpC,GAAA,EAAD,CACEC,QAAQ,YACRpC,UAAWiB,EAAQvB,YAElB4G,EAAS4N,MAJZ,sBC9JZ7T,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCma,gBAAiB,CACfjO,QAAS,QAEXkO,MAAO,GACPC,UAAW,CACTha,MAAO,OAETia,UAAW,CACTja,MAAO,WA8DIwuC,OA1Df,SAA+B3wD,GAC7B,IAAMwiB,EAAUZ,KAGdsD,EAYEllB,EAZFklB,UACA6qC,EAWE/vD,EAXF+vD,yBACAz9B,EAUEtyB,EAVFsyB,OACAwB,EASE9zB,EATF8zB,yBACA4E,EAQE14B,EARF04B,2BACAk4B,EAOE5wD,EAPF4wD,gCACAN,EAMEtwD,EANFswD,0BACAG,EAKEzwD,EALFywD,4BACAv+B,EAIElyB,EAJFkyB,QACAM,EAGExyB,EAHFwyB,UACAoH,EAEE55B,EAFF45B,4BACAC,EACE75B,EADF65B,cAGF,OACE,kBAAC,IAAM5W,SAAP,KACE,yBAAK1B,UAAWiB,EAAQyZ,iBACtB,yBAAK1a,UAAWiB,EAAQ2Z,WACtB,yBAAK5a,UAAWiB,EAAQ0Z,OACtB,kBAAC,GAAD,CACEhX,UAAWA,EACX6qC,yBAA0BA,EAC1Bt3B,UAAWnG,EACXwB,yBAA0BA,EAC1B4E,2BAA4BA,KAGhC,yBAAKnX,UAAWiB,EAAQ0Z,OACtB,kBAAC,GAAD,CACElB,aAAcxI,EACdtN,UAAWA,EACX4O,yBAA0BA,EAC1B28B,4BAA6BA,MAInC,yBAAKlvC,UAAWiB,EAAQ4Z,WACtB,yBAAK7a,UAAWiB,EAAQ0Z,OACtB,kBAAC,GAAD,CACEhX,UAAWA,EACXmrC,iCAAkCO,EAClCN,0BAA2BA,EAC3B75B,WAAYvE,EACZ4B,yBAA0BA,EAC1B8F,4BAA6BA,EAC7BC,cAAeA,SCjBd/N,oBAtCf,SAAyBC,EAAOC,GAC9B,MAAO,CACL9G,UAAW6G,EAAME,MAAMtuB,KAAKyuB,KAAKlH,UACjCoN,OAAQvG,EAAMuG,OAAOu+B,gBAAgBr6B,MACrCtE,QAASnG,EAAMmG,QAAQ4+B,iBAAiBt6B,MACxChE,UAAWzG,EAAMyG,UAAUu+B,mBAAmBv6B,MAC9CqD,cAAe9N,EAAMmG,QAAQ8+B,uBAAuBx6B,UAIxD,SAA4BlK,EAAUN,GACpC,MAAO,CACL+jC,yBAA0B,SAAC7qC,GACzBoH,E7MrB0C,SAACpH,GAAD,MAAgB,CAC9DV,KAAMC,EAAMhd,6BACZyd,a6MmBa+rC,CAAiC/rC,KAE5C0rC,gCAAiC,SAAC1rC,GAChCoH,E5MdiD,SAACpH,GAAD,MAAgB,CACrEV,KAAMC,EAAM5Z,qCACZqa,a4MYagsC,CAAwChsC,KAEnDorC,0BAA2B,SAACprC,GAC1BoH,E5MtB2C,SAACpH,GAAD,MAAgB,CAC/DV,KAAMC,EAAMja,8BACZ0a,a4MoBaisC,CAAkCjsC,KAE7CurC,4BAA6B,SAACvrC,GAC5BoH,E9M9B6C,SAACpH,GAAD,MAAgB,CACjEV,KAAMC,EAAM1e,gCACZmf,a8M4BaksC,CAAoClsC,KAE/C4O,yBAA0B,SAAC/N,GACzBuG,EAASxG,GAAiCC,KAE5C2S,2BAA4B,SAACjQ,GAC3B6D,EAAS5D,IAA2B,IACpC4D,EAAS1D,GAAuBH,KAElCmR,4BAA6B,SAACvQ,GAC5BiD,EAAShD,IAA4B,IACrCgD,EAAS9C,GAAwBH,QAKxByC,CAGb6kC,ICpDI/uC,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCwd,UAAW,CACThR,UAAWxM,EAAMQ,QAAQ,GACzB8T,aAActU,EAAMQ,QAAQ,IAE9B+uC,YAAa,CACX/7B,UAAW,SACXhH,UAAW,SAeAgjC,GAXW,SAACtxD,GACzB,IAAMwiB,EAAUZ,KAEhB,OACE,kBAAC,IAAMqB,SAAP,KACE,yBAAK1B,UAAWiB,EAAQ8c,YACxB,kBAAC,GAAD,QCTSxT,oBARf,SAAyBC,EAAOC,GAC9B,MAAO,MAGT,SAA4BM,EAAUN,GACpC,MAAO,KAGMF,CAA6CwlC,ICDtD1vC,GAAYC,cAAW,SAACC,GAAD,MAAY,CACvCuR,QAAS,CACP/E,UAAW,QAqDAijC,GAjDG,SAACvxD,GAAW,IAMxBwxD,EALI3C,EAA6B7uD,EAA7B6uD,WAAY7wB,EAAiBh+B,EAAjBg+B,aACdxb,EAAUZ,KAEZ6vC,GAAc,EAGlB,OAAQ5C,GACN,KAAK,EACH2C,EAAY,kBAAC,GAAD,MACZ,MACF,KAAK,EACHA,EAAY,kBAAC,GAAD,MACZ,MACF,KAAK,EACHA,EAAY,kBAAC,GAAD,MACZ,MACF,KAAK,EACHA,EAAY,kBAAC,GAAD,MACZC,EAC4B,MAA1BzzB,EAAa9Y,WAAgD,IAA3B8Y,EAAa9Y,UAKrD,OACE,kBAAC,IAAMjC,SAAP,KACE,kBAAC,GAAD,MAEA,yBAAK1B,UAAU,OACb,gCACE,kBAAC,GAAD,OAEF,kBAAC,GAAD,KACE,yBAAKA,UAAWiB,EAAQ6Q,SACrBo+B,EACC,wBAAIlwC,UAAWiB,EAAQmoC,oBAAvB,2CAIA6G,OC1CC1lC,oBAXf,SAAyBC,EAAOC,GAC9B,MAAO,CACL6iC,WAAY9iC,EAAM6B,QAAQihC,WAC1B7wB,aAAcjS,EAAME,MAAMtuB,KAAKyuB,SAInC,SAA4BE,EAAUN,GACpC,MAAO,KAGMF,CAA6CylC,ICP5D,SAASG,GAAS1xD,GAAQ,IAAD,EACG9C,IAAlBa,EADe,EACfA,QAASJ,EADM,EACNA,KACTg0D,EAA+B3xD,EAA/B2xD,iBAAkBC,EAAa5xD,EAAb4xD,SAM1B,OALA50D,IAAMmB,WAAU,WACdwzD,EAAiBh0D,EAAK2mB,SAErB,CAAC3mB,KAEAI,GAAYJ,GAASi0D,EAIrBA,IAAaC,EACR,kBAAC,GAAD,MAEPD,IAAaC,GACbD,IAAaC,GACbD,IAAaC,EAEN,kBAAC,GAAD,WALF,EALE,2CAkBXH,GAASjgC,aAAe,GAITigC,UClBAhgC,eACb5F,aAhBsB,SAACC,EAAOC,GAE9B,MAAO,CACL4lC,UAFW7lC,EAAME,MAAMtuB,MAAQouB,EAAME,MAAMtuB,KAAKyuB,MAEjC6R,SAIQ,SAAC3R,EAAUN,GACpC,MAAO,CACL2lC,iBAAkB,SAACtsC,GACjBiH,EAASlH,GAAyBC,QAMtCyG,CAA6C4lC,KCoBhCI,GApCS,SAAC9xD,GAAW,IAC1BrC,EAAST,IAATS,KACAizB,EAAkD5wB,EAAlD4wB,gBAAiBf,EAAiC7vB,EAAjC6vB,WAAY8hC,EAAqB3xD,EAArB2xD,iBAuBrC,OArBA30D,IAAMmB,WACJ,WACEyyB,EAAgBjzB,GAChBg0D,EAAiBh0D,EAAK2mB,SAIxB,CAAC3mB,IAeAkyB,GAAcA,EAAWoO,OAAS4zB,GACnChiC,EAAWoO,OAAS4zB,GACpBhiC,EAAWoO,OAAS4zB,EAEb,kBAAC,GAAD,CAAcnhC,mBAAmB,IAGnC,qECRM5E,oBArBf,SAAyBC,EAAOC,GAC9B,MAAO,CACL6D,WAAY9D,EAAME,MAAMtuB,KAAKyuB,SAIjC,SAA4BE,EAAUN,GACpC,MAAO,CACL2lC,iBAAkB,SAACtsC,GACjBiH,EAASlH,GAAyBC,KAEpCuL,gBAAiB,SAACjzB,GAChB2uB,EAASpG,GAAwBvoB,KAEnCo0D,yBAA0B,SAACr/B,EAAQ7M,GAEjCyG,ExNgC0C,SAACxD,GAAD,MAAc,CAC5DtE,KAAMC,EAAM/jB,6BACZooB,WwNlCakpC,CADO,CAAEt/B,SAAQ7M,kBAMjBiG,CAA6CgmC,ICE7CG,OAxBf,WAGE,OAFoB/0D,IAAZa,QAGC,2CAIP,kBAAC,IAAMklB,SAAP,KACE,kBAACivC,EAAA,EAAD,MAEA,kBAAC,IAAD,KACE,kBAAC,EAAD,CAAcvyD,KAAK,QAAQD,UAAWgyD,KACtC,kBAAC,EAAD,CACE/xD,KAAK,+BACLD,UAAWoyD,KAGb,kBAAC,IAAD,CAAUK,KAAK,IAAIC,GAAG,aCfVxiC,QACW,cAA7BpzB,OAAOK,SAASw1D,UAEe,UAA7B71D,OAAOK,SAASw1D,UAEhB71D,OAAOK,SAASw1D,SAASC,MACvB,2D,8CCgDN,I,YAOeC,iBAAa,sBAEvB9tC,EAAMxkB,cA/DX,SACE8rB,EADF,GAOG,IAHcU,EAGf,EAJE3D,QACEwE,QAAWb,KAIT+lC,EAAYzmC,EAAMuB,QAAQO,MAAM0rB,QAGtC,OAFAiZ,EAAU3tB,KAAKpY,GAEXV,EAAMuB,QAAQZ,QACT,6BACFX,GADL,IAEEuB,QAAQ,6BACHvB,EAAMuB,SADJ,IAELO,MAAO2kC,EACP9lC,SAAS,MAIN,6BACFX,GADL,IAEEuB,QAAQ,6BACHvB,EAAMuB,SADJ,IAELO,MAAO2kC,EACP9lC,SAAS,SAmCW,gBAGvBjI,EAAMvkB,cAhCX,SAAqB6rB,GACnB,OAAO,6BACFA,GADL,IAEEuB,QAAQ,6BACHvB,EAAMuB,SADJ,IAELZ,SAAS,SAwBa,gBAIvBjI,EAAMtkB,cAvBX,SAAqB4rB,GACnB,IAAM0mC,EAAW1mC,EAAMuB,QAAQO,MAAM0rB,MAAM,GAC3C,OAAO,6BACFxtB,GADL,IAEEuB,QAAQ,6BACHvB,EAAMuB,SADJ,IAELO,MAAO4kC,EACP/lC,QAAS+lC,EAAS3kC,OAAS,SAYL,gBAKvBrJ,EAAM9hB,4BAZoB,SAACopB,EAAD,GAA0B,IAAhBijC,EAAe,EAAfA,SACvC,OAAO,6BACFjjC,GADL,IAEE8iC,WAAYG,OAIY,IArEN,CACpB1hC,QAAS,CACPO,MAAO,GACPnB,SAAS,GAEXmiC,WAAY,I,SCmNC0D,iBAAa,mBAAC,GAExB9tC,EAAMthB,oBAnMa,SAAC4oB,EAAD,GAAsB,IAAZpuB,EAAW,EAAXA,KAChC,OAAO,6BACFouB,GADL,IAEEI,YAAY,6BACPJ,EAAMI,aADA,IAETC,KAAMzuB,SA4LgB,aAAC,GAIxB8mB,EAAM5hB,6BA3LsB,SAACkpB,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACzC,OAAO,6BACFsJ,GADL,IAEEG,yBAA0BzJ,OAoLF,aAAC,GAMxBgC,EAAM1hB,oCAtL4B,SAACgpB,GACtC,OAAO,6BACFA,GADL,IAEEM,sBAAsB,6BACjBN,EAAMM,uBADU,IAEnBhI,UAAU,SA2KY,aAAC,GAOxBI,EAAMzhB,sCA7K8B,SAAC+oB,GACxC,OAAO,6BACFA,GADL,IAEEM,sBAAsB,gBACjBN,EAAMM,4BAkKa,aAAC,GAQxB5H,EAAMxhB,sCArK8B,SAAC8oB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACjD,OAAO,6BACFgK,GADL,IAEEM,sBAAsB,6BACjBN,EAAMM,uBADU,IAEnBtK,sBAwJsB,aAAC,GASxB0C,EAAMvhB,uCA5J+B,SAAC6oB,GACzC,OAAO,6BACFA,GADL,IAEEM,sBAAsB,6BACjBN,EAAMM,uBADU,IAEnBhI,UAAU,SA8IY,aAAC,GAWxBI,EAAMjgB,0BApJmB,SAACunB,GAC7B,OAAO,6BACFA,GADL,IAEEpuB,KAAK,6BACAouB,EAAMpuB,MADP,IAEFk0B,WAAW,SAoIW,aAAC,GAYxBpN,EAAMhgB,4BA3IqB,SAACsnB,EAAD,GAAsB,IAAZpuB,EAAW,EAAXA,KACxC,OAAO,6BACFouB,GADL,IAEEpuB,KAAK,6BACAouB,EAAMpuB,MADP,IAEFyuB,KAAMzuB,SA0HgB,aAAC,GAaxB8mB,EAAM/f,4BAlIqB,SAACqnB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACxC,OAAO,6BACFgK,GADL,IAEEpuB,KAAK,6BACAouB,EAAMpuB,MADP,IAEFokB,sBAgHsB,aAAC,GAcxB0C,EAAM9f,6BAzHsB,SAAConB,GAChC,OAAO,6BACFA,GADL,IAEEpuB,KAAK,6BACAouB,EAAMpuB,MADP,IAEFk0B,WAAW,SAsGW,aAAC,GAgBxBpN,EAAMtW,uBAjHgB,SAAC4d,GAC1B,OAAO,6BACFA,GADL,IAEEovB,SAAS,6BACJpvB,EAAMovB,UADH,IAENtpB,WAAW,SA4FW,aAAC,GAiBxBpN,EAAMrW,yBAxGkB,SAAC2d,EAAD,GAA0B,IAAhBovB,EAAe,EAAfA,SACrC,OAAO,6BACFpvB,GADL,IAEEovB,SAAS,6BACJpvB,EAAMovB,UADH,IAEN3kB,MAAO2kB,EACP3e,UAAW2e,SAiFW,aAAC,GAkBxB12B,EAAMpW,yBA9FkB,SAAC0d,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACrC,OAAO,6BACFgK,GADL,IAEEovB,SAAS,6BACJpvB,EAAMovB,UADH,IAENp5B,sBAuEsB,aAAC,GAmBxB0C,EAAMnW,0BArFmB,SAACyd,GAC7B,OAAO,6BACFA,GADL,IAEEovB,SAAS,6BACJpvB,EAAMovB,UADH,IAENtpB,WAAW,SA6DW,aAAC,GAqBxBpN,EAAMxW,8BA7EyB,SAAC8d,EAAD,GAA4B,IAAlBvF,EAAiB,EAAjBA,WAGxCksC,EAFQ3mC,EAAMovB,SAAS3e,UAED5D,QACxB,SAAC+5B,GAAD,OACGA,EAAExhC,MAAQwhC,EAAExhC,KAAK8R,cAAczkC,SAASgoB,IACxCmsC,EAAEruC,OAASquC,EAAEruC,MAAM2e,cAAczkC,SAASgoB,MAG/C,OAAO,6BACFuF,GADL,IAEEovB,SAAS,6BACJpvB,EAAMovB,UADH,IAEN30B,aACAgQ,MAAOk8B,SA0Ce,aAAC,GAsBxBjuC,EAAM9V,qBA3De,SAACod,EAAD,GAA+B,IAArB6mC,EAAoB,EAApBA,cAC9B3mC,EAAK,aAAOF,EAAMovB,SAAS3kB,OAC3Bq8B,EAAmB5mC,EAAM6mC,WAAU,SAACtG,GAAD,OAAOA,EAAEtsC,KAAO0yC,EAAc1yC,MAGrE,GAA4B,IAAzB0yC,EAAcztC,OAAa,CAG5B,IAAI4tC,EAAc9mC,EAAM6mC,WAAU,SAACt4B,GAAD,OAAOA,EAAEta,KAAO0yC,EAAc1yC,OAC3C,IAAjB6yC,GACF9mC,EAAM+mC,OAAOD,EAAa,QAGA,IAAtBF,EAGN5mC,EAAM4mC,GAAoBD,EAM1B3mC,EAAK,uBAAOA,GAAP,CAAc2mC,IAGrB,IAAMK,EAAchnC,EAAM2M,QAAO,SAAC4zB,GAAD,OAAoB,IAAbA,EAAErnC,UAE1C,OAAO,6BACF4G,GADL,IAEEovB,SAAS,6BACJpvB,EAAMovB,UADH,IAEN3kB,MAAOy8B,EACPz2B,UAAWy2B,SAKW,IAxNN,CACpB/mC,0BAA0B,EAC1BC,YAAa,CACXC,KAAM,IAERzuB,KAAM,CACJyuB,KAAM,GACNyF,WAAW,EACX9P,aAAc,IAEhBsK,sBAAuB,CACrBhI,UAAU,EACVtC,aAAc,IAEhBo5B,SAAU,CACR3kB,MAAO,GACPgG,UAAW,GACX3K,WAAW,EACX9P,aAAc,GACdyE,WAAY,MC0GD+rC,iBAAa,mBAAC,GAExB9tC,EAAM3W,yBA5GkB,SAACie,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACrC,OAAO,6BACFsJ,GADL,IAEE+tB,QAAQ,6BACH/tB,EAAM+tB,SADJ,IAELwB,qBAAsB74B,EACtB2J,KAAM,UAoGgB,aAAC,GAGxB3H,EAAM1W,uBAlGgB,SAACge,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACnC,OAAO,6BACFsJ,GADL,IAEE+tB,QAAQ,6BACH/tB,EAAM+tB,SADJ,IAELC,mBAAoBt3B,EACpB2J,KAAM,UAyFgB,aAAC,GAIxB3H,EAAMzW,yBAxFkB,SAAC+d,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACrC,OAAO,6BACFsJ,GADL,IAEE+tB,QAAQ,6BACH/tB,EAAM+tB,SADJ,IAELQ,qBAAsB73B,EACtB2J,KAAM,GACNrK,aAAc,UA6EQ,aAAC,GAMxB0C,EAAM/V,mBA9Ea,SAACqd,GACvB,OAAO,6BACFA,GADL,IAEE+tB,QAAQ,6BACH/tB,EAAM+tB,SADJ,IAELz1B,UAAU,SAmEY,aAAC,GAOxBI,EAAM9V,qBAtEe,SAACod,EAAD,GAA+B,IAArB6mC,EAAoB,EAApBA,cAClC,OAAO,6BACF7mC,GADL,IAEEpuB,KAAK,6BACAouB,EAAMpuB,MADP,IAEFyuB,KAAMwmC,SA0DgB,aAAC,GAQxBnuC,EAAM7V,qBA9De,SAACmd,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aAClC,OAAO,6BACFgK,GADL,IAEE+tB,QAAQ,6BACH/tB,EAAM+tB,SADJ,IAEL/3B,sBAiDsB,aAAC,GASxB0C,EAAM5V,sBAtDgB,SAACkd,GAC1B,OAAO,6BACFA,GADL,IAEE+tB,QAAQ,6BACH/tB,EAAM+tB,SADJ,IAELz1B,UAAU,SAwCY,aAAC,GAWxBI,EAAMjW,+BA9CuB,SAACud,EAAD,GAAuC,IAA7B7sB,EAA4B,EAA5BA,MAAO0lB,EAAqB,EAArBA,eAC3CjnB,EAAI,gBAAQouB,EAAM+tB,QAAQ1tB,MAehC,OAdIxH,IAAmBuhB,EAAgBxmB,UACrChiB,EAAKwzB,KAAOjyB,EACH0lB,IAAmBuhB,EAAgBvmB,WAC5CjiB,EAAK2mB,MAAQplB,EACJ0lB,IAAmBuhB,EAAgBrmB,UAC5CniB,EAAKsgC,KAAO/+B,EACH0lB,IAAmBuhB,EAAgBpmB,YAC5CpiB,EAAKkoB,SAAWqtC,SAASh0D,GAChB0lB,IAAmBuhB,EAAgBnmB,aAC5CriB,EAAKunB,UAAYguC,SAASh0D,GACjB0lB,IAAmBuhB,EAAgBtmB,gBAC5CliB,EAAK27C,SAAWp6C,GAGX,6BACF6sB,GADL,IAEE+tB,QAAQ,6BACH/tB,EAAM+tB,SADJ,IAEL1tB,KAAMzuB,SAegB,aAAC,GAaxB8mB,EAAMlW,WAvBM,SAACwd,EAAD,GAAsB,IAAZpuB,EAAW,EAAXA,KACzB,OAAO,6BACFouB,GADL,IAEE+tB,QAAQ,6BACH/tB,EAAM+tB,SADJ,IAEL1tB,KAAMzuB,SAKgB,IA7HN,CACpBm8C,QAAS,CACPwB,sBAAsB,EACtBvB,oBAAoB,EACpBO,sBAAsB,EACtBluB,KAAM,CACJ6R,KAAM,EACNpY,SAAU,GAEZxB,UAAU,EACVtC,aAAc,IAEhBpkB,KAAM,CACJyuB,KAAM,KACNyF,WAAW,EACX9P,aAAc,MCoFHwwC,iBAAa,mBAAC,GAExB9tC,EAAMpiB,kCA3F6B,SAAC0pB,EAAD,GAA4B,IAAlBvF,EAAiB,EAAjBA,WAG5C2sC,EAFYpnC,EAAMiuB,aAAaxd,UAED5D,QAChC,SAAC+5B,GAAD,OACGA,EAAExhC,MAAQwhC,EAAExhC,KAAK8R,cAAczkC,SAASgoB,IACxCmsC,EAAEruC,OAASquC,EAAEruC,MAAM2e,cAAczkC,SAASgoB,MAG/C,OAAO,6BACFuF,GADL,IAEEiuB,aAAa,6BACRjuB,EAAMiuB,cADC,IAEVxzB,aACAgQ,MAAO28B,SA2Ee,aAAC,GAIxB1uC,EAAMliB,2BA1EoB,SAACwpB,GAC9B,OAAO,6BACFA,GADL,IAEEiuB,aAAa,6BACRjuB,EAAMiuB,cADC,IAEVnoB,WAAW,SAiEW,aAAC,GAKxBpN,EAAMjiB,6BAjEsB,SAACupB,EAAD,GAA8B,IACvDqnC,EADsD,EAAnBpZ,aACJphB,QACnC,SAAC4zB,GAAD,OAAOA,EAAErnC,SAAWooC,KAEtB,OAAO,6BACFxhC,GADL,IAEEiuB,aAAa,6BACRjuB,EAAMiuB,cADC,IAEVxjB,MAAO48B,EACP52B,UAAW42B,SAmDW,aAAC,GAMxB3uC,EAAMhiB,6BApDsB,SAACspB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACzC,OAAO,6BACFgK,GADL,IAEEiuB,aAAa,6BACRjuB,EAAMiuB,cADC,IAEVj4B,sBAyCsB,aAAC,GAOxB0C,EAAM/hB,8BA3CuB,SAACqpB,GACjC,OAAO,6BACFA,GADL,IAEEiuB,aAAa,6BACRjuB,EAAMiuB,cADC,IAEVnoB,WAAW,SA+BW,aAAC,GASxBpN,EAAMviB,wBAnCkB,SAAC6pB,EAAD,GAAkC,IAAxBsnC,EAAuB,EAAvBA,iBACjCta,EAAS,aAAOhtB,EAAMiuB,aAAaxjB,OACnC88B,EAAsBva,EAAU+Z,WAClC,SAACtG,GAAD,OAAOA,EAAEtsC,KAAOmzC,EAAiBnzC,MAYnC,OAR6B,IAAzBozC,EACFva,EAAUua,GAAuBD,EAIjCta,EAAS,uBAAOA,GAAP,CAAkBsa,IAGtB,6BACFtnC,GADL,IAEEiuB,aAAa,6BACRjuB,EAAMiuB,cADC,IAEVxjB,MAAOuiB,EACPvc,UAAWuc,SAMW,IAnGN,CACpBiB,aAAc,CACZxjB,MAAO,GACPgG,UAAW,GACX3K,WAAW,EACX9P,aAAc,GACdyE,WAAY,MCwHD+rC,I,GAAAA,iBAAa,mBAAC,GAExB9tC,EAAMrkB,4BAzGqB,SAAC2rB,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACxC,OAAO,6BACFsJ,GADL,IAEEyhC,WAAW,6BACNzhC,EAAMyhC,YADD,IAERC,wBAAyBhrC,EACzB2J,KAAM,UAiGgB,aAAC,GAGxB3H,EAAMpkB,0BA/FmB,SAAC0rB,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACtC,OAAO,6BACFsJ,GADL,IAEEyhC,WAAW,6BACNzhC,EAAMyhC,YADD,IAERG,sBAAuBlrC,EACvB2J,KAAM,UAsFgB,aAAC,GAKxB3H,EAAM5iB,kCAtF8B,SAACkqB,EAAD,GAAuC,IAA7B7sB,EAA4B,EAA5BA,MAAO0lB,EAAqB,EAArBA,eAClDE,EAAO,gBAAQiH,EAAMyhC,WAAWphC,MAStC,OARIxH,IAAmBuhB,EAAgBrrB,KACrCgK,EAAQqM,KAAOjyB,EACN0lB,IAAmBuhB,EAAgBprB,MAC5C+J,EAAQR,MAAQplB,EACP0lB,IAAmBuhB,EAAgBnrB,QAC5C8J,EAAQ4mC,MAAQxsD,GAGX,6BACF6sB,GADL,IAEEyhC,WAAW,6BACNzhC,EAAMyhC,YADD,IAERphC,KAAMtH,SAmEgB,aAAC,GAOxBL,EAAM3iB,qCAtBX,SAA2CiqB,EAA3C,GAAgF,IAA5BtJ,EAA2B,EAA3BA,KAAMyC,EAAqB,EAArBA,UAAWC,EAAU,EAAVA,OACnE,OAAO,6BACF4G,GADL,IAEE+hC,4BAA4B,6BACvB/hC,EAAM+hC,6BADgB,IAEzBrrC,OACAV,aAAc,GACdmD,YACAb,UAAU,EACVc,gBAMsB,aAAC,GASxBV,EAAMxiB,sBAvEgB,SAAC8pB,GAC1B,OAAO,6BACFA,GADL,IAEEyhC,WAAW,6BACNzhC,EAAMyhC,YADD,IAERnpC,UAAU,SAyDY,aAAC,GAUxBI,EAAMviB,wBA/DkB,SAAC6pB,EAAD,GAAkC,IAAxBsnC,EAAuB,EAAvBA,iBACrC,OAAO,6BACFtnC,GADL,IAEEjH,QAAQ,6BACHiH,EAAMjH,SADJ,IAELsH,KAAMinC,SAgDgB,aAAC,GAWxB5uC,EAAMtiB,wBAvDkB,SAAC4pB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACrC,OAAO,6BACFgK,GADL,IAEEyhC,WAAW,6BACNzhC,EAAMyhC,YADD,IAERzrC,sBAuCsB,aAAC,GAYxB0C,EAAMriB,yBA/CmB,SAAC2pB,GAC7B,OAAO,6BACFA,GADL,IAEEyhC,WAAW,6BACNzhC,EAAMyhC,YADD,IAERnpC,UAAU,SA8BY,aAAC,GAcxBI,EAAM7hB,cAvCS,SAACmpB,EAAD,GAAyB,IAAfjH,EAAc,EAAdA,QAC5B,OAAO,6BACFiH,GADL,IAEEyhC,WAAW,6BACNzhC,EAAMyhC,YADD,IAERphC,KAAMtH,SAoBgB,IA9HN,CACpB0oC,WAAY,CACVC,yBAAyB,EACzBE,uBAAuB,EACvBvhC,KAAM,GACN/H,UAAU,EACVtC,aAAc,IAEhB+C,QAAS,CACPsH,KAAM,KACNyF,WAAW,EACX9P,aAAc,IAEhB+rC,4BAA6B,CAC3BrrC,MAAM,EACN4B,UAAU,EACVa,UAAW,EACXnD,aAAc,GACdoD,OAAQ,EACRiH,KAAM,MC6BV,I,oCAsLemmC,iBAAa,mBAAC,GAExB9tC,EAAMlkB,2BAjNoB,SAACwrB,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACvC,OAAO,6BACFsJ,GADL,IAEEggC,UAAU,6BACLhgC,EAAMggC,WADF,IAEPkB,uBAAwBxqC,EACxB2J,KAAM,UAyMgB,aAAC,GAGxB3H,EAAMjkB,yBAzLkB,SAACurB,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACrC,OAAO,6BACFsJ,GADL,IAEEggC,UAAU,6BACLhgC,EAAMggC,WADF,IAEPC,qBAAsBvpC,EACtB2J,KAAM,UAgLgB,aAAC,GAKxB3H,EAAMrjB,iCAhL6B,SAAC2qB,EAAD,GAAuC,IAA7B7sB,EAA4B,EAA5BA,MAAO0lB,EAAqB,EAArBA,eACjDe,EAAM,gBAAQoG,EAAMggC,UAAU3/B,MACpC,OAAQxH,GACN,KAAKuhB,EAAgBrrB,KACnB6K,EAAOwL,KAAOjyB,EACd,MACF,KAAKinC,EAAgBlrB,eACnB0K,EAAO8lC,cAAgBvsD,EACvB,MACF,KAAKinC,EAAgBprB,MACnB4K,EAAOrB,MAAQplB,EACf,MACF,KAAKinC,EAAgBnrB,MACnB2K,EAAO+lC,MAAQxsD,EACf,MACF,KAAKinC,EAAgBjrB,IACnByK,EAAOgmC,IAAMzsD,EACb,MACF,KAAKinC,EAAgB/qB,QACnBuK,EAAOimC,QAAU1sD,EACjB,MACF,KAAKinC,EAAgB9qB,MACnBsK,EAAOuhB,MAAQhoC,EACf,MACF,KAAKinC,EAAgBhrB,QACnBwK,EAAOT,UAAYguC,SAASh0D,GAMhC,OAAO,6BACF6sB,GADL,IAEEggC,UAAU,6BACLhgC,EAAMggC,WADF,IAEP3/B,KAAMzG,SAwIgB,aAAC,GAOxBlB,EAAMljB,qBA1Ie,SAACwqB,GACzB,OAAO,6BACFA,GADL,IAEEggC,UAAU,6BACLhgC,EAAMggC,WADF,IAEP1nC,UAAU,SA8HY,aAAC,GAQxBI,EAAMjjB,uBAjIkB,SAACuqB,EAAD,GAAiC,IAAvBwnC,EAAsB,EAAtBA,gBACrC,OAAO,6BACFxnC,GADL,IAEEpG,OAAO,6BACFoG,EAAMynC,QADL,IAEJpnC,KAAMmnC,SAoHgB,aAAC,GASxB9uC,EAAMhjB,uBAxHiB,SAACsqB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACpC,OAAO,6BACFgK,GADL,IAEEggC,UAAU,6BACLhgC,EAAMggC,WADF,IAEPhqC,sBA0GsB,aAAC,GAUxB0C,EAAM/iB,wBA/GkB,SAACqqB,GAC5B,OAAO,6BACFA,GADL,IAEEggC,UAAU,6BACLhgC,EAAMggC,WADF,IAEP1nC,UAAU,SAgGY,aAAC,GAYxBI,EAAMpjB,aAvGQ,SAAC0qB,EAAD,GAAwB,IAAdpG,EAAa,EAAbA,OAC3B,OAAO,6BACFoG,GADL,IAEEggC,UAAU,6BACLhgC,EAAMggC,WADF,IAEP3/B,KAAMzG,SAsFgB,aAAC,GAcxBlB,EAAM9iB,oCAlNX,SAA0CoqB,EAA1C,GAA8E,IAA3BtJ,EAA0B,EAA1BA,KAAMoD,EAAoB,EAApBA,SAAUV,EAAU,EAAVA,OACjE,OAAO,6BACF4G,GADL,IAEEs/B,2BAA2B,6BACtBt/B,EAAMs/B,4BADe,IAExB5oC,OACAV,aAAc,GACd8D,WACAxB,UAAU,EACVc,gBA2LsB,aAAC,GAgBxBV,EAAMxf,8CAjGoC,SAAC8mB,GAC9C,OAAO,6BACFA,GADL,IAEEpG,OAAO,6BACFoG,EAAMpG,QADL,IAEJkM,WAAW,SA4EW,aAAC,GAiBxBpN,EAAMvf,gDAxFsC,SAAC6mB,EAAD,GAAwB,IAAdpG,EAAa,EAAbA,OACzD,OAAO,6BACFoG,GADL,IAEEpG,OAAO,6BACFoG,EAAMpG,QADL,IAEJyG,KAAMzG,SAkEgB,aAAC,GAkBxBlB,EAAMtf,gDA/EsC,SAAC4mB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACzD,OAAO,6BACFgK,GADL,IAEEpG,OAAO,6BACFoG,EAAMpG,QADL,IAEJ5D,sBAwDsB,aAAC,GAmBxB0C,EAAMrf,iDAtEuC,SAAC2mB,GACjD,OAAO,6BACFA,GADL,IAEEpG,OAAO,6BACFoG,EAAMpG,QADL,IAEJkM,WAAW,SA8CW,aAAC,GAqBxBpN,EAAMnf,yCA9D+B,SAACymB,GACzC,OAAO,6BACFA,GADL,IAEEpG,OAAO,6BACFoG,EAAMpG,QADL,IAEJkM,WAAW,SAoCW,aAAC,GAsBxBpN,EAAMlf,2CArDiC,SAACwmB,EAAD,GAAwB,IAAdpG,EAAa,EAAbA,OACpD,OAAO,6BACFoG,GADL,IAEEpG,OAAO,6BACFoG,EAAMpG,QADL,IAEJyG,KAAMzG,SA0BgB,aAAC,GAuBxBlB,EAAMjf,2CA5CiC,SAACumB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACpD,OAAO,6BACFgK,GADL,IAEEpG,OAAO,6BACFoG,EAAMpG,QADL,IAEJ5D,sBAgBsB,aAAC,GAwBxB0C,EAAMhf,4CAnCkC,SAACsmB,GAC5C,OAAO,6BACFA,GADL,IAEEpG,OAAO,6BACFoG,EAAMpG,QADL,IAEJkM,WAAW,SAMW,IAtON,CACpBk6B,UAAW,CACTkB,wBAAwB,EACxBjB,sBAAsB,EACtB5/B,KAAM,GACN/H,UAAU,EACVtC,aAAc,IAEhB4D,OAAQ,CACNyG,KAAM,KACNyF,WAAW,EACX9P,aAAc,IAEhBspC,2BAA4B,CAC1B5oC,MAAM,EACN4B,UAAU,EACVwB,SAAU,EACV9D,aAAc,GACdoD,OAAQ,EACRiH,KAAM,MClBJqnC,GAAgB,CACpB9jB,YAAa,CACXnZ,MAAO,GACPgG,UAAW,GACX3K,WAAW,EACX9P,aAAc,GACdyE,WAAY,IAEduN,sBAAuBQ,GAqGVg+B,iBAAa,mBAAC,GAExB9tC,EAAM1jB,sBApGe,SAACgrB,GACzB,OAAO,6BACFA,GADL,IAEE4jB,YAAY,6BACP5jB,EAAM4jB,aADA,IAET9d,WAAW,SA6FW,aAAC,GAGxBpN,EAAMxjB,wBA3FoB,SAAC8qB,EAAD,GAA0B,IACjD2nC,EADgD,EAAft+B,SACPwD,QAC9B,SAACG,GAAD,OAAOA,EAAE5T,SAAWqyB,KAEtB,OAAO,6BACFzrB,GADL,IAEE4jB,YAAY,6BACP5jB,EAAM4jB,aADA,IAETnZ,MAAOk9B,EACPl3B,UAAWk3B,SA+EW,aAAC,GAIxBjvC,EAAMvjB,wBA9EoB,SAAC6qB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACvC,OAAO,6BACFgK,GADL,IAEE4jB,YAAY,6BACP5jB,EAAM4jB,aADA,IAET5tB,sBAqEsB,aAAC,GAKxB0C,EAAMtjB,uBArEqB,SAAC4qB,GAC/B,OAAO,6BACFA,GADL,IAEE4jB,YAAY,6BACP5jB,EAAM4jB,aADA,IAET9d,WAAW,SA2DW,aAAC,GAOxBpN,EAAMhkB,+BA7DuB,SAACsrB,EAAD,GAA4B,IAAlBvF,EAAiB,EAAjBA,WAEtCmtC,EADW5nC,EAAM4jB,YAAYnT,UACH5D,QAC5B,SAAC4zB,GAAD,OACGA,EAAEr7B,MAAQq7B,EAAEr7B,KAAK8R,cAAczkC,SAASgoB,IACxCgmC,EAAEloC,OAASkoC,EAAEloC,MAAM2e,cAAczkC,SAASgoB,IAC1CgmC,EAAEf,eAAiBe,EAAEf,cAAcxoB,cAAczkC,SAASgoB,MAM/D,MAJmB,KAAfA,IACFmtC,EAAiB5nC,EAAM4jB,YAAYnT,WAG9B,6BACFzQ,GADL,IAEE4jB,YAAY,6BACP5jB,EAAM4jB,aADA,IAETnpB,aACAgQ,MAAOm9B,SAqCe,aAAC,GASxBlvC,EAAMjjB,uBAzCkB,SAACuqB,EAAD,GAAiC,IAAvBwnC,EAAsB,EAAtBA,gBACjCn+B,EAAQ,aAAOrJ,EAAM4jB,YAAYnZ,OACjCo9B,EAAqBx+B,EAAS09B,WAChC,SAAC50B,GAAD,OAAOA,EAAEhe,KAAOqzC,EAAgBrzC,MAWlC,OAR4B,IAAxB0zC,EACFx+B,EAASw+B,GAAsBL,EAI/Bn+B,EAAQ,uBAAOA,GAAP,CAAiBm+B,IAGpB,6BACFxnC,GADL,IAEE4jB,YAAY,6BACP5jB,EAAM4jB,aADA,IAETnZ,MAAOpB,EACPoH,UAAWpH,SAaW,aAAC,GAWxB3Q,EAAM7f,6BAnBsB,SAACmnB,EAAD,GAA4B,IAAlBhG,EAAiB,EAAjBA,WACzC,OAAO,6BACFgG,GADL,IAEEgI,sBAAuBhO,OAKC,IAa1B0tC,ICvFII,GAAsB,SAACC,EAC3BjuC,GACA,OAAQiuC,GACN,KAAK,EACH,MAAO,aACT,KAAK,EACH,MAAO,WACT,KAAK,EACH,MAAO,2BAA6BjuC,EAAW,IACjD,QACE,MAAO,eAIPkuC,GAAqB,SAACD,GAC1B,OAAQA,GACN,KAAK,EACH,MAAO,aACT,KAAK,EACH,MAAO,WACT,KAAK,EACH,MAAO,oBACT,QACE,MAAO,eA8SEvB,iBAAa,mBAAC,GAExB9tC,EAAMlP,2BA5VoB,SAACwW,EAAD,GAA+C,IAArC+nC,EAAoC,EAApCA,oBAAqBjuC,EAAe,EAAfA,SAExDmuC,EAAcH,GAAoBC,EAAqBjuC,GACvDouC,EAAkBloC,EAAMmoC,gBAC5BD,EAAgBpvB,KAAKmvB,GAErB,IAAIG,EAAaJ,GAAmBD,GACpC,OAAO,6BACF/nC,GADL,IAEEqS,aAAa,6BACRrS,EAAMqS,cADC,IAEV5H,MAAO,GACPgG,UAAW,GACX3K,WAAW,IAEbqiC,gBAAiBD,EACjB1wB,iBAAkB4wB,EAClB7wB,iBAAkB0wB,OAyUM,aAAC,GAGxBvvC,EAAMjP,6BA7SsB,SAACuW,EAAD,GAA8B,IAApBqS,EAAmB,EAAnBA,aAEnCmF,EAAmBxX,EAAMuX,iBACzB8wB,EAAiBh2B,EAAaxF,QAClC,SAAC0I,GAAD,OAAOA,EAAEnZ,WAAaob,KAExB,OAAO,6BACFxX,GADL,IAEEqS,aAAa,6BACRrS,EAAMqS,cADC,IAEV5B,UAAW4B,EACX5H,MAAO49B,SA+Re,aAAC,GAIxB3vC,EAAMhP,6BA9RsB,SAACsW,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACzC,OAAO,6BACFgK,GADL,IAEEqS,aAAa,6BACRrS,EAAMqS,cADC,IAEVrc,sBAqRsB,aAAC,GAKxB0C,EAAM/O,8BArRuB,SAACqW,GACjC,OAAO,6BACFA,GADL,IAEEqS,aAAa,6BACRrS,EAAMqS,cADC,IAEVvM,WAAW,SA2QW,aAAC,GAOxBpN,EAAM9O,2BA7QoB,SAACoW,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACvC,OAAO,6BACFsJ,GADL,IAEEyY,uBAAwB/hB,OAmQA,aAAC,GASxBgC,EAAM7O,4BAzOqB,SAACmW,EAAD,GAAwB,IAAdN,EAAa,EAAbA,OAClC2S,EAAerS,EAAMqS,aAAa5B,UAEpC63B,EADmBtoC,EAAMwX,iBACY+wB,OAAO7oC,GAC5CwoC,EAAkBloC,EAAMmoC,gBAC5BD,EAAgBpvB,KAAKwvB,GACrB,IAAIE,EAA2Bn2B,EAAaxF,QAC1C,SAAC0I,GAAD,OAAOA,EAAEnZ,WAAaksC,KAExB,OAAO,6BACFtoC,GADL,IAEEqS,aAAa,6BACRrS,EAAMqS,cADC,IAEV5B,UAAW4B,EACX5H,MAAO+9B,IAETjxB,iBAAkB+wB,EAClBH,gBAAiBD,OA+MO,aAAC,GAUxBxvC,EAAM5O,6BArNuB,SAACkW,GACjC,IAAIkoC,EAAkBloC,EAAMmoC,gBAC5BD,EAAgBO,MAChB,IAAIC,EAAUR,EAAgBA,EAAgBnmC,OAAS,GACjDsQ,EAAerS,EAAMqS,aAAa5B,UAEpC+3B,EAA2Bn2B,EAAaxF,QAC1C,SAAC0I,GAAD,OAAOA,EAAEnZ,WAAassC,KAExB,OAAO,6BACF1oC,GADL,IAEEqS,aAAa,6BACRrS,EAAMqS,cADC,IAEV5B,UAAW4B,EACX5H,MAAO+9B,IAETjxB,iBAAkBmxB,OA2LM,aAAC,GAYxBhwC,EAAM3O,+BA3Q2B,SAACiW,GACrC,IAAM2oC,EAAe3oC,EAAMqS,aAAa5B,UAClC23B,EAAapoC,EAAMwX,iBACnB6wB,EAAiBM,EAAa97B,QAAO,SAAC0I,GAAD,OAAOA,EAAEnZ,WAAagsC,KACjE,OAAO,cACL/1B,aAAa,6BACRrS,EAAMqS,cADC,IAEV5B,UAAWk4B,EACXl+B,MAAO49B,IAET9wB,iBAAkB6wB,EAClBD,gBAAiB,GACjB3wB,iBAAkB,IARpB,mBASoB,OAkPM,aAAC,GAcxB9e,EAAMtK,cA/KS,SAAC4R,EAAD,GAA6B,IAAlB2V,EAAiB,EAAjBA,WAGzBizB,EAxBuB,SAACC,EAAUlzB,GACtC,GACsB,qBAAbkzB,GACM,OAAbA,EACD,CACC,IAAIC,EAAWD,EAAShwB,MAAM,KAAKhM,QAAO,SAAA0I,GAAC,MAAU,KAANA,KAE/C,OAAGuzB,EAAS/mC,OAAS,GACnB+mC,EAASC,SACwB,IAApBD,EAAS/mC,OAAe+mC,EAAS,GAAMA,EAASrzC,KAAK,MACpD8yC,OAAO,IAAM5yB,EAAY,MAGhCA,EAAa,IAItB,OAAOA,EAAa,IAOLqzB,CADChpC,EAAMuX,iBAC2B5B,GAChDuyB,EAAkBloC,EAAMmoC,gBACxBO,EAAUR,EAAgBA,EAAgBnmC,OAAS,GAEjDknC,EAAY,CAChBlzB,aAAc6yB,EACdjzB,aACA2C,SAAU,GACV9C,UAAU,EACVpZ,SAAUssC,EACV7K,YAAa,MAGTxrB,EAAerS,EAAMqS,aAAa5B,UACxC4B,EAAayG,KAAKmwB,GAClB,IAAIT,EAA2Bn2B,EAAaxF,QAC3C,SAAC0I,GAAD,OAAOA,EAAEnZ,WAAassC,KAGxB,OAAO,6BACF1oC,GADL,IAEEqS,aAAa,6BACRrS,EAAMqS,cADC,IAEV5B,UAAW4B,EACX5H,MAAO+9B,SAsIiB,aAAC,GAkBxB9vC,EAAMpK,2BA7IgB,SAAC0R,GAC1B,OAAO,6BACFA,GADL,IAEEqS,aAAa,6BACRrS,EAAMqS,cADC,IAEVvM,WAAW,SAsHW,aAAC,GAmBxBpN,EAAMnK,6BAnIgB,SAACyR,EAAD,GAA0B,IAAjB/D,EAAgB,EAAhBA,WAC5BoW,EAAerS,EAAMqS,aAAa5B,UAEf,qBAAfxU,GACRoW,EAAayG,KAAK7c,GAGpB,IAAMsb,EAAmBvX,EAAMuX,iBAEzB8wB,EAAiBh2B,EAAaxF,QAClC,SAAC0I,GAAD,OAAOA,EAAEnZ,WAAamb,KAExB,OAAO,6BACFvX,GADL,IAEEqS,aAAa,6BACRrS,EAAMqS,cADC,IAEV5B,UAAW4B,EACX5H,MAAO49B,SA+Fe,aAAC,GAoBxB3vC,EAAMlK,6BA5GkB,SAACwR,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACrC,OAAO,6BACFgK,GADL,IAEEqS,aAAa,6BACRrS,EAAMqS,cADC,IAEVrc,sBAmFsB,aAAC,GAqBxB0C,EAAMjK,8BAnGmB,SAACuR,GAC7B,OAAO,6BACFA,GADL,IAEEqS,aAAa,6BACRrS,EAAMqS,cADC,IAEVvM,WAAW,SAyEW,aAAC,GAwBxBpN,EAAM/J,8BAzFmB,SAACqR,GAC7B,OAAO,6BACFA,GADL,IAEEqS,aAAa,6BACRrS,EAAMqS,cADC,IAEVvM,WAAW,SA4DW,aAAC,GAyBxBpN,EAAM9J,gCA/EqB,SAACoR,EAAD,GACzB,IADkCsY,EACnC,EADmCA,SAGjC4wB,EAAmBlpC,EAAMqS,aAAa5B,UACxCmG,EAAmB,GACvB,GAAuB,qBAAb0B,EACR,IACE1B,EAAmBsyB,EAAiBr8B,QAAO,SAAC0I,GAAD,OAAOA,EAAEQ,eAAiBuC,KAEvE,MAAMrlC,GACFD,QAAQisD,IAAIhsD,GAIlB,IAAMskC,EAAmBvX,EAAMuX,iBACzB8wB,EAAiBzxB,EAAiB/J,QACtC,SAAC0I,GAAD,OAAOA,EAAEnZ,WAAamb,KAGxB,OAAO,6BACFvX,GADL,IAEEqS,aAAa,6BACRrS,EAAMqS,cADC,IAEV5B,UAAWmG,EACXnM,MAAO49B,SA8Be,aAAC,GA0BxB3vC,EAAM7J,gCAjDqB,SAACmR,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACxC,OAAO,6BACFgK,GADL,IAEEqS,aAAa,6BACRrS,EAAMqS,cADC,IAEVrc,sBAkBsB,aAAC,GA2BxB0C,EAAM5J,iCAxCsB,SAACkR,GAChC,OAAO,6BACFA,GADL,IAEEqS,aAAa,6BACRrS,EAAMqS,cADC,IAEVvM,WAAW,SAQW,aAAC,GA6BxBpN,EAAMzO,sBA3QS,SAAC+V,GACnB,OAAO,cACLqS,aAAa,6BACRrS,EAAMqS,cADC,IAEV5B,UAAW,GACXhG,MAAO,KAET8M,iBAAkB,GAClB4wB,gBAAiB,GACjB3wB,iBAAkB,IARpB,mBASoB,OAoOM,IAvWN,CACpBnF,aAAc,CACZ5H,MAAO,GACPgG,UAAW,GACX3K,WAAW,EACX9P,aAAc,IAEhByiB,wBAAwB,EACxB0vB,gBAAiB,GACjB3wB,iBAAkB,GAClBD,iBAAkB,KCmELgM,GAnFD,iBAAM,CAClB,CACEne,KAAM,SACNjR,GAAI,GAEN,CACEiR,KAAM,YACNjR,GAAI,GAEN,CACEiR,KAAM,UACNjR,GAAI,GAEN,CACEiR,KAAM,UACNjR,GAAI,GAEN,CACEiR,KAAM,aACNjR,GAAI,GAEN,CACEiR,KAAM,aACNjR,GAAI,GAEN,CACEiR,KAAM,kBACNjR,GAAI,GAEN,CACEiR,KAAM,aACNjR,GAAI,GAEN,CACEiR,KAAM,UACNjR,GAAI,GAEN,CACEiR,KAAM,aACNjR,GAAI,IAEN,CACEiR,KAAM,YACNjR,GAAI,IAEN,CACEiR,KAAM,WACNjR,GAAI,IAEN,CACEiR,KAAM,WACNjR,GAAI,IAEN,CACEiR,KAAM,UACNjR,GAAI,IAEN,CACEiR,KAAM,WACNjR,GAAI,IAEN,CACEiR,KAAM,WACNjR,GAAI,IAEN,CACEiR,KAAM,UACNjR,GAAI,IAEN,CACEiR,KAAM,UACNjR,GAAI,IAEN,CACEiR,KAAM,aACNjR,GAAI,IAEN,CACEiR,KAAM,WACNjR,GAAI,MCzEFuzC,GAAgB,CACpBphC,cAAe,CACbmE,MAAO,GACPgG,UAAW,GACX3K,WAAW,EACX9P,aAAc,GACdyE,WAAY,IAEd8oB,MAAO,CACL9Y,MAAO8Y,OAyFIijB,iBAAa,mBAAC,GAExB9tC,EAAMphB,4BAtEqB,SAAC0oB,GAC/B,OAAO,6BACFA,GADL,IAEEsG,cAAc,6BACTtG,EAAMsG,eADE,IAEXR,WAAW,SA+DW,aAAC,GAGxBpN,EAAMnhB,8BA7DuB,SAACyoB,EAAD,GAA+B,IACzDmpC,EADwD,EAApB7iC,cACHuG,QAAO,SAAC4zB,GAAD,OAAsB,IAAfA,EAAEzb,YACvD,OAAO,6BACFhlB,GADL,IAEEsG,cAAc,6BACTtG,EAAMsG,eADE,IAEXmE,MAAO0+B,EACP14B,UAAW04B,SAmDW,aAAC,GAIxBzwC,EAAMlhB,8BAlDuB,SAACwoB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aAC1C,OAAO,6BACFgK,GADL,IAEEsG,cAAc,6BACTtG,EAAMsG,eADE,IAEXtQ,sBAyCsB,aAAC,GAKxB0C,EAAMjhB,+BAzCwB,SAACuoB,GAClC,OAAO,6BACFA,GADL,IAEEsG,cAAc,6BACTtG,EAAMsG,eADE,IAEXR,WAAW,SA+BW,aAAC,GAOxBpN,EAAM1gB,0BAjCoB,SAACgoB,EAAD,GAAoC,IAA1BopC,EAAyB,EAAzBA,mBACnC/iC,EAAU,aAAOrG,EAAMsG,cAAcmE,OACrC4+B,EAAwBhjC,EAAW0gC,WACrC,SAACtG,GAAD,OAAOA,EAAEtsC,KAAOi1C,EAAmBj1C,OAIN,IAA3Bk1C,EACFhjC,EAAWgjC,GAAyBD,EAIpC/iC,EAAU,uBAAOA,GAAP,CAAmB+iC,IAE/B,IAAMD,EAAmB9iC,EAAWwG,QAAO,SAAC4zB,GAAD,OAAsB,IAAfA,EAAEzb,YACpD,OAAO,6BACFhlB,GADL,IAEEsG,cAAc,6BACTtG,EAAMsG,eADE,IAEXmE,MAAO0+B,EACP14B,UAAW04B,SAMW,aAAC,GASxBzwC,EAAM9gB,mCA9F8B,SAACooB,EAAD,GAA4B,IAAlBvF,EAAiB,EAAjBA,WAG7C2sC,EAFapnC,EAAMsG,cAAcmK,UAEF5D,QACjC,SAACgS,GAAD,OAAOA,EAAEqE,WAAarE,EAAEqE,UAAUhM,cAAczkC,SAASgoB,MAG3D,OAAO,6BACFuF,GADL,IAEEsG,cAAc,6BACTtG,EAAMsG,eADE,IAEX7L,aACAgQ,MAAO28B,SAyEe,IAW1BM,ICyIalB,iBAAa,mBAAC,GAExB9tC,EAAMhhB,8BAtNuB,SAACsoB,EAAD,GAA+B,IAArBtJ,EAAoB,EAApBA,KAAMoE,EAAc,EAAdA,QAChD,OAAO,6BACFkF,GADL,IAEE0jB,aAAa,6BACR1jB,EAAM0jB,cADC,IAEVkD,0BAA2BlwB,EAC3BmwB,uBAAwB/rB,EACxBuF,KAAM,CACJ+iB,aAAc,KACdkmB,WAAY,MAEdvmB,iBAAiB,SAyMK,aAAC,GAGxBrqB,EAAM/gB,4BAvMqB,SAACqoB,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACxC,OAAO,6BACFsJ,GADL,IAEE0jB,aAAa,6BACR1jB,EAAM0jB,cADC,IAEVC,wBAAyBjtB,EACzB2J,KAAM,UA8LgB,aAAC,GAIxB3H,EAAMtgB,8BA7LuB,SAAC4nB,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KAC1C,OAAO,6BACFsJ,GADL,IAEE0jB,aAAa,6BACR1jB,EAAM0jB,cADC,IAEVwB,0BAA2BxuB,EAC3B2J,KAAM,UAmLgB,aAAC,GAMxB3H,EAAM7gB,oCApLgC,SACzCmoB,EADyC,GAGrC,IADF7sB,EACC,EADDA,MAAO0lB,EACN,EADMA,eAEHoC,EAAS,gBAAQ+E,EAAM0jB,aAAarjB,MAC1C,OAAQxH,GACN,KAAKuhB,EAAgBzqB,WACnBsL,EAAUioB,UAAY/vC,EACtB,MACF,KAAKinC,EAAgBxqB,UACnBqL,EAAUkoB,SAAWhwC,EACrB,MACF,KAAKinC,EAAgBvqB,WACnBoL,EAAUsuC,UAAYp2D,EACtB,MACF,KAAKinC,EAAgBtqB,OACnBmL,EAAUnB,SAAWqtC,SAASh0D,GAC9B,MACF,KAAKinC,EAAgB9qB,MACnB2L,EAAUkgB,MAAQhoC,EAClB,MACF,KAAKinC,EAAgBrqB,eACnBkL,EAAUmoB,aAAejwC,EACzB,MACF,KAAKinC,EAAgBpqB,WACnBiL,EAAUuuC,UAAYr2D,EACtB,MACF,KAAKinC,EAAgBnqB,SACnBgL,EAAUwuC,SAAWt2D,EACrB,MACF,KAAKinC,EAAgBlqB,UACnB+K,EAAUyuC,UAAYv2D,EACtB,MACF,KAAKinC,EAAgBjqB,aACnB8K,EAAUquC,WAAan2D,EACvB,MACF,KAAKinC,EAAgBhqB,KACnB6K,EAAU0uC,OAASxC,SAASh0D,GAMhC,OAAO,6BACF6sB,GADL,IAEE0jB,aAAa,6BACR1jB,EAAM0jB,cADC,IAEVrjB,KAAMpF,SA+HgB,aAAC,GAOxBvC,EAAMvgB,uCAjI+B,SAAC6nB,EAAD,GAAiC,IAAvB+iB,EAAsB,EAAtBA,gBAClD,OAAO,6BACF/iB,GADL,IAEE0jB,aAAa,6BACR1jB,EAAM0jB,cADC,IAEVX,yBAqHsB,aAAC,GASxBrqB,EAAM3gB,wBAzHkB,SAACioB,GAC5B,OAAO,6BACFA,GADL,IAEE0jB,aAAa,6BACR1jB,EAAM0jB,cADC,IAEVprB,UAAU,SA2GY,aAAC,GAUxBI,EAAM1gB,0BAhHqB,SAACgoB,EAAD,GAAoC,IAA1BopC,EAAyB,EAAzBA,mBACxC,OAAO,6BACFppC,GADL,IAEE/E,UAAU,6BACL+E,EAAM4pC,WADF,IAEPvpC,KAAM+oC,SAiGgB,aAAC,GAWxB1wC,EAAMzgB,0BAvGoB,SAAC+nB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACvC,OAAO,6BACFgK,GADL,IAEE0jB,aAAa,6BACR1jB,EAAM0jB,cADC,IAEV1tB,sBAuFsB,aAAC,GAYxB0C,EAAMxgB,2BA9FqB,SAAC8nB,GAC/B,OAAO,6BACFA,GADL,IAEE0jB,aAAa,6BACR1jB,EAAM0jB,cADC,IAEVprB,UAAU,SA6EY,aAAC,GAcxBI,EAAM5f,gBAtFW,SAACknB,EAAD,GAA2B,IAAjB/E,EAAgB,EAAhBA,UAC9B,OAAO,6BACF+E,GADL,IAEE0jB,aAAa,6BACR1jB,EAAM0jB,cADC,IAEVrjB,KAAMpF,SAmEgB,aAAC,GAgBxBvC,EAAM3f,mCA9E2B,SAACinB,EAAD,GAAiC,IAAvBtJ,EAAsB,EAAtBA,KAAMuE,EAAgB,EAAhBA,UACpD,OAAO,6BACF+E,GADL,IAEEwkB,oBAAoB,6BACfxkB,EAAMwkB,qBADQ,IAEjBC,WAAY/tB,EACZkoB,kBAAmB3jB,SAwDG,aAAC,GAiBxBvC,EAAM1f,iCApEyB,SAACgnB,GACnC,OAAO,6BACFA,GADL,IAEEwkB,oBAAoB,6BACfxkB,EAAMwkB,qBADQ,IAEjB/Z,MAAO,UA8Ce,aAAC,GAmBxB/R,EAAM/W,mCA5D2B,SAACqe,GACrC,OAAO,6BACFA,GADL,IAEEwkB,oBAAoB,6BACfxkB,EAAMwkB,qBADQ,IAEjB1e,WAAW,SAoCW,aAAC,GAoBxBpN,EAAM9W,qCAnD6B,SAACoe,EAAD,GAAqC,IAA3BwkB,EAA0B,EAA1BA,oBAChD,OAAO,6BACFxkB,GADL,IAEEwkB,oBAAoB,6BACfxkB,EAAMwkB,qBADQ,IAEjB/Z,MAAO+Z,SA0Be,aAAC,GAqBxB9rB,EAAM7W,qCA1CkC,SAACme,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACrD,OAAO,6BACFgK,GADL,IAEEwkB,oBAAoB,6BACfxkB,EAAMwkB,qBADQ,IAEjBxuB,sBAgBsB,aAAC,GAsBxB0C,EAAM5W,sCAjCmC,SAACke,GAC7C,OAAO,6BACFA,GADL,IAEEwkB,oBAAoB,6BACfxkB,EAAMwkB,qBADQ,IAEjB1e,WAAW,SAMW,IAxPN,CACpB4d,aAAc,CACZkD,2BAA2B,EAC3BC,wBAAuB,EACvBlD,yBAAyB,EACzBuB,2BAA2B,EAC3B7kB,KAAM,CACJ+iB,aAAc,KACdkmB,WAAY,MAEdhxC,UAAU,EACVtC,aAAc,GACd+sB,iBAAiB,GAEnB9nB,UAAW,CACToF,KAAM,KACNyF,WAAW,EACX9P,aAAc,IAEhB6zC,8BAA+B,CAC7BnzC,MAAM,EACN4B,UAAU,EACViD,YAAa,EACbvF,aAAc,GACdoD,OAAQ,EACRiH,KAAM,IAERmkB,oBAAqB,CACnB/Z,MAAO,GACP3E,WAAW,EACX9P,aAAc,GACd4oB,kBAAmB,KACnB6F,YAAY,KCqHD+hB,iBAAa,mBAAC,GAExB9tC,EAAM9e,sCAvI6B,SAAComB,GACvC,OAAO,6BACFA,GADL,IAEE0G,kBAAkB,6BACb1G,EAAM0G,mBADM,IAEfZ,WAAW,SAgIW,aAAC,GAGxBpN,EAAM7e,wCA9H+B,SAACmmB,EAAD,GAA2B,IAAjByG,EAAgB,EAAhBA,UAClD,OAAO,6BACFzG,GADL,IAEE0G,kBAAkB,6BACb1G,EAAM0G,mBADM,IAEf+D,MAAOhE,EACPgK,UAAWhK,SAqHW,aAAC,GAIxB/N,EAAM5e,wCApH+B,SAACkmB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aAClD,OAAO,6BACFgK,GADL,IAEE0G,kBAAkB,6BACb1G,EAAM0G,mBADM,IAEf1Q,sBA2GsB,aAAC,GAKxB0C,EAAM3e,yCA3GgC,SAACimB,GAC1C,OAAO,6BACFA,GADL,IAEE0G,kBAAkB,6BACb1G,EAAM0G,mBADM,IAEfZ,WAAW,SAiGW,aAAC,GAOxBpN,EAAMze,uCAnG8B,SAAC+lB,GACxC,OAAO,6BACFA,GADL,IAEEglC,mBAAmB,6BACdhlC,EAAMglC,oBADO,IAEhBl/B,WAAW,SAuFW,aAAC,GAQxBpN,EAAMxe,yCA1FgC,SAAC8lB,EAAD,GAA2B,IAAjByG,EAAgB,EAAhBA,UACnD,OAAO,6BACFzG,GADL,IAEEglC,mBAAmB,6BACdhlC,EAAMglC,oBADO,IAEhBv6B,MAAOhE,SA6Ee,aAAC,GASxB/N,EAAMve,yCAjFgC,SAAC6lB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACnD,OAAO,6BACFgK,GADL,IAEEglC,mBAAmB,6BACdhlC,EAAMglC,oBADO,IAEhBhvC,sBAmEsB,aAAC,GAUxB0C,EAAMte,0CAxEiC,SAAC4lB,GAC3C,OAAO,6BACFA,GADL,IAEEglC,mBAAmB,6BACdhlC,EAAMglC,oBADO,IAEhBl/B,WAAW,SAyDW,aAAC,GAYxBpN,EAAMre,kCAhE0B,SAAC2lB,EAAD,GAA4B,IAAlBvF,EAAiB,EAAjBA,WACzCgM,EAAS,aAAOzG,EAAM0G,kBAAkB+J,WAIxCq5B,EAHOz7B,EAAgBja,YAGHyY,QACtB,SAACx6B,GAAD,OAAOA,EAAEc,OAASd,EAAEc,MAAM+jC,cAAczkC,SAASgoB,MAI/CsvC,EAAoBtjC,EAAUoG,QAAO,SAACx6B,GAAD,OACvCy3D,EAAaE,MAAK,SAACC,GAAD,OAAOA,EAAE91C,KAAO9hB,EAAE87B,mBAOtC,MAJmB,KAAf1T,IACFsvC,EAAoB/pC,EAAM0G,kBAAkB+J,WAGvC,6BACFzQ,GADL,IAEE0G,kBAAkB,6BACb1G,EAAM0G,mBADM,IAEfjM,aACAgQ,MAAOs/B,SA6Be,aAAC,GAcxBrxC,EAAMxd,yBAtCmB,SAAC8kB,EAAD,GAAmC,IAAzBkqC,EAAwB,EAAxBA,kBAClCzjC,EAAS,aAAOzG,EAAM0G,kBAAkB+D,OACxC0/B,EAAuB1jC,EAAUsgC,WACnC,SAAC10D,GAAD,OAAOA,EAAE8hB,KAAO+1C,EAAkB/1C,MAUpC,OAN8B,IAA1Bg2C,EACF1jC,EAAU0jC,GAAwBD,EAElCzjC,EAAS,uBAAOA,GAAP,CAAkByjC,IAGtB,6BACFlqC,GADL,IAEE0G,kBAAkB,6BACb1G,EAAM0G,mBADM,IAEf+D,MAAOhE,EACPgK,UAAWhK,SAMW,IApJN,CACpBC,kBAAmB,CACjB+D,MAAO,GACPgG,UAAW,GACX3K,WAAW,EACX9P,aAAc,GACdyE,WAAY,IAEduqC,mBAAoB,CAClBv6B,MAAO,GACP3E,WAAW,EACX9P,aAAc,MChBZo0C,GAAiB,SAACC,GACpB,IAAIC,EAAW,GACXC,EAAe,GACnB,IAAK,IAAIj8B,KAAK+7B,EAAY,CAEtBE,EADeF,EAAW/7B,GAAX,MACU+7B,EAAW/7B,GAExC,IAAK,IAAIA,KAAKi8B,EACVD,EAASxxB,KAAKyxB,EAAaj8B,IAE/B,OAAOg8B,GAGLhuB,GAAc,SAACC,GACjB,OAAyB,OAAlBA,EAAKC,SAAoBD,EAAKnX,KAAOmX,EAAKC,SAASpX,MAGxDolC,GAAgC,SAACptB,GACrC,MACoC,qBAA3BA,EAAO6D,iBACd7D,EAAO6D,gBAAgBlf,OAAS,EAEzBqb,EAAO6D,gBAAgBpU,QAAO,SAAC0I,GAAD,OAAwB,IAAjBA,EAAEkJ,cAEzC,IAGHgsB,GAAkC,SAACrtB,GACvC,IAKkBstB,EALdC,EAAqB,GAiBzB,MAhB8C,qBAAnCvtB,EAAOwtB,0BAChBD,EAAqBvtB,EAAOwtB,yBAcjBD,EAAmB99B,QAXd69B,EAW8BttB,EAAO6D,gBAV9C,SAAUhD,GACf,OAKe,GAJbysB,EAAW79B,QAAO,SAAUg+B,GAE1B,OAAOvuB,GAAYuuB,IAAUvuB,GAAY2B,MAExClc,WCoTIykC,iBAAa,mBAAC,GAExB9tC,EAAMpe,6BAvTsB,SAAC0lB,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACzC,OAAO,6BACFsJ,GADL,IAEEorB,YAAY,6BACPprB,EAAMorB,aADA,IAETmB,yBAA0B71B,EAC1B2J,KAAM,CACJ6O,WAAY,KACZ0b,iBAAkB,EAClBzc,aAAc,EACd0c,cAAe,EACftvB,YAAa,EACbuvC,WAAY,aAySQ,aAAC,GAGxBpyC,EAAMne,2BAtSoB,SAACylB,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACvC,OAAO,6BACFsJ,GADL,IAEEorB,YAAY,6BACPprB,EAAMorB,aADA,IAETC,uBAAwB30B,EACxB2J,KAAM,CACJ6O,WAAY,KACZ0b,iBAAkB,EAClBzc,aAAc,EACd0c,cAAe,EACftvB,YAAa,EACbuvC,WAAY,aAuRQ,aAAC,GAKxBpyC,EAAMle,mCAtR2B,SAACwlB,EAAD,GAAuC,IAA7B7sB,EAA4B,EAA5BA,MAAO0lB,EAAqB,EAArBA,eAC/CiD,EAAQ,gBAAQkE,EAAMorB,YAAY/qB,MACxC,OAAQxH,GACN,KAAKuhB,EAAgB/pB,YACS,OAAxByL,EAASgvC,YAAiC,OAAV33D,EAClC2oB,EAASoT,WAAa,IAAIjC,KACxB95B,EAAMo8B,IAAI,QACVp8B,EAAMo8B,IAAI,SACVp8B,EAAMo8B,IAAI,SAGZzT,EAASoT,WADS,MAAT/7B,EACa,IAAI85B,KACxB95B,EAAMo8B,IAAI,QACVp8B,EAAMo8B,IAAI,SACVp8B,EAAMo8B,IAAI,QACVzT,EAASgvC,WAAWv7B,IAAI,QACxBzT,EAASgvC,WAAWv7B,IAAI,UACxBzT,EAASgvC,WAAWv7B,IAAI,WAGJp8B,EAExB,MACF,KAAKinC,EAAgB9pB,YACnB,GAA4B,OAAxBwL,EAASoT,YAAiC,OAAV/7B,EAAgB,CAClD,IAAM43D,EAAYr8B,GAAW5S,EAASoT,YAClC4B,EAAO,IAAI7D,KACb89B,EAAUx7B,IAAI,QACdw7B,EAAUx7B,IAAI,SACdw7B,EAAUx7B,IAAI,QACdp8B,EAAMo8B,IAAI,QACVp8B,EAAMo8B,IAAI,UACVp8B,EAAMo8B,IAAI,WAEZzT,EAASoT,WAAa4B,EACtBhV,EAASgvC,WAAa33D,OACjB,GAA4B,OAAxB2oB,EAASoT,YAAiC,OAAV/7B,EAAgB,CACzD,IAAM43D,EAAYr8B,GAAW5S,EAASoT,YAClC4B,EAAO,IAAI7D,KACb89B,EAAUx7B,IAAI,QACdw7B,EAAUx7B,IAAI,SACdw7B,EAAUx7B,IAAI,SAEhBzT,EAASoT,WAAa4B,EACtBhV,EAASgvC,WAAa33D,OAEtB2oB,EAASgvC,WAAa33D,EAExB,MACF,KAAKinC,EAAgB5pB,gBACnBsL,EAAS8uB,iBAAmBz3C,EAC5B,MACF,KAAKinC,EAAgB3pB,YACnBqL,EAASqS,aAAeh7B,EACxB,MACF,KAAKinC,EAAgBzpB,aACnBmL,EAAS+uB,cAAgB13C,EACzB,MACF,KAAKinC,EAAgB1pB,UACnBoL,EAASP,YAAcpoB,EACvB,MACF,KAAKinC,EAAgBlpB,oBACd4K,EAASmlB,kBACZnlB,EAASmlB,gBAAkB,IAE7BnlB,EAASmlB,gBAAgBnI,KAAK3lC,GAC9B,IAAI63D,EAAgBZ,GAAetuC,EAASmlB,iBAC5CnlB,EAASmlB,gBAAkB+pB,EAK/B,OAAO,6BACFhrC,GADL,IAEEorB,YAAY,6BACPprB,EAAMorB,aADA,IAET/qB,KAAMvE,SAqMgB,aAAC,GAOxBpD,EAAMje,eA3LU,SAACulB,EAAD,GAA0B,IAZf+2B,EAYDj7B,EAAe,EAAfA,SAC7B,OAAO,6BACFkE,GADL,IAEEorB,YAAY,6BACPprB,EAAMorB,aADA,IAET/qB,KAAK,6BACAvE,GADD,IAEFgvC,YAnBwB/T,EAmBWj7B,EAASoT,WAlB5BR,GAAWqoB,GAEJxnB,IAAI,UAElB,EACNwnB,EAEA,eAwLiB,aAAC,GASxBr+B,EAAMhe,sCAhLgC,SACzCslB,EADyC,GAGrC,IADFtJ,EACC,EADDA,KAAMoF,EACL,EADKA,SAAU1C,EACf,EADeA,OAElB,OAAO,6BACF4G,GADL,IAEE8rB,6BAA6B,6BACxB9rB,EAAM8rB,8BADiB,IAE1Bp1B,OACAoF,WACA1C,SACApD,aAAc,UA4JQ,aAAC,GAWxB0C,EAAMzd,uBAlKiB,SAAC+kB,GAC3B,OAAO,6BACFA,GADL,IAEEorB,YAAY,6BACPprB,EAAMorB,aADA,IAET9yB,UAAU,SAkJY,aAAC,GAYxBI,EAAMxd,yBAzJmB,SAAC8kB,EAAD,GAAmC,IAAzBkqC,EAAwB,EAAxBA,kBACtC,OAAO,6BACFlqC,GADL,IAEElE,SAAS,6BACJkE,EAAMlE,UADH,IAENuE,KAAM6pC,SAwIgB,aAAC,GAaxBxxC,EAAMvd,yBAhJmB,SAAC6kB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACtC,OAAO,6BACFgK,GADL,IAEEorB,YAAY,6BACPprB,EAAMorB,aADA,IAETp1B,sBA8HsB,aAAC,GAcxB0C,EAAMtd,0BAvIoB,SAAC4kB,GAC9B,OAAO,6BACFA,GADL,IAEEorB,YAAY,6BACPprB,EAAMorB,aADA,IAET9yB,UAAU,SAoHY,aAAC,GAgBxBI,EAAM9d,qCA/H6B,SAAColB,GACvC,OAAO,6BACFA,GADL,IAEE8rB,6BAA6B,6BACxB9rB,EAAM8rB,8BADiB,IAE1BxzB,UAAU,SA0GY,aAAC,GAiBxBI,EAAM7d,uCAtH+B,SAACmlB,GACzC,OAAO,gBACFA,MAmGqB,aAAC,GAkBxBtH,EAAM5d,uCAjH+B,SAACklB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aAClD,OAAO,6BACFgK,GADL,IAEE8rB,6BAA6B,6BACxB9rB,EAAM8rB,8BADiB,IAE1B91B,sBA0FsB,aAAC,GAmBxB0C,EAAM3d,wCAxGgC,SAACilB,GAC1C,OAAO,6BACFA,GADL,IAEE8rB,6BAA6B,6BACxB9rB,EAAM8rB,8BADiB,IAE1BxzB,UAAU,SAgFY,aAAC,GAqBxBI,EAAMxM,qCAhF6B,SAAC8T,GACvC,OAAO,6BACFA,GADL,IAEEorB,YAAY,6BACPprB,EAAMorB,aADA,IAET9yB,UAAU,SAsDY,aAAC,GAsBxBI,EAAMvM,uCAvE+B,SAAC6T,EAAD,GAGxC,IAHqE,IAAnBs+B,EAAkB,EAAlBA,YAC9C2M,EAAyB,GAEpBr2C,EAAQ,EAAGA,EAAQ0pC,EAAYv8B,OAAQnN,IAAS,CACvD,IAAMs2C,EAAU,CACd/2C,GAAImqC,EAAY1pC,GAAOT,GACvBsqB,YAAY,EACZC,SAAS,EACTlC,SAAU,KACVpX,KAAMk5B,EAAY1pC,GAAOk8B,SACzBlU,IAAK0hB,EAAY1pC,GAAOgoB,KAE1BquB,EAAuBnyB,KAAKoyB,GAG9B,OAAO,6BACFlrC,GADL,IAEEorB,YAAY,6BACPprB,EAAMorB,aADA,IAET/qB,KAAK,6BACAL,EAAMorB,YAAY/qB,MADnB,IAEF4gB,gBAAiBgqB,EACjBL,wBAAyBK,WA2BL,aAAC,GAuBxBvyC,EAAMtM,uCA5C8B,SAAC4T,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACjD,OAAO,6BACFgK,GADL,IAEEorB,YAAY,6BACPprB,EAAMorB,aADA,IAETp1B,sBAgBsB,aAAC,GAwBxB0C,EAAMrM,wCAnC+B,SAAC2T,EAAD,GAA6B,EAAnBhK,aAClD,OAAO,6BACFgK,GADL,IAEEorB,YAAY,6BACPprB,EAAMorB,aADA,IAET9yB,UAAU,SAMY,aAAC,GA0BxBI,EAAMpM,4BApGc,SAAC0T,EAAD,GAA4B,IAAlB/D,EAAiB,EAAjBA,WAC7BH,EAAWkE,EAAMorB,YAAY/qB,KAC7B8qC,EAAwBrvC,EAASmlB,gBAAgBpU,QACnD,SAACxM,GAAD,OAAUA,EAAK+E,OAASnJ,EAAWmJ,QAGrC,OADAtJ,EAASmlB,gBAAkBkqB,EACpB,6BACFnrC,GADL,IAEEorB,YAAY,6BACPprB,EAAMorB,aADA,IAET/qB,KAAMvE,SAgEgB,IArVN,CACpBsvB,YAAa,CACXmB,0BAA0B,EAC1BlB,wBAAwB,EACxBhrB,KAAM,CACJ6O,WAAY,KACZ0b,iBAAkB,EAClBzc,aAAc,EACd0c,cAAe,EACftvB,YAAa,EACbuvC,WAAY,KACZ7pB,gBAAiB,GACjB2pB,wBAAyB,IAE3BtyC,UAAU,EACVtC,aAAc,IAEhB8F,SAAU,CACRuE,KAAM,KACNyF,WAAW,EACX9P,aAAc,IAEhB81B,6BAA8B,CAC5Bp1B,MAAM,EACN4B,UAAU,EACVwD,SAAU,KACV9F,aAAc,GACdoD,OAAQ,EACRiH,KAAM,MCybKmmC,iBAAa,mBAAC,GAExB9tC,EAAM1c,0BA1amB,SAACgkB,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACtC,OAAO,6BACFsJ,GADL,IAEE4F,SAAS,6BACJ5F,EAAM4F,UADH,IAENyiB,sBAAuB3xB,EACvB2J,KAAM,CACJgnB,gBAAiB,KACjBva,iBAAkB,aAgaE,aAAC,GAGxBpU,EAAMxc,uBA7ZgB,SAAC8jB,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACnC,OAAO,6BACFsJ,GADL,IAEE4F,SAAS,6BACJ5F,EAAM4F,UADH,IAEN+jB,mBAAoBjzB,EACpB2J,KAAM,UAoZgB,aAAC,GAIxB3H,EAAMzc,wBAnZiB,SAAC+jB,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACpC,OAAO,6BACFsJ,GADL,IAEE4F,SAAS,6BACJ5F,EAAM4F,UADH,IAENukB,oBAAqBzzB,EACrB2J,KAAM,UAyYgB,aAAC,GAKxB3H,EAAMvc,gCAzYwB,SAAC6jB,EAAD,GAAuC,IAA7B7sB,EAA4B,EAA5BA,MAAO0lB,EAAqB,EAArBA,eAC5C6D,EAAK,gBAAQsD,EAAM4F,SAASvF,MAC5B+c,EAAM,gBAAQpd,EAAMgG,UAAU3F,MAEpC,OAAQxH,GACN,KAAKuhB,EAAgBjpB,YACnBuL,EAAM7F,YAAc1jB,EACpB,MACD,KAAKinC,EAAgBhpB,YACnBsL,EAAMye,MAAQhoC,EACd,MACH,KAAKinC,EAAgB/oB,UACnBqL,EAAMoe,UAAYswB,OAAOj4D,GACzB,MACF,KAAKinC,EAAgB9oB,WACnBoL,EAAMsrB,YAAc70C,EACpB,MACF,KAAKinC,EAAgB7oB,kBACnBmL,EAAMurB,iBAAmB90C,EACzB,MACF,KAAKinC,EAAgB1oB,oBACnBgL,EAAM9rB,SAAWuC,EACjB,MAOF,KAAKinC,EAAgBzoB,YACnB,IAAI05C,EAAUjgC,KAAOj4B,GAAO07B,QAAQpD,OAAO,cAC3C2R,EAAOS,WAAawtB,EACpB,MACF,KAAKjxB,EAAgBxoB,aACnBwrB,EAAOjC,MAAQhoC,EACf,MACF,KAAKinC,EAAgBvoB,wBACdurB,EAAO6D,kBACV7D,EAAO6D,gBAAkB,IAE3B7D,EAAO6D,gBAAgBnI,KAAK3lC,GAC5B,IAAI63D,EAAgBZ,GAAehtB,EAAO6D,iBAC1C7D,EAAO6D,gBAAkB+pB,EAK7B,OAAO,6BACFhrC,GADL,IAEE4F,SAAS,6BACJ5F,EAAM4F,UADH,IAENvF,KAAM3D,IAERsJ,UAAU,6BACLhG,EAAMgG,WADF,IAEP3F,KAAM+c,SA6UgB,aAAC,GAOxB1kB,EAAMpc,oBA/Uc,SAAC0jB,GACxB,OAAO,6BACFA,GADL,IAEE4F,SAAS,6BACJ5F,EAAM4F,UADH,IAENtN,UAAU,SAmUY,aAAC,GAQxBI,EAAMnc,sBAtUgB,SAACyjB,EAAD,GAAgC,IAAtBsrC,EAAqB,EAArBA,eACnC,OAAO,6BACFtrC,GADL,IAEEtD,MAAM,6BACDsD,EAAMtD,OADN,IAEH2D,KAAMirC,SAyTgB,aAAC,GASxB5yC,EAAMlc,sBA7TgB,SAACwjB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACnC,OAAO,6BACFgK,GADL,IAEE4F,SAAS,6BACJ5F,EAAM4F,UADH,IAEN5P,sBA+SsB,aAAC,GAUxB0C,EAAMjc,uBApTiB,SAACujB,GAC3B,OAAO,6BACFA,GADL,IAEE4F,SAAS,6BACJ5F,EAAM4F,UADH,IAENtN,UAAU,SAqSY,aAAC,GAYxBI,EAAMtc,YA5SO,SAAC4jB,EAAD,GAAuB,IAAbtD,EAAY,EAAZA,MAC1B,OAAO,6BACFsD,GADL,IAEE4F,SAAS,6BACJ5F,EAAM4F,UADH,IAENvF,KAAM3D,SA2RgB,aAAC,GAcxBhE,EAAMzb,mCApS0B,SAAC+iB,GACpC,OAAO,6BACFA,GADL,IAEE6F,mBAAmB,6BACd7F,EAAM6F,oBADO,IAEhBC,WAAW,SAiRW,aAAC,GAexBpN,EAAMxb,qCA3R4B,SAAC8iB,EAAD,GAAyB,IAAfyf,EAAc,EAAdA,QAC/C,OAAO,6BACFzf,GADL,IAEE6F,mBAAmB,6BACd7F,EAAM6F,oBADO,IAEhB4E,MAAOgV,SAuQe,aAAC,GAgBxB/mB,EAAMvb,qCAlR4B,SAAC6iB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aAC/C,OAAO,6BACFgK,GADL,IAEE6F,mBAAmB,6BACd7F,EAAM6F,oBADO,IAEhB7P,sBA6PsB,aAAC,GAiBxB0C,EAAMtb,sCAzQ6B,SAAC4iB,GACvC,OAAO,6BACFA,GADL,IAEE6F,mBAAmB,6BACd7F,EAAM6F,oBADO,IAEhBC,WAAW,SAmPW,aAAC,GAmBxBpN,EAAMpb,2BAjQoB,SAAC0iB,GAC9B,OAAO,6BACFA,GADL,IAEE+F,aAAa,6BACR/F,EAAM+F,cADC,IAEVzN,UAAU,SAyOY,aAAC,GAoBxBI,EAAMnb,6BAxPsB,SAACyiB,EAAD,GAA0B,IAAhB2hB,EAAe,EAAfA,SACrClC,EAAO,aAAOzf,EAAM6F,mBAAmB4E,OACvCu8B,EAAcvnB,EAAQsnB,WAAU,SAACt4B,GAAD,OAAOA,EAAEta,KAAOwtB,KAMpD,OAJqB,IAAjBqlB,GACFvnB,EAAQwnB,OAAOD,EAAa,GAGvB,6BACFhnC,GADL,IAEE+F,aAAa,gBACR/F,EAAM+F,cAEXF,mBAAmB,6BACd7F,EAAM6F,oBADO,IAEhB4E,MAAOgV,SAqNe,aAAC,GAqBxB/mB,EAAMlb,6BArOsB,SAACwiB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACzC,OAAO,6BACFgK,GADL,IAEE+F,aAAa,6BACR/F,EAAM+F,cADC,IAEV/P,sBA2MsB,aAAC,GAsBxB0C,EAAMjb,8BA5NuB,SAACuiB,GACjC,OAAO,6BACFA,GADL,IAEE+F,aAAa,6BACR/F,EAAM+F,cADC,IAEVzN,UAAU,SAiMY,aAAC,GAwBxBI,EAAM/a,2BApNoB,SAACqiB,GAC9B,OAAO,6BACFA,GADL,IAEEgG,UAAU,6BACLhG,EAAMgG,WADF,IAEP1N,UAAU,SAuLY,aAAC,GAyBxBI,EAAM9a,6BA3MsB,SAACoiB,GAChC,OAAO,6BACFA,GADL,IAEEgG,UAAU,6BACLhG,EAAMgG,WADF,IAEP3F,KAAM,CACJwd,WAAY,KACZ1C,MAAO,WA2Ka,aAAC,GA0BxBziB,EAAM7a,6BA/LsB,SAACmiB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACzC,OAAO,6BACFgK,GADL,IAEEgG,UAAU,6BACLhG,EAAMgG,WADF,IAEPhQ,sBAgKsB,aAAC,GA2BxB0C,EAAM5a,8BAtLuB,SAACkiB,GACjC,OAAO,6BACFA,GADL,IAEEgG,UAAU,6BACLhG,EAAMgG,WADF,IAEP1N,UAAU,SAsJY,aAAC,GA6BxBI,EAAM3V,0BA9KmB,SAACid,EAAD,GAAgD,IAAtCgiB,EAAqC,EAArCA,qBAAsBL,EAAe,EAAfA,SACtDvE,EAASpd,EAAM6F,mBAAmB4E,MAAMoC,QAC5C,SAAC4B,GAAD,OAAOA,EAAEta,KAAOwtB,KAChB,GAEF,OAAO,6BACF3hB,GADL,IAEE4hB,WAAW,6BACN5hB,EAAM4hB,YADD,IAERC,OAAQG,EACR3hB,KAAM+c,SAuIgB,aAAC,GA+BxB1kB,EAAMrV,gCAjKwB,SAAC2c,EAAD,GAAuC,IAA7B7sB,EAA4B,EAA5BA,MAAO0lB,EAAqB,EAArBA,eAC5CukB,EAAM,gBAAQpd,EAAM4hB,WAAWvhB,MAErC,OAAQxH,GACN,KAAKuhB,EAAgBzoB,YACnB,IAAI05C,EAAUjgC,KAAOj4B,GAAO07B,QAAQpD,OAAO,cAC3C2R,EAAOS,WAAawtB,EACpB,MACF,KAAKjxB,EAAgBxoB,aACnBwrB,EAAOjC,MAAQhoC,EACf,MACF,KAAKinC,EAAgBvoB,wBACdurB,EAAO6D,kBACV7D,EAAO6D,gBAAkB,IAE3B7D,EAAO6D,gBAAgBnI,KAAK3lC,GAC5B,IAAI63D,EAAgBZ,GAAehtB,EAAO6D,iBAC1C7D,EAAO6D,gBAAkB+pB,EAK7B,OAAO,6BACFhrC,GADL,IAEE4hB,WAAW,6BACN5hB,EAAM4hB,YADD,IAERvhB,KAAM+c,SAwGgB,aAAC,GAiCxB1kB,EAAMpgB,8BApIsB,SAAC0nB,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACzC,OAAO,6BACFsJ,GADL,IAEEgG,UAAU,6BACLhG,EAAMgG,WADF,IAEPmjB,yBAA0BzyB,SA8FJ,aAAC,GAoCxBgC,EAAM7M,yCA7HgC,SAACmU,GAC1C,OAAO,6BACFA,GADL,IAEE4hB,WAAW,6BACN5hB,EAAM4hB,YADD,IAERtpB,UAAU,SAoFY,aAAC,GAqCxBI,EAAM5M,2CApHkC,SAACkU,EAAD,GAG3C,IAHwE,IAAnBs+B,EAAkB,EAAlBA,YACjD2M,EAAyB,GAEpBr2C,EAAQ,EAAGA,EAAQ0pC,EAAYv8B,OAAQnN,IAAS,CACvD,IAAMs2C,EAAU,CACd/2C,GAAImqC,EAAY1pC,GAAOT,GACvBsqB,YAAY,EACZC,SAAS,EACTlC,SAAU,KACVpX,KAAMk5B,EAAY1pC,GAAOk8B,SACzBlU,IAAK0hB,EAAY1pC,GAAOgoB,KAE1BquB,EAAuBnyB,KAAKoyB,GAG9B,OAAO,6BACFlrC,GADL,IAEE4hB,WAAW,6BACN5hB,EAAM4hB,YADD,IAERvhB,KAAK,6BACAL,EAAM4hB,WAAWvhB,MADlB,IAEF4gB,gBAAiBgqB,EACjBL,wBAAyBK,WAyDL,aAAC,GAsCxBvyC,EAAM3M,2CAzFiC,SAACiU,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACpD,OAAO,6BACFgK,GADL,IAEE4hB,WAAW,6BACN5hB,EAAM4hB,YADD,IAER5rB,sBA8CsB,aAAC,GAuCxB0C,EAAM1M,4CAhFkC,SAACgU,EAAD,GAA6B,EAAnBhK,aACrD,OAAO,6BACFgK,GADL,IAEE4hB,WAAW,6BACN5hB,EAAM4hB,YADD,IAERtpB,UAAU,SAoCY,aAAC,GAyCxBI,EAAMlN,gCAxEc,SAACwU,EAAD,GAA4B,IAAlB/D,EAAiB,EAAjBA,WAC7BmhB,EAASpd,EAAMgG,UAAU3F,KACzB8qC,EAAwB/tB,EAAO6D,gBAAgBpU,QACjD,SAACxM,GAAD,OAAUA,EAAK+E,OAASnJ,EAAWmJ,QAGrC,OADAgY,EAAO6D,gBAAkBkqB,EAClB,6BACFnrC,GADL,IAEEgG,UAAU,6BACLhG,EAAMgG,WADF,IAEP3F,KAAM+c,SAqBgB,aAAC,GA2CxB1kB,EAAMjN,qCA3DgC,SAACuU,EAAD,GAA4B,IAAlB/D,EAAiB,EAAjBA,WAC/CmhB,EAASpd,EAAM4hB,WAAWvhB,KAC1B8qC,EAAwB/tB,EAAO6D,gBAAgBpU,QACjD,SAACxM,GAAD,OAAUA,EAAK+E,OAASnJ,EAAWmJ,QAGrC,OADAgY,EAAO6D,gBAAkBkqB,EAClB,6BACFnrC,GADL,IAEE4hB,WAAW,6BACN5hB,EAAM4hB,YADD,IAERvhB,KAAM+c,SAMgB,IAtdN,CACpBxX,SAAU,CACRyiB,uBAAuB,EACvBsB,oBAAoB,EACpBQ,qBAAqB,EACrB9pB,KAAM,CACJgnB,gBAAiB,KACjBva,iBAAkB,MAEpBxU,UAAU,EACVtC,aAAc,IAEhB0G,MAAO,CACL2D,KAAM,KACNyF,WAAW,EACX9P,aAAc,IAEhBgQ,UAAW,CACT3F,KAAM,CACJwd,WAAY,KACZ1C,MAAO,GACP8F,gBAAiB,GACjB2pB,wBAAyB,IAE3BtyC,UAAU,EACVtC,aAAc,GACdmzB,0BAA0B,GAE5BtjB,mBAAoB,CAClB4E,MAAO,GACP3E,WAAW,EACX9P,aAAc,MAEhB+P,aAAc,CACZkR,QAAQ,EACR3e,UAAU,EACVtC,aAAc,MAEhB4rB,WAAY,CACVC,QAAQ,EACRxhB,KAAM,CAAE4gB,gBAAiB,GAAI2pB,wBAAyB,IACtDtyC,UAAU,EACVtC,aAAc,MCuJHwwC,iBAAa,mBAAC,GAExB9tC,EAAMpd,mCAtI0B,SAAC0kB,GACpC,OAAO,6BACFA,GADL,IAEEwG,eAAe,6BACVxG,EAAMwG,gBADG,IAEZV,WAAW,SA+HW,aAAC,GAGxBpN,EAAMnd,qCA7H4B,SAACykB,EAAD,GAAwB,IAAduG,EAAa,EAAbA,OAC/C,OAAO,6BACFvG,GADL,IAEEwG,eAAe,6BACVxG,EAAMwG,gBADG,IAEZiE,MAAOlE,EACPkK,UAAWlK,SAoHW,aAAC,GAIxB7N,EAAMld,qCAnH4B,SAACwkB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aAC/C,OAAO,6BACFgK,GADL,IAEEwG,eAAe,6BACVxG,EAAMwG,gBADG,IAEZxQ,sBA0GsB,aAAC,GAKxB0C,EAAMjd,sCA1G6B,SAACukB,GACvC,OAAO,6BACFA,GADL,IAEEwG,eAAe,6BACVxG,EAAMwG,gBADG,IAEZV,WAAW,SAgGW,aAAC,GAOxBpN,EAAM/c,oCAjD2B,SAACqkB,GACrC,OAAO,6BACFA,GADL,IAEE8kC,gBAAgB,6BACX9kC,EAAM8kC,iBADI,IAEbh/B,WAAW,SAqCW,aAAC,GAQxBpN,EAAM9c,sCAxC6B,SAACokB,EAAD,GAAwB,IAAduG,EAAa,EAAbA,OAChD,OAAO,6BACFvG,GADL,IAEE8kC,gBAAgB,6BACX9kC,EAAM8kC,iBADI,IAEbr6B,MAAOlE,EACPkK,UAAWlK,SA0BW,aAAC,GASxB7N,EAAM7c,sCA9B6B,SAACmkB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aAChD,OAAO,6BACFgK,GADL,IAEE8kC,gBAAgB,6BACX9kC,EAAM8kC,iBADI,IAEb9uC,sBAgBsB,aAAC,GAUxB0C,EAAM5c,uCArB8B,SAACkkB,GACxC,OAAO,6BACFA,GADL,IAEE8kC,gBAAgB,6BACX9kC,EAAM8kC,iBADI,IAEbh/B,WAAW,SAMW,aAAC,GAYxBpN,EAAM3c,+BAvGuB,SAACikB,EAAD,GAA4B,IAAlBvF,EAAiB,EAAjBA,WAGtC8wC,EAFM,aAAOvrC,EAAMwG,eAAeiK,WAEV5D,QAC1B,SAACsF,GAAD,OAAOA,EAAEtb,aAAesb,EAAEtb,YAAYqgB,cAAczkC,SAASgoB,MAG/D,OAAO,6BACFuF,GADL,IAEEwG,eAAe,6BACVxG,EAAMwG,gBADG,IAEZ/L,aACAgQ,MAAO8gC,SA+Ee,aAAC,GAcxB7yC,EAAMnc,sBAxFgB,SAACyjB,EAAD,GAAgC,IAAtBsrC,EAAqB,EAArBA,eAC/B/kC,EAAM,aAAOvG,EAAMwG,eAAeiE,OAClC+gC,EAAoBjlC,EAAOwgC,WAAU,SAAC10D,GAAD,OAAOA,EAAE8hB,KAAOm3C,EAAen3C,MASxE,OAN2B,IAAvBq3C,EACFjlC,EAAOilC,GAAqBF,EAE5B/kC,EAAM,uBAAOA,GAAP,CAAe+kC,IAGhB,6BACFtrC,GADL,IAEEwG,eAAe,6BACVxG,EAAMyrC,iBADG,IAEZhhC,MAAOlE,EACPkK,UAAWlK,SA0DW,aAAC,GAgBxB7N,EAAMhc,0BArEmB,SAACsjB,EAAD,GAA6B,IAAnBtJ,EAAkB,EAAlBA,KAAMgG,EAAY,EAAZA,MAC5C,OAAO,6BACFsD,GADL,IAEE0nB,YAAY,6BACP1nB,EAAM0nB,aADA,IAETvvB,WAAYzB,EACZgG,OAAgB,IAAThG,EAAgBgG,EAAQ,YA+CT,aAAC,GAkBxBhE,EAAM9b,oBAjMc,SAACojB,GACxB,OAAO,6BACFA,GADL,IAEE0nB,YAAY,6BACP1nB,EAAM0nB,aADA,IAETpvB,UAAU,SA0KY,aAAC,GAmBxBI,EAAM7b,sBAzLgB,SAACmjB,EAAD,GAAyB,IAAfkpB,EAAc,EAAdA,QAE/BqiB,EADiBvrC,EAAMwG,eAAeiE,MACNoC,QAAO,SAACnQ,GAAD,OAAWA,EAAMvI,KAAO+0B,KAEnE,OAAO,6BACFlpB,GADL,IAEE0nB,YAAY,gBACP1nB,EAAM0nB,aAEXlhB,eAAe,6BACVxG,EAAMwG,gBADG,IAEZiE,MAAO8gC,SA2Je,aAAC,GAoBxB7yC,EAAM5b,sBA3KgB,SAACkjB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACnC,OAAO,6BACFgK,GADL,IAEE0nB,YAAY,6BACP1nB,EAAM0nB,aADA,IAET1xB,sBAkJsB,aAAC,GAqBxB0C,EAAM3b,uBAnKiB,SAACijB,GAC3B,OAAO,6BACFA,GADL,IAEE0nB,YAAY,6BACP1nB,EAAM0nB,aADA,IAETpvB,UAAU,SAyIY,IApMN,CACpBkO,eAAgB,CACdiE,MAAO,GACPgG,UAAW,GACX3K,WAAW,EACX9P,aAAc,GACdyE,WAAY,IAEdqqC,gBAAiB,CACfr6B,MAAO,GACP3E,WAAW,EACX9P,aAAc,IAEhB0xB,YAAa,CACXvvB,YAAY,EACZuE,MAAO,KACPpE,UAAU,EACVtC,cAAc,KCosCZ01C,GAAc,SAACrB,GACnB,IAAIC,EAAW,GACXC,EAAe,GACnB,IAAK,IAAIj8B,KAAK+7B,EAAY,CAExBE,EADeF,EAAW/7B,GAAX,MACU+7B,EAAW/7B,GAEtC,IAAK,IAAIA,KAAKi8B,EACZD,EAASxxB,KAAKyxB,EAAaj8B,IAE7B,OAAOg8B,GAIM9D,iBAAa,mBAAC,GAExB9tC,EAAMzU,2BAjnCoB,SAAC+b,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACvC,OAAO,6BACFsJ,GADL,IAEE2zB,UAAU,6BACL3zB,EAAM2zB,WADF,IAEPC,uBAAwBl9B,EACxB2J,KAAM,CACJgnB,gBAAiB,KACjBskB,kBAAmB,aAumCC,aAAC,GAGxBjzC,EAAMvU,wBApmCiB,SAAC6b,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACpC,OAAO,6BACFsJ,GADL,IAEE2zB,UAAU,6BACL3zB,EAAM2zB,WADF,IAEPsC,oBAAqBv/B,EACrB2J,KAAM,UA2lCgB,aAAC,GAIxB3H,EAAMxU,yBA1lCkB,SAAC8b,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACrC,OAAO,6BACFsJ,GADL,IAEE2zB,UAAU,6BACL3zB,EAAM2zB,WADF,IAEP+C,qBAAsBhgC,EACtB2J,KAAM,UAglCgB,aAAC,GAKxB3H,EAAMtU,iCAhlCyB,SAAC4b,EAAD,GAAuC,IAA7B7sB,EAA4B,EAA5BA,MAAO0lB,EAAqB,EAArBA,eAC7CkF,EAAM,gBAAQiC,EAAM2zB,UAAUtzB,MAC9ByzB,EAAO,gBAAQ9zB,EAAMy1B,WAAWp1B,MAEtC,OAAQxH,GACN,KAAKuhB,EAAgBjpB,YACnB4M,EAAOlH,YAAc1jB,EACrB,MACF,KAAKinC,EAAgB/oB,UACnB0M,EAAOw1B,gBAAkB6X,OAAOj4D,GAChC,MACF,KAAKinC,EAAgBtoB,wBACnBiM,EAAOo1B,sBAAwBiY,OAAOj4D,GACtC,MACF,KAAKinC,EAAgBroB,yBACnBgM,EAAOq1B,uBAAyBgY,OAAOj4D,GACvC,MACF,KAAKinC,EAAgBwxB,cACnB7tC,EAAO8tC,aAAeT,OAAOj4D,GAC7B,MACF,KAAKinC,EAAgBpoB,sBACnB+L,EAAOs1B,oBAAsB+X,OAAOj4D,GACpC,MACF,KAAKinC,EAAgBnoB,uBACnB8L,EAAOu1B,qBAAuB8X,OAAOj4D,GACrC,MACF,KAAKinC,EAAgB0xB,YACnB/tC,EAAOguC,WAAaX,OAAOj4D,GAC3B,MACF,KAAKinC,EAAgBloB,iBACnB,IAAIm5C,EAAUjgC,KAAOj4B,GAAO07B,QAAQpD,OAAO,cAC3C1N,EAAOgS,eAAiBs7B,EACxB,MACF,KAAKjxB,EAAgB7nB,kBACnBuhC,EAAQG,UAAY9gD,EACpB,MACF,KAAKinC,EAAgB9nB,iBACnBwhC,EAAQI,SAAW/gD,EACnB,MACF,KAAKinC,EAAgBjoB,cACnB4L,EAAO3E,OAASjmB,EAChB,MACF,KAAKinC,EAAgBhoB,gBACnB2L,EAAOntB,SAAWuC,EAClB,MACF,KAAKinC,EAAgB7qB,kBACdwO,EAAOkjB,kBACVljB,EAAOkjB,gBAAkB,IAE3BljB,EAAOkjB,gBAAgBnI,KAAK3lC,GAC5B,IAAI63D,EAAgBU,GAAY3tC,EAAOkjB,iBACvCljB,EAAOkjB,gBAAkB+pB,EACzB,MACA,KAAK5wB,EAAgB5nB,wBACnBshC,EAAQljD,SAAWuC,EACnB,MACJ,KAAKinC,EAAgB1qB,0BACdokC,EAAQ7S,kBACX6S,EAAQ7S,gBAAkB,IAE5B6S,EAAQ7S,gBAAgBnI,KAAK3lC,GACzB63D,EAAgBZ,GAAetW,EAAQ7S,iBAC3C6S,EAAQ7S,gBAAkB+pB,EAC1B,MACA,KAAK5wB,EAAgB/nB,kBACnB0L,EAAOy1B,WAAargD,EAK1B,OAAO,6BACF6sB,GADL,IAEE2zB,UAAU,6BACL3zB,EAAM2zB,WADF,IAEPtzB,KAAMtC,IAER03B,WAAW,6BACNz1B,EAAMy1B,YADD,IAERp1B,KAAMyzB,SA6/BgB,aAAC,GAOxBp7B,EAAMnU,qBA//Be,SAACyb,GACzB,OAAO,6BACFA,GADL,IAEE2zB,UAAU,6BACL3zB,EAAM2zB,WADF,IAEPr7B,UAAU,SAm/BY,aAAC,GAQxBI,EAAMlU,uBAt/BiB,SAACwb,EAAD,GAAiC,IAAvBgsC,EAAsB,EAAtBA,gBACpC,OAAO,6BACFhsC,GADL,IAEEjC,OAAO,6BACFiC,EAAMjC,QADL,IAEJsC,KAAM2rC,SAy+BgB,aAAC,GASxBtzC,EAAMjU,uBA7+BiB,SAACub,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACpC,OAAO,6BACFgK,GADL,IAEE2zB,UAAU,6BACL3zB,EAAM2zB,WADF,IAEP39B,sBA+9BsB,aAAC,GAUxB0C,EAAMhU,wBAp+BkB,SAACsb,GAC5B,OAAO,6BACFA,GADL,IAEE2zB,UAAU,6BACL3zB,EAAM2zB,WADF,IAEPr7B,UAAU,SAq9BY,aAAC,GAYxBI,EAAMrU,aA59BQ,SAAC2b,EAAD,GAAwB,IAAdjC,EAAa,EAAbA,OAC3B,OAAO,6BACFiC,GADL,IAEE2zB,UAAU,6BACL3zB,EAAM2zB,WADF,IAEPtzB,KAAMtC,SA28BgB,aAAC,GAcxBrF,EAAMxT,qCAp9B4B,SAAC8a,GACtC,OAAO,6BACFA,GADL,IAEEk2B,qBAAqB,6BAChBl2B,EAAMk2B,sBADS,IAElBpwB,WAAW,SAi8BW,aAAC,GAexBpN,EAAMvT,uCA38B8B,SAAC6a,EAAD,GAA0B,IAAhB80B,EAAe,EAAfA,SACjD,OAAO,6BACF90B,GADL,IAEEk2B,qBAAqB,6BAChBl2B,EAAMk2B,sBADS,IAElBzrB,MAAOqqB,SAu7Be,aAAC,GAgBxBp8B,EAAMtT,uCAl8B8B,SAAC4a,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACjD,OAAO,6BACFgK,GADL,IAEEk2B,qBAAqB,6BAChBl2B,EAAMk2B,sBADS,IAElBlgC,sBA66BsB,aAAC,GAiBxB0C,EAAMrT,wCAz7B+B,SAAC2a,GACzC,OAAO,6BACFA,GADL,IAEEk2B,qBAAqB,6BAChBl2B,EAAMk2B,sBADS,IAElBpwB,WAAW,SAm6BW,aAAC,GAmBxBpN,EAAMnS,mCAj7B2B,SAACyZ,EAAD,GAAiC,IAAvBtJ,EAAsB,EAAtBA,KAAM4H,EAAgB,EAAhBA,UAC9Ci2B,EAAkBv0B,EAAMk2B,qBAAqBzrB,MAAMoC,QACvD,SAAC4B,GAAD,OAAOA,EAAEta,KAAOmK,KAChB,GACIrrB,EAAQyjB,EAAOsJ,EAAMy0B,cAAcz+B,aAAe,GACxD,OAAO,6BACFgK,GADL,IAEEy0B,cAAc,6BACTz0B,EAAMy0B,eADE,IAEXp0B,KAAMk0B,EACNG,8BAA+Bh+B,EAC/BV,aAAc/iB,SAm5BQ,aAAC,GAqBxBylB,EAAMnT,6BAn6BsB,SAACya,GAChC,OAAO,6BACFA,GADL,IAEEy0B,cAAc,6BACTz0B,EAAMy0B,eADE,IAEXn8B,UAAU,SAy4BY,aAAC,GAsBxBI,EAAMlT,+BA15BwB,SAACwa,EAAD,GAA2B,IAAjB1B,EAAgB,EAAhBA,UACvCw2B,EAAQ,aAAO90B,EAAMk2B,qBAAqBzrB,OAC1Cu8B,EAAclS,EAASiS,WAAU,SAACt4B,GAAD,OAAOA,EAAEta,KAAOmK,KAMrD,OAJqB,IAAjB0oC,GACFlS,EAASmS,OAAOD,EAAa,GAGxB,6BACFhnC,GADL,IAEEy0B,cAAc,gBACTz0B,EAAMy0B,eAEXyB,qBAAqB,6BAChBl2B,EAAMk2B,sBADS,IAElBzrB,MAAOqqB,SAq3Be,aAAC,GAuBxBp8B,EAAMjT,+BAv4BwB,SAACua,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aAC3C,OAAO,6BACFgK,GADL,IAEEy0B,cAAc,6BACTz0B,EAAMy0B,eADE,IAEXz+B,sBA22BsB,aAAC,GAwBxB0C,EAAMhT,gCA93ByB,SAACsa,GACnC,OAAO,6BACFA,GADL,IAEEy0B,cAAc,6BACTz0B,EAAMy0B,eADE,IAEXp0B,KAAM,GACN/H,UAAU,SAg2BY,aAAC,GA0BxBI,EAAM9S,6BAr3BsB,SAACoa,GAChC,OAAO,6BACFA,GADL,IAEEy1B,WAAW,6BACNz1B,EAAMy1B,YADD,IAERn9B,UAAU,SAs1BY,aAAC,GA2BxBI,EAAM7S,+BA52BwB,SAACma,GAClC,OAAO,6BACFA,GADL,IAEEy1B,WAAW,6BACNz1B,EAAMy1B,YADD,IAERp1B,KAAM,CACJ6zB,SAAU,WA20BU,aAAC,GA4BxBx7B,EAAM5S,+BAj2BwB,SAACka,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aAC3C,OAAO,6BACFgK,GADL,IAEEy1B,WAAW,6BACNz1B,EAAMy1B,YADD,IAERz/B,sBAg0BsB,aAAC,GA6BxB0C,EAAM3S,gCAx1ByB,SAACia,GACnC,OAAO,6BACFA,GADL,IAEEy1B,WAAW,6BACNz1B,EAAMy1B,YADD,IAERn9B,UAAU,SAszBY,aAAC,GA+BxBI,EAAM1S,4BAh1BqB,SAC9Bga,EAD8B,GAG1B,IADFq2B,EACC,EADDA,sBAAuB/3B,EACtB,EADsBA,UAEnBw1B,EAAU9zB,EAAMk2B,qBAAqBzrB,MAAMoC,QAC/C,SAAC4B,GAAD,OAAOA,EAAEta,KAAOmK,KAChB,GAEF,OAAO,6BACF0B,GADL,IAEEm2B,YAAY,6BACPn2B,EAAMm2B,aADA,IAETtU,OAAQwU,EACRh2B,KAAMyzB,SAoyBgB,aAAC,GAiCxBp7B,EAAMpS,kCAh0B0B,SAAC0Z,EAAD,GAAuC,IAA7B7sB,EAA4B,EAA5BA,MAAO0lB,EAAqB,EAArBA,eAC9Ci7B,EAAO,gBAAQ9zB,EAAMm2B,YAAY91B,MAGvC,OAAQxH,GACN,KAAKuhB,EAAgB9nB,iBACnBwhC,EAAQI,SAAW/gD,EACnB,MACF,KAAKinC,EAAgB6xB,cACnBnY,EAAQ3Y,MAAQhoC,EAChB,MACF,KAAKinC,EAAgB7nB,kBACnBuhC,EAAQG,UAAY9gD,EACpB,MACA,KAAKinC,EAAgB5nB,wBACnBshC,EAAQljD,SAAWuC,EAKzB,OAAO,6BACF6sB,GADL,IAEEm2B,YAAY,6BACPn2B,EAAMm2B,aADA,IAET91B,KAAMyzB,SAuwBgB,aAAC,GAmCxBp7B,EAAMngB,gCAryBwB,SAACynB,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KAC3C,OAAO,6BACFsJ,GADL,IAEEy1B,WAAW,6BACNz1B,EAAMy1B,YADD,IAERC,2BAA4Bh/B,SA6vBN,aAAC,GAsCxBgC,EAAMlS,0BA5xBmB,SAACwZ,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACtC,OAAO,6BACFsJ,GADL,IAEE2zB,UAAU,6BACL3zB,EAAM2zB,WADF,IAEPqF,sBAAuBtiC,EACvB2J,KAAM,UAgvBgB,aAAC,GAwCxB3H,EAAMhS,oCAnxB2B,SAACsZ,GACrC,OAAO,6BACFA,GADL,IAEE84B,oBAAoB,6BACf94B,EAAM84B,qBADQ,IAEjBhzB,WAAW,SAsuBW,aAAC,GAyCxBpN,EAAM/R,sCA1wB6B,SAACqZ,EAAD,GAAyB,IAAf43B,EAAc,EAAdA,QAChD,OAAO,6BACF53B,GADL,IAEE84B,oBAAoB,6BACf94B,EAAM84B,qBADQ,IAEjBruB,MAAOmtB,SA4tBe,aAAC,GA0CxBl/B,EAAM9R,sCAjwB6B,SAACoZ,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aAChD,OAAO,6BACFgK,GADL,IAEE84B,oBAAoB,6BACf94B,EAAM84B,qBADQ,IAEjB9iC,sBAktBsB,aAAC,GA2CxB0C,EAAM7R,uCAxvB8B,SAACmZ,GACxC,OAAO,6BACFA,GADL,IAEE84B,oBAAoB,6BACf94B,EAAM84B,qBADQ,IAEjBhzB,WAAW,IAEbyxB,iBAAiB,6BAClBv3B,EAAMu3B,kBADW,IAEdj/B,UAAU,SAosBY,aAAC,GA6CxBI,EAAM5R,kCAnrBuB,SAACkZ,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KAC1C,OAAO,6BACFsJ,GADL,IAEEy3B,UAAU,6BACLz3B,EAAMy3B,WADF,IAEPY,0BAA2B3hC,EAC3B4B,UAAU,SAgoBY,aAAC,GA+CxBI,EAAM1R,4BA9uBqB,SAACgZ,GAC/B,OAAO,6BACFA,GADL,IAEEy3B,UAAU,6BACLz3B,EAAMy3B,WADF,IAEPn/B,UAAU,SA0rBY,aAAC,GAgDxBI,EAAMzR,8BAruBuB,SAAC+Y,EAAD,GAA8B,EAApBksC,cAC1C,OAAO,6BACFlsC,GADL,IAEEy3B,UAAU,6BACLz3B,EAAMy3B,WADF,IAEPp3B,KAAM,CACJxJ,YAAa,WA+qBO,aAAC,GAiDxB6B,EAAMyzC,8BA1tBuB,SAACnsC,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aAC1C,OAAO,6BACFgK,GADL,IAEEy3B,UAAU,6BACLz3B,EAAMy3B,WADF,IAEPzhC,sBAoqBsB,aAAC,GAkDxB0C,EAAM0zC,+BAjtBwB,SAACpsC,GAClC,OAAO,6BACFA,GADL,IAEEy3B,UAAU,6BACLz3B,EAAMy3B,WADF,IAEPn/B,UAAU,SA0pBY,aAAC,GAoDxBI,EAAMrR,gCA/qBwB,SAAC2Y,EAAD,GAAuC,IAA7B7sB,EAA4B,EAA5BA,MAAO0lB,EAAqB,EAArBA,eAC5C+9B,EAAM,gBAAQ52B,EAAMy3B,UAAUp3B,MAEpC,OAAQxH,GACN,KAAKuhB,EAAgB3nB,kBACnBmkC,EAAO//B,YAAc1jB,EACrB,MACF,KAAKinC,EAAgB1nB,mBACnBkkC,EAAOI,WAAa7jD,EACpB,MACF,KAAKinC,EAAgB5qB,yBACdonC,EAAO3V,kBACV2V,EAAO3V,gBAAkB,IAE3B2V,EAAO3V,gBAAgBnI,KAAK3lC,GAC5B,IAAI63D,EAAgBZ,GAAexT,EAAO3V,iBAC1C2V,EAAO3V,gBAAkB+pB,EAI7B,OAAO,6BACFhrC,GADL,IAEEy3B,UAAU,6BACLz3B,EAAMy3B,WADF,IAEPp3B,KAAMu2B,SAmmBgB,aAAC,GAqDxBl+B,EAAMtR,iCAnpByB,SAAC4Y,EAAD,GAAuC,IAA7B7sB,EAA4B,EAA5BA,MAAO0lB,EAAqB,EAArBA,eAC7C+9B,EAAM,gBAAQ52B,EAAM+4B,WAAW14B,MAErC,OAAQxH,GACN,KAAKuhB,EAAgB3nB,kBACnBmkC,EAAO//B,YAAc1jB,EACrB,MACF,KAAKinC,EAAgB1nB,mBACnBkkC,EAAOI,WAAa7jD,EACpB,MACF,KAAKinC,EAAgB5qB,yBACdonC,EAAO3V,kBACV2V,EAAO3V,gBAAkB,IAE3B2V,EAAO3V,gBAAgBnI,KAAK3lC,GAC5B,IAAI63D,EAAgBZ,GAAexT,EAAO3V,iBAC1C2V,EAAO3V,gBAAkB+pB,EAI7B,OAAO,6BACFhrC,GADL,IAEE+4B,WAAW,6BACN/4B,EAAM+4B,YADD,IAER14B,KAAMu2B,SAskBgB,aAAC,GAuDxBl+B,EAAMpR,2BA5sBoB,SAAC0Y,EAAD,GAAgD,IAAtCq5B,EAAqC,EAArCA,qBAAsBz6B,EAAe,EAAfA,SACvDg4B,EAAS52B,EAAM84B,oBAAoBruB,MAAMoC,QAC7C,SAAC4B,GAAD,OAAOA,EAAEta,KAAOyK,KAChB,GAEF,OAAO,6BACFoB,GADL,IAEE+4B,WAAW,6BACN/4B,EAAM+4B,YADD,IAERlX,OAAQwX,EACRh5B,KAAMu2B,SA2oBgB,aAAC,GAwDxBl+B,EAAM9Q,kCAznB0B,SAACoY,EAAD,GAAgC,IAAtBtJ,EAAqB,EAArBA,KAAMkI,EAAe,EAAfA,SAC7Cg4B,GACK,IAATlgC,EACIsJ,EAAM84B,oBAAoBruB,MAAMoC,QAAO,SAAC4B,GAAD,OAAOA,EAAEta,KAAOyK,KAAU,GACjE,GACN,OAAO,6BACFoB,GADL,IAEEu3B,iBAAiB,6BACZv3B,EAAMu3B,kBADK,IAEdl3B,KAAMu2B,EACNY,6BAA8B9gC,SAujBR,aAAC,GA2DxBgC,EAAM7Q,iCA3mB0B,SAACmY,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KAC7C,OAAO,6BACFsJ,GADL,IAEE2zB,UAAU,6BACL3zB,EAAM2zB,WADF,IAEPiI,6BAA8BllC,EAC9B2J,KAAM,UA0iBgB,aAAC,GA6DxB3H,EAAM3Q,4CAlmBkC,SAACiY,GAC5C,OAAO,6BACFA,GADL,IAEE07B,2BAA2B,6BACtB17B,EAAM07B,4BADe,IAExB51B,WAAW,SAgiBW,aAAC,GA8DxBpN,EAAM1Q,8CAzlBoC,SAACgY,EAAD,GAAgC,IAAtBw6B,EAAqB,EAArBA,eACvD,OAAO,6BACFx6B,GADL,IAEE07B,2BAA2B,6BACtB17B,EAAM07B,4BADe,IAExBjxB,MAAO+vB,SAshBe,aAAC,GA+DxB9hC,EAAMzQ,8CAhlBoC,SAAC+X,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACvD,OAAO,6BACFgK,GADL,IAEE07B,2BAA2B,6BACtB17B,EAAM07B,4BADe,IAExB1lC,sBA4gBsB,aAAC,GAgExB0C,EAAMxQ,+CAvkBqC,SAAC8X,GAC/C,OAAO,6BACFA,GADL,IAEE07B,2BAA2B,6BACtB17B,EAAM07B,4BADe,IAExB51B,WAAW,SAkgBW,aAAC,GAkExBpN,EAAMvQ,0CApgB8B,SAAC6X,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACjD,OAAO,6BACFsJ,GADL,IAEEq6B,iBAAiB,6BACZr6B,EAAMq6B,kBADK,IAEdY,8BAA+BvkC,EAC/B4B,UAAU,SA4bY,aAAC,GAoExBI,EAAMrQ,oCAjkB4B,SAAC2X,GACtC,OAAO,6BACFA,GADL,IAEEq6B,iBAAiB,6BACZr6B,EAAMq6B,kBADK,IAEd/hC,UAAU,SAwfY,aAAC,GAqExBI,EAAMpQ,sCAxjB8B,SAAC0X,EAAD,GAAqC,EAA3BqsC,qBACjD,OAAO,6BACFrsC,GADL,IAEEq6B,iBAAiB,6BACZr6B,EAAMq6B,kBADK,IAEdh6B,KAAM,CACJxJ,YAAa,WA6eO,aAAC,GAsExB6B,EAAMnQ,sCA7iB8B,SAACyX,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACjD,OAAO,6BACFgK,GADL,IAEEq6B,iBAAiB,6BACZr6B,EAAMq6B,kBADK,IAEdrkC,sBAkesB,aAAC,GAuExB0C,EAAMlQ,uCApiB+B,SAACwX,GACzC,OAAO,6BACFA,GADL,IAEEq6B,iBAAiB,6BACZr6B,EAAMq6B,kBADK,IAEd/hC,UAAU,SAwdY,aAAC,GAyExBI,EAAMhQ,wCAhgB+B,SACxCsX,EADwC,GAGpC,IADF7sB,EACC,EADDA,MAAO0lB,EACN,EADMA,eAEH8gC,EAAa,gBAAQ35B,EAAMq6B,iBAAiBh6B,MAElD,OAAQxH,GACN,KAAKuhB,EAAgBznB,eACnBgnC,EAAc9iC,YAAc1jB,EAC5B,MACF,KAAKinC,EAAgBxnB,SACnB+mC,EAAcG,QAAU3mD,EACxB,MACF,KAAKinC,EAAgB3qB,kCACdkqC,EAAc1Y,kBACjB0Y,EAAc1Y,gBAAkB,IAElC0Y,EAAc1Y,gBAAgBnI,KAAK3lC,GACnC,IAAI63D,EAAgBZ,GAAezQ,EAAc1Y,iBACjD0Y,EAAc1Y,gBAAkB+pB,EAIpC,OAAO,6BACFhrC,GADL,IAEEq6B,iBAAiB,6BACZr6B,EAAMq6B,kBADK,IAEdh6B,KAAMs5B,SA4ZgB,aAAC,GA0ExBjhC,EAAMjQ,yCAjegC,SACzCuX,EADyC,GAGrC,IADF7sB,EACC,EADDA,MAAO0lB,EACN,EADMA,eAEH8gC,EAAa,gBAAQ35B,EAAM27B,kBAAkBt7B,MAEnD,OAAQxH,GACN,KAAKuhB,EAAgBznB,eACnBgnC,EAAc9iC,YAAc1jB,EAC5B,MACF,KAAKinC,EAAgBxnB,SACnB+mC,EAAcG,QAAU3mD,EACxB,MACF,KAAKinC,EAAgB3qB,kCACdkqC,EAAc1Y,kBACjB0Y,EAAc1Y,gBAAkB,IAElC0Y,EAAc1Y,gBAAgBnI,KAAK3lC,GACnC,IAAI63D,EAAgBZ,GAAezQ,EAAc1Y,iBACjD0Y,EAAc1Y,gBAAkB+pB,EAIpC,OAAO,6BACFhrC,GADL,IAEE27B,kBAAkB,6BACb37B,EAAM27B,mBADM,IAEft7B,KAAMs5B,SA4XgB,aAAC,GA4ExBjhC,EAAM/P,mCA/hBuB,SAChCqX,EADgC,GAG5B,IADFg8B,EACC,EADDA,2BAA4B98B,EAC3B,EAD2BA,gBAExBy6B,EAAgB35B,EAAM07B,2BAA2BjxB,MAAMoC,QAC3D,SAAC4B,GAAD,OAAOA,EAAEta,KAAO+K,KAChB,GACF,OAAO,6BACFc,GADL,IAEE27B,kBAAkB,6BACb37B,EAAM27B,mBADM,IAEf9Z,OAAQma,EACR37B,KAAMs5B,SAucgB,aAAC,GA6ExBjhC,EAAMzP,0CApciC,SAC1C+W,EAD0C,GAGtC,IADFtJ,EACC,EADDA,KAAMwI,EACL,EADKA,gBAEFy6B,GACK,IAATjjC,EACIsJ,EAAM07B,2BAA2BjxB,MAAMoC,QACrC,SAAC4B,GAAD,OAAOA,EAAEta,KAAO+K,KAChB,GACF,GACN,OAAO,6BACFc,GADL,IAEEm6B,wBAAwB,6BACnBn6B,EAAMm6B,yBADY,IAErB95B,KAAMs5B,EACNS,oCAAqC1jC,SAwWf,aAAC,GA+ExBgC,EAAMtO,mCAla2B,SAAC4V,GACrC,OAAO,6BACFA,GADL,IAEE2zB,UAAU,6BACL3zB,EAAM2zB,WADF,IAEPr7B,UAAU,SA8UY,aAAC,GAgFxBI,EAAMrO,qCAzZ6B,SAAC2V,EAAD,GAGtC,IAHmE,IAAnBs+B,EAAkB,EAAlBA,YAC5C2M,EAAyB,GAEpBr2C,EAAQ,EAAGA,EAAQ0pC,EAAYv8B,OAAQnN,IAAS,CACvD,IAAMs2C,EAAU,CACd/2C,GAAImqC,EAAY1pC,GAAOT,GACvBsqB,YAAY,EACZC,SAAS,EACTlC,SAAU,KACVpX,KAAMk5B,EAAY1pC,GAAOk8B,SACzBlU,IAAK0hB,EAAY1pC,GAAOgoB,KAE1BquB,EAAuBnyB,KAAKoyB,GAG9B,OAAO,6BACFlrC,GADL,IAEE2zB,UAAU,6BACL3zB,EAAM2zB,WADF,IAEPtzB,KAAK,6BACAL,EAAM2zB,UAAUtzB,MADjB,IAEF4gB,gBAAiBgqB,EACjBL,wBAAyBK,WAmTL,aAAC,GAiFxBvyC,EAAMpO,qCA9X4B,SAAC0V,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aAC/C,OAAO,6BACFgK,GADL,IAEE2zB,UAAU,6BACL3zB,EAAM2zB,WADF,IAEP39B,sBAwSsB,aAAC,GAkFxB0C,EAAMnO,sCArX6B,SAACyV,EAAD,GAA6B,EAAnBhK,aAChD,OAAO,6BACFgK,GADL,IAEE2zB,UAAU,6BACL3zB,EAAM2zB,WADF,IAEPr7B,UAAU,SA8RY,aAAC,GAoFxBI,EAAMlO,0BAtbc,SAACwV,EAAD,GAA4B,IAAlB/D,EAAiB,EAAjBA,WAC7B8B,EAASiC,EAAM2zB,UAAUtzB,KACzB8qC,EAAwBptC,EAAOkjB,gBAAgBpU,QACjD,SAACxM,GAAD,OAAUA,EAAK+E,OAASnJ,EAAWmJ,QAGrC,OADArH,EAAOkjB,gBAAkBkqB,EAClB,6BACFnrC,GADL,IAEE2zB,UAAU,6BACL3zB,EAAM2zB,WADF,IAEPtzB,KAAMtC,SAwVgB,aAAC,GAuFxBrF,EAAM5L,0CA/WiC,SAACkT,GAC3C,OAAO,6BACFA,GADL,IAEE+4B,WAAW,6BACN/4B,EAAM+4B,YADD,IAERzgC,UAAU,SAmRY,aAAC,GAwFxBI,EAAM3L,4CAtWmC,SAACiT,EAAD,GAG5C,IAHyE,IAAnBs+B,EAAkB,EAAlBA,YAClD2M,EAAyB,GAEpBr2C,EAAQ,EAAGA,EAAQ0pC,EAAYv8B,OAAQnN,IAAS,CACvD,IAAMs2C,EAAU,CACd/2C,GAAImqC,EAAY1pC,GAAOT,GACvBsqB,YAAY,EACZC,SAAS,EACTlC,SAAU,KACVpX,KAAMk5B,EAAY1pC,GAAOk8B,SACzBlU,IAAK0hB,EAAY1pC,GAAOgoB,KAE1BquB,EAAuBnyB,KAAKoyB,GAG9B,OAAO,6BACFlrC,GADL,IAEE+4B,WAAW,6BACN/4B,EAAM+4B,YADD,IAER14B,KAAK,6BACAL,EAAM+4B,WAAW14B,MADlB,IAEF4gB,gBAAiBgqB,EACjBL,wBAAyBK,WAwPL,aAAC,GAyFxBvyC,EAAM1L,4CA3UkC,SAACgT,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACrD,OAAO,6BACFgK,GADL,IAEE+4B,WAAW,6BACN/4B,EAAM+4B,YADD,IAER/iC,sBA6OsB,aAAC,GA0FxB0C,EAAMzL,6CAlUmC,SAAC+S,EAAD,GAA6B,EAAnBhK,aACtD,OAAO,6BACFgK,GADL,IAEE+4B,WAAW,6BACN/4B,EAAM+4B,YADD,IAERzgC,UAAU,SAmOY,aAAC,GA4FxBI,EAAMjM,iCA1ToB,SAACuT,EAAD,GAA4B,IAAlB/D,EAAiB,EAAjBA,WACnC26B,EAAS52B,EAAMy3B,UAAUp3B,KACzB8qC,EAAwBvU,EAAO3V,gBAAgBpU,QACjD,SAACxM,GAAD,OAAUA,EAAK+E,OAASnJ,EAAWmJ,QAGrC,OADAwxB,EAAO3V,gBAAkBkqB,EAClB,6BACFnrC,GADL,IAEEy3B,UAAU,6BACLz3B,EAAMy3B,WADF,IAEPp3B,KAAMu2B,SAoNgB,aAAC,GA6FxBl+B,EAAM/L,sCA5SgC,SAACqT,EAAD,GAA4B,IAAlB/D,EAAiB,EAAjBA,WAC/C26B,EAAS52B,EAAM+4B,WAAW14B,KAC1B8qC,EAAwBvU,EAAO3V,gBAAgBpU,QACjD,SAACxM,GAAD,OAAUA,EAAK+E,OAASnJ,EAAWmJ,QAGrC,OADAwxB,EAAO3V,gBAAkBkqB,EAClB,6BACFnrC,GADL,IAEE+4B,WAAW,6BACN/4B,EAAM+4B,YADD,IAER14B,KAAMu2B,SAqMgB,aAAC,GAgGxBl+B,EAAMnL,mDA/RmC,SAACyS,GAC7C,OAAO,6BACFA,GADL,IAEE27B,kBAAkB,6BACb37B,EAAM27B,mBADM,IAEfrjC,UAAU,SA0LY,aAAC,GAiGxBI,EAAMlL,qDAtRqC,SAACwS,EAAD,GAG9C,IAH2E,IAAnBs+B,EAAkB,EAAlBA,YACpD2M,EAAyB,GAEpBr2C,EAAQ,EAAGA,EAAQ0pC,EAAYv8B,OAAQnN,IAAS,CACvD,IAAMs2C,EAAU,CACd/2C,GAAImqC,EAAY1pC,GAAOT,GACvBsqB,YAAY,EACZC,SAAS,EACTlC,SAAU,KACVpX,KAAMk5B,EAAY1pC,GAAOk8B,SACzBlU,IAAK0hB,EAAY1pC,GAAOgoB,KAE1BquB,EAAuBnyB,KAAKoyB,GAG9B,OAAO,6BACFlrC,GADL,IAEE27B,kBAAkB,6BACb37B,EAAM27B,mBADM,IAEft7B,KAAK,6BACAL,EAAM27B,kBAAkBt7B,MADzB,IAEF4gB,gBAAiBgqB,EACjBL,wBAAyBK,WA+JL,aAAC,GAkGxBvyC,EAAMjL,qDA3PoC,SAACuS,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACvD,OAAO,6BACFgK,GADL,IAEE27B,kBAAkB,6BACb37B,EAAM27B,mBADM,IAEf3lC,sBAoJsB,aAAC,GAmGxB0C,EAAMhL,sDAlPqC,SAACsS,EAAD,GAA6B,EAAnBhK,aACxD,OAAO,6BACFgK,GADL,IAEE27B,kBAAkB,6BACb37B,EAAM27B,mBADM,IAEfrjC,UAAU,SA0IY,aAAC,GAqGxBI,EAAMxL,0CA1O4B,SAAC8S,EAAD,GAA4B,IAAlB/D,EAAiB,EAAjBA,WAC3Cu+B,EAAiBx6B,EAAMq6B,iBAAiBh6B,KACxC8qC,EAAwB3Q,EAAevZ,gBAAgBpU,QACzD,SAACxM,GAAD,OAAUA,EAAK+E,OAASnJ,EAAWmJ,QAGrC,OADAo1B,EAAevZ,gBAAkBkqB,EAC1B,6BACFnrC,GADL,IAEEq6B,iBAAiB,6BACZr6B,EAAMq6B,kBADK,IAEdh6B,KAAMm6B,SA2HgB,aAAC,GAsGxB9hC,EAAMtL,2CA5NuC,SAAC4S,EAAD,GAA4B,IAAlB/D,EAAiB,EAAjBA,WACtD09B,EAAgB35B,EAAM27B,kBAAkBt7B,KACxC8qC,EAAwBxR,EAAc1Y,gBAAgBpU,QACxD,SAACxM,GAAD,OAAUA,EAAK+E,OAASnJ,EAAWmJ,QAGrC,OADAu0B,EAAc1Y,gBAAkBkqB,EACzB,6BACFnrC,GADL,IAEE27B,kBAAkB,6BACb37B,EAAM27B,mBADM,IAEft7B,KAAMs5B,SA4GgB,aAAC,GAyGxBjhC,EAAM1K,2CA/MkC,SAACgS,GAC5C,OAAO,6BACFA,GADL,IAEEm2B,YAAY,6BACPn2B,EAAMm2B,aADA,IAET79B,UAAU,SAiGY,aAAC,GA0GxBI,EAAMzK,6CAtMoC,SAAC+R,EAAD,GAG7C,IAH0E,IAAnBs+B,EAAkB,EAAlBA,YACnD2M,EAAyB,GAEpBr2C,EAAQ,EAAGA,EAAQ0pC,EAAYv8B,OAAQnN,IAAS,CACvD,IAAMs2C,EAAU,CACd/2C,GAAImqC,EAAY1pC,GAAOT,GACvBsqB,YAAY,EACZC,SAAS,EACTlC,SAAU,KACVpX,KAAMk5B,EAAY1pC,GAAOk8B,SACzBlU,IAAK0hB,EAAY1pC,GAAOgoB,KAE1BquB,EAAuBnyB,KAAKoyB,GAG9B,OAAO,6BACFlrC,GADL,IAEEm2B,YAAY,6BACPn2B,EAAMm2B,aADA,IAET91B,KAAK,6BACAL,EAAMm2B,YAAY91B,MADnB,IAEF4gB,gBAAiBgqB,EACjBL,wBAAyBK,WAsEL,aAAC,GA2GxBvyC,EAAMxK,6CA3KmC,SAAC8R,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACtD,OAAO,6BACFgK,GADL,IAEEm2B,YAAY,6BACPn2B,EAAMm2B,aADA,IAETngC,sBA2DsB,aAAC,GA4GxB0C,EAAMvK,8CAlKoC,SAAC6R,EAAD,GAA6B,EAAnBhK,aACvD,OAAO,6BACFgK,GADL,IAEEm2B,YAAY,6BACPn2B,EAAMm2B,aADA,IAET79B,UAAU,SAiDY,aAAC,GA8GxBI,EAAM/K,kCA1JqB,SAACqS,EAAD,GAA4B,IAAlB/D,EAAiB,EAAjBA,WACpC63B,EAAU9zB,EAAMy1B,WAAWp1B,KAC3B8qC,EAAwBrX,EAAQ7S,gBAAgBpU,QAClD,SAACxM,GAAD,OAAUA,EAAK+E,OAASnJ,EAAWmJ,QAGrC,OADA0uB,EAAQ7S,gBAAkBkqB,EACnB,6BACFnrC,GADL,IAEEy1B,WAAW,6BACNz1B,EAAMy1B,YADD,IAERp1B,KAAMyzB,SAkCgB,aAAC,GA+GxBp7B,EAAM7K,uCA5IiC,SAACmS,EAAD,GAA4B,IAAlB/D,EAAiB,EAAjBA,WAChD63B,EAAU9zB,EAAMm2B,YAAY91B,KAC5B8qC,EAAwBrX,EAAQ7S,gBAAgBpU,QAClD,SAACxM,GAAD,OAAUA,EAAK+E,OAASnJ,EAAWmJ,QAGrC,OADA0uB,EAAQ7S,gBAAkBkqB,EACnB,6BACFnrC,GADL,IAEEm2B,YAAY,6BACPn2B,EAAMm2B,aADA,IAET91B,KAAMyzB,SAmBgB,IAhuCN,CACpBH,UAAW,CACTC,wBAAwB,EACxBqC,qBAAqB,EACrBS,sBAAsB,EACtBsC,uBAAuB,EACvB4C,8BAA8B,EAC9Bv7B,KAAM,CACJgnB,gBAAiB,KACjBskB,kBAAmB,KACnB1qB,gBAAiB,GACjB2pB,wBAAyB,IAE3BtyC,UAAU,EACVtC,aAAc,IAEhB+H,OAAQ,CACNsC,KAAM,KACNyF,WAAW,EACX9P,aAAc,IAEhBy/B,WAAY,CACVp1B,KAAM,CACJ6zB,SAAU,GACVjT,gBAAiB,GACjB2pB,wBAAyB,IAE3BtyC,UAAU,EACVtC,aAAc,GACd0/B,4BAA4B,GAE9BQ,qBAAsB,CACpBzrB,MAAO,GACP3E,WAAW,EACX9P,aAAc,MAEhBy+B,cAAe,CACbp0B,KAAM,GACN4W,QAAQ,EACR3e,UAAU,EACVtC,aAAc,KACd0+B,+BAA+B,GAEjCyB,YAAa,CACXtU,QAAQ,EACRxhB,KAAM,KACN/H,UAAU,EACVtC,aAAc,GACdirB,gBAAiB,GACjB2pB,wBAAyB,IAE3B9R,oBAAqB,CACnBruB,MAAO,GACP3E,WAAW,EACX9P,aAAc,MAEhByhC,UAAW,CACTp3B,KAAM,CACJxJ,YAAa,GACboqB,gBAAiB,GACjB2pB,wBAAyB,IAE3BtyC,UAAU,EACVtC,aAAc,GACdqiC,2BAA2B,GAE7BU,WAAY,CACVlX,QAAQ,EACRxhB,KAAM,KACN/H,UAAU,EACVtC,aAAc,GACds2C,8BAA8B,EAC9BrrB,gBAAiB,GACjB2pB,wBAAyB,IAE3BrT,iBAAkB,CAChBl3B,KAAM,GACN/H,UAAU,EACVtC,aAAc,GACdwhC,8BAA8B,GAEhCkE,2BAA4B,CAC1BjxB,MAAO,GACP3E,WAAW,EACX9P,aAAc,MAEhBqkC,iBAAkB,CAChBh6B,KAAM,CACJxJ,YAAa,GACboqB,gBAAiB,GACjB2pB,wBAAyB,IAE3BtyC,UAAU,EACVtC,aAAc,GACdilC,+BAA+B,GAEjCU,kBAAmB,CACjB9Z,QAAQ,EACRxhB,KAAM,KACN/H,UAAU,EACVtC,aAAc,GACdu2C,kCAAkC,EAClCtrB,gBAAiB,GACjB2pB,wBAAyB,IAE3BzQ,wBAAyB,CACvB95B,KAAM,GACN/H,UAAU,EACVtC,aAAc,GACdokC,qCAAqC,KCzEnCoS,GAAgC,SAAC58B,EAAYoV,GACjD,IAAIynB,EAcJ,OAbiB,IAAbznB,EACFynB,EAAkB78B,EACI,IAAboV,EAETynB,EAAkB78B,EAAW/C,QAAO,SAAC+5B,GAAD,OAAoB,IAAbA,EAAExtC,UACvB,IAAb4rB,EAETynB,EAAkB78B,EAAW/C,QAAO,SAAC+5B,GAAD,OAAoB,IAAbA,EAAExtC,UACvB,IAAb4rB,IAETynB,EAAkB78B,EAAW/C,QAAO,SAAC+5B,GAAD,OAAoB,IAAbA,EAAExtC,WAGxCqzC,GAGHC,GAAyC,SAAC98B,EAAY6tB,GAC1D,IAAIgP,EAUJ,OATe,IAAXhP,EACFgP,EAAkB78B,EAAW7C,MAAK,SAAC16B,EAAG26B,GAAJ,OAChC36B,EAAEwkB,YAAYqgB,cAAcoO,cAActY,EAAEnW,YAAYqgB,kBAEtC,IAAXumB,IACTgP,EAAkB78B,EAAW7C,MAAK,SAAC16B,EAAG26B,GAAJ,OAChCA,EAAEnW,YAAYqgB,cAAcoO,cAAcjzC,EAAEwkB,YAAYqgB,mBAGrDu1B,GAwQMjG,iBAAa,mBAAC,GAExB9tC,EAAMpP,sBArJgB,SAAC0W,GAC1B,OAAO,6BACFA,GADL,IAEEs9B,mBAAmB,6BACdt9B,EAAMs9B,oBADO,IAEhBzwB,OAAQ,IAEVyjB,wBAAwB,6BACnBtwB,EAAMswB,yBADY,IAErBzjB,OAAQ,SA0Ic,aAAC,GAGxBnU,EAAMtP,sCArPkC,SAAC4W,EAAD,GAA0B,IAAhBglB,EAAe,EAAfA,SACjDynB,EAAkBD,GACpBxsC,EAAMwQ,gBAAgBC,UACtBuU,GAGE2nB,EAAwBD,GAC1BD,EACAzsC,EAAMswB,wBAAwBzjB,QAEhC,OAAO,6BACF7M,GADL,IAEEwQ,gBAAgB,6BACXxQ,EAAMwQ,iBADI,IAEb/F,MAAOkiC,IAETrP,mBAAmB,6BACdt9B,EAAMs9B,oBADO,IAEhBzwB,OAAQmY,SAgOc,aAAC,GAKxBtsB,EAAMrP,2CA1Q2C,SAAC2W,EAAD,GAAwB,IAAdy9B,EAAa,EAAbA,OAC1DgP,EAAkBC,GACpB1sC,EAAMwQ,gBAAgB/F,MACtBgzB,GAGF,OAAO,6BACFz9B,GADL,IAEEswB,wBAAwB,6BACnBtwB,EAAMswB,yBADY,IAErBzjB,OAAQ4wB,IAEVjtB,gBAAgB,6BACXxQ,EAAMwQ,iBADI,IAEb/F,MAAOgiC,SAuPe,aAAC,GAOxB/zC,EAAMnV,oCA/K2B,SAACyc,GACrC,OAAO,6BACFA,GADL,IAEEwQ,gBAAgB,6BACXxQ,EAAMwQ,iBADI,IAEb1K,WAAW,SAmKW,aAAC,GAQxBpN,EAAMlV,sCAtK6B,SAACwc,EAAD,GAAyB,IAAf8P,EAAc,EAAdA,QAChD,OAAO,6BACF9P,GADL,IAEEwQ,gBAAgB,6BACXxQ,EAAMwQ,iBADI,IAEb/F,MAAOqF,EACPW,UAAWX,SAwJW,aAAC,GASxBpX,EAAMjV,sCA9I6B,SAACuc,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aAChD,OAAO,6BACFgK,GADL,IAEEwQ,gBAAgB,6BACXxQ,EAAMwQ,iBADI,IAEbxa,sBAgIsB,aAAC,GAUxB0C,EAAMhV,uCArI8B,SAACsc,GACxC,OAAO,6BACFA,GADL,IAEEwQ,gBAAgB,6BACXxQ,EAAMwQ,iBADI,IAEb1K,WAAW,SAsHW,aAAC,GAYxBpN,EAAM9U,qCAtD4B,SAACoc,GACtC,OAAO,6BACFA,GADL,IAEE4sC,iBAAiB,6BACZ5sC,EAAM4sC,kBADK,IAEd9mC,WAAW,SAqCW,aAAC,GAaxBpN,EAAM7U,uCA7C8B,SAACmc,EAAD,GAAyB,IAAf8P,EAAc,EAAdA,QACjD,OAAO,6BACF9P,GADL,IAEE4sC,iBAAiB,6BACZ5sC,EAAM4sC,kBADK,IAEdniC,MAAOqF,EACPW,UAAWX,SA0BW,aAAC,GAcxBpX,EAAM5U,uCAnC8B,SAACkc,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACjD,OAAO,6BACFgK,GADL,IAEE4sC,iBAAiB,6BACZ5sC,EAAM4sC,kBADK,IAEd52C,sBAgBsB,aAAC,GAexB0C,EAAM3U,wCA1B+B,SAACic,GACzC,OAAO,6BACFA,GADL,IAEE4sC,iBAAiB,6BACZ5sC,EAAM4sC,kBADK,IAEd9mC,WAAW,SAMW,aAAC,GAiBxBpN,EAAM1U,gCAlIwB,SAACgc,EAAD,GAA4B,IAAlBvF,EAAiB,EAAjBA,WAGvCgyC,EAFO,aAAOzsC,EAAMwQ,gBAAgBC,WAEV5D,QAC5B,SAACsF,GAAD,OAAOA,EAAEtb,aAAesb,EAAEtb,YAAYqgB,cAAczkC,SAASgoB,MAa/D,OAVAgyC,EAAkBD,GAChBC,EACAzsC,EAAMs9B,mBAAmBzwB,QAG3B4/B,EAAkBC,GAChBD,EACAzsC,EAAMswB,wBAAwBzjB,QAGzB,6BACF7M,GADL,IAEEwQ,gBAAgB,6BACXxQ,EAAMwQ,iBADI,IAEb/V,aACAgQ,MAAOgiC,SA2Fe,aAAC,GAmBxB/zC,EAAMlU,uBAzGiB,SAACwb,EAAD,GAAiC,IAAvBgsC,EAAsB,EAAtBA,gBAChCl8B,EAAO,aAAO9P,EAAMwQ,gBAAgBC,WACpCo8B,EAAqB/8B,EAAQi3B,WAC/B,SAAC10D,GAAD,OAAOA,EAAE8hB,KAAO63C,EAAgB73C,OAIN,IAAxB04C,EACF/8B,EAAQ+8B,GAAsBb,EAE9Bl8B,EAAO,uBAAOA,GAAP,CAAgBk8B,IAGzB,IAAIS,EAAkBD,GACpB18B,EACA9P,EAAMs9B,mBAAmBzwB,QAQ3B,OALA4/B,EAAkBC,GAChBD,EACAzsC,EAAMswB,wBAAwBzjB,QAGzB,6BACF7M,GADL,IAEEwQ,gBAAgB,6BACXxQ,EAAM8sC,kBADI,IAEbriC,MAAOgiC,EACPh8B,UAAWX,SA0DW,aAAC,GAqBxBpX,EAAM/T,2BA1EoB,SAACqb,EAAD,GAA8B,IAApBtJ,EAAmB,EAAnBA,KAAMqH,EAAa,EAAbA,OAC7C,OAAO,6BACFiC,GADL,IAEEqwB,aAAa,6BACRrwB,EAAMqwB,cADC,IAEVl4B,WAAYzB,EACZqH,QAAiB,IAATrH,EAAgBqH,EAAS,YA+CX,aAAC,GAuBxBrF,EAAM7T,qBAlPe,SAACmb,GACzB,OAAO,6BACFA,GADL,IAEEqwB,aAAa,6BACRrwB,EAAMqwB,cADC,IAEV/3B,UAAU,SAsNY,aAAC,GAwBxBI,EAAM5T,uBA1OiB,SAACkb,EAAD,GAA0B,IAAhBw1B,EAAe,EAAfA,SAEhCuX,EADuB/sC,EAAMwQ,gBAAgBC,UACD5D,QAC9C,SAAC9O,GAAD,OAAYA,EAAO5J,KAAOqhC,KAIxBwX,EADuBhtC,EAAMwQ,gBAAgB/F,MACDoC,QAC9C,SAAC9O,GAAD,OAAYA,EAAO5J,KAAOqhC,KAG5B,OAAO,6BACFx1B,GADL,IAEEqwB,aAAa,gBACRrwB,EAAMqwB,cAEX7f,gBAAgB,6BACXxQ,EAAMwQ,iBADI,IAEb/F,MAAOuiC,EACPv8B,UAAWs8B,SA+LW,aAAC,GAyBxBr0C,EAAM3T,uBApNiB,SAACib,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACpC,OAAO,6BACFgK,GADL,IAEEqwB,aAAa,6BACRrwB,EAAMqwB,cADC,IAEVr6B,sBAsLsB,aAAC,GA0BxB0C,EAAM1T,wBA5MkB,SAACgb,GAC5B,OAAO,6BACFA,GADL,IAEEqwB,aAAa,6BACRrwB,EAAMqwB,cADC,IAEV/3B,UAAU,SA6KY,IA3UN,CACpBkY,gBAAiB,CACf/F,MAAO,GACPgG,UAAW,GACX3K,WAAW,EACX9P,aAAc,GACdyE,WAAY,IAEdmyC,iBAAkB,CAChBniC,MAAO,GACPgG,UAAW,GACX3K,WAAW,EACX9P,aAAc,IAEhBq6B,aAAc,CACZl4B,YAAY,EACZ4F,OAAQ,KACRzF,UAAU,EACVtC,cAAc,GAEhBsnC,mBAAoB,CAClBzwB,OAAQ,EACRpC,MAAO,CACL,CAAEtW,GAAI,EAAGhhB,MAAO,eAChB,CAAEghB,GAAI,EAAGhhB,MAAO,UAChB,CAAEghB,GAAI,EAAGhhB,MAAO,WAChB,CAAEghB,GAAI,EAAGhhB,MAAO,aAGpBm9C,wBAAyB,CACvBzjB,OAAQ,EACRpC,MAAO,CACL,CAAEtW,GAAI,EAAGhhB,MAAO,mBAChB,CAAEghB,GAAI,EAAGhhB,MAAO,uBCgQPqzD,iBAAa,mBAAC,GAExB9tC,EAAM1a,oCArQ2B,SAACgiB,GACrC,OAAO,6BACFA,GADL,IAEEoG,gBAAgB,6BACXpG,EAAMoG,iBADI,IAEbN,WAAW,SA8PW,aAAC,GAGxBpN,EAAMza,sCA5P6B,SAAC+hB,EAAD,GAAyB,IAAfmG,EAAc,EAAdA,QAChD,OAAO,6BACFnG,GADL,IAEEoG,gBAAgB,6BACXpG,EAAMoG,iBADI,IAEbqE,MAAOtE,EACPsK,UAAWtK,SAmPW,aAAC,GAIxBzN,EAAMxa,sCAlP6B,SAAC8hB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aAChD,OAAO,6BACFgK,GADL,IAEEoG,gBAAgB,6BACXpG,EAAMoG,iBADI,IAEbpQ,sBAyOsB,aAAC,GAKxB0C,EAAMva,uCAzO8B,SAAC6hB,GACxC,OAAO,6BACFA,GADL,IAEEoG,gBAAgB,6BACXpG,EAAMoG,iBADI,IAEbN,WAAW,SA+NW,aAAC,GAOxBpN,EAAMha,qCAjO4B,SAACshB,GACtC,OAAO,6BACFA,GADL,IAEE+kC,iBAAiB,6BACZ/kC,EAAM+kC,kBADK,IAEdj/B,WAAW,SAqNW,aAAC,GAQxBpN,EAAM/Z,uCAxN8B,SAACqhB,EAAD,GAAyB,IAAfmG,EAAc,EAAdA,QACjD,OAAO,6BACFnG,GADL,IAEE+kC,iBAAiB,6BACZ/kC,EAAM+kC,kBADK,IAEdt6B,MAAOtE,EACPsK,UAAWtK,SA0MW,aAAC,GASxBzN,EAAM9Z,uCA9M8B,SAACohB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACjD,OAAO,6BACFgK,GADL,IAEE+kC,iBAAiB,6BACZ/kC,EAAM+kC,kBADK,IAEd/uC,sBAgMsB,aAAC,GAUxB0C,EAAM7Z,wCArM+B,SAACmhB,GACzC,OAAO,6BACFA,GADL,IAEE+kC,iBAAiB,6BACZ/kC,EAAM+kC,kBADK,IAEdj/B,WAAW,SAsLW,aAAC,GAYxBpN,EAAMvZ,gCA7LwB,SAAC6gB,EAAD,GAA4B,IAAlBvF,EAAiB,EAAjBA,WAEvCwyC,EADO,aAAOjtC,EAAMoG,gBAAgBqK,WACV5D,QAC5B,SAAC4zB,GAAD,OACEA,EAAEhvB,iBAAmBgvB,EAAEhvB,gBAAgByF,cAAczkC,SAASgoB,MAGlE,OAAO,6BACFuF,GADL,IAEEoG,gBAAgB,6BACXpG,EAAMoG,iBADI,IAEb3L,aACAgQ,MAAOwiC,SAqKe,aAAC,GAcxBv0C,EAAM9Y,uBA9KiB,SAACogB,EAAD,GAAiC,IAAvBktC,EAAsB,EAAtBA,gBAChC/mC,EAAO,aAAOnG,EAAMoG,gBAAgBqE,OACpC0iC,EAAqBhnC,EAAQ4gC,WAC/B,SAACtG,GAAD,OAAOA,EAAEtsC,KAAO+4C,EAAgB/4C,MAUlC,OAN4B,IAAxBg5C,EACFhnC,EAAQgnC,GAAsBD,EAE9B/mC,EAAO,uBAAOA,GAAP,CAAgB+mC,IAGlB,6BACFltC,GADL,IAEEoG,gBAAgB,6BACXpG,EAAMotC,kBADI,IAEb3iC,MAAOtE,EACPsK,UAAWtK,SA8IW,aAAC,GAgBxBzN,EAAM3Y,2BAzJoB,SAACigB,EAAD,GAA8B,IAApBtJ,EAAmB,EAAnBA,KAAM4G,EAAa,EAAbA,OAC7C,OAAO,6BACF0C,GADL,IAEEsS,aAAa,6BACRtS,EAAMsS,cADC,IAEVna,WAAYzB,EACZ4G,QAAiB,IAAT5G,EAAgB4G,EAAS,YAmIX,aAAC,GAkBxB5E,EAAMzY,qBAhJe,SAAC+f,GACzB,OAAO,6BACFA,GADL,IAEEsS,aAAa,6BACRtS,EAAMsS,cADC,IAEVha,UAAU,SAyHY,aAAC,GAmBxBI,EAAMxY,uBAxIiB,SAAC8f,EAAD,GAA0B,IAAhBgL,EAAe,EAAfA,SAEhCiiC,EADkBjtC,EAAMoG,gBAAgBqE,MACNoC,QACpC,SAACvP,GAAD,OAAYA,EAAOnJ,KAAO6W,KAG5B,OAAO,6BACFhL,GADL,IAEEsS,aAAa,gBACRtS,EAAMsS,cAEXlM,gBAAgB,6BACXpG,EAAMoG,iBADI,IAEbqE,MAAOwiC,SAwGe,aAAC,GAoBxBv0C,EAAMvY,uBAxHiB,SAAC6f,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACpC,OAAO,6BACFgK,GADL,IAEEoG,gBAAgB,6BACXpG,EAAMoG,iBADI,IAEbpQ,sBA+FsB,aAAC,GAqBxB0C,EAAMtY,wBAhHkB,SAAC4f,GAC5B,OAAO,6BACFA,GADL,IAEEsS,aAAa,6BACRtS,EAAMsS,cADC,IAEVha,UAAU,SAsFY,aAAC,GAuBxBI,EAAMra,2CAxGiC,SAAC2hB,GAC3C,OAAO,6BACFA,GADL,IAEEuQ,sBAAsB,6BACjBvQ,EAAMuQ,uBADU,IAEnBzK,WAAW,SA4EW,aAAC,GAwBxBpN,EAAMpa,6CA/FmC,SAAC0hB,EAAD,GAA+B,IAArB8N,EAAoB,EAApBA,cACtD,OAAO,6BACF9N,GADL,IAEEuQ,sBAAsB,6BACjBvQ,EAAMuQ,uBADU,IAEnB9F,MAAOqD,SAkEe,aAAC,GAyBxBpV,EAAMna,6CAtFmC,SAACyhB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACtD,OAAO,6BACFgK,GADL,IAEEuQ,sBAAsB,6BACjBvQ,EAAMuQ,uBADU,IAEnBva,sBAwDsB,aAAC,GA0BxB0C,EAAMla,8CA7EoC,SAACwhB,GAC9C,OAAO,6BACFA,GADL,IAEEuQ,sBAAsB,6BACjBvQ,EAAMuQ,uBADU,IAEnBzK,WAAW,SA8CW,aAAC,GA4BxBpN,EAAM3Z,4CArEkC,SAACihB,GAC5C,OAAO,6BACFA,GADL,IAEEilC,uBAAuB,6BAClBjlC,EAAMilC,wBADW,IAEpBn/B,WAAW,SAoCW,aAAC,GA6BxBpN,EAAM1Z,8CA5DoC,SAACghB,EAAD,GAA+B,IAArB8N,EAAoB,EAApBA,cACvD,OAAO,6BACF9N,GADL,IAEEilC,uBAAuB,6BAClBjlC,EAAMilC,wBADW,IAEpBx6B,MAAOqD,SA0Be,aAAC,GA8BxBpV,EAAMzZ,8CAnDoC,SAAC+gB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACvD,OAAO,6BACFgK,GADL,IAEEilC,uBAAuB,6BAClBjlC,EAAMilC,wBADW,IAEpBjvC,sBAgBsB,aAAC,GA+BxB0C,EAAMxZ,+CA1CqC,SAAC8gB,GAC/C,OAAO,6BACFA,GADL,IAEEilC,uBAAuB,6BAClBjlC,EAAMilC,wBADW,IAEpBn/B,WAAW,SAMW,IAlSN,CACpBM,gBAAiB,CACfqE,MAAO,GACPgG,UAAW,GACX3K,WAAW,EACX9P,aAAc,GACdyE,WAAY,IAEdsqC,iBAAkB,CAChBt6B,MAAO,GACP3E,WAAW,EACX9P,aAAc,IAEhBsc,aAAc,CACZna,YAAY,EACZmF,OAAQ,KACRhF,UAAU,EACVtC,cAAc,GAEhBua,sBAAuB,CACrB9F,MAAO,GACP3E,WAAW,EACX9P,aAAc,IAEhBivC,uBAAwB,CACtBx6B,MAAO,GACP3E,WAAW,EACX9P,aAAc,MCoeHwwC,iBAAa,mBAAC,GAExB9tC,EAAMtZ,2BA/coB,SAAC4gB,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACvC,OAAO,6BACFsJ,GADL,IAEEiG,UAAU,6BACLjG,EAAMiG,WADF,IAEPwV,uBAAwB/kB,EACxB2J,KAAM,UAucgB,aAAC,GAGxB3H,EAAMrZ,wBArciB,SAAC2gB,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACpC,OAAO,6BACFsJ,GADL,IAEEiG,UAAU,6BACLjG,EAAMiG,WADF,IAEPyc,oBAAqBhsB,EACrB2J,KAAM,UA4bgB,aAAC,GAIxB3H,EAAMjZ,yBA3bkB,SAACugB,EAAD,GAAsB,IAAZtJ,EAAW,EAAXA,KACrC,OAAO,6BACFsJ,GADL,IAEEiG,UAAU,6BACLjG,EAAMiG,WADF,IAEPqc,qBAAsB5rB,EACtB2J,KAAM,UAibgB,aAAC,GAKxB3H,EAAMpZ,iCApayB,SAAC0gB,EAAD,GAAuC,IAA7B7sB,EAA4B,EAA5BA,MAAOiqB,EAAqB,EAArBA,eAC7CE,EAAM,gBAAQ0C,EAAMiG,UAAU5F,MAC9B+c,EAAM,gBAAQpd,EAAMgG,UAAU3F,MAEpC,OAAQjD,GACN,KAAKgd,EAAgBrnB,iBACnBuK,EAAOmU,gBAAkBt+B,EACzB,MACF,KAAKinC,EAAgBnnB,kBACnBqK,EAAOqd,iBAAmBxnC,EAC1B,MACF,KAAKinC,EAAgB/mB,YACnBiK,EAAOud,WAAauwB,OAAOj4D,GAC3B,MACF,KAAKinC,EAAgB7mB,qBACnB+J,EAAOwd,UAAYswB,OAAOj4D,GAC1B,MACF,KAAKinC,EAAgB5mB,gBACnB8J,EAAOyd,iBAAmB5nC,EAC1B,MACF,KAAKinC,EAAgBzoB,YACnB,IAAI05C,EAAUjgC,KAAOj4B,GAAO07B,QAAQpD,OAAO,cAC3C2R,EAAOS,WAAawtB,EACpB,MACF,KAAKjxB,EAAgBxoB,aACnBwrB,EAAOjC,MAAQhoC,EACf,MACA,KAAKinC,EAAgB1mB,aACnB4J,EAAO6d,MAAQhoC,EACf,MACJ,KAAKinC,EAAgBvnB,aACnBuqB,EAAO7hB,YAAcpoB,EACrB,MACF,KAAKinC,EAAgB3mB,OACnB2pB,EAAOpS,SAAW73B,EAClB,MACF,KAAKinC,EAAgBzmB,gBACnB2J,EAAO1sB,SAAWuC,EAClB,MACF,KAAKinC,EAAgBtnB,yBACdsqB,EAAO6D,kBACV7D,EAAO6D,gBAAkB,IAE3B7D,EAAO6D,gBAAgBnI,KAAK3lC,GAC5B,IAAI63D,EAAgBZ,GAAehtB,EAAO6D,iBAC1C7D,EAAO6D,gBAAkB+pB,EAK7B,OAAO,6BACFhrC,GADL,IAEEiG,UAAU,6BACLjG,EAAMiG,WADF,IAEP5F,KAAM/C,IAER0I,UAAU,6BACLhG,EAAMgG,WADF,IAEP3F,KAAM+c,SAqWgB,aAAC,GAOxB1kB,EAAM/Y,qBA1Ve,SAACqgB,GACzB,OAAO,6BACFA,GADL,IAEEiG,UAAU,6BACLjG,EAAMiG,WADF,IAEP3N,UAAU,SA8UY,aAAC,GAQxBI,EAAM9Y,uBAjViB,SAACogB,EAAD,GAAiC,IAAvBktC,EAAsB,EAAtBA,gBACpC,OAAO,6BACFltC,GADL,IAEE1C,OAAO,6BACF0C,EAAM1C,QADL,IAEJ+C,KAAM6sC,SAoUgB,aAAC,GASxBx0C,EAAM7Y,uBAxUiB,SAACmgB,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACpC,OAAO,6BACFgK,GADL,IAEEiG,UAAU,6BACLjG,EAAMiG,WADF,IAEPjQ,sBA0TsB,aAAC,GAUxB0C,EAAM5Y,wBA/TkB,SAACkgB,GAC5B,OAAO,6BACFA,GADL,IAEEiG,UAAU,6BACLjG,EAAMiG,WADF,IAEP3N,UAAU,SAgTY,aAAC,GAYxBI,EAAMnZ,aAvTQ,SAACygB,EAAD,GAAwB,IAAd1C,EAAa,EAAbA,OAC3B,OAAO,6BACF0C,GADL,IAEEiG,UAAU,6BACLjG,EAAMiG,WADF,IAEP5F,KAAM/C,SAsSgB,aAAC,GAcxB5E,EAAMpX,4BA/SqB,SAAC0e,GAC/B,OAAO,6BACFA,GADL,IAEEgG,UAAU,6BACLhG,EAAMgG,WADF,IAEP1N,UAAU,SA4RY,aAAC,GAexBI,EAAMnX,8BAtSuB,SAACye,GACjC,OAAO,6BACFA,GADL,IAEEgG,UAAU,6BACLhG,EAAMgG,WADF,IAEP3F,KAAM,CACJwd,WAAY,KACZ1C,MAAO,GACP5f,YAAa,aA+QO,aAAC,GAgBxB7C,EAAMlX,8BAzRuB,SAACwe,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aAC1C,OAAO,6BACFgK,GADL,IAEEgG,UAAU,6BACLhG,EAAMgG,WADF,IAEPhQ,sBAoQsB,aAAC,GAiBxB0C,EAAMjX,+BAhRwB,SAACue,GAClC,OAAO,6BACFA,GADL,IAEEgG,UAAU,6BACLhG,EAAMgG,WADF,IAEP1N,UAAU,SA0PY,aAAC,GAmBxBI,EAAMpY,oCAxQ2B,SAAC0f,GACrC,OAAO,6BACFA,GADL,IAEEkG,oBAAoB,6BACflG,EAAMkG,qBADQ,IAEjBJ,WAAW,SAgPW,aAAC,GAoBxBpN,EAAMnY,sCA/P6B,SAACyf,EAAD,GAAyB,IAAfyf,EAAc,EAAdA,QAChD,OAAO,6BACFzf,GADL,IAEEkG,oBAAoB,6BACflG,EAAMkG,qBADQ,IAEjBuE,MAAOgV,SAsOe,aAAC,GAqBxB/mB,EAAMlY,sCAtP6B,SAACwf,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aAChD,OAAO,6BACFgK,GADL,IAEEkG,oBAAoB,6BACflG,EAAMkG,qBADQ,IAEjBlQ,sBA4NsB,aAAC,GAsBxB0C,EAAMjY,uCA7O8B,SAACuf,GACxC,OAAO,6BACFA,GADL,IAEEkG,oBAAoB,6BACflG,EAAMkG,qBADQ,IAEjBJ,WAAW,SAkNW,aAAC,GAwBxBpN,EAAM/X,4BArOqB,SAACqf,GAC/B,OAAO,6BACFA,GADL,IAEE+F,aAAa,6BACR/F,EAAM+F,cADC,IAEVzN,UAAU,SAwMY,aAAC,GAyBxBI,EAAM9X,8BA5NuB,SAACof,EAAD,GAA0B,IAAhB2hB,EAAe,EAAfA,SACtClC,EAAO,aAAOzf,EAAMkG,oBAAoBuE,OACxCu8B,EAAcvnB,EAAQsnB,WAAU,SAACt4B,GAAD,OAAOA,EAAEta,KAAOwtB,KAMpD,OAJqB,IAAjBqlB,GACFvnB,EAAQwnB,OAAOD,EAAa,GAGvB,6BACFhnC,GADL,IAEE+F,aAAa,gBACR/F,EAAM+F,cAEXG,oBAAoB,6BACflG,EAAMkG,qBADQ,IAEjBuE,MAAOgV,SAoLe,aAAC,GA0BxB/mB,EAAM7X,8BAzMuB,SAACmf,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aAC1C,OAAO,6BACFgK,GADL,IAEE+F,aAAa,6BACR/F,EAAM+F,cADC,IAEV/P,sBA0KsB,aAAC,GA2BxB0C,EAAM5X,+BAhMwB,SAACkf,GAClC,OAAO,6BACFA,GADL,IAEE+F,aAAa,6BACR/F,EAAM+F,cADC,IAEVzN,UAAU,SAgKY,aAAC,GA6BxBI,EAAM3X,2BAxLoB,SAACif,EAAD,GAAgD,IACzEod,EADmC4E,EAAqC,EAArCA,qBAAsBL,EAAe,EAAfA,SAQ7D,OANIA,IACFvE,EAASpd,EAAMkG,oBAAoBuE,MAAMoC,QACvC,SAAC4B,GAAD,OAAOA,EAAEta,KAAOwtB,KAChB,IAGG,6BACF3hB,GADL,IAEE4hB,WAAW,6BACN5hB,EAAM4hB,YADD,IAERC,OAAQG,EACR3hB,KAAM+c,SA8IgB,aAAC,GA+BxB1kB,EAAMlZ,iCAxKyB,SAACwgB,EAAD,GAAuC,IAA7B7sB,EAA4B,EAA5BA,MAAOiqB,EAAqB,EAArBA,eAC7CggB,EAAM,gBAAQpd,EAAM4hB,WAAWvhB,MAErC,OAAQjD,GACN,KAAKgd,EAAgBvnB,aACnBuqB,EAAO7hB,YAAcpoB,EACrB,MACF,KAAKinC,EAAgBzoB,YACnB,IAAI05C,EAAUjgC,KAAOj4B,GAAO07B,QAAQpD,OAAO,cAC3C2R,EAAOS,WAAawtB,EACpB,MACF,KAAKjxB,EAAgBxoB,aACnBwrB,EAAOjC,MAAQhoC,EACf,MACF,KAAKinC,EAAgBtnB,yBACdsqB,EAAO6D,kBACV7D,EAAO6D,gBAAkB,IAE3B7D,EAAO6D,gBAAgBnI,KAAK3lC,GAC5B,IAAI63D,EA1OU,SAACX,GACnB,IAAIC,EAAW,GACXC,EAAe,GACnB,IAAK,IAAIj8B,KAAK+7B,EAAY,CAExBE,EADeF,EAAW/7B,GAAX,MACU+7B,EAAW/7B,GAEtC,IAAK,IAAIA,KAAKi8B,EACZD,EAASxxB,KAAKyxB,EAAaj8B,IAE7B,OAAOg8B,EAgOiBoB,CAAYtuB,EAAO6D,iBACvC7D,EAAO6D,gBAAkB+pB,EAI7B,OAAO,6BACFhrC,GADL,IAEE4hB,WAAW,6BACN5hB,EAAM4hB,YADD,IAERvhB,KAAM+c,SA6GgB,aAAC,GAgCxB1kB,EAAMrgB,+BAxIuB,SAAC2nB,EAAD,GAA2C,IAAjCtJ,EAAgC,EAAhCA,KAAM6E,EAA0B,EAA1BA,YAAaC,EAAa,EAAbA,OAC7D,OAAO,6BACFwE,GADL,IAEEgG,UAAU,6BACLhG,EAAMgG,WADF,IAEPgb,0BAA2BtqB,EAC3BkqB,wBAAyBplB,EACzB6E,KAAK,6BACAL,EAAMgG,UAAU3F,MADjB,IAEF9E,YAAaA,GAAe,cA+FR,aAAC,GAkCxB7C,EAAM1O,mBA9coB,SAACgW,EAAD,GAA8B,IAApBF,EAAmB,EAAnBA,aACjCxC,EAAM,gBAAQ0C,EAAMiG,UAAU5F,MAGpC,OAFA/C,EAAO1sB,SAAWkvB,EAEX,6BACFE,GADL,IAEEiG,UAAU,6BACLjG,EAAMiG,WADF,IAEP5F,KAAM/C,SAoagB,aAAC,GAqCxB5E,EAAMtN,0CA9HiC,SAAC4U,GAC3C,OAAO,6BACFA,GADL,IAEE4hB,WAAW,6BACN5hB,EAAM4hB,YADD,IAERtpB,UAAU,SAoFY,aAAC,GAsCxBI,EAAMrN,4CArHmC,SAAC2U,EAAD,GAG5C,IAHyE,IAAnBs+B,EAAkB,EAAlBA,YAClD2M,EAAyB,GAEpBr2C,EAAQ,EAAGA,EAAQ0pC,EAAYv8B,OAAQnN,IAAS,CACvD,IAAMs2C,EAAU,CACd/2C,GAAImqC,EAAY1pC,GAAOT,GACvBsqB,YAAY,EACZC,SAAS,EACTlC,SAAU,KACVpX,KAAMk5B,EAAY1pC,GAAOk8B,SACzBlU,IAAK0hB,EAAY1pC,GAAOgoB,KAE1BquB,EAAuBnyB,KAAKoyB,GAG9B,OAAO,6BACFlrC,GADL,IAEE4hB,WAAW,6BACN5hB,EAAM4hB,YADD,IAERvhB,KAAK,6BACAL,EAAM4hB,WAAWvhB,MADlB,IAEF4gB,gBAAiBgqB,EACjBL,wBAAyBK,WAyDL,aAAC,GAuCxBvyC,EAAMpN,4CA1FkC,SAAC0U,EAAD,GAA8B,IAApBhK,EAAmB,EAAnBA,aACrD,OAAO,6BACFgK,GADL,IAEE4hB,WAAW,6BACN5hB,EAAM4hB,YADD,IAER5rB,sBA8CsB,aAAC,GAwCxB0C,EAAMnN,6CAjFmC,SAACyU,EAAD,GAA6B,EAAnBhK,aACtD,OAAO,6BACFgK,GADL,IAEE4hB,WAAW,6BACN5hB,EAAM4hB,YADD,IAERtpB,UAAU,SAoCY,aAAC,GA0CxBI,EAAM3N,iCAzEc,SAACiV,EAAD,GAA4B,IAAlB/D,EAAiB,EAAjBA,WAC7BmhB,EAASpd,EAAMgG,UAAU3F,KACzB8qC,EAAwB/tB,EAAO6D,gBAAgBpU,QACjD,SAACxM,GAAD,OAAUA,EAAK+E,OAASnJ,EAAWmJ,QAGrC,OADAgY,EAAO6D,gBAAkBkqB,EAClB,6BACFnrC,GADL,IAEEgG,UAAU,6BACLhG,EAAMgG,WADF,IAEP3F,KAAM+c,SAqBgB,aAAC,GA4CxB1kB,EAAM1N,sCA5DgC,SAACgV,EAAD,GAA4B,IAAlB/D,EAAiB,EAAjBA,WAC/CmhB,EAASpd,EAAM4hB,WAAWvhB,KAC1B8qC,EAAwB/tB,EAAO6D,gBAAgBpU,QACjD,SAACxM,GAAD,OAAUA,EAAK+E,OAASnJ,EAAWmJ,QAGrC,OADAgY,EAAO6D,gBAAkBkqB,EAClB,6BACFnrC,GADL,IAEE4hB,WAAW,6BACN5hB,EAAM4hB,YADD,IAERvhB,KAAM+c,SAMgB,IA1fN,CACpBnX,UAAW,CACTwV,wBAAwB,EACxBiH,qBAAqB,EACrBJ,sBAAsB,EACtBjiB,KAAM,GACN/H,UAAU,EACVtC,aAAc,IAEhBsH,OAAQ,CACN+C,KAAM,KACNyF,WAAW,EACX9P,aAAc,IAEhBgQ,UAAW,CACT3F,KAAM,CACJwd,WAAY,KACZ1C,MAAO,GACP5f,YAAa,KACb0lB,gBAAiB,GACjB2pB,wBAAyB,IAE3BtyC,UAAU,EACVtC,aAAc,GACdgrB,2BAA2B,EAC3BJ,wBAAyB,MAE3B1a,oBAAqB,CACnBuE,MAAO,GACP3E,WAAW,EACX9P,aAAc,MAEhB+P,aAAc,CACZkR,QAAQ,EACR3e,UAAU,EACVtC,aAAc,MAEhB4rB,WAAY,CACVC,QAAQ,EACRxhB,KAAM,CAAE4gB,gBAAiB,GAAI2pB,wBAAyB,IACtDtyC,UAAU,EACVtC,aAAc,MCnBHq3C,8BAAgB,CAC7BrgB,aACAj0B,WACA8I,WACAwH,YACAzP,UACAsG,SACAtuB,QACAwgC,YACA/L,cACApL,aACAwL,aACA3K,YACAyK,UACA7J,SACAoT,WACA/R,UACAoI,WACA7I,Y,qBCnCIgwC,GAAc,SAACjxC,EAAgBkxC,GACnC,OAAOC,uBACLC,kBAAO,oBAEPrtB,kBAAO,mBAAoB,kBAE3BA,kBAAO,QAASmtB,GAChBntB,kBAAO,sBAAqCstB,IAAnBrxC,EAA+B,EAAIA,GAC5DsxC,gBAAK,cAAe,WACpBC,gBAAK,UAAYL,GACjBM,yBAIEC,GAA8B,SAACP,EAAOlxC,GAAR,OAClCmxC,uBACEC,kBAAO,oBAEPrtB,kBAAO,mBAAoB,kBAE3BA,kBAAO,QAASmtB,GAChBntB,kBAAO,sBAAqCstB,IAAnBrxC,EAA+B,EAAIA,GAE5DsxC,gBAAK,cAAe,WACpBC,gBAAK,UAAYL,KAgBfQ,GAAWP,uBAEfptB,kBACE,gBACA,wDAEFA,kBAAO,UAAW,MAClBA,kBAAO,SAAU,aAGb4tB,GAAwB,SAC5Bp6D,EACAmpB,EACAwwC,EACAU,EACA5xC,GAEA,IAAM6xC,EAA8CZ,GAClDjxC,EACAkxC,GAGF,OAAOY,uBACLC,gBAAKC,KAAKC,UAAUvxC,GAAU,oBAC9BmxC,EACAK,kBAAON,GACPO,mBAJKL,CAKLv6D,IAyBS27B,GAAM,SAAC37B,EAAM25D,EAAOlxC,GAAd,OACjB8xC,uBACEb,GAAYjxC,EAAgBkxC,GAC5BQ,GAFFI,CAGEv6D,GAAM66D,KAAKC,KAYFC,GAAO,SAAC/6D,EAAMmpB,EAASwwC,EAAOlxC,GACzC,OAAO2xC,GACLp6D,EACAmpB,EACAwwC,EACA,OACAlxC,GACAoyC,KAAKC,KAWIE,GAAM,SAACh7D,EAAMmpB,EAASwwC,EAAOlxC,GACxC,OAAO2xC,GACLp6D,EACAmpB,EACAwwC,EACA,MACAlxC,GACAoyC,KAAKC,KAcIG,GAAU,SAACj7D,EAAMk7D,EAAUvB,EAAOlxC,GAC7C,OAAO8xC,uBACLL,GAA4BP,EAAOlxC,GACnCkyC,kBAAO,UAFFJ,CAGLv6D,GAAM66D,KAAKC,KAGf,SAASA,GAAcK,GACrB,OAAIA,EAASC,GACJC,QAAQC,QAAQH,GAElBE,QAAQE,OAAOJ,GAcT,ICpLFK,GAAkB,SAAC/yC,GAAD,OAC7BgzC,GAAW,sBAAkB3B,EAAWrxC,IAE7BizC,GAAgB,SAACv2C,EAASsD,GAAV,OAC3BgzC,GAAY,iBAAkBt2C,OAAS20C,EAAWrxC,IAEvCkzC,GAAc,SAACx2C,EAASsD,GAAV,OACzBgzC,GAAA,yBACoBt2C,EAAQ5E,IAC1B4E,OACA20C,EACArxC,I,YCVMmzC,I,YAQAC,I,YAmBAC,I,YAgCAC,I,YA8BAC,I,YAyCeC,IAlIzB,SAAUL,KAAV,2EAGuB,OAFfM,EAAwB,SAAC9vC,GAAD,OAAWA,EAAME,MAAMtuB,KAAKyuB,MAD5D,SAG6BwU,aAAOi7B,GAHpC,cAGQ79B,EAHR,OAIQ5V,EAAiB4V,GAAgBA,EAAa9d,GAJtD,kBAKSkI,GALT,wCAQA,SAAUozC,KAAV,2EAE2B,OAF3B,kBAEiCD,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAMliB,4BAH5B,OAIyB,OAJzB,SAI+Bu5D,aACzBC,GACA3zC,GANN,OAQI,OARJ,SAIY4zC,EAJZ,EAIYA,SAJZ,UAQUrB,aAAI,CACRn2C,KAAMC,EAAMjiB,4BACZw3C,aAAcgiB,IAVpB,gCAaI,OAbJ,oCAaUL,GAAal3C,EAAMhiB,4BAAP,MAbtB,QAeI,OAfJ,oBAeUk4D,aAAI,CAAEn2C,KAAMC,EAAM/hB,+BAf5B,yFAmBA,SAAU+4D,GAAV,kFAE2B,OAFQ32C,EAAnC,EAAmCA,QAASC,EAA5C,EAA4CA,KAA5C,kBAEiCw2C,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAMxiB,uBAH5B,UAKM8iB,IAAS0iB,EALf,iBAMU,OANV,UAMgBq0B,aAAKC,GAA4Bj3C,EAASsD,GAN1D,4CAOU,OAPV,UAOgB0zC,aAAKC,GAA0Bj3C,EAASsD,GAPxD,4BASI,OATJ,OAIY4zC,EAJZ,EAIYA,SAJZ,UASUrB,aAAI,CACRn2C,KAAMC,EAAMviB,uBACZmxD,iBAAkB2I,IAXxB,WAcQj3C,IAAS0iB,EAdjB,iBAeM,OAfN,UAeYkzB,aAAI,CAAEn2C,KAAMC,EAAMrkB,2BAA4BqiB,MAAM,IAfhE,gCAiBM,OAjBN,UAiBYk4C,aAAI,CAAEn2C,KAAMC,EAAMpkB,yBAA0BoiB,MAAM,IAjB9D,QAkBM,OAlBN,UAkBYk4C,aAAI,CACRn2C,KAAMC,EAAM3iB,oCACZ2gB,MAAM,EACNyC,UAAW,EACXC,OAAQ,IAtBhB,gCA0BI,OA1BJ,oCA0BUw2C,GAAal3C,EAAMtiB,uBAAP,MA1BtB,QA4BI,OA5BJ,oBA4BUw4D,aAAI,CAAEn2C,KAAMC,EAAMriB,0BA5B5B,yFAgCA,SAAUs5D,GAAV,gFAE2B,OAFc52C,EAAzC,EAAyCA,QAAzC,kBAEiCy2C,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAMxiB,uBAH5B,OAIyB,OAJzB,SAI+B65D,aACzBC,GACAj3C,EACAsD,GAPN,OAUI,OAVJ,SAIY4zC,EAJZ,EAIYA,SAJZ,UAUUrB,aAAI,CACRn2C,KAAMC,EAAMviB,uBACZmxD,iBAAkB2I,IAZxB,QAeI,OAfJ,UAeUrB,aAAI,CAAEn2C,KAAMC,EAAMniB,sBAf5B,QAiBI,OAjBJ,UAiBUq4D,aAAI,CACRn2C,KAAMC,EAAM3iB,oCACZ2gB,MAAM,EACNyC,UAAW,EACXC,OAAQ,IArBd,gCAwBI,OAxBJ,oCAwBUw2C,GAAal3C,EAAMtiB,uBAAP,MAxBtB,QA0BI,OA1BJ,oBA0BUw4D,aAAI,CAAEn2C,KAAMC,EAAMriB,0BA1B5B,yFA8BA,SAAUu5D,GAAan3C,EAAMxlB,GAA7B,gFACMi9D,GAAuB,EACvBC,EAAuB,GACtBl9D,EAAM+7D,GAHb,iBAMM,OANN,SAKYoB,EAAQn9D,EAAMm9D,QAL1B,SAMYA,EAAM1vC,OAAO+tC,MAAK,SAAC/tC,GACvByvC,EAAuB9B,KAAKgC,MAAM3vC,GAClCwvC,GAAuB,KAR/B,uDAWMA,GAAuB,EACvBC,EAAoB,KAZ1B,YAeQD,EAfR,iBAiBM,OADMl6C,EAAes6C,GAAoBH,GAhB/C,UAiBYvB,aAAI,CAAEn2C,OAAMzC,iBAjBxB,sDAsBA,SAASs6C,GAAoBH,GAC3B,IAAIn6C,EAAe,GAEnB,IACE,IAAMuL,EAAU4uC,EAAqBI,iBACjCJ,EAAqBI,iBAAiB13B,MAAM,YAAY,GACxDs3B,EAAqBK,eAEzBx6C,EAAeq4C,KAAKgC,MAAM9uC,GAASvL,gBAEjCA,EAAe,oBAEjB,MAAO/iB,GACP+iB,EAAe,mBAGjB,OAAOA,EAGM,SAAU65C,KAAV,iEACb,OADa,SACPY,aAAW/3C,EAAMniB,oBAAqBk5D,IAD/B,OAEb,OAFa,SAEPgB,aAAW/3C,EAAMziB,eAAgBy5D,IAF1B,OAGb,OAHa,SAGPe,aACJ/3C,EAAM1iB,6BACN25D,IALW,wCCtIR,IACMe,GAAmB,SAAC/pC,GAAD,OAC9B0oC,GAAA,iCAAqC1oC,KAE1BgqC,GAAgB,SAAC72C,GAAD,OAC3Bu1C,GAAA,wBAA4Bv1C,KAEjB82C,GAAiB,SAACv0C,GAAD,OAC5BgzC,GAAW,qBAAiB3B,EAAWrxC,IAE5Bw0C,GAAe,SAACj3C,EAAQyC,GAAT,OAC1BgzC,GAAY,gBAAiBz1C,OAAQ8zC,EAAWrxC,IAErCy0C,GAAe,SAACl3C,EAAQyC,GAAT,OAC1BgzC,GAAA,wBAA4Bz1C,EAAOzF,IAAMyF,OAAQ8zC,EAAWrxC,I,YCVpDmzC,I,YAQAuB,I,YAeAC,I,YA+BAC,I,YA0BAC,I,YAgBAC,I,YAiBAvB,I,YAwCewB,IAzJzB,SAAU5B,KAAV,2EAGuB,OAFfM,EAAwB,SAAC9vC,GAAD,OAAWA,EAAME,MAAMtuB,KAAKyuB,MAD5D,SAG6BwU,aAAOi7B,GAHpC,cAGQ79B,EAHR,OAIQ5V,EAAiB4V,GAAgBA,EAAa9d,GAJtD,kBAKSkI,GALT,wCAQA,SAAU00C,KAAV,2EAE2B,OAF3B,kBAEiCvB,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAM1jB,uBAH5B,OAKyB,OALzB,SAK+B+6D,aAAKsB,GAA4Bh1C,GALhE,OAOI,OAPJ,SAKY4zC,EALZ,EAKYA,SALZ,UAOUrB,aAAI,CAAEn2C,KAAMC,EAAMxjB,uBAAwBm0B,SAAU4mC,IAP9D,gCASI,OATJ,oCASUL,GAAal3C,EAAMvjB,uBAAP,MATtB,QAWI,OAXJ,oBAWUy5D,aAAI,CAAEn2C,KAAMC,EAAMtjB,wBAX5B,yFAeA,SAAU47D,GAAV,kFAE2B,OAFOp3C,EAAlC,EAAkCA,OAAQZ,EAA1C,EAA0CA,KAA1C,kBAEiCw2C,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAMljB,sBAH5B,UAKMwjB,IAAS0iB,EALf,iBAMU,OANV,UAMgBq0B,aAAKsB,GAA0Bz3C,EAAQyC,GANvD,4CAOU,OAPV,UAOgB0zC,aAAKsB,GAA0Bz3C,EAAQyC,GAPvD,4BAQI,OARJ,OAIY4zC,EAJZ,EAIYA,SAJZ,UAQUrB,aAAI,CACRn2C,KAAMC,EAAMjjB,sBACZ+xD,gBAAiByI,IAVvB,WAaQj3C,IAAS0iB,EAbjB,iBAcM,OAdN,UAcYkzB,aAAI,CAAEn2C,KAAMC,EAAMlkB,0BAA2BkiB,MAAM,IAd/D,gCAgBM,OAhBN,UAgBYk4C,aAAI,CAAEn2C,KAAMC,EAAMjkB,wBAAyBiiB,MAAM,IAhB7D,QAiBM,OAjBN,UAiBYk4C,aAAI,CACRn2C,KAAMC,EAAM9iB,mCACZ8gB,MAAM,EACNoD,SAAU,EACVV,OAAQ,IArBhB,gCAyBI,OAzBJ,oCAyBUw2C,GAAal3C,EAAMhjB,sBAAP,MAzBtB,QA2BI,OA3BJ,oBA2BUk5D,aAAI,CAAEn2C,KAAMC,EAAM/iB,yBA3B5B,yFA+BA,SAAUs7D,GAAV,gFAE2B,OAFar3C,EAAxC,EAAwCA,OAAxC,kBAEiC41C,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAMljB,sBAH5B,OAIyB,OAJzB,SAI+Bu6D,aAAKsB,GAA0Bz3C,EAAQyC,GAJtE,OAMI,OANJ,SAIY4zC,EAJZ,EAIYA,SAJZ,UAMUrB,aAAI,CACRn2C,KAAMC,EAAMjjB,sBACZ+xD,gBAAiByI,IARvB,QAWI,OAXJ,UAWUrB,aAAI,CAAEn2C,KAAMC,EAAMzjB,iBAX5B,QAaI,OAbJ,UAaU25D,aAAI,CACRn2C,KAAMC,EAAM9iB,mCACZ8gB,MAAM,EACNoD,SAAU,EACVV,OAAQ,IAjBd,gCAoBI,OApBJ,oCAoBUw2C,GAAal3C,EAAMhjB,sBAAP,MApBtB,QAsBI,OAtBJ,oBAsBUk5D,aAAI,CAAEn2C,KAAMC,EAAM/iB,yBAtB5B,yFA0BA,SAAUu7D,GAAV,8EAEI,OAF+CvqC,EAAnD,EAAmDA,OAAnD,kBAEUioC,aAAI,CAAEn2C,KAAMC,EAAMxf,+CAF5B,OAIyB,OAJzB,SAI+B62D,aAAKsB,GAA8B1qC,GAJlE,OAKI,OALJ,SAIYspC,EAJZ,EAIYA,SAJZ,UAKUrB,aAAI,CACRn2C,KAAMC,EAAMvf,+CACZygB,OAAQq2C,IAPd,gCAUI,OAVJ,oCAUUL,GAAal3C,EAAMtf,+CAAP,MAVtB,QAYI,OAZJ,oBAYUw1D,aAAI,CAAEn2C,KAAMC,EAAMrf,kDAZ5B,yFAgBA,SAAU83D,GAAV,8EAEI,OAF0Cr3C,EAA9C,EAA8CA,SAA9C,kBAEU80C,aAAI,CAAEn2C,KAAMC,EAAMnf,0CAF5B,OAIyB,OAJzB,SAI+Bw2D,aAAKsB,GAA2Bv3C,GAJ/D,OAKI,OALJ,SAIYm2C,EAJZ,EAIYA,SAJZ,UAKUrB,aAAI,CACRn2C,KAAMC,EAAMlf,0CACZogB,OAAQq2C,IAPd,gCAUI,OAVJ,oCAUUL,GAAal3C,EAAMjf,0CAAP,MAVtB,QAYI,OAZJ,oBAYUm1D,aAAI,CAAEn2C,KAAMC,EAAMhf,6CAZ5B,yFAiBA,SAAUk2D,GAAan3C,EAAMxlB,GAA7B,gFACMi9D,GAAuB,EACvBC,EAAuB,GACtBl9D,EAAM+7D,GAHb,iBAMM,OANN,SAKYoB,EAAQn9D,EAAMm9D,QAL1B,SAMYA,EAAM1vC,OAAO+tC,MAAK,SAAC/tC,GACvByvC,EAAuB9B,KAAKgC,MAAM3vC,GAClCwvC,GAAuB,KAR/B,uDAWMA,GAAuB,EACvBC,EAAoB,KAZ1B,YAeQD,EAfR,iBAiBM,OADMl6C,EAAes6C,GAAoBH,GAhB/C,UAiBYvB,aAAI,CAAEn2C,OAAMzC,iBAjBxB,sDAsBA,SAASs6C,GAAoBH,GAC3B,IAAIn6C,EAAe,GAEnB,IACE,IAAMuL,EAAU4uC,EAAqBI,iBACjCJ,EAAqBI,iBAAiB13B,MAAM,YAAY,GACxDs3B,EAAqBK,eAEzBx6C,EAAeq4C,KAAKgC,MAAM9uC,GAASvL,gBAEjCA,EAAe,oBAEjB,MAAO/iB,GACP+iB,EAAe,mBAGjB,OAAOA,EAEM,SAAUo7C,KAAV,iEACb,OADa,SACPX,aAAW/3C,EAAMzjB,eAAgB87D,IAD1B,OAGb,OAHa,SAGPN,aAAW/3C,EAAMnjB,cAAey7D,IAHzB,OAKb,OALa,SAKPP,aACJ/3C,EAAM7iB,4BACNo7D,IAPW,OAUb,OAVa,SAUPR,aACJ/3C,EAAMzf,uCACNi4D,IAZW,OAcb,OAda,UAcPT,aACJ/3C,EAAMpf,kCACN63D,IAhBW,yCC7JR,IAGMG,GAAmB,SAACx3C,GAAD,OAC9Bu1C,GAAA,iCAAqCv1C,KAE1By3C,GAAkB,SAACt2C,EAAWoB,GAAZ,OAC7BgzC,GAAY,kBAAmBp0C,OAAWyyC,EAAWrxC,IAE1Cm1C,GAAkB,SAACv2C,EAAWoB,GAAZ,OAC7BgzC,GAAA,0BACqBp0C,EAAU9G,IAC7B8G,OACAyyC,EACArxC,IAGSgoB,GAAyB,SAAC9oB,GAAD,OACpC8zC,GAAA,0BAA8B9zC,EAA9B,c,YCbQi0C,I,YAQAiC,I,YAiBAC,I,YA6BAC,I,YAqBA/B,I,YAyCegC,IApHzB,SAAUpC,KAAV,2EAGuB,OAFfM,EAAwB,SAAC9vC,GAAD,OAAWA,EAAME,MAAMtuB,KAAKyuB,MAD5D,SAG6BwU,aAAOi7B,GAHpC,cAGQ79B,EAHR,OAIQ5V,EAAiB4V,GAAgBA,EAAa9d,GAJtD,kBAKSkI,GALT,wCAQA,SAAUo1C,GAAV,8EAEI,OAFgC33C,EAApC,EAAoCA,SAApC,kBAEU80C,aAAI,CAAEn2C,KAAMC,EAAMphB,6BAF5B,OAIyB,OAJzB,SAI+By4D,aAAK8B,GAAiC/3C,GAJrE,OAMI,OANJ,SAIYm2C,EAJZ,EAIYA,SAJZ,UAMUrB,aAAI,CACRn2C,KAAMC,EAAMnhB,6BACZ+uB,cAAe2pC,IARrB,gCAWI,OAXJ,oCAWUL,GAAal3C,EAAMlhB,6BAAP,MAXtB,QAaI,OAbJ,oBAaUo3D,aAAI,CAAEn2C,KAAMC,EAAMjhB,gCAb5B,yFAiBA,SAAUi6D,GAAV,kFAE2B,OAFUz2C,EAArC,EAAqCA,UAAWjC,EAAhD,EAAgDA,KAAhD,kBAEiCw2C,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAM3gB,yBAH5B,UAKMihB,IAAS0iB,EALf,iBAMU,OANV,UAMgBq0B,aAAK8B,GAAgC52C,EAAWoB,GANhE,4CAOU,OAPV,UAOgB0zC,aAAK8B,GAAgC52C,EAAWoB,GAPhE,4BAQI,OARJ,OAIY4zC,EAJZ,EAIYA,SAJZ,UAQUrB,aAAI,CACRn2C,KAAMC,EAAM1gB,yBACZoxD,mBAAoB6G,IAV1B,WAaQj3C,IAAS0iB,EAbjB,iBAcM,OAdN,UAcYkzB,aAAI,CAAEn2C,KAAMC,EAAMhhB,6BAA8Bgf,MAAM,EAAOoE,SAAS,IAdlF,YAe+B,IAAtBG,EAAUH,QAfnB,iBAgBQ,OAhBR,UAgBc8zC,aAAI,CAAEn2C,KAAMC,EAAMle,kCAAmCrH,MAAO88D,EAAS97C,GAAI0E,eAAgBuhB,EAAgB1pB,YAhBvH,gCAmBM,OAnBN,UAmBYk+C,aAAI,CAAEn2C,KAAMC,EAAM/gB,2BAA4B+e,MAAM,IAnBhE,QAoBM,OApBN,UAoBYk4C,aAAI,CAAEn2C,KAAMC,EAAMtgB,6BAA8Bse,MAAM,IApBlE,gCAuBI,OAvBJ,oCAuBUk5C,GAAal3C,EAAMzgB,yBAAP,MAvBtB,QAyBI,OAzBJ,oBAyBU22D,aAAI,CAAEn2C,KAAMC,EAAMxgB,4BAzB5B,yFA6BA,SAAUy5D,GAAV,8EAEI,OAFsCp2C,EAA1C,EAA0CA,YAA1C,kBAEUqzC,aAAI,CAAEn2C,KAAMC,EAAM/W,oCAF5B,OAIyB,OAJzB,SAI+BouD,aACzB8B,GACAt2C,GANN,OASI,OATJ,SAIY00C,EAJZ,EAIYA,SAJZ,UASUrB,aAAI,CACRn2C,KAAMC,EAAM9W,oCACZ4iC,oBAAqByrB,IAX3B,gCAcI,OAdJ,oCAcUL,GAAal3C,EAAM7W,oCAAP,MAdtB,QAgBI,OAhBJ,oBAgBU+sD,aAAI,CAAEn2C,KAAMC,EAAM5W,uCAhB5B,yFAqBA,SAAU8tD,GAAan3C,EAAMxlB,GAA7B,gFACMi9D,GAAuB,EACvBC,EAAuB,GACtBl9D,EAAM+7D,GAHb,iBAMM,OANN,SAKYoB,EAAQn9D,EAAMm9D,QAL1B,SAMYA,EAAM1vC,OAAO+tC,MAAK,SAAC/tC,GACvByvC,EAAuB9B,KAAKgC,MAAM3vC,GAClCwvC,GAAuB,KAR/B,uDAWMA,GAAuB,EACvBC,EAAoB,KAZ1B,YAeQD,EAfR,iBAiBM,OADMl6C,EAAes6C,GAAoBH,GAhB/C,UAiBYvB,aAAI,CAAEn2C,OAAMzC,iBAjBxB,sDAsBA,SAASs6C,GAAoBH,GAC3B,IAAIn6C,EAAe,GAEnB,IACE,IAAMuL,EAAU4uC,EAAqBI,iBACjCJ,EAAqBI,iBAAiB13B,MAAM,YAAY,GACxDs3B,EAAqBK,eAEzBx6C,EAAeq4C,KAAKgC,MAAM9uC,GAASvL,gBAEjCA,EAAe,oBAEjB,MAAO/iB,GACP+iB,EAAe,mBAGjB,OAAOA,EAGM,SAAU47C,KAAV,iEACb,OADa,SACPnB,aAAW/3C,EAAMrhB,qBAAsBo6D,IADhC,OAGb,OAHa,SAGPhB,aAAW/3C,EAAM5gB,iBAAkB45D,IAH5B,OAIb,OAJa,SAIPjB,aACJ/3C,EAAMhX,4BACNiwD,IANW,wCCzHR,IAAMG,GAAuB,SAACx4C,GAAD,OAClC+1C,GAAA,qBAAyB/1C,KAEdy4C,GAAiB,SAACz4C,EAAW+C,GAAZ,OAC5BgzC,GAAA,qBACgB/1C,EADhB,yBAEEo0C,OACAA,EACArxC,IAGS21C,GAAc,SAAC31C,GAAD,OACzBgzC,GAAW,kBAAc3B,EAAWrxC,IAEzB41C,GAAa,SAACrgE,EAAMyqB,GAAP,OACxBgzC,GAAY,aAAcz9D,OAAM87D,EAAWrxC,IAEhC61C,GAAW,SAACtgE,EAAMyqB,GAAP,OACtBgzC,GAAA,qBAAyBz9D,EAAKuiB,IAAMviB,OAAM87D,EAAWrxC,IAE1C81C,GAA+B,SAACp1C,GAAD,OAC1CsyC,GAAA,qBAAyBtyC,EAAQ4J,OAAjC,0BAAyD5J,EAAQjD,Y,YChBzD01C,I,YAQA4C,I,YAYAC,I,YAiBAC,I,YAgBAC,I,YA2BAC,I,YAmBA5C,I,YAyCe6C,IA5IzB,SAAUjD,KAAV,2EAGuB,OAFfM,EAAwB,SAAC9vC,GAAD,OAAWA,EAAME,MAAMtuB,KAAKyuB,MAD5D,SAG6BwU,aAAOi7B,GAHpC,cAGQ79B,EAHR,OAIQ5V,EAAiB4V,GAAgBA,EAAa9d,GAJtD,kBAKSkI,GALT,wCAQA,SAAU+1C,GAAV,8EAEI,OAFkC94C,EAAtC,EAAsCA,UAAtC,kBAEUs1C,aAAI,CAAEn2C,KAAMC,EAAMjgB,2BAF5B,OAGyB,OAHzB,SAG+Bs3D,aAAK2C,GAA+Bp5C,GAHnE,OAII,OAJJ,SAGY22C,EAHZ,EAGYA,SAHZ,UAIUrB,aAAI,CAAEn2C,KAAMC,EAAMhgB,2BAA4B9G,KAAMq+D,IAJ9D,gCAMI,OANJ,oCAMUL,GAAal3C,EAAM/f,2BAAP,MANtB,QAQI,OARJ,oBAQUi2D,aAAI,CAAEn2C,KAAMC,EAAM9f,8BAR5B,yFAYA,SAAUy5D,GAAV,4EAE2B,OAFgB/4C,EAA3C,EAA2CA,UAA3C,kBAEiCk2C,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAM1hB,qCAH5B,OAII,OAJJ,SAIU+4D,aAAK2C,GAAyBp5C,EAAW+C,GAJnD,OAKI,OALJ,UAKUuyC,aAAI,CAAEn2C,KAAMC,EAAMzhB,uCAL5B,gCAOI,OAPJ,oCAOU24D,GAAal3C,EAAMxhB,qCAAP,MAPtB,QASI,OATJ,oBASU03D,c9OlCkBluC,E8OmCV,4CAAD,OAA6CpH,EAA7C,K9OnCqB,CACpCb,KAAMC,EAAMxkB,aACZ6oB,QAAS,CACPwE,QAAS,CACPb,Y8OqBN,QAYI,OAZJ,UAYUkuC,aAAI,CAAEn2C,KAAMC,EAAMvhB,wCAZ5B,QAaI,OAbJ,UAaUy3D,aAAI,CAAEn2C,KAAMC,EAAM5hB,4BAA6B4f,MAAM,IAb/D,8D9OzB2B,IAACgK,I8OyB5B,wBAiBA,SAAU4xC,KAAV,2EAE2B,OAF3B,kBAEiC9C,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAMtW,wBAH5B,OAIyB,OAJzB,SAI+B2tD,aAAK2C,GAAsBr2C,GAJ1D,OAKI,OALJ,SAIY4zC,EAJZ,EAIYA,SAJZ,UAKUrB,aAAI,CACRn2C,KAAMC,EAAMrW,wBACZ+sC,SAAU6gB,IAPhB,gCAUI,OAVJ,oCAUUL,GAAal3C,EAAMpW,wBAAP,MAVtB,QAYI,OAZJ,oBAYUssD,aAAI,CAAEn2C,KAAMC,EAAMnW,2BAZ5B,yFAgBA,SAAUgwD,GAAV,kFAE2B,OAFC3gE,EAA5B,EAA4BA,KAAMonB,EAAlC,EAAkCA,KAAlC,kBAEiCw2C,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAM/V,oBAH5B,UAKMqW,IAAS0iB,EALf,iBAMU,OANV,UAMgBq0B,aAAK2C,GAAqB9gE,EAAMyqB,GANhD,4CAOU,OAPV,UAOgB0zC,aAAK2C,GAAmB9gE,EAAMyqB,GAP9C,4BASI,OATJ,OAIY4zC,EAJZ,EAIYA,SAJZ,UASUrB,aAAI,CACRn2C,KAAMC,EAAM9V,oBACZikD,cAAeoJ,IAXrB,WAcQj3C,IAAS0iB,EAdjB,iBAeM,OAfN,UAeYkzB,aAAI,CAAEn2C,KAAMC,EAAM3W,wBAAyB2U,MAAM,IAf7D,gCAiBM,OAjBN,UAiBYk4C,aAAI,CAAEn2C,KAAMC,EAAM1W,sBAAuB0U,MAAM,IAjB3D,QAkBM,OAlBN,UAkBYk4C,aAAI,CAAEn2C,KAAMC,EAAMzW,wBAAyByU,MAAM,IAlB7D,gCAqBI,OArBJ,oCAqBUk5C,GAAal3C,EAAM7V,oBAAP,MArBtB,QAuBI,OAvBJ,oBAuBU+rD,aAAI,CAAEn2C,KAAMC,EAAM5V,uBAvB5B,yFA2BA,SAAU0vD,GAAV,8EAEI,OAFsCz1C,EAA1C,EAA0CA,QAA1C,kBAEU6xC,aAAI,CAAEn2C,KAAMC,EAAM9jB,qCAF5B,OAGyB,OAHzB,SAG+Bm7D,aACzB2C,GACA31C,GALN,OAOI,OAPJ,SAGYkzC,EAHZ,EAGYA,SAHZ,UAOUrB,aAAI,CACRn2C,KAAMC,EAAM7jB,qCACZoiC,OAAQg5B,IATd,gCAYI,OAZJ,oCAYUL,GAAal3C,EAAM5jB,qCAAP,MAZtB,QAcI,OAdJ,oBAcU85D,aAAI,CAAEn2C,KAAMC,EAAM3jB,wCAd5B,yFAmBA,SAAU66D,GAAan3C,EAAMxlB,GAA7B,gFACMi9D,GAAuB,EACvBC,EAAuB,GACtBl9D,EAAM+7D,GAHb,iBAMM,OANN,SAKYoB,EAAQn9D,EAAMm9D,QAL1B,SAMYA,EAAM1vC,OAAO+tC,MAAK,SAAC/tC,GACvByvC,EAAuB9B,KAAKgC,MAAM3vC,GAClCwvC,GAAuB,KAR/B,uDAWMA,GAAuB,EACvBC,EAAoB,KAZ1B,YAeQD,EAfR,iBAiBM,OADMl6C,EAAes6C,GAAoBH,GAhB/C,UAiBYvB,aAAI,CAAEn2C,OAAMzC,iBAjBxB,sDAsBA,SAASs6C,GAAoBH,GAC3B,IAAIn6C,EAAe,GAEnB,IACE,IAAMuL,EAAU4uC,EAAqBI,iBACjCJ,EAAqBI,iBAAiB13B,MAAM,YAAY,GACxDs3B,EAAqBK,eAEzBx6C,EAAeq4C,KAAKgC,MAAM9uC,GAASvL,gBAEjCA,EAAe,oBAEjB,MAAO/iB,GACP+iB,EAAe,mBAGjB,OAAOA,EAGM,SAAUy8C,KAAV,iEACb,OADa,SACPhC,aACJ/3C,EAAM3hB,6BACNs7D,IAHW,OAKb,OALa,SAKP5B,aAAW/3C,EAAMlgB,mBAAoB45D,IAL9B,OAOb,OAPa,SAOP3B,aAAW/3C,EAAMvW,gBAAiBmwD,IAP3B,OAQb,OARa,SAQP7B,aAAW/3C,EAAMhW,YAAa6vD,IARvB,OAUb,OAVa,UAUP9B,aACJ/3C,EAAM/jB,6BACN69D,IAZW,yC,yBChJFG,GAAe,SAACrzC,GAAD,OAC1B+vC,GAAA,kCAAsC/vC,KAEzBszC,GAAmB,SAAC94C,EAAUiD,GAAX,OAChCsyC,GAAA,gDAAqDv1C,GAAYiD,IAGpD81C,GAAc,uCAAG,WAC5Bt7B,EACAzd,EACAwkC,GAH4B,eAAAjsD,EAAA,uEAMlBygE,EAAW,IAAIC,UACZC,OACPz7B,EACA+mB,EACAA,EAAYl5B,MAVU,kBAalB6tC,KACHtE,KADG,6CAEoC70C,GACtCg5C,EACA,CACE,eAAgB,wBAGlBrE,MAAK,SAACyE,GAEN,OADUA,EAAK32B,QAGhB42B,OAAM,SAACC,GAENpgE,QAAQC,MAAMmgE,OA3BM,wFAAH,0DCPhBC,GAA0B,SACrCl3C,EACAC,EACAC,GAEA,OAAOgzC,GAAA,2BACelzC,EADf,kBACqCC,GAC1CC,IAQSi3C,GAAwB,SAACx5C,GAAD,OACnCu1C,GAAA,2BAA+Bv1C,EAA/B,aAEWy5C,GAAoB,SAC/BC,EACAn3C,EACAvC,GAEA,OAAOu1C,GAAA,6CACiCmE,EADjC,YACwD15C,GAC7DuC,IAISw2C,GAAiB,SAC5B12C,EACAC,EACAtC,EACAwkC,GAEA,IAAK,IAAIhwB,EAAI,EAAGA,EAAIgwB,EAAYv8B,OAAQuM,IACtC,IACE,IAAMwkC,EAAW,IAAIC,SACrBD,EAASE,OACP1U,EAAYhwB,GAAGlJ,KACfk5B,EAAYhwB,GAAGkO,SACf8hB,EAAYhwB,GAAGlJ,MAEjB6tC,KACGtE,KADH,2BAEwBxyC,EAFxB,kBAE8CC,EAF9C,YAE0DtC,GACtDg5C,EACA,CACE,eAAgB,wBAGnBrE,MAAK,SAACyE,OACNC,OAAM,SAACC,GAENpgE,QAAQC,MAAMmgE,MAElB,MAAOK,M,YCnDHC,I,YAoBAC,I,YAuBAC,I,YAmCAC,I,YAoCAjE,I,YAyCekE,IA3JzB,SAAUJ,GAAV,gFAEI,OAF+Bp0C,EAAnC,EAAmCA,aAAcxF,EAAjD,EAAiDA,SAAjD,kBAEU80C,aAAI,CACRn2C,KAAMC,EAAMlP,0BACZu+C,oBAAqBzoC,EACrBxF,aALN,OAQyB,OARzB,SAQ+Bi2C,aAAKgE,GAA0Bz0C,GAR9D,OASI,OATJ,SAQY2wC,EARZ,EAQYA,SARZ,UASUrB,aAAI,CACRn2C,KAAMC,EAAMjP,4BACZ4oB,aAAc49B,IAXpB,gCAcI,OAdJ,oCAcUL,GAAal3C,EAAMhP,4BAAP,MAdtB,QAgBI,OAhBJ,oBAgBUklD,aAAI,CAAEn2C,KAAMC,EAAM/O,+BAhB5B,yFAoBA,SAAUgqD,GAAV,8EAEI,OAFwC75C,EAA5C,EAA4CA,SAA5C,kBAEU80C,aAAI,CACRn2C,KAAMC,EAAMlP,0BACZu+C,oBAAqBiM,GACrBl6C,aALN,OAQyB,OARzB,SAQ+Bi2C,aACzBkE,GACAn6C,GAVN,OAYI,OAZJ,SAQYm2C,EARZ,EAQYA,SARZ,UAYUrB,aAAI,CACRn2C,KAAMC,EAAMjP,4BACZ4oB,aAAc49B,IAdpB,gCAiBI,OAjBJ,oCAiBUL,GAAal3C,EAAMhP,4BAAP,MAjBtB,QAmBI,OAnBJ,oBAmBUklD,aAAI,CAAEn2C,KAAMC,EAAM/O,+BAnB5B,yFAuBA,SAAUiqD,GAAV,oFAGE,OAH8B72C,EAAhC,EAAgCA,QAAhC,kBAGQ6xC,aAAI,CACRn2C,KAAMC,EAAMpK,4BAJhB,OAYgB,OALVwL,EAAWiD,EAAQjD,SACnByd,EAAmBxa,EAAQwa,iBAC3B+mB,EAAcvhC,EAAQuhC,YAT5B,SAYsByR,aAClBgE,GACAx8B,EACAzd,EACAwkC,GAhBJ,OAqBE,OATM/hB,EAZR,OAmBOtgB,EAAasgB,EAnBpB,UAqBQqyB,aAAI,CACRn2C,KAAMC,EAAMnK,4BACZ0N,eAvBJ,gCA0BE,OA1BF,oCA0BQ2zC,GAAal3C,EAAMlK,4BAAP,MA1BpB,QA4BE,OA5BF,oBA4BQogD,aAAI,CAAEn2C,KAAMC,EAAMjK,+BA5B1B,yFAmCA,SAAUolD,GAAV,gFAGI,OAH+B92C,EAAnC,EAAmCA,QAAnC,kBAGU6xC,aAAI,CACRn2C,KAAMC,EAAM/J,+BAJlB,OAUwB,OAHhBmL,EAAWiD,EAAQjD,SACjBwe,EAAWvb,EAAQgZ,aAR7B,SAU8Bg6B,aACxBgE,GACAj6C,EACAiD,GAbN,oBAgBsB,IAhBtB,EAUWkzC,SAVX,iBAiBQ,OAjBR,UAiBcrB,aAAI,CACRn2C,KAAMC,EAAM9J,+BACZ0pB,aAnBV,gCAyBI,OAzBJ,oCAyBUs3B,GAAal3C,EAAM7J,+BAAP,MAzBtB,QA2BI,OA3BJ,oBA2BU+/C,aAAI,CAAEn2C,KAAMC,EAAM5J,kCA3B5B,yFAoCA,SAAU8gD,GAAan3C,EAAMxlB,GAA7B,gFACMi9D,GAAuB,EACvBC,EAAuB,GACtBl9D,EAAM+7D,GAHb,iBAMM,OANN,SAKYoB,EAAQn9D,EAAMm9D,QAL1B,SAMYA,EAAM1vC,OAAO+tC,MAAK,SAAC/tC,GACvByvC,EAAuB9B,KAAKgC,MAAM3vC,GAClCwvC,GAAuB,KAR/B,uDAWMA,GAAuB,EACvBC,EAAoB,KAZ1B,YAeQD,EAfR,iBAiBM,OADMl6C,EAAes6C,GAAoBH,GAhB/C,UAiBYvB,aAAI,CAAEn2C,OAAMzC,iBAjBxB,sDAsBA,SAASs6C,GAAoBH,GAC3B,IAAIn6C,EAAe,GAEnB,IACE,IAAMuL,EAAU4uC,EAAqBI,iBACjCJ,EAAqBI,iBAAiB13B,MAAM,YAAY,GACxDs3B,EAAqBK,eAEzBx6C,EAAeq4C,KAAKgC,MAAM9uC,GAASvL,gBAEjCA,EAAe,oBAEjB,MAAO/iB,GACP+iB,EAAe,mBAGjB,OAAOA,EAGM,SAAU89C,KAAV,iEACb,OADa,SACPrD,aAAW/3C,EAAMnP,oBAAqBmqD,IAD/B,OAEb,OAFa,SAEPjD,aACJ/3C,EAAMxO,+BACNypD,IAJW,OAMb,OANa,SAMPlD,aAAW/3C,EAAMrK,oBAAqBulD,IAN/B,OAQb,OARa,SAQPnD,aAAW/3C,EAAMhK,uBAAwBmlD,IARlC,wCCjKR,IAAMK,GAAsB,SAACp6C,GAAD,OACjCu1C,GAAA,+BAAmCv1C,KAExBq6C,GAAuB,SAACh7C,GAAD,OAClCk2C,GAAA,gCAAoCl2C,KAEzBi7C,GAAiB,SAACt4C,EAAUO,GAAX,OAC5BgzC,GAAY,gBAAiBvzC,OAAU4xC,EAAWrxC,IAEvCg4C,GAAe,SAACv4C,EAAUO,GAAX,OAC1BgzC,GAAA,wBACmBvzC,EAAS3H,IAC1B2H,OACA4xC,EACArxC,IAGSi4C,GAAiB,SAACC,EAAYl4C,GAAb,OAC5BgzC,GAAA,wBACmBkF,GACjB7G,OACAA,EACArxC,I,YCZMmzC,I,YAQAgF,I,YAgBAC,I,YAmBAC,I,YAgEAC,I,YAmCAC,I,YAwBAC,I,YAuBAC,I,YAoBAlF,I,YAwCewB,IAzPzB,SAAU5B,KAAV,2EAGuB,OAFfM,EAAwB,SAAC9vC,GAAD,OAAWA,EAAME,MAAMtuB,KAAKyuB,MAD5D,SAG6BwU,aAAOi7B,GAHpC,cAGQ79B,EAHR,OAIQ5V,EAAiB4V,GAAgBA,EAAa9d,GAJtD,kBAKSkI,GALT,wCAQA,SAAUm4C,GAAV,8EAEI,OAFwC16C,EAA5C,EAA4CA,SAA5C,kBAEU80C,aAAI,CAAEn2C,KAAMC,EAAM9e,uCAF5B,OAIyB,OAJzB,SAI+Bm2D,aAAKgF,GAAkCj7C,GAJtE,OAKI,OALJ,SAIYm2C,EAJZ,EAIYA,SAJZ,UAKUrB,aAAI,CACRn2C,KAAMC,EAAM7e,uCACZ4sB,UAAWwpC,IAPjB,gCAUI,OAVJ,oCAUUL,GAAal3C,EAAM5e,uCAAP,MAVtB,QAYI,OAZJ,oBAYU80D,aAAI,CAAEn2C,KAAMC,EAAM3e,0CAZ5B,yFAgBA,SAAU06D,GAAV,8EAEI,OAFyCt7C,EAA7C,EAA6CA,UAA7C,kBAEUy1C,aAAI,CAAEn2C,KAAMC,EAAMze,wCAF5B,OAIyB,OAJzB,SAI+B81D,aACzBgF,GACA57C,GANN,OAQI,OARJ,SAIY82C,EAJZ,EAIYA,SAJZ,UAQUrB,aAAI,CACRn2C,KAAMC,EAAMxe,wCACZusB,UAAWwpC,IAVjB,gCAaI,OAbJ,oCAaUL,GAAal3C,EAAMve,wCAAP,MAbtB,QAeI,OAfJ,oBAeUy0D,aAAI,CAAEn2C,KAAMC,EAAMte,2CAf5B,yFAmBA,SAAUs6D,GAAV,8FAE2B,OAFS54C,EAApC,EAAoCA,SAAU9C,EAA9C,EAA8CA,KAA9C,kBAEiCw2C,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAMzd,wBAH5B,UAKM+d,IAAS0iB,EALf,iBAMU,OANV,UAMgBq0B,aAAKgF,GAA6Bj5C,EAAUO,GAN5D,4CAOU,OAPV,UAOgB0zC,aAAKgF,GAA2Bj5C,EAAUO,GAP1D,sCAIY4zC,EAJZ,EAIYA,SAKF9zC,EAAe+lB,GACfpoB,EAAWgC,EAAShC,WAKC,qBADrBwkC,EAAckM,GAA8B1uC,KACRwiC,EAAYv8B,OAAS,GAfnE,iBAiBM,OADI3F,EAAW6zC,EAAS97C,GAhB9B,UAiBYy6C,aAAI,CACRn2C,KAAMC,EAAMnM,gCACZ4P,eACAC,WACAtC,WACAwkC,gBAtBR,aA6BoC,qBAF1B3hB,EAAqB8tB,GAAgC3uC,KAGzD6gB,EAAmB5a,OAAS,GA9BlC,iBAiCM,OADIizC,EAAqBr4B,EAAmBzR,KAAI,SAAC07B,GAAD,OAAOA,EAAEzyC,MAhC/D,UAiCYy6C,aAAI,CACRn2C,KAAMC,EAAMlM,gCACZwoD,qBACA34C,iBACAvC,aArCR,QAyCI,OAzCJ,UAyCU80C,aAAI,CACRn2C,KAAMC,EAAMxd,wBACZgvD,kBAAmB+F,IA3CzB,WA8CQj3C,IAAS0iB,EA9CjB,iBA+CM,OA/CN,UA+CYkzB,aAAI,CAAEn2C,KAAMC,EAAMpe,4BAA6Boc,MAAM,IA/CjE,gCAiDM,OAjDN,UAiDYk4C,aAAI,CAAEn2C,KAAMC,EAAMne,0BAA2Bmc,MAAM,IAjD/D,gCA0DI,OA1DJ,oCA0DUk5C,GAAal3C,EAAMvd,wBAAP,MA1DtB,QA4DI,OA5DJ,oBA4DUyzD,aAAI,CAAEn2C,KAAMC,EAAMtd,2BA5D5B,yFAgEA,SAAUu5D,GAAV,gFAE2B,OAFe53C,EAA1C,EAA0CA,QAA1C,kBAEiCyyC,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAM9d,sCAH5B,OAIyB,OAJzB,SAI+Bm1D,aACzBgF,GACAh4C,EAAQjB,SAAS3H,GACjBkI,GAPN,OAUI,OAVJ,SAIY4zC,EAJZ,EAIYA,SAJZ,UAUUrB,aAAI,CACRn2C,KAAMC,EAAM7d,sCACZ2sD,gBAAiByI,IAZvB,QAeI,OAfJ,UAeUrB,aAAI,CACRn2C,KAAMC,EAAM/e,+BACZmgB,SAAUiD,EAAQjB,SAAShC,WAjBjC,QAoBI,OApBJ,UAoBU80C,aAAI,CACRn2C,KAAMC,EAAMhe,qCACZgc,MAAM,EACNoF,SAAU,KACV1C,OAAQ,OAxBd,gCA2BI,OA3BJ,oCA2BUw2C,GAAal3C,EAAM5d,sCAAP,MA3BtB,QA6BI,OA7BJ,oBA6BU8zD,aAAI,CAAEn2C,KAAMC,EAAM3d,yCA7B5B,yFAmCA,SAAU65D,GAAV,kFAMI,OALFz4C,EADF,EACEA,aACAC,EAFF,EAEEA,SACAC,EAHF,EAGEA,eAHF,kBAMUuyC,aAAI,CAAEn2C,KAAMC,EAAMxM,sCAN5B,OAOyB,OAPzB,SAO+B6jD,aACzBkF,GACA94C,EACAC,EACAC,GAXN,OAaI,OAbJ,SAOY4zC,EAPZ,EAOYA,SAPZ,UAaUrB,aAAI,CACRn2C,KAAMC,EAAMvM,sCACZmyC,YAAa2R,IAfnB,gCAkBI,OAlBJ,oCAkBUL,GAAal3C,EAAMtM,sCAAP,MAlBtB,QAoBI,OApBJ,oBAoBUwiD,aAAI,CAAEn2C,KAAMC,EAAMrM,yCApB5B,yFAwBA,SAAUwoD,GAAV,mFACEG,EADF,EACEA,mBACA34C,EAFF,EAEEA,eACAvC,EAHF,EAGEA,SAHF,WAOoC,qBAAvBk7C,GACPA,EAAmBjzC,OAAS,GARlC,gBAWM,OADMyxC,EAAsBwB,EAAmBv/C,KAAK,KAV1D,SAWYs6C,aACJkF,GACAzB,EACAn3C,EACAvC,GAfR,yJAuBA,SAAUg7C,GAAV,gFAOI,OANF34C,EADF,EACEA,aACAC,EAFF,EAEEA,SACAtC,EAHF,EAGEA,SACAwkC,EAJF,EAIEA,YAJF,kBAOUyR,aACJkF,GACA94C,EACAC,EACAtC,EACAwkC,GAZN,oJAoBA,SAAUsR,GAAan3C,EAAMxlB,GAA7B,gFACMi9D,GAAuB,EACvBC,EAAuB,GACtBl9D,EAAM+7D,GAHb,iBAMM,OANN,SAKYoB,EAAQn9D,EAAMm9D,QAL1B,SAMYA,EAAM1vC,OAAO+tC,MAAK,SAAC/tC,GACvByvC,EAAuB9B,KAAKgC,MAAM3vC,GAClCwvC,GAAuB,KAR/B,uDAWMA,GAAuB,EACvBC,EAAoB,KAZ1B,YAeQD,EAfR,iBAiBM,OADMl6C,EAAes6C,GAAoBH,GAhB/C,UAiBYvB,aAAI,CAAEn2C,OAAMzC,iBAjBxB,sDAsBA,SAASs6C,GAAoBH,GAC3B,IAAIn6C,EAAe,GAEnB,IACE,IAAMuL,EAAU4uC,EAAqBI,iBACjCJ,EAAqBI,iBAAiB13B,MAAM,YAAY,GACxDs3B,EAAqBK,eAEzBx6C,EAAeq4C,KAAKgC,MAAM9uC,GAASvL,gBAEjCA,EAAe,oBAEjB,MAAO/iB,GACP+iB,EAAe,mBAGjB,OAAOA,EAEM,SAAUo7C,KAAV,iEACb,OADa,SACPX,aACJ/3C,EAAM/e,+BACN66D,IAHW,OAMb,OANa,SAMP/D,aACJ/3C,EAAM1e,gCACNy6D,IARW,OAWb,OAXa,SAWPhE,aAAW/3C,EAAM1d,gBAAiB05D,IAX3B,OAab,OAba,SAaPjE,aACJ/3C,EAAM/d,8BACNg6D,IAfW,OAkBb,OAlBa,UAkBPlE,aACJ/3C,EAAMnM,gCACNuoD,IApBW,QAuBb,OAvBa,UAuBPrE,aACJ/3C,EAAMlM,gCACNqoD,IAzBW,QA4Bb,OA5Ba,UA4BPpE,aACJ/3C,EAAMzM,8BACN2oD,IA9BW,yCCnQR,IAAMM,GAAoB,SAACp7C,GAAD,OAC/Bu1C,GAAA,6BAAiCv1C,KAEtBq7C,GAAqB,SAACh8C,GAAD,OAChCk2C,GAAA,8BAAkCl2C,KAEvBi8C,GAAc,SAAC14C,EAAOL,GAAR,OACzBgzC,GAAY,cAAe3yC,OAAOgxC,EAAWrxC,IAElCg5C,GAAY,SAAC34C,EAAOL,GAAR,OACvBgzC,GAAA,sBAA0B3yC,EAAMvI,IAAMuI,OAAOgxC,EAAWrxC,IAE7CqrB,GAAc,SAACwB,EAAS7sB,GAAV,OACzBgzC,GAAA,sBACiBnmB,GACfwkB,OACAA,EACArxC,IAGSi5C,GAAqB,SAACpsB,GAAD,OAChCmmB,GAAA,sBAA0BnmB,EAA1B,cAEWqsB,GAAoB,SAACx4C,EAASV,GAAV,OAC/BgzC,GAAA,sBACiBtyC,EAAQmsB,QADzB,oBAC4CnsB,EAAQ4kB,UAClD+rB,OACAA,EACArxC,IAGSm5C,GAAe,SAACz4C,EAASV,GAAV,OAC1BgzC,GAAA,sBACiBtyC,EAAQmsB,QADzB,YAEEnsB,OACA2wC,EACArxC,IAGSo5C,GAAe,SAAC14C,EAASV,GAAV,OAC1BgzC,GAAA,sBACiBtyC,EAAQmsB,QADzB,oBAC4CnsB,EAAQ5I,IAClD4I,OACA2wC,EACArxC,I,YCnCMmzC,I,YAQAkG,I,YAgBAC,I,YAgBAC,I,YA6BAC,I,YAkBAC,I,YAgBAC,I,YAiBAC,I,YAwEAC,I,YAwBAC,I,YAuBAC,I,YAoBAvG,I,YAwCewB,IA3SzB,SAAU5B,KAAV,2EAGuB,OAFfM,EAAwB,SAAC9vC,GAAD,OAAWA,EAAME,MAAMtuB,KAAKyuB,MAD5D,SAG6BwU,aAAOi7B,GAHpC,cAGQ79B,EAHR,OAIQ5V,EAAiB4V,GAAgBA,EAAa9d,GAJtD,kBAKSkI,GALT,wCAQA,SAAUq5C,GAAV,8EAEI,OAFqC57C,EAAzC,EAAyCA,SAAzC,kBAEU80C,aAAI,CAAEn2C,KAAMC,EAAMpd,oCAF5B,OAIyB,OAJzB,SAI+By0D,aAAKqG,GAA6Bt8C,GAJjE,OAKI,OALJ,SAIYm2C,EAJZ,EAIYA,SAJZ,UAKUrB,aAAI,CACRn2C,KAAMC,EAAMnd,oCACZgrB,OAAQ0pC,IAPd,gCAUI,OAVJ,oCAUUL,GAAal3C,EAAMld,oCAAP,MAVtB,QAYI,OAZJ,oBAYUozD,aAAI,CAAEn2C,KAAMC,EAAMjd,uCAZ5B,yFAgBA,SAAUk6D,GAAV,8EAEI,OAFsCx8C,EAA1C,EAA0CA,UAA1C,kBAEUy1C,aAAI,CAAEn2C,KAAMC,EAAM/c,qCAF5B,OAIyB,OAJzB,SAI+Bo0D,aAAKqG,GAA8Bj9C,GAJlE,OAKI,OALJ,SAIY82C,EAJZ,EAIYA,SAJZ,UAKUrB,aAAI,CACRn2C,KAAMC,EAAM9c,qCACZ2qB,OAAQ0pC,IAPd,gCAUI,OAVJ,oCAUUL,GAAal3C,EAAM7c,qCAAP,MAVtB,QAYI,OAZJ,oBAYU+yD,aAAI,CAAEn2C,KAAMC,EAAM5c,wCAZ5B,yFAgBA,SAAU85D,GAAV,kFAE2B,OAFMl5C,EAAjC,EAAiCA,MAAO1D,EAAxC,EAAwCA,KAAxC,kBAEiCw2C,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAMpc,qBAH5B,UAKM0c,IAAS0iB,EALf,iBAMU,OANV,UAMgBq0B,aAAKqG,GAAuB15C,EAAOL,GANnD,4CAOU,OAPV,UAOgB0zC,aAAKqG,GAAqB15C,EAAOL,GAPjD,4BAQI,OARJ,OAIY4zC,EAJZ,EAIYA,SAJZ,UAQUrB,aAAI,CACRn2C,KAAMC,EAAMnc,qBACZ+uD,eAAgB2E,IAVtB,WAaQj3C,IAAS0iB,EAbjB,iBAcM,OAdN,UAcYkzB,aAAI,CAAEn2C,KAAMC,EAAM1c,yBAA0B0a,MAAM,IAd9D,gCAgBM,OAhBN,UAgBYk4C,aAAI,CAAEn2C,KAAMC,EAAMzc,uBAAwBya,MAAM,IAhB5D,QAiBM,OAjBN,UAiBYk4C,aAAI,CACRn2C,KAAMC,EAAMrd,4BACZye,SAAU4C,EAAM5C,WAnBxB,gCAuBI,OAvBJ,oCAuBU81C,GAAal3C,EAAMlc,qBAAP,MAvBtB,QAyBI,OAzBJ,oBAyBUoyD,aAAI,CAAEn2C,KAAMC,EAAMjc,wBAzB5B,yFA6BA,SAAUo5D,GAAV,4EAE2B,OAFEn5C,EAA7B,EAA6BA,MAA7B,kBAEiC8yC,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAM9b,qBAH5B,OAKI,OALJ,SAKUmzD,aAAKqG,GAAuB15C,EAAMvI,GAAIkI,GALhD,OAMI,OANJ,UAMUuyC,aAAI,CACRn2C,KAAMC,EAAM7b,qBACZqsC,QAASxsB,EAAMvI,KARrB,QAUI,OAVJ,UAUUy6C,aAAI,CAAEn2C,KAAMC,EAAMhc,yBAA0Bga,MAAM,IAV5D,gCAYI,OAZJ,oCAYUk5C,GAAal3C,EAAM5b,qBAAP,MAZtB,QAcI,OAdJ,oBAcU8xD,aAAI,CAAEn2C,KAAMC,EAAM3b,wBAd5B,yFAkBA,SAAU+4D,GAAV,8EAEI,OAFqC5sB,EAAzC,EAAyCA,QAAzC,kBAEU0lB,aAAI,CAAEn2C,KAAMC,EAAMzb,oCAF5B,OAIyB,OAJzB,SAI+B8yD,aAAKqG,GAA8BltB,GAJlE,OAKI,OALJ,SAIY+mB,EAJZ,EAIYA,SAJZ,UAKUrB,aAAI,CACRn2C,KAAMC,EAAMxb,oCACZuiC,QAASwwB,IAPf,gCAUI,OAVJ,oCAUUL,GAAal3C,EAAMvb,oCAAP,MAVtB,QAYI,OAZJ,oBAYUyxD,aAAI,CAAEn2C,KAAMC,EAAMtb,uCAZ5B,yFAgBA,SAAU24D,GAAV,4EAE2B,OAFQh5C,EAAnC,EAAmCA,QAAnC,kBAEiCyyC,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAMpb,4BAH5B,OAKI,OALJ,SAKUyyD,aAAKqG,GAA6Br5C,EAASV,GALrD,OAMI,OANJ,UAMUuyC,aAAI,CACRn2C,KAAMC,EAAMnb,4BACZokC,SAAU5kB,EAAQ4kB,WARxB,gCAWI,OAXJ,oCAWUiuB,GAAal3C,EAAMlb,4BAAP,MAXtB,QAaI,OAbJ,oBAaUoxD,aAAI,CAAEn2C,KAAMC,EAAMjb,+BAb5B,yFAiBA,SAAUu4D,GAAV,8FAE2B,OAFQj5C,EAAnC,EAAmCA,QAAS/D,EAA5C,EAA4CA,KAAMc,EAAlD,EAAkDA,SAAlD,kBAEiC01C,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAM/a,4BAH5B,UAMMqb,IAAS0iB,EANf,iBAOU,OAPV,UAOgBq0B,aAAKqG,GAAwBr5C,EAASV,GAPtD,4CAQU,OARV,UAQgB0zC,aAAKqG,GAAwBr5C,EAASV,GARtD,sCAKY4zC,EALZ,EAKYA,SAKF9zC,EAAe+lB,KAKM,qBADrBoc,EAAckM,GAA8BztC,KACRuhC,EAAYv8B,OAAS,GAfnE,iBAiBM,OADI3F,EAAW6zC,EAAS97C,GAhB9B,UAiBYy6C,aAAI,CACRn2C,KAAMC,EAAM/M,oCACZwQ,eACAC,WACAtC,WACAwkC,gBAtBR,aA6BoC,qBAF1B3hB,EAAqB8tB,GAAgC1tC,KAGzD4f,EAAmB5a,OAAS,GA9BlC,iBAiCM,OADIizC,EAAqBr4B,EAAmBzR,KAAI,SAAC07B,GAAD,OAAOA,EAAEzyC,MAhC/D,UAiCYy6C,aAAI,CACRn2C,KAAMC,EAAM9M,oCACZopD,qBACA34C,iBACAvC,aArCR,QAyCI,OAzCJ,UAyCU80C,aAAI,CACRn2C,KAAMC,EAAM9a,4BACZy4D,cAAepG,IA3CrB,QA8CI,OA9CJ,UA8CUrB,aAAI,CACRn2C,KAAMC,EAAM1b,4BACZksC,QAASnsB,EAAQmsB,UAhDvB,WAmDQlwB,IAAS0iB,EAnDjB,iBAoDM,OApDN,UAoDYkzB,aAAI,CACRn2C,KAAMC,EAAM3V,yBACZi/B,sBAAsB,EACtBL,SAAU5kB,EAAQ5I,KAvD1B,gCA0DM,OA1DN,UA0DYy6C,aAAI,CACRn2C,KAAMC,EAAMpgB,6BACZoe,MAAM,IA5Dd,gCAgEI,OAhEJ,oCAgEUk5C,GAAal3C,EAAM7a,4BAAP,MAhEtB,QAkEI,OAlEJ,oBAkEU+wD,aAAI,CAAEn2C,KAAMC,EAAM5a,+BAlE5B,yFAwEA,SAAUm4D,GAAV,kFAMI,OALF95C,EADF,EACEA,aACAC,EAFF,EAEEA,SACAC,EAHF,EAGEA,eAHF,kBAMUuyC,aAAI,CAAEn2C,KAAMC,EAAM7M,0CAN5B,OAOyB,OAPzB,SAO+BkkD,aACzBkF,GACA94C,EACAC,EACAC,GAXN,OAaI,OAbJ,SAOY4zC,EAPZ,EAOYA,SAPZ,UAaUrB,aAAI,CACRn2C,KAAMC,EAAM5M,0CACZwyC,YAAa2R,IAfnB,gCAkBI,OAlBJ,oCAkBUL,GAAal3C,EAAM3M,0CAAP,MAlBtB,QAoBI,OApBJ,oBAoBU6iD,aAAI,CAAEn2C,KAAMC,EAAM1M,6CApB5B,yFAwBA,SAAUkqD,GAAV,mFACElB,EADF,EACEA,mBACA34C,EAFF,EAEEA,eACAvC,EAHF,EAGEA,SAHF,WAOoC,qBAAvBk7C,GACPA,EAAmBjzC,OAAS,GARlC,gBAWM,OADMyxC,EAAsBwB,EAAmBv/C,KAAK,KAV1D,SAWYs6C,aACJkF,GACAzB,EACAn3C,EACAvC,GAfR,yJAuBA,SAAUq8C,GAAV,gFAOI,OANFh6C,EADF,EACEA,aACAC,EAFF,EAEEA,SACAtC,EAHF,EAGEA,SACAwkC,EAJF,EAIEA,YAJF,kBAOUyR,aACJkF,GACA94C,EACAC,EACAtC,EACAwkC,GAZN,oJAoBA,SAAUsR,GAAan3C,EAAMxlB,GAA7B,gFACMi9D,GAAuB,EACvBC,EAAuB,GACtBl9D,EAAM+7D,GAHb,iBAMM,OANN,SAKYoB,EAAQn9D,EAAMm9D,QAL1B,SAMYA,EAAM1vC,OAAO+tC,MAAK,SAAC/tC,GACvByvC,EAAuB9B,KAAKgC,MAAM3vC,GAClCwvC,GAAuB,KAR/B,uDAWMA,GAAuB,EACvBC,EAAoB,KAZ1B,YAeQD,EAfR,iBAiBM,OADMl6C,EAAes6C,GAAoBH,GAhB/C,UAiBYvB,aAAI,CAAEn2C,OAAMzC,iBAjBxB,sDAsBA,SAASs6C,GAAoBH,GAC3B,IAAIn6C,EAAe,GAEnB,IACE,IAAMuL,EAAU4uC,EAAqBI,iBACjCJ,EAAqBI,iBAAiB13B,MAAM,YAAY,GACxDs3B,EAAqBK,eAEzBx6C,EAAeq4C,KAAKgC,MAAM9uC,GAASvL,gBAEjCA,EAAe,oBAEjB,MAAO/iB,GACP+iB,EAAe,mBAGjB,OAAOA,EAEM,SAAUo7C,KAAV,iEACb,OADa,SACPX,aACJ/3C,EAAMrd,4BACNq6D,IAHW,OAKb,OALa,SAKPjF,aACJ/3C,EAAMhd,6BACNi6D,IAPW,OASb,OATa,SASPlF,aAAW/3C,EAAMrc,aAAcu5D,IATxB,OAUb,OAVa,SAUPnF,aAAW/3C,EAAM/b,aAAck5D,IAVxB,OAYb,OAZa,UAYPpF,aACJ/3C,EAAM1b,4BACN84D,IAdW,QAiBb,OAjBa,UAiBPrF,aAAW/3C,EAAMrb,oBAAqB04D,IAjB/B,QAkBb,OAlBa,UAkBPtF,aAAW/3C,EAAMhb,oBAAqBs4D,IAlB/B,QAoBb,OApBa,UAoBPvF,aACJ/3C,EAAM/M,oCACNwqD,IAtBW,QAyBb,OAzBa,UAyBP1F,aACJ/3C,EAAM9M,oCACNsqD,IA3BW,QA8Bb,OA9Ba,UA8BPzF,aACJ/3C,EAAMhN,kCACNuqD,IAhCW,yCCpTR,IAAMK,GAAqB,SAACx8C,GAAD,OAChCu1C,GAAA,8BAAkCv1C,KAEvBy8C,GAAsB,SAACp9C,GAAD,OACjCk2C,GAAA,+BAAmCl2C,KAExBq9C,GAAe,SAACz4C,EAAQ1B,GAAT,OAC1BgzC,GAAY,eAAgBtxC,OAAQ2vC,EAAWrxC,IAEpCo6C,GAAa,SAAC14C,EAAQ1B,GAAT,OACxBgzC,GAAA,uBAA2BtxC,EAAO5J,IAAM4J,OAAQ2vC,EAAWrxC,IAUhDq6C,GAAuB,SAAClhB,GAAD,OAClC6Z,GAAA,uBAA2B7Z,EAA3B,eAEWmhB,GAAsB,SAAC55C,EAASV,GAAV,OACjCgzC,GAAA,uBACkBtyC,EAAQy4B,SAD1B,qBAC+Cz4B,EAAQ5I,IACrDu5C,OACAA,EACArxC,IAGSu6C,GAAgB,SAAC75C,EAASV,GAAV,OAC3BgzC,GAAA,uBACkBtyC,EAAQy4B,SAD1B,aAEEz4B,OACA2wC,EACArxC,IAGSw6C,GAAgB,SAAC95C,EAASV,GAAV,OAC3BgzC,GAAA,uBACkBtyC,EAAQy4B,SAD1B,qBAC+Cz4B,EAAQ5I,IACrD4I,OACA2wC,EACArxC,IAISy6C,GAAsB,SAACthB,GAAD,OACjC6Z,GAAA,uBAA2B7Z,EAA3B,cAUWuhB,GAAe,SAACh6C,EAASV,GAAV,OAC1BgzC,GAAA,uBACkBtyC,EAAQy4B,SAD1B,YAEEz4B,OACA2wC,EACArxC,IAGS26C,GAAe,SAACj6C,EAASV,GAAV,OAC1BgzC,GAAA,uBACkBtyC,EAAQy4B,SAD1B,oBAC8Cz4B,EAAQ5I,IACpD4I,OACA2wC,EACArxC,IAIS46C,GAA6B,SAACzhB,GAAD,OACxC6Z,GAAA,uBAA2B7Z,EAA3B,WAUW0hB,GAAsB,SAACn6C,EAASV,GAAV,OACjCgzC,GAAA,uBACkBtyC,EAAQy4B,SAD1B,SAEEz4B,OACA2wC,EACArxC,IAGS86C,GAAsB,SAACp6C,EAASV,GAAV,OACjCgzC,GAAA,uBACkBtyC,EAAQy4B,SAD1B,iBAC2Cz4B,EAAQ5I,IACjD4I,OACA2wC,EACArxC,I,YC1FMmzC,I,YAQA4H,I,YAkBAC,I,YAeAC,I,YA4DAC,I,YAsBAC,I,YAgBAC,I,YAsBAC,I,YAyCAC,I,YAgBAC,I,YAgFAC,I,YAmBAC,I,YA+EAC,I,YAwBAC,I,YAuBAC,I,YAmBAC,I,YAyBAC,I,YAiCAC,I,YA8BAxI,I,YAwCewB,IA9kBzB,SAAU5B,KAAV,2EAGuB,OAFfM,EAAwB,SAAC9vC,GAAD,OAAWA,EAAME,MAAMtuB,KAAKyuB,MAD5D,SAG6BwU,aAAOi7B,GAHpC,cAGQ79B,EAHR,OAIQ5V,EAAiB4V,GAAgBA,EAAa9d,GAJtD,kBAKSkI,GALT,wCAQA,SAAU+6C,GAAV,8EAEI,OAFsCt9C,EAA1C,EAA0CA,SAA1C,kBAEU80C,aAAI,CAAEn2C,KAAMC,EAAMnV,qCAF5B,OAIyB,OAJzB,SAI+BwsD,aAAKsI,GAA+Bv+C,GAJnE,OAMI,OANJ,SAIYm2C,EAJZ,EAIYA,SAJZ,UAMUrB,aAAI,CAAEn2C,KAAMC,EAAMpP,uBAN5B,QAOI,OAPJ,UAOUslD,aAAI,CACRn2C,KAAMC,EAAMlV,qCACZssB,QAASmgC,IATf,gCAYI,OAZJ,oCAYUL,GAAal3C,EAAMjV,qCAAP,MAZtB,QAcI,OAdJ,oBAcUmrD,aAAI,CAAEn2C,KAAMC,EAAMhV,wCAd5B,yFAkBA,SAAU2zD,GAAV,8EAEI,OAFuCl+C,EAA3C,EAA2CA,UAA3C,kBAEUy1C,aAAI,CAAEn2C,KAAMC,EAAM9U,sCAF5B,OAGyB,OAHzB,SAG+BmsD,aAAKsI,GAAgCl/C,GAHpE,OAII,OAJJ,SAGY82C,EAHZ,EAGYA,SAHZ,UAIUrB,aAAI,CACRn2C,KAAMC,EAAM7U,sCACZisB,QAASmgC,IANf,gCASI,OATJ,oCASUL,GAAal3C,EAAM5U,sCAAP,MATtB,QAWI,OAXJ,oBAWU8qD,aAAI,CAAEn2C,KAAMC,EAAM3U,yCAX5B,yFAeA,SAAUuzD,GAAV,8FAE2B,OAFOv5C,EAAlC,EAAkCA,OAAQ/E,EAA1C,EAA0CA,KAA1C,kBAEiCw2C,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAMnU,sBAH5B,UAKMyU,IAAS0iB,EALf,iBAMU,OANV,UAMgBq0B,aAAKsI,GAAyBt6C,EAAQ1B,GANtD,4CAOU,OAPV,UAOgB0zC,aAAKsI,GAAuBt6C,EAAQ1B,GAPpD,sCAIY4zC,EAJZ,EAIYA,SAKF9zC,EAAe+lB,GAEfpoB,EAAWiE,EAAOjE,WAMG,qBADrBwkC,EAAckM,GAA8BzsC,KACRugC,EAAYv8B,OAAS,GAjBnE,iBAmBM,OADI3F,EAAW6zC,EAAS97C,GAlB9B,UAmBYy6C,aAAI,CACRn2C,KAAMC,EAAMjO,8BACZ0R,eACAC,WACAtC,WACAwkC,gBAxBR,aA+BoC,qBAF1B3hB,EAAqB8tB,GAAgC1sC,KAGzD4e,EAAmB5a,OAAS,GAhClC,iBAmCM,OADIizC,EAAqBr4B,EAAmBzR,KAAI,SAAC07B,GAAD,OAAOA,EAAEzyC,MAlC/D,UAmCYy6C,aAAI,CACRn2C,KAAMC,EAAM5N,8BACZkqD,qBACA34C,iBACAvC,aAvCR,QA2CI,OA3CJ,UA2CU80C,aAAI,CACRn2C,KAAMC,EAAMlU,sBACZwnD,gBAAiBiE,IA7CvB,WAgDQj3C,IAAS0iB,EAhDjB,iBAiDM,OAjDN,UAiDYkzB,aAAI,CAAEn2C,KAAMC,EAAMzU,0BAA2ByS,MAAM,IAjD/D,gCAmDM,OAnDN,UAmDYk4C,aAAI,CAAEn2C,KAAMC,EAAMxU,wBAAyBwS,MAAM,IAnD7D,gCAsDI,OAtDJ,oCAsDUk5C,GAAal3C,EAAMjU,sBAAP,MAtDtB,QAwDI,OAxDJ,oBAwDUmqD,aAAI,CAAEn2C,KAAMC,EAAMhU,yBAxD5B,yFA4DA,SAAU6yD,GAAV,8EAE2B,OAFGx5C,EAA9B,EAA8BA,OAA9B,kBAEiCyxC,KAFjC,OAII,OAFMnzC,EAFV,OAGI0B,EAAO3E,OAAS,EAHpB,SAIUw1C,aAAI,CAAEn2C,KAAMC,EAAM7T,sBAJ5B,OAKyB,OALzB,UAK+BkrD,aACzBsI,GACAt6C,EACA1B,GARN,QAUI,OAVJ,WAKY4zC,SALZ,UAUUrB,aAAI,CACRn2C,KAAMC,EAAM5T,sBACZ0wC,SAAUz3B,EAAO5J,KAZvB,QAcI,OAdJ,UAcUy6C,aAAI,CAAEn2C,KAAMC,EAAM/T,0BAA2B+R,MAAM,IAd7D,gCAgBI,OAhBJ,oCAgBUk5C,GAAal3C,EAAM3T,sBAAP,MAhBtB,QAkBI,OAlBJ,oBAkBU6pD,aAAI,CAAEn2C,KAAMC,EAAM1T,yBAlB5B,yFAsBA,SAAUwyD,GAAV,8EAEI,OAFuChiB,EAA3C,EAA2CA,SAA3C,kBAEUoZ,aAAI,CAAEn2C,KAAMC,EAAMxT,sCAF5B,OAIyB,OAJzB,SAI+B6qD,aAAKsI,GAAiC7iB,GAJrE,OAKI,OALJ,SAIYya,EAJZ,EAIYA,SAJZ,UAKUrB,aAAI,CACRn2C,KAAMC,EAAMvT,sCACZ2vC,SAAUmb,IAPhB,gCAUI,OAVJ,oCAUUL,GAAal3C,EAAMtT,sCAAP,MAVtB,QAYI,OAZJ,oBAYUwpD,aAAI,CAAEn2C,KAAMC,EAAMrT,yCAZ5B,yFAgBA,SAAUoyD,GAAV,4EAE2B,OAFU16C,EAArC,EAAqCA,QAArC,kBAEiCyyC,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAMnT,8BAH5B,OAII,OAJJ,SAIUwqD,aAAKsI,GAAgCt7C,EAASV,GAJxD,OAMI,OANJ,UAMUuyC,aAAI,CACRn2C,KAAMC,EAAMlT,8BACZ8Y,UAAWvB,EAAQ5I,KARzB,QAUI,OAVJ,UAUUy6C,aAAI,CACRn2C,KAAMC,EAAMnS,kCACZmQ,MAAM,EACN4H,UAAWvB,EAAQ5I,KAbzB,gCAgBI,OAhBJ,oCAgBUy7C,GAAal3C,EAAMjT,8BAAP,MAhBtB,QAkBI,OAlBJ,oBAkBUmpD,aAAI,CAAEn2C,KAAMC,EAAMhT,iCAlB5B,yFAsBA,SAAUgyD,GAAV,kFAE2B,OAFU36C,EAArC,EAAqCA,QAAS/D,EAA9C,EAA8CA,KAA9C,EAAoDc,SAApD,kBAEiC01C,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAM9S,8BAH5B,UAMMoT,IAAS0iB,EANf,iBAOU,OAPV,UAOgBq0B,aAAKsI,GAA0Bt7C,EAASV,GAPxD,4CAQU,OARV,UAQgB0zC,aAAKsI,GAA0Bt7C,EAASV,GARxD,4BAUI,OAVJ,OAKY4zC,EALZ,EAKYA,SALZ,UAUUrB,aAAI,CACRn2C,KAAMC,EAAM7S,8BACZyyD,eAAgBrI,IAZtB,QAeI,OAfJ,UAeUrB,aAAI,CACRn2C,KAAMC,EAAMzT,8BACZuwC,SAAUz4B,EAAQy4B,WAjBxB,WAoBQx8B,IAAS0iB,EApBjB,iBAqBM,OArBN,UAqBYkzB,aAAI,CACRn2C,KAAMC,EAAM1S,2BACZqwC,uBAAuB,EACvB/3B,UAAWvB,EAAQ5I,KAxB3B,gCA2BM,OA3BN,UA2BYy6C,aAAI,CACRn2C,KAAMC,EAAMngB,+BACZme,MAAM,IA7Bd,gCAiCI,OAjCJ,oCAiCUk5C,GAAal3C,EAAM5S,8BAAP,MAjCtB,QAmCI,OAnCJ,oBAmCU8oD,aAAI,CAAEn2C,KAAMC,EAAM3S,iCAnC5B,yFAyCA,SAAU4xD,GAAV,8EAEI,OAFsCniB,EAA1C,EAA0CA,SAA1C,kBAEUoZ,aAAI,CAAEn2C,KAAMC,EAAMhS,qCAF5B,OAIyB,OAJzB,SAI+BqpD,aAAKsI,GAAgC7iB,GAJpE,OAKI,OALJ,SAIYya,EAJZ,EAIYA,SAJZ,UAKUrB,aAAI,CACRn2C,KAAMC,EAAM/R,qCACZixC,QAASqY,IAPf,gCAUI,OAVJ,oCAUUL,GAAal3C,EAAM9R,qCAAP,MAVtB,QAYI,OAZJ,oBAYUgoD,aAAI,CAAEn2C,KAAMC,EAAM7R,wCAZ5B,yFAgBA,SAAU+wD,GAAV,8FAE2B,OAFS76C,EAApC,EAAoCA,QAAS/D,EAA7C,EAA6CA,KAAMc,EAAnD,EAAmDA,SAAnD,kBAEiC01C,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAM1R,6BAH5B,UAMMgS,IAAS0iB,EANf,iBAOU,OAPV,UAOgBq0B,aAAKsI,GAAyBt7C,EAASV,GAPvD,4CAQU,OARV,UAQgB0zC,aAAKsI,GAAyBt7C,EAASV,GARvD,sCAKY4zC,EALZ,EAKYA,SAKF9zC,EAAe+lB,KAKM,qBADrBoc,EAAckM,GAA8BztC,KACRuhC,EAAYv8B,OAAS,GAfnE,iBAiBM,OADI3F,EAAW6zC,EAAS97C,GAhB9B,UAiBYy6C,aAAI,CACRn2C,KAAMC,EAAMjO,8BACZ0R,eACAC,WACAtC,WACAwkC,gBAtBR,aA6BoC,qBAF1B3hB,EAAqB8tB,GAAgC1tC,KAGzD4f,EAAmB5a,OAAS,GA9BlC,iBAiCM,OADIizC,EAAqBr4B,EAAmBzR,KAAI,SAAC07B,GAAD,OAAOA,EAAEzyC,MAhC/D,UAiCYy6C,aAAI,CACRn2C,KAAMC,EAAM5N,8BACZkqD,qBACA34C,iBACAvC,aArCR,QAyCI,OAzCJ,UAyCU80C,aAAI,CACRn2C,KAAMC,EAAMzR,6BACZilD,cAAe+D,IA3CrB,QA8CI,OA9CJ,UA8CUrB,aAAI,CACRn2C,KAAMC,EAAMjS,6BACZ+uC,SAAUz4B,EAAQy4B,WAhDxB,WAmDQx8B,IAAS0iB,EAnDjB,qBAoD+B,IAArB3e,EAAQu6B,SApDlB,iBAqDQ,OArDR,UAqDcsX,aAAI,CACRn2C,KAAMC,EAAM9Q,iCACZ8O,MAAM,EACNkI,SAAU7B,EAAQ5I,KAxD5B,gCA2DQ,OA3DR,UA2Dcy6C,aAAI,CACRn2C,KAAMC,EAAMpR,0BACZ+xC,sBAAsB,EACtBz6B,SAAU7B,EAAQ5I,KA9D5B,gCAkEM,OAlEN,UAkEYy6C,aAAI,CACRn2C,KAAMC,EAAM5R,iCACZ4P,MAAM,IApEd,gCAwEI,OAxEJ,oCAwEUk5C,GAAal3C,EAAMxR,6BAAP,MAxEtB,QA0EI,OA1EJ,oBA0EU0nD,aAAI,CAAEn2C,KAAMC,EAAMvR,gCA1E5B,yFAgFA,SAAU0wD,GAAV,8EAEI,OAF6CriB,EAAjD,EAAiDA,SAAjD,kBAEUoZ,aAAI,CAAEn2C,KAAMC,EAAM3Q,6CAF5B,OAIyB,OAJzB,SAI+BgoD,aACzBsI,GACA7iB,GANN,OAQI,OARJ,SAIYya,EAJZ,EAIYA,SAJZ,UAQUrB,aAAI,CACRn2C,KAAMC,EAAM1Q,6CACZwyC,eAAgByV,IAVtB,gCAaI,OAbJ,oCAaUL,GAAal3C,EAAMzQ,6CAAP,MAbtB,QAeI,OAfJ,oBAeU2mD,aAAI,CAAEn2C,KAAMC,EAAMxQ,gDAf5B,yFAmBA,SAAU4vD,GAAV,8FAE2B,OAFgB/6C,EAA3C,EAA2CA,QAAS/D,EAApD,EAAoDA,KAAMc,EAA1D,EAA0DA,SAA1D,kBAEiC01C,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAMrQ,qCAH5B,UAMM2Q,IAAS0iB,EANf,iBAOU,OAPV,UAOgBq0B,aAAKsI,GAAgCt7C,EAASV,GAP9D,4CAQU,OARV,UAQgB0zC,aAAKsI,GAAgCt7C,EAASV,GAR9D,sCAKY4zC,EALZ,EAKYA,SAKF9zC,EAAe+lB,KAKM,qBADrBoc,EAAckM,GAA8BztC,KACRuhC,EAAYv8B,OAAS,GAfnE,iBAiBM,OADI3F,EAAW6zC,EAAS97C,GAhB9B,UAiBYy6C,aAAI,CACRn2C,KAAMC,EAAMjO,8BACZ0R,eACAC,WACAtC,WACAwkC,gBAtBR,aA6BoC,qBAF1B3hB,EAAqB8tB,GAAgC1tC,KAGzD4f,EAAmB5a,OAAS,GA9BlC,iBAiCM,OADIizC,EAAqBr4B,EAAmBzR,KAAI,SAAC07B,GAAD,OAAOA,EAAEzyC,MAhC/D,UAiCYy6C,aAAI,CACRn2C,KAAMC,EAAM5N,8BACZkqD,qBACA34C,iBACAvC,aArCR,QAyCI,OAzCJ,UAyCU80C,aAAI,CACRn2C,KAAMC,EAAMpQ,qCACZ+jD,qBAAsB4D,IA3C5B,QA8CI,OA9CJ,UA8CUrB,aAAI,CACRn2C,KAAMC,EAAM5Q,qCACZ0tC,SAAUz4B,EAAQy4B,WAhDxB,WAmDQx8B,IAAS0iB,EAnDjB,qBAoD+B,IAArB3e,EAAQu6B,SApDlB,iBAqDQ,OArDR,UAqDcsX,aAAI,CACRn2C,KAAMC,EAAMzP,yCACZyN,MAAM,EACNwI,gBAAiBnC,EAAQ5I,KAxDnC,gCA2DQ,OA3DR,UA2Dcy6C,aAAI,CACRn2C,KAAMC,EAAM/P,kCACZ0wC,sBAAsB,EACtBn6B,gBAAiBnC,EAAQ5I,KA9DnC,gCAkEM,OAlEN,UAkEYy6C,aAAI,CACRn2C,KAAMC,EAAMvQ,yCACZuO,MAAM,IApEd,gCAwEI,OAxEJ,oCAwEUk5C,GAAal3C,EAAMnQ,qCAAP,MAxEtB,QA0EI,OA1EJ,oBA0EUqmD,aAAI,CAAEn2C,KAAMC,EAAMlQ,wCA1E5B,yFA+EA,SAAUuvD,GAAV,kFAMI,OALF57C,EADF,EACEA,aACAC,EAFF,EAEEA,SACAC,EAHF,EAGEA,eAHF,kBAMUuyC,aAAI,CAAEn2C,KAAMC,EAAMtO,oCAN5B,OAOyB,OAPzB,SAO+B2lD,aACzBkF,GACA94C,EACAC,EACAC,GAXN,OAaI,OAbJ,SAOY4zC,EAPZ,EAOYA,SAPZ,UAaUrB,aAAI,CACRn2C,KAAMC,EAAMrO,oCACZi0C,YAAa2R,IAfnB,gCAkBI,OAlBJ,oCAkBUL,GAAal3C,EAAMpO,oCAAP,MAlBtB,QAoBI,OApBJ,oBAoBUskD,aAAI,CAAEn2C,KAAMC,EAAMnO,uCApB5B,yFAwBA,SAAUytD,GAAV,mFACEhD,EADF,EACEA,mBACA34C,EAFF,EAEEA,eACAvC,EAHF,EAGEA,SAHF,WAOoC,qBAAvBk7C,GACPA,EAAmBjzC,OAAS,GARlC,gBAWM,OADMyxC,EAAsBwB,EAAmBv/C,KAAK,KAV1D,SAWYs6C,aACJkF,GACAzB,EACAn3C,EACAvC,GAfR,yJAuBA,SAAUm+C,GAAV,gFAOI,OANF97C,EADF,EACEA,aACAC,EAFF,EAEEA,SACAtC,EAHF,EAGEA,SACAwkC,EAJF,EAIEA,YAJF,kBAOUyR,aACJkF,GACA94C,EACAC,EACAtC,EACAwkC,GAZN,oJAmBA,SAAU4Z,GAAV,kFAM2B,OALzB/7C,EADF,EACEA,aACAC,EAFF,EAEEA,SAFF,EAGEuK,OAHF,kBAMiC6oC,KANjC,OAOI,OADMnzC,EANV,gBAOUuyC,aAAI,CAAEn2C,KAAMC,EAAM5L,2CAP5B,OAQyB,OARzB,SAQ+BijD,aACzBkF,GACA94C,EACAC,EACAC,GAZN,OAcI,OAdJ,SAQY4zC,EARZ,EAQYA,SARZ,UAcUrB,aAAI,CACRn2C,KAAMC,EAAM3L,2CACZuxC,YAAa2R,IAhBnB,gCAmBI,OAnBJ,oCAmBUL,GAAal3C,EAAM1L,2CAAP,MAnBtB,QAqBI,OArBJ,oBAqBU4hD,aAAI,CAAEn2C,KAAMC,EAAMzL,8CArB5B,yFAyBA,SAAUkrD,GAAV,kFAM2B,OALzBh8C,EADF,EACEA,aACAC,EAFF,EAEEA,SAFF,EAGEuK,OAHF,kBAMiC6oC,KANjC,OAOI,OADMnzC,EANV,gBAOUuyC,aAAI,CACRn2C,KAAMC,EAAMnL,oDARlB,OAUyB,OAVzB,SAU+BwiD,aACzBkF,GACA94C,EACAC,EACAC,GAdN,OAgBI,OAhBJ,SAUY4zC,EAVZ,EAUYA,SAVZ,UAgBUrB,aAAI,CACRn2C,KAAMC,EAAMlL,oDACZ8wC,YAAa2R,IAlBnB,gCAqBI,OArBJ,oCAqBUL,GACJl3C,EAAMjL,oDADU,MArBtB,QA0BI,OA1BJ,oBA0BUmhD,aAAI,CACRn2C,KAAMC,EAAMhL,uDA3BlB,yFAiCA,SAAU0qD,GAAV,kFAM2B,OALzBj8C,EADF,EACEA,aACAC,EAFF,EAEEA,SAFF,EAGEuK,OAHF,kBAMiC6oC,KANjC,OAOI,OADMnzC,EANV,gBAOUuyC,aAAI,CAAEn2C,KAAMC,EAAM1K,4CAP5B,OAQyB,OARzB,SAQ+B+hD,aACzBkF,GACA94C,EACAC,EACAC,GAZN,OAeI,OAfJ,SAQY4zC,EARZ,EAQYA,SARZ,UAeUrB,aAAI,CACRn2C,KAAMC,EAAMzK,4CACZqwC,YAAa2R,IAjBnB,gCAoBI,OApBJ,oCAoBUL,GACJl3C,EAAMxK,4CADU,MApBtB,QAyBI,OAzBJ,oBAyBU0gD,aAAI,CAAEn2C,KAAMC,EAAMvK,+CAzB5B,yFA8BA,SAAUyhD,GAAan3C,EAAMxlB,GAA7B,gFACMi9D,GAAuB,EACvBC,EAAuB,GACtBl9D,EAAM+7D,GAHb,iBAMM,OANN,SAKYoB,EAAQn9D,EAAMm9D,QAL1B,SAMYA,EAAM1vC,OAAO+tC,MAAK,SAAC/tC,GACvByvC,EAAuB9B,KAAKgC,MAAM3vC,GAClCwvC,GAAuB,KAR/B,uDAWMA,GAAuB,EACvBC,EAAoB,KAZ1B,YAeQD,EAfR,iBAiBM,OADMl6C,EAAes6C,GAAoBH,GAhB/C,UAiBYvB,aAAI,CAAEn2C,OAAMzC,iBAjBxB,sDAsBA,SAASs6C,GAAoBH,GAC3B,IAAIn6C,EAAe,GAEnB,IACE,IAAMuL,EAAU4uC,EAAqBI,iBACjCJ,EAAqBI,iBAAiB13B,MAAM,YAAY,GACxDs3B,EAAqBK,eAEzBx6C,EAAeq4C,KAAKgC,MAAM9uC,GAASvL,gBAEjCA,EAAe,oBAEjB,MAAO/iB,GACP+iB,EAAe,mBAGjB,OAAOA,EAEM,SAAUo7C,KAAV,iEACb,OADa,SACPX,aACJ/3C,EAAMpV,6BACN8zD,IAHW,OAKb,OALa,SAKP3G,aACJ/3C,EAAM/U,8BACN0zD,IAPW,OASb,OATa,SASP5G,aAAW/3C,EAAMpU,cAAegzD,IATzB,OAUb,OAVa,SAUP7G,aAAW/3C,EAAM9T,cAAe2yD,IAVzB,OAYb,OAZa,UAYP9G,aACJ/3C,EAAMzT,8BACNuyD,IAdW,QAiBb,OAjBa,UAiBP/G,aAAW/3C,EAAMpT,sBAAuBmyD,IAjBjC,QAkBb,OAlBa,UAkBPhH,aAAW/3C,EAAM/S,sBAAuB+xD,IAlBjC,QAoBb,OApBa,UAoBPjH,aACJ/3C,EAAMjS,6BACNkxD,IAtBW,QAyBb,OAzBa,UAyBPlH,aAAW/3C,EAAM3R,qBAAsB6wD,IAzBhC,QA2Bb,OA3Ba,UA2BPnH,aACJ/3C,EAAM5Q,qCACN+vD,IA7BW,QAgCb,OAhCa,UAgCPpH,aACJ/3C,EAAMtQ,6BACN0vD,IAlCW,QAqCb,OArCa,UAqCPrH,aACJ/3C,EAAMjO,8BACNwtD,IAvCW,QA0Cb,OA1Ca,UA0CPxH,aACJ/3C,EAAM5N,8BACNktD,IA5CW,QA+Cb,OA/Ca,UA+CPvH,aACJ/3C,EAAMvO,4BACN4tD,IAjDW,QAoDb,OApDa,UAoDPtH,aACJ/3C,EAAMhM,mCACNwrD,IAtDW,QAyDb,OAzDa,UAyDPzH,aACJ/3C,EAAMvL,4CACNgrD,IA3DW,QA8Db,OA9Da,UA8DP1H,aACJ/3C,EAAM9K,oCACNwqD,IAhEW,yCCxlBR,IAAMG,GAAsB,SAACz+C,GAAD,OACjCu1C,GAAA,8BAAkCv1C,KAEvB0+C,GAA2B,SAAC1+C,GAAD,OACtCu1C,GAAA,8BAAkCv1C,EAAlC,cAEW2+C,GAAuB,SAACt/C,GAAD,OAClCk2C,GAAA,+BAAmCl2C,KAExBu/C,GAA4B,SAACv/C,GAAD,OACvCk2C,GAAA,+BAAmCl2C,EAAnC,cAEWw/C,GAAe,SAACr7C,EAAQjB,GAAT,OAC1BgzC,GAAY,eAAgB/xC,OAAQowC,EAAWrxC,IAEpCqrB,GAAc,SAAC1c,EAAU3O,GAAX,OACzBgzC,GAAA,uBACkBrkC,GAChB0iC,OACAA,EACArxC,IAGSu8C,GAAa,SAACt7C,EAAQjB,GAAT,OACxBgzC,GAAA,uBAA2B/xC,EAAOnJ,IAAMmJ,OAAQowC,EAAWrxC,IAEhDm5C,GAAe,SAACz4C,EAASV,GAAV,OAC1BgzC,GAAA,uBACkBtyC,EAAQiO,SAD1B,YAEEjO,OACA2wC,EACArxC,IAGSo5C,GAAe,SAAC14C,EAASV,GAAV,OAC1BgzC,GAAA,uBACkBtyC,EAAQiO,SAD1B,oBAC8CjO,EAAQ5I,IACpD4I,OACA2wC,EACArxC,IAGSw8C,GAAsB,SAAC7tC,GAAD,OACjCqkC,GAAA,uBAA2BrkC,EAA3B,cAEW8tC,GAAqB,SAAC/7C,EAASV,GAAV,OAChCgzC,GAAA,uBACkBtyC,EAAQiO,SAD1B,oBAC8CjO,EAAQ4kB,UACpD+rB,OACAA,EACArxC,I,YCzCMmzC,I,YAQAuJ,I,YAgBAC,I,YAmBAC,I,YAgBAC,I,YAmBAC,I,YAyBAC,I,YAkBAC,I,YAwEAC,I,YAgBAC,I,YAmBAC,I,YAwBAC,I,YAuBAC,I,YAoBA9J,I,YAyCe+J,IAhVzB,SAAUnK,KAAV,2EAGuB,OAFfM,EAAwB,SAAC9vC,GAAD,OAAWA,EAAME,MAAMtuB,KAAKyuB,MAD5D,SAG6BwU,aAAOi7B,GAHpC,cAGQ79B,EAHR,OAIQ5V,EAAiB4V,GAAgBA,EAAa9d,GAJtD,kBAKSkI,GALT,wCAQA,SAAU08C,GAAV,8EAEI,OAFsCj/C,EAA1C,EAA0CA,SAA1C,kBAEU80C,aAAI,CAAEn2C,KAAMC,EAAM1a,qCAF5B,OAIyB,OAJzB,SAI+B+xD,aAAK6J,GAAgC9/C,GAJpE,OAKI,OALJ,SAIYm2C,EAJZ,EAIYA,SAJZ,UAKUrB,aAAI,CACRn2C,KAAMC,EAAMza,qCACZkoB,QAAS8pC,IAPf,gCAUI,OAVJ,oCAUUL,GAAal3C,EAAMxa,qCAAP,MAVtB,QAYI,OAZJ,oBAYU0wD,aAAI,CAAEn2C,KAAMC,EAAMva,wCAZ5B,yFAgBA,SAAU66D,GAAV,8EAEI,OAF4Cl/C,EAAhD,EAAgDA,SAAhD,kBAEU80C,aAAI,CAAEn2C,KAAMC,EAAMra,4CAF5B,OAIyB,OAJzB,SAI+B0xD,aACzB6J,GACA9/C,GANN,OAQI,OARJ,SAIYm2C,EAJZ,EAIYA,SAJZ,UAQUrB,aAAI,CACRn2C,KAAMC,EAAMpa,4CACZwvB,cAAemiC,IAVrB,gCAaI,OAbJ,oCAaUL,GAAal3C,EAAMna,4CAAP,MAbtB,QAeI,OAfJ,oBAeUqwD,aAAI,CAAEn2C,KAAMC,EAAMla,+CAf5B,yFAmBA,SAAUy6D,GAAV,8EAEI,OAFuC9/C,EAA3C,EAA2CA,UAA3C,kBAEUy1C,aAAI,CAAEn2C,KAAMC,EAAMha,sCAF5B,OAIyB,OAJzB,SAI+BqxD,aAAK6J,GAAiCzgD,GAJrE,OAKI,OALJ,SAIY82C,EAJZ,EAIYA,SAJZ,UAKUrB,aAAI,CACRn2C,KAAMC,EAAM/Z,sCACZwnB,QAAS8pC,IAPf,gCAUI,OAVJ,oCAUUL,GAAal3C,EAAM9Z,sCAAP,MAVtB,QAYI,OAZJ,oBAYUgwD,aAAI,CAAEn2C,KAAMC,EAAM7Z,yCAZ5B,yFAgBA,SAAUq6D,GAAV,8EAEI,OAF6C//C,EAAjD,EAAiDA,UAAjD,kBAEUy1C,aAAI,CAAEn2C,KAAMC,EAAM3Z,6CAF5B,OAIyB,OAJzB,SAI+BgxD,aACzB6J,GACAzgD,GANN,OAQI,OARJ,SAIY82C,EAJZ,EAIYA,SAJZ,UAQUrB,aAAI,CACRn2C,KAAMC,EAAM1Z,6CACZ8uB,cAAemiC,IAVrB,gCAaI,OAbJ,oCAaUL,GAAal3C,EAAMzZ,6CAAP,MAbtB,QAeI,OAfJ,oBAeU2vD,aAAI,CAAEn2C,KAAMC,EAAMxZ,gDAf5B,yFAmBA,SAAUi6D,GAAV,kFAE2B,OAFG77C,EAA9B,EAA8BA,OAAQtE,EAAtC,EAAsCA,KAAtC,kBAEiCw2C,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAM/Y,sBAH5B,UAKMqZ,IAAS0iB,EALf,iBAMU,OANV,UAMgBq0B,aAAK6J,GAAyBt8C,EAAQjB,GANtD,4CAOU,OAPV,UAOgB0zC,aAAK6J,GAAuBt8C,EAAQjB,GAPpD,4BAQI,OARJ,OAIY4zC,EAJZ,EAIYA,SAJZ,UAQUrB,aAAI,CACRn2C,KAAMC,EAAM9Y,sBACZstD,gBAAiB+C,IAVvB,WAaQj3C,IAAS0iB,EAbjB,iBAcM,OAdN,UAcYkzB,aAAI,CAAEn2C,KAAMC,EAAMtZ,0BAA2BsX,MAAM,IAd/D,gCAgBM,OAhBN,UAgBYk4C,aAAI,CAAEn2C,KAAMC,EAAMjZ,wBAAyBiX,MAAM,IAhB7D,gCAmBI,OAnBJ,oCAmBUk5C,GAAal3C,EAAM7Y,sBAAP,MAnBtB,QAqBI,OArBJ,oBAqBU+uD,aAAI,CAAEn2C,KAAMC,EAAM5Y,yBArB5B,yFAyBA,SAAUs5D,GAAV,4EAE2B,OAFG97C,EAA9B,EAA8BA,OAA9B,kBAEiCkyC,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAMzY,sBAH5B,OAKI,OALJ,SAKU8vD,aAAK6J,GAAwBt8C,EAAOnJ,GAAIkI,GALlD,OAMI,OANJ,UAMUuyC,aAAI,CACRn2C,KAAMC,EAAMxY,sBACZ8qB,SAAU1N,EAAOnJ,KARvB,QAUI,OAVJ,UAUUy6C,aAAI,CAAEn2C,KAAMC,EAAM3Y,0BAA2B2W,MAAM,IAV7D,gCAYI,OAZJ,oCAYUk5C,GAAal3C,EAAMvY,sBAAP,MAZtB,QAcI,OAdJ,oBAcUyuD,aAAI,CAAEn2C,KAAMC,EAAMtY,yBAd5B,yFAkBA,SAAUi5D,GAAV,gGAE2B,OAFSt8C,EAApC,EAAoCA,QAAS/D,EAA7C,EAA6CA,KAAMwC,EAAnD,EAAmDA,OAAQ1B,EAA3D,EAA2DA,SAA3D,kBAEiC01C,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAMpX,6BAH5B,UAMM0X,IAAS0iB,EANf,iBAOU,OAPV,UAOgBq0B,aAAK6J,GAAyB78C,EAASV,GAPvD,4CAQU,OARV,UAQgB0zC,aAAK6J,GAAyB78C,EAASV,GARvD,sCAKY4zC,EALZ,EAKYA,SAKF9zC,EAAe+lB,KAKM,qBADrBoc,EAAckM,GAA8BztC,KACRuhC,EAAYv8B,OAAS,GAfnE,iBAiBM,OADI3F,EAAW6zC,EAAS97C,GAhB9B,UAiBYy6C,aAAI,CACRn2C,KAAMC,EAAMxN,qCACZiR,eACAC,WACAtC,WACAwkC,gBAtBR,aA6BoC,qBAF1B3hB,EAAqB8tB,GAAgC1tC,KAGzD4f,EAAmB5a,OAAS,GA9BlC,iBAiCM,OADIizC,EAAqBr4B,EAAmBzR,KAAI,SAAC07B,GAAD,OAAOA,EAAEzyC,MAhC/D,UAiCYy6C,aAAI,CACRn2C,KAAMC,EAAMvN,qCACZ6pD,qBACA34C,iBACAvC,aArCR,QAyCI,OAzCJ,UAyCU80C,aAAI,CACRn2C,KAAMC,EAAMnX,6BACZ80D,cAAepG,IA3CrB,QA6CI,OA7CJ,UA6CUrB,aAAI,CACRn2C,KAAMC,EAAMrY,6BACZ2qB,SAAUjO,EAAQiO,WA/CxB,WAkDQhS,IAAS0iB,EAlDjB,iBAmDM,OAnDN,UAmDYkzB,aAAI,CACRn2C,KAAMC,EAAM3X,0BACZihC,sBAAsB,EACtBL,SAAU5kB,EAAQ5I,KAtD1B,WA0DmB,WAAXqH,EA1DR,iBA2DM,OA3DN,UA2DYozC,aAAI,CAAEn2C,KAAMC,EAAMrgB,8BAA+Bqe,MAAM,IA3DnE,QA4DM,OA5DN,UA4DYk4C,aAAI,CACRn2C,KAAMC,EAAMhX,4BACZ6Z,YAAawB,EAAQxB,cA9D7B,gCAkEI,OAlEJ,oCAkEUq0C,GAAal3C,EAAMlX,6BAAP,MAlEtB,QAoEI,OApEJ,oBAoEUotD,aAAI,CAAEn2C,KAAMC,EAAMjX,gCApE5B,yFAwEA,SAAU63D,GAAV,8EAEI,OAFsCtuC,EAA1C,EAA0CA,SAA1C,kBAEU4jC,aAAI,CAAEn2C,KAAMC,EAAMpY,qCAF5B,OAIyB,OAJzB,SAI+ByvD,aAAK6J,GAAgC5uC,GAJpE,OAKI,OALJ,SAIYilC,EAJZ,EAIYA,SAJZ,UAKUrB,aAAI,CACRn2C,KAAMC,EAAMnY,qCACZk/B,QAASwwB,IAPf,gCAUI,OAVJ,oCAUUL,GAAal3C,EAAMlY,qCAAP,MAVtB,QAYI,OAZJ,oBAYUouD,aAAI,CAAEn2C,KAAMC,EAAMjY,wCAZ5B,yFAgBA,SAAU84D,GAAV,4EAE2B,OAFSx8C,EAApC,EAAoCA,QAApC,kBAEiCyyC,KAFjC,OAGI,OADMnzC,EAFV,gBAGUuyC,aAAI,CAAEn2C,KAAMC,EAAM/X,6BAH5B,OAKI,OALJ,SAKUovD,aAAK6J,GAA+B78C,EAASV,GALvD,OAMI,OANJ,UAMUuyC,aAAI,CACRn2C,KAAMC,EAAM9X,6BACZ+gC,SAAU5kB,EAAQ4kB,WARxB,gCAWI,OAXJ,oCAWUiuB,GAAal3C,EAAM7X,6BAAP,MAXtB,QAaI,OAbJ,oBAaU+tD,aAAI,CAAEn2C,KAAMC,EAAM5X,gCAb5B,yFAmBA,SAAU04D,GAAV,kFAMI,OALFr9C,EADF,EACEA,aACAC,EAFF,EAEEA,SACAC,EAHF,EAGEA,eAHF,kBAMUuyC,aAAI,CAAEn2C,KAAMC,EAAMtN,2CAN5B,OAOyB,OAPzB,SAO+B2kD,aACzBkF,GACA94C,EACAC,EACAC,GAXN,OAaI,OAbJ,SAOY4zC,EAPZ,EAOYA,SAPZ,UAaUrB,aAAI,CACRn2C,KAAMC,EAAMrN,2CACZizC,YAAa2R,IAfnB,gCAkBI,OAlBJ,oCAkBUL,GAAal3C,EAAMpN,2CAAP,MAlBtB,QAoBI,OApBJ,oBAoBUsjD,aAAI,CAAEn2C,KAAMC,EAAMnN,8CApB5B,yFAwBA,SAAUkuD,GAAV,mFACEzE,EADF,EACEA,mBACA34C,EAFF,EAEEA,eACAvC,EAHF,EAGEA,SAHF,WAOoC,qBAAvBk7C,GACPA,EAAmBjzC,OAAS,GARlC,gBAWM,OADMyxC,EAAsBwB,EAAmBv/C,KAAK,KAV1D,SAWYs6C,aACJkF,GACAzB,EACAn3C,EACAvC,GAfR,yJAuBA,SAAU4/C,GAAV,gFAOI,OANFv9C,EADF,EACEA,aACAC,EAFF,EAEEA,SACAtC,EAHF,EAGEA,SACAwkC,EAJF,EAIEA,YAJF,kBAOUyR,aACJkF,GACA94C,EACAC,EACAtC,EACAwkC,GAZN,oJAoBA,SAAUsR,GAAan3C,EAAMxlB,GAA7B,gFACMi9D,GAAuB,EACvBC,EAAuB,GACtBl9D,EAAM+7D,GAHb,iBAMM,OANN,SAKYoB,EAAQn9D,EAAMm9D,QAL1B,SAMYA,EAAM1vC,OAAO+tC,MAAK,SAAC/tC,GACvByvC,EAAuB9B,KAAKgC,MAAM3vC,GAClCwvC,GAAuB,KAR/B,uDAWMA,GAAuB,EACvBC,EAAoB,KAZ1B,YAeQD,EAfR,iBAiBM,OADMl6C,EAAes6C,GAAoBH,GAhB/C,UAiBYvB,aAAI,CAAEn2C,OAAMzC,iBAjBxB,sDAsBA,SAASs6C,GAAoBH,GAC3B,IAAIn6C,EAAe,GAEnB,IACE,IAAMuL,EAAU4uC,EAAqBI,iBACjCJ,EAAqBI,iBAAiB13B,MAAM,YAAY,GACxDs3B,EAAqBK,eAEzBx6C,EAAeq4C,KAAKgC,MAAM9uC,GAASvL,gBAEjCA,EAAe,oBAEjB,MAAO/iB,GACP+iB,EAAe,mBAGjB,OAAOA,EAGM,SAAU2jD,KAAV,iEACb,OADa,SACPlJ,aACJ/3C,EAAM3a,6BACNg7D,IAHW,OAMb,OANa,SAMPtI,aACJ/3C,EAAMta,oCACN46D,IARW,OAWb,OAXa,SAWPvI,aACJ/3C,EAAMja,8BACNw6D,IAbW,OAgBb,OAhBa,SAgBPxI,aACJ/3C,EAAM5Z,qCACNo6D,IAlBW,OAqBb,OArBa,UAqBPzI,aAAW/3C,EAAMhZ,cAAey5D,IArBzB,QAsBb,OAtBa,UAsBP1I,aAAW/3C,EAAM1Y,cAAeo5D,IAtBzB,QAwBb,OAxBa,UAwBP3I,aAAW/3C,EAAMrX,qBAAsBg4D,IAxBhC,QAyBb,OAzBa,UAyBP5I,aACJ/3C,EAAMrY,6BACNi5D,IA3BW,QA8Bb,OA9Ba,UA8BP7I,aAAW/3C,EAAMhY,qBAAsB64D,IA9BhC,QAgCb,OAhCa,UAgCP9I,aACJ/3C,EAAMxN,qCACNwuD,IAlCW,QAqCb,OArCa,UAqCPjJ,aACJ/3C,EAAMvN,qCACNsuD,IAvCW,QA0Cb,OA1Ca,UA0CPhJ,aACJ/3C,EAAMzN,mCACNuuD,IA5CW,yC,gBC/UUK,IAAV,SAAUA,KAAV,iEACb,OADa,SACPC,aAAI,GAAD,oBACJ9sB,MADI,aAEJ3jB,MAFI,aAGJnJ,MAHI,aAIJkS,MAJI,aAKJ/L,MALI,aAMJI,MANI,aAOJF,MAPI,aAQJuJ,MARI,aASJ3J,QAVQ,wC,aCVA4zC,kB,oBCgDAhkD,GA9CDikD,aAAe,CAC3B32C,QAAS,CACPuF,QAAS,CACPrF,KAAM,WAERqE,UAAW,CACTrE,KAAM,UACNsE,MAAO,WAETvE,SAAU,CACRC,KAAM,WAERkG,OAAQ,CACNlG,KAAM,MACNsE,MAAO,WAEToyC,YAAa,CACX1yC,QAAS,WAEX2yC,UAAW,CACTC,MAAO,UACP52C,KAAM,UACN62C,KAAM,UACNC,aAAc,OACdH,UAAW,WAEbp9B,SAAU,CACRvZ,KAAM,WAERtwB,MAAO,CACLswB,KAAM+2C,KAAIC,MAEZxwC,UAAW,CACTxC,QAAS,WAEX80B,WAAY,CACV90B,QAAS,WAEXizC,UAAW,UACXC,cAAe,CACbl3C,KAAM,UACNsE,MAAO,c,UC9BP6yC,GCTS,SAAwBC,GACrC,IAAMC,EAAiBC,eACjBH,EAAQI,uBACZC,GACAJ,EACAK,+BAAoBC,2BAAgBL,KAMtC,OAHAF,EAAMQ,QAAUN,EAAeO,IAC/BT,EAAMU,MAAQ,kBAAMV,EAAMn6C,SAAS86C,OAE5BX,EDFKY,GACdZ,GAAMQ,QAAQrB,IAId,IAQI0B,GAAW,UAAM9qE,OAAOK,SAAS0qE,OAAtB,SAEfC,IAASznE,OACP,kBAAC,IAAD,CAAQtD,QAASA,IACf,kBAAC,IAAD,CAAUgqE,MAAOA,IACf,kBAACgB,EAAA,EAAD,CAAe3lD,MAAOA,IACpB,kBAAC,EAAD,CACE4lD,OAAQC,GAAOD,OACfE,UAAWD,GAAOE,SAClBC,aAAcR,GACdhqE,mBAlBiB,SAACoB,GAC1BjC,GAAQooC,KACNnmC,GAAYA,EAASmB,UACjBnB,EAASmB,UACTrD,OAAOK,SAASC,YAgBd,kBAAC,GAAD,UAKRH,SAASorE,eAAe,S7CsFpB,kBAAmBC,WACrBA,UAAUC,cAAcC,MACrB1N,MAAK,SAAA2N,GACJA,EAAaC,gBAEdlJ,OAAM,SAAAlgE,GACLD,QAAQC,MAAMA,EAAMsuB,a","file":"static/js/main.3b8c3dc4.chunk.js","sourcesContent":["// src/react-auth0-spa.js\r\nimport React, { useState, useEffect, useContext } from 'react';\r\nimport createAuth0Client from '@auth0/auth0-spa-js';\r\n\r\nconst DEFAULT_REDIRECT_CALLBACK = () =>\r\n window.history.replaceState({}, document.title, window.location.pathname);\r\n\r\nexport const Auth0Context = React.createContext();\r\nexport const useAuth0 = () => useContext(Auth0Context);\r\nexport const Auth0Provider = ({\r\n children,\r\n onRedirectCallback = DEFAULT_REDIRECT_CALLBACK,\r\n ...initOptions\r\n}) => {\r\n const [isAuthenticated, setIsAuthenticated] = useState();\r\n const [user, setUser] = useState();\r\n const [auth0Client, setAuth0] = useState();\r\n const [loading, setLoading] = useState(true);\r\n const [popupOpen, setPopupOpen] = useState(false);\r\n\r\n useEffect(() => {\r\n const initAuth0 = async () => {\r\n const auth0FromHook = await createAuth0Client(initOptions);\r\n setAuth0(auth0FromHook);\r\n\r\n if (\r\n window.location.search.includes('code=') &&\r\n window.location.search.includes('state=')\r\n ) {\r\n const { appState } = await auth0FromHook.handleRedirectCallback();\r\n onRedirectCallback(appState);\r\n }\r\n\r\n const isAuthenticated = await auth0FromHook.isAuthenticated();\r\n\r\n setIsAuthenticated(isAuthenticated);\r\n\r\n if (isAuthenticated) {\r\n const user = await auth0FromHook.getUser();\r\n setUser(user);\r\n }\r\n\r\n setLoading(false);\r\n };\r\n initAuth0();\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n const loginWithPopup = async (params = {}) => {\r\n setPopupOpen(true);\r\n try {\r\n await auth0Client.loginWithPopup(params);\r\n } catch (error) {\r\n console.error(error);\r\n } finally {\r\n setPopupOpen(false);\r\n }\r\n const user = await auth0Client.getUser();\r\n setUser(user);\r\n setIsAuthenticated(true);\r\n };\r\n\r\n const handleRedirectCallback = async () => {\r\n setLoading(true);\r\n await auth0Client.handleRedirectCallback();\r\n const user = await auth0Client.getUser();\r\n setLoading(false);\r\n setIsAuthenticated(true);\r\n setUser(user);\r\n };\r\n return (\r\n auth0Client.getIdTokenClaims(...p),\r\n loginWithRedirect: (...p) => auth0Client.loginWithRedirect(...p),\r\n getTokenSilently: (...p) => auth0Client.getTokenSilently(...p),\r\n getTokenWithPopup: (...p) => auth0Client.getTokenWithPopup(...p),\r\n logout: (...p) => auth0Client.logout(...p)\r\n }}\r\n >\r\n {children}\r\n \r\n );\r\n};\r\n","// src/components/PrivateRoute.js\r\n\r\nimport React, { useEffect } from 'react';\r\nimport { Route } from 'react-router-dom';\r\nimport { useAuth0 } from '../../react-auth0-spa';\r\n\r\nconst PrivateRoute = ({ component: Component, path, ...rest }) => {\r\n const { loading, isAuthenticated, loginWithRedirect } = useAuth0();\r\n\r\n useEffect(() => {\r\n if (loading || isAuthenticated) {\r\n return;\r\n }\r\n const fn = async () => {\r\n await loginWithRedirect({\r\n appState: { targetUrl: window.location.pathname }\r\n });\r\n };\r\n fn();\r\n }, [loading, isAuthenticated, loginWithRedirect, path]);\r\n\r\n const render = (props) =>\r\n isAuthenticated === true ? : null;\r\n\r\n return ;\r\n};\r\n\r\nexport default PrivateRoute;\r\n","export default {\r\n MESSAGE_SHOW: 'MESSAGE_SHOW',\r\n MESSAGE_HIDE: 'MESSAGE_HIDE',\r\n MESSAGE_NEXT: 'MESSAGE_NEXT',\r\n\r\n OPEN_CREATE_COMPANY_DIALOG: 'OPEN_CREATE_COMPANY_DIALOG',\r\n OPEN_EDIT_COMPANY_DIALOG: 'OPEN_EDIT_COMPANY_DIALOG',\r\n\r\n SAMPLE: 'SAMPLE',\r\n\r\n //BRANCH\r\n OPEN_CREATE_BRANCH_DIALOG: 'OPEN_CREATE_BRANCH_DIALOG',\r\n OPEN_EDIT_BRANCH_DIALOG: 'OPEN_EDIT_BRANCH_DIALOG',\r\n\r\n CHANGE_SEARCH_TERM_ALL_BRANCH: 'CHANGE_SEARCH_TERM_ALL_BRANCH',\r\n\r\n CHECK_BRANCH_ACCESS_FOR_USER: 'CHECK_BRANCH_ACCESS_FOR_USER',\r\n START_CHECK_BRANCH_ACCESS_FOR_USER: 'START_CHECK_BRANCH_ACCESS_FOR_USER',\r\n CHECK_BRANCH_ACCESS_FOR_USER_SUCCESS: 'CHECK_BRANCH_ACCESS_FOR_USER_SUCCESS',\r\n CHECK_BRANCH_ACCESS_FOR_USER_FAILURE: 'CHECK_BRANCH_ACCESS_FOR_USER_FAILURE',\r\n CHECK_BRANCH_ACCESS_FOR_USER_FINISHED:\r\n 'CHECK_BRANCH_ACCESS_FOR_USER_FINISHED',\r\n\r\n //LoadBRANCHes\r\n START_GET_ALL_BRANCH: 'START_GET_ALL_BRANCH',\r\n GET_ALL_BRANCH: 'GET_ALL_BRANCH',\r\n GET_ALL_BRANCH_SUCCESS: 'GET_ALL_BRANCH_SUCCESS',\r\n GET_ALL_BRANCH_FAILURE: 'GET_ALL_BRANCH_FAILURE',\r\n GET_ALL_BRANCH_FINISH: 'GET_ALL_BRANCH_FINISH',\r\n\r\n INPUT_CHANGE_CREATE_BRANCH_FORM: 'INPUT_CHANGE_CREATE_BRANCH_FORM',\r\n\r\n EDIT_BRANCH: 'EDIT_BRANCH',\r\n\r\n //Create BRANCH\r\n SUBMIT_BRANCH: 'SUBMIT_BRANCH',\r\n START_SUBMIT_BRANCH: 'START_SUBMIT_BRANCH',\r\n SUBMIT_BRANCH_SUCCESS: 'SUBMIT_BRANCH_SUCCESS',\r\n SUBMIT_BRANCH_FAILURE: 'SUBMIT_BRANCH_FAILURE',\r\n SUBMIT_BRANCH_FINISHED: 'SUBMIT_BRANCH_FINISHED',\r\n\r\n //Update BRANCH\r\n\r\n DEACTIVATE_OR_DELETE_BRANCH_DIALOG: 'DEACTIVATE_OR_DELETE_BRANCH_DIALOG',\r\n DEACTIVATE_OR_DELETE_BRANCH: 'DEACTIVATE_OR_DELETE_BRANCH',\r\n\r\n //Companies\r\n\r\n INPUT_CHANGE_CREATE_COMPANY_FORM: 'INPUT_CHANGE_CREATE_COMPANY_FORM',\r\n DEACTIVATE_OR_DELETE_COMPANY_DIALOG: 'DEACTIVATE_OR_DELETE_COMPANY_DIALOG',\r\n\r\n DEACTIVATE_OR_DELETE_COMPANY: 'DEACTIVATE_OR_DELETE_COMPANY',\r\n\r\n SUBMIT_COMPANY: 'SUBMIT_COMPANY',\r\n START_SUBMIT_COMPANY: 'START_SUBMIT_COMPANY',\r\n SUBMIT_COMPANY_SUCCESS: 'SUBMIT_COMPANY_SUCCESS',\r\n SUBMIT_COMPANY_FAILURE: 'SUBMIT_COMPANY_FAILURE',\r\n SUBMIT_COMPANY_FINISHED: 'SUBMIT_COMPANY_FINISHED',\r\n\r\n CHANGE_SEARCH_TERM_ALL_COMPANIES: 'CHANGE_SEARCH_TERM_ALL_COMPANIES',\r\n\r\n FETCH_ALL_COMPANIES: 'FETCH_ALL_COMPANIES',\r\n START_FETCH_ALL_COMPANIES: 'START_FETCH_ALL_COMPANIES',\r\n FETCH_ALL_COMPANIES_SUCCESS: 'FETCH_ALL_COMPANIES_SUCCESS',\r\n FETCH_ALL_COMPANIES_FAILURE: 'FETCH_ALL_COMPANIES_FAILURE',\r\n FETCH_ALL_COMPANIES_FINISHED: 'FETCH_ALL_COMPANIES_FINISHED',\r\n\r\n CHANGE_TAB_VALUE_IN_HEADER: 'CHANGE_TAB_VALUE_IN_HEADER',\r\n\r\n EDIT_COMPANY: 'EDIT_COMPANY',\r\n\r\n OPEN_CHANGE_PASSWORD_DIALOG: 'OPEN_CHANGE_PASSWORD_DIALOG',\r\n\r\n SEND_CHANGE_PASSWORD_REQUEST: 'SEND_CHANGE_PASSWORD_REQUEST',\r\n START_SEND_CHANGE_PASSWORD_REQUEST: 'START_SEND_CHANGE_PASSWORD_REQUEST',\r\n SEND_CHANGE_PASSWORD_REQUEST_SUCCESS: 'SEND_CHANGE_PASSWORD_REQUEST_SUCCESS',\r\n SEND_CHANGE_PASSWORD_REQUEST_FAILURE: 'SEND_CHANGE_PASSWORD_REQUEST_FAILURE',\r\n SEND_CHANGE_PASSWORD_REQUEST_FINISHED:\r\n 'SEND_CHANGE_PASSWORD_REQUEST_FINISHED',\r\n\r\n SET_LOGGED_IN_USER: 'SET_LOGGED_IN_USER',\r\n //Personnels\r\n FETCH_ALL_PERSONNELS: 'FETCH_ALL_PERSONNELS',\r\n START_FETCH_ALL_PERSONNELS: 'START_FETCH_ALL_PERSONNELS',\r\n FETCH_ALL_PERSONNELS_SUCCESS: 'FETCH_ALL_PERSONNELS_SUCCESS',\r\n FETCH_ALL_PERSONNELS_FAILURE: 'FETCH_ALL_PERSONNELS_FAILURE',\r\n FETCH_ALL_PERSONNELS_FINISHED: 'FETCH_ALL_PERSONNELS_FINISHED',\r\n\r\n OPEN_CREATE_PERSONNEL_DIALOG: 'OPEN_CREATE_PERSONNEL_DIALOG',\r\n OPEN_EDIT_PERSONNEL_DIALOG: 'OPEN_EDIT_PERSONNEL_DIALOG',\r\n\r\n CHANGE_SEARCH_TERM_ALL_PERSONNELS: 'CHANGE_SEARCH_TERM_ALL_PERSONNELS',\r\n\r\n INPUT_CHANGE_CREATE_PERSONNEL_FORM: 'INPUT_CHANGE_CREATE_PERSONNEL_FORM',\r\n\r\n SUBMIT_PERSONNEL: 'SUBMIT_PERSONNEL',\r\n START_SUBMIT_PERSONNEL: 'START_SUBMIT_PERSONNEL',\r\n SUBMIT_PERSONNEL_SUCCESS: 'SUBMIT_PERSONNEL_SUCCESS',\r\n SUBMIT_PERSONNEL_FAILURE: 'SUBMIT_PERSONNEL_FAILURE',\r\n SUBMIT_PERSONNEL_FINISHED: 'SUBMIT_PERSONNEL_FINISHED',\r\n\r\n CHANGE_NEW_PERSONNEL_VALIDATION_STATE:\r\n 'CHANGE_NEW_PERSONNEL_VALIDATION_STATE',\r\n\r\n OPEN_DELETE_PERSONNEL_DIALOG: 'OPEN_DELETE_PERSONNEL_DIALOG',\r\n OPEN_ADD_COURSE_RECORD_DIALOG: 'OPEN_ADD_COURSE_RECORD_DIALOG',\r\n OPEN_ADD_EVENT_RECORD_DIALOG: 'OPEN_ADD_EVENT_RECORD_DIALOG',\r\n OPEN_ADD_HAZARD_CONTROL_DIALOG: 'OPEN_ADD_HAZARD_CONTROL_DIALOG',\r\n\r\n FETCH_USER_DETAILS: 'FETCH_USER_DETAILS',\r\n START_FETCH_USER_DETAILS: 'START_FETCH_USER_DETAILS',\r\n FETCH_USER_DETAILS_SUCCESS: 'FETCH_USER_DETAILS_SUCCESS',\r\n FETCH_USER_DETAILS_FAILURE: 'FETCH_USER_DETAILS_FAILURE',\r\n FETCH_USER_DETAILS_FINISHED: 'FETCH_USER_DETAILS_FINISHED',\r\n\r\n SET_CURRENT_BRANCHES_RECORD: 'SET_CURRENT_BRANCHES_RECORD',\r\n EDIT_PERSONNEL: 'EDIT_PERSONNEL',\r\n\r\n OPEN_COURSES_FOR_PERSONNEL_DIALOG: 'OPEN_COURSES_FOR_PERSONNEL_DIALOG',\r\n CLEAR_ALL_COURSES_FOR_PERSONNEL: 'CLEAR_ALL_COURSES_FOR_PERSONNEL',\r\n\r\n FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER:\r\n 'FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER',\r\n START_FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER:\r\n 'START_FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER',\r\n FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER_SUCCESS:\r\n 'FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER_SUCCESS',\r\n FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER_FAILURE:\r\n 'FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER_FAILURE',\r\n FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER_FINISHED:\r\n 'FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER_FINISHED',\r\n\r\n FETCH_BRANCH_DETAILS_BY_BRANCH_ID: 'FETCH_BRANCH_DETAILS_BY_BRANCH_ID',\r\n START_FETCH_BRANCH_DETAILS_BY_BRANCH_ID:\r\n 'START_FETCH_BRANCH_DETAILS_BY_BRANCH_ID',\r\n FETCH_BRANCH_DETAILS_BY_BRANCH_ID_SUCCESS:\r\n 'FETCH_BRANCH_DETAILS_BY_BRANCH_ID_SUCCESS',\r\n FETCH_BRANCH_DETAILS_BY_BRANCH_ID_FAILURE:\r\n 'FETCH_BRANCH_DETAILS_BY_BRANCH_ID_FAILURE',\r\n FETCH_BRANCH_DETAILS_BY_BRANCH_ID_FINISHED:\r\n 'FETCH_BRANCH_DETAILS_BY_BRANCH_ID_FINISHED',\r\n\r\n FETCH_ALL_ACCIDENTS_FOR_BRANCH: 'FETCH_ALL_ACCIDENTS_FOR_BRANCH',\r\n START_FETCH_ALL_ACCIDENTS_FOR_BRANCH: 'START_FETCH_ALL_ACCIDENTS_FOR_BRANCH',\r\n FETCH_ALL_ACCIDENTS_FOR_BRANCH_SUCCESS:\r\n 'FETCH_ALL_ACCIDENTS_FOR_BRANCH_SUCCESS',\r\n FETCH_ALL_ACCIDENTS_FOR_BRANCH_FAILURE:\r\n 'FETCH_ALL_ACCIDENTS_FOR_BRANCH_FAILURE',\r\n FETCH_ALL_ACCIDENTS_FOR_BRANCH_FINISHED:\r\n 'FETCH_ALL_ACCIDENTS_FOR_BRANCH_FINISHED',\r\n\r\n FETCH_ALL_ACCIDENTS_FOR_COMPANY: 'FETCH_ALL_ACCIDENTS_FOR_COMPANY',\r\n START_FETCH_ALL_ACCIDENTS_FOR_COMPANY:\r\n 'START_FETCH_ALL_ACCIDENTS_FOR_COMPANY',\r\n FETCH_ALL_ACCIDENTS_FOR_COMPANY_SUCCESS:\r\n 'FETCH_ALL_ACCIDENTS_FOR_COMPANY_SUCCESS',\r\n FETCH_ALL_ACCIDENTS_FOR_COMPANY_FAILURE:\r\n 'FETCH_ALL_ACCIDENTS_FOR_COMPANY_FAILURE',\r\n FETCH_ALL_ACCIDENTS_FOR_COMPANY_FINISHED:\r\n 'FETCH_ALL_ACCIDENTS_FOR_COMPANY_FINISHED',\r\n\r\n CHANGE_SEARCH_TERM_ALL_ACCIDENTS: 'CHANGE_SEARCH_TERM_ALL_ACCIDENTS',\r\n OPEN_CREATE_ACCIDENT_DIALOG: 'OPEN_CREATE_ACCIDENT_DIALOG',\r\n OPEN_EDIT_ACCIDENT_DIALOG: 'OPEN_EDIT_ACCIDENT_DIALOG',\r\n INPUT_CHANGE_CREATE_ACCIDENT_FORM: 'INPUT_CHANGE_CREATE_ACCIDENT_FORM',\r\n EDIT_ACCIDENT: 'EDIT_ACCIDENT',\r\n\r\n DEACTIVATE_OR_DELETE_ACCIDENT_DIALOG: 'DEACTIVATE_OR_DELETE_ACCIDENT_DIALOG',\r\n\r\n DEACTIVATE_OR_DELETE_ACCIDENT: 'DEACTIVATE_OR_DELETE_ACCIDENT',\r\n START_DEACTIVATE_OR_DELETE_ACCIDENT: 'START_DEACTIVATE_OR_DELETE_ACCIDENT',\r\n DEACTIVATE_OR_DELETE_ACCIDENT_SUCCESS:\r\n 'DEACTIVATE_OR_DELETE_ACCIDENT_SUCCESS',\r\n DEACTIVATE_OR_DELETE_ACCIDENT_FAILURE:\r\n 'DEACTIVATE_OR_DELETE_ACCIDENT_FAILURE',\r\n DEACTIVATE_OR_DELETE_ACCIDENT_FINISHED:\r\n 'DEACTIVATE_OR_DELETE_ACCIDENT_FINISHED',\r\n\r\n SUBMIT_ACCIDENT: 'SUBMIT_ACCIDENT',\r\n START_SUBMIT_ACCIDENT: 'START_SUBMIT_ACCIDENT',\r\n SUBMIT_ACCIDENT_SUCCESS: 'SUBMIT_ACCIDENT_SUCCESS',\r\n SUBMIT_ACCIDENT_FAILURE: 'SUBMIT_ACCIDENT_FAILURE',\r\n SUBMIT_ACCIDENT_FINISHED: 'SUBMIT_ACCIDENT_FINISHED',\r\n\r\n FETCH_ALL_EVENTS_FOR_BRANCH: 'FETCH_ALL_EVENTS_FOR_BRANCH',\r\n START_FETCH_ALL_EVENTS_FOR_BRANCH: 'START_FETCH_ALL_EVENTS_FOR_BRANCH',\r\n FETCH_ALL_EVENTS_FOR_BRANCH_SUCCESS: 'FETCH_ALL_EVENTS_FOR_BRANCH_SUCCESS',\r\n FETCH_ALL_EVENTS_FOR_BRANCH_FAILURE: 'FETCH_ALL_EVENTS_FOR_BRANCH_FAILURE',\r\n FETCH_ALL_EVENTS_FOR_BRANCH_FINISHED: 'FETCH_ALL_EVENTS_FOR_BRANCH_FINISHED',\r\n\r\n FETCH_ALL_EVENTS_FOR_COMPANY: 'FETCH_ALL_EVENTS_FOR_COMPANY',\r\n START_FETCH_ALL_EVENTS_FOR_COMPANY: 'START_FETCH_ALL_EVENTS_FOR_COMPANY',\r\n FETCH_ALL_EVENTS_FOR_COMPANY_SUCCESS: 'FETCH_ALL_EVENTS_FOR_COMPANY_SUCCESS',\r\n FETCH_ALL_EVENTS_FOR_COMPANY_FAILURE: 'FETCH_ALL_EVENTS_FOR_COMPANY_FAILURE',\r\n FETCH_ALL_EVENTS_FOR_COMPANY_FINISHED:\r\n 'FETCH_ALL_EVENTS_FOR_COMPANY_FINISHED',\r\n\r\n CHANGE_SEARCH_TERM_ALL_EVENTS: 'CHANGE_SEARCH_TERM_ALL_EVENTS',\r\n OPEN_CREATE_EVENT_DIALOG: 'OPEN_CREATE_EVENT_DIALOG',\r\n OPEN_EDIT_EVENT_DIALOG: 'OPEN_EDIT_EVENT_DIALOG',\r\n OPEN_EDIT_EVENT_PANEL: 'OPEN_EDIT_EVENT_PANEL',\r\n INPUT_CHANGE_CREATE_EVENT_FORM: 'INPUT_CHANGE_CREATE_EVENT_FORM',\r\n EDIT_EVENT: 'EDIT_EVENT',\r\n\r\n SUBMIT_EVENT: 'SUBMIT_EVENT',\r\n START_SUBMIT_EVENT: 'START_SUBMIT_EVENT',\r\n SUBMIT_EVENT_SUCCESS: 'SUBMIT_EVENT_SUCCESS',\r\n SUBMIT_EVENT_FAILURE: 'SUBMIT_EVENT_FAILURE',\r\n SUBMIT_EVENT_FINISHED: 'SUBMIT_EVENT_FINISHED',\r\n\r\n OPEN_DELETE_EVENT_DIALOG: 'OPEN_DELETE_EVENT_DIALOG',\r\n\r\n DELETE_EVENT: 'DELETE_EVENT',\r\n START_DELETE_EVENT: 'START_DELETE_EVENT',\r\n DELETE_EVENT_SUCCESS: 'DELETE_EVENT_SUCCESS',\r\n DELETE_EVENT_FAILURE: 'DELETE_EVENT_FAILURE',\r\n DELETE_EVENT_FINISHED: 'DELETE_EVENT_FINISHED',\r\n\r\n FETCH_RECORDS_FOR_THE_EVENT: 'FETCH_RECORDS_FOR_THE_EVENT',\r\n START_FETCH_RECORDS_FOR_THE_EVENT: 'START_FETCH_RECORDS_FOR_THE_EVENT',\r\n FETCH_RECORDS_FOR_THE_EVENT_SUCCESS: 'FETCH_RECORDS_FOR_THE_EVENT_SUCCESS',\r\n FETCH_RECORDS_FOR_THE_EVENT_FAILURE: 'FETCH_RECORDS_FOR_THE_EVENT_FAILURE',\r\n FETCH_RECORDS_FOR_THE_EVENT_FINISHED: 'FETCH_RECORDS_FOR_THE_EVENT_FINISHED',\r\n\r\n DELETE_EVENT_RECORD: 'DELETE_EVENT_RECORD',\r\n START_DELETE_EVENT_RECORD: 'START_DELETE_EVENT_RECORD',\r\n DELETE_EVENT_RECORD_SUCCESS: 'DELETE_EVENT_RECORD_SUCCESS',\r\n DELETE_EVENT_RECORD_FAILURE: 'DELETE_EVENT_RECORD_FAILURE',\r\n DELETE_EVENT_RECORD_FINISHED: 'DELETE_EVENT_RECORD_FINISHED',\r\n\r\n SUBMIT_EVENT_RECORD: 'SUBMIT_EVENT_RECORD',\r\n START_SUBMIT_EVENT_RECORD: 'START_SUBMIT_EVENT_RECORD',\r\n SUBMIT_EVENT_RECORD_SUCCESS: 'SUBMIT_EVENT_RECORD_SUCCESS',\r\n SUBMIT_EVENT_RECORD_FAILURE: 'SUBMIT_EVENT_RECORD_FAILURE',\r\n SUBMIT_EVENT_RECORD_FINISHED: 'SUBMIT_EVENT_RECORD_FINISHED',\r\n\r\n FETCH_ALL_COURSES_FOR_BRANCH: 'FETCH_ALL_COURSES_FOR_BRANCH',\r\n START_FETCH_ALL_COURSES_FOR_BRANCH: 'START_FETCH_ALL_COURSES_FOR_BRANCH',\r\n FETCH_ALL_COURSES_FOR_BRANCH_SUCCESS: 'FETCH_ALL_COURSES_FOR_BRANCH_SUCCESS',\r\n FETCH_ALL_COURSES_FOR_BRANCH_FAILURE: 'FETCH_ALL_COURSES_FOR_BRANCH_FAILURE',\r\n FETCH_ALL_COURSES_FOR_BRANCH_FINISHED:\r\n 'FETCH_ALL_COURSES_FOR_BRANCH_FINISHED',\r\n\r\n FETCH_ALL_COURSE_RECORDS_FOR_BRANCH: 'FETCH_ALL_COURSE_RECORDS_FOR_BRANCH',\r\n START_FETCH_ALL_COURSE_RECORDS_FOR_BRANCH:\r\n 'START_FETCH_ALL_COURSE_RECORDS_FOR_BRANCH',\r\n FETCH_ALL_COURSE_RECORDS_FOR_BRANCH_SUCCESS:\r\n 'FETCH_ALL_COURSE_RECORDS_FOR_BRANCH_SUCCESS',\r\n FETCH_ALL_COURSE_RECORDS_FOR_BRANCH_FAILURE:\r\n 'FETCH_ALL_COURSE_RECORDS_FOR_BRANCH_FAILURE',\r\n FETCH_ALL_COURSE_RECORDS_FOR_BRANCH_FINISHED:\r\n 'FETCH_ALL_COURSE_RECORDS_FOR_BRANCH_FINISHED',\r\n\r\n FETCH_ALL_COURSES_FOR_COMPANY: 'FETCH_ALL_COURSES_FOR_COMPANY',\r\n START_FETCH_ALL_COURSES_FOR_COMPANY: 'START_FETCH_ALL_COURSES_FOR_COMPANY',\r\n FETCH_ALL_COURSES_FOR_COMPANY_SUCCESS:\r\n 'FETCH_ALL_COURSES_FOR_COMPANY_SUCCESS',\r\n FETCH_ALL_COURSES_FOR_COMPANY_FAILURE:\r\n 'FETCH_ALL_COURSES_FOR_COMPANY_FAILURE',\r\n FETCH_ALL_COURSES_FOR_COMPANY_FINISHED:\r\n 'FETCH_ALL_COURSES_FOR_COMPANY_FINISHED',\r\n\r\n FETCH_ALL_COURSE_RECORDS_FOR_COMPANY: 'FETCH_ALL_COURSE_RECORDS_FOR_COMPANY',\r\n START_FETCH_ALL_COURSE_RECORDS_FOR_COMPANY:\r\n 'START_FETCH_ALL_COURSE_RECORDS_FOR_COMPANY',\r\n FETCH_ALL_COURSE_RECORDS_FOR_COMPANY_SUCCESS:\r\n 'FETCH_ALL_COURSE_RECORDS_FOR_COMPANY_SUCCESS',\r\n FETCH_ALL_COURSE_RECORDS_FOR_COMPANY_FAILURE:\r\n 'FETCH_ALL_COURSE_RECORDS_FOR_COMPANY_FAILURE',\r\n FETCH_ALL_COURSE_RECORDS_FOR_COMPANY_FINISHED:\r\n 'FETCH_ALL_COURSE_RECORDS_FOR_COMPANY_FINISHED',\r\n\r\n CHANGE_SEARCH_TERM_ALL_COURSES: 'CHANGE_SEARCH_TERM_ALL_COURSES',\r\n OPEN_CREATE_COURSE_DIALOG: 'OPEN_CREATE_COURSE_DIALOG',\r\n OPEN_EDIT_COURSE_PANEL: 'OPEN_EDIT_COURSE_PANEL',\r\n INPUT_CHANGE_CREATE_COURSE_FORM: 'INPUT_CHANGE_CREATE_COURSE_FORM',\r\n EDIT_COURSE: 'EDIT_COURSE',\r\n INPUT_CHANGE_EDIT_COURSE_RECORD: 'INPUT_CHANGE_EDIT_COURSE_RECORD',\r\n OPEN_EDIT_COURSE_DIALOG: 'OPEN_EDIT_COURSE_DIALOG',\r\n\r\n SUBMIT_COURSE: 'SUBMIT_COURSE',\r\n START_SUBMIT_COURSE: 'START_SUBMIT_COURSE',\r\n SUBMIT_COURSE_SUCCESS: 'SUBMIT_COURSE_SUCCESS',\r\n SUBMIT_COURSE_FAILURE: 'SUBMIT_COURSE_FAILURE',\r\n SUBMIT_COURSE_FINISHED: 'SUBMIT_COURSE_FINISHED',\r\n\r\n OPEN_DELETE_COURSE_DIALOG: 'OPEN_DELETE_COURSE_DIALOG',\r\n\r\n DELETE_COURSE: 'DELETE_COURSE',\r\n START_DELETE_COURSE: 'START_DELETE_COURSE',\r\n DELETE_COURSE_SUCCESS: 'DELETE_COURSE_SUCCESS',\r\n DELETE_COURSE_FAILURE: 'DELETE_COURSE_FAILURE',\r\n DELETE_COURSE_FINISHED: 'DELETE_COURSE_FINISHED',\r\n\r\n FETCH_RECORDS_FOR_THE_COURSE: 'FETCH_RECORDS_FOR_THE_COURSE',\r\n START_FETCH_RECORDS_FOR_THE_COURSE: 'START_FETCH_RECORDS_FOR_THE_COURSE',\r\n FETCH_RECORDS_FOR_THE_COURSE_SUCCESS: 'FETCH_RECORDS_FOR_THE_COURSE_SUCCESS',\r\n FETCH_RECORDS_FOR_THE_COURSE_FAILURE: 'FETCH_RECORDS_FOR_THE_COURSE_FAILURE',\r\n FETCH_RECORDS_FOR_THE_COURSE_FINISHED:\r\n 'FETCH_RECORDS_FOR_THE_COURSE_FINISHED',\r\n\r\n DELETE_COURSE_RECORD: 'DELETE_COURSE_RECORD',\r\n START_DELETE_COURSE_RECORD: 'START_DELETE_COURSE_RECORD',\r\n DELETE_COURSE_RECORD_SUCCESS: 'DELETE_COURSE_RECORD_SUCCESS',\r\n DELETE_COURSE_RECORD_FAILURE: 'DELETE_COURSE_RECORD_FAILURE',\r\n DELETE_COURSE_RECORD_FINISHED: 'DELETE_COURSE_RECORD_FINISHED',\r\n\r\n ENABLE_EDIT_COURSE_RECORD: 'ENABLE_EDIT_COURSE_RECORD',\r\n EDIT_COURSE_RECORD: 'EDIT_COURSE_RECORD',\r\n START_EDIT_COURSE_RECORD: 'START_EDIT_COURSE_RECORD',\r\n EDIT_COURSE_RECORD_SUCCESS: 'EDIT_COURSE_RECORD_SUCCESS',\r\n EDIT_COURSE_RECORD_FAILURE: 'EDIT_COURSE_RECORD_FAILURE',\r\n EDIT_COURSE_RECORD_FINISHED: 'EDIT_COURSE_RECORD_FINISHED',\r\n\r\n SUBMIT_COURSE_RECORD: 'SUBMIT_COURSE_RECORD',\r\n START_SUBMIT_COURSE_RECORD: 'START_SUBMIT_COURSE_RECORD',\r\n SUBMIT_COURSE_RECORD_SUCCESS: 'SUBMIT_COURSE_RECORD_SUCCESS',\r\n SUBMIT_COURSE_RECORD_FAILURE: 'SUBMIT_COURSE_RECORD_FAILURE',\r\n SUBMIT_COURSE_RECORD_FINISHED: 'SUBMIT_COURSE_RECORD_FINISHED',\r\n\r\n FETCH_COURSES_FOR_PERSONNEL: 'FETCH_COURSES_FOR_PERSONNEL',\r\n START_FETCH_COURSES_FOR_PERSONNEL: 'START_FETCH_COURSES_FOR_PERSONNEL',\r\n FETCH_COURSES_FOR_PERSONNEL_SUCCESS: 'FETCH_COURSES_FOR_PERSONNEL_SUCCESS',\r\n FETCH_COURSES_FOR_PERSONNEL_FAILURE: 'FETCH_COURSES_FOR_PERSONNEL_FAILURE',\r\n FETCH_COURSES_FOR_PERSONNEL_FINISHED: 'FETCH_COURSES_FOR_PERSONNEL_FINISHED',\r\n\r\n OPEN_CREATE_USER_DIALOG: 'OPEN_CREATE_USER_DIALOG',\r\n OPEN_EDIT_USER_DIALOG: 'OPEN_EDIT_USER_DIALOG',\r\n OPEN_DELETE_USER_DIALOG: 'OPEN_DELETE_USER_DIALOG',\r\n\r\n CHANGE_SEARCH_TERM_ALL_USERS: 'CHANGE_SEARCH_TERM_ALL_USERS',\r\n\r\n FETCH_ALL_USERS: 'FETCH_ALL_USERS',\r\n START_FETCH_ALL_USERS: 'START_FETCH_ALL_USERS',\r\n FETCH_ALL_USERS_SUCCESS: 'FETCH_ALL_USERS_SUCCESS',\r\n FETCH_ALL_USERS_FAILURE: 'FETCH_ALL_USERS_FAILURE',\r\n FETCH_ALL_USERS_FINISHED: 'FETCH_ALL_USERS_FINISHED',\r\n\r\n EDIT_USER: 'EDIT_USER',\r\n\r\n INPUT_CHANGE_CREATE_USER_FORM: 'INPUT_CHANGE_CREATE_USER_FORM',\r\n\r\n SUBMIT_USER: 'SUBMIT_USER',\r\n START_SUBMIT_USER: 'START_SUBMIT_USER',\r\n SUBMIT_USER_SUCCESS: 'SUBMIT_USER_SUCCESS',\r\n SUBMIT_USER_FAILURE: 'SUBMIT_USER_FAILURE',\r\n SUBMIT_USER_FINISHED: 'SUBMIT_USER_FINISHED',\r\n\r\n ENABLE_EDIT_EVENT_RECORD: 'ENABLE_EDIT_EVENT_RECORD',\r\n EDIT_EVENT_RECORD: 'EDIT_EVENT_RECORD',\r\n START_EDIT_EVENT_RECORD: 'START_EDIT_EVENT_RECORD',\r\n EDIT_EVENT_RECORD_SUCCESS: 'EDIT_EVENT_RECORD_SUCCESS',\r\n EDIT_EVENT_RECORD_FAILURE: 'EDIT_EVENT_RECORD_FAILURE',\r\n EDIT_EVENT_RECORD_FINISHED: 'EDIT_EVENT_RECORD_FINISHED',\r\n\r\n INPUT_CHANGE_EDIT_EVENT_RECORD: 'INPUT_CHANGE_EDIT_EVENT_RECORD',\r\n\r\n //hazards\r\n FETCH_ALL_HAZARDS_FOR_BRANCH: 'FETCH_ALL_HAZARDS_FOR_BRANCH',\r\n START_FETCH_ALL_HAZARDS_FOR_BRANCH: 'START_FETCH_ALL_HAZARDS_FOR_BRANCH',\r\n FETCH_ALL_HAZARDS_FOR_BRANCH_SUCCESS: 'FETCH_ALL_HAZARDS_FOR_BRANCH_SUCCESS',\r\n FETCH_ALL_HAZARDS_FOR_BRANCH_FAILURE: 'FETCH_ALL_HAZARDS_FOR_BRANCH_FAILURE',\r\n FETCH_ALL_HAZARDS_FOR_BRANCH_FINISHED:\r\n 'FETCH_ALL_HAZARDS_FOR_BRANCH_FINISHED',\r\n\r\n FETCH_ALL_HAZARDS_FOR_COMPANY: 'FETCH_ALL_HAZARDS_FOR_COMPANY',\r\n START_FETCH_ALL_HAZARDS_FOR_COMPANY: 'START_FETCH_ALL_HAZARDS_FOR_COMPANY',\r\n FETCH_ALL_HAZARDS_FOR_COMPANY_SUCCESS:\r\n 'FETCH_ALL_HAZARDS_FOR_COMPANY_SUCCESS',\r\n FETCH_ALL_HAZARDS_FOR_COMPANY_FAILURE:\r\n 'FETCH_ALL_HAZARDS_FOR_COMPANY_FAILURE',\r\n FETCH_ALL_HAZARDS_FOR_COMPANY_FINISHED:\r\n 'FETCH_ALL_HAZARDS_FOR_COMPANY_FINISHED',\r\n\r\n CHANGE_SEARCH_TERM_ALL_HAZARDS: 'CHANGE_SEARCH_TERM_ALL_HAZARDS',\r\n OPEN_CREATE_HAZARD_DIALOG: 'OPEN_CREATE_HAZARD_DIALOG',\r\n OPEN_EDIT_HAZARD_DIALOG: 'OPEN_EDIT_HAZARD_DIALOG',\r\n OPEN_EDIT_HAZARD_PANEL: 'OPEN_EDIT_HAZARD_PANEL',\r\n INPUT_CHANGE_CREATE_HAZARD_FORM: 'INPUT_CHANGE_CREATE_HAZARD_FORM',\r\n EDIT_HAZARD: 'EDIT_HAZARD',\r\n\r\n SUBMIT_HAZARD: 'SUBMIT_HAZARD',\r\n START_SUBMIT_HAZARD: 'START_SUBMIT_HAZARD',\r\n SUBMIT_HAZARD_SUCCESS: 'SUBMIT_HAZARD_SUCCESS',\r\n SUBMIT_HAZARD_FAILURE: 'SUBMIT_HAZARD_FAILURE',\r\n SUBMIT_HAZARD_FINISHED: 'SUBMIT_HAZARD_FINISHED',\r\n\r\n OPEN_DELETE_HAZARD_DIALOG: 'OPEN_DELETE_HAZARD_DIALOG',\r\n\r\n DELETE_HAZARD: 'DELETE_HAZARD',\r\n START_DELETE_HAZARD: 'START_DELETE_HAZARD',\r\n DELETE_HAZARD_SUCCESS: 'DELETE_HAZARD_SUCCESS',\r\n DELETE_HAZARD_FAILURE: 'DELETE_HAZARD_FAILURE',\r\n DELETE_HAZARD_FINISHED: 'DELETE_HAZARD_FINISHED',\r\n\r\n FETCH_CONTROLS_FOR_THE_HAZARD: 'FETCH_CONTROLS_FOR_THE_HAZARD',\r\n START_FETCH_CONTROLS_FOR_THE_HAZARD: 'START_FETCH_CONTROLS_FOR_THE_HAZARD',\r\n FETCH_CONTROLS_FOR_THE_HAZARD_SUCCESS:\r\n 'FETCH_CONTROLS_FOR_THE_HAZARD_SUCCESS',\r\n FETCH_CONTROLS_FOR_THE_HAZARD_FAILURE:\r\n 'FETCH_CONTROLS_FOR_THE_HAZARD_FAILURE',\r\n FETCH_CONTROLS_FOR_THE_HAZARD_FINISHED:\r\n 'FETCH_CONTROLS_FOR_THE_HAZARD_FINISHED',\r\n\r\n DELETE_HAZARD_CONTROL: 'DELETE_HAZARD_CONTROL',\r\n START_DELETE_HAZARD_CONTROL: 'START_DELETE_HAZARD_CONTROL',\r\n DELETE_HAZARD_CONTROL_SUCCESS: 'DELETE_HAZARD_CONTROL_SUCCESS',\r\n DELETE_HAZARD_CONTROL_FAILURE: 'DELETE_HAZARD_CONTROL_FAILURE',\r\n DELETE_HAZARD_CONTROL_FINISHED: 'DELETE_HAZARD_CONTROL_FINISHED',\r\n\r\n SUBMIT_HAZARD_CONTROL: 'SUBMIT_HAZARD_CONTROL',\r\n START_SUBMIT_HAZARD_CONTROL: 'START_SUBMIT_HAZARD_CONTROL',\r\n SUBMIT_HAZARD_CONTROL_SUCCESS: 'SUBMIT_HAZARD_CONTROL_SUCCESS',\r\n SUBMIT_HAZARD_CONTROL_FAILURE: 'SUBMIT_HAZARD_CONTROL_FAILURE',\r\n SUBMIT_HAZARD_CONTROL_FINISHED: 'SUBMIT_HAZARD_CONTROL_FINISHED',\r\n\r\n ENABLE_EDIT_HAZARD_CONTROL: 'ENABLE_EDIT_HAZARD_CONTROL',\r\n EDIT_HAZARD_CONTROL: 'EDIT_HAZARD_CONTROL',\r\n START_EDIT_HAZARD_CONTROL: 'START_EDIT_HAZARD_CONTROL',\r\n EDIT_HAZARD_CONTROL_SUCCESS: 'EDIT_HAZARD_CONTROL_SUCCESS',\r\n EDIT_HAZARD_CONTROL_FAILURE: 'EDIT_HAZARD_CONTROL_FAILURE',\r\n EDIT_HAZARD_CONTROL_FINISHED: 'EDIT_HAZARD_CONTROL_FINISHED',\r\n\r\n INPUT_CHANGE_EDIT_HAZARD_CONTROL: 'INPUT_CHANGE_EDIT_HAZARD_CONTROL',\r\n\r\n OPEN_DELETE_HAZARD_CONTROL_DIALOG: 'OPEN_DELETE_HAZARD_CONTROL_DIALOG',\r\n\r\n //HAZARD REVIEW\r\n\r\n OPEN_HAZARD_REVIEW_PANEL: 'OPEN_HAZARD_REVIEW_PANEL',\r\n\r\n FETCH_REVIEWS_FOR_THE_HAZARD: 'FETCH_REVIEWS_FOR_THE_HAZARD',\r\n START_FETCH_REVIEWS_FOR_THE_HAZARD: 'START_FETCH_REVIEWS_FOR_THE_HAZARD',\r\n FETCH_REVIEWS_FOR_THE_HAZARD_SUCCESS: 'FETCH_REVIEWS_FOR_THE_HAZARD_SUCCESS',\r\n FETCH_REVIEWS_FOR_THE_HAZARD_FAILURE: 'FETCH_REVIEWS_FOR_THE_HAZARD_FAILURE',\r\n FETCH_REVIEWS_FOR_THE_HAZARD_FINISHED:\r\n 'FETCH_REVIEWS_FOR_THE_HAZARD_FINISHED',\r\n\r\n OPEN_CREATE_HAZARD_REVIEW_DIALOG: 'OPEN_CREATE_HAZARD_REVIEW_DIALOG',\r\n\r\n SUBMIT_HAZARD_REVIEW: 'SUBMIT_HAZARD_REVIEW',\r\n START_SUBMIT_HAZARD_REVIEW: 'START_SUBMIT_HAZARD_REVIEW',\r\n SUBMIT_HAZARD_REVIEW_SUCCESS: 'SUBMIT_HAZARD_REVIEW_SUCCESS',\r\n SUBMIT_HAZARD_REVIEW_FAILURE: 'SUBMIT_HAZARD_REVIEW_FAILURE',\r\n SUBMIT_HAZARD_REVIEW_FINISHED: 'SUBMIT_HAZARD_REVIEW_FINISHED',\r\n\r\n INPUT_CHANGE_EDIT_HAZARD_REVIEW: 'INPUT_CHANGE_EDIT_HAZARD_REVIEW',\r\n\r\n INPUT_CHANGE_ADD_HAZARD_REVIEW: 'INPUT_CHANGE_ADD_HAZARD_REVIEW',\r\n\r\n ENABLE_EDIT_HAZARD_REVIEW: 'ENABLE_EDIT_HAZARD_REVIEW',\r\n EDIT_HAZARD_REVIEW: 'EDIT_HAZARD_REVIEW',\r\n START_EDIT_HAZARD_REVIEW: 'START_EDIT_HAZARD_REVIEW',\r\n EDIT_HAZARD_REVIEW_SUCCESS: 'EDIT_HAZARD_REVIEW_SUCCESS',\r\n EDIT_HAZARD_REVIEW_FAILURE: 'EDIT_HAZARD_REVIEW_FAILURE',\r\n EDIT_HAZARD_REVIEW_FINISHED: 'EDIT_HAZARD_REVIEW_FINISHED',\r\n\r\n OPEN_DELETE_HAZARD_REVIEW_DIALOG: 'OPEN_DELETE_HAZARD_REVIEW_DIALOG',\r\n\r\n //HAZARD ManagementLogs\r\n\r\n OPEN_HAZARD_MANAGEMENTLOG_PANEL: 'OPEN_HAZARD_MANAGEMENTLOG_PANEL',\r\n\r\n FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD: 'FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD',\r\n START_FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD:\r\n 'START_FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD',\r\n FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD_SUCCESS:\r\n 'FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD_SUCCESS',\r\n FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD_FAILURE:\r\n 'FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD_FAILURE',\r\n FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD_FINISHED:\r\n 'FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD_FINISHED',\r\n\r\n OPEN_CREATE_HAZARD_MANAGEMENT_LOG_DIALOG:\r\n 'OPEN_CREATE_HAZARD_MANAGEMENT_LOG_DIALOG',\r\n\r\n SUBMIT_HAZARD_MANAGEMENT_LOG: 'SUBMIT_HAZARD_MANAGEMENT_LOG',\r\n START_SUBMIT_HAZARD_MANAGEMENT_LOG: 'START_SUBMIT_HAZARD_MANAGEMENT_LOG',\r\n SUBMIT_HAZARD_MANAGEMENT_LOG_SUCCESS: 'SUBMIT_HAZARD_MANAGEMENT_LOG_SUCCESS',\r\n SUBMIT_HAZARD_MANAGEMENT_LOG_FAILURE: 'SUBMIT_HAZARD_MANAGEMENT_LOG_FAILURE',\r\n SUBMIT_HAZARD_MANAGEMENT_LOG_FINISHED:\r\n 'SUBMIT_HAZARD_MANAGEMENT_LOG_FINISHED',\r\n\r\n INPUT_CHANGE_EDIT_HAZARD_MANAGEMENT_LOG:\r\n 'INPUT_CHANGE_EDIT_HAZARD_MANAGEMENT_LOG',\r\n\r\n INPUT_CHANGE_ADD_HAZARD_MANAGEMENT_LOG:\r\n 'INPUT_CHANGE_ADD_HAZARD_MANAGEMENT_LOG',\r\n\r\n ENABLE_EDIT_HAZARD_MANAGEMENT_LOG: 'ENABLE_EDIT_HAZARD_MANAGEMENT_LOG',\r\n EDIT_HAZARD_MANAGEMENT_LOG: 'EDIT_HAZARD_MANAGEMENT_LOG',\r\n START_EDIT_HAZARD_MANAGEMENT_LOG: 'START_HAZARD_MANAGEMENT_LOG',\r\n EDIT_HAZARD_MANAGEMENT_LOG_SUCCESS: 'EDIT_HAZARD_MANAGEMENT_LOG_SUCCESS',\r\n EDIT_HAZARD_MANAGEMENT_LOG_FAILURE: 'EDIT_HAZARD_MANAGEMENT_LOG_FAILURE',\r\n EDIT_HAZARD_MANAGEMENT_LOG_FINISHED: 'EDIT_HAZARD_MANAGEMENT_LOG_FINISHED',\r\n\r\n OPEN_DELETE_HAZARD_MANAGEMENT_LOG_DIALOG:\r\n 'OPEN_DELETE_HAZARD_MANAGEMENT_LOG_DIALOG',\r\n\r\n FETCH_ALL_REVIEWS_FOR_BRANCH: 'FETCH_ALL_REVIEWS_FOR_BRANCH',\r\n EDIT_REVIEW: 'EDIT_REVIEW',\r\n\r\n CHANGE_SELECTED_HAZARD_STATUS_FILTER: 'CHANGE_SELECTED_HAZARD_STATUS_FILTER',\r\n CHANGE_SELECTED_HAZARD_DESCRIPTION_FILTER:\r\n 'CHANGE_SELECTED_HAZARD_DESCRIPTION_FILTER',\r\n\r\n CLEAR_HAZARD_FILTERS: 'CLEAR_HAZARD_FILTERS',\r\n\r\n FETCH_ALL_DOCUMENTS: 'FETCH_ALL_DOCUMENTS',\r\n START_FETCH_ALL_DOCUMENTS: 'START_FETCH_ALL_DOCUMENTS',\r\n FETCH_ALL_DOCUMENTS_SUCCESS: 'FETCH_ALL_DOCUMENTS_SUCCESS',\r\n FETCH_ALL_DOCUMENTS_FAILURE: 'FETCH_ALL_DOCUMENTS_FAILURE',\r\n FETCH_ALL_DOCUMENTS_FINISHED: 'FETCH_ALL_DOCUMENTS_FINISHED',\r\n\r\n OPEN_DOCUMENT_LIST_DIALOG: 'OPEN_DOCUMENT_LIST_DIALOG',\r\n DOCUMENT_SHOW_FOLDER_ITEMS: 'DOCUMENT_SHOW_FOLDER_ITEMS',\r\n DOCUMENT_BACK_ARROW_CLICKED: 'DOCUMENT_BACK_ARROW_CLICKED',\r\n DOCUMENT_RESET_ORIGINAL_STATE: 'DOCUMENT_RESET_ORIGINAL_STATE',\r\n DOCUMENT_SELECTED: 'DOCUMENT_SELECTED',\r\n\r\n FULL_RESET_DOCUMENTS:'FULL_RESET_DOCUMENTS',\r\n\r\n FETCH_ALL_DOCUMENTS_FOR_BRANCH: 'FETCH_ALL_DOCUMENTS_FOR_BRANCH',\r\n\r\n //HAZARD ATTACHMENT\r\n LOAD_ATTACHMENTS_FOR_HAZARD: 'LOAD_ATTACHMENTS_FOR_HAZARD',\r\n START_LOAD_ATTACHMENTS_FOR_HAZARD: 'START_LOAD_ATTACHMENTS_FOR_HAZARD',\r\n LOAD_ATTACHMENTS_FOR_HAZARD_SUCCESS: 'LOAD_ATTACHMENTS_FOR_HAZARD_SUCCESS',\r\n LOAD_ATTACHMENTS_FOR_HAZARD_FAILURE: 'LOAD_ATTACHMENTS_FOR_HAZARD_FAILURE',\r\n LOAD_ATTACHMENTS_FOR_HAZARD_FINISHED: 'LOAD_ATTACHMENTS_FOR_HAZARD_FINISHED',\r\n\r\n REMOVE_HAZARD_ATTACHMENT: 'REMOVE_HAZARD_ATTACHMENT',\r\n\r\n UPLOAD_ATTACHMENTS_FOR_HAZARD: 'UPLOAD_ATTACHMENTS_FOR_HAZARD',\r\n START_UPLOAD_ATTACHMENTS_FOR_HAZARD: 'START_UPLOAD_ATTACHMENTS_FOR_HAZARD',\r\n UPLOAD_ATTACHMENTS_FOR_HAZARD_SUCCESS:\r\n 'UPLOAD_ATTACHMENTS_FOR_HAZARD_SUCCESS',\r\n UPLOAD_ATTACHMENTS_FOR_HAZARD_FAILURE:\r\n 'UPLOAD_ATTACHMENTS_FOR_HAZARD_FAILURE',\r\n UPLOAD_ATTACHMENTS_FOR_HAZARD_FINISHED:\r\n 'UPLOAD_ATTACHMENTS_FOR_HAZARD_FINISHED',\r\n\r\n DELETE_ATTACHMENTS_FOR_HAZARD: 'DELETE_ATTACHMENTS_FOR_HAZARD',\r\n\r\n //Course Record Attachment\r\n REMOVE_COURSE_RECORD_ATTACHMENT: 'REMOVE_COURSE_RECORD_ATTACHMENT',\r\n REMOVE_COURSE_RECORD_ATTACHMENT_EDIT: 'REMOVE_COURSE_RECORD_ATTACHMENT_EDIT',\r\n LOAD_ATTACHMENTS_FOR_COURSE_RECORD: 'LOAD_ATTACHMENTS_FOR_COURSE_RECORD',\r\n\r\n UPLOAD_ATTACHMENTS_FOR_COURSE_RECORD: 'UPLOAD_ATTACHMENTS_FOR_COURSE_RECORD',\r\n DELETE_ATTACHMENTS_FOR_COURSE_RECORD: 'DELETE_ATTACHMENTS_FOR_COURSE_RECORD',\r\n\r\n START_LOAD_ATTACHMENTS_FOR_COURSE_RECORD:\r\n 'START_LOAD_ATTACHMENTS_FOR_COURSE_RECORD',\r\n LOAD_ATTACHMENTS_FOR_COURSE_RECORD_SUCCESS:\r\n 'LOAD_ATTACHMENTS_FOR_COURSE_RECORD_SUCCESS',\r\n LOAD_ATTACHMENTS_FOR_COURSE_RECORD_FAILURE:\r\n 'LOAD_ATTACHMENTS_FOR_COURSE_RECORD_FAILURE',\r\n LOAD_ATTACHMENTS_FOR_COURSE_RECORD_FINISHED:\r\n 'LOAD_ATTACHMENTS_FOR_COURSE_RECORD_FINISHED',\r\n\r\n //Event Record Attachment\r\n REMOVE_EVENT_RECORD_ATTACHMENT: 'REMOVE_EVENT_RECORD_ATTACHMENT',\r\n REMOVE_EVENT_RECORD_ATTACHMENT_EDIT: 'REMOVE_EVENT_RECORD_ATTACHMENT_EDIT',\r\n LOAD_ATTACHMENTS_FOR_EVENT_RECORD: 'LOAD_ATTACHMENTS_FOR_EVENT_RECORD',\r\n\r\n UPLOAD_ATTACHMENTS_FOR_EVENT_RECORD: 'UPLOAD_ATTACHMENTS_FOR_EVENT_RECORD',\r\n DELETE_ATTACHMENTS_FOR_EVENT_RECORD: 'DELETE_ATTACHMENTS_FOR_EVENT_RECORD',\r\n\r\n START_LOAD_ATTACHMENTS_FOR_EVENT_RECORD:\r\n 'START_LOAD_ATTACHMENTS_FOR_EVENT_RECORD',\r\n LOAD_ATTACHMENTS_FOR_EVENT_RECORD_SUCCESS:\r\n 'LOAD_ATTACHMENTS_FOR_EVENT_RECORD_SUCCESS',\r\n LOAD_ATTACHMENTS_FOR_EVENT_RECORD_FAILURE:\r\n 'LOAD_ATTACHMENTS_FOR_EVENT_RECORD_FAILURE',\r\n LOAD_ATTACHMENTS_FOR_EVENT_RECORD_FINISHED:\r\n 'LOAD_ATTACHMENTS_FOR_EVENT_RECORD_FINISHED',\r\n\r\n //Accident Attachement\r\n LOAD_ATTACHMENTS_FOR_ACCIDENT: 'LOAD_ATTACHMENTS_FOR_ACCIDENT',\r\n START_LOAD_ATTACHMENTS_FOR_ACCIDENT: 'START_LOAD_ATTACHMENTS_FOR_ACCIDENT',\r\n LOAD_ATTACHMENTS_FOR_ACCIDENT_SUCCESS:\r\n 'LOAD_ATTACHMENTS_FOR_ACCIDENT_SUCCESS',\r\n LOAD_ATTACHMENTS_FOR_ACCIDENT_FAILURE:\r\n 'LOAD_ATTACHMENTS_FOR_ACCIDENT_FAILURE',\r\n LOAD_ATTACHMENTS_FOR_ACCIDENT_FINISHED:\r\n 'LOAD_ATTACHMENTS_FOR_ACCIDENT_FINISHED',\r\n\r\n REMOVE_ACCIDENT_ATTACHMENT: 'REMOVE_ACCIDENT_ATTACHMENT',\r\n\r\n UPLOAD_ATTACHMENTS_FOR_ACCIDENT: 'UPLOAD_ATTACHMENTS_FOR_ACCIDENT',\r\n DELETE_ATTACHMENTS_FOR_ACCIDENT: 'DELETE_ATTACHMENTS_FOR_ACCIDENT',\r\n\r\n //Hazard Review Attachment\r\n REMOVE_HAZARD_REVIEW_ATTACHMENT: 'REMOVE_HAZARD_REVIEW_ATTACHMENT',\r\n LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW: 'LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW',\r\n REMOVE_HAZARD_REVIEW_ATTACHMENT_EDIT: 'REMOVE_HAZARD_REVIEW_ATTACHMENT_EDIT',\r\n\r\n UPLOAD_ATTACHMENTS_FOR_HAZARD_REVIEW: 'UPLOAD_ATTACHMENTS_FOR_HAZARD_REVIEW',\r\n DELETE_ATTACHMENTS_FOR_HAZARD_REVIEW: 'DELETE_ATTACHMENTS_FOR_HAZARD_REVIEW',\r\n\r\n START_LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW:\r\n 'START_LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW',\r\n LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW_SUCCESS:\r\n 'LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW_SUCCESS',\r\n LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW_FAILURE:\r\n 'LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW_FAILURE',\r\n LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW_FINISHED:\r\n 'LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW_FINISHED',\r\n\r\n //Hazard Management logs attachment\r\n\r\n REMOVE_HAZARD_MANAGEMENT_LOGS_ATTACHMENT:\r\n 'REMOVE_HAZARD_MANAGEMENT_LOGS_ATTACHMENT',\r\n LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS:\r\n 'LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS',\r\n REMOVE_HAZARD_MANAGE_LOGS_ATTACHMENT_EDIT:\r\n 'REMOVE_HAZARD_MANAGE_LOGS_ATTACHMENT_EDIT',\r\n\r\n UPLOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS:\r\n 'UPLOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS',\r\n DELETE_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS:\r\n 'DELETE_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS',\r\n\r\n START_LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS:\r\n 'START_LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS',\r\n LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS_SUCCESS:\r\n 'LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS_SUCCESS',\r\n LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS_FAILURE:\r\n 'LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS_FAILURE',\r\n LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS_FINISHED:\r\n 'LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS_FINISHED',\r\n\r\n //Hazard Control Attachment\r\n REMOVE_HAZARD_CONTROL_ATTACHMENT: 'REMOVE_HAZARD_CONTROL_ATTACHMENT',\r\n LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL: 'LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL',\r\n REMOVE_HAZARD_CONTROL_ATTACHMENT_EDIT:\r\n 'REMOVE_HAZARD_CONTROL_ATTACHMENT_EDIT',\r\n\r\n UPLOAD_ATTACHMENTS_FOR_HAZARD_CONTROL:\r\n 'UPLOAD_ATTACHMENTS_FOR_HAZARD_CONTROL',\r\n DELETE_ATTACHMENTS_FOR_HAZARD_CONTROL:\r\n 'DELETE_ATTACHMENTS_FOR_HAZARD_CONTROL',\r\n\r\n START_LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL:\r\n 'START_LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL',\r\n LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL_SUCCESS:\r\n 'LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL_SUCCESS',\r\n LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL_FAILURE:\r\n 'LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL_FAILURE',\r\n LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL_FINISHED:\r\n 'LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL_FINISHED',\r\n\r\n\r\n\r\n FOLDER_ADDED: 'FOLDER_ADDED',\r\n\r\n USER_ATTACHMENT_ADD : 'USER_ATTACHMENT_ADD',\r\n START_USER_ATTACHMENT_ADD:\r\n 'START_USER_ATTACHMENT_ADD',\r\n USER_ATTACHMENT_ADD_SUCCESS:\r\n 'USER_ATTACHMENT_ADD_SUCCESS',\r\n USER_ATTACHMENT_ADD_FAILURE:\r\n 'USER_ATTACHMENT_ADD_FAILURE',\r\n USER_ATTACHMENT_ADD_FINISHED:\r\n 'USER_ATTACHMENT_ADD_FINISHED',\r\n\r\n\r\n USER_ATTACHMENT_REMOVE : 'USER_ATTACHMENT_REMOVE',\r\n START_USER_ATTACHMENT_REMOVE:\r\n 'START_USER_ATTACHMENT_REMOVE',\r\n USER_ATTACHMENT_REMOVE_SUCCESS:\r\n 'USER_ATTACHMENT_REMOVE_SUCCESS',\r\n USER_ATTACHMENT_REMOVE_FAILURE:\r\n 'USER_ATTACHMENT_REMOVE_FAILURE',\r\n USER_ATTACHMENT_REMOVE_FINISHED:\r\n 'USER_ATTACHMENT_REMOVE_FINISHED',\r\n\r\n \r\n};\r\n","export const NAME = 'NAME';\r\nexport const EMAIL = 'EMAIL';\r\nexport const PHONE = 'PHONE';\r\nexport const CONTACT_PERSON = 'CONTACT_PERSON';\r\nexport const FAX = 'FAX';\r\nexport const COMPANY = 'COMPANY';\r\nexport const ADDRESS = 'ADDRESS';\r\nexport const NOTES = 'NOTES';\r\n\r\n//Personnels\r\nexport const FIRST_NAME = 'FIRST_NAME';\r\nexport const LAST_NAME = 'LAST_NAME';\r\nexport const WORK_PHONE = 'WORK_PHONE';\r\nexport const BRANCH = 'BRANCH';\r\nexport const START_DATE_UTC = 'START_DATE_UTC';\r\nexport const HOME_PHONE = 'HOME_PHONE';\r\nexport const ASSIGNEE = 'ASSIGNEE';\r\nexport const REQUESTOR = 'REQUESTOR';\r\nexport const REG_DATE_UTC = 'REG_DATE_UTC';\r\nexport const SITE = 'SITE';\r\n\r\n//Accident\r\nexport const INJURY_DATE = 'INJURY_DATE';\r\nexport const INJURY_TIME = 'INJURY_TIME';\r\nexport const DEPARTMENT = 'DEPARTMENT';\r\nexport const INJURY_LOCATION = 'INJURY_LOCATION';\r\nexport const INJURY_TYPE = 'INJURY_TYPE';\r\nexport const PERSONNEL = 'PERSONNEL';\r\nexport const INJURY_CAUSE = 'INJURY_CAUSE';\r\nexport const TREATMENT = 'TREATMENT';\r\nexport const WHAT_HAPPENEND = 'WHAT_HAPPENEND';\r\nexport const CAUSE = 'CAUSE';\r\nexport const ASSESSMENT = 'ASSESSMENT';\r\nexport const ANALYSIS = 'ANALYSIS';\r\nexport const ACTION = 'ACTION';\r\nexport const ACCIDENT_ATTACHMENT = 'ACCIDENT_ATTACHMENT';\r\n\r\n//Events\r\nexport const DESCRIPTION = 'DESCRIPTION';\r\nexport const EVENT_NOTES = 'EVENT_NOTES';\r\nexport const FREQUENCY = 'FREQUENCY';\r\nexport const EVENT_TYPE = 'EVENT_TYPE';\r\nexport const EVENT_COORDINATOR = 'EVENT_COORDINATOR';\r\nexport const LAST_HELD_DATE = 'LAST_HELD_DATE';\r\nexport const NEXT_EVENT_DATE = 'NEXT_EVENT_DATE';\r\nexport const EVENT_DOCUMENT_NAME = 'EVENT_DOCUMENT_NAME';\r\n\r\n//Records\r\nexport const RECORD_DATE = 'RECORD_DATE';\r\nexport const RECORD_NOTES = 'RECORD_NOTES';\r\nexport const EVENT_RECORD_ATTACHMENT = 'EVENT_RECORD_ATTACHMENT';\r\n\r\n//Hazards\r\nexport const INITIAL_RISK_LIKELIHOOD = 'INITIAL_RISK_LIKELIHOOD';\r\nexport const INITIAL_RISK_CONSEQUENCE = 'INITIAL_RISK_CONSEQUENCE';\r\nexport const INITIAL_SCORE = 'INITIAL_SCORE';\r\nexport const FINAL_RISK_LIKELIHOOD = 'FINAL_RISK_LIKELIHOOD';\r\nexport const FINAL_RISK_CONSEQUENCE = 'FINAL_RISK_CONSEQUENCE';\r\nexport const FINAL_SCORE = 'FINAL_SCORE';\r\nexport const NEXT_REVIEW_DATE = 'NEXT_REVIEW_DATE';\r\nexport const HAZARD_STATUS = 'HAZARD_STATUS';\r\nexport const HAZARD_DOCUMENT = 'HAZARD_DOCUMENT';\r\nexport const HAZARD_DEPARTMENT = 'HAZARD_DEPARTMENT';\r\n\r\n//Controls\r\nexport const CONTROL_COMMENTS = 'CONTROL_COMMENTS';\r\nexport const CONTROL_HIERARCHY = 'CONTROL_HIERARCHY';\r\n\r\n//Course record\r\nexport const PERSONNEL_ID = 'PERSONNEL_ID';\r\nexport const COURSE_RECORD_ATTACHMENT = 'COURSE_RECORD_ATTACHMENT';\r\n\r\n//Courses\r\nexport const UNIT_DESCRIPTION = 'UNIT_DESCRIPTION';\r\nexport const COURSE_CODE = 'COURSE_CODE';\r\nexport const TRAINING_PROVIDER = 'TRAINING_PROVIDER';\r\nexport const CONTACT_PERSON_FOR_COURSE = 'CONTACT_PERSON_FOR_COURSE';\r\nexport const PHONE_FOR_COURSE = 'PHONE_FOR_COURSE';\r\nexport const EMAIL_FOR_COURSE = 'EMAIL_FOR_COURSE';\r\nexport const COURSE_COST = 'COURSE_COST';\r\nexport const DURATION = 'DURATION';\r\nexport const FREQUENCY_FOR_COURSE = 'FREQUENCY_FOR_COURSE';\r\nexport const COURSE_CATEGORY = 'COURSE_CATEGORY';\r\nexport const COURSE = 'COURSE';\r\nexport const COURSE_DOCUMENT = 'COURSE_DOCUMENT';\r\nexport const COURSE_NOTES = 'COURSE_NOTES';\r\n\r\n//User\r\nexport const USER_NAME = 'USER_NAME';\r\nexport const USER_EMAIL = 'USER_EMAIL';\r\nexport const USER_PASSWORD = 'USER_PASSWORD';\r\nexport const USER_ROLE = 'USER_ROLE';\r\nexport const USER_BRANCH = 'USER_BRANCH';\r\nexport const USER_COMPANY = 'USER_COMPANY';\r\n\r\n//HazardReview\r\nexport const REVIEW_DESCRIPION = 'REVIEW_DESCRIPION';\r\nexport const REVIEW_REVIEW_DATE = 'REVIEW_REVIEW_DATE';\r\n\r\n//HazardManagementLog\r\nexport const LOG_DESCRIPION = 'LOG_DESCRIPION';\r\nexport const LOG_DATE = 'LOG_DATE';\r\n\r\n//Attachment\r\nexport const HAZARD_ATTACHMENT = 'HAZARD_ATTACHMENT';\r\nexport const HAZARD_REVIEW_ATTACHMENT = 'HAZARD_REVIEW_ATTACHMENT';\r\nexport const HAZARD_MANAGEMENT_LOGS_ATTACHMENT =\r\n 'HAZARD_MANAGEMENT_LOGS_ATTACHMENT';\r\nexport const HAZARD_CONTROL_ATTACHMENT = 'HAZARD_CONTROL_ATTACHMENT';\r\nexport const HAZARD_CONTROL_DOCUMENT = 'HAZARD_CONTROL_DOCUMENT';\r\n\r\nexport default {\r\n NAME,\r\n EMAIL,\r\n PHONE,\r\n CONTACT_PERSON,\r\n FAX,\r\n COMPANY,\r\n ADDRESS,\r\n NOTES,\r\n\r\n //Attachements\r\n HAZARD_ATTACHMENT,\r\n HAZARD_REVIEW_ATTACHMENT,\r\n HAZARD_MANAGEMENT_LOGS_ATTACHMENT,\r\n HAZARD_CONTROL_ATTACHMENT,\r\n\r\n\r\n //Personnels\r\n FIRST_NAME,\r\n LAST_NAME,\r\n WORK_PHONE,\r\n BRANCH,\r\n START_DATE_UTC,\r\n HOME_PHONE,\r\n ASSIGNEE,\r\n REQUESTOR,\r\n REG_DATE_UTC,\r\n SITE,\r\n\r\n //Accident\r\n INJURY_DATE,\r\n INJURY_TIME,\r\n DEPARTMENT,\r\n INJURY_LOCATION,\r\n INJURY_TYPE,\r\n PERSONNEL,\r\n INJURY_CAUSE,\r\n TREATMENT,\r\n WHAT_HAPPENEND,\r\n CAUSE,\r\n ASSESSMENT,\r\n ANALYSIS,\r\n ACTION,\r\n ACCIDENT_ATTACHMENT,\r\n\r\n //Events\r\n DESCRIPTION,\r\n EVENT_NOTES,\r\n FREQUENCY,\r\n EVENT_TYPE,\r\n EVENT_COORDINATOR,\r\n LAST_HELD_DATE,\r\n NEXT_EVENT_DATE,\r\n EVENT_DOCUMENT_NAME,\r\n\r\n //Records\r\n RECORD_DATE,\r\n RECORD_NOTES,\r\n EVENT_RECORD_ATTACHMENT,\r\n\r\n //Hazards\r\n INITIAL_RISK_LIKELIHOOD,\r\n INITIAL_RISK_CONSEQUENCE,\r\n FINAL_RISK_LIKELIHOOD,\r\n FINAL_RISK_CONSEQUENCE,\r\n NEXT_REVIEW_DATE,\r\n HAZARD_STATUS,\r\n HAZARD_DOCUMENT,\r\n HAZARD_DEPARTMENT,\r\n\r\n //Controls\r\n CONTROL_COMMENTS,\r\n CONTROL_HIERARCHY,\r\n HAZARD_CONTROL_DOCUMENT,\r\n\r\n //Review\r\n REVIEW_DESCRIPION,\r\n REVIEW_REVIEW_DATE,\r\n\r\n //ManagemenLog\r\n LOG_DESCRIPION,\r\n LOG_DATE,\r\n\r\n //Course record\r\n PERSONNEL_ID,\r\n COURSE_RECORD_ATTACHMENT,\r\n\r\n //Courses\r\n UNIT_DESCRIPTION,\r\n COURSE_CODE,\r\n TRAINING_PROVIDER,\r\n CONTACT_PERSON_FOR_COURSE,\r\n PHONE_FOR_COURSE,\r\n EMAIL_FOR_COURSE,\r\n COURSE_COST,\r\n DURATION,\r\n FREQUENCY_FOR_COURSE,\r\n COURSE_CATEGORY,\r\n COURSE,\r\n COURSE_NOTES,\r\n COURSE_DOCUMENT,\r\n\r\n //User\r\n USER_NAME,\r\n USER_EMAIL,\r\n USER_PASSWORD,\r\n USER_ROLE,\r\n USER_BRANCH,\r\n USER_COMPANY\r\n};\r\n","export const ACTIVE = 1;\r\nexport const DEACTIVE = 2;\r\nexport const DELETE = 3;\r\n\r\nexport default {\r\n ACTIVE,\r\n DEACTIVE,\r\n DELETE\r\n};\r\n","export const ACTIVE = 1;\r\nexport const DEACTIVE = 2;\r\nexport const DELETE = 3;\r\n\r\nexport default {\r\n ACTIVE,\r\n DEACTIVE,\r\n DELETE\r\n};\r\n","export const ACTIVE = 1;\r\nexport const DEACTIVE = 2;\r\nexport const DELETE = 3;\r\n\r\nexport default {\r\n ACTIVE,\r\n DEACTIVE,\r\n DELETE\r\n};\r\n","export const CREATE = 'CREATE';\r\nexport const UPDATE = 'UPDATE';\r\n\r\nexport default { CREATE, UPDATE };\r\n","export const ACTIVE = 1;\r\nexport const DEACTIVE = 2;\r\nexport const DELETE = 3;\r\n\r\nexport default {\r\n ACTIVE,\r\n DEACTIVE,\r\n DELETE\r\n};\r\n","export const DASHBOARD = 'Dashboard';\r\nexport const COURSES = 'Training';\r\nexport const PERSONNEL = 'Personnel';\r\nexport const EVENTS = 'Events';\r\nexport const INDUCTIONS = 'Inductions';\r\nexport const ACCIDENTS = 'Accidents';\r\nexport const MEETINGS = 'Meetings';\r\nexport const USERS = 'Users';\r\nexport const HAZARDS = 'Hazards';\r\nexport const DOCUMENT_LIBRARY = 'HasTrak Global Document Library';\r\nexport const DOCUMENT_LIBRARY_FOR_BRANCH = 'Client Document Library';\r\n\r\nexport default {\r\n DASHBOARD,\r\n COURSES,\r\n PERSONNEL,\r\n EVENTS,\r\n INDUCTIONS,\r\n ACCIDENTS,\r\n MEETINGS,\r\n USERS,\r\n HAZARDS,\r\n DOCUMENT_LIBRARY,\r\n DOCUMENT_LIBRARY_FOR_BRANCH\r\n};\r\n","export const SUPER_ADMIN = 1;\r\nexport const ADMIN = 2;\r\nexport const BRANCH = 3;\r\nexport const ADMIN_COMPANY = 4;\r\n\r\nexport default { SUPER_ADMIN, ADMIN, BRANCH, ADMIN_COMPANY };\r\n","const userRolesEnum = [\r\n { id: 1, value: 'Super admin' },\r\n { id: 2, value: 'Admin' },\r\n { id: 3, value: 'Branch' },\r\n { id: 4, value: 'Company admin' }\r\n];\r\n\r\nexport default { userRolesEnum };\r\n","const injuryTypes = [\r\n { id: 1, value: 'Bruising' },\r\n { id: 2, value: 'Burns' },\r\n { id: 3, value: 'Cuts Laceration' },\r\n { id: 4, value: 'Foreign body' },\r\n { id: 5, value: 'Fractures' },\r\n { id: 6, value: 'Infections' },\r\n { id: 7, value: 'Other' },\r\n { id: 8, value: 'Rash' },\r\n { id: 9, value: 'Sprains Strains' }\r\n];\r\n\r\nconst injuryCauses = [\r\n { id: 1, value: 'Biological factors' },\r\n { id: 2, value: 'Body stress' },\r\n { id: 3, value: 'Hit by an object' },\r\n { id: 4, value: 'Hit with body' },\r\n { id: 5, value: 'Slip trip' },\r\n { id: 6, value: 'Chemical' },\r\n { id: 7, value: 'Heat' },\r\n { id: 8, value: 'Processing tool' },\r\n { id: 9, value: 'Sound pressure' }\r\n];\r\n\r\nconst injuryLocations = [\r\n { id: 1, value: 'Arms' },\r\n { id: 2, value: 'Back' },\r\n { id: 3, value: 'Hands/fingers' },\r\n { id: 4, value: 'Head' },\r\n { id: 5, value: 'Legs/feet' },\r\n { id: 6, value: 'Lower body' },\r\n { id: 7, value: 'Upper body' },\r\n { id: 8, value: 'Other' }\r\n];\r\n\r\nexport default { injuryTypes, injuryCauses, injuryLocations };\r\n","const eventTypes = [\r\n { id: 1, value: 'Account Audit' },\r\n { id: 2, value: 'Environmental meeting' },\r\n { id: 3, value: 'Evacuation drill' },\r\n { id: 4, value: 'HS Management task' },\r\n { id: 5, value: 'Hazard controls' },\r\n { id: 6, value: 'Noise assessment' },\r\n { id: 7, value: 'Safety inspection' },\r\n { id: 8, value: 'Safety meeting' },\r\n { id: 9, value: 'System audit' },\r\n { id: 10, value: 'System audit follow up' },\r\n { id: 11, value: 'Wardens debrief' },\r\n { id: 12, value: 'Wardens self test' }\r\n];\r\n\r\nexport default { eventTypes };\r\n","const courseCategories = [\r\n { id: 1, value: 'In house training' },\r\n { id: 2, value: 'Safety' },\r\n { id: 3, value: 'Skills' }\r\n];\r\n\r\nexport default { courseCategories };\r\n","export const FROM_COURSES_FOR_PERSONNEL_DIALOG =\r\n 'FROM_COURSES_FOR_PERSONNEL_DIALOG';\r\nexport const FROM_ADD_EDIT_COURSE_RECORD_PANEL =\r\n 'FROM_ADD_EDIT_COURSE_RECORD_PANEL';\r\n\r\nexport default {\r\n FROM_COURSES_FOR_PERSONNEL_DIALOG,\r\n FROM_ADD_EDIT_COURSE_RECORD_PANEL\r\n};\r\n","const hazardStatus = [\r\n { id: 1, value: 'Raised' },\r\n { id: 2, value: 'Managed' },\r\n { id: 3, value: 'Removed' },\r\n { id: 4, value: 'Deleted' }\r\n];\r\n\r\nexport default { hazardStatus };\r\n","const hazardHierarchy = [\r\n { id: 1, value: 'Eliminate' },\r\n { id: 2, value: 'Substitute' },\r\n { id: 3, value: 'Isolate' },\r\n { id: 4, value: 'Engineering' },\r\n { id: 5, value: 'Admin' },\r\n { id: 6, value: 'PPE' }\r\n];\r\n\r\nexport default { hazardHierarchy };\r\n","export const HAZARD = 1;\r\nexport const COURSE_RECORD = 2;\r\nexport const EVENT_RECORD = 3;\r\nexport const ACCIDENT = 4;\r\nexport const HAZARD_REVIEW = 5;\r\nexport const HAZARD_LOGS = 6;\r\nexport const HAZARD_CONTROL = 7;\r\nexport const USER_LIBRARY = 8;\r\n\r\nexport default {\r\n HAZARD,\r\n COURSE_RECORD,\r\n EVENT_RECORD,\r\n ACCIDENT,\r\n HAZARD_REVIEW,\r\n HAZARD_LOGS,\r\n HAZARD_CONTROL,\r\n USER_LIBRARY\r\n};\r\n","export const DOCUMENTS = 1;\r\nexport const DOCUMENT_LIBRARY = 2;\r\nexport const DOCUMENT_LIBRARY_FOR_BRANCH = 3; \r\n\r\nexport default {\r\n DOCUMENTS,\r\n DOCUMENT_LIBRARY,\r\n DOCUMENT_LIBRARY_FOR_BRANCH\r\n};\r\n"," const hazardRisks = [\r\n {\r\n index: 0,\r\n columns: [\r\n { id: 1, value: 'Almost Certain', hasIndexNumber: true, indexNumber: 5, isCoulumnHeading: true, heading: \"Almost Certain\", subHeading: \"(Expected in most circumstances)\", color: \"#FFFFFF\", isClicable: false, likelihood: 0, consequnces: 0 },\r\n { id: 2, value: 'M', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"M\", subHeading: \"(5 * 1 = 5)\", color: \"#FFC000\", isClicable: true, likelihood: 5, consequnces: 1},\r\n { id: 3, value: 'M', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"M\", subHeading: \"(5 * 2 = 10)\", color: \"#FFC000\", isClicable: true, likelihood: 5, consequnces: 2 },\r\n { id: 4, value: 'H', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"H\", subHeading: \"(5 * 3 = 15)\", color: \"#B90D0D\", isClicable: true, likelihood: 5, consequnces: 3},\r\n { id: 5, value: 'H', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"H\", subHeading: \"(5 * 4 = 20)\", color: \"#B90D0D\", isClicable: true, likelihood: 5, consequnces: 4 },\r\n { id: 6, value: 'H', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"H\", subHeading: \"(5 * 5 = 25)\", color: \"#B90D0D\", isClicable: true, likelihood: 5, consequnces: 5 },\r\n ]\r\n },\r\n {\r\n index: 1,\r\n columns: [\r\n { id: 7, value: 'Likely', hasIndexNumber: true, indexNumber: 4, isCoulumnHeading: true, heading: \"Likely\", subHeading: \"(Expected that it could occur regularly)\", color: \"#FFFFFF\", isClicable: false, likelihood: 0, consequnces: 0 },\r\n { id: 8, value: 'M', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"M\", subHeading: \"(4 * 1 = 4)\", color: \"#FFC000\", isClicable: true, likelihood: 4, consequnces: 1},\r\n { id: 9, value: 'M', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"M\", subHeading: \"(4 * 2 = 8)\", color: \"#FFC000\", isClicable: true, likelihood: 4, consequnces: 2 },\r\n { id: 10, value: 'M', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"M\", subHeading: \"(4 * 3 = 12)\", color: \"#FFC000\", isClicable: true, likelihood: 4, consequnces: 3},\r\n { id: 11, value: 'H', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"H\", subHeading: \"(4 * 4 = 16)\", color: \"#B90D0D\", isClicable: true, likelihood: 4, consequnces: 4 },\r\n { id: 12, value: 'H', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"H\", subHeading: \"(4 * 5 = 20)\", color: \"#B90D0D\", isClicable: true, likelihood: 4, consequnces: 5 },\r\n ]\r\n },\r\n {\r\n index: 2,\r\n columns: [\r\n { id: 13, value: 'Possible', hasIndexNumber: true, indexNumber: 3, isCoulumnHeading: true, heading: \"Possible\", subHeading: \"(Might occur at some time)\", color: \"#FFFFFF\", isClicable: false, likelihood: 0, consequnces: 0 },\r\n { id: 14, value: 'L', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"L\", subHeading: \"(3 * 1 = 3)\", color: \"#00B050\", isClicable: true, likelihood: 3, consequnces: 1},\r\n { id: 15, value: 'M', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"M\", subHeading: \"(3 * 2 = 6)\", color: \"#FFC000\", isClicable: true, likelihood: 3, consequnces: 2 },\r\n { id: 16, value: 'M', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"M\", subHeading: \"(3 * 3 = 9)\", color: \"#FFC000\", isClicable: true, likelihood: 3, consequnces: 3},\r\n { id: 17, value: 'M', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"M\", subHeading: \"(3 * 4 = 12)\", color: \"#FFC000\", isClicable: true, likelihood: 3, consequnces: 4 },\r\n { id: 18, value: 'H', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"H\", subHeading: \"(3 * 5 = 15)\", color: \"#B90D0D\", isClicable: true, likelihood: 3, consequnces: 5 },\r\n ]\r\n },\r\n {\r\n index: 3,\r\n columns: [\r\n { id: 19, value: 'Unlikely', hasIndexNumber: true, indexNumber: 2, isCoulumnHeading: true, heading: \"Unlikely\", subHeading: \"(Could occur in unusual circumstances)\", color: \"#FFFFFF\", isClicable: false, likelihood: 0, consequnces: 0 },\r\n { id: 20, value: 'L', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"L\", subHeading: \"(2 * 1 = 2)\", color: \"#00B050\", isClicable: true, likelihood: 2, consequnces: 1},\r\n { id: 21, value: 'L', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"L\", subHeading: \"(2 * 2 = 4)\", color: \"#00B050\", isClicable: true, likelihood: 2, consequnces: 2 },\r\n { id: 22, value: 'M', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"M\", subHeading: \"(2 * 3 = 6)\", color: \"#FFC000\", isClicable: true, likelihood: 2, consequnces: 3},\r\n { id: 23, value: 'M', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"M\", subHeading: \"(2 * 4 = 8)\", color: \"#FFC000\", isClicable: true, likelihood: 2, consequnces: 4 },\r\n { id: 24, value: 'M', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"M\", subHeading: \"(2 * 5 = 10)\", color: \"#FFC000\", isClicable: true, likelihood: 2, consequnces: 5 },\r\n ]\r\n },\r\n {\r\n index: 4,\r\n columns: [\r\n { id: 31, value: 'Rare', hasIndexNumber: true, indexNumber: 1, isCoulumnHeading: true, heading: \"Rare\", subHeading: \"(May occur in exceptional circumstances)\", color: \"#FFFFFF\", isClicable: false, likelihood: 0, consequnces: 0 },\r\n { id: 32, value: 'L', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"L\", subHeading: \"(1 * 1 = 1)\", color: \"#00B050\", isClicable: true, likelihood: 1, consequnces: 1},\r\n { id: 33, value: 'L', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"L\", subHeading: \"(1 * 2 = 2)\", color: \"#00B050\", isClicable: true, likelihood: 1, consequnces: 2 },\r\n { id: 34, value: 'L', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"L\", subHeading: \"(1 * 3 = 3)\", color: \"#00B050\", isClicable: true, likelihood: 1, consequnces: 3},\r\n { id: 35, value: 'L', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"L\", subHeading: \"(1 * 4 = 4)\", color: \"#00B050\", isClicable: true, likelihood: 1, consequnces: 4 },\r\n { id: 36, value: 'M', hasIndexNumber: false, indexNumber: -1, isCoulumnHeading: false, heading: \"M\", subHeading: \"(1 * 5 = 5)\", color: \"#FFC000\", isClicable: true, likelihood: 1, consequnces: 5 },\r\n ]\r\n }\r\n\r\n ];\r\n\r\n export default hazardRisks;\r\n ","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport './style.css';\r\n\r\nconst Page = ({ children, className }) => (\r\n
{children}
\r\n);\r\n\r\nPage.propTypes = {\r\n children: PropTypes.node\r\n};\r\n\r\nexport default Page;\r\n","import React from 'react';\r\nimport { Dialog as ParentDialog } from '@material-ui/core';\r\n\r\n// import DialogTransition from '../DialogTransition';\r\n\r\nexport default function Dialog(props) {\r\n //\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport {\r\n DialogTitle,\r\n DialogContentText,\r\n DialogContent,\r\n Button,\r\n DialogActions,\r\n LinearProgress,\r\n Typography\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport Dialog from '../Dialog';\r\n\r\nconst useStyles = makeStyles((theme) => {\r\n return {\r\n errorMessage: {\r\n color: 'red',\r\n position: 'absolute',\r\n left: 20\r\n },\r\n actionButton: {\r\n width: 180,\r\n float: 'right',\r\n margin: theme.spacing(2)\r\n }\r\n };\r\n});\r\n\r\nconst DualActionDialog = (props) => {\r\n const classes = useStyles();\r\n\r\n const {\r\n open,\r\n handleSubmit,\r\n handleClose,\r\n title,\r\n description,\r\n actionButtonText,\r\n cancelButtonText,\r\n showProgressBar,\r\n errorMessage,\r\n isDanger\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n {showProgressBar && }\r\n\r\n {title}\r\n \r\n \r\n {description}\r\n \r\n \r\n \r\n \r\n {errorMessage}\r\n \r\n \r\n {cancelButtonText}\r\n \r\n \r\n {actionButtonText}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nDualActionDialog.propTypes = {\r\n handleClose: PropTypes.func.isRequired,\r\n handleSubmit: PropTypes.func.isRequired,\r\n open: PropTypes.bool.isRequired,\r\n title: PropTypes.string.isRequired,\r\n description: PropTypes.string.isRequired,\r\n actionButtonText: PropTypes.string.isRequired,\r\n cancelButtonText: PropTypes.string.isRequired,\r\n showProgressBar: PropTypes.bool.isRequired,\r\n errorMessage: PropTypes.string.isRequired\r\n};\r\n\r\nexport default DualActionDialog;\r\n","import React from 'react';\r\n\r\nimport DualActionDialog from './../DualActionDialog';\r\n\r\nconst ChangePasswordDialog = (props) => {\r\n const {\r\n openDialog = false,\r\n onOpenChangePasswordDialog,\r\n onChangePassword,\r\n user,\r\n isSaving\r\n } = props;\r\n const handleClose = () => {\r\n onOpenChangePasswordDialog(false);\r\n };\r\n\r\n const handleSubmit = () => {\r\n onChangePassword(user.email);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ChangePasswordDialog;\r\n","import { types } from '../constants';\r\n\r\nexport const openCreateCompanyDialogDispatch = (open) => ({\r\n type: types.OPEN_CREATE_COMPANY_DIALOG,\r\n open\r\n});\r\n\r\nexport const openEditCompanyDialogDispatch = (open) => ({\r\n type: types.OPEN_EDIT_COMPANY_DIALOG,\r\n open\r\n});\r\n\r\nexport const handleCompanyInputChangeDispatch = (value, inputFieldName) => ({\r\n type: types.INPUT_CHANGE_CREATE_COMPANY_FORM,\r\n value,\r\n inputFieldName\r\n});\r\n\r\nexport const submitCompanyDispatch = (company, mode) => ({\r\n type: types.SUBMIT_COMPANY,\r\n company,\r\n mode\r\n});\r\n\r\nexport const searchTermChangeForAllCompanies = (searchTerm) => ({\r\n type: types.CHANGE_SEARCH_TERM_ALL_COMPANIES,\r\n searchTerm\r\n});\r\n\r\nexport const fetchAllCompaniesDispatch = () => ({\r\n type: types.FETCH_ALL_COMPANIES\r\n});\r\n\r\nexport const compayEditClickDispatch = (company) => ({\r\n type: types.EDIT_COMPANY,\r\n company\r\n});\r\n\r\nexport const showDeleteOrDeactiveCompanyDialogStateChanged = (\r\n open,\r\n companyId,\r\n status\r\n) => ({\r\n type: types.DEACTIVATE_OR_DELETE_COMPANY_DIALOG,\r\n open,\r\n companyId,\r\n status\r\n});\r\n\r\nexport const DeactiveOrDeleteCompanyDispatch = (company) => ({\r\n type: types.DEACTIVATE_OR_DELETE_COMPANY,\r\n company\r\n});\r\n\r\nexport const fetchUserDetailsDispatch = (userEmail) => ({\r\n type: types.FETCH_USER_DETAILS,\r\n userEmail\r\n});\r\n","import { types } from '../constants';\r\n\r\nexport const openCreateBranchDialogDispatch = (open) => ({\r\n type: types.OPEN_CREATE_BRANCH_DIALOG,\r\n open\r\n});\r\n\r\nexport const openEditBranchDialogDispatch = (open) => ({\r\n type: types.OPEN_EDIT_BRANCH_DIALOG,\r\n open\r\n});\r\n\r\nexport const searchTermChangeForBranch = (searchTerm) => ({\r\n type: types.CHANGE_SEARCH_TERM_ALL_BRANCH,\r\n searchTerm\r\n});\r\n\r\nexport const getBranches = () => ({\r\n type: types.GET_ALL_BRANCH\r\n});\r\n\r\nexport const handleBranchInputChangeDispatch = (value, inputFieldName) => ({\r\n type: types.INPUT_CHANGE_CREATE_BRANCH_FORM,\r\n value,\r\n inputFieldName\r\n});\r\n\r\nexport const submitBranchDispatch = (branch, mode) => ({\r\n type: types.SUBMIT_BRANCH,\r\n branch,\r\n mode\r\n});\r\n\r\nexport const BranchEditClickDispatch = (branch) => ({\r\n type: types.EDIT_BRANCH,\r\n branch\r\n});\r\n\r\nexport const showDeleteOrDeactiveBranchDialogStateChanged = (\r\n open,\r\n branchId,\r\n status\r\n) => ({\r\n type: types.DEACTIVATE_OR_DELETE_BRANCH_DIALOG,\r\n open,\r\n branchId,\r\n status\r\n});\r\n\r\nexport const DeactiveOrDeleteBranchDispatch = (branch) => ({\r\n type: types.DEACTIVATE_OR_DELETE_BRANCH,\r\n branch\r\n});\r\n\r\nexport const setCurrentBranchesRecordDispatch = (recordType) => ({\r\n type: types.SET_CURRENT_BRANCHES_RECORD,\r\n recordType\r\n});\r\n\r\nexport const fetchBranchDetailsForUserDispatch = (userId) => ({\r\n type: types.FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER,\r\n userId\r\n});\r\n\r\nexport const fetchBranchDetailsByBranchIdDispatch = (branchId) => ({\r\n type: types.FETCH_BRANCH_DETAILS_BY_BRANCH_ID,\r\n branchId\r\n});\r\n","import { types } from '../constants';\r\n\r\nexport const openChangePasswordDialogDispatch = (open) => ({\r\n type: types.OPEN_CHANGE_PASSWORD_DIALOG,\r\n open\r\n});\r\n\r\nexport const openDeleteUserDialogDispatch = (open) => ({\r\n type: types.OPEN_DELETE_USER_DIALOG,\r\n open\r\n});\r\n\r\nexport const changePasswordDispatch = (userEmail) => ({\r\n type: types.SEND_CHANGE_PASSWORD_REQUEST,\r\n userEmail\r\n});\r\n\r\nexport const setLoggedInUserDispatch = (user) => ({\r\n type: types.SET_LOGGED_IN_USER,\r\n user\r\n});\r\n\r\nexport const openCreateUserDialogDispatch = (open) => ({\r\n type: types.OPEN_CREATE_USER_DIALOG,\r\n open\r\n});\r\n\r\nexport const openEditUserDialogDispatch = (open) => ({\r\n type: types.OPEN_EDIT_USER_DIALOG,\r\n open\r\n});\r\n\r\nexport const handleUserInputChangeDispatch = (value, inputFieldName) => ({\r\n type: types.INPUT_CHANGE_CREATE_USER_FORM,\r\n value,\r\n inputFieldName\r\n});\r\n\r\nexport const submitUserDispatch = (user, mode) => ({\r\n type: types.SUBMIT_USER,\r\n user,\r\n mode\r\n});\r\n\r\nexport const searchTermChangeForAllUsers = (searchTerm) => ({\r\n type: types.CHANGE_SEARCH_TERM_ALL_USERS,\r\n searchTerm\r\n});\r\n\r\nexport const fetchAllUsersDispatch = () => ({\r\n type: types.FETCH_ALL_USERS\r\n});\r\n\r\nexport const userEditClickDispatch = (user) => ({\r\n type: types.EDIT_USER,\r\n user\r\n});\r\n\r\nexport const checkBranchAccessForUserDispatch = (payload) => ({\r\n type: types.CHECK_BRANCH_ACCESS_FOR_USER,\r\n payload\r\n});\r\n","import { types } from '../constants';\r\n\r\nexport const fetchAllPersonnelsDispatch = (branchId) => ({\r\n type: types.FETCH_ALL_PERSONNELS,\r\n branchId\r\n});\r\n\r\nexport const openCreatePersonnelDialogDispatch = (open, isShort) => ({\r\n type: types.OPEN_CREATE_PERSONNEL_DIALOG,\r\n open,\r\n isShort\r\n});\r\n\r\nexport const searchTermChangeForAllPersonnels = (searchTerm) => ({\r\n type: types.CHANGE_SEARCH_TERM_ALL_PERSONNELS,\r\n searchTerm\r\n});\r\n\r\nexport const handlePersonnelInputChangeDispatch = (value, inputFieldName) => ({\r\n type: types.INPUT_CHANGE_CREATE_PERSONNEL_FORM,\r\n value,\r\n inputFieldName\r\n});\r\n\r\nexport const submitPersonnelDispatch = (personnel, mode) => ({\r\n type: types.SUBMIT_PERSONNEL,\r\n personnel,\r\n mode\r\n});\r\n\r\nexport const changeValidationStateDispatch = (validationState) => ({\r\n type: types.CHANGE_NEW_PERSONNEL_VALIDATION_STATE,\r\n validationState\r\n});\r\n\r\nexport const openEditPersonnelDialogDispatch = (open) => ({\r\n type: types.OPEN_EDIT_PERSONNEL_DIALOG,\r\n open\r\n});\r\n\r\nexport const personnelEditClickDispatch = (personnel) => ({\r\n type: types.EDIT_PERSONNEL,\r\n personnel\r\n});\r\n\r\nexport const openCoursesForPersonnelDialog = (open, personnel) => ({\r\n type: types.OPEN_COURSES_FOR_PERSONNEL_DIALOG,\r\n open,\r\n personnel\r\n});\r\n\r\nexport const clearAllCoursesForPersonnel = () => ({\r\n type: types.CLEAR_ALL_COURSES_FOR_PERSONNEL\r\n});\r\n\r\nexport const getCoursesForPersonnelDispatch = (personnelId) => ({\r\n type: types.FETCH_COURSES_FOR_PERSONNEL,\r\n personnelId\r\n});\r\n\r\nexport const openDeletePersonnelDialogDispatch = (open) => ({\r\n type: types.OPEN_DELETE_PERSONNEL_DIALOG,\r\n open\r\n});\r\n\r\nexport const openAddCourseRecordDialogDispatch = (\r\n open,\r\n personnelId,\r\n source\r\n) => ({\r\n type: types.OPEN_ADD_COURSE_RECORD_DIALOG,\r\n open,\r\n personnelId,\r\n source\r\n});\r\n","import { types } from '../constants';\r\n\r\nexport const fetchAllAccidentsForBranchDispatch = (branchId) => ({\r\n type: types.FETCH_ALL_ACCIDENTS_FOR_BRANCH,\r\n branchId\r\n});\r\n\r\nexport const fetchAllAccidentsForCompanyDispatch = (companyId) => ({\r\n type: types.FETCH_ALL_ACCIDENTS_FOR_COMPANY,\r\n companyId\r\n});\r\n\r\nexport const searchTermChangeForAllAccidents = (searchTerm) => ({\r\n type: types.CHANGE_SEARCH_TERM_ALL_ACCIDENTS,\r\n searchTerm\r\n});\r\n\r\nexport const openCreateAccidentDialogDispatch = (open) => ({\r\n type: types.OPEN_CREATE_ACCIDENT_DIALOG,\r\n open\r\n});\r\n\r\nexport const openEditAccidentDialogDispatch = (open) => ({\r\n type: types.OPEN_EDIT_ACCIDENT_DIALOG,\r\n open\r\n});\r\n\r\nexport const handleAccidentInputChangeDispatch = (value, inputFieldName) => ({\r\n type: types.INPUT_CHANGE_CREATE_ACCIDENT_FORM,\r\n value,\r\n inputFieldName\r\n});\r\n\r\nexport const submitAccidentDispatch = (accident, mode) => ({\r\n type: types.SUBMIT_ACCIDENT,\r\n accident,\r\n mode\r\n});\r\n\r\nexport const accidentEditClickDispatch = (accident) => ({\r\n type: types.EDIT_ACCIDENT,\r\n accident\r\n});\r\n\r\nexport const showDeleteOrActivateAccidentDialogStatChanged = (\r\n open,\r\n accident,\r\n status\r\n) => ({\r\n type: types.DEACTIVATE_OR_DELETE_ACCIDENT_DIALOG,\r\n open,\r\n accident,\r\n status\r\n});\r\n\r\nexport const confirmDeleteDeactivateAccidentDispatc = (payload) => ({\r\n type: types.DEACTIVATE_OR_DELETE_ACCIDENT,\r\n payload\r\n});\r\n\r\nexport const removeAccidentAttachment = (attachment) => ({\r\n type: types.REMOVE_ACCIDENT_ATTACHMENT,\r\n attachment\r\n});\r\n\r\nexport const fetchExistingAttachmentsForTheAccidentDispatch = (\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n) => ({\r\n type: types.LOAD_ATTACHMENTS_FOR_ACCIDENT,\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n});\r\n","import { types } from '../constants';\r\n\r\nexport const fetchAllEventsForBranchDispatch = (branchId) => ({\r\n type: types.FETCH_ALL_EVENTS_FOR_BRANCH,\r\n branchId\r\n});\r\n\r\nexport const fetchAllEventsForCompanyDispatch = (companyId) => ({\r\n type: types.FETCH_ALL_EVENTS_FOR_COMPANY,\r\n companyId\r\n});\r\n\r\nexport const searchTermChangeForAllEvents = (searchTerm) => ({\r\n type: types.CHANGE_SEARCH_TERM_ALL_EVENTS,\r\n searchTerm\r\n});\r\n\r\nexport const openCreateEventDialogDispatch = (open) => ({\r\n type: types.OPEN_CREATE_EVENT_DIALOG,\r\n open\r\n});\r\n\r\nexport const handleEventInputChangeDispatch = (value, inputFieldName) => ({\r\n type: types.INPUT_CHANGE_CREATE_EVENT_FORM,\r\n value,\r\n inputFieldName\r\n});\r\n\r\nexport const submitEventDispatch = (event, mode) => ({\r\n type: types.SUBMIT_EVENT,\r\n event,\r\n mode\r\n});\r\n\r\nexport const openEditEventPanelDispatch = (open) => ({\r\n type: types.OPEN_EDIT_EVENT_PANEL,\r\n open\r\n});\r\n\r\nexport const openEditEventDialogDispatch = (open) => ({\r\n type: types.OPEN_EDIT_EVENT_DIALOG,\r\n open\r\n});\r\n\r\nexport const eventEditClickDispatch = (event) => ({\r\n type: types.EDIT_EVENT,\r\n event\r\n});\r\n\r\nexport const openDeleteEventDialogDispatch = (open, event) => ({\r\n type: types.OPEN_DELETE_EVENT_DIALOG,\r\n open,\r\n event\r\n});\r\n\r\nexport const submitDeleteEventRequestDispatch = (event) => ({\r\n type: types.DELETE_EVENT,\r\n event\r\n});\r\n\r\nexport const fetchRecordsForTheEventDispatch = (eventId) => ({\r\n type: types.FETCH_RECORDS_FOR_THE_EVENT,\r\n eventId\r\n});\r\n\r\nexport const handleDeleteEventRecordClickDispatch = (payload) => ({\r\n type: types.DELETE_EVENT_RECORD,\r\n payload\r\n});\r\n\r\nexport const submitRecordDispatch = (payload, mode, branchId) => ({\r\n type: types.SUBMIT_EVENT_RECORD,\r\n payload,\r\n mode,\r\n branchId\r\n});\r\n\r\nexport const enableEditEventRecordDispatch = (\r\n enableEditRecordMode,\r\n recordId\r\n) => ({\r\n type: types.ENABLE_EDIT_EVENT_RECORD,\r\n enableEditRecordMode,\r\n recordId\r\n});\r\n\r\nexport const handleEditEventRecordInputChangeDispatch = (\r\n value,\r\n inputFieldName\r\n) => ({\r\n type: types.INPUT_CHANGE_EDIT_EVENT_RECORD,\r\n value,\r\n inputFieldName\r\n});\r\n\r\nexport const openAddEventRecordDialogDispatch = (open) => ({\r\n type: types.OPEN_ADD_EVENT_RECORD_DIALOG,\r\n open\r\n});\r\n\r\nexport const removeEventRecordAttachment = (attachment) => ({\r\n type: types.REMOVE_EVENT_RECORD_ATTACHMENT,\r\n attachment\r\n});\r\n\r\nexport const fetchExistingAttachmentsForTheEventRecordDispatch = (\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n) => ({\r\n type: types.LOAD_ATTACHMENTS_FOR_EVENT_RECORD,\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n});\r\n\r\nexport const removeEventRecordAttachmentEdit = (attachment) => ({\r\n type: types.REMOVE_EVENT_RECORD_ATTACHMENT_EDIT,\r\n attachment\r\n});\r\n","import { types } from '../constants';\r\n\r\nexport const fetchAllCoursesForBranchDispatch = (branchId) => ({\r\n type: types.FETCH_ALL_COURSES_FOR_BRANCH,\r\n branchId\r\n});\r\n\r\nexport const fetchAllCourseRecordssForBranchDispatch = (branchId) => ({\r\n type: types.FETCH_ALL_COURSE_RECORDS_FOR_BRANCH,\r\n branchId\r\n});\r\n\r\nexport const fetchAllCoursesForCompanyDispatch = (companyId) => ({\r\n type: types.FETCH_ALL_COURSES_FOR_COMPANY,\r\n companyId\r\n});\r\n\r\nexport const fetchAllCourseRecordsForCompanyDispatch = (companyId) => ({\r\n type: types.FETCH_ALL_COURSE_RECORDS_FOR_COMPANY,\r\n companyId\r\n});\r\n\r\nexport const searchTermChangeForAllCoursesDispatch = (searchTerm) => ({\r\n type: types.CHANGE_SEARCH_TERM_ALL_COURSES,\r\n searchTerm\r\n});\r\n\r\nexport const openCreateCourseDialogDispatch = (open) => ({\r\n type: types.OPEN_CREATE_COURSE_DIALOG,\r\n open\r\n});\r\n\r\nexport const onHandleInputChange = (value, inputfieldName) => ({\r\n type: types.INPUT_CHANGE_CREATE_COURSE_FORM,\r\n value,\r\n inputfieldName\r\n});\r\n\r\nexport const handleEditRecordInputChangeDispatch = (value, inputfieldName) => ({\r\n type: types.INPUT_CHANGE_EDIT_COURSE_RECORD,\r\n value,\r\n inputfieldName\r\n});\r\n\r\nexport const submitCourseDispatch = (course, mode) => ({\r\n type: types.SUBMIT_COURSE,\r\n course,\r\n mode\r\n});\r\n\r\nexport const openEditCoursePanelDispatch = (open) => ({\r\n type: types.OPEN_EDIT_COURSE_PANEL,\r\n open\r\n});\r\n\r\nexport const openEditCourseDialogDispatch = (open) => ({\r\n type: types.OPEN_EDIT_COURSE_DIALOG,\r\n open\r\n});\r\n\r\nexport const openDeleteCourseDialogDispatch = (open, course) => ({\r\n type: types.OPEN_DELETE_COURSE_DIALOG,\r\n open,\r\n course\r\n});\r\n\r\nexport const submitDeleteCourseRequestDispatch = (course) => ({\r\n type: types.DELETE_COURSE,\r\n course\r\n});\r\n\r\nexport const courseEditClickDispatch = (course) => ({\r\n type: types.EDIT_COURSE,\r\n course\r\n});\r\n\r\nexport const fetchRecordsForTheCourseDispatch = (courseId) => ({\r\n type: types.FETCH_RECORDS_FOR_THE_COURSE,\r\n courseId\r\n});\r\n\r\nexport const handleDeleteCourseRecordClickDispatch = (payload) => ({\r\n type: types.DELETE_COURSE_RECORD,\r\n payload\r\n});\r\n\r\nexport const enableEditCourseRecord = (enableEditRecordMode, recordId) => ({\r\n type: types.ENABLE_EDIT_COURSE_RECORD,\r\n enableEditRecordMode,\r\n recordId\r\n});\r\n\r\nexport const submitCourseRecordDispatch = (\r\n payload,\r\n mode,\r\n source,\r\n branchId\r\n) => ({\r\n type: types.SUBMIT_COURSE_RECORD,\r\n payload,\r\n mode,\r\n source,\r\n branchId\r\n});\r\n\r\nexport const removeCourseRecordAttachment = (attachment) => ({\r\n type: types.REMOVE_COURSE_RECORD_ATTACHMENT,\r\n attachment\r\n});\r\n\r\nexport const fetchExistingAttachmentsForTheCourseRecordDispatch = (\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n) => ({\r\n type: types.LOAD_ATTACHMENTS_FOR_COURSE_RECORD,\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n});\r\n\r\nexport const removeCourseRecordAttachmentEdit = (attachment) => ({\r\n type: types.REMOVE_COURSE_RECORD_ATTACHMENT_EDIT,\r\n attachment\r\n});\r\n","import { types } from '../constants';\r\n\r\nexport const fetchAllHazardsForBranchDispatch = (branchId) => ({\r\n type: types.FETCH_ALL_HAZARDS_FOR_BRANCH,\r\n branchId\r\n});\r\n\r\nexport const fetchAllHazardsForCompanyDispatch = (companyId) => ({\r\n type: types.FETCH_ALL_HAZARDS_FOR_COMPANY,\r\n companyId\r\n});\r\n\r\nexport const searchTermChangeForAllHazards = (searchTerm) => ({\r\n type: types.CHANGE_SEARCH_TERM_ALL_HAZARDS,\r\n searchTerm\r\n});\r\n\r\nexport const openCreateHazardDialogDispatch = (open) => ({\r\n type: types.OPEN_CREATE_HAZARD_DIALOG,\r\n open\r\n});\r\n\r\nexport const handleHazardInputChangeDispatch = (value, inputFieldName) => ({\r\n type: types.INPUT_CHANGE_CREATE_HAZARD_FORM,\r\n value,\r\n inputFieldName\r\n});\r\n\r\nexport const submitHazardDispatch = (hazard, mode) => ({\r\n type: types.SUBMIT_HAZARD,\r\n hazard,\r\n mode\r\n});\r\n\r\nexport const openEditHazardPanelDispatch = (open) => ({\r\n type: types.OPEN_EDIT_HAZARD_PANEL,\r\n open\r\n});\r\n\r\nexport const openEditHazardDialogDispatch = (open) => ({\r\n type: types.OPEN_EDIT_HAZARD_DIALOG,\r\n open\r\n});\r\n\r\nexport const hazardEditClickDispatch = (hazard) => ({\r\n type: types.EDIT_HAZARD,\r\n hazard\r\n});\r\n\r\nexport const openDeleteHazardDialogDispatch = (open, hazard) => ({\r\n type: types.OPEN_DELETE_HAZARD_DIALOG,\r\n open,\r\n hazard\r\n});\r\n\r\nexport const submitDeleteHazardRequestDispatch = (hazard) => ({\r\n type: types.DELETE_HAZARD,\r\n hazard\r\n});\r\n\r\nexport const fetchControlsForTheHazardDispatch = (hazardId) => ({\r\n type: types.FETCH_CONTROLS_FOR_THE_HAZARD,\r\n hazardId\r\n});\r\n\r\nexport const handleDeleteHazardControlClickDispatch = (payload) => ({\r\n type: types.DELETE_HAZARD_CONTROL,\r\n payload\r\n});\r\n\r\nexport const submitControlDispatch = (payload, mode, branchId) => ({\r\n type: types.SUBMIT_HAZARD_CONTROL,\r\n payload,\r\n mode,\r\n branchId\r\n});\r\n\r\nexport const enableEditHazardControlDispatch = (\r\n enableEditControlMode,\r\n controlId\r\n) => ({\r\n type: types.ENABLE_EDIT_HAZARD_CONTROL,\r\n enableEditControlMode,\r\n controlId\r\n});\r\n\r\nexport const handleEditHazardControlInputChangeDispatch = (\r\n value,\r\n inputFieldName\r\n) => ({\r\n type: types.INPUT_CHANGE_EDIT_HAZARD_CONTROL,\r\n value,\r\n inputFieldName\r\n});\r\n\r\nexport const openAddHazardControlDialogDispatch = (open) => ({\r\n type: types.OPEN_ADD_HAZARD_CONTROL_DIALOG,\r\n open\r\n});\r\n\r\nexport const openDeleteHazardControlDialogDispatch = (open, controlId) => ({\r\n type: types.OPEN_DELETE_HAZARD_CONTROL_DIALOG,\r\n open,\r\n controlId\r\n});\r\n\r\n//HAZARD REVIEW\r\nexport const openHazardReviewPanelDispatch = (open) => ({\r\n type: types.OPEN_HAZARD_REVIEW_PANEL,\r\n open\r\n});\r\n\r\nexport const handleEditHazardReviewInputChangeDispatch = (\r\n value,\r\n inputFieldName\r\n) => ({\r\n type: types.INPUT_CHANGE_EDIT_HAZARD_REVIEW,\r\n value,\r\n inputFieldName\r\n});\r\n\r\nexport const handleAddHazardReviewInputChangeDispatch = (\r\n value,\r\n inputFieldName\r\n) => ({\r\n type: types.INPUT_CHANGE_ADD_HAZARD_REVIEW,\r\n value,\r\n inputFieldName\r\n});\r\n\r\nexport const submitHazardReviewDispatch = (payload, mode, branchId) => ({\r\n type: types.SUBMIT_HAZARD_REVIEW,\r\n payload,\r\n mode,\r\n branchId\r\n});\r\n\r\nexport const fetchReviewsForTheHazardDispatch = (hazardId) => ({\r\n type: types.FETCH_REVIEWS_FOR_THE_HAZARD,\r\n hazardId\r\n});\r\n\r\nexport const handleDeleteHazardReviewClickDispatch = (payload) => ({\r\n type: types.DELETE_HAZARD_REVIEW,\r\n payload\r\n});\r\n\r\nexport const openAddHazardReviewDialogDispatch = (open) => ({\r\n type: types.OPEN_CREATE_HAZARD_REVIEW_DIALOG,\r\n open\r\n});\r\n\r\nexport const enableEditHazardReviewDispatch = (\r\n enableEditReviewMode,\r\n reviewId\r\n) => ({\r\n type: types.ENABLE_EDIT_HAZARD_REVIEW,\r\n enableEditReviewMode,\r\n reviewId\r\n});\r\n\r\nexport const openDeleteHazardReviewDialogDispatch = (open, reviewId) => ({\r\n type: types.OPEN_DELETE_HAZARD_REVIEW_DIALOG,\r\n open,\r\n reviewId\r\n});\r\n\r\n//Hazard Management Logs\r\nexport const openHazardManagementLogPanelDispatch = (open) => ({\r\n type: types.OPEN_HAZARD_MANAGEMENTLOG_PANEL,\r\n open\r\n});\r\n\r\nexport const handleEditHazardManagementLogInputChangeDispatch = (\r\n value,\r\n inputFieldName\r\n) => ({\r\n type: types.INPUT_CHANGE_EDIT_HAZARD_MANAGEMENT_LOG,\r\n value,\r\n inputFieldName\r\n});\r\n\r\nexport const handleAddHazardManagementLogInputChangeDispatch = (\r\n value,\r\n inputFieldName\r\n) => ({\r\n type: types.INPUT_CHANGE_ADD_HAZARD_MANAGEMENT_LOG,\r\n value,\r\n inputFieldName\r\n});\r\n\r\nexport const submitHazardManagementLogDispatch = (payload, mode, branchId) => ({\r\n type: types.SUBMIT_HAZARD_MANAGEMENT_LOG,\r\n payload,\r\n mode,\r\n branchId\r\n});\r\n\r\nexport const fetchManagementLogsForTheHazardDispatch = (hazardId) => ({\r\n type: types.FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD,\r\n hazardId\r\n});\r\n\r\nexport const openAddHazardManagementLogDialogDispatch = (open) => ({\r\n type: types.OPEN_CREATE_HAZARD_MANAGEMENT_LOG_DIALOG,\r\n open\r\n});\r\n\r\nexport const enableEditHazardManagementLogDispatch = (\r\n enableEditManagmentLogMode,\r\n managementLogId\r\n) => ({\r\n type: types.ENABLE_EDIT_HAZARD_MANAGEMENT_LOG,\r\n enableEditManagmentLogMode,\r\n managementLogId\r\n});\r\n\r\nexport const openDeleteHazardManagementLogDialogDispatch = (\r\n open,\r\n managementLogId\r\n) => ({\r\n type: types.OPEN_DELETE_HAZARD_MANAGEMENT_LOG_DIALOG,\r\n open,\r\n managementLogId\r\n});\r\n\r\nexport const changeHazardStatusTypeFilter = (statusId) => ({\r\n type: types.CHANGE_SELECTED_HAZARD_STATUS_FILTER,\r\n statusId\r\n});\r\n\r\nexport const changeHazardDescriptionSortTypeFilter = (sortId) => ({\r\n type: types.CHANGE_SELECTED_HAZARD_DESCRIPTION_FILTER,\r\n sortId\r\n});\r\n\r\nexport const removeAttachment = (attachment) => ({\r\n type: types.REMOVE_HAZARD_ATTACHMENT,\r\n attachment\r\n});\r\n\r\nexport const fetchExistingAttachmentsForTheHazardDispatch = (\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n) => ({\r\n type: types.LOAD_ATTACHMENTS_FOR_HAZARD,\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n});\r\n\r\n//Hazard Review Attachment\r\nexport const removeHazardReviewAttachment = (attachment) => ({\r\n type: types.REMOVE_HAZARD_REVIEW_ATTACHMENT,\r\n attachment\r\n});\r\n\r\nexport const fetchExistingAttachmentsForHazardReviewDispatch = (\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n) => ({\r\n type: types.LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW,\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n});\r\n\r\nexport const removeHazardReviewAttachmentEdit = (attachment) => ({\r\n type: types.REMOVE_HAZARD_REVIEW_ATTACHMENT_EDIT,\r\n attachment\r\n});\r\n\r\n//Hazard Management Logs Attachment\r\nexport const removeHazardManagementLogsAttachment = (attachment) => ({\r\n type: types.REMOVE_HAZARD_MANAGEMENT_LOGS_ATTACHMENT,\r\n attachment\r\n});\r\n\r\nexport const fetchExistingAttachmentsForHazardManagementLogsDispatch = (\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n) => ({\r\n type: types.LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS,\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n});\r\n\r\nexport const removeHazardManagementLogsAttachmentEdit = (attachment) => ({\r\n type: types.REMOVE_HAZARD_MANAGE_LOGS_ATTACHMENT_EDIT,\r\n attachment\r\n});\r\n\r\n//Hazard Control Attachment\r\nexport const removeHazardControlAttachment = (attachment) => ({\r\n type: types.REMOVE_HAZARD_CONTROL_ATTACHMENT,\r\n attachment\r\n});\r\n\r\nexport const fetchExistingAttachmentsForHazardControlDispatch = (\r\n domainTypeId,\r\n parentId,\r\n userId\r\n) => ({\r\n type: types.LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL,\r\n domainTypeId,\r\n parentId,\r\n userId\r\n});\r\n\r\nexport const removeHazardControlAttachmentEdit = (attachment) => ({\r\n type: types.REMOVE_HAZARD_CONTROL_ATTACHMENT_EDIT,\r\n attachment\r\n});\r\n","import { types } from '../constants';\r\n\r\nexport const fetchAllDocumentsDispatch = (documentType, branchId) => ({\r\n type: types.FETCH_ALL_DOCUMENTS,\r\n documentType,\r\n branchId\r\n});\r\n\r\nexport const fetchAllDocumentsForBranchDispatch = (branchId) => ({\r\n type: types.FETCH_ALL_DOCUMENTS_FOR_BRANCH,\r\n branchId\r\n});\r\n\r\nexport const openDocumentListDialogDispatch = (open) => ({\r\n type: types.OPEN_DOCUMENT_LIST_DIALOG,\r\n open\r\n});\r\n\r\nexport const onDocumentFolderShowDispatch = (prefix) => ({\r\n type: types.DOCUMENT_SHOW_FOLDER_ITEMS,\r\n prefix\r\n});\r\n\r\nexport const onDocumentListBackArrowDispatch = () => ({\r\n type: types.DOCUMENT_BACK_ARROW_CLICKED\r\n});\r\n\r\nexport const onResetDocumentDispatch = () => ({\r\n type: types.DOCUMENT_RESET_ORIGINAL_STATE\r\n});\r\n\r\n\r\nexport const onFullResetDocumentDispatch = () => ({\r\n type: types.FULL_RESET_DOCUMENTS\r\n});\r\n\r\nexport const onDocumentSelectedForCourseDispatch = (documentLink) => ({\r\n type: types.DOCUMENT_SELECTED,\r\n documentLink\r\n});\r\n\r\n\r\nexport const onFolderAddDispatch = (folderName) => ({\r\n type: types.FOLDER_ADDED,\r\n folderName\r\n});\r\n\r\nexport const onAttachmentAddDispatch = (payload) => ({\r\n type: types.USER_ATTACHMENT_ADD,\r\n payload\r\n});\r\n\r\nexport const onAttachmentRemovedDispatch = (payload) => ({\r\n type: types.USER_ATTACHMENT_REMOVE,\r\n payload\r\n});\r\n","// ChangePasswordDialog/index.js\r\nimport { connect } from 'react-redux';\r\nimport ChangePasswordDialog from '../../components/ChangePasswordDialog';\r\n\r\nimport {\r\n openChangePasswordDialogDispatch,\r\n changePasswordDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.users.openChangePasswordDialog,\r\n user: state.users.userInAuth0.item,\r\n isSaving: state.users.changePasswordRequest.isSaving\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n onOpenChangePasswordDialog: (open) => {\r\n dispatch(openChangePasswordDialogDispatch(open));\r\n },\r\n onChangePassword: (userEmail) => {\r\n dispatch(changePasswordDispatch(userEmail));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(ChangePasswordDialog);\r\n","import React from 'react';\r\n\r\nimport { Snackbar, IconButton } from '@material-ui/core';\r\nimport { Close as CloseIcon } from '@material-ui/icons';\r\n\r\nfunction MessageDisplay(props) {\r\n const { text, visible, hideMessage, nextMessage } = props;\r\n\r\n return (\r\n {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n hideMessage();\r\n }}\r\n disableWindowBlurListener={true}\r\n ContentProps={{\r\n 'aria-describedby': 'message-snackbar'\r\n }}\r\n message={{text}}\r\n action={[\r\n \r\n \r\n \r\n ]}\r\n />\r\n );\r\n}\r\n\r\nexport default MessageDisplay;\r\n","// MessageQueue/index.js\r\nimport { connect } from 'react-redux';\r\nimport MessageDisplay from '../../components/MessageDisplay';\r\nimport { hideMessage, nextMessage } from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n const exists = state.general.message.queue.length > 0;\r\n const text = exists ? state.general.message.queue[0] : '';\r\n\r\n return {\r\n visible: state.general.message.visible,\r\n text\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n hideMessage: () => {\r\n dispatch(hideMessage());\r\n },\r\n nextMessage: () => {\r\n dispatch(nextMessage());\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MessageDisplay);\r\n","import { types } from '../constants';\r\n\r\nexport const showMessage = (text) => ({\r\n type: types.MESSAGE_SHOW,\r\n payload: {\r\n message: {\r\n text\r\n }\r\n }\r\n});\r\n\r\nexport const hideMessage = () => ({\r\n type: types.MESSAGE_HIDE\r\n});\r\n\r\nexport const nextMessage = () => ({\r\n type: types.MESSAGE_NEXT\r\n});\r\n\r\nexport const changeTabValueInHeaderDispatch = (newValue) => ({\r\n type: types.CHANGE_TAB_VALUE_IN_HEADER,\r\n newValue\r\n});\r\n","// BranchesPageHeader/index.js\r\nimport React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport {\r\n AppBar,\r\n Toolbar,\r\n Typography,\r\n IconButton,\r\n MenuItem,\r\n Menu,\r\n LinearProgress\r\n} from '@material-ui/core';\r\nimport SettingIcon from '@material-ui/icons/Settings';\r\nimport { useParams } from 'react-router-dom';\r\n\r\nimport Page from '../Page';\r\nimport { useAuth0 } from '../../react-auth0-spa';\r\nimport ChangePasswordDialog from '../../containers/ChangePasswordDialog';\r\nimport MessageDisplay from '../../containers/MessageDisplay';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n navbarContainer: {\r\n display: 'flex'\r\n },\r\n root: {\r\n flexGrow: 1\r\n },\r\n menuButton: {\r\n marginRight: theme.spacing(2)\r\n },\r\n leftControls: {\r\n flexGrow: 1,\r\n display: 'flex'\r\n },\r\n title: {\r\n marginTop: 5\r\n },\r\n navigationLinks: {\r\n marginTop: 8,\r\n marginLeft: 40\r\n },\r\n homeButton: {\r\n textDecoration: 'none',\r\n fontSize: '14px',\r\n letterSpacing: '0.02857em',\r\n color: 'rgba(255,255,255,0.87)',\r\n textTransform: 'uppercase'\r\n },\r\n rightControls: {\r\n display: 'flex'\r\n },\r\n userName: {\r\n marginTop: 12,\r\n marginRight: 30,\r\n fontSize: 16\r\n },\r\n loginLogoutButtons: {},\r\n appbar: {\r\n background:\r\n 'linear-gradient(90deg, rgba(44,107,178,1) 0%, rgba(20,29,120,1) 100%) !important'\r\n },\r\n settingsIcon: {\r\n color: theme.palette.tertiary.main\r\n },\r\n hastrakLogo: {\r\n width: 33,\r\n height: 38,\r\n display: 'inline-block',\r\n marginRight: 20\r\n }\r\n}));\r\n\r\nfunction BranchesPageHeader(props) {\r\n const classes = useStyles();\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const open = Boolean(anchorEl);\r\n const { logout, user } = useAuth0();\r\n const {\r\n userFromDb,\r\n fetchBranchDetailsForUser,\r\n branch,\r\n isSavingEvent,\r\n isLoadingRecordsForTheEvent,\r\n isDeletingRecord,\r\n isSavingNewRecord,\r\n isSavingCourse,\r\n isLoadingRecordsForTheCourse,\r\n isDeletingCourseRecord,\r\n isLoadingCourses,\r\n isLoadingPersonnels,\r\n isLoadingEvents,\r\n isLoadingAccidents,\r\n viewBranchAsAdmin,\r\n fetchBranchDetailsByBranchId,\r\n onChangePassword,\r\n setLoggedInUser\r\n } = props;\r\n let { branchId } = useParams();\r\n\r\n React.useEffect(\r\n () => {\r\n setLoggedInUser(user);\r\n\r\n if (viewBranchAsAdmin) {\r\n fetchBranchDetailsByBranchId(branchId);\r\n } else {\r\n fetchBranchDetailsForUser(userFromDb.id);\r\n }\r\n },\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [userFromDb, viewBranchAsAdmin, user]\r\n );\r\n\r\n const handleMenuClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleMenu = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleChangePasswordClick = () => {\r\n setAnchorEl(null);\r\n onChangePassword();\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n {branch && `${branch.companyName} - ${branch.name}`}\r\n \r\n
\r\n\r\n
\r\n
{user.name}
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n Change Password\r\n \r\n logout()} id=\"logout-menu-item\">\r\n Logout\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n {isSavingEvent ||\r\n isLoadingRecordsForTheEvent ||\r\n isDeletingRecord ||\r\n isSavingNewRecord ||\r\n isLoadingRecordsForTheCourse ||\r\n isDeletingCourseRecord ||\r\n isLoadingCourses ||\r\n isLoadingPersonnels ||\r\n isLoadingEvents ||\r\n isLoadingAccidents ||\r\n isSavingCourse ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nBranchesPageHeader.propTypes = {\r\n // describe the component's prop types here\r\n};\r\n\r\nBranchesPageHeader.defaultProps = {\r\n // assign default props to the component here\r\n};\r\n\r\nexport default BranchesPageHeader;\r\n","import { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nimport BranchesPageHeader from '../../components/BranchesPageHeader';\r\nimport {\r\n fetchBranchDetailsForUserDispatch,\r\n fetchBranchDetailsByBranchIdDispatch,\r\n openChangePasswordDialogDispatch,\r\n setLoggedInUserDispatch\r\n} from '../../actions';\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return {\r\n userFromDb: state.users.user.item,\r\n branch: state.branch.branch.item,\r\n isSavingEvent: state.event.newEvent.isSaving,\r\n isLoadingRecordsForTheEvent: state.event.recordsForTheEvent.isLoading,\r\n isDeletingRecord: state.event.deleteRecord.isSaving,\r\n isSavingNewRecord: state.event.newRecord.isSaving,\r\n isSavingCourse: state.course.newCourse.isSaving,\r\n isLoadingRecordsForTheCourse: state.course.recordsForTheCourse.isLoading,\r\n isDeletingCourseRecord: state.course.deleteRecord.isSaving,\r\n isLoadingCourses: state.courses.coursesByBranch.isLoading,\r\n isLoadingPersonnels: state.personnels.allPersonnels.isLoading,\r\n isLoadingEvents: state.events.eventsByBranch.isLoading,\r\n isLoadingAccidents: state.accidents.accidentsByBranch.isLoading\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => {\r\n return {\r\n fetchBranchDetailsForUser: (userId) => {\r\n dispatch(fetchBranchDetailsForUserDispatch(userId));\r\n },\r\n onChangePassword: () => {\r\n dispatch(openChangePasswordDialogDispatch(true));\r\n },\r\n fetchBranchDetailsByBranchId: (branchId) => {\r\n dispatch(fetchBranchDetailsByBranchIdDispatch(branchId));\r\n },\r\n setLoggedInUser: (user) => {\r\n dispatch(setLoggedInUserDispatch(user));\r\n }\r\n };\r\n};\r\n\r\nexport default withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(BranchesPageHeader)\r\n);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport {\r\n Drawer,\r\n List,\r\n Divider,\r\n ListItem,\r\n ListItemIcon,\r\n ListItemText\r\n} from '@material-ui/core';\r\nimport {\r\n Dashboard as DashboardIcon,\r\n MenuBook as MenuBookIcon,\r\n People as PeopleIcon,\r\n DateRange as DateRangeIcon,\r\n Warning as WarningIcon,\r\n AccountCircle as UserIcon,\r\n Assignment,\r\n LibraryBooks,\r\n AccountTree\r\n} from '@material-ui/icons';\r\n\r\nimport { buttonNames } from '../../constants';\r\n\r\nconst drawerWidth = 340;\r\nconst useStyles = makeStyles((theme) => ({\r\n dashboardContainer: {\r\n marginTop: 85\r\n },\r\n root: {\r\n display: 'flex'\r\n },\r\n appBar: {\r\n width: `calc(100% - ${drawerWidth}px)`,\r\n marginLeft: drawerWidth\r\n },\r\n drawer: {\r\n width: drawerWidth,\r\n flexShrink: 0\r\n },\r\n drawerPaper: {\r\n width: drawerWidth,\r\n top: 65\r\n },\r\n // necessary for content to be below app bar\r\n toolbar: theme.mixins.toolbar,\r\n content: {\r\n flexGrow: 1,\r\n backgroundColor: theme.palette.background.default,\r\n padding: theme.spacing(3)\r\n },\r\n listItem: {\r\n height: '85px !important'\r\n },\r\n selectedRecordItem: {\r\n background: '#f5f5f5',\r\n borderLeft: `5px solid ${theme.palette.secondary.minor}`\r\n }\r\n}));\r\n\r\nconst BranchRecordsItemsList = (props) => {\r\n const classes = useStyles();\r\n const { setCurrentBranchesRecord, currentBranchesRecord } = props;\r\n\r\n const handleListItemClick = (recordType) => {\r\n setCurrentBranchesRecord(recordType);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n handleListItemClick(buttonNames.DASHBOARD)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n handleListItemClick(buttonNames.COURSES)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n handleListItemClick(buttonNames.PERSONNEL)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n handleListItemClick(buttonNames.EVENTS)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n handleListItemClick(buttonNames.ACCIDENTS)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n handleListItemClick(buttonNames.HAZARDS)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n handleListItemClick(buttonNames.DOCUMENT_LIBRARY)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n handleListItemClick(buttonNames.DOCUMENT_LIBRARY_FOR_BRANCH)\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n handleListItemClick(buttonNames.USERS)}\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\nexport default BranchRecordsItemsList;\r\n","// BranchRecordsItemsList/index.js\r\nimport { connect } from 'react-redux';\r\nimport BranchRecordsItemsList from '../../components/BranchRecordsItemsList';\r\n\r\nimport { setCurrentBranchesRecordDispatch } from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n currentBranchesRecord: state.branches.currentBranchesRecord\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n setCurrentBranchesRecord: (recordType) => {\r\n dispatch(setCurrentBranchesRecordDispatch(recordType));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(BranchRecordsItemsList);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n background: '#dddddd',\r\n height: 50,\r\n margin: 16,\r\n marginLeft: 0\r\n },\r\n content: {\r\n textAlign: 'center',\r\n paddingTop: 8\r\n },\r\n danger: {\r\n color: 'red'\r\n },\r\n count: {\r\n fontSize: 24,\r\n fontWeight: 600,\r\n marginRight: 4\r\n },\r\n label: {\r\n fontWeight: 600\r\n }\r\n}));\r\n\r\nconst DashboardCountBox = (props) => {\r\n const classes = useStyles();\r\n const { count, isDanger = false, label } = props;\r\n\r\n return (\r\n \r\n
\r\n \r\n {count}\r\n {label}\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default DashboardCountBox;\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Typography, Button } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport { Edit as EditIcon } from '@material-ui/icons';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n borderBottom: `1px solid ${theme.palette.lightGrey.default}`,\r\n padding: '10px 16px 10px 0',\r\n display: 'flex',\r\n justifyContent: 'space-between'\r\n },\r\n danger: {\r\n color: 'red'\r\n },\r\n warning: {\r\n color: 'orange'\r\n },\r\n heading: {\r\n fontWeight: 500,\r\n fontStretch: 'normal',\r\n fontStyle: 'normal',\r\n lineHeight: 'normal',\r\n letterSpacing: 'normal',\r\n marginBottom: 3\r\n },\r\n subHeading: {\r\n fontWeight: 500,\r\n fontStretch: 'normal',\r\n fontStyle: 'normal',\r\n lineHeight: 'normal',\r\n letterSpacing: 'normal',\r\n marginBottom: 3\r\n },\r\n textContent: {},\r\n buttonContent: {}\r\n}));\r\n\r\nconst calculateExpiryPrefiex = (source, isExpired) => {\r\n if (source === 'training') {\r\n if (isExpired) {\r\n return 'd';\r\n } else {\r\n return 's';\r\n }\r\n } else {\r\n return '';\r\n }\r\n};\r\n\r\nconst RecordsListForEvents = (props) => {\r\n const classes = useStyles();\r\n const {\r\n allCourses,\r\n items,\r\n handleAddEditClick,\r\n dateLabel,\r\n titleField,\r\n subTitleField,\r\n dateField,\r\n courseId,\r\n source,\r\n seeMore\r\n } = props;\r\n\r\n React.useEffect(\r\n () => {\r\n \r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [seeMore]\r\n );\r\n\r\n return (\r\n \r\n {items &&\r\n items.map((item, index) => {\r\n const isExpired = moment().isAfter(item[dateField]);\r\n const expiryPrefix = calculateExpiryPrefiex(source, isExpired);\r\n\r\n //Because only 5 items are to be shown.\r\n if (seeMore && index > 4) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n {item[titleField]}\r\n \r\n \r\n {item[subTitleField]}\r\n \r\n \r\n {item[dateField] !== null\r\n ? `${dateLabel}${expiryPrefix}`\r\n : ''}{' '}\r\n {item[dateField] !== null\r\n ? moment(item[dateField]).format('DD/MM/YYYY')\r\n : ''}\r\n
\r\n
\r\n
\r\n }\r\n className={classes.editButton}\r\n onClick={() => {\r\n handleAddEditClick({ ...item });\r\n }}\r\n\r\n // onClick={() => {\r\n // console.log(item[courseId]);\r\n // console.log(allCourses);\r\n // let course =\r\n // allCourses &&\r\n // allCourses.find((o) => o.id === item[courseId]);\r\n // console.log(course);\r\n // handleAddEditClick({ ...course });\r\n // }}\r\n >\r\n Add/Edit\r\n \r\n
\r\n \r\n );\r\n })}\r\n
\r\n );\r\n};\r\n\r\nexport default RecordsListForEvents;\r\n","// EventsDashboardBlade/index.js\r\nimport React, {useState} from 'react';\r\nimport { Paper } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport DateRangeIcon from '@material-ui/icons/DateRange';\r\nimport { Button } from '@material-ui/core';\r\nimport moment from 'moment';\r\n\r\nimport DashboardCountBox from '../DashboardCountBox';\r\nimport RecordsListForEvents from '../RecordsListForEvents';\r\nimport { buttonNames } from '../../../constants';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n apaper: {\r\n padding: 16,\r\n margin: 16\r\n },\r\n titleContainer: {\r\n position: 'relative',\r\n top: -16\r\n },\r\n bladeIcon: {\r\n position: 'absolute'\r\n },\r\n bladeTitle: {\r\n marginTop: -4,\r\n position: 'absolute',\r\n left: 32,\r\n top: 6\r\n },\r\n countBoxContainer: {\r\n display: 'flex',\r\n marginTop: 24\r\n },\r\n countBox: {\r\n width: '100%'\r\n },\r\n seeMoreButtonContainer: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n marginTop: 8\r\n },\r\n seeMoreButton: {\r\n background: '#54a000',\r\n color: 'white',\r\n width: 150,\r\n height: 36,\r\n '&:hover': {\r\n background: 'white',\r\n color: '#54a000',\r\n border: '1px solid #54a000'\r\n }\r\n },\r\n noRecords: {\r\n fontSize: 20,\r\n textAlign: 'center',\r\n color: '#424242',\r\n marginBottom: 0\r\n }\r\n}));\r\n\r\nfunction EventsDashboardBlade(props) {\r\n const classes = useStyles();\r\n const {\r\n branchId,\r\n fetchAllEventsForBranch,\r\n allEvents,\r\n setCurrentBranchesRecord,\r\n handleEventRecordEditClick\r\n } = props;\r\n\r\n const[seeMore, setSeeMore] = useState(true);\r\n\r\n let events = allEvents;\r\n\r\n React.useEffect(\r\n () => {\r\n if (branchId) {\r\n fetchAllEventsForBranch(branchId);\r\n }\r\n },\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [branchId]\r\n );\r\n\r\n if (events.length > 0) {\r\n //removing events with not nextEventDateUTC\r\n events = events.filter((event) => event.nextEventDateUTC !== null);\r\n\r\n //Order events based on date\r\n events &&\r\n events.sort(function (a, b) {\r\n return new Date(a.nextEventDateUTC) - new Date(b.nextEventDateUTC);\r\n });\r\n\r\n //removing events that are more than a month due\r\n const nextOneMonthDate = moment().add(1, 'months');\r\n events = events.filter(\r\n (event) => new Date(event.nextEventDateUTC) < nextOneMonthDate\r\n );\r\n }\r\n\r\n const upcomingEvents = events.filter(\r\n (event) => new Date(event.nextEventDateUTC) >= new Date()\r\n );\r\n const overDueEvents = events.filter(\r\n (event) => new Date(event.nextEventDateUTC) < new Date()\r\n );\r\n\r\n const handleAddEditClick = (item) => {\r\n setCurrentBranchesRecord(buttonNames.EVENTS);\r\n handleEventRecordEditClick(item);\r\n };\r\n\r\n\r\n const handleSeeMoreButtonForEventClick = (recordType) => {\r\n setSeeMore(false);\r\n };\r\n const handleSeeLessButtonForEventClick = (recordType) => {\r\n setSeeMore(true);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n

\r\n \r\n Events\r\n

\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n 0}\r\n />\r\n
\r\n
\r\n \r\n\r\n {events.length === 0 ? (\r\n

No records

\r\n ) : null}\r\n\r\n {events.length > 5 ? (\r\n
\r\n {seeMore ? (\r\n handleSeeMoreButtonForEventClick(buttonNames.EVENTS)\r\n }\r\n >\r\n See More\r\n ) : (\r\n handleSeeLessButtonForEventClick(buttonNames.EVENTS)\r\n }\r\n >\r\n See Less\r\n ) }\r\n
\r\n ) : null}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default EventsDashboardBlade;\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Typography, Button } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport { Edit as EditIcon } from '@material-ui/icons';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n borderBottom: `1px solid ${theme.palette.lightGrey.default}`,\r\n padding: '10px 16px 10px 0',\r\n display: 'flex',\r\n justifyContent: 'space-between'\r\n },\r\n danger: {\r\n color: 'red'\r\n },\r\n warning: {\r\n color: 'orange'\r\n },\r\n heading: {\r\n fontWeight: 500,\r\n fontStretch: 'normal',\r\n fontStyle: 'normal',\r\n lineHeight: 'normal',\r\n letterSpacing: 'normal',\r\n marginBottom: 3\r\n },\r\n subHeading: {\r\n fontWeight: 500,\r\n fontStretch: 'normal',\r\n fontStyle: 'normal',\r\n lineHeight: 'normal',\r\n letterSpacing: 'normal',\r\n marginBottom: 3\r\n },\r\n textContent: {},\r\n buttonContent: {}\r\n}));\r\n\r\nconst calculateExpiryPrefiex = (source, isExpired) => {\r\n if (source === 'training') {\r\n if (isExpired) {\r\n return 'd';\r\n } else {\r\n return 's';\r\n }\r\n } else {\r\n return '';\r\n }\r\n};\r\n\r\nconst RecordsListForTraining = (props) => {\r\n const classes = useStyles();\r\n const {\r\n allCourses,\r\n items,\r\n handleAddEditClick,\r\n dateLabel,\r\n titleField,\r\n subTitleField,\r\n dateField,\r\n courseId,\r\n source,\r\n seeMore, \r\n branchId\r\n } = props;\r\n\r\n React.useEffect(\r\n () => {\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [seeMore]\r\n );\r\n\r\n return (\r\n \r\n {items &&\r\n items.map((item, index) => {\r\n const isExpired = moment().isAfter(item[dateField]);\r\n const expiryPrefix = calculateExpiryPrefiex(source, isExpired);\r\n\r\n //Because only 5 items are to be shown.\r\n if (seeMore && index > 4) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n {item[titleField]}\r\n \r\n \r\n {item[subTitleField]}\r\n \r\n \r\n {item[dateField] !== null\r\n ? `${dateLabel}${expiryPrefix}`\r\n : ''}{' '}\r\n {item[dateField] !== null\r\n ? moment(item[dateField]).format('DD/MM/YYYY')\r\n : ''}\r\n
\r\n
\r\n
\r\n }\r\n className={classes.editButton}\r\n onClick={() => {\r\n let course =\r\n allCourses &&\r\n allCourses.find((o) => o.id === item[courseId]);\r\n handleAddEditClick({ ...course });\r\n }}\r\n >\r\n Add/Edit\r\n \r\n
\r\n \r\n );\r\n })}\r\n
\r\n );\r\n};\r\n\r\nexport default RecordsListForTraining;\r\n","// TrainingDashboardBlade/index.js\r\nimport React, {useState} from 'react';\r\nimport { Paper, Button } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport MenuBookIcon from '@material-ui/icons/MenuBook';\r\nimport moment from 'moment';\r\n\r\nimport DashboardCountBox from '../DashboardCountBox';\r\nimport RecordsListForTraining from '../RecordsListForTraining';\r\nimport { buttonNames } from '../../../constants';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n paper: {\r\n padding: 16,\r\n margin: 16\r\n },\r\n titleContainer: {\r\n position: 'relative',\r\n top: -16\r\n },\r\n bladeIcon: {\r\n position: 'absolute'\r\n },\r\n bladeTitle: {\r\n marginTop: -4,\r\n position: 'absolute',\r\n left: 32,\r\n top: 6\r\n },\r\n countBoxContainer: {\r\n display: 'flex',\r\n marginTop: 24\r\n },\r\n countBox: {\r\n width: '100%'\r\n },\r\n seeMoreButtonContainer: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n marginTop: 8\r\n },\r\n seeMoreButton: {\r\n background: '#54a000',\r\n color: 'white',\r\n width: 150,\r\n height: 36,\r\n '&:hover': {\r\n background: 'white',\r\n color: '#54a000',\r\n border: '1px solid #54a000'\r\n }\r\n },\r\n noRecords: {\r\n fontSize: 20,\r\n textAlign: 'center',\r\n color: '#424242',\r\n marginBottom: 0\r\n }\r\n}));\r\n\r\nfunction TrainingDashboardBlade(props) {\r\n const classes = useStyles();\r\n\r\n const {\r\n branchId,\r\n fetchAllCourseRecordssForBranch,\r\n fetchAllCoursesForBranch,\r\n allCourses,\r\n setCurrentBranchesRecord,\r\n handleCourseRecordEditClick,\r\n courseRecords,\r\n fetchAllPersonnels\r\n } = props;\r\n\r\n const[seeMore, setSeeMore] = useState(true);\r\n\r\n let courses = courseRecords;\r\n\r\n React.useEffect(\r\n () => {\r\n if (branchId) {\r\n fetchAllCourseRecordssForBranch(branchId);\r\n fetchAllCoursesForBranch(branchId);\r\n fetchAllPersonnels(branchId);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [branchId]\r\n );\r\n\r\n if (courses.length > 0) {\r\n //removing courses with not nextCourseDate\r\n // courses = courses.filter((event) => event.nextCourseDate !== null);\r\n\r\n //Order courses based on date\r\n courses &&\r\n courses.sort(function (a, b) {\r\n return new Date(a.nextCourseDate) - new Date(b.nextCourseDate);\r\n });\r\n\r\n //Marking courses that are within next month as upcoming.\r\n const nextOneMonthDate = moment().add(1, 'months');\r\n courses = courses.map((course) => {\r\n if (\r\n new Date(course.nextCourseDate) < nextOneMonthDate &&\r\n new Date(course.nextCourseDate) >= new Date()\r\n ) {\r\n course.upcomingExpiryDate = true;\r\n }\r\n\r\n return course;\r\n });\r\n\r\n // courses = courses.filter(\r\n // (course) => new Date(course.nextCourseDate) < nextOneMonthDate\r\n // );\r\n }\r\n\r\n const upcomingCourses = courses.filter(\r\n (course) => new Date(course.nextCourseDate) >= new Date()\r\n );\r\n const overDueCourses = courses.filter(\r\n (course) => new Date(course.nextCourseDate) < new Date()\r\n );\r\n\r\n const handleAddEditClick = (item) => {\r\n setCurrentBranchesRecord(buttonNames.COURSES);\r\n handleCourseRecordEditClick(item);\r\n };\r\n\r\n const handleSeeMoreButtonForCoursesClick = (recordType) => {\r\n //setCurrentBranchesRecord(recordType);\r\n setSeeMore(false);\r\n };\r\n const handleSeeLessButtonForCoursesClick = (recordType) => {\r\n //setCurrentBranchesRecord(recordType);\r\n setSeeMore(true);\r\n };\r\n\r\n return (\r\n \r\n \r\n

\r\n \r\n Training\r\n

\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n 0}\r\n />\r\n
\r\n
\r\n\r\n \r\n\r\n {courses.length === 0 ? (\r\n

No records

\r\n ) : null}\r\n\r\n {courses.length > 5 ? (\r\n
\r\n {seeMore ? (\r\n handleSeeMoreButtonForCoursesClick(buttonNames.COURSES)\r\n }\r\n >\r\n See More\r\n ) : (\r\n handleSeeLessButtonForCoursesClick(buttonNames.COURSES)\r\n }\r\n >\r\n See Less\r\n ) }\r\n
\r\n ) : null}\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default TrainingDashboardBlade;\r\n","import { injuryConstants } from '../constants';\r\n\r\nconst mapInjuryTypeToText = (injuryTypeId) => {\r\n let list = injuryConstants.injuryTypes;\r\n let selectedInjuryType = list.filter((i) => i.id === injuryTypeId)[0];\r\n if (selectedInjuryType) {\r\n return selectedInjuryType.value;\r\n }\r\n return 'Unknown';\r\n};\r\n\r\nexport default { mapInjuryTypeToText };\r\n","import { userRolesEnum } from '../constants';\r\n\r\nconst mapUserRole = (userRoleId) => {\r\n let list = userRolesEnum.userRolesEnum;\r\n let selectedUserRole = list.filter((r) => r.id === userRoleId)[0];\r\n if (selectedUserRole) {\r\n return selectedUserRole.value;\r\n }\r\n return 'Unknown';\r\n};\r\n\r\nexport default { mapUserRole };\r\n","import moment from 'moment';\r\n\r\nconst utcToLocal = (utcDate) => {\r\n if (utcDate === null) {\r\n return null;\r\n }\r\n const gmtDateTime = moment.utc(utcDate, 'YYYY-MM-DD hh:mm:ss A');\r\n return gmtDateTime.local();\r\n};\r\n\r\nexport { utcToLocal };\r\n","// AccidentsDashboardBlade/index.js\r\nimport React, {useState} from 'react';\r\nimport { Paper, Typography, Button } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport WarningIcon from '@material-ui/icons/Warning';\r\nimport moment from 'moment';\r\n\r\nimport DashboardCountBox from '../DashboardCountBox';\r\nimport { buttonNames } from '../../../constants';\r\nimport { injuryMappers } from '../../../mappers';\r\nimport { utcToLocal } from './../../../utils/timeConverter';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n paper: {\r\n padding: 16,\r\n margin: 16\r\n },\r\n titleContainer: {\r\n position: 'relative',\r\n top: -16\r\n },\r\n bladeIcon: {\r\n position: 'absolute'\r\n },\r\n bladeTitle: {\r\n marginTop: -4,\r\n position: 'absolute',\r\n left: 32,\r\n top: 6\r\n },\r\n countBoxContainer: {\r\n display: 'flex',\r\n marginTop: 24\r\n },\r\n countBox: {\r\n width: '100%'\r\n },\r\n container: {\r\n borderBottom: `1px solid ${theme.palette.lightGrey.default}`,\r\n padding: '10px 16px 10px 0',\r\n display: 'flex',\r\n justifyContent: 'space-between'\r\n },\r\n heading: {\r\n fontWeight: 600\r\n },\r\n textContent: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n width: '100%'\r\n },\r\n buttonContent: {},\r\n seeMoreButtonContainer: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n marginTop: 8\r\n },\r\n seeMoreButton: {\r\n background: '#54a000',\r\n color: 'white',\r\n width: 150,\r\n height: 36,\r\n '&:hover': {\r\n background: 'white',\r\n color: '#54a000',\r\n border: '1px solid #54a000'\r\n }\r\n },\r\n noRecords: {\r\n fontSize: 20,\r\n textAlign: 'center',\r\n color: '#424242',\r\n marginBottom: 0\r\n },\r\n accidentDate: {\r\n margin: 0,\r\n marginTop: 8\r\n }\r\n}));\r\n\r\nfunction AccidentsDashboardBlade(props) {\r\n const classes = useStyles();\r\n\r\n const {\r\n fetchAllAccidentsForBranch,\r\n branchId,\r\n allAccidents,\r\n setCurrentBranchesRecord\r\n } = props;\r\n\r\n const[seeMore, setSeeMore] = useState(true);\r\n\r\n let accidents = allAccidents;\r\n\r\n React.useEffect(\r\n () => {\r\n if (branchId) {\r\n fetchAllAccidentsForBranch(branchId);\r\n }\r\n },\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [branchId]\r\n );\r\n\r\n if (accidents.length > 0) {\r\n //Order courses based on date\r\n accidents &&\r\n accidents.sort(function (a, b) {\r\n return new Date(b.injuryDate) - new Date(a.injuryDate);\r\n });\r\n\r\n //Calculating accidents in last 6 months.\r\n const last6MonthsDate = moment().subtract(6, 'months');\r\n accidents = accidents.filter(\r\n (accident) => new Date(accident.injuryDate) > last6MonthsDate\r\n );\r\n }\r\n\r\n const formattedTime = (accident) => {\r\n const convertedTime = utcToLocal(accident.injuryDate);\r\n let secondes = convertedTime.get('second');\r\n if (secondes > 0) {\r\n return convertedTime.format('DD/MM/YYYY hh:mm A');\r\n } else {\r\n return convertedTime.format('DD/MM/YYYY');\r\n }\r\n };\r\n\r\n const handleSeeMoreButtonForAccidentsClick = (recordType) => {\r\n setSeeMore(false);\r\n };\r\n\r\n const handleSeeLessButtonForAccidentsClick = (recordType) => {\r\n setSeeMore(true);\r\n };\r\n\r\n return (\r\n \r\n \r\n

\r\n \r\n Accidents\r\n

\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n {accidents &&\r\n accidents.map((accident, index) => {\r\n //Because only 3 items are to be shown.\r\n if (seeMore && index > 4) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n {injuryMappers.mapInjuryTypeToText(accident.injuryTypeId)}\r\n \r\n

\r\n {accident && formattedTime(accident)}{' '}\r\n

\r\n
\r\n
\r\n );\r\n })}\r\n\r\n {accidents.length > 5 ? (\r\n
\r\n {seeMore ? (\r\n handleSeeMoreButtonForAccidentsClick(buttonNames.ACCIDENTS)\r\n }\r\n >\r\n See More\r\n ) : (\r\n handleSeeLessButtonForAccidentsClick(buttonNames.ACCIDENTS)\r\n }\r\n >\r\n See Less\r\n ) }\r\n
\r\n ) : null}\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default AccidentsDashboardBlade;\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Typography, Button } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport { Edit as EditIcon } from '@material-ui/icons';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n borderBottom: `1px solid ${theme.palette.lightGrey.default}`,\r\n padding: '10px 16px 10px 0',\r\n display: 'flex',\r\n justifyContent: 'space-between'\r\n },\r\n danger: {\r\n color: 'red'\r\n },\r\n warning: {\r\n color: 'orange'\r\n },\r\n heading: {\r\n fontWeight: 500,\r\n fontStretch: 'normal',\r\n fontStyle: 'normal',\r\n lineHeight: 'normal',\r\n letterSpacing: 'normal',\r\n marginBottom: 3\r\n },\r\n subHeading: {\r\n fontWeight: 500,\r\n fontStretch: 'normal',\r\n fontStyle: 'normal',\r\n lineHeight: 'normal',\r\n letterSpacing: 'normal',\r\n marginBottom: 3\r\n },\r\n textContent: {},\r\n buttonContent: {}\r\n}));\r\n\r\nconst calculateExpiryPrefiex = (source, isExpired) => {\r\n if (source === 'training') {\r\n if (isExpired) {\r\n return 'd';\r\n } else {\r\n return 's';\r\n }\r\n } else {\r\n return '';\r\n }\r\n};\r\n\r\nconst RecordsListForHazards = (props) => {\r\n const classes = useStyles();\r\n const {\r\n items,\r\n handleAddEditClick,\r\n dateLabel,\r\n titleField,\r\n subTitleField,\r\n dateField,\r\n source,\r\n seeMore\r\n } = props;\r\n\r\n React.useEffect(\r\n () => {\r\n \r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [seeMore]\r\n );\r\n\r\n return (\r\n \r\n {items &&\r\n items.map((item, index) => {\r\n const isExpired = moment().isAfter(item[dateField]);\r\n const expiryPrefix = calculateExpiryPrefiex(source, isExpired);\r\n\r\n //Because only 5 items are to be shown.\r\n if (seeMore && index > 4) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n {item[titleField]}\r\n \r\n \r\n {item[subTitleField]}\r\n \r\n \r\n {item[dateField] !== null\r\n ? `${dateLabel}${expiryPrefix}`\r\n : ''}{' '}\r\n {item[dateField] !== null\r\n ? moment(item[dateField]).format('DD/MM/YYYY')\r\n : ''}\r\n
\r\n
\r\n
\r\n }\r\n className={classes.editButton}\r\n onClick={() => {\r\n handleAddEditClick({ ...item });\r\n }}\r\n >\r\n Add/Edit\r\n \r\n
\r\n \r\n );\r\n })}\r\n
\r\n );\r\n};\r\n\r\nexport default RecordsListForHazards;\r\n","import React, {useState} from 'react';\r\nimport { Paper } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport DateRangeIcon from '@material-ui/icons/DateRange';\r\nimport RateReviewIcon from '@material-ui/icons/RateReview';\r\nimport { Button } from '@material-ui/core';\r\nimport moment from 'moment';\r\n\r\nimport DashboardCountBox from '../DashboardCountBox';\r\nimport RecordsListForHazards from '../RecordsListForHazards';\r\nimport { buttonNames } from '../../../constants';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n apaper: {\r\n padding: 16,\r\n margin: 16\r\n },\r\n titleContainer: {\r\n position: 'relative',\r\n top: -16\r\n },\r\n bladeIcon: {\r\n position: 'absolute'\r\n },\r\n bladeTitle: {\r\n marginTop: -4,\r\n position: 'absolute',\r\n left: 32,\r\n top: 6\r\n },\r\n countBoxContainer: {\r\n display: 'flex',\r\n marginTop: 24\r\n },\r\n countBox: {\r\n width: '100%'\r\n },\r\n seeMoreButtonContainer: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n marginTop: 8\r\n },\r\n seeMoreButton: {\r\n background: '#54a000',\r\n color: 'white',\r\n width: 150,\r\n height: 36,\r\n '&:hover': {\r\n background: 'white',\r\n color: '#54a000',\r\n border: '1px solid #54a000'\r\n }\r\n },\r\n noRecords: {\r\n fontSize: 20,\r\n textAlign: 'center',\r\n color: '#424242',\r\n marginBottom: 0\r\n }\r\n}));\r\n\r\nfunction HazardDashboardBlade(props) {\r\n const classes = useStyles();\r\n const {\r\n branchId,\r\n fetchAllHazardsForBranch,\r\n allHazards,\r\n setCurrentBranchesRecord,\r\n handleHazardItemEditClick\r\n } = props;\r\n\r\n const[seeMore, setSeeMore] = useState(true);\r\n\r\n let hazards = allHazards;\r\n\r\n React.useEffect(\r\n () => {\r\n if (branchId) {\r\n fetchAllHazardsForBranch(branchId);\r\n }\r\n },\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [branchId]\r\n );\r\n\r\n if (hazards.length > 0) {\r\n //removing events with not nextEventDateUTC\r\n hazards = hazards.filter((hazard) => hazard.nextReviewDate !== null);\r\n\r\n //Order events based on date\r\n hazards &&\r\n hazards.sort(function (a, b) {\r\n return new Date(a.nextReviewDate) - new Date(b.nextReviewDate);\r\n });\r\n\r\n //removing events that are more than a month due\r\n const nextOneMonthDate = moment().add(1, 'months');\r\n hazards = hazards.filter(\r\n (hazard) => new Date(hazard.nextReviewDate) < nextOneMonthDate\r\n );\r\n }\r\n\r\n const upcomingHazardReviews = hazards.filter(\r\n (hazard) => new Date(hazard.nextReviewDate) >= new Date()\r\n );\r\n const overHazardReviews = hazards.filter(\r\n (hazard) => new Date(hazard.nextReviewDate) < new Date()\r\n );\r\n\r\n const handleAddEditClick = (item) => {\r\n setCurrentBranchesRecord(buttonNames.HAZARDS);\r\n handleHazardItemEditClick(item);\r\n };\r\n\r\n\r\n const handleSeeMoreButtonForHazardsClick = (recordType) => {\r\n setSeeMore(false);\r\n };\r\n const handleSeeLessButtonForHazardsClick = (recordType) => {\r\n setSeeMore(true);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n

\r\n \r\n Hazard Reviews\r\n

\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n 0}\r\n />\r\n
\r\n
\r\n \r\n\r\n {hazards.length === 0 ? (\r\n

No Hazards

\r\n ) : null}\r\n\r\n {hazards.length > 5 ? (\r\n
\r\n {seeMore ? (\r\n handleSeeMoreButtonForHazardsClick(buttonNames.HAZARDS)\r\n }\r\n >\r\n See More\r\n ) : (\r\n handleSeeLessButtonForHazardsClick(buttonNames.HAZARDS)\r\n }\r\n >\r\n See Less\r\n ) }\r\n
\r\n ) : null}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default HazardDashboardBlade;\r\n","// DashboardPanel/index.js\r\nimport React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport EventsDashboardBlade from './EventsDashboardBlade';\r\nimport TrainingDashboardBlade from './TrainingDashboardBlade';\r\nimport AccidentsDashboardBlade from './AccidentsDashboardBlade';\r\nimport HazardDashboardBlade from './HazardDashboardBlade';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n bladesContainer: {\r\n display: 'flex'\r\n },\r\n blade: {},\r\n columnOne: {\r\n width: '50%'\r\n },\r\n columnTwo: {\r\n width: '50%'\r\n }\r\n}));\r\n\r\nfunction DashboardPanel(props) {\r\n const classes = useStyles();\r\n\r\n const {\r\n branchId,\r\n fetchAllEventsForBranch,\r\n events,\r\n setCurrentBranchesRecord,\r\n handleEventRecordEditClick,\r\n fetchAllCourseRecordssForBranch,\r\n fetchAllCoursesForBranch,\r\n fetchAllAccidentsForBranch,\r\n courses,\r\n accidents,\r\n handleCourseRecordEditClick,\r\n courseRecords,\r\n fetchAllHazardsForBranch,\r\n hazards,\r\n handleHazardItemEditClick,\r\n fetchAllPersonnels\r\n } = props;\r\n\r\n return (\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\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default DashboardPanel;\r\n","import { connect } from 'react-redux';\r\nimport DashboardPanel from '../../components/DashboardPanel';\r\n\r\nimport {\r\n fetchAllEventsForBranchDispatch,\r\n setCurrentBranchesRecordDispatch,\r\n openEditEventPanelDispatch,\r\n eventEditClickDispatch,\r\n fetchAllCourseRecordssForBranchDispatch,\r\n fetchAllCoursesForBranchDispatch,\r\n fetchAllAccidentsForBranchDispatch,\r\n openEditCoursePanelDispatch,\r\n courseEditClickDispatch,\r\n fetchAllHazardsForBranchDispatch,\r\n openHazardReviewPanelDispatch,\r\n hazardEditClickDispatch,\r\n fetchAllPersonnelsDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n branchId: state.branch.branch.item && state.branch.branch.item.id,\r\n events: state.events.eventsByBranch.items,\r\n courses: state.courses.coursesByBranch.items,\r\n accidents: state.accidents.accidentsByBranch.items,\r\n courseRecords: state.courses.courseRecordsByBranch.items,\r\n hazards: state.hazards.hazardsByBranch.itemsCopy\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n fetchAllEventsForBranch: (branchId) => {\r\n dispatch(fetchAllEventsForBranchDispatch(branchId));\r\n },\r\n fetchAllPersonnels: (branchId) => {\r\n dispatch(fetchAllPersonnelsDispatch(branchId));\r\n },\r\n fetchAllCourseRecordssForBranch: (branchId) => {\r\n dispatch(fetchAllCourseRecordssForBranchDispatch(branchId));\r\n },\r\n fetchAllCoursesForBranch: (branchId) => {\r\n dispatch(fetchAllCoursesForBranchDispatch(branchId));\r\n },\r\n fetchAllAccidentsForBranch: (branchId) => {\r\n dispatch(fetchAllAccidentsForBranchDispatch(branchId));\r\n },\r\n setCurrentBranchesRecord: (recordType) => {\r\n dispatch(setCurrentBranchesRecordDispatch(recordType));\r\n },\r\n handleEventRecordEditClick: (event) => {\r\n dispatch(openEditEventPanelDispatch(true));\r\n dispatch(eventEditClickDispatch(event));\r\n },\r\n handleCourseRecordEditClick: (course) => {\r\n dispatch(openEditCoursePanelDispatch(true));\r\n dispatch(courseEditClickDispatch(course));\r\n },\r\n fetchAllHazardsForBranch: (branchId) => {\r\n dispatch(fetchAllHazardsForBranchDispatch(branchId));\r\n },\r\n handleHazardItemEditClick: (item) => {\r\n dispatch(openHazardReviewPanelDispatch(true));\r\n dispatch(hazardEditClickDispatch(item));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DashboardPanel);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n padding: '5px 10px'\r\n }\r\n}));\r\n\r\nconst GenericViewPanel = (props) => {\r\n const classes = useStyles();\r\n return
{props.children}
;\r\n};\r\n\r\nexport default GenericViewPanel;\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Paper, Grid, Typography, Button } from '@material-ui/core';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport DeleteOutlineIcon from '@material-ui/icons/DeleteOutline';\r\nimport DualActionDialog from '../DualActionDialog';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n padding: theme.spacing(2),\r\n paddingLeft: theme.spacing(3),\r\n marginBottom: theme.spacing(1)\r\n },\r\n personnelName: {\r\n fontSize: 18,\r\n fontWeight: 'normal',\r\n paddingTop: theme.spacing(1)\r\n },\r\n date: {\r\n paddingTop: theme.spacing(1),\r\n display: 'block'\r\n },\r\n deactivateContainer: {\r\n paddingTop: theme.spacing(2)\r\n },\r\n editDeleteContainer: {\r\n // paddingTop: theme.spacing(1)\r\n },\r\n editButton: {\r\n color: theme.palette.secondary.main\r\n },\r\n deleteButton: {\r\n color: theme.palette.danger.main\r\n }\r\n}));\r\n\r\nconst SingleCourse = (props) => {\r\n const {\r\n course,\r\n documents,\r\n handleCourseEditClick,\r\n handleCourseRecordEditClick,\r\n openDeleteCourseDialog\r\n } = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n {course && course.unitDescription}\r\n \r\n \r\n {course && course.courseCode}\r\n \r\n
\r\n
\r\n \r\n
\r\n }\r\n className={classes.editButton}\r\n onClick={() => handleCourseEditClick({ ...course })}\r\n >\r\n Training Detail\r\n \r\n }\r\n className={classes.editButton}\r\n onClick={() => handleCourseRecordEditClick({ ...course })}\r\n >\r\n Records\r\n \r\n }\r\n className={classes.deleteButton}\r\n onClick={() => openDeleteCourseDialog(true, { ...course })}\r\n >\r\n Delete\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst CoursesList = (props) => {\r\n const {\r\n branchId,\r\n fetchAllCoursesForBranch,\r\n courses,\r\n documents,\r\n fetchAllDocuments,\r\n handleCourseEditClick,\r\n handleCourseRecordEditClick,\r\n openDeleteCourseDialog,\r\n openDeleteDialog,\r\n courseToBeDeleted,\r\n errorMessage,\r\n isDeletingCourse,\r\n submitDeleteCourseRequest,\r\n loggedInUser\r\n } = props;\r\n\r\n React.useEffect(\r\n () => {\r\n if (branchId) {\r\n fetchAllCoursesForBranch(branchId);\r\n }\r\n if (loggedInUser.role === 1) {\r\n fetchAllDocuments(branchId);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [branchId]\r\n );\r\n\r\n const handleConfirmDelete = (e) => {\r\n submitDeleteCourseRequest(courseToBeDeleted);\r\n };\r\n\r\n return (\r\n \r\n {openDeleteDialog === true ? (\r\n openDeleteCourseDialog(false, courseToBeDeleted)}\r\n handleSubmit={handleConfirmDelete}\r\n showProgressBar={isDeletingCourse || false}\r\n errorMessage={errorMessage || ''}\r\n isDanger={true}\r\n />\r\n ) : null}\r\n {courses &&\r\n courses.map((course) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport default CoursesList;\r\n","// CoursesList/index.js\r\nimport { connect } from 'react-redux';\r\nimport CoursesList from '../../components/CoursesList';\r\nimport { documentType } from '../../constants';\r\n\r\nimport {\r\n fetchAllCoursesForBranchDispatch,\r\n fetchAllDocumentsDispatch,\r\n openEditCoursePanelDispatch,\r\n courseEditClickDispatch,\r\n openEditCourseDialogDispatch,\r\n openDeleteCourseDialogDispatch,\r\n submitDeleteCourseRequestDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n branchId: state.branch.branch.item && state.branch.branch.item.id,\r\n courses: state.courses.coursesByBranch.items,\r\n documents: state.settings.allDocuments.items,\r\n openDeleteDialog: state.courses.deleteCourse.openDialog,\r\n courseToBeDeleted: state.courses.deleteCourse.course,\r\n errorMessage: state.courses.deleteCourse.errorMessage,\r\n isDeletingCourse: state.courses.deleteCourse.isSaving,\r\n loggedInUser: state.users.user.item\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n fetchAllCoursesForBranch: (branchId) => {\r\n dispatch(fetchAllCoursesForBranchDispatch(branchId));\r\n },\r\n fetchAllDocuments: (branchId) => {\r\n dispatch(fetchAllDocumentsDispatch(documentType.DOCUMENT_LIBRARY, branchId));\r\n },\r\n handleCourseEditClick: (course) => {\r\n dispatch(openEditCourseDialogDispatch(true));\r\n dispatch(courseEditClickDispatch(course));\r\n },\r\n handleCourseRecordEditClick: (course) => {\r\n dispatch(openEditCoursePanelDispatch(true));\r\n dispatch(courseEditClickDispatch(course));\r\n },\r\n openDeleteCourseDialog: (open, course) => {\r\n dispatch(openDeleteCourseDialogDispatch(open, course));\r\n },\r\n submitDeleteCourseRequest: (course) => {\r\n dispatch(submitDeleteCourseRequestDispatch(course));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CoursesList);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\n\r\nconst useStyles = makeStyles((theme) => {\r\n return {\r\n root: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n borderRadius: 25,\r\n height: 36,\r\n background: 'none',\r\n border: '1px solid',\r\n borderColor: '#7E7E7'\r\n },\r\n input: {\r\n margin: theme.spacing(1),\r\n flex: 1\r\n }\r\n };\r\n});\r\n\r\nexport default function SearchBox(props) {\r\n const classes = useStyles();\r\n const { htmlId, handleSearchTermChange, searchTerm, placeholder } = props;\r\n\r\n const handleChange = (e) => {\r\n handleSearchTermChange(e.target.value);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport { Button, Grid } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport SearchBox from '../SearchBox';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n actionBar: {\r\n marginTop: theme.spacing(1),\r\n marginBottom: theme.spacing(1)\r\n }\r\n}));\r\n\r\nconst ButtonSearchBoxActionBar = (props) => {\r\n const {\r\n openCreateDialog,\r\n searchTerm,\r\n handleSearchTermChange,\r\n buttonText,\r\n searchPlaceholder,\r\n hideCreate\r\n } = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n \r\n \r\n openCreateDialog(true)}\r\n >\r\n {buttonText}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default ButtonSearchBoxActionBar;\r\n","import React from 'react';\r\nimport {\r\n makeStyles,\r\n Select,\r\n FormControl,\r\n InputLabel,\r\n MenuItem\r\n} from '@material-ui/core';\r\n\r\nconst styles = makeStyles((theme) => {\r\n return {\r\n formControl: {\r\n minWidth: 120\r\n }\r\n };\r\n});\r\n\r\n/**\r\n * Fancy drop down has nice looking background and closer to\r\n * material ui select\r\n */\r\n\r\nconst FancyDropDown = (props) => {\r\n const classes = styles();\r\n const {\r\n handleChange,\r\n label,\r\n items,\r\n value,\r\n dropDownWidth = '180px',\r\n htmlId,\r\n disabled,\r\n fullWidth,\r\n valueField,\r\n displayField, //Will be an array in case of Personnels drop down.\r\n required = false\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n {items &&\r\n items.map((item) => {\r\n return (\r\n \r\n {Array.isArray(displayField)\r\n ? `${item[displayField[0]]} ${item[displayField[1]]}`\r\n : item[displayField]}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default FancyDropDown;\r\n","import React from 'react';\r\nimport {\r\n makeStyles,\r\n Select,\r\n FormControl,\r\n InputLabel,\r\n MenuItem\r\n} from '@material-ui/core';\r\n\r\nconst styles = makeStyles((theme) => {\r\n return {\r\n formControl: {\r\n minWidth: 120\r\n }\r\n };\r\n});\r\n\r\n/**\r\n * String drop down has nice looking background and closer to\r\n * material ui select\r\n */\r\n\r\nconst StringDropDown = (props) => {\r\n const classes = styles();\r\n const {\r\n handleChange,\r\n label,\r\n items,\r\n value,\r\n dropDownWidth = '180px',\r\n htmlId,\r\n disabled,\r\n fullWidth,\r\n required = false\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n {items &&\r\n items.map((item) => {\r\n return (\r\n \r\n {item.blobName}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default StringDropDown;\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport FolderIcon from '@material-ui/icons/Folder';\r\nimport DeleteIcon from '@material-ui/icons/DeleteOutline';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Button from '@material-ui/core/Button';\r\nimport { Grid } from '@material-ui/core';\r\n\r\nimport ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction';\r\nimport AttachmentIcon from '@material-ui/icons/Attachment';\r\nimport List from '@material-ui/core/List';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Highlighter from 'react-highlight-words';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n padding: theme.spacing(2),\r\n paddingLeft: theme.spacing(3),\r\n marginBottom: theme.spacing(1)\r\n },\r\n root: {\r\n width: '100%',\r\n backgroundColor: theme.palette.background.paper\r\n },\r\n deleteButton: {\r\n color: theme.palette.danger.main\r\n },\r\n}));\r\n\r\nconst DocumentList = (props) => {\r\n const {\r\n documents,\r\n handleFolderClick,\r\n handleDocumentClick,\r\n searchTerm,\r\n showDelete,\r\n handleDeleteClick\r\n } = props;\r\n\r\n const classes = useStyles();\r\n\r\n const toSearchArray = searchTerm && searchTerm !== '' ? [searchTerm] : [];\r\n\r\n const folders = documents.filter((x) => x.isFolder === true);\r\n const plainDocuments = documents.filter((x) => x.isFolder === false);\r\n\r\n return (\r\n \r\n
\r\n \r\n {folders &&\r\n folders.map((folder) => {\r\n return (\r\n handleFolderClick(folder)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n {plainDocuments &&\r\n plainDocuments.map((document) => {\r\n return (\r\n \r\n\r\n \r\n \r\n handleDocumentClick(document)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {showDelete && \r\n }\r\n className={classes.deleteButton}\r\n onClick={() => handleDeleteClick(document)}\r\n >\r\n Delete\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\nexport default DocumentList;\r\n","import React from 'react';\r\nimport {\r\n DialogTitle,\r\n DialogContent,\r\n DialogActions,\r\n LinearProgress,\r\n Button\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { ArrowBack as ArrowBackIcon } from '@material-ui/icons';\r\nimport { IconButton, Typography, Grid } from '@material-ui/core';\r\nimport Dialog from '../Dialog';\r\nimport DocumentList from '../DocumenList';\r\n\r\nimport SearchBox from '../SearchBox';\r\n\r\nimport { useState, useEffect } from 'react';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n dialog: {},\r\n dialogTitle: {\r\n background: '#f0f0f0'\r\n },\r\n dialogContent: {\r\n width: 580,\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(3)\r\n },\r\n actionButton: {\r\n width: 180,\r\n float: 'right',\r\n margin: theme.spacing(2)\r\n },\r\n footer: {\r\n background: '#f0f0f0'\r\n },\r\n simpleLabel: {\r\n display: 'inline-block',\r\n marginTop: 2\r\n },\r\n editHazardFieldsContainer: {\r\n padding: theme.spacing(2)\r\n },\r\n backArrow: {\r\n marginLeft: -16\r\n },\r\n courseName: {\r\n fontWeight: 600\r\n },\r\n addControlButton: {\r\n marginTop: 8\r\n }\r\n}));\r\n\r\nconst DocumentSearchDialog = (props) => {\r\n const classes = useStyles();\r\n const { open, documents, handleDocumentClick, handleSearchClosed } = props;\r\n\r\n const [filterdDocuments, setDocuments] = useState(\r\n documents.filter((x) => x.isFolder === false)\r\n );\r\n\r\n const [searchTerm, setSerchTerm] = useState('');\r\n\r\n const handleFolderClick = (folder) => {\r\n // onShowFolderItems(folder.documentName);\r\n };\r\n\r\n const handleBackButtonClicked = () => {\r\n // onBackClicked();\r\n };\r\n\r\n const handleSearchTermChanged = (searchWord) => {\r\n setSerchTerm(searchWord);\r\n if (searchWord === '') {\r\n setDocuments(documents.filter((x) => x.isFolder === false));\r\n } else {\r\n var result = documents.filter((o) =>\r\n o.documentName.toLowerCase().includes(searchWord.toLowerCase())\r\n );\r\n /* .sort(\r\n (a, b) =>\r\n a.documentName.toLowerCase().indexOf(searchWord.toLowerCase()) -\r\n b.documentName.toLowerCase().indexOf(searchWord.toLowerCase())\r\n ); */\r\n setDocuments(result.filter((x) => x.isFolder === false));\r\n }\r\n };\r\n\r\n const showBackBtn = false;\r\n\r\n return (\r\n \r\n \r\n \r\n Documents\r\n \r\n \r\n {showBackBtn ? (\r\n
\r\n \r\n \r\n \r\n\r\n {/* \r\n \r\n {' '}\r\n {currentDirectory}\r\n */}\r\n
\r\n ) : (\r\n
\r\n {/* \r\n {' '}\r\n {currentDirectory}\r\n */}\r\n
\r\n )}\r\n {filterdDocuments && (\r\n
\r\n \r\n \r\n
\r\n )}\r\n
\r\n \r\n \r\n Close\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default DocumentSearchDialog;\r\n","import React from 'react';\r\nimport {\r\n DialogTitle,\r\n DialogContent,\r\n DialogActions,\r\n LinearProgress,\r\n Button,\r\n Fab\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { ArrowBack as ArrowBackIcon } from '@material-ui/icons';\r\nimport { IconButton, Typography} from '@material-ui/core';\r\nimport Dialog from '../Dialog';\r\nimport DocumentList from '../DocumenList';\r\nimport FancyDropDown from '../FancyDropDown';\r\nimport { useParams } from 'react-router-dom';\r\n\r\nimport DocumentSearchDialog from '../DocumentSearchDialog';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\n//import ToggleButton from '@material-ui/cor';\r\n//import ToggleButtonGroup from '@mui/material/ToggleButtonGroup';\r\n\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n dialog: {},\r\n dialogTitle: {\r\n background: '#f0f0f0'\r\n },\r\n dialogContent: {\r\n width: 580,\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(3)\r\n },\r\n actionButton: {\r\n width: 180,\r\n float: 'right',\r\n margin: theme.spacing(2)\r\n },\r\n footer: {\r\n background: '#f0f0f0'\r\n },\r\n simpleLabel: {\r\n display: 'inline-block',\r\n marginTop: 2\r\n },\r\n editHazardFieldsContainer: {\r\n padding: theme.spacing(2)\r\n },\r\n backArrow: {\r\n marginLeft: -16\r\n },\r\n courseName: {\r\n fontWeight: 600\r\n },\r\n addControlButton: {\r\n marginTop: 8\r\n },\r\n dropDown: {\r\n width: 200,\r\n }\r\n}));\r\n\r\nconst DocumentListDialog = (props) => {\r\n const classes = useStyles();\r\n const {\r\n open,\r\n documents,\r\n allDocumentsForLibrary,\r\n course,\r\n onOpenDocumentListDialog,\r\n currentDirectory,\r\n defaultDirectory,\r\n onShowFolderItems,\r\n onBackClicked,\r\n onReset,\r\n handleDocumentSelected,\r\n isLoading,\r\n fetchAllDocuments,\r\n fetchAllDocumentsForLibrary,\r\n onFullReset,\r\n showDropdown,\r\n branchId\r\n\r\n } = props;\r\n\r\n\r\n const items = [{id:1, value: \"Global Documents Library\", name: \"Documents\"}, {id:2, value:\"Client Document Library\", name:\"Branch Documents\"}]\r\n\r\n const [alignment, setAlignment] = React.useState(1);\r\n\r\n const [openSearch, setOpenSearch] = React.useState(false);\r\n\r\n //let { branchId } = useParams();\r\n\r\n React.useEffect(\r\n () => {\r\n\r\n if(open === true && alignment === 1){\r\n fetchAllDocuments(branchId);\r\n }\r\n else if(open === true && alignment === 2){\r\n fetchAllDocumentsForLibrary(branchId);\r\n }\r\n\r\n return () => {\r\n setAlignment(1);\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [open]\r\n ); \r\n\r\n const handleSearchClosed = () => {\r\n debugger;\r\n setOpenSearch(false);\r\n };\r\n\r\n\r\n const onDialogClose = () => {\r\n onOpenDocumentListDialog(false);\r\n onFullReset();\r\n };\r\n\r\n const handleFolderClick = (folder) => {\r\n onShowFolderItems(folder.documentName);\r\n };\r\n\r\n const handleDocumentClick = (document) => {\r\n\r\n const documentLink =\r\n document.blobName;\r\n handleDocumentSelected(documentLink);\r\n\r\n onDialogClose();\r\n };\r\n\r\n\r\n\r\n\r\n const handleDocumentClickFromSearch = (document) => {\r\n // window.open(document.blobFullUrl, '_blank', 'noopener,noreferrer');\r\n // handleDocumentSelected(documentLink);\r\n setOpenSearch(false);\r\n const documentLink =\r\n document.blobName;\r\n handleDocumentSelected(documentLink);\r\n onDialogClose();\r\n };\r\n\r\n const handleBackButtonClicked = () => {\r\n onBackClicked();\r\n };\r\n\r\n const handleRemoveButtonClicked = () => {\r\n handleDocumentSelected(null);\r\n onDialogClose();\r\n };\r\n\r\n const handleDropdownChange = (e) => {\r\n \r\n setAlignment(e.target.value);\r\n\r\n if(e.target.value === 1){\r\n fetchAllDocuments(branchId);\r\n }\r\n else if (e.target.value === 2){\r\n fetchAllDocumentsForLibrary(branchId);\r\n } \r\n }\r\n\r\n const showBackBtn = currentDirectory === defaultDirectory ? false : true;\r\n\r\n return (\r\n \r\n\r\n{openSearch && (\r\n \r\n )}\r\n\r\n \r\n \r\n Documents\r\n \r\n \r\n \r\n {showDropdown && \r\n }\r\n \r\n \r\n\r\n \r\n {showDropdown && documents && documents.length > 0 && (\r\n setOpenSearch(true)}\r\n >\r\n Search Documents\r\n \r\n )}\r\n \r\n \r\n {isLoading ? : ''}\r\n\r\n {showBackBtn ? (\r\n
\r\n \r\n \r\n \r\n \r\n {' '}\r\n {currentDirectory}\r\n \r\n
\r\n ) : (\r\n
\r\n \r\n {' '}\r\n {currentDirectory}\r\n \r\n
\r\n )}\r\n {documents && (\r\n \r\n )}\r\n
\r\n \r\n {course.document != null && (\r\n \r\n Remove\r\n \r\n )}\r\n \r\n Close\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default DocumentListDialog;\r\n","import { connect } from 'react-redux';\r\nimport DocumentListDialog from '../../components/DocumentListDialog';\r\nimport { documentType } from '../../constants';\r\n\r\nimport {\r\n openDocumentListDialogDispatch,\r\n onDocumentListBackArrowDispatch,\r\n onDocumentFolderShowDispatch,\r\n onResetDocumentDispatch,\r\n fetchAllDocumentsForBranchDispatch,\r\n fetchAllDocumentsDispatch,\r\n onFullResetDocumentDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n open: state.settings.openDocumentListDialog,\r\n documents: state.settings.allDocuments.items,\r\n allDocumentsForLibrary: state.settings.allDocuments.itemsCopy,\r\n course: state.course.newCourse.item,\r\n currentDirectory: state.settings.currentDirectory,\r\n defaultDirectory: state.settings.defaultDirectory,\r\n isLoading: state.settings.allDocuments.isLoading,\r\n branchId: state.branch.branch.item && state.branch.branch.item.id\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n onOpenDocumentListDialog: (open) => {\r\n dispatch(openDocumentListDialogDispatch(open));\r\n },\r\n onReset: () => {\r\n dispatch(onResetDocumentDispatch()); \r\n },\r\n onFullReset:() => {\r\n dispatch( onFullResetDocumentDispatch());\r\n },\r\n onBackClicked: () => {\r\n dispatch(onDocumentListBackArrowDispatch());\r\n },\r\n onShowFolderItems: (prefix) => {\r\n dispatch(onDocumentFolderShowDispatch(prefix));\r\n },\r\n fetchAllDocuments: (branchId) => {\r\n dispatch(fetchAllDocumentsDispatch(documentType.DOCUMENT_LIBRARY, branchId ));\r\n },\r\n fetchAllDocumentsForLibrary: (branchId) => {\r\n dispatch(fetchAllDocumentsForBranchDispatch(branchId));\r\n },\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DocumentListDialog);\r\n","\r\n\r\nexport const mapDocumentToArray = (document) => {\r\n if(document === null || typeof document === 'undefined' || document === \"\") return [];\r\n return document.split(',')\r\n };\r\n\r\n export const mapArrayToDocument = (documents) => {\r\n if(!documents && documents.length) return \"\";\r\n return documents.join(',');\r\n };\r\n\r\n export const addDocumentToArray = (previousDocument, document) => {\r\n if(previousDocument === null || typeof previousDocument === 'undefined' || previousDocument === \"\") return document;\r\n var commaSeperatedArray = previousDocument.split(',')\r\n commaSeperatedArray.push(document);\r\n return commaSeperatedArray.join(',');\r\n};\r\n\r\nexport const removeDocumentFromArray = (previousDocument, document) => {\r\n if(previousDocument === null || typeof previousDocument === 'undefined' || previousDocument === \"\") return \"\";\r\n var commaSeperatedArray = previousDocument.split(',')\r\n var filtered = commaSeperatedArray.filter(x=> x !== document);\r\n return filtered.join(',');\r\n};\r\n\r\nexport const mapLibraryPrefix = (documentName) => {\r\n if(documentName !== null && typeof documentName !== 'undefined' && documentName.startsWith('branch')){\r\n return \"https://hastrak.blob.core.windows.net/user-library/\";\r\n }\r\n else{\r\n return \"https://hastrak.blob.core.windows.net/library/\";\r\n }\r\n}\r\n\r\n\r\nexport const getFormattedDocumentName = (document) => {\r\n if(document === null || typeof document === 'undefined' || document === \"\") return \"\";\r\n let documentArray = document.split('/');\r\n if(documentArray && documentArray.length){\r\n return documentArray.length > 1 ? documentArray[documentArray.length-1] : document;\r\n }\r\n return document; \r\n}\r\n ","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Chip from '@material-ui/core/Chip';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport List from '@material-ui/core/List';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport DeleteIcon from '@material-ui/icons/DeleteOutline';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Button from '@material-ui/core/Button';\r\nimport { Grid } from '@material-ui/core';\r\nimport AttachmentIcon from '@material-ui/icons/Attachment';\r\nimport config from '../../constants/blob_config.json';\r\n\r\n\r\n\r\nimport {mapDocumentToArray, mapLibraryPrefix} from '../../mappers/libraryDocumentMapper';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: 'flex',\r\n justifyContent: 'left',\r\n flexWrap: 'wrap',\r\n listStyle: 'none',\r\n padding: theme.spacing(0.5),\r\n margin: 0\r\n },\r\n chip: {\r\n margin: theme.spacing(0.5)\r\n }\r\n}));\r\n\r\nconst LibraryDocumentList = (props) => {\r\n const classes = useStyles();\r\n const {commeSeperatedDocument, onRemoveDocument, canEdit } = props;\r\n\r\n React.useEffect(\r\n () => {\r\n \r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [commeSeperatedDocument]\r\n );\r\n\r\n const handleDelete = (documentToRemove) => {\r\n onRemoveDocument(documentToRemove);\r\n };\r\n\r\n const mappedDocuments = mapDocumentToArray(commeSeperatedDocument);\r\n\r\n if (!mappedDocuments && mappedDocuments.length) return;\r\n\r\n\r\n return (\r\n \r\n \r\n {\r\n mappedDocuments.map((document) => {\r\n return (\r\n \r\n \r\n {canEdit ? \r\n {document}\r\n : {document} }\r\n \r\n\r\n {canEdit && \r\n }\r\n className={classes.deleteButton}\r\n onClick={()=>handleDelete(document)}\r\n >\r\n Remove\r\n \r\n }\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default LibraryDocumentList;\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport {\r\n DialogTitle,\r\n Button,\r\n DialogActions,\r\n DialogContent,\r\n TextField,\r\n Grid,\r\n LinearProgress\r\n} from '@material-ui/core';\r\n\r\nimport Dialog from '../Dialog';\r\nimport { inputFieldNames, userRoles } from '../../constants';\r\nimport FancyDropDown from '../FancyDropDown';\r\nimport StringDropDown from '../StringDropDown';\r\nimport { courseCategories } from '../../constants';\r\nimport config from '../../constants/blob_config.json';\r\nimport DocumentListDialog from '../../containers/DocumentListDialog';\r\nimport LibraryDocumentList from '../LibraryDocumentList';\r\nimport {addDocumentToArray, removeDocumentFromArray} from \"../../mappers/libraryDocumentMapper\";\r\nimport { COURSE_NOTES } from './../../constants/inputFieldNames';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n dialog: {},\r\n dialogTitle: {\r\n background: '#f0f0f0'\r\n },\r\n dialogContent: {\r\n width: 580,\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(3)\r\n },\r\n actionButton: {\r\n width: 180,\r\n float: 'right',\r\n margin: theme.spacing(2)\r\n },\r\n documentButton: {\r\n width: '100%'\r\n },\r\n footer: {\r\n background: '#f0f0f0'\r\n },\r\n picker: {\r\n margin: 0,\r\n padding: 0\r\n },\r\n documentLink: {\r\n display: 'block',\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n },\r\n browseButton: {\r\n marginTop: '10px'\r\n }\r\n}));\r\n\r\nconst CreateEditCourseFormUi = (props) => {\r\n const {\r\n openDialog,\r\n isSaving,\r\n onHandleInputChange,\r\n openCreateCourseDialog,\r\n handleSubmit,\r\n title,\r\n course,\r\n documents,\r\n canEditDocuments,\r\n actionButtonText = 'Add',\r\n openDocumentListDialog,\r\n onDocumentSelected\r\n } = props;\r\n const classes = useStyles();\r\n\r\n\r\n\r\n const blobDocuments = documents.filter((x) => x.isFolder === false);\r\n\r\n const onDialogClose = () => {\r\n openCreateCourseDialog(false);\r\n };\r\n\r\n const onDocumentListDialogOpen = () => {\r\n openDocumentListDialog(true);\r\n };\r\n\r\n const handleInputChange = (e, inputfieldName) => {\r\n if (\r\n inputfieldName === inputFieldNames.LAST_HELD_DATE ||\r\n inputfieldName === inputFieldNames.NEXT_EVENT_DATE\r\n ) {\r\n onHandleInputChange(e, inputfieldName);\r\n } else {\r\n onHandleInputChange(e.target.value, inputfieldName);\r\n }\r\n };\r\n\r\n\r\n\r\n const handleDocumentSelected = (documentLink) => {\r\n const {document} = course;\r\n const updatedDocument = addDocumentToArray(document, documentLink);\r\n onDocumentSelected(updatedDocument);\r\n };\r\n\r\n const handleDocumentRemove = (documentToRemove) => {\r\n const {document} = course;\r\n const updatedDocument = removeDocumentFromArray(document, documentToRemove);\r\n onDocumentSelected(updatedDocument);\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {isSaving ? : ''}\r\n \r\n {title}\r\n \r\n
\r\n \r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.UNIT_DESCRIPTION)\r\n }\r\n value={course.unitDescription}\r\n required={true}\r\n />\r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.TRAINING_PROVIDER)\r\n }\r\n value={course.trainingProvider}\r\n />\r\n \r\n\r\n \r\n \r\n handleInputChange(e, inputFieldNames.COURSE_COST)\r\n }\r\n value={course.courseCost}\r\n />\r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.FREQUENCY_FOR_COURSE)\r\n }\r\n value={course.frequency || ''}\r\n />\r\n \r\n \r\n {/* EventType */}\r\n \r\n handleInputChange(e, inputFieldNames.COURSE_CATEGORY)\r\n }\r\n items={courseCategories.courseCategories}\r\n dropDownWidth=\"100%\"\r\n className={classes.dropDown}\r\n valueField=\"id\"\r\n displayField=\"value\"\r\n />\r\n \r\n \r\n handleInputChange(e, inputFieldNames.COURSE_NOTES)}\r\n value={course.notes}\r\n />\r\n \r\n {canEditDocuments ? (\r\n \r\n \r\n \r\n \r\n ) : (\r\n /* \r\n \r\n {course.document}\r\n \r\n */\r\n \r\n )}\r\n {canEditDocuments && (\r\n \r\n \r\n {'Browse'}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n Cancel\r\n \r\n \r\n {actionButtonText}\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default CreateEditCourseFormUi;\r\n","import React from 'react';\r\n\r\nimport CreateEditCourseFormUi from '../CreateEditCourseFormUi';\r\n\r\nconst CreateCourseDialog = (props) => {\r\n const {\r\n openDialog,\r\n course,\r\n documents,\r\n isSaving,\r\n branchId,\r\n openCreateCourseDialog,\r\n onHandleInputChange,\r\n submitCourse,\r\n loggedInUser,\r\n openDocumentListDialog,\r\n onDocumentSelected\r\n } = props;\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n course.branchId = branchId;\r\n submitCourse(course);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CreateCourseDialog;\r\n","// CreateCourseDialog/index.js\r\nimport { connect } from 'react-redux';\r\nimport CreateCourseDialog from '../../components/CreateCourseDialog';\r\n\r\nimport {\r\n openCreateCourseDialogDispatch,\r\n onHandleInputChange,\r\n submitCourseDispatch,\r\n openDocumentListDialogDispatch,\r\n onDocumentSelectedForCourseDispatch\r\n} from '../../actions';\r\nimport { submitMode } from '../../constants';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.course.newCourse.showCreateCourseDialog,\r\n course: state.course.newCourse.item,\r\n documents: state.settings.allDocuments.itemsCopy,\r\n isSaving: state.course.newCourse.isSaving,\r\n branchId: state.branch.branch.item && state.branch.branch.item.id,\r\n loggedInUser: state.users.user.item\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openCreateCourseDialog: (open) => {\r\n dispatch(openCreateCourseDialogDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputfieldName) => {\r\n dispatch(onHandleInputChange(value, inputfieldName));\r\n },\r\n submitCourse: (course) => {\r\n const mode = submitMode.CREATE;\r\n dispatch(submitCourseDispatch(course, mode));\r\n },\r\n openDocumentListDialog: (open) => {\r\n dispatch(openDocumentListDialogDispatch(open));\r\n },\r\n onDocumentSelected: (documentLink) => {\r\n dispatch(onDocumentSelectedForCourseDispatch(documentLink));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CreateCourseDialog);\r\n","import React from 'react';\r\nimport {\r\n KeyboardDatePicker,\r\n MuiPickersUtilsProvider,\r\n KeyboardTimePicker\r\n} from '@material-ui/pickers';\r\nimport { makeStyles } from '@material-ui/core';\r\nimport MomentUtils from '@date-io/moment';\r\n\r\nconst styles = makeStyles((theme) => {\r\n return {\r\n datePickerContainer: {\r\n // background: theme.palette.backgroundGray.default\r\n },\r\n root: {\r\n color: theme.palette.primary.main,\r\n marginBottom: theme.spacing(1)\r\n },\r\n input: {\r\n minWidth: 120,\r\n width: '100%',\r\n borderRadius: 5,\r\n\r\n '& input': {\r\n marginLeft: 10,\r\n marginBottom: theme.spacing(1)\r\n },\r\n '& label': {\r\n marginLeft: 10\r\n }\r\n }\r\n };\r\n});\r\n\r\nexport const DatePicker = (props) => {\r\n const classes = styles();\r\n const { handleDateChange, selectedDate, htmlId, title, required } = props;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport const TimePicker = (props) => {\r\n const classes = styles();\r\n const { handleDateChange, selectedDate, htmlId, title } = props;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default { DatePicker, TimePicker };\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Chip from '@material-ui/core/Chip';\r\nimport Paper from '@material-ui/core/Paper';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: 'flex',\r\n justifyContent: 'left',\r\n flexWrap: 'wrap',\r\n listStyle: 'none',\r\n padding: theme.spacing(0.5),\r\n margin: 0\r\n },\r\n chip: {\r\n margin: theme.spacing(0.5)\r\n }\r\n}));\r\n\r\nconst Attachments = (props) => {\r\n const classes = useStyles();\r\n const { allAttachments, onRemoveAttachment } = props;\r\n\r\n const handleDelete = (attachmentToDelete) => () => {\r\n onRemoveAttachment(attachmentToDelete);\r\n };\r\n\r\n if (!allAttachments) return;\r\n\r\n const checkedName = (data) => {\r\n return data.fileData === null ? data.name : data.fileData.name;\r\n };\r\n\r\n return (\r\n \r\n {allAttachments.map((data, index) => {\r\n return (\r\n
  • \r\n window.open(data.url)}\r\n />\r\n
  • \r\n );\r\n })}\r\n
    \r\n );\r\n};\r\n\r\nexport default Attachments;\r\n","import React from 'react';\r\nimport {\r\n TableCell,\r\n TextField,\r\n Button,\r\n Typography,\r\n Fab,\r\n Input,\r\n Grid\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport { DatePicker } from '../../DatePicker';\r\nimport { inputFieldNames } from '../../../constants';\r\nimport FancyDropDown from '../../FancyDropDown';\r\nimport { Attachment as AttachmentIcon } from '@material-ui/icons';\r\nimport Attachments from '../../Attachments';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n cancelButton: {\r\n marginLeft: 10,\r\n color: theme.palette.subTitle.main\r\n },\r\n addAttachmentFab: {\r\n margin: theme.spacing(1),\r\n marginLeft: 0\r\n },\r\n fab: {\r\n margin: theme.spacing(1)\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n width: 210,\r\n height: '36px !important',\r\n borderWidth: 1.3,\r\n flex: 1\r\n },\r\n extendedIcon: {\r\n marginRight: theme.spacing(1)\r\n }\r\n}));\r\n\r\nconst EditCourseRecord = (props) => {\r\n const classes = useStyles();\r\n const {\r\n record,\r\n handleEditCourseRecordInputChange,\r\n personnels,\r\n enableEditCourseRecord,\r\n handleSaveCourseRecordClick,\r\n handleRemoveAttachment,\r\n allAttachments\r\n } = props;\r\n\r\n const hiddenFileInput = React.createRef();\r\n\r\n const handleClick = (event) => {\r\n hiddenFileInput.current.children[0].click();\r\n };\r\n\r\n const onAttachmendAdded = (event) => {\r\n event.preventDefault();\r\n const file = event.target.files[0];\r\n const newObj = {\r\n newlyAdded: true,\r\n removed: false,\r\n fileData: file,\r\n name: file.name\r\n };\r\n handleEditCourseRecordInputChange(\r\n newObj,\r\n inputFieldNames.COURSE_RECORD_ATTACHMENT\r\n );\r\n hiddenFileInput.current.children[0].value = null;\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n handleEditCourseRecordInputChange(e, inputFieldNames.PERSONNEL_ID)\r\n }\r\n items={personnels}\r\n dropDownWidth=\"100%\"\r\n valueField=\"id\"\r\n displayField={['firstName', 'lastName']}\r\n required={true}\r\n />\r\n \r\n \r\n \r\n handleEditCourseRecordInputChange(date, inputFieldNames.RECORD_DATE)\r\n }\r\n selectedDate={record.recordDate}\r\n required={true}\r\n />\r\n \r\n \r\n \r\n \r\n handleEditCourseRecordInputChange(e, inputFieldNames.RECORD_NOTES)\r\n }\r\n value={record.notes}\r\n fullWidth={false}\r\n />\r\n \r\n\r\n \r\n \r\n {/***************** Attachment ******************/}\r\n \r\n Attachments\r\n \r\n \r\n \r\n \r\n Add attachment\r\n \r\n \r\n \r\n {allAttachments && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Save\r\n \r\n enableEditCourseRecord(false, record.id)}\r\n className={classes.cancelButton}\r\n id=\"cancelButton\"\r\n >\r\n Cancel\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default EditCourseRecord;\r\n","const getPersonnelNameById = (personnels, personnelId) => {\r\n const selectedPersonnel = personnels.filter((p) => p.id === personnelId)[0];\r\n return selectedPersonnel && selectedPersonnel.name;\r\n};\r\n\r\nexport default getPersonnelNameById;\r\n","import React from 'react';\r\nimport { TableCell, IconButton } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Delete as DeleteIcon, Edit as EditIcon } from '@material-ui/icons';\r\n\r\nimport getPersonnelNameById from '../../../mappers/getPersonnelNameById';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n deleteIcon: {\r\n color: theme.palette.danger.minor\r\n },\r\n cancelButton: {\r\n marginLeft: 10,\r\n color: theme.palette.subTitle.main\r\n }\r\n}));\r\n\r\nconst SingleCourseRecord = (props) => {\r\n const classes = useStyles();\r\n const {\r\n record,\r\n userId,\r\n personnels,\r\n handleDeleteCourseRecordClick,\r\n enableEditCourseRecord\r\n } = props;\r\n const personnelName = getPersonnelNameById(personnels, record.personnelId);\r\n const isValidExpiry =\r\n record.nextCourseDate != record.recordDate &&\r\n moment(record.nextCourseDate).isAfter(moment.utc('0001-01-01'));\r\n\r\n return (\r\n \r\n \r\n {personnelName}\r\n \r\n \r\n {moment(record.recordDate).format('DD MMM YYYY')}\r\n \r\n \r\n {isValidExpiry\r\n ? moment(record.nextCourseDate).format('DD MMM YYYY')\r\n : 'none'}\r\n \r\n \r\n {record.notes}\r\n \r\n \r\n enableEditCourseRecord(true, record.id, userId)}\r\n >\r\n \r\n \r\n handleDeleteCourseRecordClick(record.id)}\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SingleCourseRecord;\r\n","import React from 'react';\r\nimport {\r\n Paper,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableContainer,\r\n TableHead,\r\n TableRow\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport EditCourseRecord from '../EditCourseRecord';\r\nimport SingleCourseRecord from '../SingleCourseRecord';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n recordsListContainer: {\r\n padding: theme.spacing(2),\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n },\r\n table: {\r\n minWidth: 650\r\n },\r\n boldText: {\r\n fontWeight: 800\r\n },\r\n deleteIcon: {\r\n color: theme.palette.danger.minor\r\n },\r\n cancelButton: {\r\n marginLeft: 10,\r\n color: theme.palette.subTitle.main\r\n }\r\n}));\r\n\r\nconst RecordsList = (props) => {\r\n const classes = useStyles();\r\n const {\r\n records,\r\n handleDeleteCourseRecordClick,\r\n userId,\r\n personnels,\r\n enableEditCourseRecord,\r\n isEditRecordEnabled,\r\n recordBeingEdited,\r\n handleEditCourseRecordInputChange,\r\n handleSaveCourseRecordClick,\r\n fetchAllPersonnels,\r\n branchId,\r\n handleRemoveAttachment,\r\n allAttachments\r\n } = props;\r\n\r\n React.useEffect(() => {\r\n if (personnels.length === 0) {\r\n fetchAllPersonnels(branchId);\r\n }\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Personnel\r\n Date\r\n Expires\r\n Notes\r\n \r\n \r\n \r\n \r\n {records.map((record) => {\r\n const isEditMode =\r\n isEditRecordEnabled && record.id === recordBeingEdited.id;\r\n\r\n return (\r\n \r\n {isEditMode ? (\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\nexport default RecordsList;\r\n","import moment from 'moment';\r\n\r\nconst calculateNextEventDate = (recordDate, frequencyInDays) => {\r\n const value = moment(new Date(recordDate), 'YYYY-MM-DD').add(\r\n 'months',\r\n frequencyInDays\r\n );\r\n return value;\r\n};\r\n\r\nexport default calculateNextEventDate;\r\n","import React from 'react';\r\nimport { TextField, Grid, Typography, Fab, Input } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport { DatePicker } from '../../DatePicker';\r\nimport { inputFieldNames } from '../../../constants';\r\nimport FancyDropDown from '../../FancyDropDown';\r\nimport { Attachment as AttachmentIcon } from '@material-ui/icons';\r\nimport Attachments from '../../Attachments';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n header: {\r\n paddingBottom: theme.spacing(1)\r\n },\r\n formContainer: {\r\n paddingBottom: theme.spacing(2)\r\n },\r\n dropDown: {\r\n marginTop: 8\r\n },\r\n cancelButton: {\r\n color: '#666666'\r\n },\r\n addAttachmentFab: {\r\n margin: theme.spacing(1),\r\n marginLeft: 0\r\n },\r\n fab: {\r\n margin: theme.spacing(1)\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n width: 210,\r\n height: '36px !important',\r\n borderWidth: 1.3,\r\n flex: 1\r\n },\r\n extendedIcon: {\r\n marginRight: theme.spacing(1)\r\n }\r\n}));\r\n\r\nconst AddRecord = (props) => {\r\n const classes = useStyles();\r\n const {\r\n record,\r\n handleInputChange,\r\n personnels,\r\n fetchAllPersonnels,\r\n branchId,\r\n hideTitle,\r\n freezePersonnelList,\r\n showTrainingDropDown,\r\n courses,\r\n fetchAllCoursesForBranch,\r\n handleRemoveAttachment,\r\n allAttachments\r\n } = props;\r\n\r\n const hiddenFileInput = React.createRef();\r\n\r\n React.useEffect(() => {\r\n if (personnels.length === 0) {\r\n fetchAllPersonnels(branchId);\r\n }\r\n\r\n //Fetch all courses for the branch, if they are already not loaded.\r\n //Means showing inside the dialog, and no courses to show\r\n if (courses.length === 0) {\r\n if (branchId) {\r\n fetchAllCoursesForBranch(branchId);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const handleClick = (event) => {\r\n hiddenFileInput.current.children[0].click();\r\n };\r\n\r\n const onAttachmendAdded = (event) => {\r\n event.preventDefault();\r\n const file = event.target.files[0];\r\n const newObj = {\r\n newlyAdded: true,\r\n removed: false,\r\n fileData: file,\r\n name: file.name\r\n };\r\n handleInputChange(newObj, inputFieldNames.COURSE_RECORD_ATTACHMENT);\r\n hiddenFileInput.current.children[0].value = null;\r\n };\r\n\r\n return (\r\n \r\n {!hideTitle ? (\r\n \r\n Add Record\r\n \r\n ) : null}\r\n \r\n \r\n \r\n handleInputChange(date, inputFieldNames.RECORD_DATE)\r\n }\r\n selectedDate={record.recordDate}\r\n required={true}\r\n />\r\n \r\n \r\n
    \r\n \r\n handleInputChange(e, inputFieldNames.PERSONNEL_ID)\r\n }\r\n items={personnels}\r\n dropDownWidth=\"100%\"\r\n valueField=\"id\"\r\n displayField={['firstName', 'lastName']}\r\n required={true}\r\n disabled={freezePersonnelList}\r\n />\r\n
    \r\n
    \r\n {showTrainingDropDown ? (\r\n \r\n
    \r\n \r\n handleInputChange(e, inputFieldNames.COURSE)\r\n }\r\n items={courses}\r\n dropDownWidth=\"100%\"\r\n valueField=\"id\"\r\n displayField={'unitDescription'}\r\n required={true}\r\n />\r\n
    \r\n
    \r\n ) : null}\r\n \r\n \r\n handleInputChange(e, inputFieldNames.RECORD_NOTES)}\r\n value={record.notes}\r\n />\r\n \r\n
    \r\n\r\n {/***************** Attachment ******************/}\r\n \r\n Attachments\r\n \r\n \r\n \r\n \r\n Add attachment\r\n \r\n \r\n \r\n {allAttachments && (\r\n \r\n \r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default AddRecord;\r\n","import React from 'react';\r\nimport {\r\n DialogTitle,\r\n DialogContent,\r\n DialogActions,\r\n LinearProgress,\r\n Button\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { useParams } from 'react-router-dom';\r\nimport { Add as AddIcon } from '@material-ui/icons';\r\n\r\nimport Dialog from '../Dialog';\r\nimport AddRecord from '../EditCoursePanel/AddRecord';\r\nimport { inputFieldNames } from '../../constants';\r\nimport calculateNextEventDate from '../../mappers/calculateNextEventDate';\r\nimport { submitMode } from '../../constants';\r\nimport { addCourseRecordDialogOpenSource } from '../../constants';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n dialog: {},\r\n dialogTitle: {\r\n background: '#f0f0f0'\r\n },\r\n dialogContent: {\r\n width: 580,\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(3)\r\n },\r\n actionButton: {\r\n width: 180,\r\n float: 'right',\r\n margin: theme.spacing(2)\r\n },\r\n footer: {\r\n background: '#f0f0f0'\r\n }\r\n}));\r\n\r\nconst AddCourseRecordDialog = (props) => {\r\n const {\r\n openDialog,\r\n onOpenAddCourseRecordDialog,\r\n isSaving,\r\n record,\r\n onHandleInputChange,\r\n course,\r\n submitRecord,\r\n fetchAllPersonnels,\r\n personnels,\r\n courses,\r\n dialogOpenRequestSource,\r\n allAttachments,\r\n onRemoveAttachment,\r\n branchId\r\n } = props;\r\n\r\n const classes = useStyles();\r\n //let { branchId } = useParams();\r\n\r\n React.useEffect(() => {\r\n if (!personnels.length && openDialog === true) {\r\n fetchAllPersonnels(branchId);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [openDialog]); \r\n\r\n const onDialogClose = () => {\r\n onOpenAddCourseRecordDialog(false);\r\n };\r\n\r\n const handleInputChange = (e, inputfieldName) => {\r\n if (\r\n inputfieldName === inputFieldNames.RECORD_DATE ||\r\n inputfieldName === inputFieldNames.COURSE_RECORD_ATTACHMENT\r\n ) {\r\n onHandleInputChange(e, inputfieldName);\r\n } else {\r\n onHandleInputChange(e.target.value, inputfieldName);\r\n }\r\n };\r\n\r\n const handleSubmitRecord = (e) => {\r\n e.preventDefault();\r\n\r\n const payload = {\r\n courseId: course.id,\r\n ...record,\r\n nextCourseDate: calculateNextEventDate(\r\n record.recordDate,\r\n course.frequency\r\n )\r\n };\r\n const source = 'dialog';\r\n submitRecord(payload, submitMode.CREATE, source, branchId);\r\n };\r\n\r\n const handleRemoveAttachment = (attachment) => {\r\n onRemoveAttachment(attachment);\r\n };\r\n\r\n return (\r\n \r\n \r\n {isSaving ? : ''}\r\n \r\n Add Record\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n Cancel\r\n \r\n }\r\n >\r\n Add\r\n \r\n \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default AddCourseRecordDialog;\r\n","// AddCourseRecordDialog/index.js\r\nimport { connect } from 'react-redux';\r\nimport AddCourseRecordDialog from '../../components/AddCourseRecordDialog';\r\n\r\nimport {\r\n openAddCourseRecordDialogDispatch,\r\n onHandleInputChange,\r\n submitCourseRecordDispatch,\r\n fetchAllPersonnelsDispatch,\r\n fetchAllCoursesForBranchDispatch,\r\n removeCourseRecordAttachment\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n branchId: state.branch.branch.item && state.branch.branch.item.id,\r\n course: state.course.newCourse.item,\r\n openDialog: state.course.newRecord.openAddCourseRecordDialog,\r\n isSaving: state.course.newRecord.isSaving,\r\n errorMessage: state.course.newRecord.errorMessage,\r\n personnelId: state.course.newRecord.item.personnelId,\r\n personnels: state.personnels.allPersonnels.items,\r\n record: state.course.newRecord.item,\r\n courses: state.courses.coursesByBranch.items,\r\n dialogOpenRequestSource: state.course.newRecord.dialogOpenRequestSource,\r\n allAttachments: state.course.newRecord.item.attachmentFiles\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n onOpenAddCourseRecordDialog: (open, personnelId) => {\r\n dispatch(openAddCourseRecordDialogDispatch(open, personnelId));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(onHandleInputChange(value, inputFieldName));\r\n },\r\n submitRecord: (payload, mode, source, branchId) => {\r\n dispatch(submitCourseRecordDispatch(payload, mode, source, branchId));\r\n },\r\n fetchAllPersonnels: (branchId) => {\r\n dispatch(fetchAllPersonnelsDispatch(branchId));\r\n },\r\n fetchAllCoursesForBranch: (branchId) => {\r\n dispatch(fetchAllCoursesForBranchDispatch(branchId));\r\n },\r\n onRemoveAttachment: (attachment) => {\r\n dispatch(removeCourseRecordAttachment(attachment));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(AddCourseRecordDialog);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { ArrowBack as ArrowBackIcon } from '@material-ui/icons';\r\nimport { IconButton, Typography, Button } from '@material-ui/core';\r\nimport { useParams } from 'react-router-dom';\r\n\r\nimport { inputFieldNames } from '../../constants';\r\n// import AddRecord from './AddRecord';\r\nimport RecordsList from './RecordsList';\r\nimport calculateNextEventDate from '../../mappers/calculateNextEventDate';\r\nimport { submitMode } from '../../constants';\r\nimport AddCourseRecordDialog from '../../containers/AddCourseRecordDialog';\r\nimport { addCourseRecordDialogOpenSource } from '../../constants';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n simpleLabel: {\r\n display: 'inline-block',\r\n marginTop: 2\r\n },\r\n editEventFieldsContainer: {\r\n padding: theme.spacing(2)\r\n },\r\n backArrow: {\r\n marginLeft: -16\r\n },\r\n courseName: {\r\n fontWeight: 600\r\n },\r\n addRecordButton: {\r\n marginTop: 8\r\n }\r\n}));\r\n\r\nconst EditCoursePanel = (props) => {\r\n const {\r\n course,\r\n records,\r\n userId,\r\n openEditCoursePanel,\r\n fetchRecordsForTheCourse,\r\n onHandleDeleteCourseRecordClick,\r\n submitRecord,\r\n personnels,\r\n fetchAllPersonnels,\r\n enableEditCourseRecord,\r\n isEditRecordEnabled,\r\n recordBeingEdited,\r\n onHandleEditRecordInputChange,\r\n openAddCourseRecordDialog,\r\n onOpenAddCourseRecordDialog,\r\n onRemoveAttachment,\r\n allAttachments\r\n } = props;\r\n const classes = useStyles();\r\n let { branchId } = useParams();\r\n\r\n React.useEffect(\r\n () => {\r\n fetchRecordsForTheCourse(course.id);\r\n },\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [course.id]\r\n );\r\n\r\n const handleEditCourseRecordInputChange = (e, inputfieldName) => {\r\n if (\r\n inputfieldName === inputFieldNames.RECORD_DATE ||\r\n inputfieldName === inputFieldNames.COURSE_RECORD_ATTACHMENT\r\n ) {\r\n onHandleEditRecordInputChange(e, inputfieldName);\r\n } else {\r\n onHandleEditRecordInputChange(e.target.value, inputfieldName);\r\n }\r\n };\r\n\r\n const handleDeleteCourseRecordClick = (recordId) => {\r\n const payload = {\r\n courseId: course.id,\r\n recordId\r\n };\r\n //\r\n onHandleDeleteCourseRecordClick(payload);\r\n };\r\n\r\n const handleRemoveAttachment = (attachment) => {\r\n onRemoveAttachment(attachment);\r\n };\r\n\r\n const handleSaveCourseRecordClick = (e) => {\r\n e.preventDefault();\r\n const payload = {\r\n courseId: course.id,\r\n ...recordBeingEdited,\r\n nextCourseDate: calculateNextEventDate(\r\n recordBeingEdited.recordDate,\r\n course.frequency\r\n )\r\n };\r\n\r\n submitRecord(payload, submitMode.UPDATE, branchId);\r\n };\r\n\r\n return (\r\n \r\n {openAddCourseRecordDialog ? : null}\r\n\r\n
    \r\n openEditCoursePanel(false)}\r\n id=\"settings-button\"\r\n className={classes.backArrow}\r\n >\r\n \r\n \r\n Training\r\n
    \r\n\r\n
    \r\n \r\n {course.unitDescription}\r\n \r\n
    \r\n \r\n onOpenAddCourseRecordDialog(\r\n true,\r\n null,\r\n addCourseRecordDialogOpenSource.FROM_ADD_EDIT_COURSE_RECORD_PANEL\r\n )\r\n }\r\n >\r\n Add Record\r\n \r\n\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default EditCoursePanel;\r\n","// EditCoursePanel/index.js\r\nimport { connect } from 'react-redux';\r\n\r\nimport { domainType } from '../../constants';\r\n\r\nimport EditCoursePanel from '../../components/EditCoursePanel';\r\nimport {\r\n openEditCoursePanelDispatch,\r\n onHandleInputChange,\r\n submitCourseDispatch,\r\n fetchRecordsForTheCourseDispatch,\r\n handleDeleteCourseRecordClickDispatch,\r\n submitCourseRecordDispatch,\r\n fetchAllPersonnelsDispatch,\r\n enableEditCourseRecord,\r\n handleEditRecordInputChangeDispatch,\r\n openAddCourseRecordDialogDispatch,\r\n removeCourseRecordAttachmentEdit,\r\n fetchExistingAttachmentsForTheCourseRecordDispatch\r\n} from '../../actions';\r\nimport { submitMode } from '../../constants';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n course: state.course.newCourse.item,\r\n records: state.course.recordsForTheCourse.items,\r\n record: state.course.newRecord.item,\r\n personnels: state.personnels.allPersonnels.items,\r\n userId: state.users.user.item.id,\r\n isEditRecordEnabled: state.course.editRecord.enable,\r\n recordBeingEdited: state.course.editRecord.item,\r\n openAddCourseRecordDialog: state.course.newRecord.openAddCourseRecordDialog,\r\n allAttachments: state.course.editRecord.item.attachmentFiles,\r\n branchId: state.branch.branch.item && state.branch.branch.item.id\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openEditCoursePanel: (open) => {\r\n dispatch(openEditCoursePanelDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(onHandleInputChange(value, inputFieldName));\r\n },\r\n submitCourse: (course) => {\r\n const mode = submitMode.UPDATE;\r\n dispatch(submitCourseDispatch(course, mode));\r\n },\r\n fetchRecordsForTheCourse: (courseId) => {\r\n dispatch(fetchRecordsForTheCourseDispatch(courseId));\r\n },\r\n onHandleDeleteCourseRecordClick: (payload) => {\r\n dispatch(handleDeleteCourseRecordClickDispatch(payload));\r\n },\r\n submitRecord: (payload, mode, branchId) => {\r\n dispatch(submitCourseRecordDispatch(payload, mode, 'edit', branchId));\r\n },\r\n fetchAllPersonnels: (branchId) => {\r\n dispatch(fetchAllPersonnelsDispatch(branchId));\r\n },\r\n enableEditCourseRecord: (\r\n enableEditRecordMode,\r\n recordId,\r\n loggedInUserId\r\n ) => {\r\n dispatch(enableEditCourseRecord(enableEditRecordMode, recordId));\r\n dispatch(\r\n fetchExistingAttachmentsForTheCourseRecordDispatch(\r\n domainType.COURSE_RECORD,\r\n recordId,\r\n loggedInUserId\r\n )\r\n );\r\n },\r\n onHandleEditRecordInputChange: (value, inputFieldName) => {\r\n dispatch(handleEditRecordInputChangeDispatch(value, inputFieldName));\r\n },\r\n onOpenAddCourseRecordDialog: (open, personnelId, source) => {\r\n dispatch(openAddCourseRecordDialogDispatch(open, personnelId, source));\r\n },\r\n onRemoveAttachment: (attachment) => {\r\n dispatch(removeCourseRecordAttachmentEdit(attachment));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EditCoursePanel);\r\n","import React from 'react';\r\n\r\nimport CreateEditCourseFormUi from '../CreateEditCourseFormUi';\r\n\r\nconst EditCourseDialog = (props) => {\r\n const {\r\n course,\r\n documents,\r\n openDialog,\r\n isSaving,\r\n onHandleInputChange,\r\n openCreateCourseDialog,\r\n submitCourse,\r\n loggedInUser,\r\n openDocumentListDialog,\r\n onDocumentSelected\r\n } = props;\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n submitCourse(course);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default EditCourseDialog;\r\n","// EditCourseDialog/index.js\r\nimport { connect } from 'react-redux';\r\nimport EditCourseDialog from '../../components/EditCourseDialog';\r\n\r\nimport {\r\n openEditCourseDialogDispatch,\r\n onHandleInputChange,\r\n submitCourseDispatch,\r\n openDocumentListDialogDispatch,\r\n onDocumentSelectedForCourseDispatch\r\n} from '../../actions';\r\nimport { submitMode } from '../../constants';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.course.newCourse.showEditCourseDialog,\r\n course: state.course.newCourse.item,\r\n documents: state.settings.allDocuments.itemsCopy,\r\n isSaving: state.course.newCourse.isSaving,\r\n branchId: state.branch.branch.item && state.branch.branch.item.id,\r\n loggedInUser: state.users.user.item\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openCreateCourseDialog: (open) => {\r\n dispatch(openEditCourseDialogDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(onHandleInputChange(value, inputFieldName));\r\n },\r\n submitCourse: (course) => {\r\n const mode = submitMode.UPDATE;\r\n dispatch(submitCourseDispatch(course, mode));\r\n },\r\n openDocumentListDialog: (open) => {\r\n dispatch(openDocumentListDialogDispatch(open));\r\n },\r\n onDocumentSelected: (documentLink) => {\r\n dispatch(onDocumentSelectedForCourseDispatch(documentLink));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EditCourseDialog);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GenericViewPanel from './../GenericViewPanel';\r\nimport CoursesList from '../../containers/CoursesList';\r\nimport ButtonSearchBoxActionBar from '../ButtonSearchBoxActionBar';\r\nimport CreateCourseDialog from '../../containers/CreateCourseDialog';\r\nimport EditCoursePanel from '../../containers/EditCoursePanel';\r\nimport EditCourseDialog from '../../containers/EditCourseDialog';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n actionBar: {\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n }\r\n}));\r\n\r\nconst CoursesPanel = (props) => {\r\n const {\r\n openPanel,\r\n searchTerm,\r\n handleSearchTermChange,\r\n openCreateCourseDialog,\r\n openDialog\r\n } = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n\r\n {openDialog ? : null}\r\n\r\n {openPanel ? (\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\nexport default CoursesPanel;\r\n","// CoursesPanel/index.js\r\nimport { connect } from 'react-redux';\r\nimport CoursesPanel from '../../components/CoursesPanel';\r\n\r\nimport {\r\n searchTermChangeForAllCoursesDispatch,\r\n openCreateCourseDialogDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.course.newCourse.showEditCourseDialog,\r\n openPanel: state.course.newCourse.showEditCoursePanel,\r\n searchTerm: state.courses.coursesByBranch.searchTerm\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n handleSearchTermChange: (searchTerm) => {\r\n dispatch(searchTermChangeForAllCoursesDispatch(searchTerm));\r\n },\r\n openCreateCourseDialog: (open) => {\r\n dispatch(openCreateCourseDialogDispatch(open));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CoursesPanel);\r\n","import React from 'react';\r\nimport {\r\n DialogTitle,\r\n Button,\r\n DialogActions,\r\n DialogContent,\r\n TextField,\r\n Grid,\r\n LinearProgress\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport Dialog from '../Dialog';\r\nimport { inputFieldNames } from '../../constants';\r\n\r\nimport { DatePicker } from '../DatePicker';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n dialog: {},\r\n dialogTitle: {\r\n background: '#f0f0f0'\r\n },\r\n dialogContent: {\r\n width: 580,\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(3)\r\n },\r\n actionButton: {\r\n width: 180,\r\n float: 'right',\r\n margin: theme.spacing(2)\r\n },\r\n footer: {\r\n background: '#f0f0f0'\r\n },\r\n multilineTextBox: {\r\n marginTop: 20\r\n },\r\n picker: {\r\n margin: 0,\r\n padding: 0\r\n },\r\n validationFail: {\r\n color: 'red'\r\n }\r\n}));\r\n\r\nconst CreateEditPersonnelFormUI = (props) => {\r\n const classes = useStyles();\r\n const {\r\n openDialog,\r\n openCreatePersonnelDialog,\r\n onHandleInputChange,\r\n personnel,\r\n isSaving,\r\n handleSubmit,\r\n title,\r\n actionButtonText = 'Add',\r\n validationState,\r\n isShort\r\n } = props;\r\n\r\n const onDialogClose = () => {\r\n openCreatePersonnelDialog(false);\r\n };\r\n\r\n const showAllField = isShort === false || typeof isShort === 'undefined';\r\n\r\n const handleInputChange = (e, inputfieldName) => {\r\n if (e) {\r\n if (\r\n inputfieldName === inputFieldNames.ASSIGNEE ||\r\n inputfieldName === inputFieldNames.REQUESTOR\r\n ) {\r\n onHandleInputChange(e.target.checked, inputfieldName);\r\n } else if (\r\n inputfieldName === inputFieldNames.START_DATE_UTC ||\r\n inputfieldName === inputFieldNames.REG_DATE_UTC\r\n ) {\r\n onHandleInputChange(e && e.format('YYYY-MM-DD'), inputfieldName);\r\n } else {\r\n onHandleInputChange(e.target.value, inputfieldName);\r\n }\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n {isSaving ? : ''}\r\n \r\n {title}\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.FIRST_NAME)\r\n }\r\n value={personnel.firstName}\r\n fullWidth\r\n />\r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.LAST_NAME)\r\n }\r\n value={personnel.lastName}\r\n fullWidth\r\n />\r\n \r\n\r\n {validationState === false ? (\r\n \r\n Duplicate name\r\n \r\n ) : (\r\n ''\r\n )}\r\n \r\n { showAllField ? \r\n
    \r\n \r\n \r\n handleInputChange(date, inputFieldNames.START_DATE_UTC)\r\n }\r\n selectedDate={personnel.startDateUTC}\r\n />\r\n \r\n \r\n handleInputChange(e, inputFieldNames.NOTES)}\r\n value={personnel.notes}\r\n />\r\n
    : null\r\n \r\n }\r\n \r\n
    \r\n
    \r\n \r\n \r\n Cancel\r\n \r\n \r\n {actionButtonText}\r\n \r\n \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default CreateEditPersonnelFormUI;\r\n","import React from 'react';\r\n\r\nimport CreateEditPersonnelFormUI from '../CreateEditPersonnelFormUI';\r\n\r\nconst EditPersonnelDialog = (props) => {\r\n const {\r\n openDialog,\r\n openCreatePersonnelDialog,\r\n onHandleInputChange,\r\n personnel,\r\n submitPersonnel,\r\n isSaving,\r\n branches,\r\n sites\r\n } = props;\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n const payload = {\r\n ...personnel,\r\n personnelTypeId: personnel.personnelType\r\n };\r\n submitPersonnel(payload);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default EditPersonnelDialog;\r\n","// EditPersonnelDialog/index.js\r\nimport { connect } from 'react-redux';\r\n\r\nimport EditPersonnelDialog from '../../components/EditPersonnelDialog';\r\nimport {\r\n openEditPersonnelDialogDispatch,\r\n handlePersonnelInputChangeDispatch,\r\n submitPersonnelDispatch\r\n} from '../../actions';\r\nimport { submitMode } from '../../constants';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.personnel.newPersonnel.showEditPersonnelDialog,\r\n personnel: state.personnel.newPersonnel.item,\r\n isSaving: state.personnel.newPersonnel.isSaving,\r\n branches: state.branches.allBranches && state.branches.allBranches.items,\r\n sites: state.personnels.sites.items\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openCreatePersonnelDialog: (open) => {\r\n dispatch(openEditPersonnelDialogDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(handlePersonnelInputChangeDispatch(value, inputFieldName));\r\n },\r\n submitPersonnel: (personnel) => {\r\n const mode = submitMode.UPDATE;\r\n dispatch(submitPersonnelDispatch(personnel, mode));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(EditPersonnelDialog);\r\n","import React from 'react';\r\nimport {\r\n DialogTitle,\r\n DialogContent,\r\n LinearProgress,\r\n Typography,\r\n List,\r\n Button\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Close as CloseIcon } from '@material-ui/icons';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport { Add as AddIcon } from '@material-ui/icons';\r\nimport moment from 'moment';\r\n\r\nimport Dialog from '../Dialog';\r\nimport AddCourseRecordDialog from '../../containers/AddCourseRecordDialog';\r\nimport { addCourseRecordDialogOpenSource } from '../../constants';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n dialog: {},\r\n dialogTitle: {\r\n background: '#f0f0f0'\r\n },\r\n dialogContent: {\r\n width: 580,\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(3)\r\n },\r\n actionButton: {\r\n width: 180,\r\n float: 'right',\r\n margin: theme.spacing(2)\r\n },\r\n footer: {\r\n background: '#f0f0f0'\r\n },\r\n multilineTextBox: {\r\n marginTop: 20\r\n },\r\n floatRight: {\r\n float: 'right'\r\n },\r\n addIcon: {\r\n marginTop: 6\r\n },\r\n singleCourseContainer: {\r\n padding: theme.spacing(1)\r\n },\r\n courseName: {\r\n fontSize: 18,\r\n fontWeight: 800,\r\n paddingTop: theme.spacing(1),\r\n paddingRight: theme.spacing(3),\r\n display: 'inline'\r\n },\r\n expiry: {\r\n paddingTop: theme.spacing(1),\r\n display: 'inline'\r\n },\r\n expired: {\r\n paddingTop: theme.spacing(1),\r\n color: theme.palette.danger.main,\r\n display: 'inline'\r\n }\r\n}));\r\n\r\nconst SingleCourse = (props) => {\r\n const { course } = props;\r\n const classes = useStyles();\r\n const isValidExpiry = moment(course.nextCourseDate).isAfter(\r\n moment.utc('0001-01-01')\r\n );\r\n const isExpired = moment().isAfter(course.nextCourseDate) && isValidExpiry;\r\n\r\n return (\r\n
    \r\n \r\n {course.unitDescription}\r\n \r\n \r\n {`${isExpired ? 'Expired' : 'Expiry date'} - ${\r\n isValidExpiry\r\n ? course && moment(course.nextCourseDate).format('DD/MM/YYYY')\r\n : 'none'\r\n }`}\r\n \r\n
    \r\n );\r\n};\r\n\r\nconst CoursesForPersonnelDialog = (props) => {\r\n const {\r\n openDialog,\r\n personnel,\r\n onOpenCoursesForPersonnelDialog,\r\n getCoursesForPersonnel,\r\n courses,\r\n isLoading,\r\n onOpenAddCourseRecordDialog,\r\n openAddCourseRecordDialog\r\n } = props;\r\n const classes = useStyles();\r\n\r\n React.useEffect(\r\n () => {\r\n if (personnel) {\r\n getCoursesForPersonnel(personnel.id);\r\n }\r\n },\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [personnel]\r\n );\r\n\r\n const onDialogClose = () => {\r\n onOpenCoursesForPersonnelDialog(false);\r\n };\r\n\r\n const handleAddTrainingRecordClick = (personnel) => {\r\n var source =\r\n addCourseRecordDialogOpenSource.FROM_COURSES_FOR_PERSONNEL_DIALOG;\r\n\r\n onOpenAddCourseRecordDialog(true, personnel.id, source);\r\n };\r\n\r\n //Sorting courses\r\n courses.sort((a, b) => {\r\n return new Date(b.nextCourseDate) - new Date(a.nextCourseDate);\r\n });\r\n\r\n return (\r\n \r\n {openAddCourseRecordDialog ? : null}\r\n\r\n \r\n {isLoading ? : ''}\r\n \r\n {personnel && `${personnel.firstName} ${personnel.lastName}`}\r\n\r\n \r\n \r\n \r\n }\r\n className={`${classes.floatRight} ${classes.addIcon}`}\r\n onClick={() => handleAddTrainingRecordClick({ ...personnel })}\r\n >\r\n Add\r\n \r\n \r\n \r\n \r\n {courses &&\r\n courses.map((course) => {\r\n return ;\r\n })}\r\n {' '}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CoursesForPersonnelDialog;\r\n","// CoursesForPersonnelDialog/index.js\r\nimport { connect } from 'react-redux';\r\nimport CoursesForPersonnelDialog from '../../components/CoursesForPersonnelDialog';\r\n\r\nimport {\r\n openCoursesForPersonnelDialog,\r\n getCoursesForPersonnelDispatch,\r\n openAddCourseRecordDialogDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n const coursesForPersonnel = state.personnel.coursesForPersonnel;\r\n\r\n return {\r\n openDialog: coursesForPersonnel.dialogOpen,\r\n personnel: coursesForPersonnel.selectedPersonnel,\r\n courses: coursesForPersonnel.items,\r\n isLoading: coursesForPersonnel.isLoading,\r\n openAddCourseRecordDialog: state.course.newRecord.openAddCourseRecordDialog\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n onOpenCoursesForPersonnelDialog: (open, personnel) => {\r\n dispatch(openCoursesForPersonnelDialog(open, personnel));\r\n },\r\n getCoursesForPersonnel: (personnelId) => {\r\n dispatch(getCoursesForPersonnelDispatch(personnelId));\r\n },\r\n onOpenAddCourseRecordDialog: (open, personnelId, source) => {\r\n dispatch(openAddCourseRecordDialogDispatch(open, personnelId, source));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(CoursesForPersonnelDialog);\r\n","import React from 'react';\r\nimport { personnelStatus } from '../../constants';\r\nimport DualActionDialog from '../DualActionDialog';\r\n\r\nconst DeletePersonnelDialog = (props) => {\r\n const { personnel, open, showDialog, errorMessage, isUpdating } = props;\r\n\r\n const handleConfirmAction = async (event) => {\r\n event.preventDefault();\r\n const { onConfirmPersonnelDelete, personnel } = props;\r\n const payload = {\r\n ...personnel,\r\n statusId: personnelStatus.DELETE,\r\n personnelTypeId: personnel.personnelType\r\n };\r\n onConfirmPersonnelDelete(payload);\r\n };\r\n\r\n return (\r\n showDialog(false, personnel)}\r\n handleSubmit={handleConfirmAction}\r\n showProgressBar={isUpdating}\r\n errorMessage={errorMessage}\r\n isDanger={true}\r\n />\r\n );\r\n};\r\n\r\nexport default DeletePersonnelDialog;\r\n","import { connect } from 'react-redux';\r\nimport DeletePersonnelDialog from '../../components/DeletePersonnedDialog';\r\nimport { submitMode } from '../../constants';\r\n\r\nimport {\r\n openDeletePersonnelDialogDispatch,\r\n submitPersonnelDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n personnel: state.personnel.newPersonnel.item,\r\n open: state.personnel.newPersonnel.showDeletePersonnelDialog,\r\n isUpdating: state.personnel.newPersonnel.isSaving,\r\n errorMessage: state.personnel.newPersonnel.errorMessage\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n showDialog: (open, personnel) => {\r\n dispatch(openDeletePersonnelDialogDispatch(open));\r\n },\r\n onConfirmPersonnelDelete: (personnel) => {\r\n const mode = submitMode.UPDATE;\r\n dispatch(submitPersonnelDispatch(personnel, mode));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(DeletePersonnelDialog);\r\n","const sortByPropertyName = (list, propertyName) => {\r\n return (\r\n list && list.sort((a, b) => a[propertyName].localeCompare(b[propertyName]))\r\n );\r\n};\r\n\r\nexport default sortByPropertyName;\r\n","// CompaniesList/index.js\r\nimport React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Paper, Grid, Typography, Button } from '@material-ui/core';\r\nimport {\r\n LibraryBooks as LibraryBooksIcon,\r\n DeleteOutline as DeleteOutlineIcon,\r\n Edit as EditIcon\r\n} from '@material-ui/icons';\r\n\r\nimport EditPersonnelDialog from '../../containers/EditPersonnelDialog';\r\nimport CoursesForPersonnelDialog from '../../containers/CoursesForPersonnelDialog';\r\nimport DeletePersonnedDialog from '../../containers/DeletePersonnelDialog';\r\nimport SortByPropertyName from '../../mappers/sortByPropertyName';\r\n\r\nimport FancyDropDown from '../FancyDropDown';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n padding: theme.spacing(2),\r\n paddingLeft: theme.spacing(3),\r\n marginBottom: theme.spacing(1)\r\n },\r\n personnelName: {\r\n fontSize: 18,\r\n fontWeight: 'normal',\r\n paddingTop: theme.spacing(1)\r\n },\r\n email: {\r\n paddingTop: theme.spacing(1)\r\n },\r\n coursesContainer: {\r\n // paddingTop: theme.spacing(2)\r\n },\r\n editDeleteContainer: {\r\n // paddingTop: theme.spacing(2)\r\n },\r\n editButton: {\r\n color: theme.palette.secondary.main\r\n },\r\n deleteButton: {\r\n color: theme.palette.danger.main\r\n },\r\n coursesButton: {\r\n color: theme.palette.secondary.main\r\n },\r\n dropDown: {\r\n width: 200,\r\n marginBottom: theme.spacing(3)\r\n }\r\n}));\r\n\r\nconst SinglePersonnel = (props) => {\r\n const classes = useStyles();\r\n const {\r\n personnel,\r\n openCoursesForPersonnelDialog,\r\n handlePersonnelEditClick,\r\n handlDeletePersonnelDialog\r\n } = props;\r\n\r\n \r\n\r\n\r\n return (\r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n {personnel && `${personnel.firstName} ${personnel.lastName}`}\r\n \r\n \r\n {personnel && personnel.email}\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n }\r\n className={classes.coursesButton}\r\n onClick={() => openCoursesForPersonnelDialog(true, personnel)}\r\n >\r\n Training\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n }\r\n className={classes.editButton}\r\n onClick={() => handlePersonnelEditClick({ ...personnel })}\r\n >\r\n Personnel Detail\r\n \r\n }\r\n className={classes.deleteButton}\r\n onClick={() =>\r\n handlDeletePersonnelDialog(true, { ...personnel })\r\n }\r\n >\r\n Delete\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nfunction PersonnelsList(props) {\r\n const {\r\n fetchAllPersonnels,\r\n personnels,\r\n onPersonnelEditClick,\r\n branchId,\r\n onOpenCoursesForPersonnelDialog,\r\n onOpenDeletePersonnelDialog\r\n } = props;\r\n \r\n\r\n const useStyles = makeStyles((theme) => ({\r\n dropDown: {\r\n width: 200,\r\n marginBottom: theme.spacing(4)\r\n },\r\n companiesListContainer:{\r\n marginTop: theme.spacing(4)\r\n }\r\n }));\r\n\r\n const classes = useStyles();\r\n\r\n const items = [ {id:1, value:\"Employees\", name:\"Employees\"}, {id:2, value:\"Non employees\", name:\"Non employees\"}, {id:3, value: \"All personnel\", name: \"All personnel\"}]\r\n \r\n const [personnelType, setPersonnelListType] = React.useState(1);\r\n\r\n\r\n React.useEffect(() => {\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [personnelType]); \r\n\r\n if (!personnels) {\r\n return null;\r\n }\r\n\r\n const handlePersonnelEditClick = (personnel) => {\r\n onPersonnelEditClick(personnel);\r\n };\r\n\r\n const openCoursesForPersonnelDialog = (open, personnel) => {\r\n onOpenCoursesForPersonnelDialog(open, personnel);\r\n };\r\n\r\n const handlDeletePersonnelDialog = (open, personnel) => {\r\n onOpenDeletePersonnelDialog(open, personnel);\r\n };\r\n\r\n let sortedPersonnels = SortByPropertyName(personnels, 'firstName');\r\n\r\n const filteredPersonnel = personnelType === 3 ? sortedPersonnels : sortedPersonnels.filter(x=> x.personnelType === personnelType);\r\n\r\n\r\n const handleDropdownChange = (e) => {\r\n setPersonnelListType(e.target.value);\r\n }\r\n\r\n return (\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 {filteredPersonnel &&\r\n filteredPersonnel.map((personnel) => {\r\n return (\r\n \r\n );\r\n })}\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default PersonnelsList;\r\n","// Header/index.js\r\nimport { connect } from 'react-redux';\r\n\r\nimport PersonnelsList from '../../components/PersonnelsList';\r\n\r\nimport {\r\n fetchAllPersonnelsDispatch,\r\n openEditPersonnelDialogDispatch,\r\n personnelEditClickDispatch,\r\n openCoursesForPersonnelDialog,\r\n clearAllCoursesForPersonnel,\r\n openDeletePersonnelDialogDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n personnels:\r\n state.personnels.allPersonnels && state.personnels.allPersonnels.items,\r\n branchId: state.branch.branch.item && state.branch.branch.item.id\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n fetchAllPersonnels: (branchId) => {\r\n dispatch(fetchAllPersonnelsDispatch(branchId));\r\n },\r\n onPersonnelEditClick: (personnel) => {\r\n dispatch(openEditPersonnelDialogDispatch(true));\r\n dispatch(personnelEditClickDispatch(personnel));\r\n },\r\n onOpenCoursesForPersonnelDialog: (open, personnel) => {\r\n dispatch(clearAllCoursesForPersonnel());\r\n dispatch(openCoursesForPersonnelDialog(open, personnel));\r\n },\r\n onOpenDeletePersonnelDialog: (open, personnel) => {\r\n dispatch(openDeletePersonnelDialogDispatch(true));\r\n dispatch(personnelEditClickDispatch(personnel));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PersonnelsList);\r\n","//Will return false if the list includes the personnel, and true if the list does not include personnel\r\nconst duplicatePersonnelNameValidation = (personnels, personnel) => {\r\n let nameOnlyPersonnelsList = personnels.map(\r\n (p) => p.firstName.toLowerCase().trim() + p.lastName.toLowerCase().trim()\r\n );\r\n const fullName =\r\n personnel.firstName.toLowerCase().trim() +\r\n personnel.lastName.toLowerCase().trim();\r\n if (nameOnlyPersonnelsList.includes(fullName)) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport default duplicatePersonnelNameValidation;\r\n","import React from 'react';\r\n\r\nimport CreateEditPersonnelFormUI from '../CreateEditPersonnelFormUI';\r\nimport { personnelStatus } from '../../constants';\r\nimport DuplicatePersonnelNameValidation from '../../mappers/duplicatePersonnelNameValidation';\r\n\r\nconst CreatePersonnelDialog = (props) => {\r\n const {\r\n openDialog,\r\n openCreatePersonnelDialog,\r\n onHandleInputChange,\r\n personnel,\r\n submitPersonnel,\r\n isSaving,\r\n sites,\r\n branch,\r\n personnels,\r\n changeValidationState,\r\n validationState,\r\n isShort\r\n } = props;\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n const { personnel } = props;\r\n\r\n if (DuplicatePersonnelNameValidation(personnels, personnel)) {\r\n\r\n let personnelTypeValue = isShort ? 2 : 1;\r\n\r\n const payload = {\r\n ...personnel,\r\n statusId: personnelStatus.ACTIVE,\r\n branchId: branch.id,\r\n isShort: isShort,\r\n personnelTypeId : personnelTypeValue\r\n };\r\n\r\n\r\n changeValidationState(true);\r\n submitPersonnel(payload);\r\n } else {\r\n changeValidationState(false);\r\n }\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default CreatePersonnelDialog;\r\n","// CreateCompanyDialog/index.js\r\nimport { connect } from 'react-redux';\r\n\r\nimport CreatePersonnelDialog from '../../components/CreatePersonnelDialog';\r\nimport {\r\n openCreatePersonnelDialogDispatch,\r\n handlePersonnelInputChangeDispatch,\r\n submitPersonnelDispatch,\r\n changeValidationStateDispatch\r\n} from '../../actions';\r\nimport { submitMode } from '../../constants';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.personnel.newPersonnel.showCreatePersonnelDialog,\r\n isShort: state.personnel.newPersonnel.isShortPersonnelDialog,\r\n personnel: state.personnel.newPersonnel.item,\r\n isSaving: state.personnel.newPersonnel.isSaving,\r\n branches: state.branches.allBranches.items,\r\n sites: state.personnels.sites.items,\r\n branch: state.branch.branch.item,\r\n personnels: state.personnels.allPersonnels.items,\r\n validationState: state.personnel.newPersonnel.validationState\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openCreatePersonnelDialog: (open) => {\r\n dispatch(openCreatePersonnelDialogDispatch(open, false));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(handlePersonnelInputChangeDispatch(value, inputFieldName));\r\n },\r\n submitPersonnel: (personnel) => {\r\n const mode = submitMode.CREATE;\r\n dispatch(submitPersonnelDispatch(personnel, mode));\r\n },\r\n changeValidationState: (validationState) => {\r\n dispatch(changeValidationStateDispatch(validationState));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(CreatePersonnelDialog);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GenericViewPanel from './../GenericViewPanel';\r\nimport PersonnelsList from '../../containers/PersonnelsList';\r\nimport CreatePersonnelDialog from '../../containers/CreatePersonnelDialog';\r\nimport ButtonSearchBoxActionBar from '../ButtonSearchBoxActionBar';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n actionBar: {\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n }\r\n}));\r\n\r\nconst PersonnelPanel = (props) => {\r\n const classes = useStyles();\r\n const {\r\n openCreatePersonnelDialog,\r\n searchTerm,\r\n handleSearchTermChange,\r\n\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default PersonnelPanel;\r\n","// PersonnelPanel/index.js\r\nimport { connect } from 'react-redux';\r\nimport PersonnelPanel from '../../components/PersonnelPanel';\r\n\r\nimport {\r\n openCreatePersonnelDialogDispatch,\r\n searchTermChangeForAllPersonnels\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n searchTerm: state.personnels.allPersonnels.searchTerm\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openCreatePersonnelDialog: (open) => {\r\n dispatch(openCreatePersonnelDialogDispatch(open));\r\n },\r\n handleSearchTermChange: (searchTerm) => {\r\n dispatch(searchTermChangeForAllPersonnels(searchTerm));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PersonnelPanel);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Paper, Grid, Typography, Button } from '@material-ui/core';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport DeleteOutlineIcon from '@material-ui/icons/DeleteOutline';\r\nimport moment from 'moment';\r\nimport DualActionDialog from '../DualActionDialog';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n padding: theme.spacing(2),\r\n paddingLeft: theme.spacing(3),\r\n marginBottom: theme.spacing(1)\r\n },\r\n personnelName: {\r\n fontSize: 18,\r\n fontWeight: 'normal',\r\n paddingTop: theme.spacing(1),\r\n paddingRight: theme.spacing(3),\r\n display: 'inline'\r\n },\r\n date: {\r\n paddingTop: theme.spacing(1),\r\n display: 'inline',\r\n paddingRight: theme.spacing(3)\r\n },\r\n dateExpired: {\r\n paddingTop: theme.spacing(1),\r\n display: 'inline',\r\n paddingRight: theme.spacing(3),\r\n color: theme.palette.danger.main,\r\n fontWeight: 800\r\n },\r\n deactivateContainer: {\r\n paddingTop: theme.spacing(2)\r\n },\r\n editDeleteContainer: {\r\n // paddingTop: theme.spacing(1)\r\n },\r\n editButton: {\r\n color: theme.palette.secondary.main\r\n },\r\n deleteButton: {\r\n color: theme.palette.danger.main\r\n },\r\n companyDetails: {\r\n display: 'inline'\r\n }\r\n}));\r\n\r\nconst SingleEvent = (props) => {\r\n const {\r\n event,\r\n handleEventEditClick,\r\n handleEventRecordEditClick,\r\n openDeleteEventDialog\r\n } = props;\r\n const classes = useStyles();\r\n const isExpired = moment().isAfter(event.nextEventDateUTC);\r\n\r\n return (\r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n {event && event.description}\r\n \r\n \r\n {event &&\r\n event.lastHeldDateUTC &&\r\n `Last - ${moment(event.lastHeldDateUTC).format(\r\n 'DD/MM/YYYY'\r\n )}`}\r\n \r\n \r\n {event &&\r\n event.nextEventDateUTC &&\r\n `Next - ${moment(event.nextEventDateUTC).format(\r\n 'DD/MM/YYYY'\r\n )}`}\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n }\r\n className={classes.editButton}\r\n onClick={() => handleEventEditClick({ ...event })}\r\n >\r\n Event Detail\r\n \r\n }\r\n className={classes.editButton}\r\n onClick={() => handleEventRecordEditClick({ ...event })}\r\n >\r\n Add/Edit Records\r\n \r\n }\r\n className={classes.deleteButton}\r\n onClick={() => openDeleteEventDialog(true, { ...event })}\r\n >\r\n Delete\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst EventsList = (props) => {\r\n const {\r\n branchId,\r\n events,\r\n fetchAllEventsForBranch,\r\n handleEventEditClick,\r\n handleEventRecordEditClick,\r\n openDeleteDialog,\r\n openDeleteEventDialog,\r\n eventToBeDeleted,\r\n isDeletingEvent,\r\n errorMessage,\r\n submitDeleteEventRequest,\r\n loggedInUser,\r\n fetchAllDocuments\r\n } = props;\r\n\r\n React.useEffect(\r\n () => {\r\n if (branchId) {\r\n fetchAllEventsForBranch(branchId);\r\n }\r\n if (loggedInUser.role === 1) {\r\n fetchAllDocuments(branchId);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [branchId]\r\n );\r\n\r\n const handleConfirmDelete = (e) => {\r\n submitDeleteEventRequest(eventToBeDeleted);\r\n };\r\n\r\n return (\r\n \r\n {openDeleteDialog === true ? (\r\n openDeleteEventDialog(false, eventToBeDeleted)}\r\n handleSubmit={handleConfirmDelete}\r\n showProgressBar={isDeletingEvent || false}\r\n errorMessage={errorMessage || ''}\r\n isDanger={true}\r\n />\r\n ) : null}\r\n {events &&\r\n events.map((event) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport default EventsList;\r\n","// EventsList/index.js\r\nimport { connect } from 'react-redux';\r\nimport EventsList from '../../components/EventsList';\r\nimport { documentType } from '../../constants';\r\n\r\nimport {\r\n fetchAllEventsForBranchDispatch,\r\n openEditEventPanelDispatch,\r\n openEditEventDialogDispatch,\r\n eventEditClickDispatch,\r\n openDeleteEventDialogDispatch,\r\n submitDeleteEventRequestDispatch,\r\n fetchAllDocumentsDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n branchId: state.branch.branch.item && state.branch.branch.item.id,\r\n events: state.events.eventsByBranch.items,\r\n openDeleteDialog: state.events.deleteEvent.openDialog,\r\n eventToBeDeleted: state.events.deleteEvent.event,\r\n errorMessage: state.events.deleteEvent.errorMessage,\r\n isDeletingEvent: state.events.deleteEvent.isSaving,\r\n documents: state.settings.allDocuments.items,\r\n loggedInUser: state.users.user.item\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n fetchAllEventsForBranch: (branchId) => {\r\n dispatch(fetchAllEventsForBranchDispatch(branchId));\r\n },\r\n handleEventEditClick: (event) => {\r\n dispatch(openEditEventDialogDispatch(true));\r\n dispatch(eventEditClickDispatch(event));\r\n },\r\n handleEventRecordEditClick: (event) => {\r\n dispatch(openEditEventPanelDispatch(true));\r\n dispatch(eventEditClickDispatch(event));\r\n },\r\n openDeleteEventDialog: (open, event) => {\r\n dispatch(openDeleteEventDialogDispatch(open, event));\r\n },\r\n submitDeleteEventRequest: (event) => {\r\n dispatch(submitDeleteEventRequestDispatch(event));\r\n },\r\n fetchAllDocuments: (branchId) => {\r\n dispatch(fetchAllDocumentsDispatch(documentType.DOCUMENT_LIBRARY, branchId ));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EventsList);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport {\r\n DialogTitle,\r\n Button,\r\n DialogActions,\r\n DialogContent,\r\n TextField,\r\n Grid,\r\n LinearProgress\r\n} from '@material-ui/core';\r\n\r\nimport Dialog from '../Dialog';\r\nimport { inputFieldNames } from '../../constants';\r\nimport FancyDropDown from '../FancyDropDown';\r\nimport { eventTypes } from '../../constants';\r\nimport config from '../../constants/blob_config.json';\r\nimport DocumentListDialog from '../../containers/DocumentListDialog';\r\nimport LibraryDocumentList from '../LibraryDocumentList';\r\nimport {addDocumentToArray, removeDocumentFromArray} from \"../../mappers/libraryDocumentMapper\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n dialog: {},\r\n dialogTitle: {\r\n background: '#f0f0f0'\r\n },\r\n dialogContent: {\r\n width: 580,\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(3)\r\n },\r\n actionButton: {\r\n width: 180,\r\n float: 'right',\r\n margin: theme.spacing(2)\r\n },\r\n footer: {\r\n background: '#f0f0f0'\r\n },\r\n picker: {\r\n margin: 0,\r\n padding: 0\r\n },\r\n documentButton: {\r\n width: '100%'\r\n },\r\n documentLink: {\r\n display: 'block',\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n },\r\n browseButton: {\r\n marginTop: '10px'\r\n }\r\n}));\r\n\r\nconst CreateEditEventFormUi = (props) => {\r\n const {\r\n openDialog,\r\n isSaving,\r\n onHandleInputChange,\r\n openCreateEventDialog,\r\n handleSubmit,\r\n title,\r\n event,\r\n actionButtonText = 'Add',\r\n documents,\r\n canEditDocuments,\r\n openDocumentListDialog\r\n } = props;\r\n const classes = useStyles();\r\n\r\n const blobDocuments = documents.filter((x) => x.isFolder === false);\r\n\r\n const onDialogClose = () => {\r\n openCreateEventDialog(false);\r\n };\r\n\r\n const onDocumentListDialogOpen = () => {\r\n openDocumentListDialog(true);\r\n };\r\n\r\n const handleInputChange = (e, inputfieldName) => {\r\n if (\r\n inputfieldName === inputFieldNames.LAST_HELD_DATE ||\r\n inputfieldName === inputFieldNames.NEXT_EVENT_DATE\r\n ) {\r\n onHandleInputChange(e, inputfieldName);\r\n } else {\r\n onHandleInputChange(e.target.value, inputfieldName);\r\n }\r\n };\r\n\r\n const handleDocumentSelected = (documentLink) => {\r\n const {document} = event;\r\n const updatedDocument = addDocumentToArray(document, documentLink);\r\n onHandleInputChange(updatedDocument, inputFieldNames.EVENT_DOCUMENT_NAME);\r\n };\r\n\r\n const handleDocumentRemove = (documentToRemove) => {\r\n const {document} = event;\r\n const updatedDocument = removeDocumentFromArray(document, documentToRemove);\r\n onHandleInputChange(updatedDocument, inputFieldNames.EVENT_DOCUMENT_NAME);\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {isSaving ? : ''}\r\n \r\n {title}\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.DESCRIPTION)\r\n }\r\n value={event.description}\r\n required={true}\r\n />\r\n \r\n {/* \r\n \r\n handleInputChange(e, inputFieldNames.EVENT_NOTES)\r\n }\r\n value={event.notes}\r\n />\r\n */}\r\n \r\n \r\n handleInputChange(e, inputFieldNames.FREQUENCY)\r\n }\r\n value={event.frequency || ''}\r\n fullWidth\r\n />\r\n \r\n \r\n {/* EventType */}\r\n \r\n handleInputChange(e, inputFieldNames.EVENT_TYPE)\r\n }\r\n items={eventTypes.eventTypes}\r\n dropDownWidth=\"100%\"\r\n className={classes.dropDown}\r\n valueField=\"id\"\r\n displayField=\"value\"\r\n required={true}\r\n />\r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.EVENT_COORDINATOR)\r\n }\r\n value={event.eventCoordinator}\r\n fullWidth\r\n />\r\n \r\n \r\n {/* \r\n \r\n handleInputChange(date, inputFieldNames.LAST_HELD_DATE)\r\n }\r\n selectedDate={event.lastHeldDateUTC}\r\n />\r\n \r\n \r\n \r\n handleInputChange(date, inputFieldNames.NEXT_EVENT_DATE)\r\n }\r\n selectedDate={event.nextEventDateUTC}\r\n />\r\n */}\r\n \r\n handleInputChange(e, inputFieldNames.EVENT_NOTES)}\r\n value={event.notes}\r\n />\r\n \r\n\r\n {canEditDocuments ? (\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n {canEditDocuments && (\r\n \r\n \r\n {'Browse'}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n Cancel\r\n \r\n \r\n {actionButtonText}\r\n \r\n \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default CreateEditEventFormUi;\r\n","import React from 'react';\r\n\r\nimport CreateEditEventFormUi from '../CreateEditEventFormUi';\r\n\r\nconst CreateEventDialog = (props) => {\r\n const {\r\n openDialog,\r\n event,\r\n isSaving,\r\n branchId,\r\n openCreateEventDialog,\r\n onHandleInputChange,\r\n submitEvent,\r\n loggedInUser,\r\n openDocumentListDialog,\r\n documents\r\n } = props;\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n event.branchId = branchId;\r\n event.departmentId = 1;\r\n submitEvent(event);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CreateEventDialog;\r\n","// CreateEventDialog/index.js\r\nimport { connect } from 'react-redux';\r\nimport CreateEventDialog from '../../components/CreateEventDialog';\r\n\r\nimport {\r\n openCreateEventDialogDispatch,\r\n handleEventInputChangeDispatch,\r\n submitEventDispatch,\r\n openDocumentListDialogDispatch,\r\n} from '../../actions';\r\nimport { submitMode } from '../../constants';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.event.newEvent.showCreateEventDialog,\r\n event: state.event.newEvent.item,\r\n isSaving: state.event.newEvent.isSaving,\r\n branchId: state.branch.branch.item && state.branch.branch.item.id,\r\n documents: state.settings.allDocuments.itemsCopy,\r\n loggedInUser: state.users.user.item\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openCreateEventDialog: (open) => {\r\n dispatch(openCreateEventDialogDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(handleEventInputChangeDispatch(value, inputFieldName));\r\n },\r\n submitEvent: (accident) => {\r\n const mode = submitMode.CREATE;\r\n dispatch(submitEventDispatch(accident, mode));\r\n },\r\n openDocumentListDialog: (open) => {\r\n dispatch(openDocumentListDialogDispatch(open));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CreateEventDialog);\r\n","import React from 'react';\r\nimport { TableCell, IconButton } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Delete as DeleteIcon, Edit as EditIcon } from '@material-ui/icons';\r\nimport moment from 'moment';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n deleteIcon: {\r\n color: theme.palette.danger.minor\r\n },\r\n date: {},\r\n dateExpired: {\r\n color: theme.palette.danger.main\r\n }\r\n}));\r\n\r\nconst SingleEventRecord = (props) => {\r\n const classes = useStyles();\r\n const {\r\n record,\r\n userId,\r\n isExpired,\r\n enableEditEventRecord,\r\n handleDeleteEventRecordClick\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n {moment(record.recordDate).format('DD MMM YYYY')}\r\n \r\n \r\n {moment(record.nextEventDate).format('DD MMM YYYY')}\r\n \r\n \r\n {record.notes}\r\n \r\n \r\n enableEditEventRecord(true, record.id, userId)}\r\n >\r\n \r\n \r\n\r\n handleDeleteEventRecordClick(record.id)}\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SingleEventRecord;\r\n","import React from 'react';\r\nimport {\r\n TableCell,\r\n TextField,\r\n Button,\r\n Typography,\r\n Fab,\r\n Input,\r\n Grid\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport { DatePicker } from '../../DatePicker';\r\nimport { inputFieldNames } from '../../../constants';\r\n\r\nimport { Attachment as AttachmentIcon } from '@material-ui/icons';\r\nimport Attachments from '../../Attachments';\r\nimport moment from 'moment';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n cancelButton: {\r\n marginLeft: 10,\r\n color: theme.palette.subTitle.main\r\n },\r\n addAttachmentFab: {\r\n margin: theme.spacing(1),\r\n marginLeft: 0\r\n },\r\n fab: {\r\n margin: theme.spacing(1)\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n width: 210,\r\n height: '36px !important',\r\n borderWidth: 1.3,\r\n flex: 1\r\n },\r\n extendedIcon: {\r\n marginRight: theme.spacing(1)\r\n }\r\n}));\r\n\r\nconst EditEventRecord = (props) => {\r\n const classes = useStyles();\r\n const {\r\n record,\r\n handleEditEventRecordInputChange,\r\n enableEditEventRecord,\r\n handleSaveEventRecordClick,\r\n handleRemoveAttachment,\r\n allAttachments\r\n } = props;\r\n\r\n const hiddenFileInput = React.createRef();\r\n\r\n const handleClick = (event) => {\r\n hiddenFileInput.current.children[0].click();\r\n };\r\n\r\n const onAttachmendAdded = (event) => {\r\n event.preventDefault();\r\n const file = event.target.files[0];\r\n const newObj = {\r\n newlyAdded: true,\r\n removed: false,\r\n fileData: file,\r\n name: file.name\r\n };\r\n handleEditEventRecordInputChange(\r\n newObj,\r\n inputFieldNames.EVENT_RECORD_ATTACHMENT\r\n );\r\n hiddenFileInput.current.children[0].value = null;\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n handleEditEventRecordInputChange(date, inputFieldNames.RECORD_DATE)\r\n }\r\n selectedDate={record.recordDate}\r\n required={true}\r\n />\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n handleEditEventRecordInputChange(e, inputFieldNames.RECORD_NOTES)\r\n }\r\n value= {record.notes}\r\n fullWidth\r\n multiline\r\n maxRows={2}\r\n />\r\n \r\n \r\n \r\n {/***************** Attachment ******************/}\r\n \r\n Attachments\r\n \r\n \r\n \r\n \r\n Add attachment\r\n \r\n \r\n \r\n {allAttachments && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n Save\r\n \r\n enableEditEventRecord(false, record.id)}\r\n className={classes.cancelButton}\r\n id=\"cancelButton\"\r\n >\r\n Cancel\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default EditEventRecord;\r\n","import React from 'react';\r\nimport {\r\n Paper,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableContainer,\r\n TableHead,\r\n TableRow\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport moment from 'moment';\r\n\r\n// import { utcToLocal } from './../../../utils/timeConverter';\r\nimport SingleEventRecord from '../SingleEventRecord';\r\nimport EditEventRecord from '../EditEventRecord';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n recordsListContainer: {\r\n padding: theme.spacing(2),\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n },\r\n table: {\r\n minWidth: 650\r\n },\r\n boldText: {\r\n fontWeight: 800\r\n }\r\n}));\r\n\r\nconst RecordsList = (props) => {\r\n const classes = useStyles();\r\n const {\r\n records,\r\n handleDeleteEventRecordClick,\r\n enableEditEventRecord,\r\n isEditRecordEnabled,\r\n recordBeingEdited,\r\n handleEditEventRecordInputChange,\r\n handleSaveEventRecordClick,\r\n userId,\r\n handleRemoveAttachment,\r\n allAttachments\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Date\r\n Next Event\r\n Notes\r\n \r\n \r\n \r\n \r\n {records.map((record) => {\r\n const isExpired = moment().isAfter(record.nextEventDate);\r\n\r\n const isEditMode =\r\n isEditRecordEnabled && record.id === recordBeingEdited.id;\r\n\r\n return (\r\n \r\n {isEditMode ? (\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\nexport default RecordsList;\r\n","import React from 'react';\r\nimport { TextField, Grid, Fab, Input, Typography } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport { DatePicker } from '../../DatePicker';\r\nimport { inputFieldNames } from '../../../constants';\r\n\r\nimport { Attachment as AttachmentIcon } from '@material-ui/icons';\r\nimport Attachments from '../../Attachments';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n addRecordContainer: {\r\n padding: theme.spacing(2),\r\n marginTop: theme.spacing(2)\r\n },\r\n header: {\r\n paddingBottom: theme.spacing(1)\r\n },\r\n formContainer: {\r\n paddingBottom: theme.spacing(2)\r\n },\r\n addAttachmentFab: {\r\n margin: theme.spacing(1),\r\n marginLeft: 0\r\n },\r\n fab: {\r\n margin: theme.spacing(1)\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n width: 210,\r\n height: '36px !important',\r\n borderWidth: 1.3,\r\n flex: 1\r\n },\r\n extendedIcon: {\r\n marginRight: theme.spacing(1)\r\n }\r\n}));\r\n\r\nconst AddRecord = (props) => {\r\n const classes = useStyles();\r\n const {\r\n record,\r\n handleInputChange,\r\n handleSubmitRecord,\r\n handleRemoveAttachment,\r\n allAttachments\r\n } = props;\r\n\r\n const hiddenFileInput = React.createRef();\r\n\r\n const handleClick = (event) => {\r\n hiddenFileInput.current.children[0].click();\r\n };\r\n\r\n const onAttachmendAdded = (event) => {\r\n event.preventDefault();\r\n const file = event.target.files[0];\r\n const newObj = {\r\n newlyAdded: true,\r\n removed: false,\r\n fileData: file,\r\n name: file.name\r\n };\r\n handleInputChange(newObj, inputFieldNames.EVENT_RECORD_ATTACHMENT);\r\n hiddenFileInput.current.children[0].value = null;\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n handleInputChange(date, inputFieldNames.RECORD_DATE)\r\n }\r\n selectedDate={record.recordDate}\r\n required={true}\r\n />\r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.RECORD_NOTES)}\r\n value={record.notes}\r\n />\r\n \r\n {/***************** Attachment ******************/}\r\n \r\n Attachments\r\n \r\n \r\n \r\n \r\n Add attachment\r\n \r\n \r\n \r\n {allAttachments && (\r\n \r\n \r\n \r\n )}\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default AddRecord;\r\n","import React from 'react';\r\nimport {\r\n DialogTitle,\r\n DialogContent,\r\n DialogActions,\r\n LinearProgress,\r\n Button\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Add as AddIcon } from '@material-ui/icons';\r\n\r\nimport Dialog from '../Dialog';\r\nimport AddRecord from '../EditEventPanel/AddRecord';\r\nimport { inputFieldNames } from '../../constants';\r\nimport calculateNextEventDate from '../../mappers/calculateNextEventDate';\r\nimport { submitMode } from '../../constants';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n dialog: {},\r\n dialogTitle: {\r\n background: '#f0f0f0'\r\n },\r\n dialogContent: {\r\n width: 580,\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(3)\r\n },\r\n actionButton: {\r\n width: 180,\r\n float: 'right',\r\n margin: theme.spacing(2)\r\n },\r\n footer: {\r\n background: '#f0f0f0'\r\n }\r\n}));\r\n\r\nconst AddEventRecordDialog = (props) => {\r\n const classes = useStyles();\r\n const {\r\n openDialog,\r\n onOpenAddEventRecordDialog,\r\n isSaving,\r\n record,\r\n onHandleInputChange,\r\n event,\r\n submitRecord,\r\n allAttachments,\r\n onRemoveAttachment,\r\n branchId\r\n } = props;\r\n\r\n const onDialogClose = () => {\r\n onOpenAddEventRecordDialog(false);\r\n };\r\n\r\n const handleSubmitRecord = (e) => {\r\n e.preventDefault();\r\n\r\n const payload = {\r\n eventId: event.id,\r\n ...record,\r\n nextEventDate: calculateNextEventDate(record.recordDate, event.frequency)\r\n };\r\n submitRecord(payload, submitMode.CREATE, branchId);\r\n };\r\n\r\n const handleRemoveAttachment = (attachment) => {\r\n onRemoveAttachment(attachment);\r\n };\r\n\r\n const handleInputChange = (e, inputfieldName) => {\r\n if (\r\n inputfieldName === inputFieldNames.LAST_HELD_DATE ||\r\n inputfieldName === inputFieldNames.NEXT_EVENT_DATE ||\r\n inputfieldName === inputFieldNames.RECORD_DATE ||\r\n inputfieldName === inputFieldNames.EVENT_RECORD_ATTACHMENT\r\n ) {\r\n onHandleInputChange(e, inputfieldName);\r\n } else {\r\n onHandleInputChange(e.target.value, inputfieldName);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n {isSaving ? : ''}\r\n \r\n Add Record\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n Cancel\r\n \r\n }\r\n >\r\n Add\r\n \r\n \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default AddEventRecordDialog;\r\n","// AddEventRecordDialog/index.js\r\nimport { connect } from 'react-redux';\r\n\r\nimport AddEventRecordDialog from '../../components/AddEventRecordDialog';\r\nimport {\r\n openAddEventRecordDialogDispatch,\r\n handleEventInputChangeDispatch,\r\n submitRecordDispatch,\r\n removeEventRecordAttachment\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.event.newRecord.openAddEventRecordDialog,\r\n isSaving: state.event.newRecord.isSaving,\r\n record: state.event.newRecord.item,\r\n event: state.event.newEvent.item,\r\n allAttachments: state.event.newRecord.item.attachmentFiles,\r\n branchId: state.branch.branch.item && state.branch.branch.item.id\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n onOpenAddEventRecordDialog: (open) => {\r\n dispatch(openAddEventRecordDialogDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(handleEventInputChangeDispatch(value, inputFieldName));\r\n },\r\n submitRecord: (payload, mode, branchId) => {\r\n dispatch(submitRecordDispatch(payload, mode, branchId));\r\n },\r\n onRemoveAttachment: (attachment) => {\r\n dispatch(removeEventRecordAttachment(attachment));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(AddEventRecordDialog);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { ArrowBack as ArrowBackIcon } from '@material-ui/icons';\r\nimport { IconButton, Typography, Button } from '@material-ui/core';\r\n\r\nimport { inputFieldNames } from '../../constants';\r\n\r\nimport RecordsList from './RecordsList';\r\nimport calculateNextEventDate from '../../mappers/calculateNextEventDate';\r\nimport { submitMode } from '../../constants';\r\nimport AddEventRecordDialog from '../../containers/AddEventRecordDialog';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n simpleLabel: {\r\n display: 'inline-block',\r\n marginTop: 2\r\n },\r\n editEventFieldsContainer: {\r\n padding: theme.spacing(2)\r\n },\r\n backArrow: {\r\n marginLeft: -16\r\n },\r\n eventName: {\r\n fontWeight: 600\r\n },\r\n addRecordButton: {\r\n marginTop: 8\r\n }\r\n}));\r\n\r\nconst EditEventPanel = (props) => {\r\n const {\r\n event,\r\n openEditEventPanel,\r\n fetchRecordsForTheEvent,\r\n records,\r\n onHandleDeleteEventRecordClick,\r\n submitRecord,\r\n enableEditEventRecord,\r\n isEditRecordEnabled,\r\n recordBeingEdited,\r\n onHandleEditEventRecordInputChange,\r\n onOpenAddEventRecordDialog,\r\n openAddEventRecordDialog,\r\n userId,\r\n onRemoveAttachment,\r\n allAttachments,\r\n branchId\r\n } = props;\r\n const classes = useStyles();\r\n\r\n React.useEffect(\r\n () => {\r\n fetchRecordsForTheEvent(event.id);\r\n },\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [event.id]\r\n );\r\n\r\n const handleEditEventRecordInputChange = (e, inputfieldName) => {\r\n if (\r\n inputfieldName === inputFieldNames.RECORD_DATE ||\r\n inputfieldName === inputFieldNames.EVENT_RECORD_ATTACHMENT\r\n ) {\r\n onHandleEditEventRecordInputChange(e, inputfieldName);\r\n } else {\r\n onHandleEditEventRecordInputChange(e.target.value, inputfieldName);\r\n }\r\n };\r\n\r\n const handleDeleteEventRecordClick = (recordId) => {\r\n const payload = {\r\n eventId: event.id,\r\n recordId\r\n };\r\n onHandleDeleteEventRecordClick(payload);\r\n };\r\n\r\n const handleRemoveAttachment = (attachment) => {\r\n onRemoveAttachment(attachment);\r\n };\r\n\r\n const handleSaveEventRecordClick = (e) => {\r\n e.preventDefault();\r\n\r\n const payload = {\r\n eventId: event.id,\r\n ...recordBeingEdited,\r\n nextEventDate: calculateNextEventDate(\r\n recordBeingEdited.recordDate,\r\n event.frequency\r\n )\r\n };\r\n\r\n submitRecord(payload, submitMode.UPDATE, branchId);\r\n };\r\n\r\n return (\r\n \r\n {openAddEventRecordDialog ? : null}\r\n\r\n
    \r\n openEditEventPanel(false)}\r\n id=\"settings-button\"\r\n className={classes.backArrow}\r\n >\r\n \r\n \r\n Events\r\n
    \r\n\r\n
    \r\n \r\n {event.description}\r\n \r\n
    \r\n\r\n onOpenAddEventRecordDialog(true)}\r\n >\r\n Add Record\r\n \r\n\r\n {/* */}\r\n\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default EditEventPanel;\r\n","// EditEventPanel/index.js\r\nimport { connect } from 'react-redux';\r\nimport EditEventPanel from '../../components/EditEventPanel';\r\n\r\nimport { domainType } from '../../constants';\r\n\r\nimport {\r\n openEditEventPanelDispatch,\r\n handleEventInputChangeDispatch,\r\n submitEventDispatch,\r\n fetchRecordsForTheEventDispatch,\r\n handleDeleteEventRecordClickDispatch,\r\n submitRecordDispatch,\r\n enableEditEventRecordDispatch,\r\n handleEditEventRecordInputChangeDispatch,\r\n openAddEventRecordDialogDispatch,\r\n openDocumentListDialogDispatch,\r\n removeEventRecordAttachmentEdit,\r\n fetchExistingAttachmentsForTheEventRecordDispatch\r\n} from '../../actions';\r\nimport { submitMode } from '../../constants';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openPanel: state.event.newEvent.showEditEventPanel,\r\n event: state.event.newEvent.item,\r\n branchId: state.branch.branch.item && state.branch.branch.item.id,\r\n records: state.event.recordsForTheEvent.items,\r\n record: state.event.newRecord.item,\r\n isEditRecordEnabled: state.event.editRecord.enable,\r\n recordBeingEdited: state.event.editRecord.item,\r\n openAddEventRecordDialog: state.event.newRecord.openAddEventRecordDialog,\r\n loggedInUser: state.users.user.item,\r\n allAttachments: state.event.editRecord.item.attachmentFiles\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openEditEventPanel: (open) => {\r\n dispatch(openEditEventPanelDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(handleEventInputChangeDispatch(value, inputFieldName));\r\n },\r\n submitEvent: (accident) => {\r\n const mode = submitMode.UPDATE;\r\n dispatch(submitEventDispatch(accident, mode));\r\n },\r\n fetchRecordsForTheEvent: (eventId) => {\r\n dispatch(fetchRecordsForTheEventDispatch(eventId));\r\n },\r\n onHandleDeleteEventRecordClick: (payload) => {\r\n dispatch(handleDeleteEventRecordClickDispatch(payload));\r\n },\r\n submitRecord: (payload, mode, branchId) => {\r\n dispatch(submitRecordDispatch(payload, mode, branchId));\r\n },\r\n enableEditEventRecord: (enableEditRecordMode, recordId, loggedInUserId) => {\r\n dispatch(enableEditEventRecordDispatch(enableEditRecordMode, recordId));\r\n dispatch(\r\n fetchExistingAttachmentsForTheEventRecordDispatch(\r\n domainType.EVENT_RECORD,\r\n recordId,\r\n loggedInUserId\r\n )\r\n );\r\n },\r\n onHandleEditEventRecordInputChange: (value, inputFieldName) => {\r\n dispatch(handleEditEventRecordInputChangeDispatch(value, inputFieldName));\r\n },\r\n onOpenAddEventRecordDialog: (open) => {\r\n dispatch(openAddEventRecordDialogDispatch(open));\r\n },\r\n openDocumentListDialog: (open) => {\r\n dispatch(openDocumentListDialogDispatch(open));\r\n },\r\n onRemoveAttachment: (attachment) => {\r\n dispatch(removeEventRecordAttachmentEdit(attachment));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EditEventPanel);\r\n","import React from 'react';\r\n\r\nimport CreateEditEventFormUi from '../CreateEditEventFormUi';\r\n\r\nconst EditEventDialog = (props) => {\r\n const {\r\n event,\r\n openDialog,\r\n isSaving,\r\n onHandleInputChange,\r\n openCreateEventDialog,\r\n submitEvent,\r\n branchId,\r\n loggedInUser,\r\n openDocumentListDialog,\r\n documents\r\n } = props;\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n event.branchId = branchId;\r\n event.departmentId = 1;\r\n submitEvent(event);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default EditEventDialog;\r\n","// EditEventDialog/index.js\r\nimport { connect } from 'react-redux';\r\nimport EditEventDialog from '../../components/EditEventDialog';\r\n\r\nimport {\r\n openEditEventDialogDispatch,\r\n handleEventInputChangeDispatch,\r\n submitEventDispatch,\r\n openDocumentListDialogDispatch\r\n} from '../../actions';\r\nimport { submitMode } from '../../constants';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.event.newEvent.showEditEventDialog,\r\n event: state.event.newEvent.item,\r\n isSaving: state.event.newEvent.isSaving,\r\n branchId: state.branch.branch.item && state.branch.branch.item.id,\r\n documents: state.settings.allDocuments.itemsCopy,\r\n loggedInUser: state.users.user.item\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openCreateEventDialog: (open) => {\r\n dispatch(openEditEventDialogDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(handleEventInputChangeDispatch(value, inputFieldName));\r\n },\r\n submitEvent: (accident) => {\r\n const mode = submitMode.UPDATE;\r\n dispatch(submitEventDispatch(accident, mode));\r\n },\r\n openDocumentListDialog: (open) => {\r\n dispatch(openDocumentListDialogDispatch(open));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EditEventDialog);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GenericViewPanel from './../GenericViewPanel';\r\nimport EventsList from '../../containers/EventsList';\r\nimport ButtonSearchBoxActionBar from '../ButtonSearchBoxActionBar';\r\nimport CreateEventDialog from '../../containers/CreateEventDialog';\r\nimport EditEventPanel from '../../containers/EditEventPanel';\r\nimport EditEventDialog from '../../containers/EditEventDialog';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n actionBar: {\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n }\r\n}));\r\n\r\nconst EventsPanel = (props) => {\r\n const classes = useStyles();\r\n const {\r\n searchTerm,\r\n handleSearchTermChange,\r\n openCreateAccidentDialog,\r\n openPanel,\r\n openDialog\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n {openDialog ? : null}\r\n\r\n {openPanel ? (\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\nexport default EventsPanel;\r\n","// EventsPanel/index.js\r\nimport { connect } from 'react-redux';\r\nimport EventsPanel from '../../components/EventsPanel';\r\n\r\nimport {\r\n searchTermChangeForAllEvents,\r\n openCreateEventDialogDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.event.newEvent.showEditEventDialog,\r\n openPanel: state.event.newEvent.showEditEventPanel,\r\n searchTerm: state.events.eventsByBranch.searchTerm\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n handleSearchTermChange: (searchTerm) => {\r\n dispatch(searchTermChangeForAllEvents(searchTerm));\r\n },\r\n openCreateAccidentDialog: (open) => {\r\n dispatch(openCreateEventDialogDispatch(open));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EventsPanel);\r\n","import React from 'react';\r\n\r\nimport GenericViewPanel from './../GenericViewPanel';\r\n\r\nconst InductionsPanel = (props) => {\r\n return (\r\n \r\n

    InductionsPanel

    \r\n
    \r\n );\r\n};\r\n\r\nexport default InductionsPanel;\r\n","// InductionsPanel/index.js\r\nimport { connect } from 'react-redux';\r\nimport InductionsPanel from '../../components/InductionsPanel';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {};\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {};\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(InductionsPanel);\r\n","import React from 'react';\r\nimport {\r\n DialogTitle,\r\n Button,\r\n DialogActions,\r\n DialogContent,\r\n Grid,\r\n LinearProgress,\r\n Fab,\r\n Typography,\r\n Input\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport Dialog from '../Dialog';\r\nimport { inputFieldNames } from '../../constants';\r\nimport { DatePicker } from '../DatePicker';\r\nimport FancyDropDown from '../FancyDropDown';\r\nimport { injuryConstants } from '../../constants';\r\n\r\nimport { utcToLocal } from './../../utils/timeConverter';\r\n\r\nimport { Attachment as AttachmentIcon } from '@material-ui/icons';\r\nimport Attachments from '../Attachments';\r\n\r\nimport CreatePersonnelDialog from '../../containers/CreatePersonnelDialog';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n dialog: {},\r\n dialogTitle: {\r\n background: '#f0f0f0'\r\n },\r\n dialogContent: {\r\n width: 580,\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(3)\r\n },\r\n actionButton: {\r\n width: 180,\r\n float: 'right',\r\n margin: theme.spacing(2)\r\n },\r\n personnelbtn: {\r\n width: 220,\r\n float: 'left'\r\n },\r\n footer: {\r\n background: '#f0f0f0'\r\n },\r\n picker: {\r\n margin: 0,\r\n padding: 0\r\n }\r\n}));\r\n\r\nconst CreateEditAccidentFormUi = (props) => {\r\n const {\r\n openDialog,\r\n isSaving,\r\n onHandleInputChange,\r\n openCreateAccidentDialog,\r\n handleSubmit,\r\n title,\r\n accident,\r\n personnels,\r\n isLoadingPersonnel,\r\n actionButtonText = 'Add',\r\n handleRemoveAttachment,\r\n allAttachments,\r\n openCreatePersonnelDialog\r\n } = props;\r\n\r\n const hiddenFileInput = React.createRef();\r\n\r\n const classes = useStyles();\r\n\r\n const onDialogClose = () => {\r\n openCreateAccidentDialog(false);\r\n };\r\n\r\n const handleInputChange = (e, inputfieldName) => {\r\n if (\r\n inputfieldName === inputFieldNames.INJURY_DATE ||\r\n inputfieldName === inputFieldNames.INJURY_TIME\r\n ) {\r\n onHandleInputChange(e, inputfieldName);\r\n } else {\r\n onHandleInputChange(e.target.value, inputfieldName);\r\n }\r\n };\r\n\r\n const handleClick = (event) => {\r\n hiddenFileInput.current.children[0].click();\r\n };\r\n\r\n const onAttachmendAdded = (event) => {\r\n event.preventDefault();\r\n const { onHandleInputChange } = props;\r\n const file = event.target.files[0];\r\n const newObj = {\r\n newlyAdded: true,\r\n removed: false,\r\n fileData: file,\r\n name: file.name\r\n };\r\n onHandleInputChange(newObj, inputFieldNames.ACCIDENT_ATTACHMENT);\r\n hiddenFileInput.current.children[0].value = null;\r\n };\r\n\r\n return (\r\n \r\n\r\n \r\n \r\n \r\n {isSaving || isLoadingPersonnel ? : ''}\r\n \r\n {title}\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n handleInputChange(date, inputFieldNames.INJURY_DATE)\r\n }\r\n selectedDate={\r\n actionButtonText === 'Add'\r\n ? accident.injuryDate\r\n : utcToLocal(accident.injuryDate)\r\n }\r\n required={true}\r\n />\r\n \r\n \r\n\r\n {/* \r\n \r\n handleInputChange(date, inputFieldNames.INJURY_TIME)\r\n }\r\n selectedDate={\r\n actionButtonText === 'Add'\r\n ? accident.injuryTime\r\n : utcToLocal(accident.injuryTime)\r\n }\r\n />\r\n */}\r\n \r\n \r\n handleInputChange(e, inputFieldNames.INJURY_LOCATION)\r\n }\r\n items={injuryConstants.injuryLocations}\r\n dropDownWidth=\"100%\"\r\n className={classes.dropDown}\r\n valueField=\"id\"\r\n displayField=\"value\"\r\n />\r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.INJURY_TYPE)\r\n }\r\n items={injuryConstants.injuryTypes}\r\n dropDownWidth=\"100%\"\r\n className={classes.dropDown}\r\n valueField=\"id\"\r\n displayField=\"value\"\r\n />\r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.INJURY_CAUSE)\r\n }\r\n items={injuryConstants.injuryCauses}\r\n dropDownWidth=\"100%\"\r\n className={classes.dropDown}\r\n valueField=\"id\"\r\n displayField=\"value\"\r\n />\r\n \r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.PERSONNEL)\r\n }\r\n items={personnels}\r\n dropDownWidth=\"100%\"\r\n className={classes.dropDown}\r\n valueField=\"id\"\r\n displayField={['firstName', 'lastName']}\r\n />\r\n \r\n\r\n \r\n \r\n Non Staff Member?\r\n \r\n openCreatePersonnelDialog(true)}\r\n color=\"primary\"\r\n variant=\"contained\"\r\n className={classes.personnelbtn}\r\n id=\"addChildButton\"\r\n // disabled={!enableAddButton}\r\n >\r\n Add Non Staff Member\r\n \r\n \r\n\r\n {/***************** Attachment ******************/}\r\n \r\n Attachments\r\n \r\n \r\n \r\n \r\n Add attachment\r\n \r\n \r\n \r\n {allAttachments && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n Cancel\r\n \r\n \r\n {actionButtonText}\r\n \r\n \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default CreateEditAccidentFormUi;\r\n","import React from 'react';\r\n\r\nimport CreateEditAccidentFormUi from '../CreateEditAccidentFormUi';\r\nimport { domainType } from '../../constants';\r\n\r\nconst EditAccidentDialog = (props) => {\r\n const {\r\n openDialog,\r\n openCreateAccidentDialog,\r\n onHandleInputChange,\r\n accident,\r\n submitAccident,\r\n isSaving,\r\n personnels,\r\n userId,\r\n fetchAllPersonnels,\r\n isLoadingPersonnel,\r\n allAttachments,\r\n onRemoveAttachment,\r\n loggedInUser,\r\n fetchExistingAttachmentsForTheAccident\r\n } = props;\r\n React.useEffect(() => {\r\n if (!personnels.length && openDialog === true) {\r\n fetchAllPersonnels(userId);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [openDialog]);\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n // accident.departmentId = 1;\r\n // accident.branchId = branchId;\r\n\r\n submitAccident(accident);\r\n };\r\n\r\n const handleRemoveAttachment = (attachment) => {\r\n onRemoveAttachment(attachment);\r\n };\r\n\r\n const handleAttahmentChange = (value, inputFieldName) => {\r\n const { onUpdateAttachment } = props;\r\n onUpdateAttachment(value, inputFieldName);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default EditAccidentDialog;\r\n","// EditAccidentDialog/index.js\r\nimport { connect } from 'react-redux';\r\nimport EditAccidentDialog from '../../components/EditAccidentDialog';\r\n\r\nimport {\r\n openEditAccidentDialogDispatch,\r\n handleAccidentInputChangeDispatch,\r\n fetchAllPersonnelsDispatch,\r\n submitAccidentDispatch,\r\n removeAccidentAttachment,\r\n fetchExistingAttachmentsForTheAccidentDispatch\r\n} from '../../actions';\r\nimport { submitMode } from '../../constants';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.accident.newAccident.showEditAccidentDialog,\r\n accident: state.accident.newAccident.item,\r\n isSaving: state.accident.newAccident.isSaving,\r\n personnels: state.personnels.allPersonnels.items,\r\n userId: state.users.user.item.id,\r\n branchId: state.branch.branch.item && state.branch.branch.item.id,\r\n isLoadingPersonnel: state.personnels.allPersonnels.isLoading,\r\n allAttachments: state.accident.newAccident.item.attachmentFiles,\r\n loggedInUser: state.users.user.item\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openCreateAccidentDialog: (open) => {\r\n dispatch(openEditAccidentDialogDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(handleAccidentInputChangeDispatch(value, inputFieldName));\r\n },\r\n submitAccident: (accident) => {\r\n const mode = submitMode.UPDATE;\r\n dispatch(submitAccidentDispatch(accident, mode));\r\n },\r\n fetchAllPersonnels: (userId) => {\r\n dispatch(fetchAllPersonnelsDispatch(userId));\r\n },\r\n onUpdateAttachment: (value, inputFieldName) => {\r\n dispatch(handleAccidentInputChangeDispatch(value, inputFieldName));\r\n },\r\n onRemoveAttachment: (attachment) => {\r\n dispatch(removeAccidentAttachment(attachment));\r\n },\r\n fetchExistingAttachmentsForTheHazard: (\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n ) => {\r\n dispatch(\r\n fetchExistingAttachmentsForTheAccidentDispatch(\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n )\r\n );\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EditAccidentDialog);\r\n","// DeleteOrDeactivateAccidentDialog/index.js\r\nimport React from 'react';\r\n\r\nimport DualActionDialog from '../DualActionDialog';\r\nimport { branchStatus } from '../../constants';\r\nimport { injuryMappers } from '../../mappers';\r\n\r\nfunction DeleteOrDeactivateAccidentDialog(props) {\r\n const {\r\n open,\r\n status,\r\n accident,\r\n showDialog,\r\n onConfirmDeleteDeactivateAccident,\r\n isSaving,\r\n errorMessage\r\n } = props;\r\n\r\n const title = status === branchStatus.DEACTIVE ? 'Deactive' : 'Delete';\r\n const actionText =\r\n status === branchStatus.DEACTIVE ? 'Deactiveted' : 'Deleted';\r\n\r\n const injuryType =\r\n accident && injuryMappers.mapInjuryTypeToText(accident.injuryTypeId);\r\n\r\n const handleConfirmAction = (event) => {\r\n event.preventDefault();\r\n\r\n const payload = {\r\n accident,\r\n status\r\n };\r\n onConfirmDeleteDeactivateAccident(payload);\r\n };\r\n\r\n return (\r\n \r\n showDialog(false, accident, status)}\r\n handleSubmit={handleConfirmAction}\r\n showProgressBar={isSaving}\r\n errorMessage={errorMessage}\r\n isDanger={true}\r\n />\r\n \r\n );\r\n}\r\n\r\nexport default DeleteOrDeactivateAccidentDialog;\r\n","import { connect } from 'react-redux';\r\n\r\nimport DeleteOrDeactivateAccidentDialog from '../../components/DeleteOrDeactivateAccidentDialog';\r\nimport {\r\n showDeleteOrActivateAccidentDialogStatChanged,\r\n confirmDeleteDeactivateAccidentDispatc\r\n} from '../../actions';\r\n\r\nconst mapStateToProps = (state, ownprops) => {\r\n return {\r\n accident: state.accident.deleteOrDeactivatingAccident.accident,\r\n open: state.accident.deleteOrDeactivatingAccident.open,\r\n status: state.accident.deleteOrDeactivatingAccident.status,\r\n isSaving: state.accident.deleteOrDeactivatingAccident.isSaving,\r\n errorMessage: state.accident.deleteOrDeactivatingAccident.errorMessage\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => {\r\n return {\r\n showDialog: (open, accident, status) => {\r\n dispatch(\r\n showDeleteOrActivateAccidentDialogStatChanged(open, accident, status)\r\n );\r\n },\r\n onConfirmDeleteDeactivateAccident: (payload) => {\r\n dispatch(confirmDeleteDeactivateAccidentDispatc(payload));\r\n }\r\n };\r\n};\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(DeleteOrDeactivateAccidentDialog);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Paper, Grid, Typography, Button } from '@material-ui/core';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport DeleteOutlineIcon from '@material-ui/icons/DeleteOutline';\r\n\r\nimport { injuryMappers } from '../../mappers';\r\nimport EditAccidentDialog from '../../containers/EditAccidentDialog';\r\nimport DeleteOrDeactivateAccidentDialog from '../../containers/DeleteOrDeactivateAccidentDialog';\r\n\r\nimport { utcToLocal } from './../../utils/timeConverter';\r\nimport { branchStatus } from '../../constants';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n padding: theme.spacing(2),\r\n paddingLeft: theme.spacing(3),\r\n marginBottom: theme.spacing(1)\r\n },\r\n personnelName: {\r\n fontSize: 18,\r\n fontWeight: 'normal',\r\n paddingTop: theme.spacing(1),\r\n paddingRight: theme.spacing(3),\r\n display: 'inline'\r\n },\r\n email: {\r\n paddingTop: theme.spacing(1),\r\n display: 'inline'\r\n },\r\n deactivateContainer: {\r\n paddingTop: theme.spacing(2)\r\n },\r\n editDeleteContainer: {\r\n // paddingTop: theme.spacing(1)\r\n },\r\n editButton: {\r\n color: theme.palette.secondary.main\r\n },\r\n deleteButton: {\r\n color: theme.palette.danger.main\r\n },\r\n companyDetails: {\r\n display: 'inline'\r\n }\r\n}));\r\n\r\nconst SingleAccident = (props) => {\r\n const {\r\n accident,\r\n handleAccidentEditClick,\r\n openDeleteOrDeactiveAccidentDialog,\r\n loggedInUser\r\n } = props;\r\n const classes = useStyles();\r\n\r\n const formattedTime = (accident) => {\r\n const convertedTime = utcToLocal(accident.injuryDate);\r\n let secondes = convertedTime.get('second');\r\n if (secondes > 0) {\r\n return convertedTime.format('DD/MM/YYYY hh:mm A');\r\n } else {\r\n return convertedTime.format('DD/MM/YYYY');\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n {accident &&\r\n injuryMappers.mapInjuryTypeToText(accident.injuryTypeId)}\r\n \r\n \r\n {accident && formattedTime(accident)}\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {/* }\r\n onClick={() =>\r\n openDeleteOrDeactiveAccidentDialog(true, { ...accident })\r\n }\r\n >\r\n Deactivate\r\n */}\r\n
    \r\n
    \r\n \r\n
    \r\n }\r\n className={classes.editButton}\r\n onClick={() =>\r\n handleAccidentEditClick({ ...accident }, loggedInUser)\r\n }\r\n >\r\n Accident Detail\r\n \r\n
    \r\n }\r\n className={classes.deleteButton}\r\n onClick={() =>\r\n openDeleteOrDeactiveAccidentDialog(\r\n true,\r\n { ...accident },\r\n branchStatus.DELETE\r\n )\r\n }\r\n >\r\n Delete\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst AccidentsList = (props) => {\r\n const {\r\n fetchAllAccidentsForBranch,\r\n branchId,\r\n accidents,\r\n handleAccidentEditClick,\r\n openDeleteOrDeactiveAccidentDialog,\r\n loggedInUser\r\n } = props;\r\n const classes = useStyles();\r\n\r\n React.useEffect(\r\n () => {\r\n if (branchId) {\r\n fetchAllAccidentsForBranch(branchId);\r\n }\r\n },\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [branchId]\r\n );\r\n\r\n accidents.sort((a, b) => {\r\n return new Date(b.injuryDate) - new Date(a.injuryDate);\r\n });\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n
    \r\n {accidents &&\r\n accidents.map((accident) => {\r\n return (\r\n \r\n );\r\n })}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default AccidentsList;\r\n","// AccidentsList/index.js\r\nimport { connect } from 'react-redux';\r\nimport AccidentsList from '../../components/AccidentsList';\r\nimport { domainType } from '../../constants';\r\n\r\nimport {\r\n fetchAllAccidentsForBranchDispatch,\r\n openEditAccidentDialogDispatch,\r\n accidentEditClickDispatch,\r\n showDeleteOrActivateAccidentDialogStatChanged,\r\n fetchExistingAttachmentsForTheAccidentDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n branchId: state.branch.branch.item && state.branch.branch.item.id,\r\n accidents: state.accidents.accidentsByBranch.items\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n fetchAllAccidentsForBranch: (branchId) => {\r\n dispatch(fetchAllAccidentsForBranchDispatch(branchId));\r\n },\r\n handleAccidentEditClick: (accident, loggedInUserId) => {\r\n dispatch(openEditAccidentDialogDispatch(true));\r\n dispatch(accidentEditClickDispatch(accident));\r\n dispatch(\r\n fetchExistingAttachmentsForTheAccidentDispatch(\r\n domainType.ACCIDENT,\r\n accident.id,\r\n loggedInUserId\r\n )\r\n );\r\n },\r\n openDeleteOrDeactiveAccidentDialog: (open, accident, status) => {\r\n dispatch(\r\n showDeleteOrActivateAccidentDialogStatChanged(open, accident, status)\r\n );\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AccidentsList);\r\n","import React from 'react';\r\n\r\nimport CreateEditAccidentFormUi from '../CreateEditAccidentFormUi';\r\n\r\nconst CreateAccidentDialog = (props) => {\r\n const {\r\n openDialog,\r\n openCreateAccidentDialog,\r\n onHandleInputChange,\r\n accident,\r\n submitAccident,\r\n isSaving,\r\n personnels,\r\n userId,\r\n fetchAllPersonnels,\r\n branchId,\r\n isLoadingPersonnel,\r\n allAttachments,\r\n onRemoveAttachment,\r\n openCreatePersonnelDialog\r\n } = props;\r\n\r\n React.useEffect(() => {\r\n if (!personnels.length && openDialog === true) {\r\n fetchAllPersonnels(branchId);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [openDialog]); \r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n accident.departmentId = 1;\r\n accident.branchId = branchId;\r\n\r\n submitAccident(accident);\r\n };\r\n\r\n const handleRemoveAttachment = (attachment) => {\r\n onRemoveAttachment(attachment);\r\n };\r\n\r\n const handleAttahmentChange = (value, inputFieldName) => {\r\n const { onUpdateAttachment } = props;\r\n onUpdateAttachment(value, inputFieldName);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CreateAccidentDialog;\r\n","// CreateAccidentDialog/index.js\r\nimport { connect } from 'react-redux';\r\nimport CreateAccidentDialog from '../../components/CreateAccidentDialog';\r\n\r\nimport {\r\n openCreateAccidentDialogDispatch,\r\n handleAccidentInputChangeDispatch,\r\n fetchAllPersonnelsDispatch,\r\n submitAccidentDispatch,\r\n removeAccidentAttachment,\r\n openCreatePersonnelDialogDispatch\r\n} from '../../actions';\r\nimport { submitMode } from '../../constants';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.accident.newAccident.showCreateAccidentDialog,\r\n accident: state.accident.newAccident.item,\r\n isSaving: state.accident.newAccident.isSaving,\r\n personnels: state.personnels.allPersonnels.items,\r\n userId: state.users.user.item.id,\r\n branchId: state.branch.branch.item && state.branch.branch.item.id,\r\n isLoadingPersonnel: state.personnels.allPersonnels.isLoading,\r\n allAttachments: state.accident.newAccident.item.attachmentFiles\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openCreateAccidentDialog: (open) => {\r\n dispatch(openCreateAccidentDialogDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(handleAccidentInputChangeDispatch(value, inputFieldName));\r\n },\r\n submitAccident: (accident) => {\r\n const mode = submitMode.CREATE;\r\n dispatch(submitAccidentDispatch(accident, mode));\r\n },\r\n fetchAllPersonnels: (userId) => {\r\n dispatch(fetchAllPersonnelsDispatch(userId));\r\n },\r\n onUpdateAttachment: (value, inputFieldName) => {\r\n dispatch(handleAccidentInputChangeDispatch(value, inputFieldName));\r\n },\r\n onRemoveAttachment: (attachment) => {\r\n dispatch(removeAccidentAttachment(attachment));\r\n },\r\n openCreatePersonnelDialog: (open) => {\r\n dispatch(openCreatePersonnelDialogDispatch(open, true));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(CreateAccidentDialog);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GenericViewPanel from './../GenericViewPanel';\r\nimport AccidentsList from '../../containers/AccidentsList';\r\nimport ButtonSearchBoxActionBar from '../ButtonSearchBoxActionBar';\r\nimport CreateAccidentDialog from '../../containers/CreateAccidentDialog';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n actionBar: {\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n }\r\n}));\r\n\r\nconst AccidentsPanel = (props) => {\r\n const classes = useStyles();\r\n const {\r\n searchTerm,\r\n handleSearchTermChange,\r\n openCreateAccidentDialog\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default AccidentsPanel;\r\n","// AccidentsPanel/index.js\r\nimport { connect } from 'react-redux';\r\nimport AccidentsPanel from '../../components/AccidentsPanel';\r\n\r\nimport {\r\n searchTermChangeForAllAccidents,\r\n openCreateAccidentDialogDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n searchTerm: state.accidents.accidentsByBranch.searchTerm\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n handleSearchTermChange: (searchTerm) => {\r\n dispatch(searchTermChangeForAllAccidents(searchTerm));\r\n },\r\n openCreateAccidentDialog: (open) => {\r\n dispatch(openCreateAccidentDialogDispatch(open));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AccidentsPanel);\r\n","import React from 'react';\r\n\r\nimport GenericViewPanel from './../GenericViewPanel';\r\n\r\nconst MeetingsPanel = (props) => {\r\n return (\r\n \r\n

    MeetingsPanel

    \r\n
    \r\n );\r\n};\r\n\r\nexport default MeetingsPanel;\r\n","// MeetingsPanel/index.js\r\nimport { connect } from 'react-redux';\r\nimport MeetingsPanel from '../../components/MeetingsPanel';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {};\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {};\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MeetingsPanel);\r\n","const validateEmail = (email) => {\r\n const re = /^(([^<>()\\[\\]\\\\.,;:\\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 return re.test(String(email).toLowerCase());\r\n};\r\n\r\nexport default validateEmail;\r\n","import React from 'react';\r\nimport {\r\n DialogTitle,\r\n Button,\r\n DialogActions,\r\n DialogContent,\r\n TextField,\r\n Grid,\r\n LinearProgress\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport Dialog from '../Dialog';\r\nimport { inputFieldNames } from '../../constants';\r\nimport FancyDropDown from '../FancyDropDown';\r\nimport { userRolesEnum } from '../../constants';\r\nimport validateEmail from '../../mappers/validateEmail';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n dialog: {},\r\n dialogTitle: {\r\n background: '#f0f0f0'\r\n },\r\n dialogContent: {\r\n width: 580,\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(3)\r\n },\r\n actionButton: {\r\n width: 180,\r\n float: 'right',\r\n margin: theme.spacing(2)\r\n },\r\n footer: {\r\n background: '#f0f0f0'\r\n }\r\n}));\r\n\r\nconst CreateEditUserFormUI = (props) => {\r\n const {\r\n openDialog,\r\n isSaving,\r\n handleSubmit,\r\n title,\r\n user,\r\n onHandleInputChange,\r\n openCreateUserDialog,\r\n branches,\r\n companies,\r\n isLoadingBranches,\r\n isLoadingCompanies,\r\n actionButtonText = 'Add',\r\n creatingFromAdmin,\r\n loggedInUser\r\n } = props;\r\n const [isEmailCorrect, setEmailCorrectness] = React.useState(null);\r\n\r\n const classes = useStyles();\r\n\r\n const onDialogClose = () => {\r\n openCreateUserDialog(false);\r\n };\r\n\r\n const handleInputChange = (e, inputfieldName) => {\r\n if (inputfieldName === inputFieldNames.USER_EMAIL) {\r\n setEmailCorrectness(validateEmail(e.target.value));\r\n }\r\n\r\n onHandleInputChange(e.target.value, inputfieldName);\r\n };\r\n\r\n let error;\r\n if (isEmailCorrect === true) {\r\n error = false;\r\n } else if (isEmailCorrect === false) {\r\n error = true;\r\n }\r\n\r\n return (\r\n \r\n \r\n {isSaving ? : ''}\r\n \r\n {title}\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.USER_NAME)\r\n }\r\n value={user.name}\r\n fullWidth={true}\r\n />\r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.USER_EMAIL)\r\n }\r\n value={user.email}\r\n fullWidth={true}\r\n />\r\n \r\n {user.id ? (\r\n ''\r\n ) : (\r\n \r\n \r\n handleInputChange(e, inputFieldNames.USER_PASSWORD)\r\n }\r\n value={user.password}\r\n fullWidth={true}\r\n />\r\n \r\n )}\r\n\r\n {creatingFromAdmin && (\r\n \r\n \r\n handleInputChange(e, inputFieldNames.USER_ROLE)\r\n }\r\n items={\r\n loggedInUser.role === 4\r\n ? userRolesEnum.userRolesEnum.slice(2)\r\n : userRolesEnum.userRolesEnum.slice(1)\r\n }\r\n dropDownWidth=\"100%\"\r\n className={classes.dropDown}\r\n valueField=\"id\"\r\n displayField=\"value\"\r\n required\r\n />\r\n \r\n )}\r\n\r\n {creatingFromAdmin && user.role === 3 && (\r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.USER_BRANCH)\r\n }\r\n items={branches}\r\n dropDownWidth=\"100%\"\r\n className={classes.dropDown}\r\n valueField=\"id\"\r\n displayField=\"name\"\r\n disabled={isLoadingBranches}\r\n required={user.role === 3}\r\n />\r\n \r\n \r\n )}\r\n\r\n {creatingFromAdmin && user.role === 4 && (\r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.USER_COMPANY)\r\n }\r\n items={companies}\r\n dropDownWidth=\"100%\"\r\n className={classes.dropDown}\r\n valueField=\"id\"\r\n displayField=\"name\"\r\n disabled={isLoadingCompanies}\r\n required={user.role === 4}\r\n />\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n Cancel\r\n \r\n \r\n {actionButtonText}\r\n \r\n \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default CreateEditUserFormUI;\r\n","import React from 'react';\r\n\r\nimport CreateEditUserFormUI from '../CreateEditUserFormUI';\r\n\r\nconst EditUserDialog = (props) => {\r\n const {\r\n openDialog,\r\n user,\r\n isSaving,\r\n openEditUserDialog,\r\n onHandleInputChange,\r\n submitCompany,\r\n branches,\r\n companies,\r\n isLoadingBranches,\r\n isLoadingCompanies,\r\n fetchAllBranches,\r\n fetchAllCompanies,\r\n loggedInUser\r\n } = props;\r\n\r\n React.useEffect(() => {\r\n if (branches && branches.length === 0 && openDialog) {\r\n fetchAllBranches();\r\n fetchAllCompanies();\r\n }\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [openDialog]);\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n submitCompany(user);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default EditUserDialog;\r\n","// EditUserDialog/index.js\r\nimport { connect } from 'react-redux';\r\nimport EditUserDialog from '../../components/EditUserDialog';\r\n\r\nimport {\r\n openEditUserDialogDispatch,\r\n handleUserInputChangeDispatch,\r\n submitUserDispatch,\r\n getBranches,\r\n fetchAllCompaniesDispatch\r\n} from '../../actions';\r\nimport { submitMode } from '../../constants';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.user.newUser.showEditUserDialog,\r\n user: state.user.newUser.item,\r\n isSaving: state.user.newUser.isSaving,\r\n branches: state.branches.allBranches.items,\r\n companies: state.companies.allCompanies.items,\r\n isLoadingBranches: state.branches.allBranches.isLoading,\r\n isLoadingCompanies: state.companies.allCompanies.isLoading,\r\n loggedInUser: state.users.user.item\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openEditUserDialog: (open) => {\r\n dispatch(openEditUserDialogDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(handleUserInputChangeDispatch(value, inputFieldName));\r\n },\r\n submitCompany: (company) => {\r\n const mode = submitMode.UPDATE;\r\n dispatch(submitUserDispatch(company, mode));\r\n },\r\n fetchAllBranches: () => {\r\n dispatch(getBranches());\r\n },\r\n fetchAllCompanies: () => {\r\n dispatch(fetchAllCompaniesDispatch());\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EditUserDialog);\r\n","import React from 'react';\r\n\r\nimport CreateEditUserFormUI from '../CreateEditUserFormUI';\r\n\r\nconst EditUserFromBranchDialog = (props) => {\r\n const {\r\n openDialog,\r\n user,\r\n isSaving,\r\n openEditUserDialog,\r\n onHandleInputChange,\r\n submitUser,\r\n branches,\r\n isLoadingBranches,\r\n fetchAllBranches,\r\n loggedInUser\r\n } = props;\r\n\r\n React.useEffect(() => {\r\n if (branches && branches.length === 0 && openDialog) {\r\n fetchAllBranches();\r\n }\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [openDialog]);\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n submitUser(user);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default EditUserFromBranchDialog;\r\n","// EditUserDialog/index.js\r\nimport { connect } from 'react-redux';\r\nimport EditUserFromBranchDialog from '../../components/EditUserFromBranchDialog';\r\n\r\nimport {\r\n openEditUserDialogDispatch,\r\n handleUserInputChangeDispatch,\r\n submitUserDispatch,\r\n getBranches\r\n} from '../../actions';\r\nimport { submitMode } from '../../constants';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.user.newUser.showEditUserDialog,\r\n user: state.user.newUser.item,\r\n isSaving: state.user.newUser.isSaving,\r\n branches: state.branches.allBranches.items,\r\n isLoadingBranches: state.branches.allBranches.isLoading,\r\n loggedInUser: state.users.user.item\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openEditUserDialog: (open) => {\r\n dispatch(openEditUserDialogDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(handleUserInputChangeDispatch(value, inputFieldName));\r\n },\r\n submitUser: (user) => {\r\n const mode = submitMode.UPDATE;\r\n dispatch(submitUserDispatch(user, mode));\r\n },\r\n fetchAllBranches: () => {\r\n dispatch(getBranches());\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(EditUserFromBranchDialog);\r\n","import React from 'react';\r\nimport { userStatus } from '../../constants';\r\nimport DualActionDialog from '../DualActionDialog';\r\n\r\nconst DeleteUserDialog = (props) => {\r\n const { user, open, showDialog, errorMessage, isUpdating } = props;\r\n\r\n const handleConfirmAction = async (event) => {\r\n event.preventDefault();\r\n const { onConfirmUserDelete, user } = props;\r\n const payload = {\r\n ...user,\r\n status: userStatus.DELETE\r\n };\r\n onConfirmUserDelete(payload);\r\n };\r\n\r\n return (\r\n showDialog(false, user)}\r\n handleSubmit={handleConfirmAction}\r\n showProgressBar={isUpdating}\r\n errorMessage={errorMessage}\r\n isDanger={true}\r\n />\r\n );\r\n};\r\n\r\nexport default DeleteUserDialog;\r\n","import { connect } from 'react-redux';\r\nimport DeleteUserDialog from '../../components/DeleteUserDialog';\r\nimport { submitMode } from '../../constants';\r\n\r\nimport {\r\n openDeleteUserDialogDispatch,\r\n submitUserDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n user: state.user.newUser.item,\r\n open: state.user.newUser.showDeleteUserDialog,\r\n isUpdating: state.user.newUser.isSaving,\r\n errorMessage: state.user.newUser.errorMessage\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n showDialog: (open, user) => {\r\n dispatch(openDeleteUserDialogDispatch(open));\r\n },\r\n onConfirmUserDelete: (user) => {\r\n const mode = submitMode.UPDATE;\r\n dispatch(submitUserDispatch(user, mode));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DeleteUserDialog);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Paper, Grid, Typography, Button } from '@material-ui/core';\r\nimport BlockIcon from '@material-ui/icons/Block';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport DeleteOutlineIcon from '@material-ui/icons/DeleteOutline';\r\n\r\nimport { userRoleMapper } from '../../mappers';\r\nimport EditUserDialog from '../../containers/EditUserDialog';\r\n\r\nimport EditUserFromBranchDialog from '../../containers/EditUserFromBranchDialog';\r\n// import EditUserDialog from '../../containers/EditUserDialog';\r\n\r\n// import { companyStatus } from '../../constants';\r\n\r\nimport DeleteUserDialog from './../../containers/DeleteUserDialog';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n padding: theme.spacing(2),\r\n paddingLeft: theme.spacing(3),\r\n marginBottom: theme.spacing(1)\r\n },\r\n userName: {\r\n fontSize: 18,\r\n fontWeight: 800,\r\n paddingTop: theme.spacing(1)\r\n },\r\n email: {\r\n paddingTop: theme.spacing(1)\r\n },\r\n deactivateContainer: {\r\n paddingTop: theme.spacing(2)\r\n },\r\n editDeleteContainer: {\r\n // paddingTop: theme.spacing(1)\r\n },\r\n editButton: {\r\n color: theme.palette.secondary.main\r\n },\r\n deleteButton: {\r\n color: theme.palette.danger.main\r\n },\r\n bold: {\r\n fontWeight: 600\r\n }\r\n}));\r\n\r\nconst SingleUser = (props) => {\r\n const classes = useStyles();\r\n const { user, handleUserEditClick, handlDeleteUserDialog } = props;\r\n\r\n const isDeletable = user && user.role > 1;\r\n\r\n return (\r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n {user && user.name}\r\n \r\n \r\n Email:{' '}\r\n {user && user.email}\r\n \r\n \r\n Role:{' '}\r\n {user && userRoleMapper.mapUserRole(user.role)}\r\n \r\n \r\n Status: {' '}\r\n {user && user.status && 'Active'}\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n }\r\n // onClick={() =>\r\n // openDeleteOrDeactiveCompanyDialog(\r\n // true,\r\n // companyId,\r\n // companyStatus.DEACTIVE\r\n // )\r\n // }\r\n style={{ visibility: 'hidden' }}\r\n >\r\n Deactivate\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n }\r\n className={classes.editButton}\r\n onClick={() => handleUserEditClick({ ...user })}\r\n >\r\n Edit\r\n \r\n {isDeletable && (\r\n }\r\n className={classes.deleteButton}\r\n onClick={() => handlDeleteUserDialog(true, { ...user })}\r\n >\r\n Delete\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst UsersList = (props) => {\r\n const {\r\n users,\r\n fetchAllUsers,\r\n onUserEditClick,\r\n isForBranch,\r\n onOpenDeleteUserDialog\r\n } = props;\r\n\r\n React.useEffect(() => {\r\n fetchAllUsers();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const handleUserEditClick = (company) => {\r\n onUserEditClick(company);\r\n };\r\n\r\n if (!users) {\r\n return;\r\n }\r\n\r\n const handlDeleteUserDialog = (open, user) => {\r\n onOpenDeleteUserDialog(open, user);\r\n };\r\n\r\n return (\r\n \r\n {isForBranch && }\r\n\r\n {!isForBranch && }\r\n\r\n \r\n\r\n
    \r\n {users &&\r\n users.map((user) => {\r\n return (\r\n \r\n );\r\n })}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default UsersList;\r\n","import React from 'react';\r\nimport UsersList from '../../components/UsersList';\r\n\r\nconst UserListForBranch = (props) => {\r\n const {\r\n users,\r\n branch,\r\n fetchAllUsers,\r\n onUserEditClick,\r\n onOpenDeleteUserDialog\r\n } = props;\r\n\r\n React.useEffect(() => {\r\n fetchAllUsers();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n if (!users) {\r\n return;\r\n }\r\n //users, fetchAllUsers, onUserEditClick, isForBranch\r\n return (\r\n \r\n b.branchId === branch.item.id)}\r\n fetchAllUsers={fetchAllUsers}\r\n onUserEditClick={onUserEditClick}\r\n isForBranch={true}\r\n onOpenDeleteUserDialog={onOpenDeleteUserDialog}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default UserListForBranch;\r\n","// UsersList/index.js\r\nimport { connect } from 'react-redux';\r\n\r\nimport UsersListforBranch from '../../components/UserListForBranch';\r\nimport {\r\n fetchAllUsersDispatch,\r\n userEditClickDispatch,\r\n openEditUserDialogDispatch,\r\n openDeleteUserDialogDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n users: state.users.allUsers && state.users.allUsers.items,\r\n branch: state.branch.branch && state.branch.branch\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n fetchAllUsers: () => {\r\n dispatch(fetchAllUsersDispatch());\r\n },\r\n onUserEditClick: (user) => {\r\n dispatch(openEditUserDialogDispatch(true));\r\n dispatch(userEditClickDispatch(user));\r\n },\r\n onOpenDeleteUserDialog: (open, user) => {\r\n dispatch(openDeleteUserDialogDispatch(true));\r\n dispatch(userEditClickDispatch(user));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(UsersListforBranch);\r\n","// CreateUserDialog/index.js\r\nimport React from 'react';\r\n\r\nimport { userStatus } from '../../constants';\r\nimport CreateEditUserFormUI from '../CreateEditUserFormUI';\r\n\r\nfunction CreateUserFromBranchDialog(props) {\r\n const {\r\n openDialog,\r\n user,\r\n branch,\r\n isSaving,\r\n openCreateUserDialog,\r\n onHandleInputChange,\r\n submitUser,\r\n branches,\r\n fetchAllBranches,\r\n isLoadingBranches,\r\n loggedInUser\r\n } = props;\r\n\r\n React.useEffect(() => {\r\n if (branches && branches.length === 0 && openDialog) {\r\n fetchAllBranches();\r\n }\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [openDialog]);\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n const { user, branch } = props;\r\n const payload = {\r\n ...user,\r\n status: userStatus.ACTIVE,\r\n branchId: branch.id,\r\n role: 3\r\n };\r\n submitUser(payload);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default CreateUserFromBranchDialog;\r\n","import { connect } from 'react-redux';\r\n\r\nimport CreateUserFromBranchDialog from '../../components/CreateUserFromBranchDialog';\r\nimport { submitMode } from '../../constants';\r\n\r\nimport {\r\n openCreateUserDialogDispatch,\r\n handleUserInputChangeDispatch,\r\n submitUserDispatch,\r\n getBranches\r\n} from '../../actions';\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return {\r\n openDialog: state.user.newUser.showCreateUserDialog,\r\n user: state.user.newUser.item,\r\n branch: state.branch.branch.item,\r\n isSaving: state.user.newUser.isSaving,\r\n branches: state.branches.allBranches.items,\r\n isLoadingBranches: state.branches.allBranches.isLoading,\r\n loggedInUser: state.users.user.item\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => {\r\n return {\r\n openCreateUserDialog: (open) => {\r\n dispatch(openCreateUserDialogDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(handleUserInputChangeDispatch(value, inputFieldName));\r\n },\r\n submitUser: (user) => {\r\n const mode = submitMode.CREATE;\r\n dispatch(submitUserDispatch(user, mode));\r\n },\r\n fetchAllBranches: () => {\r\n dispatch(getBranches());\r\n }\r\n };\r\n};\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(CreateUserFromBranchDialog);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GenericViewPanel from './../GenericViewPanel';\r\nimport UsersListForBranch from '../../containers/UserListForBranch';\r\nimport CreateUserFromBranchDialog from '../../containers/CreateUserFromBranchDialog';\r\nimport ButtonSearchBoxActionBar from '../ButtonSearchBoxActionBar';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n actionBar: {\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n }\r\n}));\r\n\r\nconst UserPannel = (props) => {\r\n const classes = useStyles();\r\n const { openCreateUserDialog, searchTerm, handleSearchTermChange } = props;\r\n\r\n return (\r\n \r\n \r\n\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default UserPannel;\r\n","import { connect } from 'react-redux';\r\nimport UserPannel from '../../components/UserPannel';\r\n\r\nimport {\r\n openCreateUserDialogDispatch,\r\n searchTermChangeForAllUsers\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n searchTerm: state.users.allUsers.searchTerm\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openCreateUserDialog: (open) => {\r\n dispatch(openCreateUserDialogDispatch(open));\r\n },\r\n handleSearchTermChange: (searchTerm) => {\r\n dispatch(searchTermChangeForAllUsers(searchTerm));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(UserPannel);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Paper, Grid, Typography, Button } from '@material-ui/core';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport DeleteOutlineIcon from '@material-ui/icons/DeleteOutline';\r\nimport moment from 'moment';\r\nimport DualActionDialog from '../DualActionDialog';\r\nimport { hazardStatus } from '../../constants';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n padding: theme.spacing(2),\r\n paddingLeft: theme.spacing(3),\r\n marginBottom: theme.spacing(1)\r\n },\r\n date: {\r\n paddingTop: theme.spacing(1),\r\n display: 'inline',\r\n paddingLeft: theme.spacing(3)\r\n },\r\n dateExpired: {\r\n paddingTop: theme.spacing(1),\r\n display: 'inline',\r\n paddingLeft: theme.spacing(3),\r\n color: theme.palette.danger.main,\r\n fontWeight: 800\r\n },\r\n deactivateContainer: {\r\n paddingTop: theme.spacing(2)\r\n },\r\n editDeleteContainer: {\r\n // paddingTop: theme.spacing(1)\r\n },\r\n editButton: {\r\n color: theme.palette.secondary.main\r\n },\r\n deleteButton: {\r\n color: theme.palette.danger.main\r\n },\r\n companyDetails: {\r\n display: 'inline'\r\n },\r\n hazardDescription: {\r\n fontSize: 18,\r\n fontWeight: 'normal',\r\n paddingTop: theme.spacing(1),\r\n paddingRight: theme.spacing(3),\r\n display: 'inline'\r\n },\r\n hazardStatus: {\r\n display: 'inline',\r\n paddingRight: theme.spacing(10)\r\n }\r\n}));\r\n\r\nconst SingleHazard = (props) => {\r\n const {\r\n hazard,\r\n documents,\r\n handleHazardEditClick,\r\n handleHazardControlEditClick,\r\n handleHazardReviewClick,\r\n handleHazardManagementLogsClick,\r\n openDeleteHazardDialog,\r\n loggedInUser\r\n } = props;\r\n const classes = useStyles();\r\n const isExpired = moment().isAfter(hazard.nextReviewDate);\r\n\r\n const getHazardStatus = (statusId) => {\r\n const value = hazardStatus.hazardStatus.find((item) => item.id === statusId)\r\n .value;\r\n return value;\r\n };\r\n\r\n return (\r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n {hazard && hazard.description}\r\n \r\n
    \r\n
    \r\n \r\n Status: \r\n \r\n {hazard && getHazardStatus(hazard.status)}\r\n \r\n \r\n {hazard &&\r\n hazard.nextReviewDate &&\r\n `Next Review - ${moment(hazard.nextReviewDate).format(\r\n 'DD/MM/YYYY'\r\n )}`}\r\n \r\n \r\n \r\n
    \r\n }\r\n className={classes.editButton}\r\n onClick={() =>\r\n handleHazardEditClick({ ...hazard }, loggedInUser.id)\r\n }\r\n >\r\n Hazard Detail\r\n \r\n }\r\n className={classes.editButton}\r\n onClick={() => handleHazardControlEditClick({ ...hazard })}\r\n >\r\n Controls\r\n \r\n }\r\n className={classes.editButton}\r\n onClick={() => handleHazardReviewClick({ ...hazard })}\r\n >\r\n Reviews\r\n \r\n }\r\n className={classes.editButton}\r\n onClick={() => handleHazardManagementLogsClick({ ...hazard })}\r\n >\r\n Management Logs\r\n \r\n }\r\n className={classes.deleteButton}\r\n onClick={() => openDeleteHazardDialog(true, { ...hazard })}\r\n >\r\n Delete\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst HazardsList = (props) => {\r\n const {\r\n branchId,\r\n hazards,\r\n documents,\r\n fetchAllHazardsForBranch,\r\n fetchAllDocuments,\r\n handleHazardEditClick,\r\n handleHazardControlEditClick,\r\n handleHazardReviewClick,\r\n handleHazardManagementLogsClick,\r\n openDeleteDialog,\r\n openDeleteHazardDialog,\r\n hazardToBeDeleted,\r\n isDeletingHazard,\r\n errorMessage,\r\n submitDeleteHazardRequest,\r\n selectedSortFilter,\r\n loggedInUser\r\n } = props;\r\n\r\n React.useEffect(\r\n () => {\r\n if (branchId) {\r\n fetchAllHazardsForBranch(branchId);\r\n }\r\n if (loggedInUser.role === 1) {\r\n fetchAllDocuments(branchId);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [branchId]\r\n );\r\n\r\n const handleConfirmDelete = (e) => {\r\n submitDeleteHazardRequest(hazardToBeDeleted);\r\n };\r\n\r\n return (\r\n \r\n {openDeleteDialog === true ? (\r\n openDeleteHazardDialog(false, hazardToBeDeleted)}\r\n handleSubmit={handleConfirmDelete}\r\n showProgressBar={isDeletingHazard || false}\r\n errorMessage={errorMessage || ''}\r\n isDanger={true}\r\n />\r\n ) : null}\r\n {hazards &&\r\n hazards.map((hazard) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport default HazardsList;\r\n","// HazardsList/index.js\r\nimport { connect } from 'react-redux';\r\nimport HazardsList from '../../components/HazardsList';\r\n\r\nimport { domainType } from '../../constants';\r\nimport { documentType } from '../../constants';\r\n\r\nimport {\r\n fetchAllHazardsForBranchDispatch,\r\n fetchAllDocumentsDispatch,\r\n openEditHazardPanelDispatch,\r\n openEditHazardDialogDispatch,\r\n hazardEditClickDispatch,\r\n openDeleteHazardDialogDispatch,\r\n submitDeleteHazardRequestDispatch,\r\n openHazardReviewPanelDispatch,\r\n openHazardManagementLogPanelDispatch,\r\n fetchExistingAttachmentsForTheHazardDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n branchId: state.branch.branch.item && state.branch.branch.item.id,\r\n hazards: state.hazards.hazardsByBranch.items,\r\n documents: state.settings.allDocuments.items,\r\n openDeleteDialog: state.hazards.deleteHazard.openDialog,\r\n hazardToBeDeleted: state.hazards.deleteHazard.hazard,\r\n errorMessage: state.hazards.deleteHazard.errorMessage,\r\n isDeletingHazard: state.hazards.deleteHazard.isSaving,\r\n selectedSortFilter: state.hazards.hazardDescriptionFilter.filter,\r\n loggedInUser: state.users.user.item\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n fetchAllHazardsForBranch: (branchId) => {\r\n dispatch(fetchAllHazardsForBranchDispatch(branchId));\r\n },\r\n fetchAllDocuments: (branchId) => {\r\n dispatch(fetchAllDocumentsDispatch(documentType.DOCUMENT_LIBRARY, branchId));\r\n },\r\n handleHazardEditClick: (hazard, loggedInUserId) => {\r\n dispatch(openEditHazardDialogDispatch(true));\r\n dispatch(hazardEditClickDispatch(hazard));\r\n dispatch(\r\n fetchExistingAttachmentsForTheHazardDispatch(\r\n domainType.HAZARD,\r\n hazard.id,\r\n loggedInUserId\r\n )\r\n );\r\n },\r\n handleHazardControlEditClick: (hazard) => {\r\n dispatch(openEditHazardPanelDispatch(true));\r\n dispatch(hazardEditClickDispatch(hazard));\r\n },\r\n handleHazardReviewClick: (hazard) => {\r\n dispatch(openHazardReviewPanelDispatch(true));\r\n dispatch(hazardEditClickDispatch(hazard));\r\n },\r\n handleHazardManagementLogsClick: (hazard) => {\r\n dispatch(openHazardManagementLogPanelDispatch(true));\r\n dispatch(hazardEditClickDispatch(hazard));\r\n },\r\n openDeleteHazardDialog: (open, hazard) => {\r\n dispatch(openDeleteHazardDialogDispatch(open, hazard));\r\n },\r\n submitDeleteHazardRequest: (hazard) => {\r\n dispatch(submitDeleteHazardRequestDispatch(hazard));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(HazardsList);\r\n","import React, { useEffect } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Paper from '@material-ui/core/Paper';\r\n\r\nimport {Card, CardActions, CardMedia, Button, Tooltip} from '@material-ui/core';\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: 'flex',\r\n justifyContent: 'left',\r\n flexWrap: 'wrap',\r\n listStyle: 'none',\r\n padding: theme.spacing(0.5),\r\n margin: 0\r\n },\r\n chip: {\r\n margin: theme.spacing(0.5)\r\n },\r\n card: {\r\n width: 170,\r\n height: 240,\r\n margin: 'auto'\r\n },\r\n cardMedia:{\r\n width: 160,\r\n height: 180,\r\n margin: 'auto'\r\n },\r\n cardActions:{\r\n marginTop: theme.spacing(2),\r\n height: 30\r\n }\r\n}));\r\n\r\n\r\nconst SingleAttachement = (props) => {\r\nconst {\r\n data,\r\n handleDelete,\r\n fileName\r\n } = props;\r\n const classes = useStyles();\r\n\r\n const [imageUrl, setImageUrl] = React.useState(\"\");\r\n\r\n useEffect(() => {\r\n if (data.fileData == null) {\r\n setImageUrl(data.url)\r\n return\r\n }\r\n\r\n const objectUrl = URL.createObjectURL(data.fileData)\r\n setImageUrl(objectUrl)\r\n\r\n // free memory when ever this component is unmounted\r\n return () => URL.revokeObjectURL(objectUrl)\r\n}, [data])\r\n\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n \r\n \r\n {data.fileData == null ? : }\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\n\r\nconst CardAttachments = (props) => {\r\n const classes = useStyles();\r\n const { allAttachments, onRemoveAttachment } = props;\r\n\r\n const handleDelete = (attachmentToDelete) => () => {\r\n onRemoveAttachment(attachmentToDelete);\r\n };\r\n\r\n if (!allAttachments) return;\r\n\r\n const checkedName = (data) => {\r\n return data.fileData === null ? data.name : data.fileData.name;\r\n };\r\n\r\n return (\r\n \r\n {allAttachments.map((data, index) => {\r\n return (\r\n
  • \r\n < SingleAttachement data = {data} handleDelete = {handleDelete} fileName = {checkedName(data)}> \r\n
  • \r\n );\r\n })}\r\n
    \r\n );\r\n};\r\n\r\nexport default CardAttachments;\r\n\r\n","import React from 'react';\r\nimport {\r\n DialogTitle,\r\n DialogContentText,\r\n DialogContent,\r\n Button,\r\n DialogActions,\r\n Typography,\r\n TableContainer,\r\n TableCell,\r\n TableBody,\r\n TableHead,\r\n TableRow,\r\n Paper,\r\n Table,\r\n Card\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport {hazardRisks} from '../../constants';\r\n\r\nimport Dialog from '../Dialog';\r\n//import { tableCellClasses } from '@material-ui/tableCellClasses';\r\n\r\nconst useStyles = makeStyles((theme) => {\r\n return {\r\n customTable: {\r\n\r\n '& .MuiTableCell-root' : {\r\n 'border-right' : '1px solid rgba(224, 224, 224, 1)'\r\n }\r\n \r\n \r\n \r\n \r\n },\r\n errorMessage: {\r\n color: 'red',\r\n position: 'absolute',\r\n left: 20\r\n },\r\n actionButton: {\r\n width: 180,\r\n float: 'right',\r\n margin: theme.spacing(2)\r\n },\r\n customCell:{\r\n cursor: \"pointer\",\r\n \"&: hover\" : {backgroundColor: \"#000000\"}\r\n }\r\n };\r\n});\r\n\r\n\r\nconst CustomCell = (props) => {\r\n const {\r\n item,\r\n handleCellClicked\r\n } = props;\r\n const classes = useStyles();\r\n\r\n const [color, setColor] = React.useState(item.color);\r\n\r\n const changeColor = () => {\r\n setColor(\"#cccccc\");\r\n }\r\n\r\n const resetColor = () => {\r\n setColor(item.color);\r\n }\r\n\r\n return (\r\n \r\n handleCellClicked(item)}\r\n className={classes.customCell}\r\n onMouseEnter = {changeColor}\r\n onMouseLeave= {resetColor}\r\n width = {170}\r\n style = {{backgroundColor: color}}\r\n > \r\n {item.hasIndexNumber ? item.indexNumber : \"\"} {item.hasIndexNumber &&
    } {item.heading}
    {item.subHeading}\r\n \r\n\r\n );\r\n};\r\n\r\n\r\nconst HazardConsequncesDialog = (props) => {\r\n const classes = useStyles();\r\n\r\n const {\r\n open,\r\n handleSubmit,\r\n handleClose\r\n } = props;\r\n\r\n\r\n return (\r\n \r\n \r\n Consequnces (Impact) \r\n\r\n How severely some one could be injured\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Likelihood\r\n 1
    Insignificant
    (No injuries)
    \r\n 2
    Minor
    (First Aid treatment on site)
    \r\n 3
    Moderate
    (Medical treatment)
    \r\n 4
    Major
    (Extensive injuries)
    \r\n 5
    Catastrophic
    (Fatality)
    \r\n
    \r\n
    \r\n \r\n {hazardRisks.map((row) => (\r\n \r\n {\r\n row.columns.map((dataColumn) => \r\n\r\n dataColumn.hasIndexNumber === true ? \r\n \r\n {dataColumn.hasIndexNumber ? dataColumn.indexNumber : \"\"} {dataColumn.hasIndexNumber &&
    } {dataColumn.heading}
    {dataColumn.subHeading}\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 \r\n \r\n Cancel\r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\n\r\nexport default HazardConsequncesDialog;\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport {\r\n DialogTitle,\r\n Button,\r\n DialogActions,\r\n DialogContent,\r\n TextField,\r\n Grid,\r\n LinearProgress,\r\n Fab,\r\n Typography,\r\n Input,\r\n Card,\r\n CardMedia,\r\n CardContent\r\n} from '@material-ui/core';\r\n\r\nimport Dialog from '../Dialog';\r\nimport { inputFieldNames } from '../../constants';\r\nimport FancyDropDown from '../FancyDropDown';\r\nimport { hazardStatus } from '../../constants';\r\n\r\nimport { Attachment as AttachmentIcon } from '@material-ui/icons';\r\nimport Attachments from '../Attachments';\r\nimport CardAttachments from '../CardAttachments';\r\nimport config from '../../constants/blob_config.json';\r\nimport DocumentListDialog from '../../containers/DocumentListDialog';\r\n\r\nimport LibraryDocumentList from '../LibraryDocumentList';\r\nimport {addDocumentToArray, removeDocumentFromArray} from \"../../mappers/libraryDocumentMapper\";\r\nimport HazardConsequncesDialog from \"../HazardConsequncesDialog\";\r\n\r\nimport Image from \"react-image-enlarger\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n dialog: {},\r\n dialogTitle: {\r\n background: '#f0f0f0'\r\n },\r\n dialogContent: {\r\n width: 580,\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(3)\r\n },\r\n actionButton: {\r\n width: 180,\r\n float: 'right',\r\n margin: theme.spacing(2)\r\n },\r\n footer: {\r\n background: '#f0f0f0'\r\n },\r\n picker: {\r\n margin: 0,\r\n padding: 0\r\n },\r\n addAttachmentFab: {\r\n margin: theme.spacing(1),\r\n marginLeft: 0\r\n },\r\n fab: {\r\n margin: theme.spacing(1)\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n width: 210,\r\n height: '36px !important',\r\n borderWidth: 1.3,\r\n flex: 1\r\n },\r\n extendedIcon: {\r\n marginRight: theme.spacing(1)\r\n },\r\n card: {\r\n cursor: \"pointer\",\r\n height: 220,\r\n margin: 'auto',\r\n width: '100%'\r\n }\r\n\r\n}));\r\n\r\nconst CreateEditHazardFormUi = (props) => {\r\n const {\r\n openDialog,\r\n isSaving,\r\n onHandleInputChange,\r\n openCreateHazardDialog,\r\n handleSubmit,\r\n title,\r\n hazard,\r\n documents,\r\n actionButtonText = 'Add',\r\n handleRemoveAttachment,\r\n allAttachments,\r\n canEditDocuments,\r\n openDocumentListDialog\r\n } = props;\r\n\r\n const hiddenFileInput = React.createRef();\r\n\r\n const [zoomed, setZoomed] = React.useState(false);\r\n\r\n const [consDialogOpen, setConsDialogOpen] = React.useState(false);\r\n\r\n const [isInitialScore, setIsInitialScore] = React.useState(true);\r\n\r\n const classes = useStyles();\r\n\r\n const onDialogClose = () => {\r\n openCreateHazardDialog(false);\r\n };\r\n\r\n const handleInputChange = (e, inputfieldName) => {\r\n if (\r\n inputfieldName === inputFieldNames.LAST_HELD_DATE ||\r\n inputfieldName === inputFieldNames.NEXT_EVENT_DATE\r\n ) {\r\n onHandleInputChange(e, inputfieldName);\r\n } else {\r\n onHandleInputChange(e.target.value, inputfieldName);\r\n }\r\n };\r\n\r\n const handleClick = event => {\r\n hiddenFileInput.current.children[0].click();\r\n };\r\n\r\n const onAttachmendAdded = (event) => {\r\n event.preventDefault();\r\n const { handleAttahmentChange } = props;\r\n const file = event.target.files[0];\r\n const newObj = { newlyAdded: true, removed: false, fileData: file, name: file.name };\r\n handleAttahmentChange(newObj, inputFieldNames.HAZARD_ATTACHMENT);\r\n hiddenFileInput.current.children[0].value = null;\r\n };\r\n\r\n const handleDocumentSelected = (documentLink) => {\r\n const {document} = hazard;\r\n const updatedDocument = addDocumentToArray(document, documentLink);\r\n onHandleInputChange(updatedDocument, inputFieldNames.HAZARD_DOCUMENT);\r\n };\r\n\r\n const handleDocumentRemove = (documentToRemove) => {\r\n const {document} = hazard;\r\n const updatedDocument = removeDocumentFromArray(document, documentToRemove);\r\n onHandleInputChange(updatedDocument, inputFieldNames.HAZARD_DOCUMENT);\r\n }\r\n\r\n const onDocumentListDialogOpen = () => {\r\n openDocumentListDialog(true);\r\n };\r\n\r\n const handleConsequenceImageClick = (isInitial) => {\r\n\r\n setIsInitialScore(isInitial);\r\n setConsDialogOpen(true);\r\n }\r\n\r\n const handleConsequenceDialogClose = () => {\r\n \r\n setConsDialogOpen(false);\r\n }\r\n\r\n const onConsequencesSubmit = (item) => {\r\n\r\n if(isInitialScore === true){\r\n onHandleInputChange(item.likelihood, inputFieldNames.INITIAL_RISK_LIKELIHOOD);\r\n onHandleInputChange(item.consequnces, inputFieldNames.INITIAL_RISK_CONSEQUENCE);\r\n }\r\n else{\r\n\r\n onHandleInputChange(item.likelihood, inputFieldNames.FINAL_RISK_LIKELIHOOD);\r\n onHandleInputChange(item.consequnces, inputFieldNames.FINAL_RISK_CONSEQUENCE);\r\n\r\n }\r\n\r\n setConsDialogOpen(false);\r\n\r\n }\r\n\r\n return (\r\n \r\n \r\n {isSaving ? : ''}\r\n \r\n {title}\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.DESCRIPTION)\r\n }\r\n value={hazard.description}\r\n required={true}\r\n />\r\n \r\n\r\n \r\n handleConsequenceImageClick(true)}>\r\n \r\n \r\n \r\n Select initial score\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 handleConsequenceImageClick(false)}>\r\n \r\n \r\n \r\n Select final score\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\r\n \r\n \r\n handleInputChange(e, inputFieldNames.HAZARD_STATUS)\r\n }\r\n items={hazardStatus.hazardStatus.filter((x) => x.id !== 4)}\r\n dropDownWidth=\"100%\"\r\n className={classes.dropDown}\r\n valueField=\"id\"\r\n displayField=\"value\"\r\n />\r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.FREQUENCY)\r\n }\r\n value={hazard.reviewFrequency || ''}\r\n fullWidth\r\n />\r\n \r\n\r\n \r\n \r\n handleInputChange(e, inputFieldNames.HAZARD_DEPARTMENT)\r\n }\r\n value={hazard.department}\r\n />\r\n \r\n\r\n {/***************** Attachment ******************/}\r\n \r\n Attachments\r\n \r\n \r\n \r\n \r\n Add attachment\r\n \r\n \r\n \r\n {allAttachments && (\r\n \r\n \r\n \r\n )}\r\n\r\n {/***************** Document ******************/}\r\n{canEditDocuments ? (\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n {canEditDocuments && (\r\n \r\n \r\n {'Browse'}\r\n \r\n \r\n )}\r\n\r\n\r\n \r\n \r\n \r\n \r\n Cancel\r\n \r\n \r\n {actionButtonText}\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\nexport default CreateEditHazardFormUi;\r\n","import React from 'react';\r\n\r\nimport CreateEditHazardFormUi from '../CreateEditHazardFormUi';\r\n\r\nconst CreateHazardDialog = (props) => {\r\n const {\r\n openDialog,\r\n hazard,\r\n isSaving,\r\n branchId,\r\n openCreateHazardDialog,\r\n onHandleInputChange,\r\n submitHazard,\r\n allAttachments,\r\n onRemoveAttachment,\r\n loggedInUser,\r\n openDocumentListDialog,\r\n documents\r\n } = props;\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n hazard.branchId = branchId;\r\n hazard.departmentId = 1;\r\n submitHazard(hazard);\r\n };\r\n\r\n const handleRemoveAttachment = (attachment) => {\r\n onRemoveAttachment(attachment);\r\n };\r\n\r\n const handleAttahmentChange = (value, inputFieldName) => {\r\n const { onUpdateAttachment } = props;\r\n onUpdateAttachment(value, inputFieldName);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CreateHazardDialog;\r\n","// CreateHazardDialog/index.js\r\nimport { connect } from 'react-redux';\r\nimport CreateHazardDialog from '../../components/CreateHazardDialog';\r\n\r\nimport {\r\n openCreateHazardDialogDispatch,\r\n handleHazardInputChangeDispatch,\r\n submitHazardDispatch,\r\n removeAttachment,\r\n openDocumentListDialogDispatch\r\n} from '../../actions';\r\nimport { submitMode } from '../../constants';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.hazard.newHazard.showCreateHazardDialog,\r\n hazard: state.hazard.newHazard.item,\r\n documents: state.settings.allDocuments.items,\r\n isSaving: state.hazard.newHazard.isSaving,\r\n branchId: state.branch.branch.item && state.branch.branch.item.id,\r\n allAttachments: state.hazard.newHazard.item.attachmentFiles,\r\n loggedInUser: state.users.user.item,\r\n documents: state.settings.allDocuments.itemsCopy\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openCreateHazardDialog: (open) => {\r\n dispatch(openCreateHazardDialogDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(handleHazardInputChangeDispatch(value, inputFieldName));\r\n },\r\n submitHazard: (hazard) => {\r\n const mode = submitMode.CREATE;\r\n dispatch(submitHazardDispatch(hazard, mode));\r\n },\r\n onUpdateAttachment: (value, inputFieldName) => {\r\n dispatch(handleHazardInputChangeDispatch(value, inputFieldName));\r\n },\r\n onRemoveAttachment: (attachment) => {\r\n dispatch(removeAttachment(attachment));\r\n },\r\n openDocumentListDialog: (open) => {\r\n dispatch(openDocumentListDialogDispatch(open));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CreateHazardDialog);\r\n","import React from 'react';\r\nimport { TableCell, IconButton } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Delete as DeleteIcon, Edit as EditIcon } from '@material-ui/icons';\r\nimport { hazardHierarchy } from '../../../constants';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n deleteIcon: {\r\n color: theme.palette.danger.minor\r\n },\r\n date: {},\r\n dateExpired: {\r\n color: theme.palette.danger.main\r\n }\r\n}));\r\n\r\nconst SingleHazardControl = (props) => {\r\n const classes = useStyles();\r\n const {\r\n control,\r\n userId,\r\n enableEditHazardControl,\r\n handleOpenDeleteHazardControlClick\r\n } = props;\r\n\r\n const getHierarchyName = (id) => {\r\n const value = hazardHierarchy.hazardHierarchy.find((item) => item.id === id)\r\n .value;\r\n return value;\r\n };\r\n\r\n return (\r\n \r\n \r\n {getHierarchyName(control.hierarchy)}\r\n \r\n \r\n {control.comments}\r\n \r\n \r\n {control.document}\r\n \r\n \r\n enableEditHazardControl(true, control.id)}\r\n >\r\n \r\n \r\n\r\n handleOpenDeleteHazardControlClick(true, control.id)}\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SingleHazardControl;\r\n","import React from 'react';\r\nimport {\r\n TableCell,\r\n TextField,\r\n Button,\r\n Grid\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport FancyDropDown from '../../FancyDropDown';\r\nimport { inputFieldNames } from '../../../constants';\r\nimport { hazardHierarchy } from '../../../constants';\r\nimport DocumentListDialog from '../../../containers/DocumentListDialog';\r\n\r\nimport LibraryDocumentList from '../../LibraryDocumentList';\r\nimport {addDocumentToArray, removeDocumentFromArray} from \"../../../mappers/libraryDocumentMapper\";\r\n\r\nimport config from '../../../constants/blob_config.json';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n cancelButton: {\r\n marginLeft: 10,\r\n color: theme.palette.subTitle.main\r\n },\r\n addAttachmentFab: {\r\n margin: theme.spacing(1),\r\n marginLeft: 0\r\n },\r\n fab: {\r\n margin: theme.spacing(1)\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n width: 210,\r\n height: '36px !important',\r\n borderWidth: 1.3,\r\n flex: 1\r\n },\r\n extendedIcon: {\r\n marginRight: theme.spacing(1)\r\n }\r\n}));\r\n\r\nconst EditHazardControl = (props) => {\r\n const classes = useStyles();\r\n const {\r\n control,\r\n userId,\r\n handleEditHazardControlInputChange,\r\n enableEditHazardControl,\r\n handleSaveHazardControlClick,\r\n openDocumentListDialog\r\n } = props;\r\n\r\n\r\n\r\n const handleDocumentSelected = (documentLink) => {\r\n const {document} = control;\r\n const updatedDocument = addDocumentToArray(document, documentLink);\r\n handleEditHazardControlInputChange(updatedDocument, inputFieldNames.HAZARD_CONTROL_DOCUMENT);\r\n };\r\n\r\n const handleDocumentRemove = (documentToRemove) => {\r\n const {document} = control;\r\n const updatedDocument = removeDocumentFromArray(document, documentToRemove);\r\n handleEditHazardControlInputChange(updatedDocument, inputFieldNames.HAZARD_CONTROL_DOCUMENT);\r\n }\r\n\r\n const canEditDocuments = true;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n handleEditHazardControlInputChange(\r\n e,\r\n inputFieldNames.CONTROL_HIERARCHY\r\n )\r\n }\r\n items={hazardHierarchy.hazardHierarchy}\r\n dropDownWidth=\"100%\"\r\n className={classes.dropDown}\r\n valueField=\"id\"\r\n displayField=\"value\"\r\n required={true}\r\n />\r\n \r\n \r\n \r\n handleEditHazardControlInputChange(\r\n e,\r\n inputFieldNames.CONTROL_COMMENTS\r\n )\r\n }\r\n value={control.comments}\r\n fullWidth={true}\r\n />\r\n \r\n\r\n \r\n \r\n \r\n {/***************** Attachment ******************/}\r\n {canEditDocuments ? (\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n {canEditDocuments && (\r\n \r\n \r\n {'Browse'}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Save\r\n \r\n \r\n enableEditHazardControl(false, control.id, userId.id)\r\n }\r\n className={classes.cancelButton}\r\n id=\"cancelButton\"\r\n >\r\n Cancel\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default EditHazardControl;\r\n","import React from 'react';\r\nimport DualActionDialog from '../../DualActionDialog';\r\n\r\nconst DeleteHazardControlDialog = (props) => {\r\n const { toDeleteControl, open, showDialog, errorMessage, isSaving } = props;\r\n\r\n const handleConfirmAction = async (event) => {\r\n event.preventDefault();\r\n const { onConfirmHazardControlDelete, toDeleteControl } = props;\r\n const payload = {\r\n ...toDeleteControl\r\n };\r\n onConfirmHazardControlDelete(payload);\r\n };\r\n\r\n if (!toDeleteControl) {\r\n return;\r\n }\r\n\r\n return (\r\n showDialog(false, toDeleteControl.id)}\r\n handleSubmit={handleConfirmAction}\r\n showProgressBar={isSaving}\r\n errorMessage={errorMessage}\r\n isDanger={true}\r\n />\r\n );\r\n};\r\n\r\nexport default DeleteHazardControlDialog;\r\n","import { connect } from 'react-redux';\r\nimport DeleteHazardControlDialog from '../../components/EditHazardPanel/DeletHazardControlDialog';\r\n\r\nimport {\r\n openDeleteHazardControlDialogDispatch,\r\n handleDeleteHazardControlClickDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n toDeleteControl: state.hazard.deleteControl.item,\r\n open: state.hazard.deleteControl.showDeleteHazardControlDialog,\r\n isSaving: state.hazard.deleteControl.isSaving,\r\n errorMessage: state.hazard.deleteControl.errorMessage\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n showDialog: (open, controlId) => {\r\n dispatch(openDeleteHazardControlDialogDispatch(open, controlId));\r\n },\r\n onConfirmHazardControlDelete: (payload) => {\r\n dispatch(handleDeleteHazardControlClickDispatch(payload));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(DeleteHazardControlDialog);\r\n","import React from 'react';\r\nimport {\r\n Paper,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableContainer,\r\n TableHead,\r\n TableRow\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport SingleHazardControl from '../SingleHazardControl';\r\nimport EditHazardControl from '../EditHazardControl';\r\nimport DeleteHazardControlDialog from '../../../containers/DeleteHazardControlDialog';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n controlsListContainer: {\r\n padding: theme.spacing(2),\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n },\r\n table: {\r\n minWidth: 650\r\n },\r\n boldText: {\r\n fontWeight: 800\r\n }\r\n}));\r\n\r\nconst ControlsList = (props) => {\r\n const classes = useStyles();\r\n const {\r\n controls,\r\n userId,\r\n enableEditHazardControl,\r\n isEditControlEnabled,\r\n controlBeingEdited,\r\n handleEditHazardControlInputChange,\r\n handleSaveHazardControlClick,\r\n showDeleteControlDialog,\r\n handleOpenDeleteHazardControlClick,\r\n openDocumentListDialog\r\n } = props;\r\n\r\n return (\r\n \r\n {showDeleteControlDialog ? : null}\r\n \r\n \r\n \r\n \r\n Controls\r\n Detail\r\n Document\r\n \r\n \r\n \r\n \r\n {controls.map((control) => {\r\n const isEditMode =\r\n isEditControlEnabled && control.id === controlBeingEdited.id;\r\n\r\n return (\r\n \r\n {isEditMode ? (\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\nexport default ControlsList;\r\n","import React from 'react';\r\nimport { TextField, Grid, Fab, Input, Typography, Button } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport FancyDropDown from '../../FancyDropDown';\r\nimport { inputFieldNames, hazardHierarchy } from '../../../constants';\r\n\r\nimport { Attachment as AttachmentIcon } from '@material-ui/icons';\r\nimport Attachments from '../../Attachments';\r\nimport config from '../../../constants/blob_config.json';\r\nimport LibraryDocumentList from '../../LibraryDocumentList';\r\nimport {addDocumentToArray, removeDocumentFromArray} from \"../../../mappers/libraryDocumentMapper\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n addControlContainer: {\r\n padding: theme.spacing(2),\r\n marginTop: theme.spacing(2)\r\n },\r\n header: {\r\n paddingBottom: theme.spacing(1)\r\n },\r\n formContainer: {\r\n paddingBottom: theme.spacing(2)\r\n },\r\n addAttachmentFab: {\r\n margin: theme.spacing(1),\r\n marginLeft: 0\r\n },\r\n fab: {\r\n margin: theme.spacing(1)\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n width: 210,\r\n height: '36px !important',\r\n borderWidth: 1.3,\r\n flex: 1\r\n },\r\n extendedIcon: {\r\n marginRight: theme.spacing(1)\r\n }\r\n}));\r\n\r\nconst AddControl = (props) => {\r\n const classes = useStyles();\r\n const {\r\n control,\r\n handleInputChange,\r\n handleSubmitControl,\r\n canEditDocuments,\r\n openDocumentListDialog,\r\n handleRemoveAttachment,\r\n allAttachments,\r\n handleDocumentSelected\r\n } = props;\r\n\r\n\r\n const handleDocumentRemove = (documentToRemove) => {\r\n const {document} = control;\r\n const updatedDocument = removeDocumentFromArray(document, documentToRemove);\r\n handleDocumentSelected(updatedDocument);\r\n }\r\n\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.CONTROL_HIERARCHY)\r\n }\r\n items={hazardHierarchy.hazardHierarchy}\r\n dropDownWidth=\"100%\"\r\n className={classes.dropDown}\r\n valueField=\"id\"\r\n displayField=\"value\"\r\n required={true}\r\n />\r\n \r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.CONTROL_COMMENTS)\r\n }\r\n value={control.comments}\r\n fullWidth={true}\r\n multiline\r\n rows={2}\r\n variant=\"outlined\"\r\n />\r\n \r\n\r\n {/***************** Attachment ******************/}\r\n {canEditDocuments ? (\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n {canEditDocuments && (\r\n \r\n \r\n {'Browse'}\r\n \r\n \r\n )}\r\n \r\n\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default AddControl;\r\n","import React from 'react';\r\nimport {\r\n DialogTitle,\r\n DialogContent,\r\n DialogActions,\r\n LinearProgress,\r\n Button\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Add as AddIcon } from '@material-ui/icons';\r\n\r\nimport Dialog from '../Dialog';\r\nimport AddControl from '../EditHazardPanel/AddControl';\r\nimport { inputFieldNames } from '../../constants';\r\nimport { submitMode } from '../../constants';\r\nimport DocumentListDialog from '../../containers/DocumentListDialog';\r\nimport {addDocumentToArray, removeDocumentFromArray} from \"../../mappers/libraryDocumentMapper\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n dialog: {},\r\n dialogTitle: {\r\n background: '#f0f0f0'\r\n },\r\n dialogContent: {\r\n width: 580,\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(3)\r\n },\r\n actionButton: {\r\n width: 180,\r\n float: 'right',\r\n margin: theme.spacing(2)\r\n },\r\n footer: {\r\n background: '#f0f0f0'\r\n }\r\n}));\r\n\r\nconst AddHazardControlDialog = (props) => {\r\n const classes = useStyles();\r\n const {\r\n openDialog,\r\n onOpenAddHazardControlDialog,\r\n isSaving,\r\n control,\r\n onHandleInputChange,\r\n hazard,\r\n submitControl,\r\n allAttachments,\r\n onRemoveAttachment,\r\n branchId,\r\n loggedInUser,\r\n openDocumentListDialog\r\n } = props;\r\n\r\n const onDialogClose = () => {\r\n onOpenAddHazardControlDialog(false);\r\n };\r\n\r\n const handleSubmitControl = (e) => {\r\n e.preventDefault();\r\n\r\n const payload = {\r\n hazardId: hazard.id,\r\n ...control\r\n };\r\n submitControl(payload, submitMode.CREATE, branchId);\r\n };\r\n\r\n const handleInputChange = (e, inputfieldName) => {\r\n if (inputfieldName === inputFieldNames.HAZARD_CONTROL_ATTACHMENT) {\r\n onHandleInputChange(e, inputfieldName);\r\n } else {\r\n onHandleInputChange(e.target.value, inputfieldName);\r\n }\r\n };\r\n\r\n const handleRemoveAttachment = (attachment) => {\r\n onRemoveAttachment(attachment);\r\n };\r\n\r\n const onDocumentListDialogOpen = () => {\r\n openDocumentListDialog(true);\r\n };\r\n\r\n const handleDocumentSelected = (documentLink) => {\r\n const {document} = control;\r\n const updatedDocument = addDocumentToArray(document, documentLink);\r\n onHandleInputChange(updatedDocument, inputFieldNames.HAZARD_CONTROL_DOCUMENT);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {isSaving ? : ''}\r\n \r\n Add Control\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n Cancel\r\n \r\n }\r\n >\r\n Add\r\n \r\n \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default AddHazardControlDialog;\r\n","import { connect } from 'react-redux';\r\n\r\nimport AddHazardControlDialog from '../../components/AddHazardControlDialog';\r\nimport {\r\n openAddHazardControlDialogDispatch,\r\n handleHazardInputChangeDispatch,\r\n submitControlDispatch,\r\n removeHazardControlAttachment,\r\n openDocumentListDialogDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.hazard.newControl.openAddHazardControlDialog,\r\n isSaving: state.hazard.newControl.isSaving,\r\n control: state.hazard.newControl.item,\r\n hazard: state.hazard.newHazard.item,\r\n branchId: state.branch.branch.item && state.branch.branch.item.id,\r\n allAttachments: state.hazard.newControl.item.attachmentFiles,\r\n loggedInUser: state.users.user.item,\r\n allAttachments: state.hazard.newControl.item.attachmentFiles\r\n\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n onOpenAddHazardControlDialog: (open) => {\r\n dispatch(openAddHazardControlDialogDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(handleHazardInputChangeDispatch(value, inputFieldName));\r\n },\r\n submitControl: (payload, mode, branchId) => {\r\n dispatch(submitControlDispatch(payload, mode, branchId));\r\n },\r\n onRemoveAttachment: (attachment) => {\r\n dispatch(removeHazardControlAttachment(attachment));\r\n },\r\n openDocumentListDialog: (open) => {\r\n dispatch(openDocumentListDialogDispatch(open));\r\n },\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(AddHazardControlDialog);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { ArrowBack as ArrowBackIcon } from '@material-ui/icons';\r\nimport { IconButton, Typography, Button } from '@material-ui/core';\r\n\r\nimport { inputFieldNames } from '../../constants';\r\n\r\nimport ControlsList from './ControlsList';\r\nimport calculateNextEventDate from '../../mappers/calculateNextEventDate';\r\nimport { submitMode } from '../../constants';\r\nimport AddHazardControlDialog from '../../containers/AddHazardControlDialog';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n simpleLabel: {\r\n display: 'inline-block',\r\n marginTop: 2\r\n },\r\n editHazardFieldsContainer: {\r\n padding: theme.spacing(2)\r\n },\r\n backArrow: {\r\n marginLeft: -16\r\n },\r\n courseName: {\r\n fontWeight: 600\r\n },\r\n addControlButton: {\r\n marginTop: 8\r\n }\r\n}));\r\n\r\nconst EditHazardPanel = (props) => {\r\n const {\r\n hazard,\r\n openEditHazardPanel,\r\n fetchControlsForTheHazard,\r\n controls,\r\n submitControl,\r\n enableEditHazardControl,\r\n isEditControlEnabled,\r\n controlBeingEdited,\r\n onHandleEditHazardControlInputChange,\r\n onOpenAddHazardControlDialog,\r\n openAddHazardControlDialog,\r\n showDeleteHazardControlDialog,\r\n onOpenDeleteControlDialog,\r\n branchId,\r\n userId,\r\n openDocumentListDialog\r\n } = props;\r\n const classes = useStyles();\r\n\r\n React.useEffect(\r\n () => {\r\n fetchControlsForTheHazard(hazard.id);\r\n },\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [hazard.id]\r\n );\r\n\r\n const handleEditHazardControlInputChange = (e, inputfieldName) => {\r\n if (\r\n inputfieldName === inputFieldNames.RECORD_DATE ||\r\n inputfieldName === inputFieldNames.HAZARD_CONTROL_DOCUMENT\r\n ) {\r\n onHandleEditHazardControlInputChange(e, inputfieldName);\r\n } else {\r\n onHandleEditHazardControlInputChange(e.target.value, inputfieldName);\r\n }\r\n };\r\n\r\n const handleSaveHazardControlClick = (e) => {\r\n e.preventDefault();\r\n\r\n const payload = {\r\n hazardId: hazard.id,\r\n ...controlBeingEdited\r\n };\r\n\r\n submitControl(payload, submitMode.UPDATE, branchId);\r\n };\r\n\r\n const handleOpenDeleteHazardControlClick = (open, controlId) => {\r\n onOpenDeleteControlDialog(open, controlId);\r\n };\r\n\r\n\r\n return (\r\n \r\n {openAddHazardControlDialog ? : null}\r\n\r\n
    \r\n openEditHazardPanel(false)}\r\n id=\"settings-button\"\r\n className={classes.backArrow}\r\n >\r\n \r\n \r\n Hazards\r\n
    \r\n\r\n
    \r\n \r\n {hazard.description}\r\n \r\n
    \r\n\r\n onOpenAddHazardControlDialog(true)}\r\n >\r\n Add Control\r\n \r\n\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default EditHazardPanel;\r\n","// EditHazardPanel/index.js\r\nimport { connect } from 'react-redux';\r\nimport EditHazardPanel from '../../components/EditHazardPanel';\r\nimport { domainType } from '../../constants';\r\n\r\nimport {\r\n openEditHazardPanelDispatch,\r\n handleHazardInputChangeDispatch,\r\n submitHazardDispatch,\r\n fetchControlsForTheHazardDispatch,\r\n submitControlDispatch,\r\n enableEditHazardControlDispatch,\r\n handleEditHazardControlInputChangeDispatch,\r\n openAddHazardControlDialogDispatch,\r\n openDeleteHazardControlDialogDispatch,\r\n removeHazardControlAttachmentEdit,\r\n fetchExistingAttachmentsForHazardControlDispatch,\r\n openDocumentListDialogDispatch\r\n} from '../../actions';\r\nimport { submitMode } from '../../constants';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openPanel: state.hazard.newHazard.showEditHazardPanel,\r\n hazard: state.hazard.newHazard.item,\r\n branchId: state.branch.branch.item && state.branch.branch.item.id,\r\n controls: state.hazard.controlsForTheHazard.items,\r\n control: state.hazard.newControl.item,\r\n isEditControlEnabled: state.hazard.editControl.enable,\r\n controlBeingEdited: state.hazard.editControl.item,\r\n openAddHazardControlDialog:\r\n state.hazard.newControl.openAddHazardControlDialog,\r\n showDeleteHazardControlDialog:\r\n state.hazard.deleteControl.showDeleteHazardControlDialog,\r\n userId: state.users.user.item,\r\n allAttachments:\r\n state.hazard.editControl.item &&\r\n state.hazard.editControl.item.attachmentFiles\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openEditHazardPanel: (open) => {\r\n dispatch(openEditHazardPanelDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(handleHazardInputChangeDispatch(value, inputFieldName));\r\n },\r\n submitHazard: (accident) => {\r\n const mode = submitMode.UPDATE;\r\n dispatch(submitHazardDispatch(accident, mode));\r\n },\r\n fetchControlsForTheHazard: (hazardId) => {\r\n dispatch(fetchControlsForTheHazardDispatch(hazardId));\r\n },\r\n submitControl: (payload, mode, branchId) => {\r\n dispatch(submitControlDispatch(payload, mode, branchId));\r\n },\r\n enableEditHazardControl: (enableEditControlMode, parentId, userId) => {\r\n dispatch(\r\n enableEditHazardControlDispatch(enableEditControlMode, parentId)\r\n );\r\n },\r\n onRemoveAttachment: (attachment) => {\r\n dispatch(removeHazardControlAttachmentEdit(attachment));\r\n },\r\n onHandleEditHazardControlInputChange: (value, inputFieldName) => {\r\n dispatch(\r\n handleEditHazardControlInputChangeDispatch(value, inputFieldName)\r\n );\r\n },\r\n onOpenAddHazardControlDialog: (open) => {\r\n dispatch(openAddHazardControlDialogDispatch(open));\r\n },\r\n onOpenDeleteControlDialog: (open, controlId) => {\r\n dispatch(openDeleteHazardControlDialogDispatch(open, controlId));\r\n },\r\n openDocumentListDialog: (open) => {\r\n dispatch(openDocumentListDialogDispatch(open));\r\n },\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EditHazardPanel);\r\n","import React from 'react';\r\n\r\nimport CreateEditHazardFormUi from '../CreateEditHazardFormUi';\r\nimport { domainType } from '../../constants';\r\n\r\nconst EditHazardDialog = (props) => {\r\n const {\r\n hazard,\r\n openDialog,\r\n isSaving,\r\n onHandleInputChange,\r\n openCreateHazardDialog,\r\n submitHazard,\r\n branchId,\r\n allAttachments,\r\n onRemoveAttachment,\r\n fetchExistingAttachmentsForTheHazard,\r\n loggedInUser,\r\n openDocumentListDialog,\r\n documents\r\n } = props;\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n hazard.branchId = branchId;\r\n submitHazard(hazard);\r\n };\r\n const handleRemoveAttachment = (attachment) => {\r\n onRemoveAttachment(attachment);\r\n };\r\n\r\n const handleAttahmentChange = (value, inputFieldName) => {\r\n const { onUpdateAttachment } = props;\r\n onUpdateAttachment(value, inputFieldName);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default EditHazardDialog;\r\n","// EditHazardDialog/index.js\r\nimport { connect } from 'react-redux';\r\nimport EditHazardDialog from '../../components/EditHazardDialog';\r\n\r\nimport {\r\n openEditHazardDialogDispatch,\r\n handleHazardInputChangeDispatch,\r\n submitHazardDispatch,\r\n removeAttachment,\r\n fetchExistingAttachmentsForTheHazardDispatch,\r\n openDocumentListDialogDispatch\r\n} from '../../actions';\r\nimport { submitMode } from '../../constants';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.hazard.newHazard.showEditHazardDialog,\r\n hazard: state.hazard.newHazard.item,\r\n isSaving: state.hazard.newHazard.isSaving,\r\n branchId: state.branch.branch.item && state.branch.branch.item.id,\r\n allAttachments: state.hazard.newHazard.item.attachmentFiles,\r\n loggedInUser: state.users.user.item,\r\n documents: state.settings.allDocuments.itemsCopy\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openCreateHazardDialog: (open) => {\r\n dispatch(openEditHazardDialogDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(handleHazardInputChangeDispatch(value, inputFieldName));\r\n },\r\n submitHazard: (accident) => {\r\n const mode = submitMode.UPDATE;\r\n dispatch(submitHazardDispatch(accident, mode));\r\n },\r\n onUpdateAttachment: (value, inputFieldName) => {\r\n dispatch(handleHazardInputChangeDispatch(value, inputFieldName));\r\n },\r\n onRemoveAttachment: (attachment) => {\r\n dispatch(removeAttachment(attachment));\r\n },\r\n openDocumentListDialog: (open) => {\r\n dispatch(openDocumentListDialogDispatch(open));\r\n },\r\n fetchExistingAttachmentsForTheHazard: (\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n ) => {\r\n dispatch(\r\n fetchExistingAttachmentsForTheHazardDispatch(\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n )\r\n );\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EditHazardDialog);\r\n","import React from 'react';\r\nimport { TableCell, IconButton } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Delete as DeleteIcon, Edit as EditIcon } from '@material-ui/icons';\r\nimport { utcToLocal } from './../../../utils/timeConverter';\r\nimport moment from 'moment';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n deleteIcon: {\r\n color: theme.palette.danger.minor\r\n },\r\n date: {},\r\n dateExpired: {\r\n color: theme.palette.danger.main\r\n }\r\n}));\r\n\r\nconst SingleHazardReview = (props) => {\r\n const classes = useStyles();\r\n const {\r\n review,\r\n enableEditHazardReview,\r\n handleOpenDeleteReviewClick,\r\n userId\r\n } = props;\r\n const time = utcToLocal(review.reviewDate);\r\n return (\r\n \r\n \r\n {review.description}\r\n \r\n \r\n {moment(time).format('DD MMM YYYY')}\r\n \r\n \r\n enableEditHazardReview(true, review.id)}\r\n >\r\n \r\n \r\n\r\n handleOpenDeleteReviewClick(true, review.id, userId)}\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SingleHazardReview;\r\n","import React from 'react';\r\nimport {\r\n TableCell,\r\n TextField,\r\n Button,\r\n Typography,\r\n Fab,\r\n Input,\r\n Grid\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { inputFieldNames } from '../../../constants';\r\nimport { DatePicker } from '../../DatePicker';\r\nimport { utcToLocal } from './../../../utils/timeConverter';\r\n\r\nimport { Attachment as AttachmentIcon } from '@material-ui/icons';\r\nimport Attachments from '../../Attachments';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n cancelButton: {\r\n marginLeft: 10,\r\n color: theme.palette.subTitle.main\r\n },\r\n addAttachmentFab: {\r\n margin: theme.spacing(1),\r\n marginLeft: 0\r\n },\r\n fab: {\r\n margin: theme.spacing(1)\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n width: 210,\r\n height: '36px !important',\r\n borderWidth: 1.3,\r\n flex: 1\r\n },\r\n extendedIcon: {\r\n marginRight: theme.spacing(1)\r\n }\r\n}));\r\n\r\nconst EditHazardReview = (props) => {\r\n const classes = useStyles();\r\n const {\r\n review,\r\n handleEditHazardReviewInputChange,\r\n enableEditHazardReview,\r\n handleSaveHazardReviewClick,\r\n handleRemoveAttachment,\r\n allAttachments\r\n } = props;\r\n\r\n const hiddenFileInput = React.createRef();\r\n\r\n const handleClick = (event) => {\r\n hiddenFileInput.current.children[0].click();\r\n };\r\n\r\n const onAttachmendAdded = (event) => {\r\n event.preventDefault();\r\n const file = event.target.files[0];\r\n const newObj = {\r\n newlyAdded: true,\r\n removed: false,\r\n fileData: file,\r\n name: file.name\r\n };\r\n handleEditHazardReviewInputChange(\r\n newObj,\r\n inputFieldNames.HAZARD_REVIEW_ATTACHMENT\r\n );\r\n hiddenFileInput.current.children[0].value = null;\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n handleEditHazardReviewInputChange(\r\n e,\r\n inputFieldNames.REVIEW_DESCRIPION\r\n )\r\n }\r\n value={review.description}\r\n fullWidth={true}\r\n multiline\r\n rows={2}\r\n variant=\"outlined\"\r\n />\r\n \r\n \r\n \r\n handleEditHazardReviewInputChange(\r\n date,\r\n inputFieldNames.REVIEW_REVIEW_DATE\r\n )\r\n }\r\n selectedDate={utcToLocal(review.reviewDate)}\r\n required={true}\r\n />\r\n \r\n\r\n \r\n \r\n {/***************** Attachment ******************/}\r\n \r\n Attachments\r\n \r\n \r\n \r\n \r\n Add attachment\r\n \r\n \r\n \r\n {allAttachments && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Save\r\n \r\n enableEditHazardReview(false, review.id)}\r\n className={classes.cancelButton}\r\n id=\"cancelButton\"\r\n >\r\n Cancel\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default EditHazardReview;\r\n","import React from 'react';\r\nimport DualActionDialog from '../DualActionDialog';\r\n\r\nconst DeleteHazardReviewDialog = (props) => {\r\n const { review, open, showDialog, errorMessage, isSaving } = props;\r\n\r\n const handleConfirmAction = async (event) => {\r\n event.preventDefault();\r\n const { onConfirmHazardReviewDelete, review } = props;\r\n const payload = {\r\n ...review\r\n };\r\n payload.isActive = false;\r\n onConfirmHazardReviewDelete(payload, payload.hazardId);\r\n };\r\n\r\n if (!review) {\r\n return;\r\n }\r\n\r\n return (\r\n showDialog(false, review.id)}\r\n handleSubmit={handleConfirmAction}\r\n showProgressBar={isSaving}\r\n errorMessage={errorMessage}\r\n isDanger={true}\r\n />\r\n );\r\n};\r\n\r\nexport default DeleteHazardReviewDialog;\r\n","import { connect } from 'react-redux';\r\nimport DeleteHazardReviewDialog from '../../components/DeleteHazardReviewDialog';\r\nimport { submitMode } from '../../constants';\r\n\r\nimport {\r\n openDeleteHazardReviewDialogDispatch,\r\n submitHazardReviewDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n review: state.hazard.toBeDeleteReview.item,\r\n open: state.hazard.toBeDeleteReview.showDeleteHazardReviewDialog,\r\n isSaving: state.hazard.toBeDeleteReview.isSaving,\r\n errorMessage: state.hazard.newReview.errorMessage\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n showDialog: (open, reviewId) => {\r\n dispatch(openDeleteHazardReviewDialogDispatch(open, reviewId));\r\n },\r\n onConfirmHazardReviewDelete: (payload) => {\r\n const mode = submitMode.UPDATE;\r\n dispatch(submitHazardReviewDispatch(payload, mode));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(DeleteHazardReviewDialog);\r\n","import React from 'react';\r\nimport {\r\n Paper,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableContainer,\r\n TableHead,\r\n TableRow\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport SingleHazardReview from '../SingleHazardReview';\r\nimport EditHazardReview from '../EditHazardReview';\r\nimport DeleteHazardReviewDialog from '../../../containers/DeleteHazardReviewDialog';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n reviewListContainer: {\r\n padding: theme.spacing(2),\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n },\r\n table: {\r\n minWidth: 650\r\n },\r\n boldText: {\r\n fontWeight: 800\r\n }\r\n}));\r\n\r\nconst ReviewList = (props) => {\r\n const classes = useStyles();\r\n const {\r\n reviews,\r\n enableEditHazardReview,\r\n isEditReviewEnabled,\r\n reviewBeingEdited,\r\n handleEditHazardReviewInputChange,\r\n handleSaveHazardReviewClick,\r\n handleOpenDeleteReviewClick,\r\n showDeleteReviewDialog,\r\n userId,\r\n handleRemoveAttachment,\r\n allAttachments\r\n } = props;\r\n\r\n return (\r\n \r\n {showDeleteReviewDialog ? : null}\r\n {reviews && (\r\n \r\n \r\n \r\n \r\n Description\r\n Review Date\r\n \r\n \r\n \r\n \r\n {reviews.map((review) => {\r\n const isEditMode =\r\n isEditReviewEnabled && review.id === reviewBeingEdited.id;\r\n\r\n return (\r\n \r\n {isEditMode ? (\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\r\nexport default ReviewList;\r\n","import React from 'react';\r\nimport { TextField, Grid, Fab, Input, Typography } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { inputFieldNames, hazardHierarchy } from '../../../constants';\r\nimport { DatePicker } from '../../DatePicker';\r\nimport { utcToLocal } from './../../../utils/timeConverter';\r\n\r\nimport { Attachment as AttachmentIcon } from '@material-ui/icons';\r\nimport Attachments from '../../Attachments';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n addControlContainer: {\r\n padding: theme.spacing(2),\r\n marginTop: theme.spacing(2)\r\n },\r\n header: {\r\n paddingBottom: theme.spacing(1)\r\n },\r\n formContainer: {\r\n paddingBottom: theme.spacing(2)\r\n },\r\n addAttachmentFab: {\r\n margin: theme.spacing(1),\r\n marginLeft: 0\r\n },\r\n fab: {\r\n margin: theme.spacing(1)\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n width: 210,\r\n height: '36px !important',\r\n borderWidth: 1.3,\r\n flex: 1\r\n },\r\n extendedIcon: {\r\n marginRight: theme.spacing(1)\r\n }\r\n}));\r\n\r\nconst AddReview = (props) => {\r\n const classes = useStyles();\r\n const {\r\n review,\r\n handleInputChange,\r\n handleSubmitReview,\r\n actionButtonText = 'Add',\r\n handleRemoveAttachment,\r\n allAttachments\r\n } = props;\r\n\r\n const hiddenFileInput = React.createRef();\r\n\r\n const handleClick = (event) => {\r\n hiddenFileInput.current.children[0].click();\r\n };\r\n\r\n const onAttachmendAdded = (event) => {\r\n event.preventDefault();\r\n const file = event.target.files[0];\r\n const newObj = {\r\n newlyAdded: true,\r\n removed: false,\r\n fileData: file,\r\n name: file.name\r\n };\r\n handleInputChange(newObj, inputFieldNames.HAZARD_REVIEW_ATTACHMENT);\r\n hiddenFileInput.current.children[0].value = null;\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.REVIEW_DESCRIPION)\r\n }\r\n value={review.description}\r\n fullWidth={true}\r\n multiline\r\n rows={2}\r\n variant=\"outlined\"\r\n />\r\n \r\n\r\n \r\n \r\n handleInputChange(date, inputFieldNames.REVIEW_REVIEW_DATE)\r\n }\r\n selectedDate={\r\n actionButtonText === 'Add'\r\n ? review.reviewDate\r\n : utcToLocal(review.reviewDate)\r\n }\r\n required={true}\r\n />\r\n \r\n \r\n\r\n {/***************** Attachment ******************/}\r\n \r\n Attachments\r\n \r\n \r\n \r\n \r\n Add attachment\r\n \r\n \r\n \r\n {allAttachments && (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default AddReview;\r\n","import React from 'react';\r\nimport {\r\n DialogTitle,\r\n DialogContent,\r\n DialogActions,\r\n LinearProgress,\r\n Button\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Add as AddIcon } from '@material-ui/icons';\r\n\r\nimport Dialog from '../Dialog';\r\nimport AddReview from '../HazardReviewPanel/AddReview';\r\nimport { inputFieldNames } from '../../constants';\r\nimport { submitMode } from '../../constants';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n dialog: {},\r\n dialogTitle: {\r\n background: '#f0f0f0'\r\n },\r\n dialogContent: {\r\n width: 580,\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(3)\r\n },\r\n actionButton: {\r\n width: 180,\r\n float: 'right',\r\n margin: theme.spacing(2)\r\n },\r\n footer: {\r\n background: '#f0f0f0'\r\n }\r\n}));\r\n\r\nconst AddHazardReviewDialog = (props) => {\r\n const classes = useStyles();\r\n const {\r\n openDialog,\r\n onOpenAddHazardReviewDialog,\r\n isSaving,\r\n review,\r\n onHandleInputChange,\r\n hazard,\r\n submitReview,\r\n allAttachments,\r\n onRemoveAttachment,\r\n branchId\r\n } = props;\r\n\r\n const onDialogClose = () => {\r\n onOpenAddHazardReviewDialog(false);\r\n };\r\n\r\n const handleSubmitReview = (e) => {\r\n e.preventDefault();\r\n\r\n const payload = {\r\n hazardId: hazard.id,\r\n isActive: true,\r\n ...review\r\n };\r\n submitReview(payload, submitMode.CREATE, branchId);\r\n };\r\n\r\n const handleInputChange = (e, inputfieldName) => {\r\n if (\r\n inputfieldName === inputFieldNames.REVIEW_REVIEW_DATE ||\r\n inputfieldName === inputFieldNames.HAZARD_REVIEW_ATTACHMENT\r\n ) {\r\n onHandleInputChange(e, inputfieldName);\r\n } else {\r\n onHandleInputChange(e.target.value, inputfieldName);\r\n }\r\n };\r\n\r\n const handleRemoveAttachment = (attachment) => {\r\n onRemoveAttachment(attachment);\r\n };\r\n\r\n return (\r\n \r\n \r\n {isSaving ? : ''}\r\n \r\n Add Hazard Review\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n Cancel\r\n \r\n }\r\n >\r\n Add\r\n \r\n \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default AddHazardReviewDialog;\r\n","import { connect } from 'react-redux';\r\n\r\nimport AddHazardReviewDialog from '../../components/AddHazardReviewDialog';\r\nimport {\r\n openAddHazardReviewDialogDispatch,\r\n handleAddHazardReviewInputChangeDispatch,\r\n submitHazardReviewDispatch,\r\n removeHazardReviewAttachment\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.hazard.newReview.openAddHazardReviewDialog,\r\n isSaving: state.hazard.newReview.isSaving,\r\n review: state.hazard.newReview.item,\r\n hazard: state.hazard.newHazard.item,\r\n allAttachments: state.hazard.newReview.item.attachmentFiles,\r\n branchId: state.branch.branch.item && state.branch.branch.item.id\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n onOpenAddHazardReviewDialog: (open) => {\r\n dispatch(openAddHazardReviewDialogDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(handleAddHazardReviewInputChangeDispatch(value, inputFieldName));\r\n },\r\n submitReview: (payload, mode, branchId) => {\r\n dispatch(submitHazardReviewDispatch(payload, mode, branchId));\r\n },\r\n onRemoveAttachment: (attachment) => {\r\n dispatch(removeHazardReviewAttachment(attachment));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(AddHazardReviewDialog);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { ArrowBack as ArrowBackIcon } from '@material-ui/icons';\r\nimport { IconButton, Typography, Button } from '@material-ui/core';\r\n\r\nimport { inputFieldNames } from '../../constants';\r\n\r\nimport ReviewList from './ReviewList';\r\nimport { submitMode } from '../../constants';\r\nimport AddHazardReviewDialog from '../../containers/AddHazardReviewDialog';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n simpleLabel: {\r\n display: 'inline-block',\r\n marginTop: 2\r\n },\r\n editHazardFieldsContainer: {\r\n padding: theme.spacing(2)\r\n },\r\n backArrow: {\r\n marginLeft: -16\r\n },\r\n courseName: {\r\n fontWeight: 600\r\n },\r\n addControlButton: {\r\n marginTop: 8\r\n }\r\n}));\r\n\r\nconst HazardReviewPanel = (props) => {\r\n const {\r\n hazard,\r\n openHazardReviewPanel,\r\n fetchReviewsForTheHazard,\r\n reviews,\r\n onHandleDeleteHazardReviewClick,\r\n submitReview,\r\n enableEditHazardReview,\r\n isEditReviewEnabled,\r\n reviewBeingEdited,\r\n onHandleEditHazardReviewInputChange,\r\n onOpenAddHazardReviewDialog,\r\n openAddHazardReviewDialog,\r\n onOpenDeleteHazardReviewDialog,\r\n showDeleteReviewDialog,\r\n userId,\r\n onRemoveAttachment,\r\n allAttachments,\r\n branchId\r\n } = props;\r\n const classes = useStyles();\r\n\r\n React.useEffect(() => {\r\n fetchReviewsForTheHazard(hazard.id);\r\n }, [hazard.id]);\r\n\r\n const handleEditHazardReviewInputChange = (e, inputfieldName) => {\r\n if (\r\n inputfieldName === inputFieldNames.REVIEW_REVIEW_DATE ||\r\n inputfieldName === inputFieldNames.HAZARD_REVIEW_ATTACHMENT\r\n ) {\r\n onHandleEditHazardReviewInputChange(e, inputfieldName);\r\n } else {\r\n onHandleEditHazardReviewInputChange(e.target.value, inputfieldName);\r\n }\r\n };\r\n\r\n const handleDeleteHazardReviewClick = (reviewId) => {\r\n const payload = {\r\n hazardId: hazard.id,\r\n reviewId\r\n };\r\n onHandleDeleteHazardReviewClick(payload);\r\n };\r\n\r\n const handleSaveHazardReviewClick = (e) => {\r\n e.preventDefault();\r\n const payload = {\r\n ...reviewBeingEdited\r\n };\r\n submitReview(payload, submitMode.UPDATE, branchId);\r\n };\r\n\r\n const handleOpenDeleteReviewClick = (open, reviewId) => {\r\n onOpenDeleteHazardReviewDialog(open, reviewId);\r\n };\r\n\r\n const handleRemoveAttachment = (attachment) => {\r\n onRemoveAttachment(attachment);\r\n };\r\n\r\n return (\r\n \r\n {openAddHazardReviewDialog ? : null}\r\n\r\n
    \r\n openHazardReviewPanel(false)}\r\n id=\"settings-button\"\r\n className={classes.backArrow}\r\n >\r\n \r\n \r\n Hazards\r\n
    \r\n\r\n
    \r\n \r\n {hazard.description}\r\n \r\n
    \r\n\r\n onOpenAddHazardReviewDialog(true)}\r\n >\r\n Add Hazard Review\r\n \r\n\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default HazardReviewPanel;\r\n","import { connect } from 'react-redux';\r\nimport HazardReviewPanel from '../../components/HazardReviewPanel';\r\nimport { submitMode } from '../../constants';\r\nimport { domainType } from '../../constants';\r\n\r\nimport {\r\n handleHazardInputChangeDispatch,\r\n submitHazardDispatch,\r\n handleDeleteHazardReviewClickDispatch,\r\n submitHazardReviewDispatch,\r\n enableEditHazardReviewDispatch,\r\n handleEditHazardReviewInputChangeDispatch,\r\n handleAddHazardReviewInputChangeDispatch,\r\n openAddHazardReviewDialogDispatch,\r\n openHazardReviewPanelDispatch,\r\n fetchReviewsForTheHazardDispatch,\r\n openDeleteHazardReviewDialogDispatch,\r\n removeHazardReviewAttachmentEdit,\r\n fetchExistingAttachmentsForHazardReviewDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openPanel: state.hazard.newHazard.showEditHazardPanel,\r\n hazard: state.hazard.newHazard.item,\r\n branchId: state.branch.branch.item && state.branch.branch.item.id,\r\n reviews: state.hazard.reviewsForTheHazard.items,\r\n review: state.hazard.newReview.item,\r\n isEditReviewEnabled: state.hazard.editReview.enable,\r\n reviewBeingEdited: state.hazard.editReview.item,\r\n openAddHazardReviewDialog: state.hazard.newReview.openAddHazardReviewDialog,\r\n openHazardReviewPanel: state.hazard.newHazard.showHazardReviewPanel,\r\n openDeleteReviewDialog:\r\n state.hazard.toBeDeleteReview.showDeleteHazardReviewDialog,\r\n showDeleteReviewDialog:\r\n state.hazard.toBeDeleteReview.showDeleteHazardReviewDialog,\r\n userId: state.users.user.item,\r\n allAttachments:\r\n state.hazard.editReview.item &&\r\n state.hazard.editReview.item.attachmentFiles\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openHazardReviewPanel: (open) => {\r\n dispatch(openHazardReviewPanelDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(handleHazardInputChangeDispatch(value, inputFieldName));\r\n },\r\n submitHazard: (hazard) => {\r\n const mode = submitMode.UPDATE;\r\n dispatch(submitHazardDispatch(hazard, mode));\r\n },\r\n fetchReviewsForTheHazard: (hazardId) => {\r\n dispatch(fetchReviewsForTheHazardDispatch(hazardId));\r\n },\r\n onHandleDeleteHazardReviewClick: (payload) => {\r\n dispatch(handleDeleteHazardReviewClickDispatch(payload));\r\n },\r\n submitReview: (payload, mode, branchId) => {\r\n dispatch(submitHazardReviewDispatch(payload, mode, branchId));\r\n },\r\n enableEditHazardReview: (\r\n enableEditControlMode,\r\n parentId,\r\n loggedInUserId\r\n ) => {\r\n dispatch(enableEditHazardReviewDispatch(enableEditControlMode, parentId));\r\n dispatch(\r\n fetchExistingAttachmentsForHazardReviewDispatch(\r\n domainType.HAZARD_REVIEW,\r\n parentId,\r\n loggedInUserId\r\n )\r\n );\r\n },\r\n onRemoveAttachment: (attachment) => {\r\n dispatch(removeHazardReviewAttachmentEdit(attachment));\r\n },\r\n onHandleAddHazardReviewInputChange: (value, inputFieldName) => {\r\n dispatch(handleAddHazardReviewInputChangeDispatch(value, inputFieldName));\r\n },\r\n onHandleEditHazardReviewInputChange: (value, inputFieldName) => {\r\n dispatch(\r\n handleEditHazardReviewInputChangeDispatch(value, inputFieldName)\r\n );\r\n },\r\n onOpenAddHazardReviewDialog: (open) => {\r\n dispatch(openAddHazardReviewDialogDispatch(open));\r\n },\r\n onOpenDeleteHazardReviewDialog: (open, reviewId) => {\r\n dispatch(openDeleteHazardReviewDialogDispatch(open, reviewId));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(HazardReviewPanel);\r\n","import React from 'react';\r\nimport { TableCell, IconButton } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Delete as DeleteIcon, Edit as EditIcon } from '@material-ui/icons';\r\nimport { utcToLocal } from './../../../utils/timeConverter';\r\nimport moment from 'moment';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n deleteIcon: {\r\n color: theme.palette.danger.minor\r\n },\r\n date: {},\r\n dateExpired: {\r\n color: theme.palette.danger.main\r\n }\r\n}));\r\n\r\nconst SingleHazardManagementLog = (props) => {\r\n const classes = useStyles();\r\n const {\r\n managementLog,\r\n enableEditManagementLog,\r\n handleOpenDeleteManagementLogClick,\r\n userId\r\n } = props;\r\n const time = utcToLocal(managementLog.logDate);\r\n return (\r\n \r\n \r\n {managementLog.description}\r\n \r\n \r\n {moment(time).format('DD MMM YYYY')}\r\n \r\n \r\n enableEditManagementLog(true, managementLog.id)}\r\n >\r\n \r\n \r\n\r\n \r\n handleOpenDeleteManagementLogClick(true, managementLog.id, userId)\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SingleHazardManagementLog;\r\n","import React from 'react';\r\nimport {\r\n TableCell,\r\n TextField,\r\n Button,\r\n Typography,\r\n Fab,\r\n Input,\r\n Grid\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { inputFieldNames } from '../../../constants';\r\nimport { DatePicker } from '../../DatePicker';\r\nimport { utcToLocal } from './../../../utils/timeConverter';\r\n\r\nimport { Attachment as AttachmentIcon } from '@material-ui/icons';\r\nimport CardAttachments from '../../CardAttachments';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n cancelButton: {\r\n marginLeft: 10,\r\n color: theme.palette.subTitle.main\r\n },\r\n addAttachmentFab: {\r\n margin: theme.spacing(1),\r\n marginLeft: 0\r\n },\r\n fab: {\r\n margin: theme.spacing(1)\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n width: 210,\r\n height: '36px !important',\r\n borderWidth: 1.3,\r\n flex: 1\r\n },\r\n extendedIcon: {\r\n marginRight: theme.spacing(1)\r\n }\r\n}));\r\n\r\nconst EditHazardManagementLog = (props) => {\r\n const classes = useStyles();\r\n const {\r\n managementLog,\r\n handleEditHazardManagementLogInputChange,\r\n enableEditManagementLog,\r\n handleSaveManagementLogClick,\r\n handleRemoveAttachment,\r\n allAttachments,\r\n branchId\r\n } = props;\r\n\r\n const hiddenFileInput = React.createRef();\r\n\r\n const handleClick = (event) => {\r\n hiddenFileInput.current.children[0].click();\r\n };\r\n\r\n const onAttachmendAdded = (event) => {\r\n event.preventDefault();\r\n const file = event.target.files[0];\r\n const newObj = {\r\n newlyAdded: true,\r\n removed: false,\r\n fileData: file,\r\n name: file.name\r\n };\r\n handleEditHazardManagementLogInputChange(\r\n newObj,\r\n inputFieldNames.HAZARD_MANAGEMENT_LOGS_ATTACHMENT\r\n );\r\n hiddenFileInput.current.children[0].value = null;\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n handleEditHazardManagementLogInputChange(\r\n e,\r\n inputFieldNames.LOG_DESCRIPION\r\n )\r\n }\r\n value={managementLog.description}\r\n fullWidth={true}\r\n multiline\r\n rows={2}\r\n variant=\"outlined\"\r\n />\r\n \r\n \r\n \r\n handleEditHazardManagementLogInputChange(\r\n date,\r\n inputFieldNames.LOG_DATE\r\n )\r\n }\r\n selectedDate={utcToLocal(managementLog.logDate)}\r\n required={true}\r\n />\r\n \r\n\r\n \r\n \r\n {/***************** Attachment ******************/}\r\n \r\n Attachments\r\n \r\n \r\n \r\n \r\n Add attachment\r\n \r\n \r\n \r\n {allAttachments && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Save\r\n \r\n enableEditManagementLog(false, managementLog.id)}\r\n className={classes.cancelButton}\r\n id=\"cancelButton\"\r\n >\r\n Cancel\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default EditHazardManagementLog;\r\n","import React from 'react';\r\nimport DualActionDialog from '../DualActionDialog';\r\n\r\nconst DeleteHazardManagementLogDialog = (props) => {\r\n const { managementLog, open, showDialog, errorMessage, isSaving } = props;\r\n\r\n const handleConfirmAction = async (event) => {\r\n event.preventDefault();\r\n const { onConfirmHazardReviewDelete, managementLog } = props;\r\n const payload = {\r\n ...managementLog\r\n };\r\n payload.isActive = false;\r\n onConfirmHazardReviewDelete(payload, payload.hazardId);\r\n };\r\n\r\n if (!managementLog) {\r\n return;\r\n }\r\n\r\n return (\r\n showDialog(false, managementLog.id)}\r\n handleSubmit={handleConfirmAction}\r\n showProgressBar={isSaving}\r\n errorMessage={errorMessage}\r\n isDanger={true}\r\n />\r\n );\r\n};\r\n\r\nexport default DeleteHazardManagementLogDialog;\r\n","import { connect } from 'react-redux';\r\nimport DeleteHazardManagementDialog from '../../components/DeleteHazardManagementLogDialog';\r\nimport { submitMode } from '../../constants';\r\n\r\nimport {\r\n openDeleteHazardManagementLogDialogDispatch,\r\n submitHazardManagementLogDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n managementLog: state.hazard.toBeDeleteManagementLog.item,\r\n open:\r\n state.hazard.toBeDeleteManagementLog.showDeleteHazardManagementLogDialog,\r\n isSaving: state.hazard.newManagementLog.isSaving,\r\n errorMessage: state.hazard.newManagementLog.errorMessage\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n showDialog: (open, managementLogId) => {\r\n dispatch(\r\n openDeleteHazardManagementLogDialogDispatch(open, managementLogId)\r\n );\r\n },\r\n onConfirmHazardReviewDelete: (payload) => {\r\n const mode = submitMode.UPDATE;\r\n dispatch(submitHazardManagementLogDispatch(payload, mode));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(DeleteHazardManagementDialog);\r\n","import React from 'react';\r\nimport {\r\n Paper,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableContainer,\r\n TableHead,\r\n TableRow\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport SingleHazardManagementLog from '../SingleHazardManagemenLog';\r\nimport EditHazardManagementLog from '../EditHazardManagementLog';\r\nimport DeleteHazardManagementLogDialog from '../../../containers/DeleteHazardManagementLogDialog';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n reviewListContainer: {\r\n padding: theme.spacing(2),\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n },\r\n table: {\r\n minWidth: 650\r\n },\r\n boldText: {\r\n fontWeight: 800\r\n }\r\n}));\r\n\r\nconst HazardManagementLogsList = (props) => {\r\n const classes = useStyles();\r\n const {\r\n managementLogs,\r\n enableEditManagementLog,\r\n isEditManagmentLogEnabled,\r\n managementLogBeingEdited,\r\n handleEditHazardManagementLogInputChange,\r\n handleSaveManagementLogClick,\r\n handleOpenDeleteManagementLogClick,\r\n showDeleteManagementLogDialog,\r\n userId,\r\n handleRemoveAttachment,\r\n allAttachments,\r\n branchId\r\n } = props;\r\n\r\n return (\r\n \r\n {showDeleteManagementLogDialog ? (\r\n \r\n ) : null}\r\n\r\n {managementLogs && (\r\n \r\n \r\n \r\n \r\n Description\r\n Review Date\r\n \r\n \r\n \r\n \r\n {managementLogs.map((managementLog) => {\r\n const isEditMode =\r\n isEditManagmentLogEnabled &&\r\n managementLog.id === managementLogBeingEdited.id;\r\n return (\r\n \r\n {isEditMode ? (\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\r\nexport default HazardManagementLogsList;\r\n","import React from 'react';\r\nimport { TextField, Grid, Fab, Input, Typography } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { inputFieldNames } from '../../../constants';\r\nimport { DatePicker } from '../../DatePicker';\r\nimport { utcToLocal } from '../../../utils/timeConverter';\r\n\r\nimport { Attachment as AttachmentIcon } from '@material-ui/icons';\r\nimport CardAttachments from '../../CardAttachments';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n addControlContainer: {\r\n padding: theme.spacing(2),\r\n marginTop: theme.spacing(2)\r\n },\r\n header: {\r\n paddingBottom: theme.spacing(1)\r\n },\r\n formContainer: {\r\n paddingBottom: theme.spacing(2)\r\n },\r\n addAttachmentFab: {\r\n margin: theme.spacing(1),\r\n marginLeft: 0\r\n },\r\n fab: {\r\n margin: theme.spacing(1)\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n width: 210,\r\n height: '36px !important',\r\n borderWidth: 1.3,\r\n flex: 1\r\n },\r\n extendedIcon: {\r\n marginRight: theme.spacing(1)\r\n }\r\n}));\r\n\r\nconst AddHazardManagementLog = (props) => {\r\n const classes = useStyles();\r\n const {\r\n managementLog,\r\n handleInputChange,\r\n handleSubmitManagementLog,\r\n actionButtonText = 'Add',\r\n handleRemoveAttachment,\r\n allAttachments\r\n } = props;\r\n\r\n const hiddenFileInput = React.createRef();\r\n\r\n const handleClick = (event) => {\r\n hiddenFileInput.current.children[0].click();\r\n };\r\n\r\n const onAttachmendAdded = (event) => {\r\n event.preventDefault();\r\n const file = event.target.files[0];\r\n const newObj = {\r\n newlyAdded: true,\r\n removed: false,\r\n fileData: file,\r\n name: file.name\r\n };\r\n handleInputChange(\r\n newObj,\r\n inputFieldNames.HAZARD_MANAGEMENT_LOGS_ATTACHMENT\r\n );\r\n hiddenFileInput.current.children[0].value = null;\r\n };\r\n\r\n return (\r\n \r\n \r\n handleInputChange(e, inputFieldNames.LOG_DESCRIPION)}\r\n value={managementLog.description}\r\n fullWidth={true}\r\n multiline\r\n rows={2}\r\n variant=\"outlined\"\r\n />\r\n \r\n\r\n \r\n \r\n handleInputChange(date, inputFieldNames.LOG_DATE)\r\n }\r\n selectedDate={\r\n actionButtonText === 'Add'\r\n ? managementLog.logDate\r\n : utcToLocal(managementLog.logDate)\r\n }\r\n required={true}\r\n />\r\n \r\n \r\n\r\n {/***************** Attachment ******************/}\r\n \r\n Attachments\r\n \r\n \r\n \r\n \r\n Add attachment\r\n \r\n \r\n \r\n {allAttachments && (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default AddHazardManagementLog;\r\n","import React from 'react';\r\nimport {\r\n DialogTitle,\r\n DialogContent,\r\n DialogActions,\r\n LinearProgress,\r\n Button\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Add as AddIcon } from '@material-ui/icons';\r\n\r\nimport Dialog from '../Dialog';\r\nimport AddManagementLog from '../HazardManagementLogPanel/AddHazardManagementLog';\r\nimport { inputFieldNames } from '../../constants';\r\nimport { submitMode } from '../../constants';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n dialog: {},\r\n dialogTitle: {\r\n background: '#f0f0f0'\r\n },\r\n dialogContent: {\r\n width: 580,\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(3)\r\n },\r\n actionButton: {\r\n width: 180,\r\n float: 'right',\r\n margin: theme.spacing(2)\r\n },\r\n footer: {\r\n background: '#f0f0f0'\r\n }\r\n}));\r\n\r\nconst AddHazardManagementLogDialog = (props) => {\r\n const classes = useStyles();\r\n const {\r\n openDialog,\r\n onOpenAddHazardManagementDialog,\r\n isSaving,\r\n managementLog,\r\n onHandleInputChange,\r\n hazard,\r\n submitManagementLog,\r\n allAttachments,\r\n onRemoveAttachment,\r\n branchId\r\n } = props;\r\n\r\n const onDialogClose = () => {\r\n onOpenAddHazardManagementDialog(false);\r\n };\r\n\r\n const handleSubmitManagementLog = (e) => {\r\n e.preventDefault();\r\n\r\n const payload = {\r\n hazardId: hazard.id,\r\n isActive: true,\r\n ...managementLog\r\n };\r\n submitManagementLog(payload, submitMode.CREATE, branchId);\r\n };\r\n\r\n const handleInputChange = (e, inputfieldName) => {\r\n if (\r\n inputfieldName === inputFieldNames.LOG_DATE ||\r\n inputfieldName === inputFieldNames.HAZARD_MANAGEMENT_LOGS_ATTACHMENT\r\n ) {\r\n onHandleInputChange(e, inputfieldName);\r\n } else {\r\n onHandleInputChange(e.target.value, inputfieldName);\r\n }\r\n };\r\n\r\n const handleRemoveAttachment = (attachment) => {\r\n onRemoveAttachment(attachment);\r\n };\r\n\r\n return (\r\n \r\n \r\n {isSaving ? : ''}\r\n \r\n Add Hazard Management Log\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n Cancel\r\n \r\n }\r\n >\r\n Add\r\n \r\n \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default AddHazardManagementLogDialog;\r\n","import { connect } from 'react-redux';\r\n\r\nimport AddHazardManagementLogDialog from '../../components/AddHazardManagementLogDialog';\r\nimport {\r\n openAddHazardManagementLogDialogDispatch,\r\n handleAddHazardManagementLogInputChangeDispatch,\r\n submitHazardManagementLogDispatch,\r\n removeHazardManagementLogsAttachment\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.hazard.newManagementLog.openAddHazardManagementDialog,\r\n isSaving: state.hazard.newManagementLog.isSaving,\r\n managementLog: state.hazard.newManagementLog.item,\r\n hazard: state.hazard.newHazard.item,\r\n allAttachments: state.hazard.newManagementLog.item.attachmentFiles,\r\n branchId: state.branch.branch.item && state.branch.branch.item.id\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n onOpenAddHazardManagementDialog: (open) => {\r\n dispatch(openAddHazardManagementLogDialogDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(\r\n handleAddHazardManagementLogInputChangeDispatch(value, inputFieldName)\r\n );\r\n },\r\n submitManagementLog: (payload, mode, branchId) => {\r\n dispatch(submitHazardManagementLogDispatch(payload, mode, branchId));\r\n },\r\n onRemoveAttachment: (attachment) => {\r\n dispatch(removeHazardManagementLogsAttachment(attachment));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(AddHazardManagementLogDialog);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { ArrowBack as ArrowBackIcon } from '@material-ui/icons';\r\nimport { IconButton, Typography, Button } from '@material-ui/core';\r\n\r\nimport { inputFieldNames } from '../../constants';\r\n\r\nimport HazardManagementLogsList from './HazardManagementLogsList';\r\nimport { submitMode } from '../../constants';\r\nimport AddHazardManagementLogDialog from '../../containers/AddHazardManagementLogDialog';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n simpleLabel: {\r\n display: 'inline-block',\r\n marginTop: 2\r\n },\r\n editHazardFieldsContainer: {\r\n padding: theme.spacing(2)\r\n },\r\n backArrow: {\r\n marginLeft: -16\r\n },\r\n courseName: {\r\n fontWeight: 600\r\n },\r\n addControlButton: {\r\n marginTop: 8\r\n }\r\n}));\r\n\r\nconst HazardManagementLogPanel = (props) => {\r\n const {\r\n hazard,\r\n openHazardManagementLogPanel,\r\n fetchManagementLogsForTheHazard,\r\n managementLogs,\r\n submitManagementLog,\r\n enableEditManagementLog,\r\n isEditManagmentLogEnabled,\r\n managementLogBeingEdited,\r\n onHandleEditHazardManagementLogInputChange,\r\n onOpenDeleteHazardManagementLogDialog,\r\n openAddHazardManagementLogDialog,\r\n onOpenAddHazardManagementLogDialog,\r\n showDeleteManagementLogDialog,\r\n userId,\r\n onRemoveAttachment,\r\n allAttachments,\r\n branchId\r\n } = props;\r\n const classes = useStyles();\r\n\r\n React.useEffect(() => {\r\n fetchManagementLogsForTheHazard(hazard.id);\r\n }, [hazard.id]);\r\n\r\n const handleEditHazardManagementLogInputChange = (e, inputfieldName) => {\r\n if (\r\n inputfieldName === inputFieldNames.LOG_DATE ||\r\n inputfieldName === inputFieldNames.HAZARD_MANAGEMENT_LOGS_ATTACHMENT\r\n ) {\r\n onHandleEditHazardManagementLogInputChange(e, inputfieldName);\r\n } else {\r\n onHandleEditHazardManagementLogInputChange(\r\n e.target.value,\r\n inputfieldName\r\n );\r\n }\r\n };\r\n\r\n const handleSaveManagementLogClick = (e) => {\r\n e.preventDefault();\r\n const payload = {\r\n ...managementLogBeingEdited\r\n };\r\n submitManagementLog(payload, submitMode.UPDATE, branchId);\r\n };\r\n\r\n const handleOpenDeleteManagementLogClick = (open, managementLogId) => {\r\n onOpenDeleteHazardManagementLogDialog(open, managementLogId);\r\n };\r\n\r\n const handleRemoveAttachment = (attachment) => {\r\n onRemoveAttachment(attachment);\r\n };\r\n\r\n return (\r\n \r\n {openAddHazardManagementLogDialog ? (\r\n \r\n ) : null}\r\n\r\n
    \r\n openHazardManagementLogPanel(false)}\r\n id=\"settings-button\"\r\n className={classes.backArrow}\r\n >\r\n \r\n \r\n Hazards\r\n
    \r\n\r\n
    \r\n \r\n {hazard.description}\r\n \r\n
    \r\n\r\n onOpenAddHazardManagementLogDialog(true)}\r\n >\r\n Add Hazard Management Log\r\n \r\n\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default HazardManagementLogPanel;\r\n","import { connect } from 'react-redux';\r\nimport HazardManagementLogPanel from '../../components/HazardManagementLogPanel';\r\nimport { domainType } from '../../constants';\r\n\r\nimport {\r\n submitHazardManagementLogDispatch,\r\n enableEditHazardManagementLogDispatch,\r\n handleEditHazardManagementLogInputChangeDispatch,\r\n handleAddHazardManagementLogInputChangeDispatch,\r\n openAddHazardManagementLogDialogDispatch,\r\n openHazardManagementLogPanelDispatch,\r\n fetchManagementLogsForTheHazardDispatch,\r\n openDeleteHazardManagementLogDialogDispatch,\r\n removeHazardManagementLogsAttachmentEdit,\r\n fetchExistingAttachmentsForHazardManagementLogsDispatch\r\n} from '../../actions';\r\nimport { submitMode } from '../../constants';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openPanel: state.hazard.newHazard.showEditHazardPanel,\r\n hazard: state.hazard.newHazard.item,\r\n branchId: state.branch.branch.item && state.branch.branch.item.id,\r\n managementLogs: state.hazard.managementLogsForTheHazard.items,\r\n managementLog: state.hazard.newManagementLog.item,\r\n isEditManagmentLogEnabled: state.hazard.editManagementLog.enable,\r\n managementLogBeingEdited: state.hazard.editManagementLog.item,\r\n openAddHazardManagementLogDialog:\r\n state.hazard.newManagementLog.openAddHazardManagementDialog,\r\n openHazardManagementLogPanel:\r\n state.hazard.newHazard.showHazardManagementLogPanel,\r\n openDeleteManagementLogDialog:\r\n state.hazard.toBeDeleteManagementLog.showDeleteHazardManagementLogDialog,\r\n showDeleteManagementLogDialog:\r\n state.hazard.toBeDeleteManagementLog.showDeleteHazardManagementLogDialog,\r\n userId: state.users.user.item,\r\n allAttachments:\r\n state.hazard.editManagementLog.item &&\r\n state.hazard.editManagementLog.item.attachmentFiles\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openHazardManagementLogPanel: (open) => {\r\n dispatch(openHazardManagementLogPanelDispatch(open));\r\n },\r\n fetchManagementLogsForTheHazard: (hazardId) => {\r\n dispatch(fetchManagementLogsForTheHazardDispatch(hazardId));\r\n },\r\n submitManagementLog: (payload, mode, branchId) => {\r\n dispatch(submitHazardManagementLogDispatch(payload, mode, branchId));\r\n },\r\n enableEditManagementLog: (\r\n enableEditManagementLogMode,\r\n parentId,\r\n loggedInUserId\r\n ) => {\r\n dispatch(\r\n enableEditHazardManagementLogDispatch(\r\n enableEditManagementLogMode,\r\n parentId\r\n )\r\n );\r\n dispatch(\r\n fetchExistingAttachmentsForHazardManagementLogsDispatch(\r\n domainType.HAZARD_LOGS,\r\n parentId,\r\n loggedInUserId\r\n )\r\n );\r\n },\r\n onRemoveAttachment: (attachment) => {\r\n dispatch(removeHazardManagementLogsAttachmentEdit(attachment));\r\n },\r\n onHandleAddHazardManagementLogInputChange: (value, inputFieldName) => {\r\n dispatch(\r\n handleAddHazardManagementLogInputChangeDispatch(value, inputFieldName)\r\n );\r\n },\r\n onHandleEditHazardManagementLogInputChange: (value, inputFieldName) => {\r\n dispatch(\r\n handleEditHazardManagementLogInputChangeDispatch(value, inputFieldName)\r\n );\r\n },\r\n onOpenAddHazardManagementLogDialog: (open) => {\r\n dispatch(openAddHazardManagementLogDialogDispatch(open));\r\n },\r\n onOpenDeleteHazardManagementLogDialog: (open, managementLogId) => {\r\n dispatch(\r\n openDeleteHazardManagementLogDialogDispatch(open, managementLogId)\r\n );\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(HazardManagementLogPanel);\r\n","import React from 'react';\r\nimport {\r\n makeStyles,\r\n Select,\r\n FormControl,\r\n InputLabel,\r\n MenuItem\r\n} from '@material-ui/core';\r\n\r\nconst styles = makeStyles((theme) => {\r\n return {\r\n formControl: {\r\n // width: 180,\r\n borderRadius: 100,\r\n // margin: theme.spacing(1),\r\n marginBottom: 20\r\n },\r\n select: {\r\n border: '1px solid ' + theme.palette.borderGray.default,\r\n borderRadius: 100,\r\n paddingLeft: 15,\r\n paddingTop: 3,\r\n height: 36,\r\n marginTop: '0 !important',\r\n fontSize: 14\r\n }\r\n };\r\n});\r\n\r\nconst DropDown = (props) => {\r\n const classes = styles();\r\n const {\r\n handleChange,\r\n label,\r\n items,\r\n value = 1,\r\n dropDownWidth = '180px',\r\n htmlId,\r\n disabled,\r\n fullWidth,\r\n valueField,\r\n displayField,\r\n widthRestricted\r\n } = props;\r\n return (\r\n \r\n \r\n {label}\r\n \r\n {items.map((item) => {\r\n return (\r\n \r\n {Array.isArray(displayField)\r\n ? `${item[displayField[0]]} ${item[displayField[1]]}`\r\n : item[displayField]}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DropDown;\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport { Grid } from '@material-ui/core';\r\n\r\nimport GenericViewPanel from './../GenericViewPanel';\r\nimport HazardsList from '../../containers/HazardsList';\r\nimport ButtonSearchBoxActionBar from '../ButtonSearchBoxActionBar';\r\nimport CreateHazardDialog from '../../containers/CreateHazardDialog';\r\nimport EditHazardPanel from '../../containers/EditHazardPanel';\r\nimport EditHazardDialog from '../../containers/EditHazardDialog';\r\nimport HazardReviewPanel from '../../containers/HazaradReviewPanel';\r\nimport HazardManagementLogPanel from '../../containers/HazardManagementLogPanel';\r\nimport { hazardStatus } from '../../constants';\r\n\r\nimport DropDown from '../DropDown';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n actionBar: {\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n },\r\n dropdownSpace: {\r\n marginTop: theme.spacing(1),\r\n marginBottom: theme.spacing(1)\r\n },\r\n leftMargin: {\r\n marginLeft: theme.spacing(2),\r\n marginRight: theme.spacing(-6)\r\n }\r\n}));\r\n\r\nconst HazardsPanel = (props) => {\r\n const classes = useStyles();\r\n const {\r\n searchTerm,\r\n handleSearchTermChange,\r\n openCreateAccidentDialog,\r\n openPanel,\r\n openDialog,\r\n openHazardLogsPanel,\r\n openHazardReviewPanel,\r\n selectedStausFilter,\r\n selectedSortFilter,\r\n statusFilters,\r\n descriptionFilters\r\n } = props;\r\n\r\n const handleHazardTypeFilterChange = (event) => {\r\n props.onHazardStatsTypeFilterChange(event.target.value);\r\n };\r\n\r\n const handleHazardSortTypeFilterChange = (event) => {\r\n props.onHazardSortTypeFilterChange(event.target.value);\r\n };\r\n\r\n const isPanelOpen =\r\n openPanel === true ||\r\n openHazardLogsPanel === true ||\r\n openHazardReviewPanel === true;\r\n\r\n return (\r\n \r\n \r\n {openDialog ? : null}\r\n\r\n {isPanelOpen ? (\r\n (openPanel ? : null) ||\r\n (openHazardReviewPanel ? : null) ||\r\n (openHazardLogsPanel ? : null)\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 \r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default HazardsPanel;\r\n","// HazardsPanel/index.js\r\nimport { connect } from 'react-redux';\r\nimport HazardsPanel from '../../components/HazardsPanel';\r\n\r\nimport {\r\n searchTermChangeForAllHazards,\r\n openCreateHazardDialogDispatch,\r\n changeHazardStatusTypeFilter,\r\n changeHazardDescriptionSortTypeFilter\r\n} from '../../actions';\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.hazard.newHazard.showEditHazardDialog,\r\n openPanel: state.hazard.newHazard.showEditHazardPanel,\r\n searchTerm: state.hazards.hazardsByBranch.searchTerm,\r\n openHazardReviewPanel: state.hazard.newHazard.showHazardReviewPanel,\r\n openHazardLogsPanel: state.hazard.newHazard.showHazardManagementLogPanel,\r\n selectedStausFilter: state.hazards.hazardStatusFilter.filter,\r\n selectedSortFilter: state.hazards.hazardDescriptionFilter.filter,\r\n statusFilters: state.hazards.hazardStatusFilter.items,\r\n descriptionFilters: state.hazards.hazardDescriptionFilter.items\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n handleSearchTermChange: (searchTerm) => {\r\n dispatch(searchTermChangeForAllHazards(searchTerm));\r\n },\r\n openCreateAccidentDialog: (open) => {\r\n dispatch(openCreateHazardDialogDispatch(open));\r\n },\r\n onHazardStatsTypeFilterChange: (stausId) => {\r\n dispatch(changeHazardStatusTypeFilter(stausId));\r\n },\r\n onHazardSortTypeFilterChange: (sortId) => {\r\n dispatch(changeHazardDescriptionSortTypeFilter(sortId));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(HazardsPanel);\r\n","import React, { Fragment } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GenericViewPanel from './../GenericViewPanel';\r\nimport DocumentList from '..//DocumenList';\r\n\r\nimport { ArrowBack as ArrowBackIcon } from '@material-ui/icons';\r\n\r\nimport { Grid } from '@material-ui/core';\r\n\r\nimport DocumentSearchDialog from '../DocumentSearchDialog';\r\n\r\nimport {\r\n IconButton,\r\n Typography,\r\n LinearProgress,\r\n DialogTitle,\r\n Button\r\n} from '@material-ui/core';\r\n\r\nimport { useState, useEffect } from 'react';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n actionBar: {\r\n marginTop: theme.spacing(4),\r\n marginBottom: theme.spacing(2)\r\n },\r\n title: {\r\n marginBottom: theme.spacing(2)\r\n }\r\n}));\r\n\r\nconst DocumentLibraryPanel = (props) => {\r\n const classes = useStyles();\r\n const {\r\n documents,\r\n allDocumentsForLibrary,\r\n currentDirectory,\r\n defaultDirectory,\r\n onShowFolderItems,\r\n onBackClicked,\r\n onReset,\r\n handleDocumentSelected,\r\n fetchAllDocumentsForLibrary,\r\n isLoading,\r\n branchId\r\n } = props;\r\n\r\n React.useEffect(\r\n () => {\r\n fetchAllDocumentsForLibrary(branchId);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n const [open, setOpen] = useState(false);\r\n\r\n const handleFolderClick = (folder) => {\r\n onShowFolderItems(folder.documentName);\r\n };\r\n\r\n const handleDocumentClick = (document) => {\r\n window.open(document.blobFullUrl, '_blank', 'noopener,noreferrer');\r\n // handleDocumentSelected(documentLink);\r\n };\r\n\r\n const handleBackButtonClicked = () => {\r\n onBackClicked();\r\n };\r\n\r\n const handleRemoveButtonClicked = () => {\r\n // handleDocumentSelected(null);\r\n };\r\n\r\n const handleSearchClosed = () => {\r\n setOpen(false);\r\n };\r\n\r\n const showBackBtn = currentDirectory === defaultDirectory ? false : true;\r\n\r\n return (\r\n \r\n {open && (\r\n \r\n )}\r\n\r\n
    \r\n \r\n \r\n \r\n Library\r\n \r\n \r\n \r\n {documents && documents.length > 0 && (\r\n setOpen(true)}\r\n >\r\n Search Documents\r\n \r\n )}\r\n \r\n \r\n\r\n {isLoading ? : ''}\r\n {!isLoading && (\r\n \r\n {showBackBtn ? (\r\n
    \r\n \r\n \r\n \r\n \r\n {' '}\r\n {currentDirectory}\r\n \r\n
    \r\n ) : (\r\n
    \r\n \r\n {' '}\r\n {currentDirectory}\r\n \r\n
    \r\n )}\r\n {documents && (\r\n \r\n )}\r\n
    \r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default DocumentLibraryPanel;\r\n","// EventsPanel/index.js\r\nimport { connect } from 'react-redux';\r\nimport DocumentLibraryPanel from '../../components/DocumentLibraryPanel';\r\nimport { documentType } from '../../constants';\r\n\r\nimport {\r\n onDocumentListBackArrowDispatch,\r\n onDocumentFolderShowDispatch,\r\n onResetDocumentDispatch,\r\n fetchAllDocumentsDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n documents: state.settings.allDocuments.items,\r\n allDocumentsForLibrary: state.settings.allDocuments.itemsCopy,\r\n currentDirectory: state.settings.currentDirectory,\r\n defaultDirectory: state.settings.defaultDirectory,\r\n isLoading: state.settings.allDocuments.isLoading,\r\n branchId: state.branch.branch.item && state.branch.branch.item.id,\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n onReset: () => {\r\n dispatch(onResetDocumentDispatch());\r\n },\r\n onBackClicked: () => {\r\n dispatch(onDocumentListBackArrowDispatch());\r\n },\r\n onShowFolderItems: (prefix) => {\r\n dispatch(onDocumentFolderShowDispatch(prefix));\r\n },\r\n fetchAllDocumentsForLibrary: (branchId) => {\r\n dispatch(fetchAllDocumentsDispatch(documentType.DOCUMENT_LIBRARY, branchId));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(DocumentLibraryPanel);\r\n","import React from 'react';\r\nimport {\r\n DialogTitle,\r\n Button,\r\n DialogActions,\r\n DialogContent,\r\n TextField,\r\n Grid,\r\n LinearProgress\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport Dialog from '../../Dialog';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n dialog: {},\r\n dialogTitle: {\r\n background: '#f0f0f0'\r\n },\r\n dialogContent: {\r\n width: 580,\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(3)\r\n },\r\n actionButton: {\r\n width: 180,\r\n float: 'right',\r\n margin: theme.spacing(2)\r\n },\r\n footer: {\r\n background: '#f0f0f0'\r\n }\r\n}));\r\n\r\nconst AddFolder = (props) => {\r\n const {\r\n openDialog,\r\n isSaving,\r\n handleSubmit,\r\n folderName,\r\n onHandleInputChange,\r\n handleClose\r\n } = props;\r\n\r\n const classes = useStyles();\r\n\r\n const onDialogClose = () => {\r\n handleClose();\r\n };\r\n\r\n const handleInputChange = (e, inputfieldName) => {\r\n onHandleInputChange(e.target.value, inputfieldName);\r\n };\r\n\r\n\r\n return (\r\n \r\n \r\n {isSaving ? : ''}\r\n \r\n Add Folder\r\n \r\n
    \r\n \r\n \r\n \r\n handleInputChange(e, \"FOLDER\")}\r\n value={folderName}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n Cancel\r\n \r\n \r\n Add\r\n \r\n \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default AddFolder;\r\n","import React, { Fragment } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GenericViewPanel from './../GenericViewPanel';\r\nimport DocumentList from '..//DocumenList';\r\n\r\nimport { ArrowBack as ArrowBackIcon } from '@material-ui/icons';\r\nimport FolderIcon from '@material-ui/icons/Folder';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\n\r\nimport { Grid } from '@material-ui/core';\r\n\r\nimport DocumentSearchDialog from '../DocumentSearchDialog';\r\nimport AddFolder from './AddFolder';\r\n\r\nimport { Attachment as AttachmentIcon } from '@material-ui/icons';\r\n\r\nimport {\r\n IconButton,\r\n Typography,\r\n LinearProgress,\r\n DialogTitle,\r\n Button,\r\n Fab,\r\n Input\r\n} from '@material-ui/core';\r\n\r\nimport { useState, useEffect } from 'react';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n actionBar: {\r\n marginTop: theme.spacing(4),\r\n marginBottom: theme.spacing(2)\r\n },\r\n addAttachmentFab: {\r\n marginRight: theme.spacing(3),\r\n },\r\n fab: {\r\n margin: theme.spacing(1)\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n width: 250,\r\n height: '36px !important',\r\n borderWidth: 1.3,\r\n flex: 1\r\n },\r\n extendedIcon:{\r\n marginRight: theme.spacing(1),\r\n }\r\n}));\r\n\r\nconst DocumentLibraryPanelForBranch = (props) => {\r\n const classes = useStyles();\r\n const {\r\n documents,\r\n allDocumentsForLibrary,\r\n currentDirectory,\r\n defaultDirectory,\r\n onShowFolderItems,\r\n onBackClicked,\r\n onReset,\r\n handleDocumentSelected,\r\n fetchAllDocumentsForLibrary,\r\n isLoading,\r\n branchId,\r\n onAddFolderDispatch\r\n } = props;\r\n\r\n React.useEffect(\r\n () => {\r\n fetchAllDocumentsForLibrary(branchId);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n const [open, setOpen] = useState(false);\r\n\r\n\r\n\r\n const handleFolderClick = (folder) => {\r\n onShowFolderItems(folder.documentName);\r\n };\r\n\r\n const handleDocumentClick = (document) => {\r\n window.open(document.blobFullUrl, '_blank', 'noopener,noreferrer');\r\n };\r\n\r\n\r\n const handleBackButtonClicked = (e) => {\r\n e.preventDefault();\r\n onBackClicked();\r\n };\r\n\r\n\r\n const handleSearchClosed = () => {\r\n setOpen(false);\r\n };\r\n \r\n\r\n //Attahchments\r\n\r\n \r\n const hiddenFileInput = React.createRef();\r\n \r\n const handleClick = (event) => {\r\n hiddenFileInput.current.children[0].click();\r\n };\r\n\r\n const onAttachmendAdded = (event) => {\r\n event.preventDefault();\r\n\r\n const {onAttachmentAdd} = props;\r\n\r\n const file = event.target.files[0];\r\n\r\n const payload = {branchId, attachments: file, currentDirectory, defaultDirectory}\r\n\r\n onAttachmentAdd(payload);\r\n\r\n /*onHandleInputChange(newObj, inputFieldNames.ACCIDENT_ATTACHMENT);*/\r\n\r\n hiddenFileInput.current.children[0].value = null;\r\n };\r\n\r\n const handleDeleteClick = (document) => {\r\n const {onAttachmentRemove} = props;\r\n const payload = {...document, branchId}\r\n onAttachmentRemove(payload);\r\n }\r\n\r\n\r\n //Add Folder props\r\n const [addFolderOpen, setFolderOpen] = useState(false);\r\n const [folderName, setFolderName] = useState(\"\");\r\n \r\n \r\n const onHandleInputChange = (e, inputName) => {\r\n setFolderName(e);\r\n };\r\n\r\n const handleAddFolderClosed = () => {\r\n setFolderOpen(false);\r\n };\r\n \r\n const handleAddFolderSubmit = () => {\r\n onAddFolderDispatch(folderName); \r\n setFolderOpen(false);\r\n setFolderName(\"\");\r\n };\r\n\r\n const showBackBtn = currentDirectory === defaultDirectory + \"branch-\" + branchId + '/' ? false : true;\r\n\r\n return (\r\n \r\n {open && (\r\n \r\n )}\r\n\r\n {addFolderOpen && \r\n ()}\r\n\r\n
    \r\n \r\n \r\n \r\n Library\r\n \r\n \r\n \r\n \r\n setFolderOpen(true)}\r\n className={`${classes.addAttachmentFab} ${classes.button}`}\r\n >\r\n \r\n Add Folder\r\n \r\n\r\n \r\n \r\n Add attachment\r\n \r\n \r\n\r\n {documents && documents.length > 0 && (\r\n setOpen(true)}\r\n className={`${classes.addAttachmentFab} ${classes.button}`}\r\n >\r\n \r\n Search Documents\r\n \r\n )}\r\n \r\n \r\n\r\n {isLoading ? : ''}\r\n {!isLoading && (\r\n \r\n {showBackBtn ? (\r\n
    \r\n \r\n \r\n \r\n \r\n {' '}\r\n {currentDirectory}\r\n \r\n
    \r\n ) : (\r\n
    \r\n \r\n {' '}\r\n {currentDirectory}\r\n \r\n
    \r\n )}\r\n {documents && (\r\n \r\n )}\r\n
    \r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default DocumentLibraryPanelForBranch;\r\n","// EventsPanel/index.js\r\nimport { connect } from 'react-redux';\r\nimport DocumentLibraryPanelForBranch from '../../components/DocumentLibraryPanelForBranch';\r\nimport { documentType } from '../../constants';\r\n\r\nimport {\r\n onDocumentListBackArrowDispatch,\r\n onDocumentFolderShowDispatch,\r\n onResetDocumentDispatch,\r\n fetchAllDocumentsForBranchDispatch,\r\n onFolderAddDispatch,\r\n onAttachmentAddDispatch,\r\n onAttachmentRemovedDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n documents: state.settings.allDocuments.items,\r\n allDocumentsForLibrary: state.settings.allDocuments.itemsCopy,\r\n currentDirectory: state.settings.currentDirectory,\r\n defaultDirectory: state.settings.defaultDirectory,\r\n isLoading: state.settings.allDocuments.isLoading,\r\n branchId: state.branch.branch.item && state.branch.branch.item.id\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n onReset: () => {\r\n dispatch(onResetDocumentDispatch());\r\n },\r\n onBackClicked: () => {\r\n dispatch(onDocumentListBackArrowDispatch());\r\n },\r\n onShowFolderItems: (prefix) => {\r\n dispatch(onDocumentFolderShowDispatch(prefix));\r\n },\r\n fetchAllDocumentsForLibrary: (branchId) => {\r\n dispatch(fetchAllDocumentsForBranchDispatch(branchId));\r\n },\r\n onAddFolderDispatch:(folderName) => {\r\n dispatch(onFolderAddDispatch(folderName));\r\n },\r\n onAttachmentAdd: (payload) => {\r\n dispatch(onAttachmentAddDispatch(payload));\r\n },\r\n onAttachmentRemove: (payload) => {\r\n dispatch(onAttachmentRemovedDispatch(payload));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(DocumentLibraryPanelForBranch);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport { buttonNames } from '../../constants';\r\nimport DashboardPanel from '../../containers/DashboardPanel';\r\nimport CoursesPanel from '../../containers/CoursesPanel';\r\nimport PersonnelPanel from '../../containers/PersonnelPanel';\r\nimport EventsPanel from '../../containers/EventsPanel';\r\nimport InductionsPanel from '../../containers/InductionsPanel';\r\nimport AccidentsPanel from '../../containers/AccidentsPanel';\r\nimport MeetingsPanel from '../../containers/MeetingsPanel';\r\nimport UserPannel from '../../containers/UserPannel';\r\nimport HazardsPanel from '../../containers/HazardsPanel';\r\nimport DocumentLibraryPanel from '../../containers/DocumentLibraryPanel';\r\nimport DocumentLibraryPanelForBranch from '../../containers/DocumentLibraryPanelForBranch';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n viewPanelContainer: {\r\n marginTop: 45,\r\n marginLeft: 370,\r\n marginRight: 50\r\n },\r\n noPermissionHeader: {\r\n marginTop: 60\r\n }\r\n}));\r\n\r\nconst BranchesViewPanel = (props) => {\r\n const classes = useStyles();\r\n const { currentBranchesRecord, loggedInUser, currentBranch } = props;\r\n let currentPanelToShow;\r\n\r\n const denyAccess =\r\n currentBranch != null &&\r\n ((loggedInUser.companyId != null &&\r\n currentBranch.companyId !== loggedInUser.companyId) ||\r\n (loggedInUser.branchId != null &&\r\n currentBranch.id !== loggedInUser.branchId));\r\n\r\n switch (currentBranchesRecord) {\r\n case buttonNames.DASHBOARD:\r\n currentPanelToShow = ;\r\n break;\r\n case buttonNames.COURSES:\r\n currentPanelToShow = ;\r\n break;\r\n case buttonNames.PERSONNEL:\r\n currentPanelToShow = ;\r\n break;\r\n case buttonNames.EVENTS:\r\n currentPanelToShow = ;\r\n break;\r\n case buttonNames.INDUCTIONS:\r\n currentPanelToShow = ;\r\n break;\r\n case buttonNames.ACCIDENTS:\r\n currentPanelToShow = ;\r\n break;\r\n case buttonNames.MEETINGS:\r\n currentPanelToShow = ;\r\n break;\r\n case buttonNames.USERS:\r\n currentPanelToShow = ;\r\n break;\r\n case buttonNames.HAZARDS:\r\n currentPanelToShow = ;\r\n break;\r\n case buttonNames.DOCUMENT_LIBRARY:\r\n currentPanelToShow = ;\r\n break;\r\n case buttonNames.DOCUMENT_LIBRARY_FOR_BRANCH:\r\n currentPanelToShow = ;\r\n break;\r\n default:\r\n currentPanelToShow = ;\r\n break;\r\n }\r\n\r\n console.log(currentPanelToShow);\r\n\r\n return (\r\n
    \r\n {denyAccess ? (\r\n

    \r\n You do not have permission to view this page\r\n

    \r\n ) : (\r\n currentPanelToShow\r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default BranchesViewPanel;\r\n","// BranchesViewPanel/index.js\r\nimport { connect } from 'react-redux';\r\nimport BranchesViewPanel from '../../components/BranchesViewPanel';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n currentBranchesRecord: state.branches.currentBranchesRecord,\r\n loggedInUser: state.users.user.item,\r\n currentBranch: state.branch.branch.item\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {};\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(BranchesViewPanel);\r\n","// BranchesDashboard/index.js\r\nimport React from 'react';\r\n\r\nimport BranchRecordsItemsList from '../../containers/BranchRecordsItemsList';\r\nimport BranchesViewPanel from '../../containers/BranchesViewPanel';\r\n\r\nfunction BranchesDashboard(props) {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nBranchesDashboard.propTypes = {\r\n // describe the component's prop types here\r\n};\r\n\r\nBranchesDashboard.defaultProps = {\r\n // assign default props to the component here\r\n};\r\n\r\nexport default BranchesDashboard;\r\n","import { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nimport BranchesDashboard from '../../components/BranchesDashboard';\r\n// import { searchTermChangeForAllCompanies } from '../../actions';\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return {};\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => {\r\n return {};\r\n};\r\n\r\nexport default withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(BranchesDashboard)\r\n);\r\n","// BranchesPage/index.js\r\nimport React from 'react';\r\n\r\nimport BranchesPageHeader from '../../containers/BranchesPageHeader';\r\nimport BranchesDashboard from '../../containers/BranchesDashboard';\r\n\r\nconst BranchesPage = (props) => {\r\n const { viewBranchAsAdmin } = props;\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nBranchesPage.propTypes = {\r\n // describe the component's prop types here\r\n};\r\n\r\nBranchesPage.defaultProps = {\r\n // assign default props to the component here\r\n};\r\n\r\nexport default BranchesPage;\r\n","import React from 'react';\r\nimport { branchStatus } from '../../constants';\r\nimport DualActionDialog from '../DualActionDialog';\r\n\r\nconst DeativeOrDeleteBranchDialog = (props) => {\r\n const { branch, open, showDialog, errorMessage, isUpdating, status } = props;\r\n\r\n const title = status === branchStatus.DEACTIVE ? 'Deactive' : 'Delete';\r\n const actionText =\r\n status === branchStatus.DEACTIVE ? 'Deactiveted' : 'Deleted';\r\n\r\n const handleConfirmAction = async (event) => {\r\n event.preventDefault();\r\n const { onConfirmEmloyerStatusUpdate, branch, status } = props;\r\n const payload = {\r\n ...branch,\r\n status\r\n };\r\n onConfirmEmloyerStatusUpdate(payload);\r\n };\r\n\r\n return (\r\n showDialog(false, branch.id, status)}\r\n handleSubmit={handleConfirmAction}\r\n showProgressBar={isUpdating}\r\n errorMessage={errorMessage}\r\n isDanger={true}\r\n />\r\n );\r\n};\r\n\r\nexport default DeativeOrDeleteBranchDialog;\r\n","import { connect } from 'react-redux';\r\n\r\nimport DeativeOrDeleteBranchDialog from '../../components/DeativeOrDeleteBranchDialog';\r\nimport {\r\n showDeleteOrDeactiveBranchDialogStateChanged,\r\n DeactiveOrDeleteBranchDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n const branchId = state.branch.deleteOrDeactivatingBranch.branchId;\r\n const allBranches = state.branches.allBranches.items;\r\n const selectedBranch =\r\n branchId === 0 ? {} : allBranches.filter((e) => e.id === branchId)[0];\r\n\r\n return {\r\n branch: selectedBranch,\r\n open: state.branch.deleteOrDeactivatingBranch.open,\r\n isUpdating: state.branch.deleteOrDeactivatingBranch.isSaving,\r\n errorMessage: state.branch.deleteOrDeactivatingBranch.errorMessage,\r\n status: state.branch.deleteOrDeactivatingBranch.status\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n showDialog: (open, branchId, status) => {\r\n dispatch(\r\n showDeleteOrDeactiveBranchDialogStateChanged(open, branchId, status)\r\n );\r\n },\r\n onConfirmEmloyerStatusUpdate: (branch) => {\r\n dispatch(DeactiveOrDeleteBranchDispatch(branch));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(DeativeOrDeleteBranchDialog);\r\n","import React from 'react';\r\nimport {\r\n DialogTitle,\r\n Button,\r\n DialogActions,\r\n DialogContent,\r\n TextField,\r\n Grid,\r\n LinearProgress\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport Dialog from '../Dialog';\r\nimport FancyDropDown from '../FancyDropDown';\r\nimport { inputFieldNames } from '../../constants';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n dialog: {},\r\n dialogTitle: {\r\n background: '#f0f0f0'\r\n },\r\n dialogContent: {\r\n width: 580,\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(3)\r\n },\r\n actionButton: {\r\n width: 180,\r\n float: 'right',\r\n margin: theme.spacing(2)\r\n },\r\n footer: {\r\n background: '#f0f0f0'\r\n },\r\n multilineTextBox: {\r\n marginTop: 20\r\n }\r\n}));\r\n\r\nconst CreateEditBranchFormUI = (props) => {\r\n const classes = useStyles();\r\n const {\r\n openDialog,\r\n openCreateBranchDialog,\r\n onHandleInputChange,\r\n branch,\r\n title,\r\n isSaving,\r\n companies,\r\n handleSubmit\r\n } = props;\r\n\r\n const onDialogClose = () => {\r\n openCreateBranchDialog(false);\r\n };\r\n\r\n const handleInputChange = (e, inputfieldName) => {\r\n onHandleInputChange(e.target.value, inputfieldName);\r\n };\r\n\r\n return (\r\n \r\n \r\n {isSaving ? : ''}\r\n \r\n {title}\r\n \r\n
    \r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.NAME)}\r\n value={branch.name}\r\n />\r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.CONTACT_PERSON)\r\n }\r\n value={branch.contactPerson}\r\n />\r\n \r\n \r\n handleInputChange(e, inputFieldNames.EMAIL)}\r\n value={branch.email}\r\n />\r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.COMPANY)\r\n }\r\n items={companies}\r\n dropDownWidth=\"100%\"\r\n className={classes.dropDown}\r\n valueField=\"id\"\r\n displayField=\"name\"\r\n required={true}\r\n />\r\n \r\n \r\n handleInputChange(e, inputFieldNames.PHONE)}\r\n value={branch.phone}\r\n />\r\n \r\n \r\n handleInputChange(e, inputFieldNames.FAX)}\r\n value={branch.fax}\r\n />\r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.ADDRESS)\r\n }\r\n value={branch.address}\r\n />\r\n \r\n \r\n handleInputChange(e, inputFieldNames.NOTES)}\r\n value={branch.notes}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n Cancel\r\n \r\n \r\n Add\r\n \r\n \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default CreateEditBranchFormUI;\r\n","import React from 'react';\r\n\r\nimport CreateEditBranchFormUI from '../CreateEditBranchFormUI';\r\n\r\nconst EditBranchDialog = (props) => {\r\n const {\r\n openDialog,\r\n openCreateBranchDialog,\r\n onHandleInputChange,\r\n branch,\r\n submitBranch,\r\n isSaving,\r\n companies\r\n } = props;\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n submitBranch(branch);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default EditBranchDialog;\r\n","// EditBranchDialog/index.js\r\nimport { connect } from 'react-redux';\r\n\r\nimport EditBranchDialog from '../../components/EditBranchDialog';\r\nimport {\r\n openEditBranchDialogDispatch,\r\n handleBranchInputChangeDispatch,\r\n submitBranchDispatch\r\n} from '../../actions';\r\nimport { submitMode } from '../../constants';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.branch.newBranch.showEditBranchDialog,\r\n branch: state.branch.newBranch.item,\r\n isSaving: state.branch.newBranch.isSaving,\r\n companies:\r\n state.companies.allCompanies && state.companies.allCompanies.items\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openCreateBranchDialog: (open) => {\r\n dispatch(openEditBranchDialogDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(handleBranchInputChangeDispatch(value, inputFieldName));\r\n },\r\n submitBranch: (branch) => {\r\n const mode = submitMode.UPDATE;\r\n dispatch(submitBranchDispatch(branch, mode));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EditBranchDialog);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Paper, Grid, Typography, Button, Link } from '@material-ui/core';\r\nimport BlockIcon from '@material-ui/icons/Block';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport DeleteOutlineIcon from '@material-ui/icons/DeleteOutline';\r\n\r\nimport { branchStatus } from '../../constants';\r\nimport DeactiveOrDeleteBranchDialog from './../../containers/DeativeOrDeleteBranchDialog';\r\nimport EditBranchDialog from '../../containers/EditBranchDialog';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n padding: theme.spacing(2),\r\n paddingLeft: theme.spacing(3),\r\n marginBottom: theme.spacing(1)\r\n },\r\n companyName: {\r\n fontSize: 18,\r\n fontWeight: 800,\r\n paddingTop: theme.spacing(1)\r\n },\r\n email: {\r\n paddingTop: theme.spacing(1)\r\n },\r\n deactivateContainer: {},\r\n editDeleteContainer: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center'\r\n },\r\n editButton: {\r\n color: theme.palette.secondary.main\r\n },\r\n deleteButton: {\r\n color: theme.palette.danger.main\r\n },\r\n root: { marginBottom: 20 },\r\n branchList: {\r\n height: '100%',\r\n overflowY: 'auto',\r\n padding: 0,\r\n marginBottom: 20\r\n }\r\n}));\r\n\r\nconst mapComapnyIdToCompanyName = (allCompanies, companyId) => {\r\n var selectedCompany = allCompanies.filter((c) => c.id === companyId)[0];\r\n return selectedCompany ? selectedCompany.name : 'Inconsistent Data';\r\n};\r\n\r\nconst SingleBranch = (props) => {\r\n const classes = useStyles();\r\n\r\n const {\r\n branch,\r\n allCompanies,\r\n handleBranchEditClick,\r\n openDeleteOrDeactiveBranchDialog\r\n } = props;\r\n const branchId = branch.id;\r\n\r\n React.useEffect(\r\n () => {},\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n let companyName = '';\r\n if (allCompanies && allCompanies.length > 0) {\r\n companyName = mapComapnyIdToCompanyName(allCompanies, branch.companyId);\r\n }\r\n\r\n return (\r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n {branch && branch.name}\r\n \r\n \r\n {companyName}\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n }\r\n onClick={() =>\r\n openDeleteOrDeactiveBranchDialog(\r\n true,\r\n branchId,\r\n branchStatus.DEACTIVE\r\n )\r\n }\r\n style={{ display: 'none' }}\r\n >\r\n Deactivate\r\n \r\n \r\n View as admin\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n }\r\n className={classes.editButton}\r\n onClick={() => handleBranchEditClick({ ...branch })}\r\n >\r\n Edit\r\n \r\n }\r\n className={classes.deleteButton}\r\n onClick={() =>\r\n openDeleteOrDeactiveBranchDialog(\r\n true,\r\n branchId,\r\n branchStatus.DELETE\r\n )\r\n }\r\n >\r\n Delete\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nfunction BranchesList(props) {\r\n const classes = useStyles();\r\n const {\r\n branches,\r\n fetchAllBranches,\r\n onBranchEditClick,\r\n openDeleteOrDeactiveBranchDialog,\r\n companies,\r\n fetchAllCompanies\r\n } = props;\r\n React.useEffect(() => {\r\n fetchAllBranches();\r\n if (companies && companies.length === 0) {\r\n fetchAllCompanies();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const handlDeleteOrDeactiveBranchDialog = (open, branchId, status) => {\r\n openDeleteOrDeactiveBranchDialog(open, branchId, status);\r\n };\r\n\r\n const handleBranchEditClick = (branch) => {\r\n onBranchEditClick(branch);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n
    \r\n {branches &&\r\n branches.map((branch) => {\r\n return (\r\n \r\n );\r\n })}\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default BranchesList;\r\n","import { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nimport BranchesList from '../../components/BranchesList';\r\nimport {\r\n getBranches,\r\n openEditBranchDialogDispatch,\r\n BranchEditClickDispatch,\r\n fetchAllCompaniesDispatch,\r\n showDeleteOrDeactiveBranchDialogStateChanged\r\n} from '../../actions';\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return {\r\n branches: state.branches.allBranches.items,\r\n companies: state.companies.allCompanies.items\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => {\r\n return {\r\n fetchAllBranches: () => {\r\n dispatch(getBranches());\r\n },\r\n openDeleteOrDeactiveBranchDialog: (open, branchId, status) => {\r\n dispatch(\r\n showDeleteOrDeactiveBranchDialogStateChanged(open, branchId, status)\r\n );\r\n },\r\n onBranchEditClick: (branch) => {\r\n dispatch(openEditBranchDialogDispatch(true));\r\n dispatch(BranchEditClickDispatch(branch));\r\n },\r\n fetchAllCompanies: () => {\r\n dispatch(fetchAllCompaniesDispatch());\r\n }\r\n };\r\n};\r\n\r\nexport default withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(BranchesList)\r\n);\r\n","import React from 'react';\r\nimport CreateEditBranchFormUI from '../CreateEditBranchFormUI';\r\nimport { branchStatus } from '../../constants';\r\n\r\nconst CreateBranchDialog = (props) => {\r\n const {\r\n openDialog,\r\n openCreateBranchDialog,\r\n onHandleInputChange,\r\n branch,\r\n submitBranch,\r\n isSaving,\r\n companies\r\n } = props;\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n const { branch } = props;\r\n const payload = {\r\n ...branch,\r\n status: branchStatus.ACTIVE\r\n };\r\n submitBranch(payload);\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default CreateBranchDialog;\r\n","// CreateCompanyDialog/index.js\r\nimport { connect } from 'react-redux';\r\n\r\nimport CreateBranchDialog from '../../components/CreateBranchDialog';\r\nimport {\r\n openCreateBranchDialogDispatch,\r\n handleBranchInputChangeDispatch,\r\n submitBranchDispatch\r\n} from '../../actions';\r\nimport { submitMode } from '../../constants';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.branch.newBranch.showCreateBranchDialog,\r\n branch: state.branch.newBranch.item,\r\n isSaving: state.branch.newBranch.isSaving,\r\n companies: state.companies.allCompanies.items\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openCreateBranchDialog: (open) => {\r\n dispatch(openCreateBranchDialogDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(handleBranchInputChangeDispatch(value, inputFieldName));\r\n },\r\n submitBranch: (branch) => {\r\n const mode = submitMode.CREATE;\r\n dispatch(submitBranchDispatch(branch, mode));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CreateBranchDialog);\r\n","// ChildrenDashboard/index.js\r\nimport React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport BranchesList from '../../containers/BranchesList';\r\nimport ButtonSearchBoxActionBar from '../ButtonSearchBoxActionBar';\r\nimport CreateBranchDialog from '../../containers/CreateBranchDialog';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n actionBar: {\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n }\r\n}));\r\n\r\nconst BranchDashboard = (props) => {\r\n const {\r\n searchTerm,\r\n handleSearchTermChange,\r\n openCreateBranchDialog,\r\n loggedInUser\r\n } = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n
    \r\n 2}\r\n />\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nBranchDashboard.propTypes = {\r\n // describe the component's prop types here\r\n};\r\n\r\nBranchDashboard.defaultProps = {\r\n // assign default props to the component here\r\n};\r\n\r\nexport default BranchDashboard;\r\n","import { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nimport {\r\n searchTermChangeForBranch,\r\n openCreateBranchDialogDispatch\r\n} from '../../actions';\r\n\r\nimport BranchDashboard from '../../components/BranchDashboard';\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return {\r\n searchTerm: state.branches.allBranches.searchTerm,\r\n loggedInUser: state.users.user.item\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => {\r\n return {\r\n handleSearchTermChange: (searchTerm) => {\r\n dispatch(searchTermChangeForBranch(searchTerm));\r\n },\r\n openCreateBranchDialog: () => {\r\n dispatch(openCreateBranchDialogDispatch(true));\r\n }\r\n };\r\n};\r\n\r\nexport default withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(BranchDashboard)\r\n);\r\n","import React from 'react';\r\nimport {\r\n DialogTitle,\r\n Button,\r\n DialogActions,\r\n DialogContent,\r\n TextField,\r\n Grid,\r\n LinearProgress\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport Dialog from '../Dialog';\r\nimport { inputFieldNames } from '../../constants';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n dialog: {},\r\n dialogTitle: {\r\n background: '#f0f0f0'\r\n },\r\n dialogContent: {\r\n width: 580,\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(3)\r\n },\r\n actionButton: {\r\n width: 180,\r\n float: 'right',\r\n margin: theme.spacing(2)\r\n },\r\n footer: {\r\n background: '#f0f0f0'\r\n }\r\n}));\r\n\r\nconst CreateEditCompanyFormUI = (props) => {\r\n const {\r\n openDialog,\r\n isSaving,\r\n handleSubmit,\r\n title,\r\n company,\r\n onHandleInputChange,\r\n openCreateCompanyDialog\r\n } = props;\r\n const classes = useStyles();\r\n\r\n const onDialogClose = () => {\r\n openCreateCompanyDialog(false);\r\n };\r\n\r\n const handleInputChange = (e, inputfieldName) => {\r\n onHandleInputChange(e.target.value, inputfieldName);\r\n };\r\n\r\n return (\r\n \r\n \r\n {isSaving ? : ''}\r\n \r\n {title}\r\n \r\n
    \r\n \r\n \r\n \r\n handleInputChange(e, inputFieldNames.NAME)}\r\n value={company.name}\r\n />\r\n \r\n \r\n handleInputChange(e, inputFieldNames.EMAIL)}\r\n value={company.email}\r\n />\r\n \r\n \r\n handleInputChange(e, inputFieldNames.PHONE)}\r\n value={company.phone}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n Cancel\r\n \r\n \r\n Add\r\n \r\n \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default CreateEditCompanyFormUI;\r\n","import React from 'react';\r\n\r\nimport CreateEditCompanyFormUI from '../CreateEditCompanyFormUI';\r\nimport { companyStatus } from '../../constants';\r\n\r\nconst CreateCompanyDialog = (props) => {\r\n const {\r\n openDialog,\r\n openCreateCompanyDialog,\r\n onHandleInputChange,\r\n company,\r\n submitCompany,\r\n isSaving\r\n } = props;\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n const { company } = props;\r\n const payload = {\r\n ...company,\r\n status: companyStatus.ACTIVE\r\n };\r\n submitCompany(payload);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CreateCompanyDialog;\r\n","// CreateCompanyDialog/index.js\r\nimport { connect } from 'react-redux';\r\n\r\nimport CreateCompanyDialog from '../../components/CreateCompanyDialog';\r\nimport { submitMode } from '../../constants';\r\n\r\nimport {\r\n openCreateCompanyDialogDispatch,\r\n handleCompanyInputChangeDispatch,\r\n submitCompanyDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.company.newCompany.showCreateCompanyDialog,\r\n company: state.company.newCompany.item,\r\n isSaving: state.company.newCompany.isSaving\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openCreateCompanyDialog: (open) => {\r\n dispatch(openCreateCompanyDialogDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(handleCompanyInputChangeDispatch(value, inputFieldName));\r\n },\r\n submitCompany: (company) => {\r\n const mode = submitMode.CREATE;\r\n dispatch(submitCompanyDispatch(company, mode));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(CreateCompanyDialog);\r\n","import React from 'react';\r\n\r\nimport CreateEditCompanyFormUI from '../CreateEditCompanyFormUI';\r\n\r\nconst EditCompanyDialog = (props) => {\r\n const {\r\n openDialog,\r\n company,\r\n isSaving,\r\n openCreateCompanyDialog,\r\n onHandleInputChange,\r\n submitCompany\r\n } = props;\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n submitCompany(company);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default EditCompanyDialog;\r\n","// EditCompanyDialog/index.js\r\nimport { connect } from 'react-redux';\r\nimport EditCompanyDialog from '../../components/EditCompanyDialog';\r\n\r\nimport {\r\n openEditCompanyDialogDispatch,\r\n handleCompanyInputChangeDispatch,\r\n submitCompanyDispatch\r\n} from '../../actions';\r\nimport { submitMode } from '../../constants';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n openDialog: state.company.newCompany.showEditCompanyDialog,\r\n company: state.company.newCompany.item,\r\n isSaving: state.company.newCompany.isSaving\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openCreateCompanyDialog: (open) => {\r\n dispatch(openEditCompanyDialogDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(handleCompanyInputChangeDispatch(value, inputFieldName));\r\n },\r\n submitCompany: (company) => {\r\n const mode = submitMode.UPDATE;\r\n dispatch(submitCompanyDispatch(company, mode));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EditCompanyDialog);\r\n","import React from 'react';\r\nimport { companyStatus } from '../../constants';\r\nimport DualActionDialog from '../DualActionDialog';\r\n\r\nconst DeativeOrDeleteCompanyDialog = (props) => {\r\n const { company, open, showDialog, errorMessage, isUpdating, status } = props;\r\n\r\n const title = status === companyStatus.DEACTIVE ? 'Deactive' : 'Delete';\r\n const actionText =\r\n status === companyStatus.DEACTIVE ? 'Deactiveted' : 'Deleted';\r\n\r\n const handleConfirmAction = async (event) => {\r\n event.preventDefault();\r\n const { onConfirmCompanyStatusUpdate, company, status } = props;\r\n const payload = {\r\n ...company,\r\n status\r\n };\r\n onConfirmCompanyStatusUpdate(payload);\r\n };\r\n\r\n return (\r\n showDialog(false, company.id, status)}\r\n handleSubmit={handleConfirmAction}\r\n showProgressBar={isUpdating}\r\n errorMessage={errorMessage}\r\n isDanger={true}\r\n />\r\n );\r\n};\r\n\r\nexport default DeativeOrDeleteCompanyDialog;\r\n","import { connect } from 'react-redux';\r\nimport DeativeOrDeleteCompanyDialog from '../../components/DeativeOrDeleteCompanyDialog';\r\n\r\nimport {\r\n showDeleteOrDeactiveCompanyDialogStateChanged,\r\n DeactiveOrDeleteCompanyDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n const companyId = state.company.deleteOrDeactivatingCompany.companyId;\r\n const allComapanies =\r\n state.companies.allCompanies && state.companies.allCompanies.items;\r\n const selectedComapny =\r\n companyId === 0 ? {} : allComapanies.filter((e) => e.id === companyId)[0];\r\n return {\r\n company: selectedComapny,\r\n open: state.company.deleteOrDeactivatingCompany.open,\r\n isUpdating: state.company.deleteOrDeactivatingCompany.isSaving,\r\n errorMessage: state.company.deleteOrDeactivatingCompany.errorMessage,\r\n status: state.company.deleteOrDeactivatingCompany.status\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n showDialog: (open, companyId, status) => {\r\n dispatch(\r\n showDeleteOrDeactiveCompanyDialogStateChanged(open, companyId, status)\r\n );\r\n },\r\n onConfirmCompanyStatusUpdate: (company) => {\r\n dispatch(DeactiveOrDeleteCompanyDispatch(company));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(DeativeOrDeleteCompanyDialog);\r\n","// CompaniesList/index.js\r\nimport React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Paper, Grid, Typography, Button } from '@material-ui/core';\r\nimport BlockIcon from '@material-ui/icons/Block';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport DeleteOutlineIcon from '@material-ui/icons/DeleteOutline';\r\n\r\nimport EditCompanyDialog from '../../containers/EditCompanyDialog';\r\n\r\nimport { companyStatus } from '../../constants';\r\nimport DeativeOrDeleteCompanyDialog from './../../containers/DeativeOrDeleteCompanyDialog';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n padding: theme.spacing(2),\r\n paddingLeft: theme.spacing(3),\r\n marginBottom: theme.spacing(1)\r\n },\r\n companyName: {\r\n fontSize: 18,\r\n fontWeight: 800,\r\n paddingTop: theme.spacing(1)\r\n },\r\n email: {\r\n paddingTop: theme.spacing(1)\r\n },\r\n deactivateContainer: {\r\n paddingTop: theme.spacing(2)\r\n },\r\n editDeleteContainer: {\r\n // paddingTop: theme.spacing(1)\r\n },\r\n editButton: {\r\n color: theme.palette.secondary.main\r\n },\r\n deleteButton: {\r\n color: theme.palette.danger.main\r\n }\r\n}));\r\n\r\nconst SingleCompany = (props) => {\r\n const classes = useStyles();\r\n const {\r\n company,\r\n handleCompanyEditClick,\r\n openDeleteOrDeactiveCompanyDialog\r\n } = props;\r\n\r\n const companyId = company.id;\r\n\r\n return (\r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n {company && company.name}\r\n \r\n \r\n {company && company.email}\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n }\r\n onClick={() =>\r\n openDeleteOrDeactiveCompanyDialog(\r\n true,\r\n companyId,\r\n companyStatus.DEACTIVE\r\n )\r\n }\r\n style={{ visibility: 'hidden' }}\r\n >\r\n Deactivate\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n }\r\n className={classes.editButton}\r\n onClick={() => handleCompanyEditClick({ ...company })}\r\n >\r\n Edit\r\n \r\n
    \r\n }\r\n className={classes.deleteButton}\r\n onClick={() =>\r\n openDeleteOrDeactiveCompanyDialog(\r\n true,\r\n companyId,\r\n companyStatus.DELETE\r\n )\r\n }\r\n >\r\n Delete\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nfunction CompaniesList(props) {\r\n const {\r\n fetchAllCompanies,\r\n companies,\r\n onCompanyEditClick,\r\n openDeleteOrDeactiveCompanyDialog\r\n } = props;\r\n const classes = useStyles();\r\n\r\n React.useEffect(() => {\r\n fetchAllCompanies();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const handlDeleteOrDeactiveCompanyDialog = (open, companyId, status) => {\r\n openDeleteOrDeactiveCompanyDialog(open, companyId, status);\r\n };\r\n\r\n const handleCompanyEditClick = (company) => {\r\n onCompanyEditClick(company);\r\n };\r\n\r\n if (!companies) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n
    \r\n {companies &&\r\n companies.map((company) => {\r\n return (\r\n \r\n );\r\n })}\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default CompaniesList;\r\n","// Header/index.js\r\nimport { connect } from 'react-redux';\r\n\r\nimport CompaniesList from '../../components/CompaniesList';\r\nimport {\r\n fetchAllCompaniesDispatch,\r\n compayEditClickDispatch,\r\n openEditCompanyDialogDispatch,\r\n showDeleteOrDeactiveCompanyDialogStateChanged\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n companies:\r\n state.companies.allCompanies && state.companies.allCompanies.items\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n fetchAllCompanies: () => {\r\n dispatch(fetchAllCompaniesDispatch());\r\n },\r\n onCompanyEditClick: (company) => {\r\n dispatch(openEditCompanyDialogDispatch(true));\r\n dispatch(compayEditClickDispatch(company));\r\n },\r\n openDeleteOrDeactiveCompanyDialog: (open, companyId, status) => {\r\n dispatch(\r\n showDeleteOrDeactiveCompanyDialogStateChanged(open, companyId, status)\r\n );\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CompaniesList);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport CreateCompanyDialog from '../../containers/CreateCompanyDialog';\r\nimport ButtonSearchBoxActionBar from '../ButtonSearchBoxActionBar';\r\nimport CompaniesList from '../../containers/CompaniesList';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n actionBar: {\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n }\r\n}));\r\n\r\nconst CompanyDashboard = (props) => {\r\n const {\r\n openCreateCompanyDialog,\r\n handleSearchTermChange,\r\n searchTerm,\r\n loggedInUser\r\n } = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n
    \r\n 2}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default CompanyDashboard;\r\n","// CompanyDashboard/index.js\r\nimport { connect } from 'react-redux';\r\nimport CompanyDashboard from '../../components/CompanyDashboard';\r\n\r\nimport {\r\n openCreateCompanyDialogDispatch,\r\n searchTermChangeForAllCompanies\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n searchTerm: state.companies.allCompanies.searchTerm,\r\n loggedInUser: state.users.user.item\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openCreateCompanyDialog: (open) => {\r\n dispatch(openCreateCompanyDialogDispatch(open));\r\n },\r\n handleSearchTermChange: (searchTerm) => {\r\n dispatch(searchTermChangeForAllCompanies(searchTerm));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CompanyDashboard);\r\n","// UsersList/index.js\r\nimport { connect } from 'react-redux';\r\n\r\nimport UsersList from '../../components/UsersList';\r\nimport {\r\n fetchAllUsersDispatch,\r\n userEditClickDispatch,\r\n openEditUserDialogDispatch,\r\n openDeleteUserDialogDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n users: state.users.allUsers && state.users.allUsers.items\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n fetchAllUsers: () => {\r\n dispatch(fetchAllUsersDispatch());\r\n },\r\n onUserEditClick: (user) => {\r\n dispatch(openEditUserDialogDispatch(true));\r\n dispatch(userEditClickDispatch(user));\r\n },\r\n onOpenDeleteUserDialog: (open, user) => {\r\n dispatch(openDeleteUserDialogDispatch(true));\r\n dispatch(userEditClickDispatch(user));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(UsersList);\r\n","// CreateUserDialog/index.js\r\nimport React from 'react';\r\n\r\nimport { userStatus } from '../../constants';\r\nimport CreateEditUserFormUI from '../CreateEditUserFormUI';\r\n\r\nfunction CreateUserDialog(props) {\r\n const {\r\n openDialog,\r\n user,\r\n isSaving,\r\n openCreateUserDialog,\r\n onHandleInputChange,\r\n submitUser,\r\n branches,\r\n companies,\r\n fetchAllBranches,\r\n fetchAllCompanies,\r\n isLoadingBranches,\r\n isLoadingCompanies,\r\n loggedInUser\r\n } = props;\r\n\r\n React.useEffect(() => {\r\n if (branches && branches.length === 0 && openDialog) {\r\n fetchAllBranches();\r\n fetchAllCompanies();\r\n }\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [openDialog]);\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n const { user } = props;\r\n const payload = {\r\n ...user,\r\n status: userStatus.ACTIVE\r\n };\r\n submitUser(payload);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default CreateUserDialog;\r\n","import { connect } from 'react-redux';\r\n\r\nimport CreateUserDialog from '../../components/CreateUserDialog';\r\nimport { submitMode } from '../../constants';\r\n\r\nimport {\r\n openCreateUserDialogDispatch,\r\n handleUserInputChangeDispatch,\r\n submitUserDispatch,\r\n getBranches,\r\n fetchAllCompaniesDispatch\r\n} from '../../actions';\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return {\r\n openDialog: state.user.newUser.showCreateUserDialog,\r\n user: state.user.newUser.item,\r\n isSaving: state.user.newUser.isSaving,\r\n branches: state.branches.allBranches.items,\r\n companies: state.companies.allCompanies.items,\r\n isLoadingBranches: state.branches.allBranches.isLoading,\r\n isLoadingCompanies: state.companies.allCompanies.isLoading,\r\n loggedInUser: state.users.user.item\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => {\r\n return {\r\n openCreateUserDialog: (open) => {\r\n dispatch(openCreateUserDialogDispatch(open));\r\n },\r\n onHandleInputChange: (value, inputFieldName) => {\r\n dispatch(handleUserInputChangeDispatch(value, inputFieldName));\r\n },\r\n submitUser: (user) => {\r\n const mode = submitMode.CREATE;\r\n dispatch(submitUserDispatch(user, mode));\r\n },\r\n fetchAllBranches: () => {\r\n dispatch(getBranches());\r\n },\r\n fetchAllCompanies: () => {\r\n dispatch(fetchAllCompaniesDispatch());\r\n }\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CreateUserDialog);\r\n","// UserDashboard/index.js\r\nimport React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport UsersList from '../../containers/UsersList';\r\nimport ButtonSearchBoxActionBar from '../ButtonSearchBoxActionBar';\r\nimport CreateUserDialog from '../../containers/CreateUserDialog';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n actionBar: {\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n }\r\n}));\r\n\r\nconst UserDashboard = (props) => {\r\n const { openCreateUserDialog, handleSearchTermChange, searchTerm } = props;\r\n const classes = useStyles();\r\n\r\n return (\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\nexport default UserDashboard;\r\n","// UserDashboard/index.js\r\nimport { connect } from 'react-redux';\r\nimport UserDashboard from '../../components/UserDashboard';\r\n\r\nimport {\r\n openCreateUserDialogDispatch,\r\n searchTermChangeForAllUsers\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n searchTerm: state.users.allUsers.searchTerm\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n openCreateUserDialog: (open) => {\r\n dispatch(openCreateUserDialogDispatch(open));\r\n },\r\n handleSearchTermChange: (searchTerm) => {\r\n dispatch(searchTermChangeForAllUsers(searchTerm));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(UserDashboard);\r\n","// src/components/Header.js\r\n\r\nimport React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport {\r\n AppBar,\r\n Toolbar,\r\n Typography,\r\n Button,\r\n Tabs,\r\n Tab,\r\n IconButton,\r\n MenuItem,\r\n Menu,\r\n LinearProgress\r\n} from '@material-ui/core';\r\nimport SettingIcon from '@material-ui/icons/Settings';\r\n\r\nimport Page from '../Page';\r\nimport { useAuth0 } from '../../react-auth0-spa';\r\nimport ChangePasswordDialog from '../../containers/ChangePasswordDialog';\r\nimport MessageDisplay from '../../containers/MessageDisplay';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n navbarContainer: {\r\n display: 'flex'\r\n },\r\n root: {\r\n flexGrow: 1\r\n },\r\n menuButton: {\r\n marginRight: theme.spacing(2)\r\n },\r\n leftControls: {\r\n flexGrow: 1,\r\n display: 'flex'\r\n },\r\n title: {\r\n marginTop: 5,\r\n marginRight: 40\r\n },\r\n navigationLinks: {\r\n marginTop: 8,\r\n marginLeft: 40\r\n },\r\n homeButton: {\r\n textDecoration: 'none',\r\n fontSize: '14px',\r\n letterSpacing: '0.02857em',\r\n color: 'rgba(255,255,255,0.87)',\r\n textTransform: 'uppercase'\r\n },\r\n rightControls: {\r\n display: 'flex'\r\n },\r\n userName: {\r\n marginTop: 12,\r\n marginRight: 30,\r\n fontSize: 16\r\n },\r\n loginLogoutButtons: {},\r\n appbar: {\r\n background:\r\n 'linear-gradient(90deg, rgba(44,107,178,1) 0%, rgba(20,29,120,1) 100%) !important'\r\n },\r\n settingsIcon: {\r\n color: theme.palette.tertiary.main\r\n },\r\n toolbar: {\r\n paddingLeft: 0,\r\n paddingRight: 0\r\n },\r\n hastrakLogo: {\r\n width: 33,\r\n height: 38,\r\n display: 'inline-block',\r\n marginRight: 20\r\n }\r\n}));\r\n\r\nconst Header = (props) => {\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const open = Boolean(anchorEl);\r\n\r\n const {\r\n isAuthenticated,\r\n loginWithRedirect,\r\n logout,\r\n loading,\r\n user\r\n } = useAuth0();\r\n\r\n const {\r\n visibleTab,\r\n onChangePassword,\r\n setLoggedInUser,\r\n showProgressBar\r\n } = props;\r\n const classes = useStyles();\r\n\r\n React.useEffect(() => {\r\n setLoggedInUser(user);\r\n }, [setLoggedInUser, user]);\r\n\r\n const handleMenuClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleMenu = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleChange = (event, newValue) => {\r\n props.onChangeTabValueInHeader(newValue);\r\n };\r\n\r\n const handleChangePasswordClick = () => {\r\n setAnchorEl(null);\r\n onChangePassword();\r\n };\r\n\r\n if (loading || !user) {\r\n return
    Login
    ;\r\n }\r\n return (\r\n \r\n \r\n \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n HasTrak\r\n \r\n\r\n {isAuthenticated && (\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
    {user.name}
    \r\n\r\n
    \r\n {!isAuthenticated && (\r\n loginWithRedirect({})}\r\n >\r\n Log in\r\n \r\n )}\r\n\r\n \r\n \r\n \r\n \r\n {isAuthenticated ? (\r\n \r\n \r\n Change Password\r\n \r\n logout()}\r\n id=\"logout-menu-item\"\r\n >\r\n Logout\r\n \r\n \r\n ) : null}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {showProgressBar && }\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Header;\r\n","// Header/index.js\r\nimport { connect } from 'react-redux';\r\nimport Header from '../../components/Header';\r\n\r\nimport {\r\n changeTabValueInHeaderDispatch,\r\n openChangePasswordDialogDispatch,\r\n setLoggedInUserDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n visibleTab: state.general.visibleTab,\r\n showProgressBar:\r\n state.branches.allBranches.isLoading ||\r\n state.companies.allCompanies.isLoading ||\r\n state.users.allUsers.isLoading\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n onChangeTabValueInHeader: (newValue) => {\r\n dispatch(changeTabValueInHeaderDispatch(newValue));\r\n },\r\n onChangePassword: () => {\r\n dispatch(openChangePasswordDialogDispatch(true));\r\n },\r\n setLoggedInUser: (user) => {\r\n dispatch(setLoggedInUserDispatch(user));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Header);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Typography, Button, Link } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport { Edit as EditIcon } from '@material-ui/icons';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n borderBottom: `1px solid ${theme.palette.lightGrey.default}`,\r\n padding: '10px 16px 10px 0',\r\n display: 'flex',\r\n justifyContent: 'space-between'\r\n },\r\n danger: {\r\n color: 'red'\r\n },\r\n collapsed: {\r\n display: 'none'\r\n },\r\n warning: {\r\n color: 'orange'\r\n },\r\n heading: {\r\n fontWeight: 500,\r\n fontStretch: 'normal',\r\n fontStyle: 'normal',\r\n lineHeight: 'normal',\r\n letterSpacing: 'normal',\r\n marginBottom: 3\r\n },\r\n subHeading: {\r\n fontWeight: 500,\r\n fontStretch: 'normal',\r\n fontStyle: 'normal',\r\n lineHeight: 'normal',\r\n letterSpacing: 'normal',\r\n marginBottom: 3\r\n },\r\n textContent: {},\r\n buttonContent: {}\r\n}));\r\n\r\nconst calculateExpiryPrefiex = (source, isExpired) => {\r\n if (source === 'training') {\r\n if (isExpired) {\r\n return 'd';\r\n } else {\r\n return 's';\r\n }\r\n } else {\r\n return '';\r\n }\r\n};\r\n\r\nconst RecordsListInCompanyBlade = (props) => {\r\n const classes = useStyles();\r\n const {\r\n allCourses,\r\n items,\r\n handleAddEditClick,\r\n dateLabel,\r\n titleField,\r\n subTitleField,\r\n dateField,\r\n courseId,\r\n branchIdField,\r\n branchNameField,\r\n source\r\n } = props;\r\n\r\n return (\r\n \r\n {items &&\r\n items.map((item, index) => {\r\n return (\r\n
    \r\n
    \r\n \r\n {item.branchName}\r\n \r\n \r\n {item.upcomingCount > 0 || item.overdueCount > 0 ? (\r\n
    \r\n \r\n {item.upcomingCount} upcoming,{' '}\r\n \r\n 0 ? classes.danger : ''\r\n }`}\r\n >\r\n {item.overdueCount} overdue\r\n \r\n
    \r\n ) : (\r\n 'no alerts'\r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n go to branch\r\n \r\n
    \r\n
    \r\n );\r\n })}\r\n
    \r\n );\r\n};\r\n\r\nexport default RecordsListInCompanyBlade;\r\n","// EventsDashboardBlade/index.js\r\nimport React from 'react';\r\nimport { Paper } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport DateRangeIcon from '@material-ui/icons/DateRange';\r\nimport { Button } from '@material-ui/core';\r\nimport moment from 'moment';\r\n\r\nimport DashboardCountBox from '../../DashboardPanel/DashboardCountBox';\r\nimport RecordsListInCompanyBlade from '../RecordsListInCompanyBlade';\r\nimport { buttonNames } from '../../../constants';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n apaper: {\r\n padding: 16,\r\n margin: 16\r\n },\r\n titleContainer: {\r\n position: 'relative',\r\n top: -16\r\n },\r\n bladeIcon: {\r\n position: 'absolute'\r\n },\r\n bladeTitle: {\r\n marginTop: -4,\r\n position: 'absolute',\r\n left: 32,\r\n top: 6\r\n },\r\n countBoxContainer: {\r\n display: 'flex',\r\n marginTop: 24\r\n },\r\n countBox: {\r\n width: '100%'\r\n },\r\n seeMoreButtonContainer: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n marginTop: 8\r\n },\r\n seeMoreButton: {\r\n background: '#54a000',\r\n color: 'white',\r\n width: 150,\r\n height: 36,\r\n '&:hover': {\r\n background: 'white',\r\n color: '#54a000',\r\n border: '1px solid #54a000'\r\n }\r\n },\r\n noRecords: {\r\n fontSize: 20,\r\n textAlign: 'center',\r\n color: '#424242',\r\n marginBottom: 0\r\n }\r\n}));\r\n\r\nfunction EventsDashboardCompanyBlade(props) {\r\n const classes = useStyles();\r\n const {\r\n companyId,\r\n fetchAllEventsForCompany,\r\n allEvents,\r\n setCurrentBranchesRecord,\r\n handleEventRecordEditClick\r\n } = props;\r\n\r\n let events = allEvents;\r\n\r\n React.useEffect(\r\n () => {\r\n if (companyId) {\r\n fetchAllEventsForCompany(companyId);\r\n }\r\n },\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [companyId]\r\n );\r\n\r\n if (events.length > 0) {\r\n //removing events with no data\r\n events = events.filter(\r\n (event) => event.overdueCount > 0 || event.upcomingCount > 0\r\n );\r\n }\r\n\r\n let initialValue = 0;\r\n const upcomingEvents = events.reduce(\r\n (acc, curr) => acc + curr.upcomingCount,\r\n initialValue\r\n );\r\n initialValue = 0;\r\n const overDueEvents = events.reduce(\r\n (acc, curr) => acc + curr.overdueCount,\r\n initialValue\r\n );\r\n\r\n const handleAddEditClick = (item) => {\r\n setCurrentBranchesRecord(buttonNames.EVENTS);\r\n handleEventRecordEditClick(item);\r\n };\r\n\r\n const handleSeeMoreButtonForEventsClick = (recordType) => {\r\n setCurrentBranchesRecord(recordType);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n

    \r\n \r\n Events\r\n

    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n 0}\r\n />\r\n
    \r\n
    \r\n \r\n\r\n {events.length === 0 ? (\r\n

    No records

    \r\n ) : null}\r\n\r\n {/* {events.length > 5 ? (\r\n
    \r\n \r\n handleSeeMoreButtonForEventsClick(buttonNames.EVENTS)\r\n }\r\n >\r\n See More\r\n \r\n
    \r\n ) : null} */}\r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default EventsDashboardCompanyBlade;\r\n","// TrainingDashboardBlade/index.js\r\nimport React from 'react';\r\nimport { Paper, Button } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport MenuBookIcon from '@material-ui/icons/MenuBook';\r\nimport moment from 'moment';\r\n\r\nimport DashboardCountBox from '../../DashboardPanel/DashboardCountBox';\r\nimport RecordsListInCompanyBlade from '../RecordsListInCompanyBlade';\r\nimport { buttonNames } from '../../../constants';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n paper: {\r\n padding: 16,\r\n margin: 16\r\n },\r\n titleContainer: {\r\n position: 'relative',\r\n top: -16\r\n },\r\n bladeIcon: {\r\n position: 'absolute'\r\n },\r\n bladeTitle: {\r\n marginTop: -4,\r\n position: 'absolute',\r\n left: 32,\r\n top: 6\r\n },\r\n countBoxContainer: {\r\n display: 'flex',\r\n marginTop: 24\r\n },\r\n countBox: {\r\n width: '100%'\r\n },\r\n seeMoreButtonContainer: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n marginTop: 8\r\n },\r\n seeMoreButton: {\r\n background: '#54a000',\r\n color: 'white',\r\n width: 150,\r\n height: 36,\r\n '&:hover': {\r\n background: 'white',\r\n color: '#54a000',\r\n border: '1px solid #54a000'\r\n }\r\n },\r\n noRecords: {\r\n fontSize: 20,\r\n textAlign: 'center',\r\n color: '#424242',\r\n marginBottom: 0\r\n }\r\n}));\r\n\r\nfunction TrainingDashboardCompanyBlade(props) {\r\n const classes = useStyles();\r\n\r\n const {\r\n companyId,\r\n fetchAllCourseRecordssForCompany,\r\n fetchAllCoursesForCompany,\r\n allCourses,\r\n setCurrentBranchesRecord,\r\n handleCourseRecordEditClick,\r\n courseRecords\r\n } = props;\r\n\r\n let courses = courseRecords;\r\n\r\n React.useEffect(\r\n () => {\r\n if (companyId) {\r\n fetchAllCourseRecordssForCompany(companyId);\r\n fetchAllCoursesForCompany(companyId);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [companyId]\r\n );\r\n\r\n if (courses.length > 0) {\r\n //removing courses with no data\r\n courses = courses.filter(\r\n (course) => course.overdueCount > 0 || course.upcomingCount > 0\r\n );\r\n }\r\n\r\n let initialValue = 0;\r\n const upcomingCourses = courses.reduce(\r\n (acc, curr) => acc + curr.upcomingCount,\r\n initialValue\r\n );\r\n initialValue = 0;\r\n const overDueCourses = courses.reduce(\r\n (acc, curr) => acc + curr.overdueCount,\r\n initialValue\r\n );\r\n\r\n const handleAddEditClick = (item) => {\r\n setCurrentBranchesRecord(buttonNames.COURSES);\r\n handleCourseRecordEditClick(item);\r\n };\r\n\r\n const handleSeeMoreButtonForCoursesClick = (recordType) => {\r\n setCurrentBranchesRecord(recordType);\r\n };\r\n\r\n return (\r\n \r\n \r\n

    \r\n \r\n Training\r\n

    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n 0}\r\n />\r\n
    \r\n
    \r\n\r\n \r\n\r\n {courses.length === 0 ? (\r\n

    No records

    \r\n ) : null}\r\n\r\n {/* {courses.length > 5 ? (\r\n
    \r\n \r\n handleSeeMoreButtonForCoursesClick(buttonNames.COURSES)\r\n }\r\n >\r\n See More\r\n \r\n
    \r\n ) : null} */}\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default TrainingDashboardCompanyBlade;\r\n","// AccidentsDashboardCompanyBlade/index.js\r\nimport React from 'react';\r\nimport { Paper, Typography, Button, Link } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport WarningIcon from '@material-ui/icons/Warning';\r\nimport moment from 'moment';\r\n\r\nimport DashboardCountBox from '../../DashboardPanel/DashboardCountBox';\r\nimport { buttonNames } from '../../../constants';\r\nimport { injuryMappers } from '../../../mappers';\r\nimport { utcToLocal } from './../../../utils/timeConverter';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n paper: {\r\n padding: 16,\r\n margin: 16\r\n },\r\n titleContainer: {\r\n position: 'relative',\r\n top: -16\r\n },\r\n bladeIcon: {\r\n position: 'absolute'\r\n },\r\n bladeTitle: {\r\n marginTop: -4,\r\n position: 'absolute',\r\n left: 32,\r\n top: 6\r\n },\r\n countBoxContainer: {\r\n display: 'flex',\r\n marginTop: 24\r\n },\r\n countBox: {\r\n width: '100%'\r\n },\r\n container: {\r\n borderBottom: `1px solid ${theme.palette.lightGrey.default}`,\r\n padding: '10px 16px 10px 0',\r\n display: 'flex',\r\n justifyContent: 'space-between'\r\n },\r\n heading: {\r\n fontWeight: 600\r\n },\r\n textContent: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n width: '100%'\r\n },\r\n textOuter: {\r\n width: '100%'\r\n },\r\n buttonContent: {},\r\n seeMoreButtonContainer: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n marginTop: 8\r\n },\r\n seeMoreButton: {\r\n background: '#54a000',\r\n color: 'white',\r\n width: 150,\r\n height: 36,\r\n '&:hover': {\r\n background: 'white',\r\n color: '#54a000',\r\n border: '1px solid #54a000'\r\n }\r\n },\r\n noRecords: {\r\n fontSize: 20,\r\n textAlign: 'center',\r\n color: '#424242',\r\n marginBottom: 0\r\n },\r\n accidentDate: {\r\n margin: 0,\r\n marginTop: 8\r\n },\r\n subHeading: {\r\n fontWeight: 500,\r\n fontStretch: 'normal',\r\n fontStyle: 'normal',\r\n lineHeight: 'normal',\r\n letterSpacing: 'normal',\r\n marginBottom: 3\r\n }\r\n}));\r\n\r\nfunction AccidentsDashboardCompanyBlade(props) {\r\n const classes = useStyles();\r\n\r\n const {\r\n fetchAllAccidentsForCompany,\r\n companyId,\r\n allAccidents,\r\n setCurrentBranchesRecord\r\n } = props;\r\n\r\n let accidents = allAccidents;\r\n\r\n React.useEffect(\r\n () => {\r\n if (companyId) {\r\n fetchAllAccidentsForCompany(companyId);\r\n }\r\n },\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [companyId]\r\n );\r\n\r\n if (accidents.length > 0) {\r\n accidents = accidents.filter((item) => item.count > 0);\r\n }\r\n\r\n let initialValue = 0;\r\n const totalCount = accidents.reduce(\r\n (acc, curr) => acc + curr.count,\r\n initialValue\r\n );\r\n\r\n const handleSeeMoreButtonForAccidentsClick = (recordType) => {\r\n setCurrentBranchesRecord(recordType);\r\n };\r\n\r\n return (\r\n \r\n \r\n

    \r\n \r\n Accidents\r\n

    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n {accidents &&\r\n accidents.map((accident, index) => {\r\n if (index > 9) {\r\n return null;\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n {accident.branchName}\r\n \r\n
    \r\n \r\n go to branch\r\n \r\n
    \r\n
    \r\n \r\n {accident.count} accidents\r\n \r\n
    \r\n
    \r\n );\r\n })}\r\n\r\n {/* {accidents.length > 5 ? (\r\n
    \r\n \r\n handleSeeMoreButtonForAccidentsClick(buttonNames.ACCIDENTS)\r\n }\r\n >\r\n See More\r\n \r\n
    \r\n ) : null} */}\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default AccidentsDashboardCompanyBlade;\r\n","// DashboardPanel/index.js\r\nimport React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport EventsDashboardCompanyBlade from './EventsDashboardCompanyBlade';\r\nimport TrainingDashboardCompanyBlade from './TrainingDashboardCompanyBlade';\r\nimport AccidentsDashboardCompanyBlade from './AccidentsDashboardCompanyBlade';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n bladesContainer: {\r\n display: 'flex'\r\n },\r\n blade: {},\r\n columnOne: {\r\n width: '50%'\r\n },\r\n columnTwo: {\r\n width: '50%'\r\n }\r\n}));\r\n\r\nfunction DashboardPanelCompany(props) {\r\n const classes = useStyles();\r\n\r\n const {\r\n companyId,\r\n fetchAllEventsForCompany,\r\n events,\r\n setCurrentBranchesRecord,\r\n handleEventRecordEditClick,\r\n fetchAllCourseRecordsForCompany,\r\n fetchAllCoursesForCompany,\r\n fetchAllAccidentsForCompany,\r\n courses,\r\n accidents,\r\n handleCourseRecordEditClick,\r\n courseRecords\r\n } = props;\r\n\r\n return (\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
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default DashboardPanelCompany;\r\n","import { connect } from 'react-redux';\r\nimport DashboardPanelCompany from '../../components/DashboardPanelCompany';\r\n\r\nimport {\r\n fetchAllEventsForCompanyDispatch,\r\n setCurrentBranchesRecordDispatch,\r\n openEditEventPanelDispatch,\r\n eventEditClickDispatch,\r\n fetchAllCourseRecordsForCompanyDispatch,\r\n fetchAllCoursesForCompanyDispatch,\r\n fetchAllAccidentsForCompanyDispatch,\r\n openEditCoursePanelDispatch,\r\n courseEditClickDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n companyId: state.users.user.item.companyId,\r\n events: state.events.eventsByCompany.items,\r\n courses: state.courses.coursesByCompany.items,\r\n accidents: state.accidents.accidentsByCompany.items,\r\n courseRecords: state.courses.courseRecordsByCompany.items\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n fetchAllEventsForCompany: (companyId) => {\r\n dispatch(fetchAllEventsForCompanyDispatch(companyId));\r\n },\r\n fetchAllCourseRecordsForCompany: (companyId) => {\r\n dispatch(fetchAllCourseRecordsForCompanyDispatch(companyId));\r\n },\r\n fetchAllCoursesForCompany: (companyId) => {\r\n dispatch(fetchAllCoursesForCompanyDispatch(companyId));\r\n },\r\n fetchAllAccidentsForCompany: (companyId) => {\r\n dispatch(fetchAllAccidentsForCompanyDispatch(companyId));\r\n },\r\n setCurrentBranchesRecord: (recordType) => {\r\n dispatch(setCurrentBranchesRecordDispatch(recordType));\r\n },\r\n handleEventRecordEditClick: (event) => {\r\n dispatch(openEditEventPanelDispatch(true));\r\n dispatch(eventEditClickDispatch(event));\r\n },\r\n handleCourseRecordEditClick: (course) => {\r\n dispatch(openEditCoursePanelDispatch(true));\r\n dispatch(courseEditClickDispatch(course));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(DashboardPanelCompany);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport DashboardPanelCompany from '../../containers/DashboardPanelCompany';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n actionBar: {\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n },\r\n headerStyle: {\r\n textAlign: 'center',\r\n marginTop: 100\r\n }\r\n}));\r\n\r\nconst OverviewDashboard = (props) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default OverviewDashboard;\r\n","// OverviewDashboard/index.js\nimport { connect } from 'react-redux';\nimport OverviewDashboard from '../../components/OverviewDashboard';\n\nfunction mapStateToProps(state, ownProps) {\n return {};\n}\n\nfunction mapDispatchToProps(dispatch, ownProps) {\n return {};\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(OverviewDashboard);\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport Page from '../../components/Page';\r\nimport BranchDashboard from '../../containers/BranchDashboard';\r\nimport CompanyDashboard from './../../containers/CompanyDashboard';\r\nimport UserDashboard from './../../containers/UserDashboard';\r\nimport Header from '../../containers/Header';\r\nimport MessageDisplay from '../../containers/MessageDisplay';\r\nimport OverviewDashboard from '../../containers/OverviewDashboard';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n content: {\r\n marginTop: 85\r\n }\r\n}));\r\n\r\nconst AdminPage = (props) => {\r\n const { visibleTab, loggedInUser } = props;\r\n const classes = useStyles();\r\n\r\n let unavailable = false;\r\n\r\n let dashboard;\r\n switch (visibleTab) {\r\n case 0:\r\n dashboard = ;\r\n break;\r\n case 1:\r\n dashboard = ;\r\n break;\r\n case 2:\r\n dashboard = ;\r\n break;\r\n case 3:\r\n dashboard = ;\r\n unavailable =\r\n loggedInUser.companyId == null || loggedInUser.companyId === 0;\r\n break;\r\n default:\r\n }\r\n\r\n return (\r\n \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {unavailable ? (\r\n

    \r\n This page is unavailable for your login\r\n

    \r\n ) : (\r\n dashboard\r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default AdminPage;\r\n","// AdminPage/index.js\r\nimport { connect } from 'react-redux';\r\nimport AdminPage from '../../components/AdminPage';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n visibleTab: state.general.visibleTab,\r\n loggedInUser: state.users.user.item\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {};\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AdminPage);\r\n","// HomePage/index.js\r\nimport React from 'react';\r\n\r\nimport { useAuth0 } from '../../react-auth0-spa';\r\nimport { userRoles } from '../../constants';\r\nimport BranchesPage from '../BranchesPage';\r\nimport AdminPage from '../../containers/AdminPage';\r\n\r\nfunction HomePage(props) {\r\n const { loading, user } = useAuth0();\r\n const { fetchUserDetails, userRole } = props;\r\n React.useEffect(() => {\r\n fetchUserDetails(user.email);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [user]);\r\n\r\n if (loading || !user || !userRole) {\r\n return
    Loading...
    ;\r\n }\r\n\r\n if (userRole === userRoles.BRANCH) {\r\n return ;\r\n } else if (\r\n userRole === userRoles.ADMIN ||\r\n userRole === userRoles.SUPER_ADMIN ||\r\n userRole === userRoles.ADMIN_COMPANY\r\n ) {\r\n return ;\r\n }\r\n}\r\n\r\nHomePage.propTypes = {\r\n // describe the component's prop types here\r\n};\r\n\r\nHomePage.defaultProps = {\r\n // assign default props to the component here\r\n};\r\n\r\nexport default HomePage;\r\n","import { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nimport HomePage from '../../components/HomePage';\r\nimport { fetchUserDetailsDispatch } from '../../actions';\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n const user = state.users.user && state.users.user.item;\r\n return {\r\n userRole: user.role\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch, ownProps) => {\r\n return {\r\n fetchUserDetails: (userEmail) => {\r\n dispatch(fetchUserDetailsDispatch(userEmail));\r\n }\r\n };\r\n};\r\n\r\nexport default withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(HomePage)\r\n);\r\n","import React from 'react';\r\n\r\nimport BranchesPage from '../BranchesPage';\r\nimport { useAuth0 } from '../../react-auth0-spa';\r\nimport { userRoles } from '../../constants';\r\n\r\nconst AdminBranchView = (props) => {\r\n const { user } = useAuth0();\r\n const { setLoggedInUser, userFromDb, fetchUserDetails } = props;\r\n\r\n React.useEffect(\r\n () => {\r\n setLoggedInUser(user);\r\n fetchUserDetails(user.email);\r\n },\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [user]\r\n );\r\n\r\n // React.useEffect(\r\n // () => {\r\n // if (userFromDb.id) {\r\n // checkBranchAccessForUser(userFromDb.id, Number(branchId));\r\n // }\r\n // },\r\n\r\n // // eslint-disable-next-line react-hooks/exhaustive-deps\r\n // [userFromDb]\r\n // );\r\n\r\n if (\r\n (userFromDb && userFromDb.role === userRoles.ADMIN) ||\r\n userFromDb.role === userRoles.SUPER_ADMIN ||\r\n userFromDb.role === userRoles.ADMIN_COMPANY\r\n ) {\r\n return ;\r\n }\r\n\r\n return

    You are not allowed to view this page

    ;\r\n};\r\n\r\nexport default AdminBranchView;\r\n","// AdminBranchView/index.js\r\nimport { connect } from 'react-redux';\r\nimport AdminBranchView from '../../components/AdminBranchView';\r\n\r\nimport {\r\n fetchUserDetailsDispatch,\r\n setLoggedInUserDispatch,\r\n checkBranchAccessForUserDispatch\r\n} from '../../actions';\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n userFromDb: state.users.user.item\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n fetchUserDetails: (userEmail) => {\r\n dispatch(fetchUserDetailsDispatch(userEmail));\r\n },\r\n setLoggedInUser: (user) => {\r\n dispatch(setLoggedInUserDispatch(user));\r\n },\r\n checkBranchAccessForUser: (userId, branchId) => {\r\n const payload = { userId, branchId };\r\n dispatch(checkBranchAccessForUserDispatch(payload));\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AdminBranchView);\r\n","import React from 'react';\r\nimport CssBaseline from '@material-ui/core/CssBaseline';\r\nimport { Redirect, Switch } from 'react-router-dom';\r\nimport PrivateRoute from './components/PrivateRoute';\r\n\r\nimport HomePage from './containers/HomePage';\r\nimport AdminBranchView from './containers/AdminBranchView';\r\nimport { useAuth0 } from './react-auth0-spa';\r\n\r\nfunction App() {\r\n const { loading } = useAuth0();\r\n\r\n if (loading) {\r\n return
    Loading...
    ;\r\n }\r\n\r\n return (\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\nexport default App;\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' },\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then(registration => {\r\n registration.unregister();\r\n })\r\n .catch(error => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import { handleActions } from 'redux-actions';\r\n\r\nimport { types } from '../constants';\r\n\r\nconst INITIAL_STATE = {\r\n message: {\r\n queue: [],\r\n visible: false\r\n },\r\n visibleTab: 0\r\n};\r\n\r\nfunction showMessage(\r\n state,\r\n {\r\n payload: {\r\n message: { text }\r\n }\r\n }\r\n) {\r\n const queueCopy = state.message.queue.slice();\r\n queueCopy.push(text);\r\n\r\n if (state.message.visible) {\r\n return {\r\n ...state,\r\n message: {\r\n ...state.message,\r\n queue: queueCopy,\r\n visible: false\r\n }\r\n };\r\n } else {\r\n return {\r\n ...state,\r\n message: {\r\n ...state.message,\r\n queue: queueCopy,\r\n visible: true\r\n }\r\n };\r\n }\r\n}\r\n\r\nfunction hideMessage(state) {\r\n return {\r\n ...state,\r\n message: {\r\n ...state.message,\r\n visible: false\r\n }\r\n };\r\n}\r\n\r\nfunction nextMessage(state) {\r\n const newQueue = state.message.queue.slice(1);\r\n return {\r\n ...state,\r\n message: {\r\n ...state.message,\r\n queue: newQueue,\r\n visible: newQueue.length > 0\r\n }\r\n };\r\n}\r\n\r\nconst changeTabValueInHeader = (state, { newValue }) => {\r\n return {\r\n ...state,\r\n visibleTab: newValue\r\n };\r\n};\r\n\r\nexport default handleActions(\r\n {\r\n [types.MESSAGE_SHOW]: showMessage,\r\n [types.MESSAGE_HIDE]: hideMessage,\r\n [types.MESSAGE_NEXT]: nextMessage,\r\n [types.CHANGE_TAB_VALUE_IN_HEADER]: changeTabValueInHeader\r\n },\r\n INITIAL_STATE\r\n);\r\n","import { handleActions } from 'redux-actions';\r\n\r\nimport { types } from '../constants';\r\n\r\nconst INITIAL_STATE = {\r\n openChangePasswordDialog: false,\r\n userInAuth0: {\r\n item: {}\r\n },\r\n user: {\r\n item: {},\r\n isLoading: false,\r\n errorMessage: ''\r\n },\r\n changePasswordRequest: {\r\n isSaving: false,\r\n errorMessage: ''\r\n },\r\n allUsers: {\r\n items: [],\r\n itemsCopy: [],\r\n isLoading: false,\r\n errorMessage: '',\r\n searchTerm: ''\r\n }\r\n};\r\n\r\nconst setLoggedInUser = (state, { user }) => {\r\n return {\r\n ...state,\r\n userInAuth0: {\r\n ...state.userInAuth0,\r\n item: user\r\n }\r\n };\r\n};\r\n\r\nconst openChangePasswordDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n openChangePasswordDialog: open\r\n };\r\n};\r\n\r\nconst startSendChangePasswordRequest = (state) => {\r\n return {\r\n ...state,\r\n changePasswordRequest: {\r\n ...state.changePasswordRequest,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst sendChangePasswordRequestSuccess = (state) => {\r\n return {\r\n ...state,\r\n changePasswordRequest: {\r\n ...state.changePasswordRequest\r\n }\r\n };\r\n};\r\n\r\nconst sendChangePasswordRequestFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n changePasswordRequest: {\r\n ...state.changePasswordRequest,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst sendChangePasswordRequestFinished = (state) => {\r\n return {\r\n ...state,\r\n changePasswordRequest: {\r\n ...state.changePasswordRequest,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst startFetchUserDetails = (state) => {\r\n return {\r\n ...state,\r\n user: {\r\n ...state.user,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst fetchUserDetailsSuccess = (state, { user }) => {\r\n return {\r\n ...state,\r\n user: {\r\n ...state.user,\r\n item: user\r\n }\r\n };\r\n};\r\n\r\nconst fetchUserDetailsFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n user: {\r\n ...state.user,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst fetchUserDetailsFinished = (state) => {\r\n return {\r\n ...state,\r\n user: {\r\n ...state.user,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\nconst startFetchAllUsers = (state) => {\r\n return {\r\n ...state,\r\n allUsers: {\r\n ...state.allUsers,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllUsersSuccess = (state, { allUsers }) => {\r\n return {\r\n ...state,\r\n allUsers: {\r\n ...state.allUsers,\r\n items: allUsers,\r\n itemsCopy: allUsers\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllUsersFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n allUsers: {\r\n ...state.allUsers,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllUsersFinished = (state) => {\r\n return {\r\n ...state,\r\n allUsers: {\r\n ...state.allUsers,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\nconst changeSearchTermForAllUsers = (state, { searchTerm }) => {\r\n let users = state.allUsers.itemsCopy;\r\n\r\n let filteredUsers = users.filter(\r\n (g) =>\r\n (g.name && g.name.toLowerCase().includes(searchTerm)) ||\r\n (g.email && g.email.toLowerCase().includes(searchTerm))\r\n );\r\n\r\n return {\r\n ...state,\r\n allUsers: {\r\n ...state.allUsers,\r\n searchTerm,\r\n items: filteredUsers\r\n }\r\n };\r\n};\r\n\r\nconst submitUserSuccess = (state, { submittedUser }) => {\r\n let users = [...state.allUsers.items];\r\n let updatedUserIndex = users.findIndex((c) => c.id === submittedUser.id);\r\n\r\n\r\n if(submittedUser.status !== 1){\r\n debugger;\r\n //Means deleted\r\n let deleteIndex = users.findIndex((r) => r.id === submittedUser.id);\r\n if (deleteIndex !== -1) {\r\n users.splice(deleteIndex, 1);\r\n }\r\n }\r\n else if(updatedUserIndex !== -1){\r\n //Means updated\r\n debugger;\r\n users[updatedUserIndex] = submittedUser;\r\n }\r\n \r\n else {\r\n //Means newly created\r\n debugger;\r\n users = [...users, submittedUser];\r\n }\r\n\r\n const activeUsers = users.filter((c) => c.status === 1);\r\n\r\n return {\r\n ...state,\r\n allUsers: {\r\n ...state.allUsers,\r\n items: activeUsers,\r\n itemsCopy: activeUsers\r\n }\r\n };\r\n};\r\n\r\nexport default handleActions(\r\n {\r\n [types.SET_LOGGED_IN_USER]: setLoggedInUser,\r\n\r\n [types.OPEN_CHANGE_PASSWORD_DIALOG]: openChangePasswordDialog,\r\n\r\n [types.START_SEND_CHANGE_PASSWORD_REQUEST]: startSendChangePasswordRequest,\r\n [types.SEND_CHANGE_PASSWORD_REQUEST_SUCCESS]: sendChangePasswordRequestSuccess,\r\n [types.SEND_CHANGE_PASSWORD_REQUEST_FAILURE]: sendChangePasswordRequestFailure,\r\n [types.SEND_CHANGE_PASSWORD_REQUEST_FINISHED]: sendChangePasswordRequestFinished,\r\n\r\n [types.START_FETCH_USER_DETAILS]: startFetchUserDetails,\r\n [types.FETCH_USER_DETAILS_SUCCESS]: fetchUserDetailsSuccess,\r\n [types.FETCH_USER_DETAILS_FAILURE]: fetchUserDetailsFailure,\r\n [types.FETCH_USER_DETAILS_FINISHED]: fetchUserDetailsFinished,\r\n\r\n [types.START_FETCH_ALL_USERS]: startFetchAllUsers,\r\n [types.FETCH_ALL_USERS_SUCCESS]: fetchAllUsersSuccess,\r\n [types.FETCH_ALL_USERS_FAILURE]: fetchAllUsersFailure,\r\n [types.FETCH_ALL_USERS_FINISHED]: fetchAllUsersFinished,\r\n\r\n [types.CHANGE_SEARCH_TERM_ALL_USERS]: changeSearchTermForAllUsers,\r\n [types.SUBMIT_USER_SUCCESS]: submitUserSuccess\r\n },\r\n INITIAL_STATE\r\n);\r\n","import { handleActions } from 'redux-actions';\r\n\r\nimport { types, inputFieldNames } from '../constants';\r\n\r\nconst INITIAL_STATE = {\r\n newUser: {\r\n showCreateUserDialog: false,\r\n showEditUserDialog: false,\r\n showDeleteUserDialog: false,\r\n item: {\r\n role: 0,\r\n branchId: 0\r\n },\r\n isSaving: false,\r\n errorMessage: ''\r\n },\r\n user: {\r\n item: null,\r\n isLoading: false,\r\n errorMessage: ''\r\n }\r\n};\r\n\r\nconst openCreateUserDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n newUser: {\r\n ...state.newUser,\r\n showCreateUserDialog: open,\r\n item: {}\r\n }\r\n };\r\n};\r\n\r\nconst openEditUserDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n newUser: {\r\n ...state.newUser,\r\n showEditUserDialog: open,\r\n item: {}\r\n }\r\n };\r\n};\r\n\r\nconst openDeleteUserDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n newUser: {\r\n ...state.newUser,\r\n showDeleteUserDialog: open,\r\n item: {},\r\n errorMessage: ''\r\n }\r\n };\r\n};\r\n\r\nconst startSubmitUser = (state) => {\r\n return {\r\n ...state,\r\n newUser: {\r\n ...state.newUser,\r\n isSaving: true\r\n }\r\n };\r\n};\r\nconst submitUserSuccess = (state, { submittedUser }) => {\r\n return {\r\n ...state,\r\n user: {\r\n ...state.user,\r\n item: submittedUser\r\n }\r\n };\r\n};\r\nconst submitUserFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n newUser: {\r\n ...state.newUser,\r\n errorMessage\r\n }\r\n };\r\n};\r\nconst submitUserFinished = (state) => {\r\n return {\r\n ...state,\r\n newUser: {\r\n ...state.newUser,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst inputChangeCreateUserForm = (state, { value, inputFieldName }) => {\r\n const user = { ...state.newUser.item };\r\n if (inputFieldName === inputFieldNames.USER_NAME) {\r\n user.name = value;\r\n } else if (inputFieldName === inputFieldNames.USER_EMAIL) {\r\n user.email = value;\r\n } else if (inputFieldName === inputFieldNames.USER_ROLE) {\r\n user.role = value;\r\n } else if (inputFieldName === inputFieldNames.USER_BRANCH) {\r\n user.branchId = parseInt(value);\r\n } else if (inputFieldName === inputFieldNames.USER_COMPANY) {\r\n user.companyId = parseInt(value);\r\n } else if (inputFieldName === inputFieldNames.USER_PASSWORD) {\r\n user.password = value;\r\n }\r\n\r\n return {\r\n ...state,\r\n newUser: {\r\n ...state.newUser,\r\n item: user\r\n }\r\n };\r\n};\r\n\r\nconst editUser = (state, { user }) => {\r\n return {\r\n ...state,\r\n newUser: {\r\n ...state.newUser,\r\n item: user\r\n }\r\n };\r\n};\r\n\r\nexport default handleActions(\r\n {\r\n [types.OPEN_CREATE_USER_DIALOG]: openCreateUserDialog,\r\n [types.OPEN_EDIT_USER_DIALOG]: openEditUserDialog,\r\n [types.OPEN_DELETE_USER_DIALOG]: openDeleteUserDialog,\r\n\r\n [types.START_SUBMIT_USER]: startSubmitUser,\r\n [types.SUBMIT_USER_SUCCESS]: submitUserSuccess,\r\n [types.SUBMIT_USER_FAILURE]: submitUserFailure,\r\n [types.SUBMIT_USER_FINISHED]: submitUserFinished,\r\n\r\n [types.INPUT_CHANGE_CREATE_USER_FORM]: inputChangeCreateUserForm,\r\n\r\n [types.EDIT_USER]: editUser\r\n },\r\n INITIAL_STATE\r\n);\r\n","import { handleActions } from 'redux-actions';\r\n\r\nimport { types, companyStatus } from '../constants';\r\n\r\nconst INITIAL_STATE = {\r\n allCompanies: {\r\n items: [],\r\n itemsCopy: [],\r\n isLoading: false,\r\n errorMessage: '',\r\n searchTerm: ''\r\n }\r\n};\r\n\r\nconst changeSearchTermForAllCompanies = (state, { searchTerm }) => {\r\n let companies = state.allCompanies.itemsCopy;\r\n\r\n let filteredCompanies = companies.filter(\r\n (g) =>\r\n (g.name && g.name.toLowerCase().includes(searchTerm)) ||\r\n (g.email && g.email.toLowerCase().includes(searchTerm))\r\n );\r\n\r\n return {\r\n ...state,\r\n allCompanies: {\r\n ...state.allCompanies,\r\n searchTerm,\r\n items: filteredCompanies\r\n }\r\n };\r\n};\r\n\r\nconst startFetchAllCompanies = (state) => {\r\n return {\r\n ...state,\r\n allCompanies: {\r\n ...state.allCompanies,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllCompaniesSuccess = (state, { allCompanies }) => {\r\n const activeCompanies = allCompanies.filter(\r\n (c) => c.status === companyStatus.ACTIVE\r\n );\r\n return {\r\n ...state,\r\n allCompanies: {\r\n ...state.allCompanies,\r\n items: activeCompanies,\r\n itemsCopy: activeCompanies\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllCompaniesFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n allCompanies: {\r\n ...state.allCompanies,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllCompaniesFinished = (state) => {\r\n return {\r\n ...state,\r\n allCompanies: {\r\n ...state.allCompanies,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\nconst submitCompanySuccess = (state, { submittedCompany }) => {\r\n let companies = [...state.allCompanies.items];\r\n let updatedCompanyIndex = companies.findIndex(\r\n (c) => c.id === submittedCompany.id\r\n );\r\n\r\n //Means updated\r\n if (updatedCompanyIndex !== -1) {\r\n companies[updatedCompanyIndex] = submittedCompany;\r\n }\r\n //Means newly created\r\n else {\r\n companies = [...companies, submittedCompany];\r\n }\r\n\r\n return {\r\n ...state,\r\n allCompanies: {\r\n ...state.allCompanies,\r\n items: companies,\r\n itemsCopy: companies\r\n }\r\n };\r\n};\r\n\r\n//Handles the incoming actions.\r\nexport default handleActions(\r\n {\r\n [types.CHANGE_SEARCH_TERM_ALL_COMPANIES]: changeSearchTermForAllCompanies,\r\n\r\n [types.START_FETCH_ALL_COMPANIES]: startFetchAllCompanies,\r\n [types.FETCH_ALL_COMPANIES_SUCCESS]: fetchAllCompaniesSuccess,\r\n [types.FETCH_ALL_COMPANIES_FAILURE]: fetchAllCompaniesFailure,\r\n [types.FETCH_ALL_COMPANIES_FINISHED]: fetchAllCompaniesFinished,\r\n\r\n [types.SUBMIT_COMPANY_SUCCESS]: submitCompanySuccess\r\n },\r\n INITIAL_STATE\r\n);\r\n","import { handleActions } from 'redux-actions';\r\n\r\nimport { types, inputFieldNames } from '../constants';\r\n\r\nconst INITIAL_STATE = {\r\n newCompany: {\r\n showCreateCompanyDialog: false,\r\n showEditCompanyDialog: false,\r\n item: {},\r\n isSaving: false,\r\n errorMessage: ''\r\n },\r\n company: {\r\n item: null,\r\n isLoading: false,\r\n errorMessage: ''\r\n },\r\n deleteOrDeactivatingCompany: {\r\n open: false,\r\n isSaving: false,\r\n companyId: 0,\r\n errorMessage: '',\r\n status: 0,\r\n item: {}\r\n }\r\n};\r\n\r\nconst openCreateCompanyDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n newCompany: {\r\n ...state.newCompany,\r\n showCreateCompanyDialog: open,\r\n item: {}\r\n }\r\n };\r\n};\r\n\r\nconst openEditCompanyDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n newCompany: {\r\n ...state.newCompany,\r\n showEditCompanyDialog: open,\r\n item: {}\r\n }\r\n };\r\n};\r\n\r\nconst inputChangeCreateEditCompanyForm = (state, { value, inputFieldName }) => {\r\n const company = { ...state.newCompany.item };\r\n if (inputFieldName === inputFieldNames.NAME) {\r\n company.name = value;\r\n } else if (inputFieldName === inputFieldNames.EMAIL) {\r\n company.email = value;\r\n } else if (inputFieldName === inputFieldNames.PHONE) {\r\n company.phone = value;\r\n }\r\n\r\n return {\r\n ...state,\r\n newCompany: {\r\n ...state.newCompany,\r\n item: company\r\n }\r\n };\r\n};\r\n\r\nconst startSubmitCompany = (state) => {\r\n return {\r\n ...state,\r\n newCompany: {\r\n ...state.newCompany,\r\n isSaving: true\r\n }\r\n };\r\n};\r\nconst submitCompanySuccess = (state, { submittedCompany }) => {\r\n return {\r\n ...state,\r\n company: {\r\n ...state.company,\r\n item: submittedCompany\r\n }\r\n };\r\n};\r\nconst submitCompanyFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n newCompany: {\r\n ...state.newCompany,\r\n errorMessage\r\n }\r\n };\r\n};\r\nconst submitCompanyFinished = (state) => {\r\n return {\r\n ...state,\r\n newCompany: {\r\n ...state.newCompany,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst editCompany = (state, { company }) => {\r\n return {\r\n ...state,\r\n newCompany: {\r\n ...state.newCompany,\r\n item: company\r\n }\r\n };\r\n};\r\n\r\nfunction showDeleteOrDeactiveCompanyDialog(state, { open, companyId, status }) {\r\n return {\r\n ...state,\r\n deleteOrDeactivatingCompany: {\r\n ...state.deleteOrDeactivatingCompany,\r\n open,\r\n errorMessage: '',\r\n companyId,\r\n isSaving: false,\r\n status\r\n }\r\n };\r\n}\r\n\r\n//Handles the incoming actions.\r\nexport default handleActions(\r\n {\r\n [types.OPEN_CREATE_COMPANY_DIALOG]: openCreateCompanyDialog,\r\n [types.OPEN_EDIT_COMPANY_DIALOG]: openEditCompanyDialog,\r\n\r\n [types.INPUT_CHANGE_CREATE_COMPANY_FORM]: inputChangeCreateEditCompanyForm,\r\n\r\n [types.DEACTIVATE_OR_DELETE_COMPANY_DIALOG]: showDeleteOrDeactiveCompanyDialog,\r\n\r\n [types.START_SUBMIT_COMPANY]: startSubmitCompany,\r\n [types.SUBMIT_COMPANY_SUCCESS]: submitCompanySuccess,\r\n [types.SUBMIT_COMPANY_FAILURE]: submitCompanyFailure,\r\n [types.SUBMIT_COMPANY_FINISHED]: submitCompanyFinished,\r\n\r\n [types.EDIT_COMPANY]: editCompany\r\n },\r\n INITIAL_STATE\r\n);\r\n","import { handleActions } from 'redux-actions';\r\n// import { types } from '../constants';\r\nimport { types, inputFieldNames } from '../constants';\r\n\r\nconst INITIAL_STATE = {\r\n newBranch: {\r\n showCreateBranchDialog: false,\r\n showEditBranchDialog: false,\r\n item: {},\r\n isSaving: false,\r\n errorMessage: ''\r\n },\r\n branch: {\r\n item: null,\r\n isLoading: false,\r\n errorMessage: ''\r\n },\r\n deleteOrDeactivatingBranch: {\r\n open: false,\r\n isSaving: false,\r\n branchId: 0,\r\n errorMessage: '',\r\n status: 0,\r\n item: {}\r\n }\r\n};\r\n\r\nconst openCreateBranchDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n newBranch: {\r\n ...state.newBranch,\r\n showCreateBranchDialog: open,\r\n item: {}\r\n }\r\n };\r\n};\r\n\r\nfunction showDeleteOrDeactiveBranchDialog(state, { open, branchId, status }) {\r\n return {\r\n ...state,\r\n deleteOrDeactivatingBranch: {\r\n ...state.deleteOrDeactivatingBranch,\r\n open,\r\n errorMessage: '',\r\n branchId,\r\n isSaving: false,\r\n status\r\n }\r\n };\r\n}\r\n\r\nconst openEditBranchDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n newBranch: {\r\n ...state.newBranch,\r\n showEditBranchDialog: open,\r\n item: {}\r\n }\r\n };\r\n};\r\n\r\nconst inputChangeCreateEditBranchForm = (state, { value, inputFieldName }) => {\r\n const branch = { ...state.newBranch.item };\r\n switch (inputFieldName) {\r\n case inputFieldNames.NAME:\r\n branch.name = value;\r\n break;\r\n case inputFieldNames.CONTACT_PERSON:\r\n branch.contactPerson = value;\r\n break;\r\n case inputFieldNames.EMAIL:\r\n branch.email = value;\r\n break;\r\n case inputFieldNames.PHONE:\r\n branch.phone = value;\r\n break;\r\n case inputFieldNames.FAX:\r\n branch.fax = value;\r\n break;\r\n case inputFieldNames.ADDRESS:\r\n branch.address = value;\r\n break;\r\n case inputFieldNames.NOTES:\r\n branch.notes = value;\r\n break;\r\n case inputFieldNames.COMPANY:\r\n branch.companyId = parseInt(value);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return {\r\n ...state,\r\n newBranch: {\r\n ...state.newBranch,\r\n item: branch\r\n }\r\n };\r\n};\r\n\r\nconst startSubmitBranch = (state) => {\r\n return {\r\n ...state,\r\n newBranch: {\r\n ...state.newBranch,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst submitBranchesuccess = (state, { submittedBranch }) => {\r\n return {\r\n ...state,\r\n branch: {\r\n ...state.Branch,\r\n item: submittedBranch\r\n }\r\n };\r\n};\r\n\r\nconst submitBranchFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n newBranch: {\r\n ...state.newBranch,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst submitBranchFinished = (state) => {\r\n return {\r\n ...state,\r\n newBranch: {\r\n ...state.newBranch,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst editBranch = (state, { branch }) => {\r\n return {\r\n ...state,\r\n newBranch: {\r\n ...state.newBranch,\r\n item: branch\r\n }\r\n };\r\n};\r\n\r\nconst startFetchBranchDetailsForLoggedInUser = (state) => {\r\n return {\r\n ...state,\r\n branch: {\r\n ...state.branch,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst fetchBranchDetailsForLoggedInUserSuccess = (state, { branch }) => {\r\n return {\r\n ...state,\r\n branch: {\r\n ...state.branch,\r\n item: branch\r\n }\r\n };\r\n};\r\n\r\nconst fetchBranchDetailsForLoggedInUserFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n branch: {\r\n ...state.branch,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst fetchBranchDetailsForLoggedInUserFinished = (state) => {\r\n return {\r\n ...state,\r\n branch: {\r\n ...state.branch,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\nconst startFetchBranchDetailsByBranchId = (state) => {\r\n return {\r\n ...state,\r\n branch: {\r\n ...state.branch,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst fetchBranchDetailsByBranchIdSuccess = (state, { branch }) => {\r\n return {\r\n ...state,\r\n branch: {\r\n ...state.branch,\r\n item: branch\r\n }\r\n };\r\n};\r\n\r\nconst fetchBranchDetailsByBranchIdFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n branch: {\r\n ...state.branch,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst fetchBranchDetailsByBranchIdFinished = (state) => {\r\n return {\r\n ...state,\r\n branch: {\r\n ...state.branch,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\n//Handles the incoming actions.\r\nexport default handleActions(\r\n {\r\n [types.OPEN_CREATE_BRANCH_DIALOG]: openCreateBranchDialog,\r\n [types.OPEN_EDIT_BRANCH_DIALOG]: openEditBranchDialog,\r\n\r\n [types.INPUT_CHANGE_CREATE_BRANCH_FORM]: inputChangeCreateEditBranchForm,\r\n\r\n [types.START_SUBMIT_BRANCH]: startSubmitBranch,\r\n [types.SUBMIT_BRANCH_SUCCESS]: submitBranchesuccess,\r\n [types.SUBMIT_BRANCH_FAILURE]: submitBranchFailure,\r\n [types.SUBMIT_BRANCH_FINISHED]: submitBranchFinished,\r\n\r\n [types.EDIT_BRANCH]: editBranch,\r\n\r\n [types.DEACTIVATE_OR_DELETE_BRANCH_DIALOG]: showDeleteOrDeactiveBranchDialog,\r\n\r\n [types.START_FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER]: startFetchBranchDetailsForLoggedInUser,\r\n [types.FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER_SUCCESS]: fetchBranchDetailsForLoggedInUserSuccess,\r\n [types.FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER_FAILURE]: fetchBranchDetailsForLoggedInUserFailure,\r\n [types.FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER_FINISHED]: fetchBranchDetailsForLoggedInUserFinished,\r\n\r\n [types.START_FETCH_BRANCH_DETAILS_BY_BRANCH_ID]: startFetchBranchDetailsByBranchId,\r\n [types.FETCH_BRANCH_DETAILS_BY_BRANCH_ID_SUCCESS]: fetchBranchDetailsByBranchIdSuccess,\r\n [types.FETCH_BRANCH_DETAILS_BY_BRANCH_ID_FAILURE]: fetchBranchDetailsByBranchIdFailure,\r\n [types.FETCH_BRANCH_DETAILS_BY_BRANCH_ID_FINISHED]: fetchBranchDetailsByBranchIdFinished\r\n },\r\n INITIAL_STATE\r\n);\r\n","import { handleActions } from 'redux-actions';\r\nimport { types, branchStatus } from '../constants';\r\n\r\nimport { buttonNames } from '../constants';\r\n\r\nconst INITIAL_STATE = {\r\n allBranches: {\r\n items: [],\r\n itemsCopy: [],\r\n isLoading: false,\r\n errorMessage: '',\r\n searchTerm: ''\r\n },\r\n currentBranchesRecord: buttonNames.DASHBOARD\r\n};\r\n\r\nconst startLoadBranches = (state) => {\r\n return {\r\n ...state,\r\n allBranches: {\r\n ...state.allBranches,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst loadAllBranchesSuccess = (state, { branches }) => {\r\n const activeBranches = branches.filter(\r\n (b) => b.status === branchStatus.ACTIVE\r\n );\r\n return {\r\n ...state,\r\n allBranches: {\r\n ...state.allBranches,\r\n items: activeBranches,\r\n itemsCopy: activeBranches\r\n }\r\n };\r\n};\r\n\r\nconst loadAllBranchesFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n allBranches: {\r\n ...state.allBranches,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst loadAllBranchesFinished = (state) => {\r\n return {\r\n ...state,\r\n allBranches: {\r\n ...state.allBranches,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\nconst changeSearchTermAllBranch = (state, { searchTerm }) => {\r\n let branches = state.allBranches.itemsCopy;\r\n let filteredBranch = branches.filter(\r\n (c) =>\r\n (c.name && c.name.toLowerCase().includes(searchTerm)) ||\r\n (c.email && c.email.toLowerCase().includes(searchTerm)) ||\r\n (c.contactPerson && c.contactPerson.toLowerCase().includes(searchTerm))\r\n );\r\n if (searchTerm === '') {\r\n filteredBranch = state.allBranches.itemsCopy;\r\n }\r\n\r\n return {\r\n ...state,\r\n allBranches: {\r\n ...state.allBranches,\r\n searchTerm,\r\n items: filteredBranch\r\n }\r\n };\r\n};\r\n\r\nconst submitBranchesuccess = (state, { submittedBranch }) => {\r\n let branches = [...state.allBranches.items];\r\n let updatedBranchIndex = branches.findIndex(\r\n (e) => e.id === submittedBranch.id\r\n );\r\n\r\n if (updatedBranchIndex !== -1) {\r\n branches[updatedBranchIndex] = submittedBranch;\r\n }\r\n //Means newly created\r\n else {\r\n branches = [...branches, submittedBranch];\r\n }\r\n\r\n return {\r\n ...state,\r\n allBranches: {\r\n ...state.allBranches,\r\n items: branches,\r\n itemsCopy: branches\r\n }\r\n };\r\n};\r\n\r\nconst setCurrentBranchesRecord = (state, { recordType }) => {\r\n return {\r\n ...state,\r\n currentBranchesRecord: recordType\r\n };\r\n};\r\n\r\n//Handles the incoming actions.\r\nexport default handleActions(\r\n {\r\n [types.START_GET_ALL_BRANCH]: startLoadBranches,\r\n [types.GET_ALL_BRANCH_SUCCESS]: loadAllBranchesSuccess,\r\n [types.GET_ALL_BRANCH_FAILURE]: loadAllBranchesFailure,\r\n [types.GET_ALL_BRANCH_FINISH]: loadAllBranchesFinished,\r\n\r\n [types.CHANGE_SEARCH_TERM_ALL_BRANCH]: changeSearchTermAllBranch,\r\n\r\n [types.SUBMIT_BRANCH_SUCCESS]: submitBranchesuccess,\r\n\r\n [types.SET_CURRENT_BRANCHES_RECORD]: setCurrentBranchesRecord\r\n },\r\n INITIAL_STATE\r\n);\r\n","import { CardTravel } from '@material-ui/icons';\r\nimport { handleActions } from 'redux-actions';\r\n\r\nimport { types } from '../constants';\r\nimport { documentType } from '../constants';\r\n\r\nconst INITIAL_STATE = {\r\n allDocuments: {\r\n items: [],\r\n itemsCopy: [],\r\n isLoading: false,\r\n errorMessage: ''\r\n },\r\n openDocumentListDialog: false,\r\n breadCrumbItems: [],\r\n defaultDirectory: '',\r\n currentDirectory: ''\r\n};\r\n\r\nconst startFetchAllDocuments = (state, { currentDocumentType, branchId }) => {\r\n \r\n let currentType = getCurrentDirectory(currentDocumentType, branchId);\r\n var breadCrumbStack = state.breadCrumbItems;\r\n breadCrumbStack.push(currentType);\r\n\r\n let defaultDir = getParentDirectory(currentDocumentType);\r\n return {\r\n ...state,\r\n allDocuments: {\r\n ...state.allDocuments,\r\n items: [],\r\n itemsCopy: [],\r\n isLoading: true\r\n },\r\n breadCrumbItems: breadCrumbStack,\r\n defaultDirectory: defaultDir,\r\n currentDirectory: currentType\r\n };\r\n};\r\n\r\nconst getCurrentDirectory = (currentDocumentType,\r\n branchId) => {\r\n switch (currentDocumentType) {\r\n case 1:\r\n return 'Documents/';\r\n case 2:\r\n return 'Library/';\r\n case 3:\r\n return 'Branch Documents/branch-' + branchId + '/';\r\n default:\r\n return 'Documents/';\r\n }\r\n};\r\n\r\nconst getParentDirectory = (currentDocumentType) => {\r\n switch (currentDocumentType) {\r\n case 1:\r\n return 'Documents/';\r\n case 2:\r\n return 'Library/';\r\n case 3:\r\n return 'Branch Documents/';\r\n default:\r\n return 'Documents/';\r\n }\r\n};\r\n\r\nconst fetchAllDocumentsSuccess = (state, { allDocuments }) => {\r\n\r\n const defaultDirectory = state.currentDirectory;\r\n const firstHierarchy = allDocuments.filter(\r\n (x) => x.parentId === defaultDirectory\r\n );\r\n return {\r\n ...state,\r\n allDocuments: {\r\n ...state.allDocuments,\r\n itemsCopy: allDocuments,\r\n items: firstHierarchy\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllDocumentsFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n allDocuments: {\r\n ...state.allDocuments,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllDocumentsFinished = (state) => {\r\n return {\r\n ...state,\r\n allDocuments: {\r\n ...state.allDocuments,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\nconst openDocumentListDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n openDocumentListDialog: open\r\n };\r\n};\r\n\r\nconst resetDocumentsToOriginalState = (state) => {\r\n const defaultItems = state.allDocuments.itemsCopy;\r\n const defaultDir = state.defaultDirectory;\r\n const firstHierarchy = defaultItems.filter((x) => x.parentId === defaultDir);\r\n return {\r\n allDocuments: {\r\n ...state.allDocuments,\r\n itemsCopy: defaultItems,\r\n items: firstHierarchy\r\n },\r\n currentDirectory: defaultDir,\r\n breadCrumbItems: [],\r\n defaultDirectory: '',\r\n currentDirectory: ''\r\n };\r\n};\r\n\r\nconst resetFormat = (state) => {\r\n return {\r\n allDocuments: {\r\n ...state.allDocuments,\r\n itemsCopy: [],\r\n items: []\r\n },\r\n currentDirectory: '',\r\n breadCrumbItems: [],\r\n defaultDirectory: '',\r\n currentDirectory: ''\r\n };\r\n};\r\n\r\nconst showDocumentFolderItems = (state, { prefix }) => {\r\n const allDocuments = state.allDocuments.itemsCopy;\r\n var defaultDirectory = state.defaultDirectory;\r\n var currentBreadCrumb = defaultDirectory.concat(prefix);\r\n var breadCrumbStack = state.breadCrumbItems;\r\n breadCrumbStack.push(currentBreadCrumb);\r\n var itemsForCurrentDirectory = allDocuments.filter(\r\n (x) => x.parentId === currentBreadCrumb\r\n );\r\n return {\r\n ...state,\r\n allDocuments: {\r\n ...state.allDocuments,\r\n itemsCopy: allDocuments,\r\n items: itemsForCurrentDirectory\r\n },\r\n currentDirectory: currentBreadCrumb,\r\n breadCrumbItems: breadCrumbStack\r\n };\r\n};\r\n\r\nconst showLastDocumentHierarchy = (state) => {\r\n var breadCrumbStack = state.breadCrumbItems;\r\n breadCrumbStack.pop();\r\n var lastDir = breadCrumbStack[breadCrumbStack.length - 1];\r\n const allDocuments = state.allDocuments.itemsCopy;\r\n\r\n var itemsForCurrentDirectory = allDocuments.filter(\r\n (x) => x.parentId === lastDir\r\n );\r\n return {\r\n ...state,\r\n allDocuments: {\r\n ...state.allDocuments,\r\n itemsCopy: allDocuments,\r\n items: itemsForCurrentDirectory\r\n },\r\n currentDirectory: lastDir\r\n };\r\n};\r\n\r\n\r\nconst getProperCurretnPath = (fullPath, folderName) => {\r\n if (\r\n typeof fullPath !== 'undefined' &&\r\n fullPath !== null\r\n ){\r\n var allPaths = fullPath.split('/').filter(x => x !== \"\"); \r\n \r\n if(allPaths.length > 1){\r\n allPaths.shift();\r\n var joined = allPaths.length === 1 ? allPaths[0] : allPaths.join('/');\r\n return joined.concat('/' + folderName, '/')\r\n }\r\n else{\r\n return folderName + '/';\r\n }\r\n }\r\n else{\r\n return folderName + '/'; \r\n }\r\n}\r\n\r\nconst folderAdded = (state , { folderName }) => {\r\n\r\n var currentPath = state.currentDirectory;\r\n var folderPath = getProperCurretnPath(currentPath, folderName);\r\n var breadCrumbStack = state.breadCrumbItems;\r\n var lastDir = breadCrumbStack[breadCrumbStack.length - 1];\r\n \r\n const newFolder = {\r\n documentName: folderPath,\r\n folderName,\r\n blobName: \"\",\r\n isFolder: true,\r\n parentId: lastDir,\r\n blobFullUrl: null\r\n };\r\n\r\n const allDocuments = state.allDocuments.itemsCopy;\r\n allDocuments.push(newFolder);\r\n var itemsForCurrentDirectory = allDocuments.filter(\r\n (x) => x.parentId === lastDir\r\n);\r\n\r\nreturn {\r\n ...state,\r\n allDocuments: {\r\n ...state.allDocuments,\r\n itemsCopy: allDocuments,\r\n items: itemsForCurrentDirectory\r\n }\r\n};\r\n\r\n}\r\n\r\n\r\n\r\n\r\n//Add Attachment\r\n\r\nconst startAddAttachment = (state) => {\r\n return {\r\n ...state,\r\n allDocuments: {\r\n ...state.allDocuments,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\n\r\nconst addDocumentSuccess = (state, {attachment}) => {\r\n const allDocuments = state.allDocuments.itemsCopy;\r\n \r\n if(typeof attachment !== 'undefined'){\r\n allDocuments.push(attachment);\r\n }\r\n \r\n const currentDirectory = state.currentDirectory;\r\n\r\n const firstHierarchy = allDocuments.filter(\r\n (x) => x.parentId === currentDirectory\r\n );\r\n return {\r\n ...state,\r\n allDocuments: {\r\n ...state.allDocuments,\r\n itemsCopy: allDocuments,\r\n items: firstHierarchy\r\n }\r\n };\r\n\r\n};\r\n\r\n\r\nconst addAttachmentFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n allDocuments: {\r\n ...state.allDocuments,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst addAttachmentFinished = (state) => {\r\n return {\r\n ...state,\r\n allDocuments: {\r\n ...state.allDocuments,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\n\r\n//Remove Attachment\r\n\r\nconst startRemoveAttachment = (state) => {\r\n return {\r\n ...state,\r\n allDocuments: {\r\n ...state.allDocuments,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\n\r\nconst removeAttachmentSuccess = (state, {blobName\r\n}) => {\r\n \r\n const currentDocuments = state.allDocuments.itemsCopy;\r\n let filterdDocuments = [];\r\n if(typeof blobName !== 'undefined'){\r\n try{\r\n filterdDocuments = currentDocuments.filter((x) => x.documentName !== blobName);\r\n }\r\n catch(error){\r\n console.log(error);\r\n }\r\n }\r\n\r\n const currentDirectory = state.currentDirectory;\r\n const firstHierarchy = filterdDocuments.filter(\r\n (x) => x.parentId === currentDirectory\r\n );\r\n \r\n return {\r\n ...state,\r\n allDocuments: {\r\n ...state.allDocuments,\r\n itemsCopy: filterdDocuments,\r\n items: firstHierarchy\r\n }\r\n };\r\n\r\n};\r\n\r\n\r\nconst removeAttachmentFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n allDocuments: {\r\n ...state.allDocuments,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst removeAttachmentFinished = (state) => {\r\n return {\r\n ...state,\r\n allDocuments: {\r\n ...state.allDocuments,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\n\r\n\r\n//Handles the incoming actions.\r\nexport default handleActions(\r\n {\r\n [types.START_FETCH_ALL_DOCUMENTS]: startFetchAllDocuments,\r\n [types.FETCH_ALL_DOCUMENTS_SUCCESS]: fetchAllDocumentsSuccess,\r\n [types.FETCH_ALL_DOCUMENTS_FAILURE]: fetchAllDocumentsFailure,\r\n [types.FETCH_ALL_DOCUMENTS_FINISHED]: fetchAllDocumentsFinished,\r\n\r\n [types.OPEN_DOCUMENT_LIST_DIALOG]: openDocumentListDialog,\r\n\r\n [types.DOCUMENT_SHOW_FOLDER_ITEMS]: showDocumentFolderItems,\r\n [types.DOCUMENT_BACK_ARROW_CLICKED]: showLastDocumentHierarchy,\r\n\r\n [types.DOCUMENT_RESET_ORIGINAL_STATE]: resetDocumentsToOriginalState,\r\n\r\n [types.FOLDER_ADDED]: folderAdded,\r\n\r\n \r\n\r\n [types.START_USER_ATTACHMENT_ADD]: startAddAttachment,\r\n [types.USER_ATTACHMENT_ADD_SUCCESS]: addDocumentSuccess,\r\n [types.USER_ATTACHMENT_ADD_FAILURE]: addAttachmentFailure,\r\n [types.USER_ATTACHMENT_ADD_FINISHED]: addAttachmentFinished,\r\n\r\n\r\n [types.START_USER_ATTACHMENT_REMOVE]: startRemoveAttachment,\r\n [types.USER_ATTACHMENT_REMOVE_SUCCESS]: removeAttachmentSuccess,\r\n [types.USER_ATTACHMENT_REMOVE_FAILURE]: removeAttachmentFailure,\r\n [types.USER_ATTACHMENT_REMOVE_FINISHED]: removeAttachmentFinished,\r\n\r\n [types.FULL_RESET_DOCUMENTS]: resetFormat,\r\n },\r\n INITIAL_STATE\r\n\r\n\r\n);\r\n\r\n","const sites = () => [\r\n {\r\n name: 'ALBANY',\r\n id: 1\r\n },\r\n {\r\n name: 'CHARTWELL',\r\n id: 2\r\n },\r\n {\r\n name: 'COLOMBO',\r\n id: 3\r\n },\r\n {\r\n name: 'DUNEDIN',\r\n id: 4\r\n },\r\n {\r\n name: 'FERRY ROAD',\r\n id: 5\r\n },\r\n {\r\n name: 'GLEN INNES',\r\n id: 6\r\n },\r\n {\r\n name: 'KAHIKATEA DRIVE',\r\n id: 7\r\n },\r\n {\r\n name: 'LOWER HUTT',\r\n id: 8\r\n },\r\n {\r\n name: 'MANUKAU',\r\n id: 9\r\n },\r\n {\r\n name: 'MT ROSKILL',\r\n id: 10\r\n },\r\n {\r\n name: 'NORTHCOTE',\r\n id: 11\r\n },\r\n {\r\n name: 'ONEHUNGA',\r\n id: 12\r\n },\r\n {\r\n name: 'PAPAKURA',\r\n id: 13\r\n },\r\n {\r\n name: 'PORIRUA',\r\n id: 14\r\n },\r\n {\r\n name: 'PUKEKOHE',\r\n id: 15\r\n },\r\n {\r\n name: 'QUAYSIDE',\r\n id: 16\r\n },\r\n {\r\n name: 'SHIRLEY',\r\n id: 17\r\n },\r\n {\r\n name: 'TE NGAE',\r\n id: 18\r\n },\r\n {\r\n name: 'UPPER HUTT',\r\n id: 19\r\n },\r\n {\r\n name: 'WANGANUI',\r\n id: 20\r\n }\r\n];\r\n\r\nexport default sites;\r\n","import { handleActions } from 'redux-actions';\r\n\r\nimport { types } from '../constants';\r\n\r\nimport sites from '../constants/sites';\r\n\r\nconst INITIAL_STATE = {\r\n allPersonnels: {\r\n items: [],\r\n itemsCopy: [],\r\n isLoading: false,\r\n errorMessage: '',\r\n searchTerm: ''\r\n },\r\n sites: {\r\n items: sites()\r\n }\r\n};\r\n\r\nconst changeSearchTermForAllPersonnels = (state, { searchTerm }) => {\r\n let personnels = state.allPersonnels.itemsCopy;\r\n\r\n let filteredCompanies = personnels.filter(\r\n (p) => p.firstName && p.firstName.toLowerCase().includes(searchTerm)\r\n );\r\n\r\n return {\r\n ...state,\r\n allPersonnels: {\r\n ...state.allPersonnels,\r\n searchTerm,\r\n items: filteredCompanies\r\n }\r\n };\r\n};\r\n\r\nconst startFetchAllPersonnels = (state) => {\r\n return {\r\n ...state,\r\n allPersonnels: {\r\n ...state.allPersonnels,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllPersonnelsSuccess = (state, { allPersonnels }) => {\r\n const activePersonnels = allPersonnels.filter((c) => c.statusId === 1);\r\n return {\r\n ...state,\r\n allPersonnels: {\r\n ...state.allPersonnels,\r\n items: activePersonnels,\r\n itemsCopy: activePersonnels\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllPersonnelsFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n allPersonnels: {\r\n ...state.allPersonnels,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllPersonnelsFinished = (state) => {\r\n return {\r\n ...state,\r\n allPersonnels: {\r\n ...state.allPersonnels,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\nconst submitPersonnelSuccess = (state, { submittedPersonnel }) => {\r\n let personnels = [...state.allPersonnels.items];\r\n let updatedPersonnelIndex = personnels.findIndex(\r\n (c) => c.id === submittedPersonnel.id\r\n );\r\n\r\n //Means updated\r\n if (updatedPersonnelIndex !== -1) {\r\n personnels[updatedPersonnelIndex] = submittedPersonnel;\r\n }\r\n //Means newly created\r\n else {\r\n personnels = [...personnels, submittedPersonnel];\r\n }\r\n const activePersonnels = personnels.filter((c) => c.statusId === 1);\r\n return {\r\n ...state,\r\n allPersonnels: {\r\n ...state.allPersonnels,\r\n items: activePersonnels,\r\n itemsCopy: activePersonnels\r\n }\r\n };\r\n};\r\n\r\n//Handles the incoming actions.\r\nexport default handleActions(\r\n {\r\n [types.START_FETCH_ALL_PERSONNELS]: startFetchAllPersonnels,\r\n [types.FETCH_ALL_PERSONNELS_SUCCESS]: fetchAllPersonnelsSuccess,\r\n [types.FETCH_ALL_PERSONNELS_FAILURE]: fetchAllPersonnelsFailure,\r\n [types.FETCH_ALL_PERSONNELS_FINISHED]: fetchAllPersonnelsFinished,\r\n\r\n [types.SUBMIT_PERSONNEL_SUCCESS]: submitPersonnelSuccess,\r\n\r\n [types.CHANGE_SEARCH_TERM_ALL_PERSONNELS]: changeSearchTermForAllPersonnels\r\n },\r\n INITIAL_STATE\r\n);\r\n","import { handleActions } from 'redux-actions';\r\n// import { types } from '../constants';\r\nimport { types, inputFieldNames } from '../constants';\r\n\r\nconst INITIAL_STATE = {\r\n newPersonnel: {\r\n showCreatePersonnelDialog: false,\r\n isShortPersonnelDialog:false,\r\n showEditPersonnelDialog: false,\r\n showDeletePersonnelDialog: false,\r\n item: {\r\n startDateUTC: null,\r\n regDateUTC: null\r\n },\r\n isSaving: false,\r\n errorMessage: '',\r\n validationState: true\r\n },\r\n personnel: {\r\n item: null,\r\n isLoading: false,\r\n errorMessage: ''\r\n },\r\n deleteOrDeactivatingPersonnel: {\r\n open: false,\r\n isSaving: false,\r\n personnelId: 0,\r\n errorMessage: '',\r\n status: 0,\r\n item: {}\r\n },\r\n coursesForPersonnel: {\r\n items: [],\r\n isLoading: false,\r\n errorMessage: '',\r\n selectedPersonnel: null,\r\n dialogOpen: false\r\n }\r\n};\r\n\r\nconst openCreatePersonnelDialog = (state, { open, isShort }) => {\r\n return {\r\n ...state,\r\n newPersonnel: {\r\n ...state.newPersonnel,\r\n showCreatePersonnelDialog: open,\r\n isShortPersonnelDialog: isShort,\r\n item: {\r\n startDateUTC: null,\r\n regDateUTC: null\r\n },\r\n validationState: true\r\n }\r\n };\r\n};\r\n\r\nconst openEditPersonnelDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n newPersonnel: {\r\n ...state.newPersonnel,\r\n showEditPersonnelDialog: open,\r\n item: {}\r\n }\r\n };\r\n};\r\n\r\nconst openDeletePersonnelDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n newPersonnel: {\r\n ...state.newPersonnel,\r\n showDeletePersonnelDialog: open,\r\n item: {}\r\n }\r\n };\r\n};\r\n\r\nconst inputChangeCreateEditPersonnelForm = (\r\n state,\r\n { value, inputFieldName }\r\n) => {\r\n const personnel = { ...state.newPersonnel.item };\r\n switch (inputFieldName) {\r\n case inputFieldNames.FIRST_NAME:\r\n personnel.firstName = value;\r\n break;\r\n case inputFieldNames.LAST_NAME:\r\n personnel.lastName = value;\r\n break;\r\n case inputFieldNames.WORK_PHONE:\r\n personnel.workPhone = value;\r\n break;\r\n case inputFieldNames.BRANCH:\r\n personnel.branchId = parseInt(value);\r\n break;\r\n case inputFieldNames.NOTES:\r\n personnel.notes = value;\r\n break;\r\n case inputFieldNames.START_DATE_UTC:\r\n personnel.startDateUTC = value;\r\n break;\r\n case inputFieldNames.HOME_PHONE:\r\n personnel.homePhone = value;\r\n break;\r\n case inputFieldNames.ASSIGNEE:\r\n personnel.assignee = value;\r\n break;\r\n case inputFieldNames.REQUESTOR:\r\n personnel.requestor = value;\r\n break;\r\n case inputFieldNames.REG_DATE_UTC:\r\n personnel.regDateUTC = value;\r\n break;\r\n case inputFieldNames.SITE:\r\n personnel.siteId = parseInt(value);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return {\r\n ...state,\r\n newPersonnel: {\r\n ...state.newPersonnel,\r\n item: personnel\r\n }\r\n };\r\n};\r\n\r\nconst changeNewPersonnelValidationState = (state, { validationState }) => {\r\n return {\r\n ...state,\r\n newPersonnel: {\r\n ...state.newPersonnel,\r\n validationState\r\n }\r\n };\r\n};\r\n\r\nconst startSubmitPersonnel = (state) => {\r\n return {\r\n ...state,\r\n newPersonnel: {\r\n ...state.newPersonnel,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst submitPersonnelesuccess = (state, { submittedPersonnel }) => {\r\n return {\r\n ...state,\r\n personnel: {\r\n ...state.Personnel,\r\n item: submittedPersonnel\r\n }\r\n };\r\n};\r\n\r\nconst submitPersonnelFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n newPersonnel: {\r\n ...state.newPersonnel,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst submitPersonnelFinished = (state) => {\r\n return {\r\n ...state,\r\n newPersonnel: {\r\n ...state.newPersonnel,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst editPersonnel = (state, { personnel }) => {\r\n return {\r\n ...state,\r\n newPersonnel: {\r\n ...state.newPersonnel,\r\n item: personnel\r\n }\r\n };\r\n};\r\n\r\nconst openCoursesForPersonnelDialog = (state, { open, personnel }) => {\r\n return {\r\n ...state,\r\n coursesForPersonnel: {\r\n ...state.coursesForPersonnel,\r\n dialogOpen: open,\r\n selectedPersonnel: personnel\r\n }\r\n };\r\n};\r\n\r\nconst clearAllCoursesForPersonnel = (state) => {\r\n return {\r\n ...state,\r\n coursesForPersonnel: {\r\n ...state.coursesForPersonnel,\r\n items: []\r\n }\r\n };\r\n};\r\n\r\nconst startFetchCoursesForPersonnel = (state) => {\r\n return {\r\n ...state,\r\n coursesForPersonnel: {\r\n ...state.coursesForPersonnel,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst fetchCoursesForPersonnelSuccess = (state, { coursesForPersonnel }) => {\r\n return {\r\n ...state,\r\n coursesForPersonnel: {\r\n ...state.coursesForPersonnel,\r\n items: coursesForPersonnel\r\n }\r\n };\r\n};\r\n\r\nconst openCoursesForPersonnelDialogFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n coursesForPersonnel: {\r\n ...state.coursesForPersonnel,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst openCoursesForPersonnelDialogFinished = (state) => {\r\n return {\r\n ...state,\r\n coursesForPersonnel: {\r\n ...state.coursesForPersonnel,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\n//Handles the incoming actions.\r\nexport default handleActions(\r\n {\r\n [types.OPEN_CREATE_PERSONNEL_DIALOG]: openCreatePersonnelDialog,\r\n [types.OPEN_EDIT_PERSONNEL_DIALOG]: openEditPersonnelDialog,\r\n [types.OPEN_DELETE_PERSONNEL_DIALOG]: openDeletePersonnelDialog,\r\n\r\n [types.INPUT_CHANGE_CREATE_PERSONNEL_FORM]: inputChangeCreateEditPersonnelForm,\r\n [types.CHANGE_NEW_PERSONNEL_VALIDATION_STATE]: changeNewPersonnelValidationState,\r\n\r\n [types.START_SUBMIT_PERSONNEL]: startSubmitPersonnel,\r\n [types.SUBMIT_PERSONNEL_SUCCESS]: submitPersonnelesuccess,\r\n [types.SUBMIT_PERSONNEL_FAILURE]: submitPersonnelFailure,\r\n [types.SUBMIT_PERSONNEL_FINISHED]: submitPersonnelFinished,\r\n\r\n [types.EDIT_PERSONNEL]: editPersonnel,\r\n\r\n [types.OPEN_COURSES_FOR_PERSONNEL_DIALOG]: openCoursesForPersonnelDialog,\r\n [types.CLEAR_ALL_COURSES_FOR_PERSONNEL]: clearAllCoursesForPersonnel,\r\n\r\n [types.START_FETCH_COURSES_FOR_PERSONNEL]: startFetchCoursesForPersonnel,\r\n [types.FETCH_COURSES_FOR_PERSONNEL_SUCCESS]: fetchCoursesForPersonnelSuccess,\r\n [types.FETCH_COURSES_FOR_PERSONNEL_FAILURE]: openCoursesForPersonnelDialogFailure,\r\n [types.FETCH_COURSES_FOR_PERSONNEL_FINISHED]: openCoursesForPersonnelDialogFinished\r\n },\r\n INITIAL_STATE\r\n);\r\n","import { handleActions } from 'redux-actions';\r\n\r\nimport { types } from '../constants';\r\nimport { injuryConstants } from '../constants';\r\n\r\nconst INITIAL_STATE = {\r\n accidentsByBranch: {\r\n items: [],\r\n itemsCopy: [],\r\n isLoading: false,\r\n errorMessage: '',\r\n searchTerm: ''\r\n },\r\n accidentsByCompany: {\r\n items: [],\r\n isLoading: false,\r\n errorMessage: ''\r\n }\r\n};\r\n\r\nconst startFetchAllAccidentsForBranch = (state) => {\r\n return {\r\n ...state,\r\n accidentsByBranch: {\r\n ...state.accidentsByBranch,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllAccidentsForBranchSuccess = (state, { accidents }) => {\r\n return {\r\n ...state,\r\n accidentsByBranch: {\r\n ...state.accidentsByBranch,\r\n items: accidents,\r\n itemsCopy: accidents\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllAccidentsForBranchFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n accidentsByBranch: {\r\n ...state.accidentsByBranch,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllAccidentsForBranchFinished = (state) => {\r\n return {\r\n ...state,\r\n accidentsByBranch: {\r\n ...state.accidentsByBranch,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\nconst startFetchAllAccidentsForCompany = (state) => {\r\n return {\r\n ...state,\r\n accidentsByCompany: {\r\n ...state.accidentsByCompany,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllAccidentsForCompanySuccess = (state, { accidents }) => {\r\n return {\r\n ...state,\r\n accidentsByCompany: {\r\n ...state.accidentsByCompany,\r\n items: accidents\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllAccidentsForCompanyFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n accidentsByCompany: {\r\n ...state.accidentsByCompany,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllAccidentsForCompanyFinished = (state) => {\r\n return {\r\n ...state,\r\n accidentsByCompany: {\r\n ...state.accidentsByCompany,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\nconst changeSearchTermAllAccidents = (state, { searchTerm }) => {\r\n let accidents = [...state.accidentsByBranch.itemsCopy];\r\n let list = injuryConstants.injuryTypes;\r\n\r\n //Getting injuryTypes that have searchTerm in them.\r\n let filteredList = list.filter(\r\n (a) => a.value && a.value.toLowerCase().includes(searchTerm)\r\n );\r\n\r\n //Getting accidents whose injuryTypeId exists in above calculated filteredList.\r\n let filteredAccidents = accidents.filter((a) =>\r\n filteredList.some((l) => l.id === a.injuryTypeId)\r\n );\r\n\r\n if (searchTerm === '') {\r\n filteredAccidents = state.accidentsByBranch.itemsCopy;\r\n }\r\n\r\n return {\r\n ...state,\r\n accidentsByBranch: {\r\n ...state.accidentsByBranch,\r\n searchTerm,\r\n items: filteredAccidents\r\n }\r\n };\r\n};\r\n\r\nconst submitAccidentSuccess = (state, { submittedAccident }) => {\r\n let accidents = [...state.accidentsByBranch.items];\r\n let updatedAccidentIndex = accidents.findIndex(\r\n (a) => a.id === submittedAccident.id\r\n );\r\n\r\n //Means updated\r\n if (updatedAccidentIndex !== -1) {\r\n accidents[updatedAccidentIndex] = submittedAccident;\r\n } else {\r\n accidents = [...accidents, submittedAccident];\r\n }\r\n\r\n return {\r\n ...state,\r\n accidentsByBranch: {\r\n ...state.accidentsByBranch,\r\n items: accidents,\r\n itemsCopy: accidents\r\n }\r\n };\r\n};\r\n\r\n//Handles the incoming actions.\r\nexport default handleActions(\r\n {\r\n [types.START_FETCH_ALL_ACCIDENTS_FOR_BRANCH]: startFetchAllAccidentsForBranch,\r\n [types.FETCH_ALL_ACCIDENTS_FOR_BRANCH_SUCCESS]: fetchAllAccidentsForBranchSuccess,\r\n [types.FETCH_ALL_ACCIDENTS_FOR_BRANCH_FAILURE]: fetchAllAccidentsForBranchFailure,\r\n [types.FETCH_ALL_ACCIDENTS_FOR_BRANCH_FINISHED]: fetchAllAccidentsForBranchFinished,\r\n\r\n [types.START_FETCH_ALL_ACCIDENTS_FOR_COMPANY]: startFetchAllAccidentsForCompany,\r\n [types.FETCH_ALL_ACCIDENTS_FOR_COMPANY_SUCCESS]: fetchAllAccidentsForCompanySuccess,\r\n [types.FETCH_ALL_ACCIDENTS_FOR_COMPANY_FAILURE]: fetchAllAccidentsForCompanyFailure,\r\n [types.FETCH_ALL_ACCIDENTS_FOR_COMPANY_FINISHED]: fetchAllAccidentsForCompanyFinished,\r\n\r\n [types.CHANGE_SEARCH_TERM_ALL_ACCIDENTS]: changeSearchTermAllAccidents,\r\n\r\n [types.SUBMIT_ACCIDENT_SUCCESS]: submitAccidentSuccess\r\n },\r\n INITIAL_STATE\r\n);\r\n","const getUniqueArray = (mixedArray) => {\r\n let newArray = [];\r\n let uniqueObject = {};\r\n for (let i in mixedArray) {\r\n let objTitle = mixedArray[i]['name'];\r\n uniqueObject[objTitle] = mixedArray[i];\r\n }\r\n for (let i in uniqueObject) {\r\n newArray.push(uniqueObject[i]);\r\n }\r\n return newArray;\r\n};\r\n\r\nconst checkedName = (data) => {\r\n return data.fileData === null ? data.name : data.fileData.name;\r\n };\r\n \r\nconst getRecordAttachmentsToBeAdded = (record) => {\r\n if (\r\n typeof record.attachmentFiles !== 'undefined' &&\r\n record.attachmentFiles.length > 0\r\n ) {\r\n return record.attachmentFiles.filter((x) => x.newlyAdded === true);\r\n }\r\n return [];\r\n};\r\n\r\nconst getRecordAttachmentsToBeDeleted = (record) => {\r\n let existingAttahments = [];\r\n if (typeof record.existingAttachmentFiles !== 'undefined') {\r\n existingAttahments = record.existingAttachmentFiles;\r\n }\r\n\r\n function comparer(otherArray) {\r\n return function (current) {\r\n return (\r\n otherArray.filter(function (other) {\r\n // eslint-disable-next-line\r\n return checkedName(other) == checkedName(current);\r\n // eslint-disable-next-line\r\n }).length == 0\r\n );\r\n };\r\n }\r\n var result = existingAttahments.filter(comparer(record.attachmentFiles));\r\n return result;\r\n};\r\n\r\nexport { getUniqueArray, getRecordAttachmentsToBeAdded, getRecordAttachmentsToBeDeleted };","import { handleActions } from 'redux-actions';\r\n\r\nimport { types, inputFieldNames } from '../constants';\r\n\r\nimport { utcToLocal } from './../utils/timeConverter';\r\nimport { getUniqueArray } from './../utils/attachmentUtils';\r\n\r\nconst INITIAL_STATE = {\r\n newAccident: {\r\n showCreateAccidentDialog: false,\r\n showEditAccidentDialog: false,\r\n item: {\r\n injuryDate: null,\r\n injuryLocationId: 0,\r\n injuryTypeId: 0,\r\n injuryCauseId: 0,\r\n personnelId: 0,\r\n injuryTime: null,\r\n attachmentFiles: [],\r\n existingAttachmentFiles: []\r\n },\r\n isSaving: false,\r\n errorMessage: ''\r\n },\r\n accident: {\r\n item: null,\r\n isLoading: false,\r\n errorMessage: ''\r\n },\r\n deleteOrDeactivatingAccident: {\r\n open: false,\r\n isSaving: false,\r\n accident: null,\r\n errorMessage: '',\r\n status: 0,\r\n item: {}\r\n }\r\n};\r\n\r\nconst openCreateAccidentDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n newAccident: {\r\n ...state.newAccident,\r\n showCreateAccidentDialog: open,\r\n item: {\r\n injuryDate: null,\r\n injuryLocationId: 0,\r\n injuryTypeId: 0,\r\n injuryCauseId: 0,\r\n personnelId: 0,\r\n injuryTime: null\r\n }\r\n }\r\n };\r\n};\r\n\r\nconst openEditAccidentDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n newAccident: {\r\n ...state.newAccident,\r\n showEditAccidentDialog: open,\r\n item: {\r\n injuryDate: null,\r\n injuryLocationId: 0,\r\n injuryTypeId: 0,\r\n injuryCauseId: 0,\r\n personnelId: 0,\r\n injuryTime: null\r\n }\r\n }\r\n };\r\n};\r\n\r\nconst inputChangeCreateAccidentForm = (state, { value, inputFieldName }) => {\r\n const accident = { ...state.newAccident.item };\r\n switch (inputFieldName) {\r\n case inputFieldNames.INJURY_DATE:\r\n if (accident.injuryTime === null && value !== null) {\r\n accident.injuryDate = new Date(\r\n value.get('year'),\r\n value.get('month'),\r\n value.get('date')\r\n );\r\n } else if (value != null) {\r\n accident.injuryDate = new Date(\r\n value.get('year'),\r\n value.get('month'),\r\n value.get('date'),\r\n accident.injuryTime.get('hour'),\r\n accident.injuryTime.get('minute'),\r\n accident.injuryTime.get('second')\r\n );\r\n } else {\r\n accident.injuryDate = value;\r\n }\r\n break;\r\n case inputFieldNames.INJURY_TIME:\r\n if (accident.injuryDate !== null && value !== null) {\r\n const converted = utcToLocal(accident.injuryDate);\r\n let date = new Date(\r\n converted.get('year'),\r\n converted.get('month'),\r\n converted.get('date'),\r\n value.get('hour'),\r\n value.get('minute'),\r\n value.get('second')\r\n );\r\n accident.injuryDate = date;\r\n accident.injuryTime = value;\r\n } else if (accident.injuryDate !== null && value === null) {\r\n const converted = utcToLocal(accident.injuryDate);\r\n let date = new Date(\r\n converted.get('year'),\r\n converted.get('month'),\r\n converted.get('date')\r\n );\r\n accident.injuryDate = date;\r\n accident.injuryTime = value;\r\n } else {\r\n accident.injuryTime = value;\r\n }\r\n break;\r\n case inputFieldNames.INJURY_LOCATION:\r\n accident.injuryLocationId = value;\r\n break;\r\n case inputFieldNames.INJURY_TYPE:\r\n accident.injuryTypeId = value;\r\n break;\r\n case inputFieldNames.INJURY_CAUSE:\r\n accident.injuryCauseId = value;\r\n break;\r\n case inputFieldNames.PERSONNEL:\r\n accident.personnelId = value;\r\n break;\r\n case inputFieldNames.ACCIDENT_ATTACHMENT:\r\n if (!accident.attachmentFiles) {\r\n accident.attachmentFiles = [];\r\n }\r\n accident.attachmentFiles.push(value);\r\n var filteredArray = getUniqueArray(accident.attachmentFiles);\r\n accident.attachmentFiles = filteredArray;\r\n break;\r\n default:\r\n }\r\n\r\n return {\r\n ...state,\r\n newAccident: {\r\n ...state.newAccident,\r\n item: accident\r\n }\r\n };\r\n};\r\n\r\nconst checkAndFindInjuryTime = (time) => {\r\n const convertedTime = utcToLocal(time);\r\n\r\n let secondes = convertedTime.get('second');\r\n\r\n if (secondes > 0) {\r\n return time;\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nconst editAccident = (state, { accident }) => {\r\n return {\r\n ...state,\r\n newAccident: {\r\n ...state.newAccident,\r\n item: {\r\n ...accident,\r\n injuryTime: checkAndFindInjuryTime(accident.injuryDate)\r\n }\r\n }\r\n };\r\n};\r\n\r\nconst showDeleteOrDeactiveAccidentDialog = (\r\n state,\r\n { open, accident, status }\r\n) => {\r\n return {\r\n ...state,\r\n deleteOrDeactivatingAccident: {\r\n ...state.deleteOrDeactivatingAccident,\r\n open,\r\n accident,\r\n status,\r\n errorMessage: ''\r\n }\r\n };\r\n};\r\n\r\nconst startSubmitAccident = (state) => {\r\n return {\r\n ...state,\r\n newAccident: {\r\n ...state.newAccident,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst submitAccidentSuccess = (state, { submittedAccident }) => {\r\n return {\r\n ...state,\r\n accident: {\r\n ...state.accident,\r\n item: submittedAccident\r\n }\r\n };\r\n};\r\n\r\nconst submitAccidentFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n newAccident: {\r\n ...state.newAccident,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst submitAccidentFinished = (state) => {\r\n return {\r\n ...state,\r\n newAccident: {\r\n ...state.newAccident,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst startDeactivateOrDeleteAccident = (state) => {\r\n return {\r\n ...state,\r\n deleteOrDeactivatingAccident: {\r\n ...state.deleteOrDeactivatingAccident,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst deactivateOrDeleteAccidentSuccess = (state) => {\r\n return {\r\n ...state\r\n };\r\n};\r\n\r\nconst deactivateOrDeleteAccidentFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n deleteOrDeactivatingAccident: {\r\n ...state.deleteOrDeactivatingAccident,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst deactivateOrDeleteAccidentFinished = (state) => {\r\n return {\r\n ...state,\r\n deleteOrDeactivatingAccident: {\r\n ...state.deleteOrDeactivatingAccident,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\n//Attachments\r\nconst removeAttachment = (state, { attachment }) => {\r\n let accident = state.newAccident.item;\r\n let remainingAttachements = accident.attachmentFiles.filter(\r\n (item) => item.name !== attachment.name\r\n );\r\n accident.attachmentFiles = remainingAttachements;\r\n return {\r\n ...state,\r\n newAccident: {\r\n ...state.newAccident,\r\n item: accident\r\n }\r\n };\r\n};\r\n\r\nconst startLoadAttachmentsForAccident = (state) => {\r\n return {\r\n ...state,\r\n newAccident: {\r\n ...state.newAccident,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst loadAttachmentsForAccidentSuccess = (state, { attachments }) => {\r\n var attachmentCustomObjets = [];\r\n\r\n for (let index = 0; index < attachments.length; index++) {\r\n const element = {\r\n id: attachments[index].id,\r\n newlyAdded: false,\r\n removed: false,\r\n fileData: null,\r\n name: attachments[index].fileName,\r\n url: attachments[index].url\r\n };\r\n attachmentCustomObjets.push(element);\r\n }\r\n\r\n return {\r\n ...state,\r\n newAccident: {\r\n ...state.newAccident,\r\n item: {\r\n ...state.newAccident.item,\r\n attachmentFiles: attachmentCustomObjets,\r\n existingAttachmentFiles: attachmentCustomObjets\r\n }\r\n }\r\n };\r\n};\r\n\r\nconst loadAttachmentForAccidentFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n newAccident: {\r\n ...state.newAccident,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst loadAttachmentForAccidentFinished = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n newAccident: {\r\n ...state.newAccident,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\n//Handles the incoming actions.\r\nexport default handleActions(\r\n {\r\n [types.OPEN_CREATE_ACCIDENT_DIALOG]: openCreateAccidentDialog,\r\n [types.OPEN_EDIT_ACCIDENT_DIALOG]: openEditAccidentDialog,\r\n\r\n [types.INPUT_CHANGE_CREATE_ACCIDENT_FORM]: inputChangeCreateAccidentForm,\r\n\r\n [types.EDIT_ACCIDENT]: editAccident,\r\n\r\n [types.DEACTIVATE_OR_DELETE_ACCIDENT_DIALOG]: showDeleteOrDeactiveAccidentDialog,\r\n\r\n [types.START_SUBMIT_ACCIDENT]: startSubmitAccident,\r\n [types.SUBMIT_ACCIDENT_SUCCESS]: submitAccidentSuccess,\r\n [types.SUBMIT_ACCIDENT_FAILURE]: submitAccidentFailure,\r\n [types.SUBMIT_ACCIDENT_FINISHED]: submitAccidentFinished,\r\n\r\n [types.START_DEACTIVATE_OR_DELETE_ACCIDENT]: startDeactivateOrDeleteAccident,\r\n [types.DEACTIVATE_OR_DELETE_ACCIDENT_SUCCESS]: deactivateOrDeleteAccidentSuccess,\r\n [types.DEACTIVATE_OR_DELETE_ACCIDENT_FAILURE]: deactivateOrDeleteAccidentFailure,\r\n [types.DEACTIVATE_OR_DELETE_ACCIDENT_FINISHED]: deactivateOrDeleteAccidentFinished,\r\n\r\n [types.START_LOAD_ATTACHMENTS_FOR_ACCIDENT]: startLoadAttachmentsForAccident,\r\n [types.LOAD_ATTACHMENTS_FOR_ACCIDENT_SUCCESS]: loadAttachmentsForAccidentSuccess,\r\n [types.LOAD_ATTACHMENTS_FOR_ACCIDENT_FAILURE]: loadAttachmentForAccidentFailure,\r\n [types.LOAD_ATTACHMENTS_FOR_ACCIDENT_FINISHED]: loadAttachmentForAccidentFinished,\r\n\r\n [types.REMOVE_ACCIDENT_ATTACHMENT]: removeAttachment\r\n },\r\n INITIAL_STATE\r\n);\r\n","import { handleActions } from 'redux-actions';\r\nimport moment from 'moment';\r\n\r\nimport { types, inputFieldNames } from '../constants';\r\nimport { getUniqueArray } from './../utils/attachmentUtils';\r\n\r\nconst INITIAL_STATE = {\r\n newEvent: {\r\n showCreateEventDialog: false,\r\n showEditEventPanel: false,\r\n showEditEventDialog: false,\r\n item: {\r\n lastHeldDateUTC: null,\r\n nextEventDateUTC: null\r\n },\r\n isSaving: false,\r\n errorMessage: ''\r\n },\r\n event: {\r\n item: null,\r\n isLoading: false,\r\n errorMessage: ''\r\n },\r\n newRecord: {\r\n item: {\r\n recordDate: null,\r\n notes: '',\r\n attachmentFiles: [],\r\n existingAttachmentFiles: []\r\n },\r\n isSaving: false,\r\n errorMessage: '',\r\n openAddEventRecordDialog: false\r\n },\r\n recordsForTheEvent: {\r\n items: [],\r\n isLoading: false,\r\n errorMessage: null\r\n },\r\n deleteRecord: {\r\n result: false,\r\n isSaving: false,\r\n errorMessage: null\r\n },\r\n editRecord: {\r\n enable: false,\r\n item: { attachmentFiles: [], existingAttachmentFiles: [] },\r\n isSaving: false,\r\n errorMessage: ''\r\n }\r\n};\r\n\r\nconst openCreateEventDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n newEvent: {\r\n ...state.newEvent,\r\n showCreateEventDialog: open,\r\n item: {\r\n lastHeldDateUTC: null,\r\n nextEventDateUTC: null\r\n }\r\n }\r\n };\r\n};\r\n\r\nconst openEditEventPanel = (state, { open }) => {\r\n return {\r\n ...state,\r\n newEvent: {\r\n ...state.newEvent,\r\n showEditEventPanel: open,\r\n item: {}\r\n }\r\n };\r\n};\r\n\r\nconst openEditEventDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n newEvent: {\r\n ...state.newEvent,\r\n showEditEventDialog: open,\r\n item: {}\r\n }\r\n };\r\n};\r\n\r\nconst inputChangeCreateEventForm = (state, { value, inputFieldName }) => {\r\n const event = { ...state.newEvent.item };\r\n const record = { ...state.newRecord.item };\r\n\r\n switch (inputFieldName) {\r\n case inputFieldNames.DESCRIPTION:\r\n event.description = value;\r\n break;\r\n case inputFieldNames.EVENT_NOTES:\r\n event.notes = value;\r\n break;\r\n case inputFieldNames.FREQUENCY:\r\n event.frequency = Number(value);\r\n break;\r\n case inputFieldNames.EVENT_TYPE:\r\n event.eventTypeId = value;\r\n break;\r\n case inputFieldNames.EVENT_COORDINATOR:\r\n event.eventCoordinator = value;\r\n break;\r\n case inputFieldNames.EVENT_DOCUMENT_NAME:\r\n event.document = value;\r\n break;\r\n // case inputFieldNames.LAST_HELD_DATE:\r\n // event.lastHeldDateUTC = value;\r\n // break;\r\n // case inputFieldNames.NEXT_EVENT_DATE:\r\n // event.nextEventDateUTC = value;\r\n // break;\r\n case inputFieldNames.RECORD_DATE:\r\n var newDate = moment(value).local().format('YYYY-MM-DD');\r\n record.recordDate = newDate;\r\n break;\r\n case inputFieldNames.RECORD_NOTES:\r\n record.notes = value;\r\n break;\r\n case inputFieldNames.EVENT_RECORD_ATTACHMENT:\r\n if (!record.attachmentFiles) {\r\n record.attachmentFiles = [];\r\n }\r\n record.attachmentFiles.push(value);\r\n var filteredArray = getUniqueArray(record.attachmentFiles);\r\n record.attachmentFiles = filteredArray;\r\n break;\r\n default:\r\n }\r\n\r\n return {\r\n ...state,\r\n newEvent: {\r\n ...state.newEvent,\r\n item: event\r\n },\r\n newRecord: {\r\n ...state.newRecord,\r\n item: record\r\n }\r\n };\r\n};\r\n\r\nconst startSubmitEvent = (state) => {\r\n return {\r\n ...state,\r\n newEvent: {\r\n ...state.newEvent,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst submitEventSuccess = (state, { submittedEvent }) => {\r\n return {\r\n ...state,\r\n event: {\r\n ...state.event,\r\n item: submittedEvent\r\n }\r\n };\r\n};\r\n\r\nconst submitEventFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n newEvent: {\r\n ...state.newEvent,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst submitEventFinished = (state) => {\r\n return {\r\n ...state,\r\n newEvent: {\r\n ...state.newEvent,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst editEvent = (state, { event }) => {\r\n return {\r\n ...state,\r\n newEvent: {\r\n ...state.newEvent,\r\n item: event\r\n }\r\n };\r\n};\r\n\r\nconst startFetchRecordsForTheEvent = (state) => {\r\n return {\r\n ...state,\r\n recordsForTheEvent: {\r\n ...state.recordsForTheEvent,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst fetchRecordsForTheEventSuccess = (state, { records }) => {\r\n return {\r\n ...state,\r\n recordsForTheEvent: {\r\n ...state.recordsForTheEvent,\r\n items: records\r\n }\r\n };\r\n};\r\n\r\nconst fetchRecordsForTheEventFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n recordsForTheEvent: {\r\n ...state.recordsForTheEvent,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst fetchRecordsForTheEventFinished = (state) => {\r\n return {\r\n ...state,\r\n recordsForTheEvent: {\r\n ...state.recordsForTheEvent,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\nconst startDeleteEventRecord = (state) => {\r\n return {\r\n ...state,\r\n deleteRecord: {\r\n ...state.deleteRecord,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst deleteEventRecordSuccess = (state, { recordId }) => {\r\n let records = [...state.recordsForTheEvent.items];\r\n let deleteIndex = records.findIndex((r) => r.id === recordId);\r\n\r\n if (deleteIndex !== -1) {\r\n records.splice(deleteIndex, 1);\r\n }\r\n\r\n return {\r\n ...state,\r\n deleteRecord: {\r\n ...state.deleteRecord\r\n },\r\n recordsForTheEvent: {\r\n ...state.recordsForTheEvent,\r\n items: records\r\n }\r\n };\r\n};\r\n\r\nconst deleteEventRecordFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n deleteRecord: {\r\n ...state.deleteRecord,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst deleteEventRecordFinished = (state) => {\r\n return {\r\n ...state,\r\n deleteRecord: {\r\n ...state.deleteRecord,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst startSubmitEventRecord = (state) => {\r\n return {\r\n ...state,\r\n newRecord: {\r\n ...state.newRecord,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst submitEventRecordSuccess = (state) => {\r\n return {\r\n ...state,\r\n newRecord: {\r\n ...state.newRecord,\r\n item: {\r\n recordDate: null,\r\n notes: ''\r\n }\r\n }\r\n };\r\n};\r\n\r\nconst submitEventRecordFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n newRecord: {\r\n ...state.newRecord,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst submitEventRecordFinished = (state) => {\r\n return {\r\n ...state,\r\n newRecord: {\r\n ...state.newRecord,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst enableEditEventRecord = (state, { enableEditRecordMode, recordId }) => {\r\n const record = state.recordsForTheEvent.items.filter(\r\n (r) => r.id === recordId\r\n )[0];\r\n\r\n return {\r\n ...state,\r\n editRecord: {\r\n ...state.editRecord,\r\n enable: enableEditRecordMode,\r\n item: record\r\n }\r\n };\r\n};\r\n\r\nconst inputChangeEditEventRecord = (state, { value, inputFieldName }) => {\r\n const record = { ...state.editRecord.item };\r\n\r\n switch (inputFieldName) {\r\n case inputFieldNames.RECORD_DATE:\r\n var newDate = moment(value).local().format('YYYY-MM-DD');\r\n record.recordDate = newDate;\r\n break;\r\n case inputFieldNames.RECORD_NOTES:\r\n record.notes = value;\r\n break;\r\n case inputFieldNames.EVENT_RECORD_ATTACHMENT:\r\n if (!record.attachmentFiles) {\r\n record.attachmentFiles = [];\r\n }\r\n record.attachmentFiles.push(value);\r\n var filteredArray = getUniqueArray(record.attachmentFiles);\r\n record.attachmentFiles = filteredArray;\r\n break;\r\n default:\r\n }\r\n\r\n return {\r\n ...state,\r\n editRecord: {\r\n ...state.editRecord,\r\n item: record\r\n }\r\n };\r\n};\r\n\r\nconst openAddEventRecordDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n newRecord: {\r\n ...state.newRecord,\r\n openAddEventRecordDialog: open\r\n }\r\n };\r\n};\r\n\r\nconst startLoadAttachmentsForEventRecord = (state) => {\r\n return {\r\n ...state,\r\n editRecord: {\r\n ...state.editRecord,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst loadAttachmentsForEventRecordSuccess = (state, { attachments }) => {\r\n var attachmentCustomObjets = [];\r\n\r\n for (let index = 0; index < attachments.length; index++) {\r\n const element = {\r\n id: attachments[index].id,\r\n newlyAdded: false,\r\n removed: false,\r\n fileData: null,\r\n name: attachments[index].fileName,\r\n url: attachments[index].url\r\n };\r\n attachmentCustomObjets.push(element);\r\n }\r\n\r\n return {\r\n ...state,\r\n editRecord: {\r\n ...state.editRecord,\r\n item: {\r\n ...state.editRecord.item,\r\n attachmentFiles: attachmentCustomObjets,\r\n existingAttachmentFiles: attachmentCustomObjets\r\n }\r\n }\r\n };\r\n};\r\n\r\nconst loadAttachmentForEventRecordFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n editRecord: {\r\n ...state.editRecord,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst loadAttachmentForEventRecordFinished = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n editRecord: {\r\n ...state.editRecord,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst removeAttachment = (state, { attachment }) => {\r\n let record = state.newRecord.item;\r\n let remainingAttachements = record.attachmentFiles.filter(\r\n (item) => item.name !== attachment.name\r\n );\r\n record.attachmentFiles = remainingAttachements;\r\n return {\r\n ...state,\r\n newRecord: {\r\n ...state.newRecord,\r\n item: record\r\n }\r\n };\r\n};\r\n\r\nconst removeAttachmentFromEditRecordMode = (state, { attachment }) => {\r\n let record = state.editRecord.item;\r\n let remainingAttachements = record.attachmentFiles.filter(\r\n (item) => item.name !== attachment.name\r\n );\r\n record.attachmentFiles = remainingAttachements;\r\n return {\r\n ...state,\r\n editRecord: {\r\n ...state.editRecord,\r\n item: record\r\n }\r\n };\r\n};\r\n\r\n//Handles the incoming actions.\r\nexport default handleActions(\r\n {\r\n [types.OPEN_CREATE_EVENT_DIALOG]: openCreateEventDialog,\r\n [types.OPEN_EDIT_EVENT_PANEL]: openEditEventPanel,\r\n [types.OPEN_EDIT_EVENT_DIALOG]: openEditEventDialog,\r\n [types.INPUT_CHANGE_CREATE_EVENT_FORM]: inputChangeCreateEventForm,\r\n\r\n [types.START_SUBMIT_EVENT]: startSubmitEvent,\r\n [types.SUBMIT_EVENT_SUCCESS]: submitEventSuccess,\r\n [types.SUBMIT_EVENT_FAILURE]: submitEventFailure,\r\n [types.SUBMIT_EVENT_FINISHED]: submitEventFinished,\r\n\r\n [types.EDIT_EVENT]: editEvent,\r\n\r\n [types.START_FETCH_RECORDS_FOR_THE_EVENT]: startFetchRecordsForTheEvent,\r\n [types.FETCH_RECORDS_FOR_THE_EVENT_SUCCESS]: fetchRecordsForTheEventSuccess,\r\n [types.FETCH_RECORDS_FOR_THE_EVENT_FAILURE]: fetchRecordsForTheEventFailure,\r\n [types.FETCH_RECORDS_FOR_THE_EVENT_FINISHED]: fetchRecordsForTheEventFinished,\r\n\r\n [types.START_DELETE_EVENT_RECORD]: startDeleteEventRecord,\r\n [types.DELETE_EVENT_RECORD_SUCCESS]: deleteEventRecordSuccess,\r\n [types.DELETE_EVENT_RECORD_FAILURE]: deleteEventRecordFailure,\r\n [types.DELETE_EVENT_RECORD_FINISHED]: deleteEventRecordFinished,\r\n\r\n [types.START_SUBMIT_EVENT_RECORD]: startSubmitEventRecord,\r\n [types.SUBMIT_EVENT_RECORD_SUCCESS]: submitEventRecordSuccess,\r\n [types.SUBMIT_EVENT_RECORD_FAILURE]: submitEventRecordFailure,\r\n [types.SUBMIT_EVENT_RECORD_FINISHED]: submitEventRecordFinished,\r\n\r\n [types.ENABLE_EDIT_EVENT_RECORD]: enableEditEventRecord,\r\n\r\n [types.INPUT_CHANGE_EDIT_EVENT_RECORD]: inputChangeEditEventRecord,\r\n\r\n [types.OPEN_ADD_EVENT_RECORD_DIALOG]: openAddEventRecordDialog,\r\n\r\n //Event Record Attachement\r\n [types.START_LOAD_ATTACHMENTS_FOR_EVENT_RECORD]: startLoadAttachmentsForEventRecord,\r\n [types.LOAD_ATTACHMENTS_FOR_EVENT_RECORD_SUCCESS]: loadAttachmentsForEventRecordSuccess,\r\n [types.LOAD_ATTACHMENTS_FOR_EVENT_RECORD_FAILURE]: loadAttachmentForEventRecordFailure,\r\n [types.LOAD_ATTACHMENTS_FOR_EVENT_RECORD_FINISHED]: loadAttachmentForEventRecordFinished,\r\n\r\n [types.REMOVE_EVENT_RECORD_ATTACHMENT]: removeAttachment,\r\n\r\n [types.REMOVE_EVENT_RECORD_ATTACHMENT_EDIT]: removeAttachmentFromEditRecordMode\r\n },\r\n INITIAL_STATE\r\n);\r\n","import { handleActions } from 'redux-actions';\r\nimport { types } from '../constants';\r\n\r\nconst INITIAL_STATE = {\r\n eventsByBranch: {\r\n items: [],\r\n itemsCopy: [],\r\n isLoading: false,\r\n errorMessage: '',\r\n searchTerm: ''\r\n },\r\n eventsByCompany: {\r\n items: [],\r\n isLoading: false,\r\n errorMessage: ''\r\n },\r\n deleteEvent: {\r\n openDialog: false,\r\n event: null,\r\n isSaving: false,\r\n errorMessage: false\r\n }\r\n};\r\n\r\nconst startDeleteEvent = (state) => {\r\n return {\r\n ...state,\r\n deleteEvent: {\r\n ...state.deleteEvent,\r\n isSaving: true\r\n }\r\n };\r\n};\r\nconst deleteEventSuccess = (state, { eventId }) => {\r\n var eventsByBranch = state.eventsByBranch.items;\r\n var filteredEvents = eventsByBranch.filter((event) => event.id !== eventId);\r\n\r\n return {\r\n ...state,\r\n deleteEvent: {\r\n ...state.deleteEvent\r\n },\r\n eventsByBranch: {\r\n ...state.eventsByBranch,\r\n items: filteredEvents\r\n }\r\n };\r\n};\r\nconst deleteEventFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n deleteEvent: {\r\n ...state.deleteEvent,\r\n errorMessage\r\n }\r\n };\r\n};\r\nconst deleteEventFinished = (state) => {\r\n return {\r\n ...state,\r\n deleteEvent: {\r\n ...state.deleteEvent,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst startFetchAllEventsForBranch = (state) => {\r\n return {\r\n ...state,\r\n eventsByBranch: {\r\n ...state.eventsByBranch,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllEventsForBranchSuccess = (state, { events }) => {\r\n return {\r\n ...state,\r\n eventsByBranch: {\r\n ...state.eventsByBranch,\r\n items: events,\r\n itemsCopy: events\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllEventsForBranchFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n eventsByBranch: {\r\n ...state.eventsByBranch,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllEventsForBranchFinished = (state) => {\r\n return {\r\n ...state,\r\n eventsByBranch: {\r\n ...state.eventsByBranch,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\nconst changeSearchTermAllEvents = (state, { searchTerm }) => {\r\n let events = [...state.eventsByBranch.itemsCopy];\r\n\r\n let filteredEvents = events.filter(\r\n (e) => e.description && e.description.toLowerCase().includes(searchTerm)\r\n );\r\n\r\n return {\r\n ...state,\r\n eventsByBranch: {\r\n ...state.eventsByBranch,\r\n searchTerm,\r\n items: filteredEvents\r\n }\r\n };\r\n};\r\n\r\nconst submitEventSuccess = (state, { submittedEvent }) => {\r\n let events = [...state.eventsByBranch.items];\r\n let updatedEventIndex = events.findIndex((a) => a.id === submittedEvent.id);\r\n\r\n //Means updated\r\n if (updatedEventIndex !== -1) {\r\n events[updatedEventIndex] = submittedEvent;\r\n } else {\r\n events = [...events, submittedEvent];\r\n }\r\n\r\n return {\r\n ...state,\r\n eventsByBranch: {\r\n ...state.eventssByBranch,\r\n items: events,\r\n itemsCopy: events\r\n }\r\n };\r\n};\r\n\r\nconst openDeleteEventDialog = (state, { open, event }) => {\r\n return {\r\n ...state,\r\n deleteEvent: {\r\n ...state.deleteEvent,\r\n openDialog: open,\r\n event: open === true ? event : null\r\n }\r\n };\r\n};\r\n\r\nconst startFetchAllEventsForCompany = (state) => {\r\n return {\r\n ...state,\r\n eventsByCompany: {\r\n ...state.eventsByCompany,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllEventsForCompanySuccess = (state, { events }) => {\r\n return {\r\n ...state,\r\n eventsByCompany: {\r\n ...state.eventsByCompany,\r\n items: events,\r\n itemsCopy: events\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllEventsForCompanyFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n eventsByCompany: {\r\n ...state.eventsByCompany,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllEventsForCompanyFinished = (state) => {\r\n return {\r\n ...state,\r\n eventsByCompany: {\r\n ...state.eventsByCompany,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\n//Handles the incoming actions.\r\nexport default handleActions(\r\n {\r\n [types.START_FETCH_ALL_EVENTS_FOR_BRANCH]: startFetchAllEventsForBranch,\r\n [types.FETCH_ALL_EVENTS_FOR_BRANCH_SUCCESS]: fetchAllEventsForBranchSuccess,\r\n [types.FETCH_ALL_EVENTS_FOR_BRANCH_FAILURE]: fetchAllEventsForBranchFailure,\r\n [types.FETCH_ALL_EVENTS_FOR_BRANCH_FINISHED]: fetchAllEventsForBranchFinished,\r\n\r\n [types.START_FETCH_ALL_EVENTS_FOR_COMPANY]: startFetchAllEventsForCompany,\r\n [types.FETCH_ALL_EVENTS_FOR_COMPANY_SUCCESS]: fetchAllEventsForCompanySuccess,\r\n [types.FETCH_ALL_EVENTS_FOR_COMPANY_FAILURE]: fetchAllEventsForCompanyFailure,\r\n [types.FETCH_ALL_EVENTS_FOR_COMPANY_FINISHED]: fetchAllEventsForCompanyFinished,\r\n\r\n [types.CHANGE_SEARCH_TERM_ALL_EVENTS]: changeSearchTermAllEvents,\r\n\r\n [types.SUBMIT_EVENT_SUCCESS]: submitEventSuccess,\r\n\r\n [types.OPEN_DELETE_EVENT_DIALOG]: openDeleteEventDialog,\r\n\r\n [types.START_DELETE_EVENT]: startDeleteEvent,\r\n [types.DELETE_EVENT_SUCCESS]: deleteEventSuccess,\r\n [types.DELETE_EVENT_FAILURE]: deleteEventFailure,\r\n [types.DELETE_EVENT_FINISHED]: deleteEventFinished\r\n },\r\n INITIAL_STATE\r\n);\r\n","import { handleActions } from 'redux-actions';\r\nimport moment from 'moment';\r\n\r\nimport { types, inputFieldNames } from '../constants';\r\nimport { getUniqueArray } from './../utils/attachmentUtils';\r\n\r\nconst INITIAL_STATE = {\r\n newHazard: {\r\n showCreateHazardDialog: false,\r\n showEditHazardPanel: false,\r\n showEditHazardDialog: false,\r\n showHazardReviewPanel: false,\r\n showHazardManagementLogPanel: false,\r\n item: {\r\n lastHeldDateUTC: null,\r\n nextHazardDateUTC: null,\r\n attachmentFiles: [],\r\n existingAttachmentFiles: []\r\n },\r\n isSaving: false,\r\n errorMessage: ''\r\n },\r\n hazard: {\r\n item: null,\r\n isLoading: false,\r\n errorMessage: ''\r\n },\r\n newControl: {\r\n item: {\r\n comments: '',\r\n attachmentFiles: [],\r\n existingAttachmentFiles: []\r\n },\r\n isSaving: false,\r\n errorMessage: '',\r\n openAddHazardControlDialog: false\r\n },\r\n controlsForTheHazard: {\r\n items: [],\r\n isLoading: false,\r\n errorMessage: null\r\n },\r\n deleteControl: {\r\n item: {},\r\n result: false,\r\n isSaving: false,\r\n errorMessage: null,\r\n showDeleteHazardControlDialog: false\r\n },\r\n editControl: {\r\n enable: false,\r\n item: null,\r\n isSaving: false,\r\n errorMessage: '',\r\n attachmentFiles: [],\r\n existingAttachmentFiles: []\r\n },\r\n reviewsForTheHazard: {\r\n items: [],\r\n isLoading: false,\r\n errorMessage: null\r\n },\r\n newReview: {\r\n item: {\r\n description: '',\r\n attachmentFiles: [],\r\n existingAttachmentFiles: []\r\n },\r\n isSaving: false,\r\n errorMessage: '',\r\n openAddHazardReviewDialog: false\r\n },\r\n editReview: {\r\n enable: false,\r\n item: null,\r\n isSaving: false,\r\n errorMessage: '',\r\n openDeleteHazardReviewDialog: false,\r\n attachmentFiles: [],\r\n existingAttachmentFiles: []\r\n },\r\n toBeDeleteReview: {\r\n item: {},\r\n isSaving: false,\r\n errorMessage: '',\r\n showDeleteHazardReviewDialog: false\r\n },\r\n managementLogsForTheHazard: {\r\n items: [],\r\n isLoading: false,\r\n errorMessage: null\r\n },\r\n newManagementLog: {\r\n item: {\r\n description: '',\r\n attachmentFiles: [],\r\n existingAttachmentFiles: []\r\n },\r\n isSaving: false,\r\n errorMessage: '',\r\n openAddHazardManagementDialog: false\r\n },\r\n editManagementLog: {\r\n enable: false,\r\n item: null,\r\n isSaving: false,\r\n errorMessage: '',\r\n openDeleteHazardManagementDialog: false,\r\n attachmentFiles: [],\r\n existingAttachmentFiles: []\r\n },\r\n toBeDeleteManagementLog: {\r\n item: {},\r\n isSaving: false,\r\n errorMessage: '',\r\n showDeleteHazardManagementLogDialog: false\r\n }\r\n};\r\n\r\nconst openCreateHazardDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n newHazard: {\r\n ...state.newHazard,\r\n showCreateHazardDialog: open,\r\n item: {\r\n lastHeldDateUTC: null,\r\n nextHazardDateUTC: null\r\n }\r\n }\r\n };\r\n};\r\n\r\nconst openEditHazardPanel = (state, { open }) => {\r\n return {\r\n ...state,\r\n newHazard: {\r\n ...state.newHazard,\r\n showEditHazardPanel: open,\r\n item: {}\r\n }\r\n };\r\n};\r\n\r\nconst openEditHazardDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n newHazard: {\r\n ...state.newHazard,\r\n showEditHazardDialog: open,\r\n item: {}\r\n }\r\n };\r\n};\r\n\r\nconst inputChangeCreateHazardForm = (state, { value, inputFieldName }) => {\r\n const hazard = { ...state.newHazard.item };\r\n const control = { ...state.newControl.item };\r\n\r\n switch (inputFieldName) {\r\n case inputFieldNames.DESCRIPTION:\r\n hazard.description = value;\r\n break;\r\n case inputFieldNames.FREQUENCY:\r\n hazard.reviewFrequency = Number(value);\r\n break;\r\n case inputFieldNames.INITIAL_RISK_LIKELIHOOD:\r\n hazard.initialRiskLikelihood = Number(value);\r\n break;\r\n case inputFieldNames.INITIAL_RISK_CONSEQUENCE:\r\n hazard.initialRiskConsequence = Number(value);\r\n break;\r\n case inputFieldNames.INITIAL_SCORE:\r\n hazard.initialScore = Number(value);\r\n break;\r\n case inputFieldNames.FINAL_RISK_LIKELIHOOD:\r\n hazard.finalRiskLikelihood = Number(value);\r\n break;\r\n case inputFieldNames.FINAL_RISK_CONSEQUENCE:\r\n hazard.finalRiskConsequence = Number(value);\r\n break;\r\n case inputFieldNames.FINAL_SCORE:\r\n hazard.finalScore = Number(value);\r\n break;\r\n case inputFieldNames.NEXT_REVIEW_DATE:\r\n var newDate = moment(value).local().format('YYYY-MM-DD');\r\n hazard.nextReviewDate = newDate;\r\n break;\r\n case inputFieldNames.CONTROL_HIERARCHY:\r\n control.hierarchy = value;\r\n break;\r\n case inputFieldNames.CONTROL_COMMENTS:\r\n control.comments = value;\r\n break;\r\n case inputFieldNames.HAZARD_STATUS:\r\n hazard.status = value;\r\n break;\r\n case inputFieldNames.HAZARD_DOCUMENT:\r\n hazard.document = value;\r\n break;\r\n case inputFieldNames.HAZARD_ATTACHMENT:\r\n if (!hazard.attachmentFiles) {\r\n hazard.attachmentFiles = [];\r\n }\r\n hazard.attachmentFiles.push(value);\r\n var filteredArray = uniqueArray(hazard.attachmentFiles);\r\n hazard.attachmentFiles = filteredArray;\r\n break;\r\n case inputFieldNames.HAZARD_CONTROL_DOCUMENT:\r\n control.document = value;\r\n break;\r\n case inputFieldNames.HAZARD_CONTROL_ATTACHMENT:\r\n if (!control.attachmentFiles) {\r\n control.attachmentFiles = [];\r\n }\r\n control.attachmentFiles.push(value);\r\n var filteredArray = getUniqueArray(control.attachmentFiles);\r\n control.attachmentFiles = filteredArray;\r\n break;\r\n case inputFieldNames.HAZARD_DEPARTMENT:\r\n hazard.department = value;\r\n default:\r\n break;\r\n }\r\n\r\n return {\r\n ...state,\r\n newHazard: {\r\n ...state.newHazard,\r\n item: hazard\r\n },\r\n newControl: {\r\n ...state.newControl,\r\n item: control\r\n }\r\n };\r\n};\r\n\r\nconst startSubmitHazard = (state) => {\r\n return {\r\n ...state,\r\n newHazard: {\r\n ...state.newHazard,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst submitHazardSuccess = (state, { submittedHazard }) => {\r\n return {\r\n ...state,\r\n hazard: {\r\n ...state.hazard,\r\n item: submittedHazard\r\n }\r\n };\r\n};\r\n\r\nconst submitHazardFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n newHazard: {\r\n ...state.newHazard,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst submitHazardFinished = (state) => {\r\n return {\r\n ...state,\r\n newHazard: {\r\n ...state.newHazard,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst editHazard = (state, { hazard }) => {\r\n return {\r\n ...state,\r\n newHazard: {\r\n ...state.newHazard,\r\n item: hazard\r\n }\r\n };\r\n};\r\n\r\nconst startFetchControlsForTheHazard = (state) => {\r\n return {\r\n ...state,\r\n controlsForTheHazard: {\r\n ...state.controlsForTheHazard,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst fetchControlsForTheHazardSuccess = (state, { controls }) => {\r\n return {\r\n ...state,\r\n controlsForTheHazard: {\r\n ...state.controlsForTheHazard,\r\n items: controls\r\n }\r\n };\r\n};\r\n\r\nconst fetchControlsForTheHazardFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n controlsForTheHazard: {\r\n ...state.controlsForTheHazard,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst fetchControlsForTheHazardFinished = (state) => {\r\n return {\r\n ...state,\r\n controlsForTheHazard: {\r\n ...state.controlsForTheHazard,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\nconst openHazardControlDeleteDialog = (state, { open, controlId }) => {\r\n const toDeleteControl = state.controlsForTheHazard.items.filter(\r\n (r) => r.id === controlId\r\n )[0];\r\n const error = open ? state.deleteControl.errorMessage : '';\r\n return {\r\n ...state,\r\n deleteControl: {\r\n ...state.deleteControl,\r\n item: toDeleteControl,\r\n showDeleteHazardControlDialog: open,\r\n errorMessage: error\r\n }\r\n };\r\n};\r\n\r\nconst startDeleteHazardControl = (state) => {\r\n return {\r\n ...state,\r\n deleteControl: {\r\n ...state.deleteControl,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst deleteHazardControlSuccess = (state, { controlId }) => {\r\n let controls = [...state.controlsForTheHazard.items];\r\n let deleteIndex = controls.findIndex((r) => r.id === controlId);\r\n\r\n if (deleteIndex !== -1) {\r\n controls.splice(deleteIndex, 1);\r\n }\r\n\r\n return {\r\n ...state,\r\n deleteControl: {\r\n ...state.deleteControl\r\n },\r\n controlsForTheHazard: {\r\n ...state.controlsForTheHazard,\r\n items: controls\r\n }\r\n };\r\n};\r\n\r\nconst deleteHazardControlFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n deleteControl: {\r\n ...state.deleteControl,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst deleteHazardControlFinished = (state) => {\r\n return {\r\n ...state,\r\n deleteControl: {\r\n ...state.deleteControl,\r\n item: {},\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst startSubmitHazardControl = (state) => {\r\n return {\r\n ...state,\r\n newControl: {\r\n ...state.newControl,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst submitHazardControlSuccess = (state) => {\r\n return {\r\n ...state,\r\n newControl: {\r\n ...state.newControl,\r\n item: {\r\n comments: ''\r\n }\r\n }\r\n };\r\n};\r\n\r\nconst submitHazardControlFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n newControl: {\r\n ...state.newControl,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst submitHazardControlFinished = (state) => {\r\n return {\r\n ...state,\r\n newControl: {\r\n ...state.newControl,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst enableEditHazardControl = (\r\n state,\r\n { enableEditControlMode, controlId }\r\n) => {\r\n const control = state.controlsForTheHazard.items.filter(\r\n (r) => r.id === controlId\r\n )[0];\r\n\r\n return {\r\n ...state,\r\n editControl: {\r\n ...state.editControl,\r\n enable: enableEditControlMode,\r\n item: control\r\n }\r\n };\r\n};\r\n\r\nconst inputChangeEditHazardControl = (state, { value, inputFieldName }) => {\r\n const control = { ...state.editControl.item };\r\n\r\n\r\n switch (inputFieldName) {\r\n case inputFieldNames.CONTROL_COMMENTS:\r\n control.comments = value;\r\n break;\r\n case inputFieldNames.CONTROL_NOTES:\r\n control.notes = value;\r\n break;\r\n case inputFieldNames.CONTROL_HIERARCHY:\r\n control.hierarchy = value;\r\n break;\r\n case inputFieldNames.HAZARD_CONTROL_DOCUMENT:\r\n control.document = value;\r\n break;\r\n default:\r\n }\r\n\r\n return {\r\n ...state,\r\n editControl: {\r\n ...state.editControl,\r\n item: control\r\n }\r\n };\r\n};\r\n\r\nconst openAddHazardControlDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n newControl: {\r\n ...state.newControl,\r\n openAddHazardControlDialog: open\r\n }\r\n };\r\n};\r\n\r\n//HAZARD REVIEW\r\n\r\nconst openHazardReviewPanel = (state, { open }) => {\r\n return {\r\n ...state,\r\n newHazard: {\r\n ...state.newHazard,\r\n showHazardReviewPanel: open,\r\n item: {}\r\n }\r\n };\r\n};\r\n\r\nconst startFetchReviewsForTheHazard = (state) => {\r\n return {\r\n ...state,\r\n reviewsForTheHazard: {\r\n ...state.reviewsForTheHazard,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst fetchReviewsForTheHazardSuccess = (state, { reviews }) => {\r\n return {\r\n ...state,\r\n reviewsForTheHazard: {\r\n ...state.reviewsForTheHazard,\r\n items: reviews\r\n }\r\n };\r\n};\r\n\r\nconst fetchReviewsForTheHazardFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n reviewsForTheHazard: {\r\n ...state.reviewsForTheHazard,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst fetchReviewsForTheHazardFinished = (state) => {\r\n return {\r\n ...state,\r\n reviewsForTheHazard: {\r\n ...state.reviewsForTheHazard,\r\n isLoading: false\r\n },\r\n toBeDeleteReview: {\r\n...state.toBeDeleteReview,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst startSubmitHazardReview = (state) => {\r\n return {\r\n ...state,\r\n newReview: {\r\n ...state.newReview,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst submitHazardReviewSuccess = (state, { createdReview }) => {\r\n return {\r\n ...state,\r\n newReview: {\r\n ...state.newReview,\r\n item: {\r\n description: ''\r\n }\r\n }\r\n };\r\n};\r\n\r\nconst submitHazardReviewFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n newReview: {\r\n ...state.newReview,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst submitHazardReviewFinished = (state) => {\r\n return {\r\n ...state,\r\n newReview: {\r\n ...state.newReview,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst enableEditHazardReview = (state, { enableEditReviewMode, reviewId }) => {\r\n const review = state.reviewsForTheHazard.items.filter(\r\n (r) => r.id === reviewId\r\n )[0];\r\n\r\n return {\r\n ...state,\r\n editReview: {\r\n ...state.editReview,\r\n enable: enableEditReviewMode,\r\n item: review\r\n }\r\n };\r\n};\r\n\r\nconst openAddHazardReviewDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n newReview: {\r\n ...state.newReview,\r\n openAddHazardReviewDialog: open,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst inputChangeAddHazardReview = (state, { value, inputFieldName }) => {\r\n const review = { ...state.newReview.item };\r\n\r\n switch (inputFieldName) {\r\n case inputFieldNames.REVIEW_DESCRIPION:\r\n review.description = value;\r\n break;\r\n case inputFieldNames.REVIEW_REVIEW_DATE:\r\n review.reviewDate = value;\r\n break;\r\n case inputFieldNames.HAZARD_REVIEW_ATTACHMENT:\r\n if (!review.attachmentFiles) {\r\n review.attachmentFiles = [];\r\n }\r\n review.attachmentFiles.push(value);\r\n var filteredArray = getUniqueArray(review.attachmentFiles);\r\n review.attachmentFiles = filteredArray;\r\n break;\r\n default:\r\n }\r\n return {\r\n ...state,\r\n newReview: {\r\n ...state.newReview,\r\n item: review\r\n }\r\n };\r\n};\r\n\r\nconst inputChangeEditHazardReview = (state, { value, inputFieldName }) => {\r\n const review = { ...state.editReview.item };\r\n\r\n switch (inputFieldName) {\r\n case inputFieldNames.REVIEW_DESCRIPION:\r\n review.description = value;\r\n break;\r\n case inputFieldNames.REVIEW_REVIEW_DATE:\r\n review.reviewDate = value;\r\n break;\r\n case inputFieldNames.HAZARD_REVIEW_ATTACHMENT:\r\n if (!review.attachmentFiles) {\r\n review.attachmentFiles = [];\r\n }\r\n review.attachmentFiles.push(value);\r\n var filteredArray = getUniqueArray(review.attachmentFiles);\r\n review.attachmentFiles = filteredArray;\r\n break;\r\n default:\r\n }\r\n return {\r\n ...state,\r\n editReview: {\r\n ...state.editReview,\r\n item: review\r\n }\r\n };\r\n};\r\n\r\nconst openDeleteHazardReviewDialog = (state, { open, reviewId }) => {\r\n const review =\r\n open === true\r\n ? state.reviewsForTheHazard.items.filter((r) => r.id === reviewId)[0]\r\n : {};\r\n return {\r\n ...state,\r\n toBeDeleteReview: {\r\n ...state.toBeDeleteReview,\r\n item: review,\r\n showDeleteHazardReviewDialog: open\r\n }\r\n };\r\n};\r\n\r\n//Hazard Management Logs\r\n\r\nconst openHazardManagementLogPanel = (state, { open }) => {\r\n return {\r\n ...state,\r\n newHazard: {\r\n ...state.newHazard,\r\n showHazardManagementLogPanel: open,\r\n item: {}\r\n }\r\n };\r\n};\r\n\r\nconst startFetchManagementLogsForTheHazard = (state) => {\r\n return {\r\n ...state,\r\n managementLogsForTheHazard: {\r\n ...state.managementLogsForTheHazard,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst fetchManagementLogsForTheHazardSuccess = (state, { managementLogs }) => {\r\n return {\r\n ...state,\r\n managementLogsForTheHazard: {\r\n ...state.managementLogsForTheHazard,\r\n items: managementLogs\r\n }\r\n };\r\n};\r\n\r\nconst fetchManagementLogsForTheHazardFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n managementLogsForTheHazard: {\r\n ...state.managementLogsForTheHazard,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst fetchManagementLogsForTheHazardFinished = (state) => {\r\n return {\r\n ...state,\r\n managementLogsForTheHazard: {\r\n ...state.managementLogsForTheHazard,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\nconst startSubmitHazardManagementLog = (state) => {\r\n return {\r\n ...state,\r\n newManagementLog: {\r\n ...state.newManagementLog,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst submitHazardManagementLogSuccess = (state, { createdManagementLog }) => {\r\n return {\r\n ...state,\r\n newManagementLog: {\r\n ...state.newManagementLog,\r\n item: {\r\n description: ''\r\n }\r\n }\r\n };\r\n};\r\n\r\nconst submitHazardManagementLogFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n newManagementLog: {\r\n ...state.newManagementLog,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst submitHazardManagementLogFinished = (state) => {\r\n return {\r\n ...state,\r\n newManagementLog: {\r\n ...state.newManagementLog,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst enableHazardManagementLog = (\r\n state,\r\n { enableEditManagmentLogMode, managementLogId }\r\n) => {\r\n const managementLog = state.managementLogsForTheHazard.items.filter(\r\n (r) => r.id === managementLogId\r\n )[0];\r\n return {\r\n ...state,\r\n editManagementLog: {\r\n ...state.editManagementLog,\r\n enable: enableEditManagmentLogMode,\r\n item: managementLog\r\n }\r\n };\r\n};\r\n\r\nconst openAddHazardManagementLogDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n newManagementLog: {\r\n ...state.newManagementLog,\r\n openAddHazardManagementDialog: open,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst inputChangeAddHazardManagementLog = (\r\n state,\r\n { value, inputFieldName }\r\n) => {\r\n const managementLog = { ...state.newManagementLog.item };\r\n\r\n switch (inputFieldName) {\r\n case inputFieldNames.LOG_DESCRIPION:\r\n managementLog.description = value;\r\n break;\r\n case inputFieldNames.LOG_DATE:\r\n managementLog.logDate = value;\r\n break;\r\n case inputFieldNames.HAZARD_MANAGEMENT_LOGS_ATTACHMENT:\r\n if (!managementLog.attachmentFiles) {\r\n managementLog.attachmentFiles = [];\r\n }\r\n managementLog.attachmentFiles.push(value);\r\n var filteredArray = getUniqueArray(managementLog.attachmentFiles);\r\n managementLog.attachmentFiles = filteredArray;\r\n break;\r\n default:\r\n }\r\n return {\r\n ...state,\r\n newManagementLog: {\r\n ...state.newManagementLog,\r\n item: managementLog\r\n }\r\n };\r\n};\r\n\r\nconst inputChangeEditHazardManagementLog = (\r\n state,\r\n { value, inputFieldName }\r\n) => {\r\n const managementLog = { ...state.editManagementLog.item };\r\n\r\n switch (inputFieldName) {\r\n case inputFieldNames.LOG_DESCRIPION:\r\n managementLog.description = value;\r\n break;\r\n case inputFieldNames.LOG_DATE:\r\n managementLog.logDate = value;\r\n break;\r\n case inputFieldNames.HAZARD_MANAGEMENT_LOGS_ATTACHMENT:\r\n if (!managementLog.attachmentFiles) {\r\n managementLog.attachmentFiles = [];\r\n }\r\n managementLog.attachmentFiles.push(value);\r\n var filteredArray = getUniqueArray(managementLog.attachmentFiles);\r\n managementLog.attachmentFiles = filteredArray;\r\n break;\r\n default:\r\n }\r\n return {\r\n ...state,\r\n editManagementLog: {\r\n ...state.editManagementLog,\r\n item: managementLog\r\n }\r\n };\r\n};\r\n\r\nconst openDeleteHazardManagementLogDialog = (\r\n state,\r\n { open, managementLogId }\r\n) => {\r\n const managementLog =\r\n open === true\r\n ? state.managementLogsForTheHazard.items.filter(\r\n (r) => r.id === managementLogId\r\n )[0]\r\n : {};\r\n return {\r\n ...state,\r\n toBeDeleteManagementLog: {\r\n ...state.toBeDeleteManagementLog,\r\n item: managementLog,\r\n showDeleteHazardManagementLogDialog: open\r\n }\r\n };\r\n};\r\n\r\n//Attachments\r\nconst removeAttachment = (state, { attachment }) => {\r\n let hazard = state.newHazard.item;\r\n let remainingAttachements = hazard.attachmentFiles.filter(\r\n (item) => item.name !== attachment.name\r\n );\r\n hazard.attachmentFiles = remainingAttachements;\r\n return {\r\n ...state,\r\n newHazard: {\r\n ...state.newHazard,\r\n item: hazard\r\n }\r\n };\r\n};\r\n\r\nconst startLoadAttachmentsForHazard = (state) => {\r\n return {\r\n ...state,\r\n newHazard: {\r\n ...state.newHazard,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst loadAttachmentsForHazardSuccess = (state, { attachments }) => {\r\n var attachmentCustomObjets = [];\r\n\r\n for (let index = 0; index < attachments.length; index++) {\r\n const element = {\r\n id: attachments[index].id,\r\n newlyAdded: false,\r\n removed: false,\r\n fileData: null,\r\n name: attachments[index].fileName,\r\n url: attachments[index].url\r\n };\r\n attachmentCustomObjets.push(element);\r\n }\r\n\r\n return {\r\n ...state,\r\n newHazard: {\r\n ...state.newHazard,\r\n item: {\r\n ...state.newHazard.item,\r\n attachmentFiles: attachmentCustomObjets,\r\n existingAttachmentFiles: attachmentCustomObjets\r\n }\r\n }\r\n };\r\n};\r\n\r\nconst loadAttachmentForHazardFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n newHazard: {\r\n ...state.newHazard,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst loadAttachmentForHazardFinished = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n newHazard: {\r\n ...state.newHazard,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\n//Review Attachment\r\nconst startLoadAttachmentsForHazardReview = (state) => {\r\n return {\r\n ...state,\r\n editReview: {\r\n ...state.editReview,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst loadAttachmentsForHazardReviewSuccess = (state, { attachments }) => {\r\n var attachmentCustomObjets = [];\r\n\r\n for (let index = 0; index < attachments.length; index++) {\r\n const element = {\r\n id: attachments[index].id,\r\n newlyAdded: false,\r\n removed: false,\r\n fileData: null,\r\n name: attachments[index].fileName,\r\n url: attachments[index].url\r\n };\r\n attachmentCustomObjets.push(element);\r\n }\r\n\r\n return {\r\n ...state,\r\n editReview: {\r\n ...state.editReview,\r\n item: {\r\n ...state.editReview.item,\r\n attachmentFiles: attachmentCustomObjets,\r\n existingAttachmentFiles: attachmentCustomObjets\r\n }\r\n }\r\n };\r\n};\r\n\r\nconst loadAttachmentForHazardReviewFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n editReview: {\r\n ...state.editReview,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst loadAttachmentForHazardReviewFinished = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n editReview: {\r\n ...state.editReview,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst removeReviewAttachment = (state, { attachment }) => {\r\n let review = state.newReview.item;\r\n let remainingAttachements = review.attachmentFiles.filter(\r\n (item) => item.name !== attachment.name\r\n );\r\n review.attachmentFiles = remainingAttachements;\r\n return {\r\n ...state,\r\n newReview: {\r\n ...state.newReview,\r\n item: review\r\n }\r\n };\r\n};\r\n\r\nconst removeAttachmentFromEditReviewMode = (state, { attachment }) => {\r\n let review = state.editReview.item;\r\n let remainingAttachements = review.attachmentFiles.filter(\r\n (item) => item.name !== attachment.name\r\n );\r\n review.attachmentFiles = remainingAttachements;\r\n return {\r\n ...state,\r\n editReview: {\r\n ...state.editReview,\r\n item: review\r\n }\r\n };\r\n};\r\n\r\n//Attachment Management Logs\r\nconst startLoadAttachmentsForManagementLogs = (state) => {\r\n return {\r\n ...state,\r\n editManagementLog: {\r\n ...state.editManagementLog,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst loadAttachmentsForManagementLogsSuccess = (state, { attachments }) => {\r\n var attachmentCustomObjets = [];\r\n\r\n for (let index = 0; index < attachments.length; index++) {\r\n const element = {\r\n id: attachments[index].id,\r\n newlyAdded: false,\r\n removed: false,\r\n fileData: null,\r\n name: attachments[index].fileName,\r\n url: attachments[index].url\r\n };\r\n attachmentCustomObjets.push(element);\r\n }\r\n\r\n return {\r\n ...state,\r\n editManagementLog: {\r\n ...state.editManagementLog,\r\n item: {\r\n ...state.editManagementLog.item,\r\n attachmentFiles: attachmentCustomObjets,\r\n existingAttachmentFiles: attachmentCustomObjets\r\n }\r\n }\r\n };\r\n};\r\n\r\nconst loadAttachmentForManagementLogsFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n editManagementLog: {\r\n ...state.editManagementLog,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst loadAttachmentForManagementLogsFinished = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n editManagementLog: {\r\n ...state.editManagementLog,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst removeManagementLogsAttachment = (state, { attachment }) => {\r\n let managementLogs = state.newManagementLog.item;\r\n let remainingAttachements = managementLogs.attachmentFiles.filter(\r\n (item) => item.name !== attachment.name\r\n );\r\n managementLogs.attachmentFiles = remainingAttachements;\r\n return {\r\n ...state,\r\n newManagementLog: {\r\n ...state.newManagementLog,\r\n item: managementLogs\r\n }\r\n };\r\n};\r\n\r\nconst removeAttachmentFromEditManagementLogMode = (state, { attachment }) => {\r\n let managementLog = state.editManagementLog.item;\r\n let remainingAttachements = managementLog.attachmentFiles.filter(\r\n (item) => item.name !== attachment.name\r\n );\r\n managementLog.attachmentFiles = remainingAttachements;\r\n return {\r\n ...state,\r\n editManagementLog: {\r\n ...state.editManagementLog,\r\n item: managementLog\r\n }\r\n };\r\n};\r\n\r\n//Control Attachment\r\nconst startLoadAttachmentsForHazardControl = (state) => {\r\n return {\r\n ...state,\r\n editControl: {\r\n ...state.editControl,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst loadAttachmentsForHazardControlSuccess = (state, { attachments }) => {\r\n var attachmentCustomObjets = [];\r\n\r\n for (let index = 0; index < attachments.length; index++) {\r\n const element = {\r\n id: attachments[index].id,\r\n newlyAdded: false,\r\n removed: false,\r\n fileData: null,\r\n name: attachments[index].fileName,\r\n url: attachments[index].url\r\n };\r\n attachmentCustomObjets.push(element);\r\n }\r\n\r\n return {\r\n ...state,\r\n editControl: {\r\n ...state.editControl,\r\n item: {\r\n ...state.editControl.item,\r\n attachmentFiles: attachmentCustomObjets,\r\n existingAttachmentFiles: attachmentCustomObjets\r\n }\r\n }\r\n };\r\n};\r\n\r\nconst loadAttachmentForHazardControlFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n editControl: {\r\n ...state.editControl,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst loadAttachmentForHazardControlFinished = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n editControl: {\r\n ...state.editControl,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst removeControlAttachment = (state, { attachment }) => {\r\n let control = state.newControl.item;\r\n let remainingAttachements = control.attachmentFiles.filter(\r\n (item) => item.name !== attachment.name\r\n );\r\n control.attachmentFiles = remainingAttachements;\r\n return {\r\n ...state,\r\n newControl: {\r\n ...state.newControl,\r\n item: control\r\n }\r\n };\r\n};\r\n\r\nconst removeAttachmentFromEditControlMode = (state, { attachment }) => {\r\n let control = state.editControl.item;\r\n let remainingAttachements = control.attachmentFiles.filter(\r\n (item) => item.name !== attachment.name\r\n );\r\n control.attachmentFiles = remainingAttachements;\r\n return {\r\n ...state,\r\n editControl: {\r\n ...state.editControl,\r\n item: control\r\n }\r\n };\r\n};\r\n\r\nconst uniqueArray = (mixedArray) => {\r\n let newArray = [];\r\n let uniqueObject = {};\r\n for (let i in mixedArray) {\r\n let objTitle = mixedArray[i]['name'];\r\n uniqueObject[objTitle] = mixedArray[i];\r\n }\r\n for (let i in uniqueObject) {\r\n newArray.push(uniqueObject[i]);\r\n }\r\n return newArray;\r\n};\r\n\r\n//Handles the incoming actions.\r\nexport default handleActions(\r\n {\r\n [types.OPEN_CREATE_HAZARD_DIALOG]: openCreateHazardDialog,\r\n [types.OPEN_EDIT_HAZARD_PANEL]: openEditHazardPanel,\r\n [types.OPEN_EDIT_HAZARD_DIALOG]: openEditHazardDialog,\r\n [types.INPUT_CHANGE_CREATE_HAZARD_FORM]: inputChangeCreateHazardForm,\r\n\r\n [types.START_SUBMIT_HAZARD]: startSubmitHazard,\r\n [types.SUBMIT_HAZARD_SUCCESS]: submitHazardSuccess,\r\n [types.SUBMIT_HAZARD_FAILURE]: submitHazardFailure,\r\n [types.SUBMIT_HAZARD_FINISHED]: submitHazardFinished,\r\n\r\n [types.EDIT_HAZARD]: editHazard,\r\n\r\n [types.START_FETCH_CONTROLS_FOR_THE_HAZARD]: startFetchControlsForTheHazard,\r\n [types.FETCH_CONTROLS_FOR_THE_HAZARD_SUCCESS]: fetchControlsForTheHazardSuccess,\r\n [types.FETCH_CONTROLS_FOR_THE_HAZARD_FAILURE]: fetchControlsForTheHazardFailure,\r\n [types.FETCH_CONTROLS_FOR_THE_HAZARD_FINISHED]: fetchControlsForTheHazardFinished,\r\n\r\n [types.OPEN_DELETE_HAZARD_CONTROL_DIALOG]: openHazardControlDeleteDialog,\r\n\r\n [types.START_DELETE_HAZARD_CONTROL]: startDeleteHazardControl,\r\n [types.DELETE_HAZARD_CONTROL_SUCCESS]: deleteHazardControlSuccess,\r\n [types.DELETE_HAZARD_CONTROL_FAILURE]: deleteHazardControlFailure,\r\n [types.DELETE_HAZARD_CONTROL_FINISHED]: deleteHazardControlFinished,\r\n\r\n [types.START_SUBMIT_HAZARD_CONTROL]: startSubmitHazardControl,\r\n [types.SUBMIT_HAZARD_CONTROL_SUCCESS]: submitHazardControlSuccess,\r\n [types.SUBMIT_HAZARD_CONTROL_FAILURE]: submitHazardControlFailure,\r\n [types.SUBMIT_HAZARD_CONTROL_FINISHED]: submitHazardControlFinished,\r\n\r\n [types.ENABLE_EDIT_HAZARD_CONTROL]: enableEditHazardControl,\r\n\r\n [types.INPUT_CHANGE_EDIT_HAZARD_CONTROL]: inputChangeEditHazardControl,\r\n\r\n [types.OPEN_ADD_HAZARD_CONTROL_DIALOG]: openAddHazardControlDialog,\r\n\r\n //Hazard Review\r\n [types.OPEN_HAZARD_REVIEW_PANEL]: openHazardReviewPanel,\r\n\r\n [types.START_FETCH_REVIEWS_FOR_THE_HAZARD]: startFetchReviewsForTheHazard,\r\n [types.FETCH_REVIEWS_FOR_THE_HAZARD_SUCCESS]: fetchReviewsForTheHazardSuccess,\r\n [types.FETCH_REVIEWS_FOR_THE_HAZARD_FAILURE]: fetchReviewsForTheHazardFailure,\r\n [types.FETCH_REVIEWS_FOR_THE_HAZARD_FINISHED]: fetchReviewsForTheHazardFinished,\r\n\r\n [types.OPEN_CREATE_HAZARD_REVIEW_DIALOG]: openAddHazardReviewDialog,\r\n\r\n [types.START_SUBMIT_HAZARD_REVIEW]: startSubmitHazardReview,\r\n [types.SUBMIT_HAZARD_REVIEW_SUCCESS]: submitHazardReviewSuccess,\r\n [types.SUBMIT_HAZARD_Review_FAILURE]: submitHazardReviewFailure,\r\n [types.SUBMIT_HAZARD_Review_FINISHED]: submitHazardReviewFinished,\r\n\r\n [types.INPUT_CHANGE_ADD_HAZARD_REVIEW]: inputChangeAddHazardReview,\r\n [types.INPUT_CHANGE_EDIT_HAZARD_REVIEW]: inputChangeEditHazardReview,\r\n\r\n [types.ENABLE_EDIT_HAZARD_REVIEW]: enableEditHazardReview,\r\n [types.OPEN_DELETE_HAZARD_REVIEW_DIALOG]: openDeleteHazardReviewDialog,\r\n\r\n //Hazard Management Log\r\n [types.OPEN_HAZARD_MANAGEMENTLOG_PANEL]: openHazardManagementLogPanel,\r\n\r\n [types.START_FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD]: startFetchManagementLogsForTheHazard,\r\n [types.FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD_SUCCESS]: fetchManagementLogsForTheHazardSuccess,\r\n [types.FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD_FAILURE]: fetchManagementLogsForTheHazardFailure,\r\n [types.FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD_FINISHED]: fetchManagementLogsForTheHazardFinished,\r\n\r\n [types.OPEN_CREATE_HAZARD_MANAGEMENT_LOG_DIALOG]: openAddHazardManagementLogDialog,\r\n\r\n [types.START_SUBMIT_HAZARD_MANAGEMENT_LOG]: startSubmitHazardManagementLog,\r\n [types.SUBMIT_HAZARD_MANAGEMENT_LOG_SUCCESS]: submitHazardManagementLogSuccess,\r\n [types.SUBMIT_HAZARD_MANAGEMENT_LOG_FAILURE]: submitHazardManagementLogFailure,\r\n [types.SUBMIT_HAZARD_MANAGEMENT_LOG_FINISHED]: submitHazardManagementLogFinished,\r\n\r\n [types.INPUT_CHANGE_ADD_HAZARD_MANAGEMENT_LOG]: inputChangeAddHazardManagementLog,\r\n [types.INPUT_CHANGE_EDIT_HAZARD_MANAGEMENT_LOG]: inputChangeEditHazardManagementLog,\r\n\r\n [types.ENABLE_EDIT_HAZARD_MANAGEMENT_LOG]: enableHazardManagementLog,\r\n [types.OPEN_DELETE_HAZARD_MANAGEMENT_LOG_DIALOG]: openDeleteHazardManagementLogDialog,\r\n\r\n [types.START_LOAD_ATTACHMENTS_FOR_HAZARD]: startLoadAttachmentsForHazard,\r\n [types.LOAD_ATTACHMENTS_FOR_HAZARD_SUCCESS]: loadAttachmentsForHazardSuccess,\r\n [types.LOAD_ATTACHMENTS_FOR_HAZARD_FAILURE]: loadAttachmentForHazardFailure,\r\n [types.LOAD_ATTACHMENTS_FOR_HAZARD_FINISHED]: loadAttachmentForHazardFinished,\r\n\r\n [types.REMOVE_HAZARD_ATTACHMENT]: removeAttachment,\r\n\r\n //Hazard Review Attachement\r\n [types.START_LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW]: startLoadAttachmentsForHazardReview,\r\n [types.LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW_SUCCESS]: loadAttachmentsForHazardReviewSuccess,\r\n [types.LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW_FAILURE]: loadAttachmentForHazardReviewFailure,\r\n [types.LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW_FINISHED]: loadAttachmentForHazardReviewFinished,\r\n\r\n [types.REMOVE_HAZARD_REVIEW_ATTACHMENT]: removeReviewAttachment,\r\n [types.REMOVE_HAZARD_REVIEW_ATTACHMENT_EDIT]: removeAttachmentFromEditReviewMode,\r\n\r\n //Hazard Management Logs Attachement\r\n [types.START_LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS]: startLoadAttachmentsForManagementLogs,\r\n [types.LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS_SUCCESS]: loadAttachmentsForManagementLogsSuccess,\r\n [types.LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS_FAILURE]: loadAttachmentForManagementLogsFailure,\r\n [types.LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS_FINISHED]: loadAttachmentForManagementLogsFinished,\r\n\r\n [types.REMOVE_HAZARD_MANAGEMENT_LOGS_ATTACHMENT]: removeManagementLogsAttachment,\r\n [types.REMOVE_HAZARD_MANAGE_LOGS_ATTACHMENT_EDIT]: removeAttachmentFromEditManagementLogMode,\r\n\r\n //Hazard Control Attachement\r\n [types.START_LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL]: startLoadAttachmentsForHazardControl,\r\n [types.LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL_SUCCESS]: loadAttachmentsForHazardControlSuccess,\r\n [types.LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL_FAILURE]: loadAttachmentForHazardControlFailure,\r\n [types.LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL_FINISHED]: loadAttachmentForHazardControlFinished,\r\n\r\n [types.REMOVE_HAZARD_CONTROL_ATTACHMENT]: removeControlAttachment,\r\n [types.REMOVE_HAZARD_CONTROL_ATTACHMENT_EDIT]: removeAttachmentFromEditControlMode\r\n },\r\n INITIAL_STATE\r\n);\r\n","import { handleActions } from 'redux-actions';\r\nimport { types } from '../constants';\r\nimport {} from '@material-ui/icons';\r\n\r\nconst INITIAL_STATE = {\r\n hazardsByBranch: {\r\n items: [],\r\n itemsCopy: [],\r\n isLoading: false,\r\n errorMessage: '',\r\n searchTerm: ''\r\n },\r\n hazardsByCompany: {\r\n items: [],\r\n itemsCopy: [],\r\n isLoading: false,\r\n errorMessage: ''\r\n },\r\n deleteHazard: {\r\n openDialog: false,\r\n hazard: null,\r\n isSaving: false,\r\n errorMessage: false\r\n },\r\n hazardStatusFilter: {\r\n filter: 0,\r\n items: [\r\n { id: 0, value: 'All Hazards' },\r\n { id: 1, value: 'Raised' },\r\n { id: 2, value: 'Managed' },\r\n { id: 3, value: 'Removed' }\r\n ]\r\n },\r\n hazardDescriptionFilter: {\r\n filter: 0,\r\n items: [\r\n { id: 0, value: 'Description A-Z' },\r\n { id: 1, value: 'Description Z-A' }\r\n ]\r\n }\r\n};\r\n\r\nconst filterHazardBasedOnStatusType = (allHazards, statusId) => {\r\n let filteredHazards;\r\n if (statusId === 0) {\r\n filteredHazards = allHazards;\r\n } else if (statusId === 1) {\r\n //Raised\r\n filteredHazards = allHazards.filter((g) => g.status === 1);\r\n } else if (statusId === 2) {\r\n //Managed\r\n filteredHazards = allHazards.filter((g) => g.status === 2);\r\n } else if (statusId === 3) {\r\n //Removed\r\n filteredHazards = allHazards.filter((g) => g.status === 3);\r\n }\r\n\r\n return filteredHazards;\r\n};\r\n\r\nconst filterHazardBasedOnDescriptionSortType = (allHazards, sortId) => {\r\n let filteredHazards;\r\n if (sortId === 0) {\r\n filteredHazards = allHazards.sort((a, b) =>\r\n a.description.toLowerCase().localeCompare(b.description.toLowerCase())\r\n );\r\n } else if (sortId === 1) {\r\n filteredHazards = allHazards.sort((a, b) =>\r\n b.description.toLowerCase().localeCompare(a.description.toLowerCase())\r\n );\r\n }\r\n return filteredHazards;\r\n};\r\n\r\nconst changeSelectedHazardDescriptionSortTypeFilter = (state, { sortId }) => {\r\n let filteredHazards = filterHazardBasedOnDescriptionSortType(\r\n state.hazardsByBranch.items,\r\n sortId\r\n );\r\n\r\n return {\r\n ...state,\r\n hazardDescriptionFilter: {\r\n ...state.hazardDescriptionFilter,\r\n filter: sortId\r\n },\r\n hazardsByBranch: {\r\n ...state.hazardsByBranch,\r\n items: filteredHazards\r\n }\r\n };\r\n};\r\n\r\nconst changeSelectedHazardStatusTypeFilter = (state, { statusId }) => {\r\n let filteredHazards = filterHazardBasedOnStatusType(\r\n state.hazardsByBranch.itemsCopy,\r\n statusId\r\n );\r\n\r\n let sortedFilteredHazards = filterHazardBasedOnDescriptionSortType(\r\n filteredHazards,\r\n state.hazardDescriptionFilter.filter\r\n );\r\n return {\r\n ...state,\r\n hazardsByBranch: {\r\n ...state.hazardsByBranch,\r\n items: sortedFilteredHazards\r\n },\r\n hazardStatusFilter: {\r\n ...state.hazardStatusFilter,\r\n filter: statusId\r\n }\r\n };\r\n};\r\n\r\nconst startDeleteHazard = (state) => {\r\n return {\r\n ...state,\r\n deleteHazard: {\r\n ...state.deleteHazard,\r\n isSaving: true\r\n }\r\n };\r\n};\r\nconst deleteHazardSuccess = (state, { hazardId }) => {\r\n var hazardsByBranch_Copy = state.hazardsByBranch.itemsCopy;\r\n var filteredHazards_Copy = hazardsByBranch_Copy.filter(\r\n (hazard) => hazard.id !== hazardId\r\n );\r\n\r\n var hazardsByBranch_Main = state.hazardsByBranch.items;\r\n var filteredHazards_Main = hazardsByBranch_Main.filter(\r\n (hazard) => hazard.id !== hazardId\r\n );\r\n\r\n return {\r\n ...state,\r\n deleteHazard: {\r\n ...state.deleteHazard\r\n },\r\n hazardsByBranch: {\r\n ...state.hazardsByBranch,\r\n items: filteredHazards_Main,\r\n itemsCopy: filteredHazards_Copy\r\n }\r\n };\r\n};\r\nconst deleteHazardFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n deleteHazard: {\r\n ...state.deleteHazard,\r\n errorMessage\r\n }\r\n };\r\n};\r\nconst deleteHazardFinished = (state) => {\r\n return {\r\n ...state,\r\n deleteHazard: {\r\n ...state.deleteHazard,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst startFetchAllHazardsForBranch = (state) => {\r\n return {\r\n ...state,\r\n hazardsByBranch: {\r\n ...state.hazardsByBranch,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllHazardsForBranchSuccess = (state, { hazards }) => {\r\n return {\r\n ...state,\r\n hazardsByBranch: {\r\n ...state.hazardsByBranch,\r\n items: hazards,\r\n itemsCopy: hazards\r\n }\r\n };\r\n};\r\n\r\nconst clearHazardFilters = (state) => {\r\n return {\r\n ...state,\r\n hazardStatusFilter: {\r\n ...state.hazardStatusFilter,\r\n filter: 0\r\n },\r\n hazardDescriptionFilter: {\r\n ...state.hazardDescriptionFilter,\r\n filter: 0\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllHazardsForBranchFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n hazardsByBranch: {\r\n ...state.hazardsByBranch,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllHazardsForBranchFinished = (state) => {\r\n return {\r\n ...state,\r\n hazardsByBranch: {\r\n ...state.hazardsByBranch,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\nconst changeSearchTermAllHazards = (state, { searchTerm }) => {\r\n let hazards = [...state.hazardsByBranch.itemsCopy];\r\n\r\n let filteredHazards = hazards.filter(\r\n (e) => e.description && e.description.toLowerCase().includes(searchTerm)\r\n );\r\n\r\n filteredHazards = filterHazardBasedOnStatusType(\r\n filteredHazards,\r\n state.hazardStatusFilter.filter\r\n );\r\n\r\n filteredHazards = filterHazardBasedOnDescriptionSortType(\r\n filteredHazards,\r\n state.hazardDescriptionFilter.filter\r\n );\r\n\r\n return {\r\n ...state,\r\n hazardsByBranch: {\r\n ...state.hazardsByBranch,\r\n searchTerm,\r\n items: filteredHazards\r\n }\r\n };\r\n};\r\n\r\nconst submitHazardSuccess = (state, { submittedHazard }) => {\r\n let hazards = [...state.hazardsByBranch.itemsCopy];\r\n let updatedHazardIndex = hazards.findIndex(\r\n (a) => a.id === submittedHazard.id\r\n );\r\n\r\n //Means updated\r\n if (updatedHazardIndex !== -1) {\r\n hazards[updatedHazardIndex] = submittedHazard;\r\n } else {\r\n hazards = [...hazards, submittedHazard];\r\n }\r\n\r\n let filteredHazards = filterHazardBasedOnStatusType(\r\n hazards,\r\n state.hazardStatusFilter.filter\r\n );\r\n\r\n filteredHazards = filterHazardBasedOnDescriptionSortType(\r\n filteredHazards,\r\n state.hazardDescriptionFilter.filter\r\n );\r\n\r\n return {\r\n ...state,\r\n hazardsByBranch: {\r\n ...state.hazardssByBranch,\r\n items: filteredHazards,\r\n itemsCopy: hazards\r\n }\r\n };\r\n};\r\n\r\nconst openDeleteHazardDialog = (state, { open, hazard }) => {\r\n return {\r\n ...state,\r\n deleteHazard: {\r\n ...state.deleteHazard,\r\n openDialog: open,\r\n hazard: open === true ? hazard : null\r\n }\r\n };\r\n};\r\n\r\nconst startFetchAllHazardsForCompany = (state) => {\r\n return {\r\n ...state,\r\n hazardsByCompany: {\r\n ...state.hazardsByCompany,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllHazardsForCompanySuccess = (state, { hazards }) => {\r\n return {\r\n ...state,\r\n hazardsByCompany: {\r\n ...state.hazardsByCompany,\r\n items: hazards,\r\n itemsCopy: hazards\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllHazardsForCompanyFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n hazardsByCompany: {\r\n ...state.hazardsByCompany,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllHazardsForCompanyFinished = (state) => {\r\n return {\r\n ...state,\r\n hazardsByCompany: {\r\n ...state.hazardsByCompany,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\n//Handles the incoming actions.\r\nexport default handleActions(\r\n {\r\n [types.CLEAR_HAZARD_FILTERS]: clearHazardFilters,\r\n [types.CHANGE_SELECTED_HAZARD_STATUS_FILTER]: changeSelectedHazardStatusTypeFilter,\r\n\r\n [types.CHANGE_SELECTED_HAZARD_DESCRIPTION_FILTER]: changeSelectedHazardDescriptionSortTypeFilter,\r\n\r\n [types.START_FETCH_ALL_HAZARDS_FOR_BRANCH]: startFetchAllHazardsForBranch,\r\n [types.FETCH_ALL_HAZARDS_FOR_BRANCH_SUCCESS]: fetchAllHazardsForBranchSuccess,\r\n [types.FETCH_ALL_HAZARDS_FOR_BRANCH_FAILURE]: fetchAllHazardsForBranchFailure,\r\n [types.FETCH_ALL_HAZARDS_FOR_BRANCH_FINISHED]: fetchAllHazardsForBranchFinished,\r\n\r\n [types.START_FETCH_ALL_HAZARDS_FOR_COMPANY]: startFetchAllHazardsForCompany,\r\n [types.FETCH_ALL_HAZARDS_FOR_COMPANY_SUCCESS]: fetchAllHazardsForCompanySuccess,\r\n [types.FETCH_ALL_HAZARDS_FOR_COMPANY_FAILURE]: fetchAllHazardsForCompanyFailure,\r\n [types.FETCH_ALL_HAZARDS_FOR_COMPANY_FINISHED]: fetchAllHazardsForCompanyFinished,\r\n\r\n [types.CHANGE_SEARCH_TERM_ALL_HAZARDS]: changeSearchTermAllHazards,\r\n\r\n [types.SUBMIT_HAZARD_SUCCESS]: submitHazardSuccess,\r\n\r\n [types.OPEN_DELETE_HAZARD_DIALOG]: openDeleteHazardDialog,\r\n\r\n [types.START_DELETE_HAZARD]: startDeleteHazard,\r\n [types.DELETE_HAZARD_SUCCESS]: deleteHazardSuccess,\r\n [types.DELETE_HAZARD_FAILURE]: deleteHazardFailure,\r\n [types.DELETE_HAZARD_FINISHED]: deleteHazardFinished\r\n },\r\n INITIAL_STATE\r\n);\r\n","import { handleActions } from 'redux-actions';\r\nimport { types } from '../constants';\r\n\r\nconst INITIAL_STATE = {\r\n coursesByBranch: {\r\n items: [],\r\n itemsCopy: [],\r\n isLoading: false,\r\n errorMessage: '',\r\n searchTerm: ''\r\n },\r\n coursesByCompany: {\r\n items: [],\r\n isLoading: false,\r\n errorMessage: ''\r\n },\r\n deleteCourse: {\r\n openDialog: false,\r\n course: null,\r\n isSaving: false,\r\n errorMessage: false\r\n },\r\n courseRecordsByBranch: {\r\n items: [],\r\n isLoading: false,\r\n errorMessage: ''\r\n },\r\n courseRecordsByCompany: {\r\n items: [],\r\n isLoading: false,\r\n errorMessage: ''\r\n }\r\n};\r\n\r\nconst startFetchAllCoursesForBranch = (state) => {\r\n return {\r\n ...state,\r\n coursesByBranch: {\r\n ...state.coursesByBranch,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllCoursesForBranchSuccess = (state, { courses }) => {\r\n return {\r\n ...state,\r\n coursesByBranch: {\r\n ...state.coursesByBranch,\r\n items: courses,\r\n itemsCopy: courses\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllCoursesForBranchFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n coursesByBranch: {\r\n ...state.coursesByBranch,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllCoursesForBranchFinished = (state) => {\r\n return {\r\n ...state,\r\n coursesByBranch: {\r\n ...state.coursesByBranch,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\nconst startFetchAllCoursesForCompany = (state) => {\r\n return {\r\n ...state,\r\n coursesByCompany: {\r\n ...state.coursesByCompany,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllCoursesForCompanySuccess = (state, { courses }) => {\r\n return {\r\n ...state,\r\n coursesByCompany: {\r\n ...state.coursesByCompany,\r\n items: courses,\r\n itemsCopy: courses\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllCoursesForCompanyFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n coursesByCompany: {\r\n ...state.coursesByCompany,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllCoursesForCompanyFinished = (state) => {\r\n return {\r\n ...state,\r\n coursesByCompany: {\r\n ...state.coursesByCompany,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\nconst chamgeSearchTermAllCourses = (state, { searchTerm }) => {\r\n let courses = [...state.coursesByBranch.itemsCopy];\r\n let filteredCourses = courses.filter(\r\n (c) =>\r\n c.unitDescription && c.unitDescription.toLowerCase().includes(searchTerm)\r\n );\r\n\r\n return {\r\n ...state,\r\n coursesByBranch: {\r\n ...state.coursesByBranch,\r\n searchTerm,\r\n items: filteredCourses\r\n }\r\n };\r\n};\r\n\r\nconst submitCourseSuccess = (state, { submittedCourse }) => {\r\n let courses = [...state.coursesByBranch.items];\r\n let updatedCourseIndex = courses.findIndex(\r\n (c) => c.id === submittedCourse.id\r\n );\r\n\r\n //Means updated\r\n if (updatedCourseIndex !== -1) {\r\n courses[updatedCourseIndex] = submittedCourse;\r\n } else {\r\n courses = [...courses, submittedCourse];\r\n }\r\n\r\n return {\r\n ...state,\r\n coursesByBranch: {\r\n ...state.coursessByBranch,\r\n items: courses,\r\n itemsCopy: courses\r\n }\r\n };\r\n};\r\n\r\nconst openDeleteCourseDialog = (state, { open, course }) => {\r\n return {\r\n ...state,\r\n deleteCourse: {\r\n ...state.deleteCourse,\r\n openDialog: open,\r\n course: open === true ? course : null\r\n }\r\n };\r\n};\r\n\r\nconst startDeleteCourse = (state) => {\r\n return {\r\n ...state,\r\n deleteCourse: {\r\n ...state.deleteCourse,\r\n isSaving: true\r\n }\r\n };\r\n};\r\nconst deleteCourseSuccess = (state, { courseId }) => {\r\n var coursesByBranch = state.coursesByBranch.items;\r\n var filteredCourses = coursesByBranch.filter(\r\n (course) => course.id !== courseId\r\n );\r\n\r\n return {\r\n ...state,\r\n deleteCourse: {\r\n ...state.deleteCourse\r\n },\r\n coursesByBranch: {\r\n ...state.coursesByBranch,\r\n items: filteredCourses\r\n }\r\n };\r\n};\r\nconst deleteCourseFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n coursesByBranch: {\r\n ...state.coursesByBranch,\r\n errorMessage\r\n }\r\n };\r\n};\r\nconst deleteCourseFinished = (state) => {\r\n return {\r\n ...state,\r\n deleteCourse: {\r\n ...state.deleteCourse,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst startFetchAllCourseRecordsForBranch = (state) => {\r\n return {\r\n ...state,\r\n courseRecordsByBranch: {\r\n ...state.courseRecordsByBranch,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllCourseRecordsForBranchSuccess = (state, { courseRecords }) => {\r\n return {\r\n ...state,\r\n courseRecordsByBranch: {\r\n ...state.courseRecordsByBranch,\r\n items: courseRecords\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllCourseRecordsForBranchFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n courseRecordsByBranch: {\r\n ...state.courseRecordsByBranch,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllCourseRecordsForBranchFinished = (state) => {\r\n return {\r\n ...state,\r\n courseRecordsByBranch: {\r\n ...state.courseRecordsByBranch,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\nconst startFetchAllCourseRecordsForCompany = (state) => {\r\n return {\r\n ...state,\r\n courseRecordsByCompany: {\r\n ...state.courseRecordsByCompany,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllCourseRecordsForCompanySuccess = (state, { courseRecords }) => {\r\n return {\r\n ...state,\r\n courseRecordsByCompany: {\r\n ...state.courseRecordsByCompany,\r\n items: courseRecords\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllCourseRecordsForCompanyFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n courseRecordsByCompany: {\r\n ...state.courseRecordsByCompany,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst fetchAllCourseRecordsForCompanyFinished = (state) => {\r\n return {\r\n ...state,\r\n courseRecordsByCompany: {\r\n ...state.courseRecordsByCompany,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\n//Handles the incoming actions.\r\nexport default handleActions(\r\n {\r\n [types.START_FETCH_ALL_COURSES_FOR_BRANCH]: startFetchAllCoursesForBranch,\r\n [types.FETCH_ALL_COURSES_FOR_BRANCH_SUCCESS]: fetchAllCoursesForBranchSuccess,\r\n [types.FETCH_ALL_COURSES_FOR_BRANCH_FAILURE]: fetchAllCoursesForBranchFailure,\r\n [types.FETCH_ALL_COURSES_FOR_BRANCH_FINISHED]: fetchAllCoursesForBranchFinished,\r\n\r\n [types.START_FETCH_ALL_COURSES_FOR_COMPANY]: startFetchAllCoursesForCompany,\r\n [types.FETCH_ALL_COURSES_FOR_COMPANY_SUCCESS]: fetchAllCoursesForCompanySuccess,\r\n [types.FETCH_ALL_COURSES_FOR_COMPANY_FAILURE]: fetchAllCoursesForCompanyFailure,\r\n [types.FETCH_ALL_COURSES_FOR_COMPANY_FINISHED]: fetchAllCoursesForCompanyFinished,\r\n\r\n [types.CHANGE_SEARCH_TERM_ALL_COURSES]: chamgeSearchTermAllCourses,\r\n\r\n [types.SUBMIT_COURSE_SUCCESS]: submitCourseSuccess,\r\n\r\n [types.OPEN_DELETE_COURSE_DIALOG]: openDeleteCourseDialog,\r\n\r\n [types.START_DELETE_COURSE]: startDeleteCourse,\r\n [types.DELETE_COURSE_SUCCESS]: deleteCourseSuccess,\r\n [types.DELETE_COURSE_FAILURE]: deleteCourseFailure,\r\n [types.DELETE_COURSE_FINISHED]: deleteCourseFinished,\r\n\r\n [types.START_FETCH_ALL_COURSE_RECORDS_FOR_BRANCH]: startFetchAllCourseRecordsForBranch,\r\n [types.FETCH_ALL_COURSE_RECORDS_FOR_BRANCH_SUCCESS]: fetchAllCourseRecordsForBranchSuccess,\r\n [types.FETCH_ALL_COURSE_RECORDS_FOR_BRANCH_FAILURE]: fetchAllCourseRecordsForBranchFailure,\r\n [types.FETCH_ALL_COURSE_RECORDS_FOR_BRANCH_FINISHED]: fetchAllCourseRecordsForBranchFinished,\r\n\r\n [types.START_FETCH_ALL_COURSE_RECORDS_FOR_COMPANY]: startFetchAllCourseRecordsForCompany,\r\n [types.FETCH_ALL_COURSE_RECORDS_FOR_COMPANY_SUCCESS]: fetchAllCourseRecordsForCompanySuccess,\r\n [types.FETCH_ALL_COURSE_RECORDS_FOR_COMPANY_FAILURE]: fetchAllCourseRecordsForCompanyFailure,\r\n [types.FETCH_ALL_COURSE_RECORDS_FOR_COMPANY_FINISHED]: fetchAllCourseRecordsForCompanyFinished\r\n },\r\n INITIAL_STATE\r\n);\r\n","import { handleActions } from 'redux-actions';\r\n\r\nimport { types, inputFieldNames } from '../constants';\r\nimport moment from 'moment';\r\n\r\nimport { getUniqueArray } from './../utils/attachmentUtils';\r\nimport { COURSE_NOTES } from './../constants/inputFieldNames';\r\n\r\nconst INITIAL_STATE = {\r\n newCourse: {\r\n showCreateCourseDialog: false,\r\n showEditCoursePanel: false,\r\n showEditCourseDialog: false,\r\n item: {},\r\n isSaving: false,\r\n errorMessage: ''\r\n },\r\n course: {\r\n item: null,\r\n isLoading: false,\r\n errorMessage: ''\r\n },\r\n newRecord: {\r\n item: {\r\n recordDate: null,\r\n notes: '',\r\n personnelId: null,\r\n attachmentFiles: [],\r\n existingAttachmentFiles: []\r\n },\r\n isSaving: false,\r\n errorMessage: '',\r\n openAddCourseRecordDialog: false,\r\n dialogOpenRequestSource: null\r\n },\r\n recordsForTheCourse: {\r\n items: [],\r\n isLoading: false,\r\n errorMessage: null\r\n },\r\n deleteRecord: {\r\n result: false,\r\n isSaving: false,\r\n errorMessage: null\r\n },\r\n editRecord: {\r\n enable: false,\r\n item: { attachmentFiles: [], existingAttachmentFiles: [] },\r\n isSaving: false,\r\n errorMessage: ''\r\n }\r\n};\r\n\r\nconst openCreateCourseDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n newCourse: {\r\n ...state.newCourse,\r\n showCreateCourseDialog: open,\r\n item: {}\r\n }\r\n };\r\n};\r\n\r\nconst openEditCoursePanel = (state, { open }) => {\r\n return {\r\n ...state,\r\n newCourse: {\r\n ...state.newCourse,\r\n showEditCoursePanel: open,\r\n item: {}\r\n }\r\n };\r\n};\r\n\r\nconst openEditCourseDialog = (state, { open }) => {\r\n return {\r\n ...state,\r\n newCourse: {\r\n ...state.newCourse,\r\n showEditCourseDialog: open,\r\n item: {}\r\n }\r\n };\r\n};\r\n\r\nconst courseDocumentSelected = (state, { documentLink }) => {\r\n const course = { ...state.newCourse.item };\r\n course.document = documentLink;\r\n\r\n return {\r\n ...state,\r\n newCourse: {\r\n ...state.newCourse,\r\n item: course\r\n }\r\n };\r\n};\r\n\r\nconst inputChangeCreateCourseForm = (state, { value, inputfieldName }) => {\r\n const course = { ...state.newCourse.item };\r\n const record = { ...state.newRecord.item };\r\n\r\n switch (inputfieldName) {\r\n case inputFieldNames.UNIT_DESCRIPTION:\r\n course.unitDescription = value;\r\n break;\r\n case inputFieldNames.TRAINING_PROVIDER:\r\n course.trainingProvider = value;\r\n break;\r\n case inputFieldNames.COURSE_COST:\r\n course.courseCost = Number(value);\r\n break;\r\n case inputFieldNames.FREQUENCY_FOR_COURSE:\r\n course.frequency = Number(value);\r\n break;\r\n case inputFieldNames.COURSE_CATEGORY:\r\n course.courseCategoryId = value;\r\n break;\r\n case inputFieldNames.RECORD_DATE:\r\n var newDate = moment(value).local().format('YYYY-MM-DD');\r\n record.recordDate = newDate;\r\n break;\r\n case inputFieldNames.RECORD_NOTES:\r\n record.notes = value;\r\n break;\r\n case inputFieldNames.COURSE_NOTES:\r\n course.notes = value;\r\n break;\r\n case inputFieldNames.PERSONNEL_ID:\r\n record.personnelId = value;\r\n break;\r\n case inputFieldNames.COURSE:\r\n record.courseId = value;\r\n break;\r\n case inputFieldNames.COURSE_DOCUMENT:\r\n course.document = value;\r\n break;\r\n case inputFieldNames.COURSE_RECORD_ATTACHMENT:\r\n if (!record.attachmentFiles) {\r\n record.attachmentFiles = [];\r\n }\r\n record.attachmentFiles.push(value);\r\n var filteredArray = getUniqueArray(record.attachmentFiles);\r\n record.attachmentFiles = filteredArray;\r\n break;\r\n default:\r\n }\r\n\r\n return {\r\n ...state,\r\n newCourse: {\r\n ...state.newCourse,\r\n item: course\r\n },\r\n newRecord: {\r\n ...state.newRecord,\r\n item: record\r\n }\r\n };\r\n};\r\n\r\nconst uniqueArray = (mixedArray) => {\r\n let newArray = [];\r\n let uniqueObject = {};\r\n for (let i in mixedArray) {\r\n let objTitle = mixedArray[i]['name'];\r\n uniqueObject[objTitle] = mixedArray[i];\r\n }\r\n for (let i in uniqueObject) {\r\n newArray.push(uniqueObject[i]);\r\n }\r\n return newArray;\r\n};\r\n\r\nconst startSubmitCourse = (state) => {\r\n return {\r\n ...state,\r\n newCourse: {\r\n ...state.newCourse,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst submitCourseSuccess = (state, { submittedCourse }) => {\r\n return {\r\n ...state,\r\n course: {\r\n ...state.course,\r\n item: submittedCourse\r\n }\r\n };\r\n};\r\n\r\nconst submitCourseFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n newCourse: {\r\n ...state.newCourse,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst submitCourseFinished = (state) => {\r\n return {\r\n ...state,\r\n newCourse: {\r\n ...state.newCourse,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst editCourse = (state, { course }) => {\r\n return {\r\n ...state,\r\n newCourse: {\r\n ...state.newCourse,\r\n item: course\r\n }\r\n };\r\n};\r\n\r\nconst startSubmitCourseRecord = (state) => {\r\n return {\r\n ...state,\r\n newRecord: {\r\n ...state.newRecord,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst submitCourseRecordSuccess = (state) => {\r\n return {\r\n ...state,\r\n newRecord: {\r\n ...state.newRecord,\r\n item: {\r\n recordDate: null,\r\n notes: '',\r\n personnelId: null\r\n }\r\n }\r\n };\r\n};\r\n\r\nconst submitCourseRecordFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n newRecord: {\r\n ...state.newRecord,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst submitCourseRecordFinished = (state) => {\r\n return {\r\n ...state,\r\n newRecord: {\r\n ...state.newRecord,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst startFetchRecordsForTheCourse = (state) => {\r\n return {\r\n ...state,\r\n recordsForTheCourse: {\r\n ...state.recordsForTheCourse,\r\n isLoading: true\r\n }\r\n };\r\n};\r\n\r\nconst fetchRecordsForTheCourseSuccess = (state, { records }) => {\r\n return {\r\n ...state,\r\n recordsForTheCourse: {\r\n ...state.recordsForTheCourse,\r\n items: records\r\n }\r\n };\r\n};\r\n\r\nconst fetchRecordsForTheCourseFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n recordsForTheCourse: {\r\n ...state.recordsForTheCourse,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst fetchRecordsForTheCourseFinished = (state) => {\r\n return {\r\n ...state,\r\n recordsForTheCourse: {\r\n ...state.recordsForTheCourse,\r\n isLoading: false\r\n }\r\n };\r\n};\r\n\r\nconst startDeleteCourseRecord = (state) => {\r\n return {\r\n ...state,\r\n deleteRecord: {\r\n ...state.deleteRecord,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst deleteCourseRecordSuccess = (state, { recordId }) => {\r\n let records = [...state.recordsForTheCourse.items];\r\n let deleteIndex = records.findIndex((r) => r.id === recordId);\r\n\r\n if (deleteIndex !== -1) {\r\n records.splice(deleteIndex, 1);\r\n }\r\n\r\n return {\r\n ...state,\r\n deleteRecord: {\r\n ...state.deleteRecord\r\n },\r\n recordsForTheCourse: {\r\n ...state.recordsForTheCourse,\r\n items: records\r\n }\r\n };\r\n};\r\n\r\nconst deleteCourseRecordFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n deleteRecord: {\r\n ...state.deleteRecord,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst deleteCourseRecordFinished = (state) => {\r\n return {\r\n ...state,\r\n deleteRecord: {\r\n ...state.deleteRecord,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst enableEditCourseRecord = (state, { enableEditRecordMode, recordId }) => {\r\n let record;\r\n if (recordId) {\r\n record = state.recordsForTheCourse.items.filter(\r\n (r) => r.id === recordId\r\n )[0];\r\n }\r\n\r\n return {\r\n ...state,\r\n editRecord: {\r\n ...state.editRecord,\r\n enable: enableEditRecordMode,\r\n item: record\r\n }\r\n };\r\n};\r\n\r\nconst inputChangeEditCourseRecord = (state, { value, inputfieldName }) => {\r\n const record = { ...state.editRecord.item };\r\n\r\n switch (inputfieldName) {\r\n case inputFieldNames.PERSONNEL_ID:\r\n record.personnelId = value;\r\n break;\r\n case inputFieldNames.RECORD_DATE:\r\n var newDate = moment(value).local().format('YYYY-MM-DD');\r\n record.recordDate = newDate;\r\n break;\r\n case inputFieldNames.RECORD_NOTES:\r\n record.notes = value;\r\n break;\r\n case inputFieldNames.COURSE_RECORD_ATTACHMENT:\r\n if (!record.attachmentFiles) {\r\n record.attachmentFiles = [];\r\n }\r\n record.attachmentFiles.push(value);\r\n var filteredArray = uniqueArray(record.attachmentFiles);\r\n record.attachmentFiles = filteredArray;\r\n break;\r\n default:\r\n }\r\n return {\r\n ...state,\r\n editRecord: {\r\n ...state.editRecord,\r\n item: record\r\n }\r\n };\r\n};\r\n\r\nconst openAddCourseRecordDialog = (state, { open, personnelId, source }) => {\r\n return {\r\n ...state,\r\n newRecord: {\r\n ...state.newRecord,\r\n openAddCourseRecordDialog: open,\r\n dialogOpenRequestSource: source,\r\n item: {\r\n ...state.newRecord.item,\r\n personnelId: personnelId || null\r\n }\r\n }\r\n };\r\n};\r\n\r\nconst startLoadAttachmentsForCourseRecord = (state) => {\r\n return {\r\n ...state,\r\n editRecord: {\r\n ...state.editRecord,\r\n isSaving: true\r\n }\r\n };\r\n};\r\n\r\nconst loadAttachmentsForCourseRecordSuccess = (state, { attachments }) => {\r\n var attachmentCustomObjets = [];\r\n\r\n for (let index = 0; index < attachments.length; index++) {\r\n const element = {\r\n id: attachments[index].id,\r\n newlyAdded: false,\r\n removed: false,\r\n fileData: null,\r\n name: attachments[index].fileName,\r\n url: attachments[index].url\r\n };\r\n attachmentCustomObjets.push(element);\r\n }\r\n\r\n return {\r\n ...state,\r\n editRecord: {\r\n ...state.editRecord,\r\n item: {\r\n ...state.editRecord.item,\r\n attachmentFiles: attachmentCustomObjets,\r\n existingAttachmentFiles: attachmentCustomObjets\r\n }\r\n }\r\n };\r\n};\r\n\r\nconst loadAttachmentForCourseRecordFailure = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n editRecord: {\r\n ...state.editRecord,\r\n errorMessage\r\n }\r\n };\r\n};\r\n\r\nconst loadAttachmentForCourseRecordFinished = (state, { errorMessage }) => {\r\n return {\r\n ...state,\r\n editRecord: {\r\n ...state.editRecord,\r\n isSaving: false\r\n }\r\n };\r\n};\r\n\r\nconst removeAttachment = (state, { attachment }) => {\r\n let record = state.newRecord.item;\r\n let remainingAttachements = record.attachmentFiles.filter(\r\n (item) => item.name !== attachment.name\r\n );\r\n record.attachmentFiles = remainingAttachements;\r\n return {\r\n ...state,\r\n newRecord: {\r\n ...state.newRecord,\r\n item: record\r\n }\r\n };\r\n};\r\n\r\nconst removeAttachmentFromEditRecordMode = (state, { attachment }) => {\r\n let record = state.editRecord.item;\r\n let remainingAttachements = record.attachmentFiles.filter(\r\n (item) => item.name !== attachment.name\r\n );\r\n record.attachmentFiles = remainingAttachements;\r\n return {\r\n ...state,\r\n editRecord: {\r\n ...state.editRecord,\r\n item: record\r\n }\r\n };\r\n};\r\n\r\n//Handles the incoming actions.\r\nexport default handleActions(\r\n {\r\n [types.OPEN_CREATE_COURSE_DIALOG]: openCreateCourseDialog,\r\n [types.OPEN_EDIT_COURSE_PANEL]: openEditCoursePanel,\r\n [types.OPEN_EDIT_COURSE_DIALOG]: openEditCourseDialog,\r\n [types.INPUT_CHANGE_CREATE_COURSE_FORM]: inputChangeCreateCourseForm,\r\n\r\n [types.START_SUBMIT_COURSE]: startSubmitCourse,\r\n [types.SUBMIT_COURSE_SUCCESS]: submitCourseSuccess,\r\n [types.SUBMIT_COURSE_FAILURE]: submitCourseFailure,\r\n [types.SUBMIT_COURSE_FINISHED]: submitCourseFinished,\r\n\r\n [types.EDIT_COURSE]: editCourse,\r\n\r\n [types.START_SUBMIT_COURSE_RECORD]: startSubmitCourseRecord,\r\n [types.SUBMIT_COURSE_RECORD_SUCCESS]: submitCourseRecordSuccess,\r\n [types.SUBMIT_COURSE_RECORD_FAILURE]: submitCourseRecordFailure,\r\n [types.SUBMIT_COURSE_RECORD_FINISHED]: submitCourseRecordFinished,\r\n\r\n [types.START_FETCH_RECORDS_FOR_THE_COURSE]: startFetchRecordsForTheCourse,\r\n [types.FETCH_RECORDS_FOR_THE_COURSE_SUCCESS]: fetchRecordsForTheCourseSuccess,\r\n [types.FETCH_RECORDS_FOR_THE_COURSE_FAILURE]: fetchRecordsForTheCourseFailure,\r\n [types.FETCH_RECORDS_FOR_THE_COURSE_FINISHED]: fetchRecordsForTheCourseFinished,\r\n\r\n [types.START_DELETE_COURSE_RECORD]: startDeleteCourseRecord,\r\n [types.DELETE_COURSE_RECORD_SUCCESS]: deleteCourseRecordSuccess,\r\n [types.DELETE_COURSE_RECORD_FAILURE]: deleteCourseRecordFailure,\r\n [types.DELETE_COURSE_RECORD_FINISHED]: deleteCourseRecordFinished,\r\n\r\n [types.ENABLE_EDIT_COURSE_RECORD]: enableEditCourseRecord,\r\n\r\n [types.INPUT_CHANGE_EDIT_COURSE_RECORD]: inputChangeEditCourseRecord,\r\n [types.OPEN_ADD_COURSE_RECORD_DIALOG]: openAddCourseRecordDialog,\r\n\r\n [types.DOCUMENT_SELECTED]: courseDocumentSelected,\r\n\r\n //Course Record Attachement\r\n [types.START_LOAD_ATTACHMENTS_FOR_COURSE_RECORD]: startLoadAttachmentsForCourseRecord,\r\n [types.LOAD_ATTACHMENTS_FOR_COURSE_RECORD_SUCCESS]: loadAttachmentsForCourseRecordSuccess,\r\n [types.LOAD_ATTACHMENTS_FOR_COURSE_RECORD_FAILURE]: loadAttachmentForCourseRecordFailure,\r\n [types.LOAD_ATTACHMENTS_FOR_COURSE_RECORD_FINISHED]: loadAttachmentForCourseRecordFinished,\r\n\r\n [types.REMOVE_COURSE_RECORD_ATTACHMENT]: removeAttachment,\r\n\r\n [types.REMOVE_COURSE_RECORD_ATTACHMENT_EDIT]: removeAttachmentFromEditRecordMode\r\n },\r\n INITIAL_STATE\r\n);\r\n","import { combineReducers } from 'redux';\r\n\r\nimport general from './general';\r\n\r\nimport users from './users';\r\nimport user from './user';\r\n\r\nimport companies from './companies';\r\nimport company from './company';\r\n\r\nimport branch from './branch';\r\nimport branches from './branches';\r\n\r\nimport settings from './settings';\r\n\r\nimport personnels from './personnels';\r\nimport personnel from './personnel';\r\n\r\nimport accidents from './accidents';\r\nimport accident from './accident';\r\n\r\nimport event from './event';\r\nimport events from './events';\r\n\r\nimport hazard from './hazard';\r\nimport hazards from './hazards';\r\n\r\nimport courses from './courses';\r\nimport course from './course';\r\n\r\nexport default combineReducers({\r\n companies,\r\n company,\r\n general,\r\n branches,\r\n branch,\r\n users,\r\n user,\r\n settings,\r\n personnels,\r\n personnel,\r\n accidents,\r\n accident,\r\n events,\r\n event,\r\n hazards,\r\n hazard,\r\n courses,\r\n course\r\n});\r\n","import {\r\n accept,\r\n body,\r\n createFetch,\r\n auth,\r\n createStack,\r\n header,\r\n init,\r\n method,\r\n parseJSON,\r\n debug\r\n} from 'http-client';\r\n\r\nconst commonStack = (loggedInUserId, token) => {\r\n return createStack(\r\n accept('application/json'),\r\n // This is pretty important for fetch to pretend it's XMLHttpRequest and the server to understand it as Ajax\r\n header('X-Requested-With', 'XMLHttpRequest'),\r\n //Custom header\r\n header('token', token),\r\n header('LoggedInUserId', loggedInUserId === undefined ? 0 : loggedInUserId),\r\n init('credentials', 'include'),\r\n auth('Bearer ' + token),\r\n parseJSON()\r\n );\r\n};\r\n\r\nconst commonStackWithoutJsonParse = (token, loggedInUserId) =>\r\n createStack(\r\n accept('application/json'),\r\n // This is pretty important for fetch to pretend it's XMLHttpRequest and the server to understand it as Ajax\r\n header('X-Requested-With', 'XMLHttpRequest'),\r\n //Custom header\r\n header('token', token),\r\n header('LoggedInUserId', loggedInUserId === undefined ? 0 : loggedInUserId),\r\n // add credentials for cors\r\n init('credentials', 'include'),\r\n auth('Bearer ' + token)\r\n );\r\n\r\nconst commonStackReturningImage = (token) => {\r\n return createStack(\r\n accept('application/json'),\r\n // This is pretty important for fetch to pretend it's XMLHttpRequest and the server to understand it as Ajax\r\n header('X-Requested-With', 'XMLHttpRequest'),\r\n //Custom header\r\n header('token', token),\r\n // add credentials for cors\r\n init('credentials', 'include'),\r\n auth('Bearer ' + token)\r\n // parse('blob')\r\n );\r\n};\r\nconst getStack = createStack(\r\n // Don't cache ajax request responses\r\n header(\r\n 'Cache-Control',\r\n 'no-cache,no-store,must-revalidate,max-age=-1,private'\r\n ),\r\n header('Expires', '-1'),\r\n header('Pragma', 'no-cache')\r\n);\r\n\r\nconst enhancedFetchWithBody = (\r\n path,\r\n payload,\r\n token,\r\n methodType,\r\n loggedInUserId\r\n) => {\r\n const commonStackWithoutJsonParseWithCustomHeader = commonStack(\r\n loggedInUserId,\r\n token\r\n );\r\n\r\n return createFetch(\r\n body(JSON.stringify(payload), 'application/json'),\r\n commonStackWithoutJsonParseWithCustomHeader,\r\n method(methodType),\r\n debug()\r\n )(path);\r\n};\r\n\r\n//This will be used for Put requests.\r\nconst enhancedFetchWithBodyNotExpectingReturnValue = (\r\n path,\r\n payload = {},\r\n token,\r\n methodType = 'POST'\r\n) => {\r\n const commonStackWithoutJsonParseWithCustomHeader = commonStackWithoutJsonParse(\r\n token,\r\n undefined\r\n );\r\n return createFetch(\r\n body(JSON.stringify(payload), 'application/json'),\r\n commonStackWithoutJsonParseWithCustomHeader,\r\n method(methodType),\r\n debug()\r\n )(path);\r\n};\r\n\r\nconst enhancedMultipartFetchWithBody = (path, formData) =>\r\n createFetch(body(formData), commonStack, method('POST'))(path);\r\n\r\nexport const get = (path, token, loggedInUserId) =>\r\n createFetch(\r\n commonStack(loggedInUserId, token),\r\n getStack\r\n )(path).then(rejectHandler);\r\n\r\nexport const getImage = (path, token) => {\r\n return createFetch(\r\n commonStackReturningImage(token),\r\n getStack\r\n )(path).then(rejectHandlerForImage);\r\n};\r\n\r\nexport const patch = (path, payload) =>\r\n enhancedFetchWithBody(path, payload, 'PATCH').then(rejectHandler);\r\n\r\nexport const post = (path, payload, token, loggedInUserId) => {\r\n return enhancedFetchWithBody(\r\n path,\r\n payload,\r\n token,\r\n 'POST',\r\n loggedInUserId\r\n ).then(rejectHandler);\r\n};\r\n\r\nexport const postWithoutReturn = (path, payload, token) => {\r\n return enhancedFetchWithBodyNotExpectingReturnValue(\r\n path,\r\n payload,\r\n token\r\n ).then(rejectHandler);\r\n};\r\n\r\nexport const put = (path, payload, token, loggedInUserId) => {\r\n return enhancedFetchWithBody(\r\n path,\r\n payload,\r\n token,\r\n 'PUT',\r\n loggedInUserId\r\n ).then(rejectHandler);\r\n};\r\n\r\nexport const putWithoutReturnValue = (path, payload, token) =>\r\n enhancedFetchWithBodyNotExpectingReturnValue(\r\n path,\r\n payload,\r\n token,\r\n 'PUT'\r\n ).then(rejectHandler);\r\n\r\nexport const multipart = (path, formData) =>\r\n enhancedMultipartFetchWithBody(path, formData).then(rejectHandler);\r\n\r\nexport const _delete = (path, _payload, token, loggedInUserId) => {\r\n return createFetch(\r\n commonStackWithoutJsonParse(token, loggedInUserId),\r\n method('DELETE')\r\n )(path).then(rejectHandler);\r\n};\r\n\r\nfunction rejectHandler(response) {\r\n if (response.ok) {\r\n return Promise.resolve(response);\r\n }\r\n return Promise.reject(response);\r\n}\r\n\r\nfunction rejectHandlerForImage(response) {\r\n if (!response.ok) {\r\n return Promise.reject(response);\r\n }\r\n\r\n return response.blob().then((res) => {\r\n var imgUrl = URL.createObjectURL(res);\r\n return imgUrl;\r\n });\r\n}\r\n\r\nexport default {\r\n get,\r\n patch,\r\n post,\r\n postWithoutReturn,\r\n put,\r\n multipart,\r\n delete: _delete\r\n};\r\n","import * as client from './baseClient';\r\n\r\nexport const getComapny = (companyId) =>\r\n client.get(`/api/companies/${companyId}`);\r\n\r\nexport const getAllCompanies = (loggedInUserId) =>\r\n client.get('/api/companies', undefined, loggedInUserId);\r\n\r\nexport const createCompany = (company, loggedInUserId) =>\r\n client.post('/api/companies', company, undefined, loggedInUserId);\r\n\r\nexport const editCompany = (company, loggedInUserId) =>\r\n client.put(\r\n `/api/companies/${company.id}`,\r\n company,\r\n undefined,\r\n loggedInUserId\r\n );\r\n","import { call, put, takeLatest, select } from 'redux-saga/effects';\r\n\r\nimport { types } from '../constants';\r\nimport * as companiesApi from '../api/companies';\r\nimport { submitMode } from '../constants';\r\n\r\nfunction* getLoggedInUserId() {\r\n const extractLoggedInUserId = (state) => state.users.user.item;\r\n\r\n const loggedInUser = yield select(extractLoggedInUserId);\r\n const loggedInUserId = loggedInUser && loggedInUser.id;\r\n return loggedInUserId;\r\n}\r\n\r\nfunction* watchFetchAllCompanies() {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_FETCH_ALL_COMPANIES });\r\n const { jsonData } = yield call(\r\n companiesApi.getAllCompanies,\r\n loggedInUserId\r\n );\r\n yield put({\r\n type: types.FETCH_ALL_COMPANIES_SUCCESS,\r\n allCompanies: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_ALL_COMPANIES_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_ALL_COMPANIES_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchCreateEditCompany({ company, mode }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_SUBMIT_COMPANY });\r\n const { jsonData } =\r\n mode === submitMode.CREATE\r\n ? yield call(companiesApi.createCompany, company, loggedInUserId)\r\n : yield call(companiesApi.editCompany, company, loggedInUserId);\r\n\r\n yield put({\r\n type: types.SUBMIT_COMPANY_SUCCESS,\r\n submittedCompany: jsonData\r\n });\r\n\r\n if (mode === submitMode.CREATE) {\r\n yield put({ type: types.OPEN_CREATE_COMPANY_DIALOG, open: false });\r\n } else {\r\n yield put({ type: types.OPEN_EDIT_COMPANY_DIALOG, open: false });\r\n yield put({\r\n type: types.DEACTIVATE_OR_DELETE_COMPANY_DIALOG,\r\n open: false,\r\n companyId: 0,\r\n status: 0\r\n });\r\n }\r\n } catch (e) {\r\n yield resolveError(types.SUBMIT_COMPANY_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.SUBMIT_COMPANY_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchDeleteOrDeactiveCompany({ company }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_SUBMIT_COMPANY });\r\n const { jsonData } = yield call(\r\n companiesApi.editCompany,\r\n company,\r\n loggedInUserId\r\n );\r\n\r\n yield put({\r\n type: types.SUBMIT_COMPANY_SUCCESS,\r\n submittedCompany: jsonData\r\n });\r\n\r\n yield put({ type: types.FETCH_ALL_COMPANIES });\r\n\r\n yield put({\r\n type: types.DEACTIVATE_OR_DELETE_COMPANY_DIALOG,\r\n open: false,\r\n companyId: 0,\r\n status: 0\r\n });\r\n } catch (e) {\r\n yield resolveError(types.SUBMIT_COMPANY_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.SUBMIT_COMPANY_FINISHED });\r\n }\r\n}\r\n//This is used to catch all the errors in case of request unsuccessful, and will extract the actual error message.\r\nfunction* resolveError(type, error) {\r\n let errorMessageCaptured = false;\r\n let completeErrorMessage = {};\r\n if (!error.ok) {\r\n try {\r\n const clone = error.clone();\r\n yield clone.text().then((text) => {\r\n completeErrorMessage = JSON.parse(text);\r\n errorMessageCaptured = true;\r\n });\r\n } catch (err) {\r\n errorMessageCaptured = true;\r\n completeErrorMessage = err;\r\n }\r\n\r\n if (errorMessageCaptured) {\r\n const errorMessage = extractErrorMessage(completeErrorMessage);\r\n yield put({ type, errorMessage });\r\n }\r\n }\r\n}\r\n\r\nfunction extractErrorMessage(completeErrorMessage) {\r\n let errorMessage = '';\r\n\r\n try {\r\n const message = completeErrorMessage.exceptionMessage\r\n ? completeErrorMessage.exceptionMessage.split('Content:')[1]\r\n : completeErrorMessage.messageDetail;\r\n\r\n errorMessage = JSON.parse(message).errorMessage;\r\n if (!errorMessage) {\r\n errorMessage = 'An error occured';\r\n }\r\n } catch (error) {\r\n errorMessage = 'An error occured';\r\n }\r\n\r\n return errorMessage;\r\n}\r\n\r\nexport default function* companiesWatcher() {\r\n yield takeLatest(types.FETCH_ALL_COMPANIES, watchFetchAllCompanies);\r\n yield takeLatest(types.SUBMIT_COMPANY, watchCreateEditCompany);\r\n yield takeLatest(\r\n types.DEACTIVATE_OR_DELETE_COMPANY,\r\n watchDeleteOrDeactiveCompany\r\n );\r\n}\r\n","import * as client from './baseClient';\r\n\r\nexport const getBranch = (branchId) => client.get(`/api/branches/${branchId}`);\r\nexport const getBranchForUser = (userId) =>\r\n client.get(`/api/branches/for-user/${userId}`);\r\n\r\nexport const getBranchById = (branchId) =>\r\n client.get(`/api/branches/${branchId}`);\r\n\r\nexport const getAllBranches = (loggedInUserId) =>\r\n client.get('/api/branches', undefined, loggedInUserId);\r\n\r\nexport const createBranch = (branch, loggedInUserId) =>\r\n client.post('/api/branches', branch, undefined, loggedInUserId);\r\n\r\nexport const updateBranch = (branch, loggedInUserId) =>\r\n client.put(`/api/branches/${branch.id}`, branch, undefined, loggedInUserId);\r\n","import { call, put, takeLatest, select } from 'redux-saga/effects';\r\n\r\nimport { types } from '../constants';\r\nimport * as branchesApi from '../api/branches';\r\nimport { submitMode } from '../constants';\r\n\r\nfunction* getLoggedInUserId() {\r\n const extractLoggedInUserId = (state) => state.users.user.item;\r\n\r\n const loggedInUser = yield select(extractLoggedInUserId);\r\n const loggedInUserId = loggedInUser && loggedInUser.id;\r\n return loggedInUserId;\r\n}\r\n\r\nfunction* watchLoadBranchesList() {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_GET_ALL_BRANCH });\r\n\r\n const { jsonData } = yield call(branchesApi.getAllBranches, loggedInUserId);\r\n\r\n yield put({ type: types.GET_ALL_BRANCH_SUCCESS, branches: jsonData }); //Temp fettching dummy data\r\n } catch (e) {\r\n yield resolveError(types.GET_ALL_BRANCH_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.GET_ALL_BRANCH_FINISH });\r\n }\r\n}\r\n\r\nfunction* watchCreateEditBranch({ branch, mode }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_SUBMIT_BRANCH });\r\n const { jsonData } =\r\n mode === submitMode.CREATE\r\n ? yield call(branchesApi.createBranch, branch, loggedInUserId)\r\n : yield call(branchesApi.updateBranch, branch, loggedInUserId);\r\n yield put({\r\n type: types.SUBMIT_BRANCH_SUCCESS,\r\n submittedBranch: jsonData\r\n });\r\n\r\n if (mode === submitMode.CREATE) {\r\n yield put({ type: types.OPEN_CREATE_BRANCH_DIALOG, open: false });\r\n } else {\r\n yield put({ type: types.OPEN_EDIT_BRANCH_DIALOG, open: false });\r\n yield put({\r\n type: types.DEACTIVATE_OR_DELETE_BRANCH_DIALOG,\r\n open: false,\r\n branchId: 0,\r\n status: 0\r\n });\r\n }\r\n } catch (e) {\r\n yield resolveError(types.SUBMIT_BRANCH_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.SUBMIT_BRANCH_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchDeleteOrDeactiveBranch({ branch }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_SUBMIT_BRANCH });\r\n const { jsonData } = yield call(branchesApi.updateBranch, branch, loggedInUserId);\r\n\r\n yield put({\r\n type: types.SUBMIT_BRANCH_SUCCESS,\r\n submittedBranch: jsonData\r\n });\r\n\r\n yield put({ type: types.GET_ALL_BRANCH });\r\n\r\n yield put({\r\n type: types.DEACTIVATE_OR_DELETE_BRANCH_DIALOG,\r\n open: false,\r\n branchId: 0,\r\n status: 0\r\n });\r\n } catch (e) {\r\n yield resolveError(types.SUBMIT_BRANCH_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.SUBMIT_BRANCH_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchFetchBranchDetailsForLoggedinUser({ userId }) {\r\n try {\r\n yield put({ type: types.START_FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER });\r\n\r\n const { jsonData } = yield call(branchesApi.getBranchForUser, userId);\r\n yield put({\r\n type: types.FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER_SUCCESS,\r\n branch: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchFetchBranchDetailsByBranchId({ branchId }) {\r\n try {\r\n yield put({ type: types.START_FETCH_BRANCH_DETAILS_BY_BRANCH_ID });\r\n\r\n const { jsonData } = yield call(branchesApi.getBranchById, branchId);\r\n yield put({\r\n type: types.FETCH_BRANCH_DETAILS_BY_BRANCH_ID_SUCCESS,\r\n branch: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_BRANCH_DETAILS_BY_BRANCH_ID_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_BRANCH_DETAILS_BY_BRANCH_ID_FINISHED });\r\n }\r\n}\r\n\r\n//This is used to catch all the errors in case of request unsuccessful, and will extract the actual error message.\r\nfunction* resolveError(type, error) {\r\n let errorMessageCaptured = false;\r\n let completeErrorMessage = {};\r\n if (!error.ok) {\r\n try {\r\n const clone = error.clone();\r\n yield clone.text().then((text) => {\r\n completeErrorMessage = JSON.parse(text);\r\n errorMessageCaptured = true;\r\n });\r\n } catch (err) {\r\n errorMessageCaptured = true;\r\n completeErrorMessage = err;\r\n }\r\n\r\n if (errorMessageCaptured) {\r\n const errorMessage = extractErrorMessage(completeErrorMessage);\r\n yield put({ type, errorMessage });\r\n }\r\n }\r\n}\r\n\r\nfunction extractErrorMessage(completeErrorMessage) {\r\n let errorMessage = '';\r\n\r\n try {\r\n const message = completeErrorMessage.exceptionMessage\r\n ? completeErrorMessage.exceptionMessage.split('Content:')[1]\r\n : completeErrorMessage.messageDetail;\r\n\r\n errorMessage = JSON.parse(message).errorMessage;\r\n if (!errorMessage) {\r\n errorMessage = 'An error occured';\r\n }\r\n } catch (error) {\r\n errorMessage = 'An error occured';\r\n }\r\n\r\n return errorMessage;\r\n}\r\nexport default function* BranchesWatcher() {\r\n yield takeLatest(types.GET_ALL_BRANCH, watchLoadBranchesList);\r\n\r\n yield takeLatest(types.SUBMIT_BRANCH, watchCreateEditBranch);\r\n\r\n yield takeLatest(\r\n types.DEACTIVATE_OR_DELETE_BRANCH,\r\n watchDeleteOrDeactiveBranch\r\n );\r\n\r\n yield takeLatest(\r\n types.FETCH_BRANCH_DETAILS_FOR_LOGGEDIN_USER,\r\n watchFetchBranchDetailsForLoggedinUser\r\n );\r\n yield takeLatest(\r\n types.FETCH_BRANCH_DETAILS_BY_BRANCH_ID,\r\n watchFetchBranchDetailsByBranchId\r\n );\r\n}\r\n","import * as client from './baseClient';\r\n\r\nexport const getPersonnel = (personnelId) =>\r\n client.get(`/api/personnels/${personnelId}`);\r\n\r\nexport const getAllPersonnels = (branchId) =>\r\n client.get(`/api/personnels/branch/${branchId}`);\r\n\r\nexport const createPersonnel = (personnel, loggedInUserId) =>\r\n client.post('/api/personnels', personnel, undefined, loggedInUserId);\r\n\r\nexport const updatePersonnel = (personnel, loggedInUserId) =>\r\n client.put(\r\n `/api/personnels/${personnel.id}`,\r\n personnel,\r\n undefined,\r\n loggedInUserId\r\n );\r\n\r\nexport const getCoursesForPersonnel = (personnelId) =>\r\n client.get(`/api/personnels/${personnelId}/courses`);\r\n","import { call, put, takeLatest, select } from 'redux-saga/effects';\r\n\r\nimport { types, submitMode, inputFieldNames} from '../constants';\r\nimport * as personnelssApi from '../api/personnels';\r\nimport { PERSONNEL } from './../constants/buttonNames';\r\n\r\n\r\nfunction* getLoggedInUserId() {\r\n const extractLoggedInUserId = (state) => state.users.user.item;\r\n\r\n const loggedInUser = yield select(extractLoggedInUserId);\r\n const loggedInUserId = loggedInUser && loggedInUser.id;\r\n return loggedInUserId;\r\n}\r\n\r\nfunction* watchFetchAllPersonnels({ branchId }) {\r\n try {\r\n yield put({ type: types.START_FETCH_ALL_PERSONNELS });\r\n\r\n const { jsonData } = yield call(personnelssApi.getAllPersonnels, branchId);\r\n\r\n yield put({\r\n type: types.FETCH_ALL_PERSONNELS_SUCCESS,\r\n allPersonnels: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_ALL_PERSONNELS_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_ALL_PERSONNELS_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchCreateEditPersonnel({ personnel, mode }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_SUBMIT_PERSONNEL });\r\n const { jsonData } =\r\n mode === submitMode.CREATE\r\n ? yield call(personnelssApi.createPersonnel, personnel, loggedInUserId)\r\n : yield call(personnelssApi.updatePersonnel, personnel, loggedInUserId);\r\n yield put({\r\n type: types.SUBMIT_PERSONNEL_SUCCESS,\r\n submittedPersonnel: jsonData\r\n });\r\n\r\n if (mode === submitMode.CREATE) {\r\n yield put({ type: types.OPEN_CREATE_PERSONNEL_DIALOG, open: false, isShort: false });\r\n if(personnel.isShort === true){\r\n yield put({ type: types.INPUT_CHANGE_CREATE_ACCIDENT_FORM, value: jsonData.id, inputFieldName: inputFieldNames.PERSONNEL });\r\n }\r\n } else {\r\n yield put({ type: types.OPEN_EDIT_PERSONNEL_DIALOG, open: false });\r\n yield put({ type: types.OPEN_DELETE_PERSONNEL_DIALOG, open: false });\r\n }\r\n } catch (e) {\r\n yield resolveError(types.SUBMIT_PERSONNEL_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.SUBMIT_PERSONNEL_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchFetchCoursesForPersonnel({ personnelId }) {\r\n try {\r\n yield put({ type: types.START_FETCH_COURSES_FOR_PERSONNEL });\r\n\r\n const { jsonData } = yield call(\r\n personnelssApi.getCoursesForPersonnel,\r\n personnelId\r\n );\r\n\r\n yield put({\r\n type: types.FETCH_COURSES_FOR_PERSONNEL_SUCCESS,\r\n coursesForPersonnel: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_COURSES_FOR_PERSONNEL_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_COURSES_FOR_PERSONNEL_FINISHED });\r\n }\r\n}\r\n\r\n//This is used to catch all the errors in case of request unsuccessful, and will extract the actual error message.\r\nfunction* resolveError(type, error) {\r\n let errorMessageCaptured = false;\r\n let completeErrorMessage = {};\r\n if (!error.ok) {\r\n try {\r\n const clone = error.clone();\r\n yield clone.text().then((text) => {\r\n completeErrorMessage = JSON.parse(text);\r\n errorMessageCaptured = true;\r\n });\r\n } catch (err) {\r\n errorMessageCaptured = true;\r\n completeErrorMessage = err;\r\n }\r\n\r\n if (errorMessageCaptured) {\r\n const errorMessage = extractErrorMessage(completeErrorMessage);\r\n yield put({ type, errorMessage });\r\n }\r\n }\r\n}\r\n\r\nfunction extractErrorMessage(completeErrorMessage) {\r\n let errorMessage = '';\r\n\r\n try {\r\n const message = completeErrorMessage.exceptionMessage\r\n ? completeErrorMessage.exceptionMessage.split('Content:')[1]\r\n : completeErrorMessage.messageDetail;\r\n\r\n errorMessage = JSON.parse(message).errorMessage;\r\n if (!errorMessage) {\r\n errorMessage = 'An error occured';\r\n }\r\n } catch (error) {\r\n errorMessage = 'An error occured';\r\n }\r\n\r\n return errorMessage;\r\n}\r\n\r\nexport default function* personnelsWatcher() {\r\n yield takeLatest(types.FETCH_ALL_PERSONNELS, watchFetchAllPersonnels);\r\n\r\n yield takeLatest(types.SUBMIT_PERSONNEL, watchCreateEditPersonnel);\r\n yield takeLatest(\r\n types.FETCH_COURSES_FOR_PERSONNEL,\r\n watchFetchCoursesForPersonnel\r\n );\r\n}\r\n","import * as client from './baseClient';\r\n\r\nexport const fetchUserPermissions = (userEmail) =>\r\n client.get(`/api/users/${userEmail}`);\r\n\r\nexport const changePassword = (userEmail, loggedInUserId) =>\r\n client.post(\r\n `/api/users/${userEmail}/change-password`,\r\n undefined,\r\n undefined,\r\n loggedInUserId\r\n );\r\n\r\nexport const getAllUsers = (loggedInUserId) =>\r\n client.get('/api/users', undefined, loggedInUserId);\r\n\r\nexport const createUser = (user, loggedInUserId) =>\r\n client.post('/api/users', user, undefined, loggedInUserId);\r\n\r\nexport const editUser = (user, loggedInUserId) =>\r\n client.put(`/api/users/${user.id}`, user, undefined, loggedInUserId);\r\n\r\nexport const checkIfUserIsRelatedToBranch = (payload) =>\r\n client.get(`/api/users/${payload.userId}/branch-exists/${payload.branchId}`);\r\n","import { call, put, takeLatest, select } from 'redux-saga/effects';\r\n\r\nimport { types } from '../constants';\r\nimport * as usersApi from '../api/users';\r\nimport { submitMode } from '../constants';\r\nimport { showMessage } from '../actions';\r\n\r\nfunction* getLoggedInUserId() {\r\n const extractLoggedInUserId = (state) => state.users.user.item;\r\n\r\n const loggedInUser = yield select(extractLoggedInUserId);\r\n const loggedInUserId = loggedInUser && loggedInUser.id;\r\n return loggedInUserId;\r\n}\r\n\r\nfunction* watchFetchUserPermissions({ userEmail }) {\r\n try {\r\n yield put({ type: types.START_FETCH_USER_DETAILS });\r\n const { jsonData } = yield call(usersApi.fetchUserPermissions, userEmail);\r\n yield put({ type: types.FETCH_USER_DETAILS_SUCCESS, user: jsonData });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_USER_DETAILS_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_USER_DETAILS_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchSendChnagePasswordRequest({ userEmail }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_SEND_CHANGE_PASSWORD_REQUEST });\r\n yield call(usersApi.changePassword, userEmail, loggedInUserId);\r\n yield put({ type: types.SEND_CHANGE_PASSWORD_REQUEST_SUCCESS });\r\n } catch (e) {\r\n yield resolveError(types.SEND_CHANGE_PASSWORD_REQUEST_FAILURE, e);\r\n } finally {\r\n yield put(\r\n showMessage(`A password change email has been sent to ${userEmail}.`)\r\n );\r\n yield put({ type: types.SEND_CHANGE_PASSWORD_REQUEST_FINISHED });\r\n yield put({ type: types.OPEN_CHANGE_PASSWORD_DIALOG, open: false });\r\n }\r\n}\r\n\r\nfunction* watchFetchAllUsers() {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_FETCH_ALL_USERS });\r\n const { jsonData } = yield call(usersApi.getAllUsers, loggedInUserId);\r\n yield put({\r\n type: types.FETCH_ALL_USERS_SUCCESS,\r\n allUsers: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_ALL_USERS_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_ALL_USERS_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchSubmitUser({ user, mode }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_SUBMIT_USER });\r\n const { jsonData } =\r\n mode === submitMode.CREATE\r\n ? yield call(usersApi.createUser, user, loggedInUserId)\r\n : yield call(usersApi.editUser, user, loggedInUserId);\r\n\r\n yield put({\r\n type: types.SUBMIT_USER_SUCCESS,\r\n submittedUser: jsonData\r\n });\r\n\r\n if (mode === submitMode.CREATE) {\r\n yield put({ type: types.OPEN_CREATE_USER_DIALOG, open: false });\r\n } else {\r\n yield put({ type: types.OPEN_EDIT_USER_DIALOG, open: false });\r\n yield put({ type: types.OPEN_DELETE_USER_DIALOG, open: false });\r\n }\r\n } catch (e) {\r\n yield resolveError(types.SUBMIT_USER_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.SUBMIT_USER_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchCheckBranchAccessForUser({ payload }) {\r\n try {\r\n yield put({ type: types.START_CHECK_BRANCH_ACCESS_FOR_USER });\r\n const { jsonData } = yield call(\r\n usersApi.checkIfUserIsRelatedToBranch,\r\n payload\r\n );\r\n yield put({\r\n type: types.CHECK_BRANCH_ACCESS_FOR_USER_SUCCESS,\r\n result: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.CHECK_BRANCH_ACCESS_FOR_USER_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.CHECK_BRANCH_ACCESS_FOR_USER_FINISHED });\r\n }\r\n}\r\n\r\n//This is used to catch all the errors in case of request unsuccessful, and will extract the actual error message.\r\nfunction* resolveError(type, error) {\r\n let errorMessageCaptured = false;\r\n let completeErrorMessage = {};\r\n if (!error.ok) {\r\n try {\r\n const clone = error.clone();\r\n yield clone.text().then((text) => {\r\n completeErrorMessage = JSON.parse(text);\r\n errorMessageCaptured = true;\r\n });\r\n } catch (err) {\r\n errorMessageCaptured = true;\r\n completeErrorMessage = err;\r\n }\r\n\r\n if (errorMessageCaptured) {\r\n const errorMessage = extractErrorMessage(completeErrorMessage);\r\n yield put({ type, errorMessage });\r\n }\r\n }\r\n}\r\n\r\nfunction extractErrorMessage(completeErrorMessage) {\r\n let errorMessage = '';\r\n\r\n try {\r\n const message = completeErrorMessage.exceptionMessage\r\n ? completeErrorMessage.exceptionMessage.split('Content:')[1]\r\n : completeErrorMessage.messageDetail;\r\n\r\n errorMessage = JSON.parse(message).errorMessage;\r\n if (!errorMessage) {\r\n errorMessage = 'An error occured';\r\n }\r\n } catch (error) {\r\n errorMessage = 'An error occured';\r\n }\r\n\r\n return errorMessage;\r\n}\r\n\r\nexport default function* branchesWatcher() {\r\n yield takeLatest(\r\n types.SEND_CHANGE_PASSWORD_REQUEST,\r\n watchSendChnagePasswordRequest\r\n );\r\n yield takeLatest(types.FETCH_USER_DETAILS, watchFetchUserPermissions);\r\n\r\n yield takeLatest(types.FETCH_ALL_USERS, watchFetchAllUsers);\r\n yield takeLatest(types.SUBMIT_USER, watchSubmitUser);\r\n\r\n yield takeLatest(\r\n types.CHECK_BRANCH_ACCESS_FOR_USER,\r\n watchCheckBranchAccessForUser\r\n );\r\n}\r\n","import * as client from './baseClient';\r\nimport axios from 'axios';\r\n\r\nexport const getDocuments = (documentType) =>\r\n client.get(`/api/settings/documents/${documentType}`);\r\n\r\n export const deleteAttachment = (branchId, payload) =>\r\n client.post(`/api/settings/deleteAttachment/delete/${branchId}`, payload);\r\n\r\n\r\n export const addAttachments = async (\r\n currentDirectory,\r\n branchId,\r\n attachments\r\n ) => {\r\n try {\r\n const formData = new FormData();\r\n formData.append(\r\n currentDirectory,\r\n attachments,\r\n attachments.name\r\n );\r\n\r\n return axios\r\n .post(\r\n `/api/settings/uploadAttachemt/blob/${branchId}`,\r\n formData,\r\n {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n )\r\n .then((resp) => { \r\n var tt = resp.data;\r\n return tt;\r\n }) \r\n .catch((err) => {\r\n // Handle Error Here\r\n console.error(err);\r\n });\r\n } catch (ex) {}\r\n };\r\n \r\n","import * as client from './baseClient';\r\nimport axios from 'axios';\r\n\r\nexport const getAttachmentsForSingle = (\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n) => {\r\n return client.get(\r\n `/api/attachments/${domainTypeId}/blobs/${parentId}`,\r\n loggedInUserId\r\n );\r\n};\r\n\r\nexport const getAttachmentsForDomain = (domainTypeId, loggedInUserId) => {\r\n return client.get(`/api/attachments/${domainTypeId}/blobs`, loggedInUserId);\r\n};\r\n\r\nexport const getDocumentsForBranch = (branchId) =>\r\n client.get(`/api/attachments/${branchId}/branch`);\r\n\r\nexport const deleteAttachments = (\r\n attachmentIdsString,\r\n loggedInUserId,\r\n branchId\r\n) => {\r\n return client.get(\r\n `/api/attachments/deleteAttachments/${attachmentIdsString}/${branchId}`,\r\n loggedInUserId\r\n );\r\n};\r\n\r\nexport const addAttachments = (\r\n domainTypeId,\r\n parentId,\r\n branchId,\r\n attachments\r\n) => {\r\n for (let i = 0; i < attachments.length; i++) {\r\n try {\r\n const formData = new FormData();\r\n formData.append(\r\n attachments[i].name,\r\n attachments[i].fileData,\r\n attachments[i].name\r\n );\r\n axios\r\n .post(\r\n `/api/attachments/${domainTypeId}/blobs/${parentId}/${branchId}`,\r\n formData,\r\n {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n )\r\n .then((resp) => {})\r\n .catch((err) => {\r\n // Handle Error Here\r\n console.error(err);\r\n });\r\n } catch (ex) {}\r\n }\r\n};\r\n","import { call, put, takeLatest } from 'redux-saga/effects';\r\n\r\nimport { types } from '../constants';\r\nimport * as settingsApi from '../api/settings';\r\nimport * as attachmentsApi from '../api/attachment';\r\nimport { documentType as documentIdType } from '../constants';\r\nimport { addAttachments } from './../api/attachment';\r\n\r\nfunction* watchFetchAllDocuments({ documentType, branchId }) {\r\n try {\r\n yield put({\r\n type: types.START_FETCH_ALL_DOCUMENTS,\r\n currentDocumentType: documentType,\r\n branchId\r\n });\r\n\r\n const { jsonData } = yield call(settingsApi.getDocuments, documentType);\r\n yield put({\r\n type: types.FETCH_ALL_DOCUMENTS_SUCCESS,\r\n allDocuments: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_ALL_DOCUMENTS_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_ALL_DOCUMENTS_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchFetchAllDocumentsForBranch({ branchId }) {\r\n try {\r\n yield put({\r\n type: types.START_FETCH_ALL_DOCUMENTS,\r\n currentDocumentType: documentIdType.DOCUMENT_LIBRARY_FOR_BRANCH,\r\n branchId\r\n });\r\n\r\n const { jsonData } = yield call(\r\n attachmentsApi.getDocumentsForBranch,\r\n branchId\r\n );\r\n yield put({\r\n type: types.FETCH_ALL_DOCUMENTS_SUCCESS,\r\n allDocuments: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_ALL_DOCUMENTS_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_ALL_DOCUMENTS_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchAddAttachment ( {payload}){\r\n \r\ntry {\r\n yield put({\r\n type: types.START_USER_ATTACHMENT_ADD\r\n });\r\n\r\n let branchId = payload.branchId;\r\n let currentDirectory = payload.currentDirectory;\r\n let attachments = payload.attachments;\r\n\r\n\r\n const data = yield call(\r\n settingsApi.addAttachments,\r\n currentDirectory,\r\n branchId,\r\n attachments\r\n );\r\n\r\n const attachment = data;\r\n\r\n yield put({\r\n type: types.USER_ATTACHMENT_ADD_SUCCESS,\r\n attachment\r\n });\r\n} catch (e) {\r\n yield resolveError(types.USER_ATTACHMENT_ADD_FAILURE, e);\r\n} finally {\r\n yield put({ type: types.USER_ATTACHMENT_ADD_FINISHED,\r\n});\r\n}\r\n \r\n}\r\n\r\n\r\nfunction* watchRemoveAttachment ( {payload}){\r\n \r\n try {\r\n yield put({\r\n type: types.START_USER_ATTACHMENT_REMOVE\r\n });\r\n \r\n let branchId = payload.branchId;\r\n const blobName = payload.documentName;\r\n \r\n const {jsonData} = yield call(\r\n settingsApi.deleteAttachment,\r\n branchId,\r\n payload\r\n );\r\n\r\n if(jsonData === true){\r\n yield put({\r\n type: types.USER_ATTACHMENT_REMOVE_SUCCESS,\r\n blobName\r\n });\r\n }\r\n\r\n \r\n } catch (e) {\r\n yield resolveError(types.USER_ATTACHMENT_REMOVE_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.USER_ATTACHMENT_REMOVE_FINISHED,\r\n });\r\n }\r\n \r\n }\r\n\r\n\r\n\r\n//This is used to catch all the errors in case of request unsuccessful, and will extract the actual error message.\r\nfunction* resolveError(type, error) {\r\n let errorMessageCaptured = false;\r\n let completeErrorMessage = {};\r\n if (!error.ok) {\r\n try {\r\n const clone = error.clone();\r\n yield clone.text().then((text) => {\r\n completeErrorMessage = JSON.parse(text);\r\n errorMessageCaptured = true;\r\n });\r\n } catch (err) {\r\n errorMessageCaptured = true;\r\n completeErrorMessage = err;\r\n }\r\n\r\n if (errorMessageCaptured) {\r\n const errorMessage = extractErrorMessage(completeErrorMessage);\r\n yield put({ type, errorMessage });\r\n }\r\n }\r\n}\r\n\r\nfunction extractErrorMessage(completeErrorMessage) {\r\n let errorMessage = '';\r\n\r\n try {\r\n const message = completeErrorMessage.exceptionMessage\r\n ? completeErrorMessage.exceptionMessage.split('Content:')[1]\r\n : completeErrorMessage.messageDetail;\r\n\r\n errorMessage = JSON.parse(message).errorMessage;\r\n if (!errorMessage) {\r\n errorMessage = 'An error occured';\r\n }\r\n } catch (error) {\r\n errorMessage = 'An error occured';\r\n }\r\n\r\n return errorMessage;\r\n}\r\n\r\nexport default function* settingsWatcher() {\r\n yield takeLatest(types.FETCH_ALL_DOCUMENTS, watchFetchAllDocuments);\r\n yield takeLatest(\r\n types.FETCH_ALL_DOCUMENTS_FOR_BRANCH,\r\n watchFetchAllDocumentsForBranch\r\n );\r\n yield takeLatest(types.USER_ATTACHMENT_ADD, watchAddAttachment);\r\n\r\n yield takeLatest(types.USER_ATTACHMENT_REMOVE, watchRemoveAttachment);\r\n}\r\n","import * as client from './baseClient';\r\n\r\nexport const getInjuriesByBranch = (branchId) =>\r\n client.get(`/api/injuries/branch/${branchId}`);\r\n\r\nexport const getInjuriesByCompany = (companyId) =>\r\n client.get(`/api/injuries/company/${companyId}`);\r\n\r\nexport const createAccident = (accident, loggedInUserId) =>\r\n client.post('/api/injuries', accident, undefined, loggedInUserId);\r\n\r\nexport const editAccident = (accident, loggedInUserId) =>\r\n client.put(\r\n `/api/injuries/${accident.id}`,\r\n accident,\r\n undefined,\r\n loggedInUserId\r\n );\r\n\r\nexport const deleteAccident = (accidentId, loggedInUserId) =>\r\n client._delete(\r\n `/api/injuries/${accidentId}`,\r\n undefined,\r\n undefined,\r\n loggedInUserId\r\n );\r\n","import { call, put, takeLatest, select } from 'redux-saga/effects';\r\n\r\nimport { types, domainType } from '../constants';\r\nimport * as accidentsApi from '../api/accidents';\r\nimport { submitMode } from '../constants';\r\nimport * as attachmentApi from '../api/attachment';\r\n\r\nimport {\r\n getRecordAttachmentsToBeAdded,\r\n getRecordAttachmentsToBeDeleted\r\n} from '../utils/attachmentUtils';\r\n\r\nfunction* getLoggedInUserId() {\r\n const extractLoggedInUserId = (state) => state.users.user.item;\r\n\r\n const loggedInUser = yield select(extractLoggedInUserId);\r\n const loggedInUserId = loggedInUser && loggedInUser.id;\r\n return loggedInUserId;\r\n}\r\n\r\nfunction* watchFetchAllAccidentsForBranch({ branchId }) {\r\n try {\r\n yield put({ type: types.START_FETCH_ALL_ACCIDENTS_FOR_BRANCH });\r\n\r\n const { jsonData } = yield call(accidentsApi.getInjuriesByBranch, branchId);\r\n yield put({\r\n type: types.FETCH_ALL_ACCIDENTS_FOR_BRANCH_SUCCESS,\r\n accidents: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_ALL_ACCIDENTS_FOR_BRANCH_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_ALL_ACCIDENTS_FOR_BRANCH_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchFetchAllAccidentsForCompany({ companyId }) {\r\n try {\r\n yield put({ type: types.START_FETCH_ALL_ACCIDENTS_FOR_COMPANY });\r\n\r\n const { jsonData } = yield call(\r\n accidentsApi.getInjuriesByCompany,\r\n companyId\r\n );\r\n yield put({\r\n type: types.FETCH_ALL_ACCIDENTS_FOR_COMPANY_SUCCESS,\r\n accidents: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_ALL_ACCIDENTS_FOR_COMPANY_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_ALL_ACCIDENTS_FOR_COMPANY_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchCreateEditAccident({ accident, mode }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_SUBMIT_ACCIDENT });\r\n const { jsonData } =\r\n mode === submitMode.CREATE\r\n ? yield call(accidentsApi.createAccident, accident, loggedInUserId)\r\n : yield call(accidentsApi.editAccident, accident, loggedInUserId);\r\n\r\n const domainTypeId = domainType.ACCIDENT;\r\n const branchId = accident.branchId;\r\n\r\n //Attachments\r\n //upload attachments if there is any\r\n const attachments = getRecordAttachmentsToBeAdded(accident);\r\n if (typeof attachments !== 'undefined' && attachments.length > 0) {\r\n let parentId = jsonData.id;\r\n yield put({\r\n type: types.UPLOAD_ATTACHMENTS_FOR_ACCIDENT,\r\n domainTypeId,\r\n parentId,\r\n branchId,\r\n attachments\r\n });\r\n }\r\n\r\n //Delete attachments if any\r\n const attachmentToDelete = getRecordAttachmentsToBeDeleted(accident);\r\n if (\r\n typeof attachmentToDelete !== 'undefined' &&\r\n attachmentToDelete.length > 0\r\n ) {\r\n let attachmentIdsArray = attachmentToDelete.map((g) => g.id);\r\n yield put({\r\n type: types.DELETE_ATTACHMENTS_FOR_ACCIDENT,\r\n attachmentIdsArray,\r\n loggedInUserId,\r\n branchId\r\n });\r\n }\r\n\r\n yield put({\r\n type: types.SUBMIT_ACCIDENT_SUCCESS,\r\n submittedAccident: jsonData\r\n });\r\n\r\n if (mode === submitMode.CREATE) {\r\n yield put({ type: types.OPEN_CREATE_ACCIDENT_DIALOG, open: false });\r\n } else {\r\n yield put({ type: types.OPEN_EDIT_ACCIDENT_DIALOG, open: false });\r\n // yield put({\r\n // type: types.DEACTIVATE_OR_DELETE_COMPANY_DIALOG,\r\n // open: false,\r\n // companyId: 0,\r\n // status: 0\r\n // });\r\n }\r\n } catch (e) {\r\n yield resolveError(types.SUBMIT_ACCIDENT_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.SUBMIT_ACCIDENT_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchDeleteOrDeactiveAccident({ payload }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_DEACTIVATE_OR_DELETE_ACCIDENT });\r\n const { jsonData } = yield call(\r\n accidentsApi.deleteAccident,\r\n payload.accident.id,\r\n loggedInUserId\r\n );\r\n\r\n yield put({\r\n type: types.DEACTIVATE_OR_DELETE_ACCIDENT_SUCCESS,\r\n submittedBranch: jsonData\r\n });\r\n\r\n yield put({\r\n type: types.FETCH_ALL_ACCIDENTS_FOR_BRANCH,\r\n branchId: payload.accident.branchId\r\n });\r\n\r\n yield put({\r\n type: types.DEACTIVATE_OR_DELETE_ACCIDENT_DIALOG,\r\n open: false,\r\n accident: null,\r\n status: null\r\n });\r\n } catch (e) {\r\n yield resolveError(types.DEACTIVATE_OR_DELETE_ACCIDENT_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.DEACTIVATE_OR_DELETE_ACCIDENT_FINISHED });\r\n }\r\n}\r\n\r\n//attachments\r\n\r\nfunction* watchLoadAttachmentFilesForAccident({\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n}) {\r\n try {\r\n yield put({ type: types.START_LOAD_ATTACHMENTS_FOR_ACCIDENT });\r\n const { jsonData } = yield call(\r\n attachmentApi.getAttachmentsForSingle,\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n );\r\n yield put({\r\n type: types.LOAD_ATTACHMENTS_FOR_ACCIDENT_SUCCESS,\r\n attachments: jsonData\r\n });\r\n } catch (error) {\r\n yield resolveError(types.LOAD_ATTACHMENTS_FOR_ACCIDENT_FAILURE, error);\r\n } finally {\r\n yield put({ type: types.LOAD_ATTACHMENTS_FOR_ACCIDENT_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchDeleteAttachmentsForAccident({\r\n attachmentIdsArray,\r\n loggedInUserId,\r\n branchId\r\n}) {\r\n try {\r\n if (\r\n typeof attachmentIdsArray !== 'undefined' &&\r\n attachmentIdsArray.length > 0\r\n ) {\r\n const attachmentIdsString = attachmentIdsArray.join(';');\r\n yield call(\r\n attachmentApi.deleteAttachments,\r\n attachmentIdsString,\r\n loggedInUserId,\r\n branchId\r\n );\r\n }\r\n } catch (error) {\r\n } finally {\r\n }\r\n}\r\n\r\nfunction* watchUploadAttachmentsForAccident({\r\n domainTypeId,\r\n parentId,\r\n branchId,\r\n attachments\r\n}) {\r\n try {\r\n yield call(\r\n attachmentApi.addAttachments,\r\n domainTypeId,\r\n parentId,\r\n branchId,\r\n attachments\r\n );\r\n } catch (error) {\r\n } finally {\r\n }\r\n}\r\n\r\n//This is used to catch all the errors in case of request unsuccessful, and will extract the actual error message.\r\nfunction* resolveError(type, error) {\r\n let errorMessageCaptured = false;\r\n let completeErrorMessage = {};\r\n if (!error.ok) {\r\n try {\r\n const clone = error.clone();\r\n yield clone.text().then((text) => {\r\n completeErrorMessage = JSON.parse(text);\r\n errorMessageCaptured = true;\r\n });\r\n } catch (err) {\r\n errorMessageCaptured = true;\r\n completeErrorMessage = err;\r\n }\r\n\r\n if (errorMessageCaptured) {\r\n const errorMessage = extractErrorMessage(completeErrorMessage);\r\n yield put({ type, errorMessage });\r\n }\r\n }\r\n}\r\n\r\nfunction extractErrorMessage(completeErrorMessage) {\r\n let errorMessage = '';\r\n\r\n try {\r\n const message = completeErrorMessage.exceptionMessage\r\n ? completeErrorMessage.exceptionMessage.split('Content:')[1]\r\n : completeErrorMessage.messageDetail;\r\n\r\n errorMessage = JSON.parse(message).errorMessage;\r\n if (!errorMessage) {\r\n errorMessage = 'An error occured';\r\n }\r\n } catch (error) {\r\n errorMessage = 'An error occured';\r\n }\r\n\r\n return errorMessage;\r\n}\r\nexport default function* BranchesWatcher() {\r\n yield takeLatest(\r\n types.FETCH_ALL_ACCIDENTS_FOR_BRANCH,\r\n watchFetchAllAccidentsForBranch\r\n );\r\n\r\n yield takeLatest(\r\n types.FETCH_ALL_ACCIDENTS_FOR_COMPANY,\r\n watchFetchAllAccidentsForCompany\r\n );\r\n\r\n yield takeLatest(types.SUBMIT_ACCIDENT, watchCreateEditAccident);\r\n\r\n yield takeLatest(\r\n types.DEACTIVATE_OR_DELETE_ACCIDENT,\r\n watchDeleteOrDeactiveAccident\r\n );\r\n\r\n yield takeLatest(\r\n types.UPLOAD_ATTACHMENTS_FOR_ACCIDENT,\r\n watchUploadAttachmentsForAccident\r\n );\r\n\r\n yield takeLatest(\r\n types.DELETE_ATTACHMENTS_FOR_ACCIDENT,\r\n watchDeleteAttachmentsForAccident\r\n );\r\n\r\n yield takeLatest(\r\n types.LOAD_ATTACHMENTS_FOR_ACCIDENT,\r\n watchLoadAttachmentFilesForAccident\r\n );\r\n}\r\n","import * as client from './baseClient';\r\n\r\nexport const getEventsByBranch = (branchId) =>\r\n client.get(`/api/events/branch/${branchId}`);\r\n\r\nexport const getEventsByCompany = (companyId) =>\r\n client.get(`/api/events/company/${companyId}`);\r\n\r\nexport const createEvent = (event, loggedInUserId) =>\r\n client.post('/api/events', event, undefined, loggedInUserId);\r\n\r\nexport const editEvent = (event, loggedInUserId) =>\r\n client.put(`/api/events/${event.id}`, event, undefined, loggedInUserId);\r\n\r\nexport const deleteEvent = (eventId, loggedInUserId) =>\r\n client._delete(\r\n `/api/events/${eventId}`,\r\n undefined,\r\n undefined,\r\n loggedInUserId\r\n );\r\n\r\nexport const getRecordsForEvent = (eventId) =>\r\n client.get(`/api/events/${eventId}/records`);\r\n\r\nexport const deleteEventRecord = (payload, loggedInUserId) =>\r\n client._delete(\r\n `/api/events/${payload.eventId}/records/${payload.recordId}`,\r\n undefined,\r\n undefined,\r\n loggedInUserId\r\n );\r\n\r\nexport const createRecord = (payload, loggedInUserId) =>\r\n client.post(\r\n `/api/events/${payload.eventId}/records`,\r\n payload,\r\n undefined,\r\n loggedInUserId\r\n );\r\n\r\nexport const updateRecord = (payload, loggedInUserId) =>\r\n client.put(\r\n `/api/events/${payload.eventId}/records/${payload.id}`,\r\n payload,\r\n undefined,\r\n loggedInUserId\r\n );\r\n","import { call, put, takeLatest, select } from 'redux-saga/effects';\r\n\r\nimport { types, domainType } from '../constants';\r\nimport * as eventsApi from '../api/events';\r\nimport { submitMode } from '../constants';\r\nimport * as attachmentApi from '../api/attachment';\r\nimport {\r\n getRecordAttachmentsToBeAdded,\r\n getRecordAttachmentsToBeDeleted\r\n} from '../utils/attachmentUtils';\r\n\r\nfunction* getLoggedInUserId() {\r\n const extractLoggedInUserId = (state) => state.users.user.item;\r\n\r\n const loggedInUser = yield select(extractLoggedInUserId);\r\n const loggedInUserId = loggedInUser && loggedInUser.id;\r\n return loggedInUserId;\r\n}\r\n\r\nfunction* watchFetchAllEventsForBranch({ branchId }) {\r\n try {\r\n yield put({ type: types.START_FETCH_ALL_EVENTS_FOR_BRANCH });\r\n\r\n const { jsonData } = yield call(eventsApi.getEventsByBranch, branchId);\r\n yield put({\r\n type: types.FETCH_ALL_EVENTS_FOR_BRANCH_SUCCESS,\r\n events: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_ALL_EVENTS_FOR_BRANCH_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_ALL_EVENTS_FOR_BRANCH_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchFetchAllEventsForCompany({ companyId }) {\r\n try {\r\n yield put({ type: types.START_FETCH_ALL_EVENTS_FOR_COMPANY });\r\n\r\n const { jsonData } = yield call(eventsApi.getEventsByCompany, companyId);\r\n yield put({\r\n type: types.FETCH_ALL_EVENTS_FOR_COMPANY_SUCCESS,\r\n events: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_ALL_EVENTS_FOR_COMPANY_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_ALL_EVENTS_FOR_COMPANY_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchCreateEditEvent({ event, mode }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_SUBMIT_EVENT });\r\n const { jsonData } =\r\n mode === submitMode.CREATE\r\n ? yield call(eventsApi.createEvent, event, loggedInUserId)\r\n : yield call(eventsApi.editEvent, event, loggedInUserId);\r\n yield put({\r\n type: types.SUBMIT_EVENT_SUCCESS,\r\n submittedEvent: jsonData\r\n });\r\n\r\n if (mode === submitMode.CREATE) {\r\n yield put({ type: types.OPEN_CREATE_EVENT_DIALOG, open: false });\r\n } else {\r\n yield put({ type: types.OPEN_EDIT_EVENT_DIALOG, open: false });\r\n yield put({\r\n type: types.FETCH_ALL_EVENTS_FOR_BRANCH,\r\n branchId: event.branchId\r\n });\r\n }\r\n } catch (e) {\r\n yield resolveError(types.SUBMIT_EVENT_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.SUBMIT_EVENT_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchDeleteEvent({ event }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_DELETE_EVENT });\r\n\r\n yield call(eventsApi.deleteEvent, event.id, loggedInUserId);\r\n yield put({\r\n type: types.DELETE_EVENT_SUCCESS,\r\n eventId: event.id\r\n });\r\n yield put({ type: types.OPEN_DELETE_EVENT_DIALOG, open: false });\r\n } catch (e) {\r\n yield resolveError(types.DELETE_EVENT_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.DELETE_EVENT_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchFetchRecordsForTheEvent({ eventId }) {\r\n try {\r\n yield put({ type: types.START_FETCH_RECORDS_FOR_THE_EVENT });\r\n\r\n const { jsonData } = yield call(eventsApi.getRecordsForEvent, eventId);\r\n yield put({\r\n type: types.FETCH_RECORDS_FOR_THE_EVENT_SUCCESS,\r\n records: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_RECORDS_FOR_THE_EVENT_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_RECORDS_FOR_THE_EVENT_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchDeleteEventRecord({ payload }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_DELETE_EVENT_RECORD });\r\n\r\n yield call(eventsApi.deleteEventRecord, payload, loggedInUserId);\r\n yield put({\r\n type: types.DELETE_EVENT_RECORD_SUCCESS,\r\n recordId: payload.recordId\r\n });\r\n } catch (e) {\r\n yield resolveError(types.DELETE_EVENT_RECORD_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.DELETE_EVENT_RECORD_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchSubmitEventRecord({ payload, mode, branchId }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_SUBMIT_EVENT_RECORD });\r\n\r\n const { jsonData } =\r\n mode === submitMode.CREATE\r\n ? yield call(eventsApi.createRecord, payload, loggedInUserId)\r\n : yield call(eventsApi.updateRecord, payload, loggedInUserId);\r\n\r\n const domainTypeId = domainType.EVENT_RECORD;\r\n\r\n //Attachments\r\n //upload attachments if there is any\r\n const attachments = getRecordAttachmentsToBeAdded(payload);\r\n if (typeof attachments !== 'undefined' && attachments.length > 0) {\r\n let parentId = jsonData.id;\r\n yield put({\r\n type: types.UPLOAD_ATTACHMENTS_FOR_EVENT_RECORD,\r\n domainTypeId,\r\n parentId,\r\n branchId,\r\n attachments\r\n });\r\n }\r\n\r\n //Delete attachments if any\r\n const attachmentToDelete = getRecordAttachmentsToBeDeleted(payload);\r\n if (\r\n typeof attachmentToDelete !== 'undefined' &&\r\n attachmentToDelete.length > 0\r\n ) {\r\n let attachmentIdsArray = attachmentToDelete.map((g) => g.id);\r\n yield put({\r\n type: types.DELETE_ATTACHMENTS_FOR_EVENT_RECORD,\r\n attachmentIdsArray,\r\n loggedInUserId,\r\n branchId\r\n });\r\n }\r\n\r\n yield put({\r\n type: types.SUBMIT_EVENT_RECORD_SUCCESS,\r\n createdRecord: jsonData\r\n });\r\n\r\n yield put({\r\n type: types.FETCH_RECORDS_FOR_THE_EVENT,\r\n eventId: payload.eventId\r\n });\r\n\r\n if (mode === submitMode.UPDATE) {\r\n yield put({\r\n type: types.ENABLE_EDIT_EVENT_RECORD,\r\n enableEditRecordMode: false,\r\n recordId: payload.id\r\n });\r\n } else {\r\n yield put({\r\n type: types.OPEN_ADD_EVENT_RECORD_DIALOG,\r\n open: false\r\n });\r\n }\r\n } catch (e) {\r\n yield resolveError(types.SUBMIT_EVENT_RECORD_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.SUBMIT_EVENT_RECORD_FINISHED });\r\n }\r\n}\r\n\r\n//attachments\r\n\r\nfunction* watchLoadAttachmentFilesForEventRecord({\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n}) {\r\n try {\r\n yield put({ type: types.START_LOAD_ATTACHMENTS_FOR_EVENT_RECORD });\r\n const { jsonData } = yield call(\r\n attachmentApi.getAttachmentsForSingle,\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n );\r\n yield put({\r\n type: types.LOAD_ATTACHMENTS_FOR_EVENT_RECORD_SUCCESS,\r\n attachments: jsonData\r\n });\r\n } catch (error) {\r\n yield resolveError(types.LOAD_ATTACHMENTS_FOR_EVENT_RECORD_FAILURE, error);\r\n } finally {\r\n yield put({ type: types.LOAD_ATTACHMENTS_FOR_EVENT_RECORD_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchDeleteAttachmentsForEventRecord({\r\n attachmentIdsArray,\r\n loggedInUserId,\r\n branchId\r\n}) {\r\n try {\r\n if (\r\n typeof attachmentIdsArray !== 'undefined' &&\r\n attachmentIdsArray.length > 0\r\n ) {\r\n const attachmentIdsString = attachmentIdsArray.join(';');\r\n yield call(\r\n attachmentApi.deleteAttachments,\r\n attachmentIdsString,\r\n loggedInUserId,\r\n branchId\r\n );\r\n }\r\n } catch (error) {\r\n } finally {\r\n }\r\n}\r\n\r\nfunction* watchUploadAttachmentsForEvent({\r\n domainTypeId,\r\n parentId,\r\n branchId,\r\n attachments\r\n}) {\r\n try {\r\n yield call(\r\n attachmentApi.addAttachments,\r\n domainTypeId,\r\n parentId,\r\n branchId,\r\n attachments\r\n );\r\n } catch (error) {\r\n } finally {\r\n }\r\n}\r\n\r\n//This is used to catch all the errors in case of request unsuccessful, and will extract the actual error message.\r\nfunction* resolveError(type, error) {\r\n let errorMessageCaptured = false;\r\n let completeErrorMessage = {};\r\n if (!error.ok) {\r\n try {\r\n const clone = error.clone();\r\n yield clone.text().then((text) => {\r\n completeErrorMessage = JSON.parse(text);\r\n errorMessageCaptured = true;\r\n });\r\n } catch (err) {\r\n errorMessageCaptured = true;\r\n completeErrorMessage = err;\r\n }\r\n\r\n if (errorMessageCaptured) {\r\n const errorMessage = extractErrorMessage(completeErrorMessage);\r\n yield put({ type, errorMessage });\r\n }\r\n }\r\n}\r\n\r\nfunction extractErrorMessage(completeErrorMessage) {\r\n let errorMessage = '';\r\n\r\n try {\r\n const message = completeErrorMessage.exceptionMessage\r\n ? completeErrorMessage.exceptionMessage.split('Content:')[1]\r\n : completeErrorMessage.messageDetail;\r\n\r\n errorMessage = JSON.parse(message).errorMessage;\r\n if (!errorMessage) {\r\n errorMessage = 'An error occured';\r\n }\r\n } catch (error) {\r\n errorMessage = 'An error occured';\r\n }\r\n\r\n return errorMessage;\r\n}\r\nexport default function* BranchesWatcher() {\r\n yield takeLatest(\r\n types.FETCH_ALL_EVENTS_FOR_BRANCH,\r\n watchFetchAllEventsForBranch\r\n );\r\n yield takeLatest(\r\n types.FETCH_ALL_EVENTS_FOR_COMPANY,\r\n watchFetchAllEventsForCompany\r\n );\r\n yield takeLatest(types.SUBMIT_EVENT, watchCreateEditEvent);\r\n yield takeLatest(types.DELETE_EVENT, watchDeleteEvent);\r\n\r\n yield takeLatest(\r\n types.FETCH_RECORDS_FOR_THE_EVENT,\r\n watchFetchRecordsForTheEvent\r\n );\r\n\r\n yield takeLatest(types.DELETE_EVENT_RECORD, watchDeleteEventRecord);\r\n yield takeLatest(types.SUBMIT_EVENT_RECORD, watchSubmitEventRecord);\r\n\r\n yield takeLatest(\r\n types.UPLOAD_ATTACHMENTS_FOR_EVENT_RECORD,\r\n watchUploadAttachmentsForEvent\r\n );\r\n\r\n yield takeLatest(\r\n types.DELETE_ATTACHMENTS_FOR_EVENT_RECORD,\r\n watchDeleteAttachmentsForEventRecord\r\n );\r\n\r\n yield takeLatest(\r\n types.LOAD_ATTACHMENTS_FOR_EVENT_RECORD,\r\n watchLoadAttachmentFilesForEventRecord\r\n );\r\n}\r\n","import * as client from './baseClient';\r\n\r\nexport const getHazardsByBranch = (branchId) =>\r\n client.get(`/api/hazards/branch/${branchId}`);\r\n\r\nexport const getHazardsByCompany = (companyId) =>\r\n client.get(`/api/hazards/company/${companyId}`);\r\n\r\nexport const createHazard = (hazard, loggedInUserId) =>\r\n client.post('/api/hazards', hazard, undefined, loggedInUserId);\r\n\r\nexport const editHazard = (hazard, loggedInUserId) =>\r\n client.put(`/api/hazards/${hazard.id}`, hazard, undefined, loggedInUserId);\r\n\r\nexport const deleteHazard = (hazardId, loggedInUserId) =>\r\n client._delete(\r\n `/api/hazards/${hazardId}`,\r\n undefined,\r\n undefined,\r\n loggedInUserId\r\n );\r\n\r\nexport const getControlsForHazard = (hazardId) =>\r\n client.get(`/api/hazards/${hazardId}/controls`);\r\n\r\nexport const deleteHazardControl = (payload, loggedInUserId) =>\r\n client._delete(\r\n `/api/hazards/${payload.hazardId}/controls/${payload.id}`,\r\n undefined,\r\n undefined,\r\n loggedInUserId\r\n );\r\n\r\nexport const createControl = (payload, loggedInUserId) =>\r\n client.post(\r\n `/api/hazards/${payload.hazardId}/controls`,\r\n payload,\r\n undefined,\r\n loggedInUserId\r\n );\r\n\r\nexport const updateControl = (payload, loggedInUserId) =>\r\n client.put(\r\n `/api/hazards/${payload.hazardId}/controls/${payload.id}`,\r\n payload,\r\n undefined,\r\n loggedInUserId\r\n );\r\n\r\n//Reviews\r\nexport const getReviewsForHazard = (hazardId) =>\r\n client.get(`/api/hazards/${hazardId}/reviews`);\r\n\r\nexport const deleteHazardReview = (payload, loggedInUserId) =>\r\n client._delete(\r\n `/api/hazards/${payload.hazardId}/reviews/${payload.reviewId}`,\r\n undefined,\r\n undefined,\r\n loggedInUserId\r\n );\r\n\r\nexport const createReview = (payload, loggedInUserId) =>\r\n client.post(\r\n `/api/hazards/${payload.hazardId}/reviews`,\r\n payload,\r\n undefined,\r\n loggedInUserId\r\n );\r\n\r\nexport const updateReview = (payload, loggedInUserId) =>\r\n client.put(\r\n `/api/hazards/${payload.hazardId}/reviews/${payload.id}`,\r\n payload,\r\n undefined,\r\n loggedInUserId\r\n );\r\n\r\n//management logs\r\nexport const getManagementLogsForHazard = (hazardId) =>\r\n client.get(`/api/hazards/${hazardId}/logs`);\r\n\r\nexport const deleteHazardManagementLog = (payload, loggedInUserId) =>\r\n client._delete(\r\n `/api/hazards/${payload.hazardId}/logs/${payload.reviewId}`,\r\n undefined,\r\n undefined,\r\n loggedInUserId\r\n );\r\n\r\nexport const createManagementLog = (payload, loggedInUserId) =>\r\n client.post(\r\n `/api/hazards/${payload.hazardId}/logs`,\r\n payload,\r\n undefined,\r\n loggedInUserId\r\n );\r\n\r\nexport const updateManagementLog = (payload, loggedInUserId) =>\r\n client.put(\r\n `/api/hazards/${payload.hazardId}/logs/${payload.id}`,\r\n payload,\r\n undefined,\r\n loggedInUserId\r\n );\r\n","import { call, put, takeLatest, select } from 'redux-saga/effects';\r\n\r\nimport { types, domainType } from '../constants';\r\nimport * as hazardsApi from '../api/hazards';\r\nimport * as attachmentApi from '../api/attachment';\r\n\r\nimport { submitMode } from '../constants';\r\nimport {\r\n getRecordAttachmentsToBeAdded,\r\n getRecordAttachmentsToBeDeleted\r\n} from '../utils/attachmentUtils';\r\n\r\nfunction* getLoggedInUserId() {\r\n const extractLoggedInUserId = (state) => state.users.user.item;\r\n\r\n const loggedInUser = yield select(extractLoggedInUserId);\r\n const loggedInUserId = loggedInUser && loggedInUser.id;\r\n return loggedInUserId;\r\n}\r\n\r\nfunction* watchFetchAllHazardsForBranch({ branchId }) {\r\n try {\r\n yield put({ type: types.START_FETCH_ALL_HAZARDS_FOR_BRANCH });\r\n\r\n const { jsonData } = yield call(hazardsApi.getHazardsByBranch, branchId);\r\n\r\n yield put({ type: types.CLEAR_HAZARD_FILTERS });\r\n yield put({\r\n type: types.FETCH_ALL_HAZARDS_FOR_BRANCH_SUCCESS,\r\n hazards: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_ALL_HAZARDS_FOR_BRANCH_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_ALL_HAZARDS_FOR_BRANCH_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchFetchAllHazardsForCompany({ companyId }) {\r\n try {\r\n yield put({ type: types.START_FETCH_ALL_HAZARDS_FOR_COMPANY });\r\n const { jsonData } = yield call(hazardsApi.getHazardsByCompany, companyId);\r\n yield put({\r\n type: types.FETCH_ALL_HAZARDS_FOR_COMPANY_SUCCESS,\r\n hazards: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_ALL_HAZARDS_FOR_COMPANY_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_ALL_HAZARDS_FOR_COMPANY_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchCreateEditHazard({ hazard, mode }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_SUBMIT_HAZARD });\r\n const { jsonData } =\r\n mode === submitMode.CREATE\r\n ? yield call(hazardsApi.createHazard, hazard, loggedInUserId)\r\n : yield call(hazardsApi.editHazard, hazard, loggedInUserId);\r\n\r\n const domainTypeId = domainType.HAZARD;\r\n\r\n const branchId = hazard.branchId;\r\n\r\n //Attachments\r\n //upload attachments if there is any\r\n\r\n const attachments = getRecordAttachmentsToBeAdded(hazard);\r\n if (typeof attachments !== 'undefined' && attachments.length > 0) {\r\n let parentId = jsonData.id;\r\n yield put({\r\n type: types.UPLOAD_ATTACHMENTS_FOR_HAZARD,\r\n domainTypeId,\r\n parentId,\r\n branchId,\r\n attachments\r\n });\r\n }\r\n\r\n //Delete attachments if any\r\n const attachmentToDelete = getRecordAttachmentsToBeDeleted(hazard);\r\n if (\r\n typeof attachmentToDelete !== 'undefined' &&\r\n attachmentToDelete.length > 0\r\n ) {\r\n let attachmentIdsArray = attachmentToDelete.map((g) => g.id);\r\n yield put({\r\n type: types.DELETE_ATTACHMENTS_FOR_HAZARD,\r\n attachmentIdsArray,\r\n loggedInUserId,\r\n branchId\r\n });\r\n }\r\n\r\n yield put({\r\n type: types.SUBMIT_HAZARD_SUCCESS,\r\n submittedHazard: jsonData\r\n });\r\n\r\n if (mode === submitMode.CREATE) {\r\n yield put({ type: types.OPEN_CREATE_HAZARD_DIALOG, open: false });\r\n } else {\r\n yield put({ type: types.OPEN_EDIT_HAZARD_DIALOG, open: false });\r\n }\r\n } catch (e) {\r\n yield resolveError(types.SUBMIT_HAZARD_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.SUBMIT_HAZARD_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchDeleteHazard({ hazard }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n hazard.status = 4;\r\n yield put({ type: types.START_DELETE_HAZARD });\r\n const { jsonData } = yield call(\r\n hazardsApi.editHazard,\r\n hazard,\r\n loggedInUserId\r\n );\r\n yield put({\r\n type: types.DELETE_HAZARD_SUCCESS,\r\n hazardId: hazard.id\r\n });\r\n yield put({ type: types.OPEN_DELETE_HAZARD_DIALOG, open: false });\r\n } catch (e) {\r\n yield resolveError(types.DELETE_HAZARD_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.DELETE_HAZARD_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchFetchControlsForTheHazard({ hazardId }) {\r\n try {\r\n yield put({ type: types.START_FETCH_CONTROLS_FOR_THE_HAZARD });\r\n\r\n const { jsonData } = yield call(hazardsApi.getControlsForHazard, hazardId);\r\n yield put({\r\n type: types.FETCH_CONTROLS_FOR_THE_HAZARD_SUCCESS,\r\n controls: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_CONTROLS_FOR_THE_HAZARD_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_CONTROLS_FOR_THE_HAZARD_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchDeleteHazardControl({ payload }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_DELETE_HAZARD_CONTROL });\r\n yield call(hazardsApi.deleteHazardControl, payload, loggedInUserId);\r\n\r\n yield put({\r\n type: types.DELETE_HAZARD_CONTROL_SUCCESS,\r\n controlId: payload.id\r\n });\r\n yield put({\r\n type: types.OPEN_DELETE_HAZARD_CONTROL_DIALOG,\r\n open: false,\r\n controlId: payload.id\r\n });\r\n } catch (e) {\r\n yield resolveError(types.DELETE_HAZARD_CONTROL_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.DELETE_HAZARD_CONTROL_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchSubmitHazardControl({ payload, mode, branchId }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_SUBMIT_HAZARD_CONTROL });\r\n\r\n const { jsonData } =\r\n mode === submitMode.CREATE\r\n ? yield call(hazardsApi.createControl, payload, loggedInUserId)\r\n : yield call(hazardsApi.updateControl, payload, loggedInUserId);\r\n\r\n yield put({\r\n type: types.SUBMIT_HAZARD_CONTROL_SUCCESS,\r\n createdControl: jsonData\r\n });\r\n\r\n yield put({\r\n type: types.FETCH_CONTROLS_FOR_THE_HAZARD,\r\n hazardId: payload.hazardId\r\n });\r\n\r\n if (mode === submitMode.UPDATE) {\r\n yield put({\r\n type: types.ENABLE_EDIT_HAZARD_CONTROL,\r\n enableEditControlMode: false,\r\n controlId: payload.id\r\n });\r\n } else {\r\n yield put({\r\n type: types.OPEN_ADD_HAZARD_CONTROL_DIALOG,\r\n open: false\r\n });\r\n }\r\n } catch (e) {\r\n yield resolveError(types.SUBMIT_HAZARD_CONTROL_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.SUBMIT_HAZARD_CONTROL_FINISHED });\r\n }\r\n}\r\n\r\n//Review\r\n\r\nfunction* watchFetchReviewsForTheHazard({ hazardId }) {\r\n try {\r\n yield put({ type: types.START_FETCH_REVIEWS_FOR_THE_HAZARD });\r\n\r\n const { jsonData } = yield call(hazardsApi.getReviewsForHazard, hazardId);\r\n yield put({\r\n type: types.FETCH_REVIEWS_FOR_THE_HAZARD_SUCCESS,\r\n reviews: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_REVIEWS_FOR_THE_HAZARD_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_REVIEWS_FOR_THE_HAZARD_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchSubmitHazardReview({ payload, mode, branchId }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_SUBMIT_HAZARD_REVIEW });\r\n\r\n const { jsonData } =\r\n mode === submitMode.CREATE\r\n ? yield call(hazardsApi.createReview, payload, loggedInUserId)\r\n : yield call(hazardsApi.updateReview, payload, loggedInUserId);\r\n\r\n const domainTypeId = domainType.HAZARD_REVIEW;\r\n\r\n //Attachments\r\n //upload attachments if there is any\r\n const attachments = getRecordAttachmentsToBeAdded(payload);\r\n if (typeof attachments !== 'undefined' && attachments.length > 0) {\r\n let parentId = jsonData.id;\r\n yield put({\r\n type: types.UPLOAD_ATTACHMENTS_FOR_HAZARD,\r\n domainTypeId,\r\n parentId,\r\n branchId,\r\n attachments\r\n });\r\n }\r\n\r\n //Delete attachments if any\r\n const attachmentToDelete = getRecordAttachmentsToBeDeleted(payload);\r\n if (\r\n typeof attachmentToDelete !== 'undefined' &&\r\n attachmentToDelete.length > 0\r\n ) {\r\n let attachmentIdsArray = attachmentToDelete.map((g) => g.id);\r\n yield put({\r\n type: types.DELETE_ATTACHMENTS_FOR_HAZARD,\r\n attachmentIdsArray,\r\n loggedInUserId,\r\n branchId\r\n });\r\n }\r\n\r\n yield put({\r\n type: types.SUBMIT_HAZARD_REVIEW_SUCCESS,\r\n createdReview: jsonData\r\n });\r\n\r\n yield put({\r\n type: types.FETCH_REVIEWS_FOR_THE_HAZARD,\r\n hazardId: payload.hazardId\r\n });\r\n\r\n if (mode === submitMode.UPDATE) {\r\n if (payload.isActive === false) {\r\n yield put({\r\n type: types.OPEN_DELETE_HAZARD_REVIEW_DIALOG,\r\n open: false,\r\n reviewId: payload.id\r\n });\r\n } else {\r\n yield put({\r\n type: types.ENABLE_EDIT_HAZARD_REVIEW,\r\n enableEditReviewMode: false,\r\n reviewId: payload.id\r\n });\r\n }\r\n } else {\r\n yield put({\r\n type: types.OPEN_CREATE_HAZARD_REVIEW_DIALOG,\r\n open: false\r\n });\r\n }\r\n } catch (e) {\r\n yield resolveError(types.SUBMIT_HAZARD_REVIEW_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.SUBMIT_HAZARD_REVIEW_FINISHED });\r\n }\r\n}\r\n\r\n//ManagementLog\r\n\r\nfunction* watchFetchManagementLogsForTheHazard({ hazardId }) {\r\n try {\r\n yield put({ type: types.START_FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD });\r\n\r\n const { jsonData } = yield call(\r\n hazardsApi.getManagementLogsForHazard,\r\n hazardId\r\n );\r\n yield put({\r\n type: types.FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD_SUCCESS,\r\n managementLogs: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchSubmitHazardManagementLog({ payload, mode, branchId }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_SUBMIT_HAZARD_MANAGEMENT_LOG });\r\n\r\n const { jsonData } =\r\n mode === submitMode.CREATE\r\n ? yield call(hazardsApi.createManagementLog, payload, loggedInUserId)\r\n : yield call(hazardsApi.updateManagementLog, payload, loggedInUserId);\r\n\r\n const domainTypeId = domainType.HAZARD_LOGS;\r\n\r\n //Attachments\r\n //upload attachments if there is any\r\n const attachments = getRecordAttachmentsToBeAdded(payload);\r\n if (typeof attachments !== 'undefined' && attachments.length > 0) {\r\n let parentId = jsonData.id;\r\n yield put({\r\n type: types.UPLOAD_ATTACHMENTS_FOR_HAZARD,\r\n domainTypeId,\r\n parentId,\r\n branchId,\r\n attachments\r\n });\r\n }\r\n\r\n //Delete attachments if any\r\n const attachmentToDelete = getRecordAttachmentsToBeDeleted(payload);\r\n if (\r\n typeof attachmentToDelete !== 'undefined' &&\r\n attachmentToDelete.length > 0\r\n ) {\r\n let attachmentIdsArray = attachmentToDelete.map((g) => g.id);\r\n yield put({\r\n type: types.DELETE_ATTACHMENTS_FOR_HAZARD,\r\n attachmentIdsArray,\r\n loggedInUserId,\r\n branchId\r\n });\r\n }\r\n\r\n yield put({\r\n type: types.SUBMIT_HAZARD_MANAGEMENT_LOG_SUCCESS,\r\n createdManagementLog: jsonData\r\n });\r\n\r\n yield put({\r\n type: types.FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD,\r\n hazardId: payload.hazardId\r\n });\r\n\r\n if (mode === submitMode.UPDATE) {\r\n if (payload.isActive === false) {\r\n yield put({\r\n type: types.OPEN_DELETE_HAZARD_MANAGEMENT_LOG_DIALOG,\r\n open: false,\r\n managementLogId: payload.id\r\n });\r\n } else {\r\n yield put({\r\n type: types.ENABLE_EDIT_HAZARD_MANAGEMENT_LOG,\r\n enableEditReviewMode: false,\r\n managementLogId: payload.id\r\n });\r\n }\r\n } else {\r\n yield put({\r\n type: types.OPEN_CREATE_HAZARD_MANAGEMENT_LOG_DIALOG,\r\n open: false\r\n });\r\n }\r\n } catch (e) {\r\n yield resolveError(types.SUBMIT_HAZARD_MANAGEMENT_LOG_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.SUBMIT_HAZARD_MANAGEMENT_LOG_FINISHED });\r\n }\r\n}\r\n\r\n//attachments\r\nfunction* watchLoadAttachmentFilesForHazard({\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n}) {\r\n try {\r\n yield put({ type: types.START_LOAD_ATTACHMENTS_FOR_HAZARD });\r\n const { jsonData } = yield call(\r\n attachmentApi.getAttachmentsForSingle,\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n );\r\n yield put({\r\n type: types.LOAD_ATTACHMENTS_FOR_HAZARD_SUCCESS,\r\n attachments: jsonData\r\n });\r\n } catch (error) {\r\n yield resolveError(types.LOAD_ATTACHMENTS_FOR_HAZARD_FAILURE, error);\r\n } finally {\r\n yield put({ type: types.LOAD_ATTACHMENTS_FOR_HAZARD_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchDeleteAttachmentsForHazard({\r\n attachmentIdsArray,\r\n loggedInUserId,\r\n branchId\r\n}) {\r\n try {\r\n if (\r\n typeof attachmentIdsArray !== 'undefined' &&\r\n attachmentIdsArray.length > 0\r\n ) {\r\n const attachmentIdsString = attachmentIdsArray.join(';');\r\n yield call(\r\n attachmentApi.deleteAttachments,\r\n attachmentIdsString,\r\n loggedInUserId,\r\n branchId\r\n );\r\n }\r\n } catch (error) {\r\n } finally {\r\n }\r\n}\r\n\r\nfunction* watchUploadAttachmentsForHazard({\r\n domainTypeId,\r\n parentId,\r\n branchId,\r\n attachments\r\n}) {\r\n try {\r\n yield call(\r\n attachmentApi.addAttachments,\r\n domainTypeId,\r\n parentId,\r\n branchId,\r\n attachments\r\n );\r\n } catch (error) {\r\n } finally {\r\n }\r\n}\r\n\r\nfunction* watchLoadAttachmentFilesForHazardReview({\r\n domainTypeId,\r\n parentId,\r\n userId\r\n}) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW });\r\n const { jsonData } = yield call(\r\n attachmentApi.getAttachmentsForSingle,\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n );\r\n yield put({\r\n type: types.LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW_SUCCESS,\r\n attachments: jsonData\r\n });\r\n } catch (error) {\r\n yield resolveError(types.LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW_FAILURE, error);\r\n } finally {\r\n yield put({ type: types.LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchLoadAttachmentFilesForHazardManagementLogs({\r\n domainTypeId,\r\n parentId,\r\n userId\r\n}) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({\r\n type: types.START_LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS\r\n });\r\n const { jsonData } = yield call(\r\n attachmentApi.getAttachmentsForSingle,\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n );\r\n yield put({\r\n type: types.LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS_SUCCESS,\r\n attachments: jsonData\r\n });\r\n } catch (error) {\r\n yield resolveError(\r\n types.LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS_FAILURE,\r\n error\r\n );\r\n } finally {\r\n yield put({\r\n type: types.LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS_FINISHED\r\n });\r\n }\r\n}\r\n\r\n//Hazard control load attachment\r\nfunction* watchLoadAttachmentFilesForHazardControl({\r\n domainTypeId,\r\n parentId,\r\n userId\r\n}) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL });\r\n const { jsonData } = yield call(\r\n attachmentApi.getAttachmentsForSingle,\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n );\r\n\r\n yield put({\r\n type: types.LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL_SUCCESS,\r\n attachments: jsonData\r\n });\r\n } catch (error) {\r\n yield resolveError(\r\n types.LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL_FAILURE,\r\n error\r\n );\r\n } finally {\r\n yield put({ type: types.LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL_FINISHED });\r\n }\r\n}\r\n\r\n//This is used to catch all the errors in case of request unsuccessful, and will extract the actual error message.\r\nfunction* resolveError(type, error) {\r\n let errorMessageCaptured = false;\r\n let completeErrorMessage = {};\r\n if (!error.ok) {\r\n try {\r\n const clone = error.clone();\r\n yield clone.text().then((text) => {\r\n completeErrorMessage = JSON.parse(text);\r\n errorMessageCaptured = true;\r\n });\r\n } catch (err) {\r\n errorMessageCaptured = true;\r\n completeErrorMessage = err;\r\n }\r\n\r\n if (errorMessageCaptured) {\r\n const errorMessage = extractErrorMessage(completeErrorMessage);\r\n yield put({ type, errorMessage });\r\n }\r\n }\r\n}\r\n\r\nfunction extractErrorMessage(completeErrorMessage) {\r\n let errorMessage = '';\r\n\r\n try {\r\n const message = completeErrorMessage.exceptionMessage\r\n ? completeErrorMessage.exceptionMessage.split('Content:')[1]\r\n : completeErrorMessage.messageDetail;\r\n\r\n errorMessage = JSON.parse(message).errorMessage;\r\n if (!errorMessage) {\r\n errorMessage = 'An error occured';\r\n }\r\n } catch (error) {\r\n errorMessage = 'An error occured';\r\n }\r\n\r\n return errorMessage;\r\n}\r\nexport default function* BranchesWatcher() {\r\n yield takeLatest(\r\n types.FETCH_ALL_HAZARDS_FOR_BRANCH,\r\n watchFetchAllHazardsForBranch\r\n );\r\n yield takeLatest(\r\n types.FETCH_ALL_HAZARDS_FOR_COMPANY,\r\n watchFetchAllHazardsForCompany\r\n );\r\n yield takeLatest(types.SUBMIT_HAZARD, watchCreateEditHazard);\r\n yield takeLatest(types.DELETE_HAZARD, watchDeleteHazard);\r\n\r\n yield takeLatest(\r\n types.FETCH_CONTROLS_FOR_THE_HAZARD,\r\n watchFetchControlsForTheHazard\r\n );\r\n\r\n yield takeLatest(types.DELETE_HAZARD_CONTROL, watchDeleteHazardControl);\r\n yield takeLatest(types.SUBMIT_HAZARD_CONTROL, watchSubmitHazardControl);\r\n\r\n yield takeLatest(\r\n types.FETCH_REVIEWS_FOR_THE_HAZARD,\r\n watchFetchReviewsForTheHazard\r\n );\r\n\r\n yield takeLatest(types.SUBMIT_HAZARD_REVIEW, watchSubmitHazardReview);\r\n\r\n yield takeLatest(\r\n types.FETCH_MANAGEMENT_LOGS_FOR_THE_HAZARD,\r\n watchFetchManagementLogsForTheHazard\r\n );\r\n\r\n yield takeLatest(\r\n types.SUBMIT_HAZARD_MANAGEMENT_LOG,\r\n watchSubmitHazardManagementLog\r\n );\r\n\r\n yield takeLatest(\r\n types.UPLOAD_ATTACHMENTS_FOR_HAZARD,\r\n watchUploadAttachmentsForHazard\r\n );\r\n\r\n yield takeLatest(\r\n types.DELETE_ATTACHMENTS_FOR_HAZARD,\r\n watchDeleteAttachmentsForHazard\r\n );\r\n\r\n yield takeLatest(\r\n types.LOAD_ATTACHMENTS_FOR_HAZARD,\r\n watchLoadAttachmentFilesForHazard\r\n );\r\n\r\n yield takeLatest(\r\n types.LOAD_ATTACHMENTS_FOR_HAZARD_REVIEW,\r\n watchLoadAttachmentFilesForHazardReview\r\n );\r\n\r\n yield takeLatest(\r\n types.LOAD_ATTACHMENTS_FOR_HAZARD_MANAGEMENT_LOGS,\r\n watchLoadAttachmentFilesForHazardManagementLogs\r\n );\r\n\r\n yield takeLatest(\r\n types.LOAD_ATTACHMENTS_FOR_HAZARD_CONTROL,\r\n watchLoadAttachmentFilesForHazardControl\r\n );\r\n}\r\n","import * as client from './baseClient';\r\n\r\nexport const getCoursessByBranch = (branchId) =>\r\n client.get(`/api/courses/branch/${branchId}`);\r\n\r\nexport const getCourseRecordsByBranch = (branchId) =>\r\n client.get(`/api/courses/branch/${branchId}/records`);\r\n\r\nexport const getCoursessByCompany = (companyId) =>\r\n client.get(`/api/courses/company/${companyId}`);\r\n\r\nexport const getCourseRecordsByCompany = (companyId) =>\r\n client.get(`/api/courses/company/${companyId}/records`);\r\n\r\nexport const createCourse = (course, loggedInUserId) =>\r\n client.post('/api/courses', course, undefined, loggedInUserId);\r\n\r\nexport const deleteEvent = (courseId, loggedInUserId) =>\r\n client._delete(\r\n `/api/courses/${courseId}`,\r\n undefined,\r\n undefined,\r\n loggedInUserId\r\n );\r\n\r\nexport const editCourse = (course, loggedInUserId) =>\r\n client.put(`/api/courses/${course.id}`, course, undefined, loggedInUserId);\r\n\r\nexport const createRecord = (payload, loggedInUserId) =>\r\n client.post(\r\n `/api/courses/${payload.courseId}/records`,\r\n payload,\r\n undefined,\r\n loggedInUserId\r\n );\r\n\r\nexport const updateRecord = (payload, loggedInUserId) =>\r\n client.put(\r\n `/api/courses/${payload.courseId}/records/${payload.id}`,\r\n payload,\r\n undefined,\r\n loggedInUserId\r\n );\r\n\r\nexport const getRecordsForCourse = (courseId) =>\r\n client.get(`/api/courses/${courseId}/records`);\r\n\r\nexport const deleteCourseRecord = (payload, loggedInUserId) =>\r\n client._delete(\r\n `/api/courses/${payload.courseId}/records/${payload.recordId}`,\r\n undefined,\r\n undefined,\r\n loggedInUserId\r\n );\r\n","import { call, put, takeLatest, select } from 'redux-saga/effects';\r\n\r\nimport { types, domainType } from '../constants';\r\nimport * as coursesApi from '../api/courses';\r\nimport { submitMode } from '../constants';\r\nimport * as attachmentApi from '../api/attachment';\r\nimport {\r\n getRecordAttachmentsToBeAdded,\r\n getRecordAttachmentsToBeDeleted\r\n} from '../utils/attachmentUtils';\r\n\r\nfunction* getLoggedInUserId() {\r\n const extractLoggedInUserId = (state) => state.users.user.item;\r\n\r\n const loggedInUser = yield select(extractLoggedInUserId);\r\n const loggedInUserId = loggedInUser && loggedInUser.id;\r\n return loggedInUserId;\r\n}\r\n\r\nfunction* watchFetchAllCoursesForBranch({ branchId }) {\r\n try {\r\n yield put({ type: types.START_FETCH_ALL_COURSES_FOR_BRANCH });\r\n\r\n const { jsonData } = yield call(coursesApi.getCoursessByBranch, branchId);\r\n yield put({\r\n type: types.FETCH_ALL_COURSES_FOR_BRANCH_SUCCESS,\r\n courses: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_ALL_COURSES_FOR_BRANCH_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_ALL_COURSES_FOR_BRANCH_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchFetchAllCourseRecordsForBranch({ branchId }) {\r\n try {\r\n yield put({ type: types.START_FETCH_ALL_COURSE_RECORDS_FOR_BRANCH });\r\n\r\n const { jsonData } = yield call(\r\n coursesApi.getCourseRecordsByBranch,\r\n branchId\r\n );\r\n yield put({\r\n type: types.FETCH_ALL_COURSE_RECORDS_FOR_BRANCH_SUCCESS,\r\n courseRecords: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_ALL_COURSE_RECORDS_FOR_BRANCH_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_ALL_COURSE_RECORDS_FOR_BRANCH_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchFetchAllCoursesForCompany({ companyId }) {\r\n try {\r\n yield put({ type: types.START_FETCH_ALL_COURSES_FOR_COMPANY });\r\n\r\n const { jsonData } = yield call(coursesApi.getCoursessByCompany, companyId);\r\n yield put({\r\n type: types.FETCH_ALL_COURSES_FOR_COMPANY_SUCCESS,\r\n courses: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_ALL_COURSES_FOR_COMPANY_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_ALL_COURSES_FOR_COMPANY_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchFetchAllCourseRecordsForCompany({ companyId }) {\r\n try {\r\n yield put({ type: types.START_FETCH_ALL_COURSE_RECORDS_FOR_COMPANY });\r\n\r\n const { jsonData } = yield call(\r\n coursesApi.getCourseRecordsByCompany,\r\n companyId\r\n );\r\n yield put({\r\n type: types.FETCH_ALL_COURSE_RECORDS_FOR_COMPANY_SUCCESS,\r\n courseRecords: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_ALL_COURSE_RECORDS_FOR_COMPANY_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_ALL_COURSE_RECORDS_FOR_COMPANY_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchSubmitCourse({ course, mode }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_SUBMIT_COURSE });\r\n const { jsonData } =\r\n mode === submitMode.CREATE\r\n ? yield call(coursesApi.createCourse, course, loggedInUserId)\r\n : yield call(coursesApi.editCourse, course, loggedInUserId);\r\n yield put({\r\n type: types.SUBMIT_COURSE_SUCCESS,\r\n submittedCourse: jsonData\r\n });\r\n\r\n if (mode === submitMode.CREATE) {\r\n yield put({ type: types.OPEN_CREATE_COURSE_DIALOG, open: false });\r\n } else {\r\n yield put({ type: types.OPEN_EDIT_COURSE_DIALOG, open: false });\r\n }\r\n } catch (e) {\r\n yield resolveError(types.SUBMIT_COURSE_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.SUBMIT_COURSE_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchDeleteCourse({ course }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_DELETE_COURSE });\r\n\r\n yield call(coursesApi.deleteEvent, course.id, loggedInUserId);\r\n yield put({\r\n type: types.DELETE_COURSE_SUCCESS,\r\n courseId: course.id\r\n });\r\n yield put({ type: types.OPEN_DELETE_COURSE_DIALOG, open: false });\r\n } catch (e) {\r\n yield resolveError(types.DELETE_COURSE_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.DELETE_COURSE_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchSubmitCourseRecord({ payload, mode, source, branchId }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_SUBMIT_COURSE_RECORD });\r\n\r\n const { jsonData } =\r\n mode === submitMode.CREATE\r\n ? yield call(coursesApi.createRecord, payload, loggedInUserId)\r\n : yield call(coursesApi.updateRecord, payload, loggedInUserId);\r\n\r\n const domainTypeId = domainType.COURSE_RECORD;\r\n\r\n //Attachments\r\n //upload attachments if there is any\r\n const attachments = getRecordAttachmentsToBeAdded(payload);\r\n if (typeof attachments !== 'undefined' && attachments.length > 0) {\r\n let parentId = jsonData.id;\r\n yield put({\r\n type: types.UPLOAD_ATTACHMENTS_FOR_COURSE_RECORD,\r\n domainTypeId,\r\n parentId,\r\n branchId,\r\n attachments\r\n });\r\n }\r\n\r\n //Delete attachments if any\r\n const attachmentToDelete = getRecordAttachmentsToBeDeleted(payload);\r\n if (\r\n typeof attachmentToDelete !== 'undefined' &&\r\n attachmentToDelete.length > 0\r\n ) {\r\n let attachmentIdsArray = attachmentToDelete.map((g) => g.id);\r\n yield put({\r\n type: types.DELETE_ATTACHMENTS_FOR_COURSE_RECORD,\r\n attachmentIdsArray,\r\n loggedInUserId,\r\n branchId\r\n });\r\n }\r\n\r\n yield put({\r\n type: types.SUBMIT_COURSE_RECORD_SUCCESS,\r\n createdRecord: jsonData\r\n });\r\n yield put({\r\n type: types.FETCH_RECORDS_FOR_THE_COURSE,\r\n courseId: payload.courseId\r\n });\r\n\r\n if (mode === submitMode.UPDATE) {\r\n yield put({\r\n type: types.ENABLE_EDIT_COURSE_RECORD,\r\n enableEditRecordMode: false,\r\n recordId: payload.id\r\n });\r\n }\r\n\r\n if (source === 'dialog') {\r\n yield put({ type: types.OPEN_ADD_COURSE_RECORD_DIALOG, open: false });\r\n yield put({\r\n type: types.FETCH_COURSES_FOR_PERSONNEL,\r\n personnelId: payload.personnelId\r\n });\r\n }\r\n } catch (e) {\r\n yield resolveError(types.SUBMIT_COURSE_RECORD_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.SUBMIT_COURSE_RECORD_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchFetchRecordsForTheCourse({ courseId }) {\r\n try {\r\n yield put({ type: types.START_FETCH_RECORDS_FOR_THE_COURSE });\r\n\r\n const { jsonData } = yield call(coursesApi.getRecordsForCourse, courseId);\r\n yield put({\r\n type: types.FETCH_RECORDS_FOR_THE_COURSE_SUCCESS,\r\n records: jsonData\r\n });\r\n } catch (e) {\r\n yield resolveError(types.FETCH_RECORDS_FOR_THE_COURSE_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.FETCH_RECORDS_FOR_THE_COURSE_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchDeleteCourseRecord({ payload }) {\r\n try {\r\n const loggedInUserId = yield getLoggedInUserId();\r\n yield put({ type: types.START_DELETE_COURSE_RECORD });\r\n\r\n yield call(coursesApi.deleteCourseRecord, payload, loggedInUserId);\r\n yield put({\r\n type: types.DELETE_COURSE_RECORD_SUCCESS,\r\n recordId: payload.recordId\r\n });\r\n } catch (e) {\r\n yield resolveError(types.DELETE_COURSE_RECORD_FAILURE, e);\r\n } finally {\r\n yield put({ type: types.DELETE_COURSE_RECORD_FINISHED });\r\n }\r\n}\r\n\r\n//attachments\r\n\r\nfunction* watchLoadAttachmentFilesForCourseRecord({\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n}) {\r\n try {\r\n yield put({ type: types.START_LOAD_ATTACHMENTS_FOR_COURSE_RECORD });\r\n const { jsonData } = yield call(\r\n attachmentApi.getAttachmentsForSingle,\r\n domainTypeId,\r\n parentId,\r\n loggedInUserId\r\n );\r\n yield put({\r\n type: types.LOAD_ATTACHMENTS_FOR_COURSE_RECORD_SUCCESS,\r\n attachments: jsonData\r\n });\r\n } catch (error) {\r\n yield resolveError(types.LOAD_ATTACHMENTS_FOR_COURSE_RECORD_FAILURE, error);\r\n } finally {\r\n yield put({ type: types.LOAD_ATTACHMENTS_FOR_COURSE_RECORD_FINISHED });\r\n }\r\n}\r\n\r\nfunction* watchDeleteAttachmentsForCourseRecord({\r\n attachmentIdsArray,\r\n loggedInUserId,\r\n branchId\r\n}) {\r\n try {\r\n if (\r\n typeof attachmentIdsArray !== 'undefined' &&\r\n attachmentIdsArray.length > 0\r\n ) {\r\n const attachmentIdsString = attachmentIdsArray.join(';');\r\n yield call(\r\n attachmentApi.deleteAttachments,\r\n attachmentIdsString,\r\n loggedInUserId,\r\n branchId\r\n );\r\n }\r\n } catch (error) {\r\n } finally {\r\n }\r\n}\r\n\r\nfunction* watchUploadAttachmentsForCourseRecord({\r\n domainTypeId,\r\n parentId,\r\n branchId,\r\n attachments\r\n}) {\r\n try {\r\n yield call(\r\n attachmentApi.addAttachments,\r\n domainTypeId,\r\n parentId,\r\n branchId,\r\n attachments\r\n );\r\n } catch (error) {\r\n } finally {\r\n }\r\n}\r\n\r\n//This is used to catch all the errors in case of request unsuccessful, and will extract the actual error message.\r\nfunction* resolveError(type, error) {\r\n let errorMessageCaptured = false;\r\n let completeErrorMessage = {};\r\n if (!error.ok) {\r\n try {\r\n const clone = error.clone();\r\n yield clone.text().then((text) => {\r\n completeErrorMessage = JSON.parse(text);\r\n errorMessageCaptured = true;\r\n });\r\n } catch (err) {\r\n errorMessageCaptured = true;\r\n completeErrorMessage = err;\r\n }\r\n\r\n if (errorMessageCaptured) {\r\n const errorMessage = extractErrorMessage(completeErrorMessage);\r\n yield put({ type, errorMessage });\r\n }\r\n }\r\n}\r\n\r\nfunction extractErrorMessage(completeErrorMessage) {\r\n let errorMessage = '';\r\n\r\n try {\r\n const message = completeErrorMessage.exceptionMessage\r\n ? completeErrorMessage.exceptionMessage.split('Content:')[1]\r\n : completeErrorMessage.messageDetail;\r\n\r\n errorMessage = JSON.parse(message).errorMessage;\r\n if (!errorMessage) {\r\n errorMessage = 'An error occured';\r\n }\r\n } catch (error) {\r\n errorMessage = 'An error occured';\r\n }\r\n\r\n return errorMessage;\r\n}\r\n\r\nexport default function* CoursesWatcher() {\r\n yield takeLatest(\r\n types.FETCH_ALL_COURSES_FOR_BRANCH,\r\n watchFetchAllCoursesForBranch\r\n );\r\n\r\n yield takeLatest(\r\n types.FETCH_ALL_COURSE_RECORDS_FOR_BRANCH,\r\n watchFetchAllCourseRecordsForBranch\r\n );\r\n\r\n yield takeLatest(\r\n types.FETCH_ALL_COURSES_FOR_COMPANY,\r\n watchFetchAllCoursesForCompany\r\n );\r\n\r\n yield takeLatest(\r\n types.FETCH_ALL_COURSE_RECORDS_FOR_COMPANY,\r\n watchFetchAllCourseRecordsForCompany\r\n );\r\n\r\n yield takeLatest(types.SUBMIT_COURSE, watchSubmitCourse);\r\n yield takeLatest(types.DELETE_COURSE, watchDeleteCourse);\r\n\r\n yield takeLatest(types.SUBMIT_COURSE_RECORD, watchSubmitCourseRecord);\r\n yield takeLatest(\r\n types.FETCH_RECORDS_FOR_THE_COURSE,\r\n watchFetchRecordsForTheCourse\r\n );\r\n\r\n yield takeLatest(types.DELETE_COURSE_RECORD, watchDeleteCourseRecord);\r\n\r\n yield takeLatest(\r\n types.UPLOAD_ATTACHMENTS_FOR_COURSE_RECORD,\r\n watchUploadAttachmentsForCourseRecord\r\n );\r\n\r\n yield takeLatest(\r\n types.DELETE_ATTACHMENTS_FOR_COURSE_RECORD,\r\n watchDeleteAttachmentsForCourseRecord\r\n );\r\n\r\n yield takeLatest(\r\n types.LOAD_ATTACHMENTS_FOR_COURSE_RECORD,\r\n watchLoadAttachmentFilesForCourseRecord\r\n );\r\n}\r\n","import { all } from 'redux-saga/effects';\r\n\r\nimport companies from './companies';\r\nimport branches from './branches';\r\nimport personnels from './personnels';\r\nimport users from './users';\r\nimport settings from './settings';\r\nimport accidents from './accidents';\r\nimport events from './events';\r\nimport hazards from './hazards';\r\nimport courses from './courses';\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n ...companies(),\r\n ...branches(),\r\n ...users(),\r\n ...settings(),\r\n ...personnels(),\r\n ...accidents(),\r\n ...events(),\r\n ...hazards(),\r\n ...courses()\r\n ]);\r\n}\r\n","import { createBrowserHistory } from 'history';\r\n// configure, create, and export the project's history instance\r\nexport default createBrowserHistory();\r\n","import { red } from '@material-ui/core/colors';\r\nimport { createMuiTheme } from '@material-ui/core/styles';\r\n\r\n// A custom theme for this app\r\nconst theme = createMuiTheme({\r\n palette: {\r\n primary: {\r\n main: '#09A34A'\r\n },\r\n secondary: {\r\n main: '#090977',\r\n minor: '#2C6BB2'\r\n },\r\n tertiary: {\r\n main: '#FEDF46'\r\n },\r\n danger: {\r\n main: 'red',\r\n minor: '#f05757'\r\n },\r\n buttonWhite: {\r\n default: '#ffffff'\r\n },\r\n highlight: {\r\n light: '#efa449',\r\n main: '#f19322',\r\n dark: '#f08708',\r\n contrastText: '#fff',\r\n highlight: '#FF9933'\r\n },\r\n subTitle: {\r\n main: '#666666'\r\n },\r\n error: {\r\n main: red.A400\r\n },\r\n lightGrey: {\r\n default: '#e6e6e6'\r\n },\r\n borderGray: {\r\n default: '#7E7E7E'\r\n },\r\n separator: '#D8D8D8',\r\n dashboardDark: {\r\n main: '#272F44',\r\n minor: '#0A1B2B'\r\n }\r\n }\r\n});\r\n\r\nexport default theme;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\nimport { Router } from 'react-router-dom';\r\nimport { ThemeProvider } from '@material-ui/styles';\r\n\r\nimport App from './App';\r\nimport * as serviceWorker from './utils/serviceWorker';\r\nimport configureStore from './store';\r\nimport rootSaga from './sagas';\r\nimport history from './utils/history';\r\nimport theme from './utils/theme';\r\nimport config from './constants/auth_config.json';\r\nimport { Auth0Provider } from './react-auth0-spa';\r\n\r\nconst store = configureStore();\r\nstore.runSaga(rootSaga);\r\n\r\n// A function that routes the user to the right place\r\n// after login\r\nconst onRedirectCallback = (appState) => {\r\n history.push(\r\n appState && appState.targetUrl\r\n ? appState.targetUrl\r\n : window.location.pathname\r\n );\r\n};\r\n\r\nlet redirectUrl = `${window.location.origin}/home`;\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n","import { createStore, applyMiddleware } from 'redux';\r\nimport createSagaMiddleware, { END } from 'redux-saga';\r\nimport { composeWithDevTools } from 'redux-devtools-extension';\r\n\r\nimport rootReducer from '../reducers';\r\n\r\nexport default function configureStore(initialState) {\r\n const sagaMiddleware = createSagaMiddleware();\r\n const store = createStore(\r\n rootReducer,\r\n initialState,\r\n composeWithDevTools(applyMiddleware(sagaMiddleware))\r\n );\r\n\r\n store.runSaga = sagaMiddleware.run;\r\n store.close = () => store.dispatch(END);\r\n\r\n return store;\r\n}\r\n"],"sourceRoot":""}