{"version":3,"sources":["components/Home/GradoMaterias/GradoMaterias.js","services/PostData.js","services/Usuario.js","components/Login/Login.js","components/Home/NavBar/NavBar.js","services/VersionApp.js","components/Home/Grados/BTNConsolidado.js","components/Home/BTNObservador/BTNObservador.js","components/Home/Grados/Grados.js","components/NuevaActividad/NuevaActividad.js","components/Actividades/Actividades.js","components/Utilitarios/InputNotaActividad.js","components/Utilitarios/InputNotaLetra.js","services/SesPeriodo.js","components/Calificaciones/Calificaciones.js","components/CalificacionesIndicador/CalificacionesIndicador.js","components/ModificarIndicadores/ModalIndicador.js","components/ModificarIndicadores/ModificarIndicadores.js","components/CalificacionesPeriodo/CalificacionesPeriodo.js","components/Utilitarios/InputNotaFinalP.js","components/NotaFinalPeriodo/NotaFinalPeriodo.js","components/Consolidado/Consolidado.js","components/Calificacionesfinalp/Calificacionesfinalp.js","components/Indicadores/Indicadores.js","components/Utilitarios/InputNotaExamen.js","components/ExamenFinal/ExamenFinal.js","components/Home/BarInfoPeriodo.js","components/Consolidado/ConsolidadoResumen.js","components/Utilitarios/InputNotaNivelacion.js","components/Nivelaciones/Nivelaciones.js","components/Utilitarios/InputNotaAsistencia.js","components/Calificaciones/Asistencias.js","components/Calificacionesfinalp/CalificacionesResumen.js","services/AuthPeriodo.js","services/AuthNivelacion.js","components/Calificaciones/CalificacionesPromedioPeriodo.js","components/Home/Home.js","components/NotFound/NotFound.js","components/CambioPassword/CambioPassword.js","components/Printer/Printer.js","components/PaginaInactivo/PaginaInactivo.js","routes.js","App.js","serviceWorker.js","index.js","services/UrlWebServis.js","services/GetData.js"],"names":["GradoMaterias","_ref","id_docente","id_grados","id_grupo","_useState","useState","_useState2","_slicedToArray","lista_asignaturas","setAsignaturas","_useState3","_useState4","periodo","setPeriodo","_useState5","_useState6","loading","setLoading","useEffect","p","JSON","parse","sessionStorage","getItem","datosperiodo","listar_materias","link_ind","estado_periodo","nivelaciones","GetData","then","result","responseJSON","error","lasigna","asignaturas","map","item","React","createElement","Link","to","concat","id_asignatura","key","params","id_grado","style","textDecoration","href","ListItem","button","ListItemText","primary","Fragment","nombre_asignatura","className","fontSize","porcentaje_notas","console","log","LinearProgress","__webpack_require__","d","__webpack_exports__","PostData","_UrlWebServis__WEBPACK_IMPORTED_MODULE_0__","type","userData","Promise","resolve","reject","fetch","URL_SERVICIOS","method","body","stringify","response","json","responseJson","catch","error_login","Usuario","usuario","Login","_Component","props","_this","_classCallCheck","this","_possibleConstructorReturn","_getPrototypeOf","call","state","username","password","redirect","changepassword","loadingscr","botonenablet","login","bind","_assertThisInitialized","onChange","_inherits","_createClass","value","event","_this2","preventDefault","setState","changepwl","setItem","e","_defineProperty","target","name","message_error","Redirect","display","CssBaseline","LoadingScreen","bgColor","spinnerColor","textColor","logoSrc","text","Paper","src","alt","Typography","component","variant","onSubmit","FormControl","margin","required","fullWidth","TextField","label","id","autoComplete","autoFocus","Button","color","disabled","Component","NavBar","versionApp","verionapp","VersionApp","handleProfileMenuOpen","anchorEl","currentTarget","handleMenuClose","handleMobileMenuClose","cerrar_session","cerrarsession","abrir_perfil","mobileMoreAnchorEl","handleToggle","openMenu","toggleDrawer","side","open","id_usuario","datosusuario","nombre_usuario","isMenuOpen","Boolean","renderMenu","Menu","anchorOrigin","vertical","horizontal","transformOrigin","onClose","MenuItem","onClick","styles","list","width","fullList","drawer","flexShrink","drawerHeader","alignItems","padding","justifyContent","AppBar","position","Toolbar","IconButton","aria-label","MenuIcon","Avatar","aria-owns","undefined","aria-haspopup","AccountCircle","Drawer","anchor","ChevronLeftIcon","ChevronRightIcon","Divider","List","ListItemIcon","BTNConsolidado","es_director","dgr","botondirector","size","lazy","Grados","usuario_session","lista_grados","id_periodo","loadingfade","listar_grados","dirg","grados","Card","CardHeader","avatar","title","nombre_grado","num_grupo","CardContent","Fade","in","Suspense","fallback","Tooltip","BallotIcon","setTimeout","NuevaActividad","context","handleShow","handleClose","guardar_actividad","f","Date","mes","getMonth","fechactual","getFullYear","String","length","getDate","accion","idGrado","idGrupo","id_actividades","nombre_actividad","fechahora_act","id_indicador","cod_indicador","cod_ind","des_indicador","desc_ind","estadoperiodo","lista_indicadores","error_fecha","show","listarindicador","boton","class","msgerrorfecha","Modal","onHide","Header","closeButton","Title","Body","Form","Group","controlId","Label","Control","placeholder","Footer","Actividades","match","idAsignatura","IdIndicador","descripcion_indic","num_periodo","periodo_actual","fecha_cierre","periodo_abierto","vernotas","listar_indicadores","indicador_actual","indicador","id_asigantura","cod_grados","codigo_indic","desc_indicador","_this3","fecha","Moment","format","_this4","window","confirm","token","_this5","nnotas","func_borrar_actividad","placement","_this6","StyledTableCell","withStyles","theme","head","backgroundColor","palette","common","black","white","TableCell","StyledTableRow","root","&:nth-of-type(odd)","background","default","TableRow","listaindi","actividades","hover","align","formato_fecha","func_boton_borrar_actividad","Object","keys","BotonVerNotas","Grid","container","spacing","xs","Table","TableHead","TableBody","InputNotaActividad","deleteNota","datosenvio","id_matricula","parseInt","proceso","guardado","notadelete","notaalumno","onChangeNotaDelete","document","getElementById","index","nota","editactivo","max_nota","urimg","handleKeyUp","guardar_nota","resetSave","precision","multiplier","Math","pow","round","isNaN","notaing","parseFloat","error_nota_mayor","nota_alumno","tab_control","numero","toFixed","innerRef","el","inputProps","maxLength","textAlign","defaultValue","convertirnumero","onBlur","onKeyUp","onChangeNota","onFocus","handleFocus","visibility","InputNotaLetra","SesPeriodo","Calificaciones","reason","showAlertError","focusInput","current","focus","periodo_session","idIndicador","lista_alumnos","list_notas","listaindex","min_ganada","nom_grado","nombre_asing","tipo_nota","errorvalidardoc","listar_alumnos","func_ingresarNota","progreso_guardado","updateValue","info_grado","info_asigantura","error_nota_mayor_letra","toast","select","estado","conteo","forEach","nums","indice","notav","desc_alto","descripcion_alto","desc_basico","descripcion_basico","asignatura","_this7","list1_notas","alumnos","id_alumnos","nombres_apellidos_al","valign","mensajeerrordocente","Alert","Heading","enunciado","Toaster","prevProps","prevState","CalificacionesIndicador","idActividad","titulos_tabla","promedio","colname","notas","columas","suma","numnotas","data","cols","objetos","num_notas","sum_camp_nota","nombrecampo","anchocol","campos","header","push","colheader","row","col","formato_numero","titulostabla","ModalIndicador","guardar_indicador","usuariosession","listar_indicadores_sub","m","visibleboton","cant_notas","Dialog","maxWidth","aria-labelledby","DialogTitle","DialogContent","DialogContentText","InputProps","multiline","rowsMax","InputLabel","htmlFor","Select","DialogActions","CircularProgress","ModificarIndicadores","indicadoredoc","openloading","showloagin","handleChange","nivel_ac","nivel","indicadores","cant","anio_actual","CalificacionesPeriodo","titulos_tabla2","ConfPorcenNotas","procentaje_ptl","calificacionPTF","errorvalidarExF","procentaje_nota","procentajeExa","resumen_notas_nomal","func_acceso_plataforma","func_round","porc_not","PorcentaConf","nota1","nota2","promedioN","exf","npt","nota3","habilitado","porcentaje","datos","retorno","caption","notaE","notaP","notap","nexam","porc_plf","nptl","def","porcenT","EXF","columasHeader2","cont_colum","colt_columtotal","xy","x","rowSpan","colSpan","titulostabla2","procentaje_nota_pft","promedio_pft","_this8","resumen_notas_pft","mensajeerror","mensajeinformativo","InputNotaFinalP","keyCode","func_validarnota","onKeyDown","keyPress","NotaFinalPeriodo","NF","func_valoracion","Consolidado","cambiar_periodo","lista_alumnos_grado","nombre_alumno","promedio_gen","lista_materias","lista_informe_alumno","lista_periodos","fun_info_alumno","celdas_tabla","formato_celda","listar_periodos","datos_alumno","matricula","materias","valor","test","fila","clase","url","columnaPro","listado_materias","listar_alumnos_notas","periodos_list","i","lista","botonreturn","impresion","direction","labelId","role","data-bs-toggle","aria-expanded","URL_INFORMES","Calificacionesfinalp","loading_bar","datocelda","center","total","columnas","datostabla","totalcol","anchocolumna","alumno","datos_columna","titulotbl","tabla","Indicadores","fecha_cierre_p","fecha_exam_f","btn_exam_f","btn_acceso_pl","btnAsitenciaEnabled","existen_nota_final_periodo","fecha_examenf","fechaExamen","hoy","cantidad","mensajeceroindicadores","botonCalificaiones","mensaje_info","InputNotaExamen","ExamenFinal","BarInfoPeriodo","bar_info_periodo","fechacierre","dias_faltantes","nivelacion","ConsolidadoResumen","numfila","lista_celda","InputNotaNivelacion","Nivelaciones","nota_fn","InputNotaAsistencia","error_nota_no_valida","asistencia","Asistencias","CalificacionesResumen","AuthPeriodo","children","periodo_es","AuthNivelacion","nivel_es","CalificacionesPromedioPeriodo","cargar_asignaturas","id_gradogrupo","lista_asignaturas_doc","listar_notas_asignatura","handleClickOpenImprimir","openImprimir","handleCloseImprimir","url_pdf","gradogrupo","lgrados","partgradogrupo","split","isFinite","columna","urlpdf","fullScreen","edge","CloseIcon","lista_grados_doc","CalificacionesPeriodoAnterior","AccesoPlataforma","ListadoAlumnos","ObservadorAlumno","InformeAlumno","PerfilUsaurio","InformeAlumnobc","ActividadesDocente","AsignaturasDocente","NotaFinalPeriodoAnterior","Home","clear","handleModalClose","openModal","usuarios_inactivo","fecha_examenf_p","fecha_cierre_niv","dias_faltantes_cierre","ListaStudents","idleTimer","onAction","_onAction","onActive","_onActive","onIdle","_onIdle","obtener_periodo_actual","datos_nivelaciones","dias_faltantes_nivel","guardar_datos_storage","tiempo_restante","endOf","diff","fromNow","IdleTimer","ref","element","debounce","timeout","Route","path","exact","student","id_alumno","edad","listado_estudiantes_cumple","NotFound","CambioPassword","password_r","cambiarpass","alert","Input","main","marginLeft","unit","marginRight","breakpoints","up","paper","marginTop","flexDirection","secondary","form","submit","Printer","PaginaInactivo","Routes","BrowserRouter","Switch","App","apply","arguments","location","reload","verion_app","hostname","ReactDOM","render","navigator","serviceWorker","ready","registration","unregister","_Usuario__WEBPACK_IMPORTED_MODULE_1__"],"mappings":"+LA8FeA,UAtFO,SAAHC,GAA0C,IAArCC,EAAUD,EAAVC,WAAYC,EAASF,EAATE,UAAWC,EAAQH,EAARG,SAAQC,EAELC,mBAAS,IAAGC,EAAAC,YAAAH,EAAA,GAAjDI,EAAiBF,EAAA,GAAEG,EAAcH,EAAA,GAAAI,EACVL,mBAAS,MAAKM,EAAAJ,YAAAG,EAAA,GAArCE,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GAAAG,EACIT,oBAAS,GAAMU,EAAAR,YAAAO,EAAA,GAAtCE,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GAG1BG,oBAAU,YACiB,WACjB,IAAIC,EAAKC,KAAKC,MAAMC,eAAeC,QAAQ,YAC3CV,EAAWM,GAIfK,IACH,IAEHN,oBAAU,WAES,MAAXN,GACAa,KACL,CAACb,IAGJ,IAAMa,EAAkB,WAEd,IAAIC,EAAW,IAYnB,GAVMd,EAAQe,iBAEJD,EAD2B,MAA3Bd,EAAQe,eACA,oBAEA,+BAGa,MAAzBf,EAAQgB,eACRF,EAAQ,sBAETzB,GAAeC,GAAcC,EA+B9B,OA5BAc,GAAW,GAEXY,YAAQ,mCAAqC5B,EAAa,IAAMC,EAAY,IAAMC,EAAW,IAAMS,EAAQgB,aAAc,MAAME,KAAM,SAACC,GAClI,IAAIC,EAAeD,EAEnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC7B,IAAIC,EAAUF,EAAaG,YAAYC,IACjC,SAAAC,GAAI,OAAIC,IAAAC,cAACC,IAAI,CAACC,GAAE,GAAAC,OAAKhB,EAAQ,KAAAgB,OAAIxC,EAAS,KAAAwC,OAAIvC,EAAQ,KAAAuC,OAAIL,EAAKM,eAAiBC,IAAKP,EAAKM,cAAeE,OAAQ,CAAEC,SAAU5C,EAAWyC,cAAeN,EAAKM,eAAiBI,MAAO,CAAEC,eAAgB,QAAUC,KAAK,qBACrNX,IAAAC,cAACW,IAAQ,CAACC,QAAM,GAChBb,IAAAC,cAACa,IAAY,CACTC,QACIf,IAAAC,cAAAD,IAAAgB,SAAA,KACKjB,EAAKkB,kBAAmB,IACzBjB,IAAAC,cAAA,QAAMiB,UAAU,6BAA6BT,MAAO,CAAEU,SAAU,YAC3DpB,EAAKqB,yBAOtBjD,EAAeyB,GACfjB,GAAW,QAGnB0C,QAAQC,IAAI,sCAGX,GAGjB,OACQtB,IAAAC,cAAAD,IAAAgB,SAAA,KACEtC,GACIsB,IAAAC,cAACsB,IAAc,MAErBvB,IAAAC,cAAA,MAAIiB,UAAU,+BAELhD,sCCvFvBsD,EAAAC,EAAAC,EAAA,sBAAAC,IAAA,IAAAC,EAAAJ,EAAA,IAEO,SAASG,EAASE,EAAMC,GAE3B,OAAO,IAAIC,QAAQ,SAACC,EAASC,GACzBC,MAAMC,IAAcN,EAAK,CACrBO,OAAQ,OACRC,KAAMvD,KAAKwD,UAAUR,KAExBtC,KAAK,SAAC+C,GAAQ,OAAKA,EAASC,SAC5BhD,KAAK,SAACiD,GACHT,EAAQS,KAEXC,MAAM,SAAC/C,GACJ0B,QAAQC,IAAI,SAAW3B,GACxBmC,EAASa,aAAe,EACxBV,EAAOtC,yCChBX,SAASiD,IACR,IAAIC,EAAW,KAGf,OAFI7D,eAAeC,QAAQ,cACtB4D,EAAW/D,KAAKC,MAAMC,eAAeC,QAAQ,cAC3C4D,EAJfrB,EAAAC,EAAAC,EAAA,sBAAAkB,grBCwLeE,EAzKJ,SAAAC,GAET,SAAAD,EAAYE,GAAM,IAAAC,EAa2B,OAb3BC,YAAAC,KAAAL,IACdG,EAAAG,YAAAD,KAAAE,YAAAP,GAAAQ,KAAAH,KAAMH,KACDO,MAAQ,CACTC,SAAS,GACTC,SAAS,GACTC,UAAU,EACVf,aAAa,EACbgB,gBAAgB,EAChBjF,SAAS,EACTkF,YAAY,EACZC,cAAc,GAElBZ,EAAKa,MAAQb,EAAKa,MAAMC,KAAIC,wBAAAf,KAC5BA,EAAKgB,SAAWhB,EAAKgB,SAASF,KAAIC,wBAAAf,KAAOA,EAuJ5C,OAtKQiB,YAAApB,EAAAC,GAgBRoB,YAAArB,EAAA,EAAAxC,IAAA,QAAA8D,MAAA,SAEKC,GAAM,IAAAC,EAAAnB,KACVkB,EAAME,iBACFpB,KAAKI,MAAMC,UAAYL,KAAKI,MAAME,WAClCN,KAAKqB,SAAS,CAAC7B,aAAa,EAAOkB,cAAc,EAAMnF,SAAS,IAChEiD,YAAS,QAASwB,KAAKI,OAAO/D,KAAM,SAACC,GACnC,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC7B,IAAI8E,EAA4C,MAAhC/E,EAAaiE,eAC7BW,EAAKE,SAAS,CAACb,eAAiBc,IAChCzF,eAAe0F,QAAQ,WAAW5F,KAAKwD,UAAU5C,IACjD4E,EAAKE,SAAS,CAACd,UAAU,EAAMG,cAAc,EAAOnF,SAAQ,SAE9D2C,QAAQC,IAAI,eACZgD,EAAKE,SAAS,CAAC7B,aAAa,EAAMjE,SAAQ,EAAOmF,cAAa,SAOvE,CAAAvD,IAAA,WAAA8D,MAAA,SAEQO,GACPxB,KAAKqB,SAAQI,YAAA,GAAGD,EAAEE,OAAOC,KAAOH,EAAEE,OAAOT,UAC1C,CAAA9D,IAAA,SAAA8D,MAAA,WAMC,IAAIW,EAAgB/E,IAAAC,cAAA,YAMpB,GAHGkD,KAAKI,MAAMZ,cACVoC,EAAiB/E,IAAAC,cAAA,QAAMiB,UAAU,2BAA0B,MAAGlB,IAAAC,cAAA,cAAQ,SAAc,2DAEpFkD,KAAKI,MAAMG,SACZ,OAAIP,KAAKI,MAAMI,eACA3D,IAAAC,cAAC+E,IAAQ,CAAC7E,GAAI,oBAGdH,IAAAC,cAAC+E,IAAQ,CAAC7E,GAAI,UAIhC,GAAInB,eAAeC,QAAQ,YACzB,OAAIkE,KAAKI,MAAMI,eACH3D,IAAAC,cAAC+E,IAAQ,CAAC7E,GAAI,oBAEdH,IAAAC,cAAC+E,IAAQ,CAAC7E,GAAI,UAiC5B,OACEH,IAAAC,cAAAD,IAAAgB,SAAA,KACAhB,IAAAC,cAACsB,IAAc,CAAEd,MAAO,CAACwE,QAAS9B,KAAKI,MAAM7E,QAAU,GAAK,UAE5DsB,IAAAC,cAAA,OAAKiB,UAAU,aAETlB,IAAAC,cAACiF,IAAW,MAEZlF,IAAAC,cAACkF,IAAa,CACNzG,QAASyE,KAAKI,MAAMK,WACpBwB,QAAQ,UACRC,aAAa,UACbC,UAAU,UACVC,QAAQ,2BACRC,KAAK,OAGPxF,IAAAC,cAACwF,IAAK,CAACvE,UAAU,SAGflB,IAAAC,cAAA,OAAKyF,IAAI,qBAAqBxE,UAAU,aAAayE,IAAI,SAEzD3F,IAAAC,cAAC2F,IAAU,CAACC,UAAU,KAAKC,QAAQ,MAAK,sBAGxC9F,IAAAC,cAAC2F,IAAU,CAACC,UAAU,KAAKC,QAAQ,MAAK,cAGvCf,EACD/E,IAAAC,cAAA,QAAMiB,UAAU,aAAc6E,SAAU5C,KAAKW,OAC3C9D,IAAAC,cAAC+F,IAAW,CAACC,OAAO,SAASC,UAAQ,EAACC,WAAS,GAG7CnG,IAAAC,cAACmG,IAAS,CAACtB,KAAK,WAAW5D,UAAU,eAAemF,MAAM,wBAAqBP,QAAQ,WAAWQ,GAAG,WAAWC,aAAa,QAAQtC,SAAUd,KAAKc,SAAUuC,WAAS,KAEzKxG,IAAAC,cAAC+F,IAAW,CAACC,OAAO,SAASC,UAAQ,EAACC,WAAS,GAG7CnG,IAAAC,cAACmG,IAAS,CAACtB,KAAK,WAAW5D,UAAU,eAAemF,MAAM,gBAAaP,QAAQ,WAAWQ,GAAG,WAAWzE,KAAK,WAAWoC,SAAUd,KAAKc,YAGzIjE,IAAAC,cAACwG,IAAM,CACL5E,KAAK,SACLsE,WAAS,EACTL,QAAQ,YACRY,MAAM,UACNxF,UAAU,aACVyF,SAAUxD,KAAKI,MAAMM,cACtB,cAKL7D,IAAAC,cAAA,OAAKiB,UAAU,iBACXlB,IAAAC,cAAA,OAAKyF,IAAI,4BAA4BxE,UAAU,cAAcyE,IAAI,eAOpF,CAAArF,IAAA,oBAAA8D,MAAA,WAICjB,KAAKqB,SAAS,CAACZ,YAAY,QAC5Bd,EAtKQ,CAAS8D,wPCoMLC,EA7LH,SAAA9D,GAIR,SAAA8D,EAAY7D,GAAM,IAAAC,EAAAC,YAAAC,KAAA0D,GAEd,IAAIC,EC5BL,WACC,IAAIC,EAAa,KAGjB,OAFI/H,eAAeC,QAAQ,gBACvB8H,EAAajI,KAAKC,MAAMC,eAAeC,QAAQ,gBAC5C8H,EDwBUC,GAiBoC,OAfrD/D,EAAAG,YAAAD,KAAAE,YAAAwD,GAAAvD,KAAAH,KAAMH,KAkBRiE,sBAAwB,SAAA5C,GACtBpB,EAAKuB,SAAS,CAAE0C,SAAU7C,EAAM8C,iBACjClE,EAEDmE,gBAAkB,WAChBnE,EAAKuB,SAAS,CAAE0C,SAAU,OAC1BjE,EAAKoE,yBACNpE,EAEDqE,eAAiB,WACbrE,EAAKmE,kBACLnE,EAAKD,MAAMuE,iBAEdtE,EACDuE,aAAe,WAEbvE,EAAKmE,mBAENnE,EAEDoE,sBAAwB,WACtBpE,EAAKuB,SAAS,CAAEiD,mBAAoB,QACrCxE,EAEDyE,aAAe,kBAAMzE,EAAKuB,SAAS,CAACmD,UAAW1E,EAAKM,MAAMoE,YAAU1E,EAEpE2E,aAAe,SAACC,EAAMC,GAAI,OAAK,WAC7BzG,QAAQC,IAAI,YAAcwG,GAC1B7E,EAAKuB,SAAQI,YAAA,GACViD,EAAOC,MA9CN7E,EAAKM,MAAQ,CACTwE,WAAY/E,EAAMgF,aAAaD,WAC/BE,eAAgBjF,EAAMgF,aAAaC,eACnCtK,WAAYqF,EAAMgF,aAAarK,WAC/Be,SAAS,EACTwI,SAAU,KACVO,mBAAoB,KACpBE,UAAU,EACVb,WAAYA,GAGhB7D,EAAKgE,sBAAwBhE,EAAKgE,sBAAsBlD,KAAIC,wBAAAf,KAC5DA,EAAKqE,eAAiBrE,EAAKqE,eAAevD,KAAIC,wBAAAf,KAC9CA,EAAK2E,aAAe3E,EAAK2E,aAAa7D,KAAIC,wBAAAf,KAC1CA,EAAKuE,aAAevE,EAAKuE,aAAazD,KAAIC,wBAAAf,KAAOA,EAmKtD,OA1LKiB,YAAA2C,EAAA9D,GAwBLoB,YAAA0C,EAAA,EAAAvG,IAAA,SAAA8D,MAAA,WAmCM,IAAAE,EAAAnB,KAEG+D,EAAa/D,KAAKI,MAAlB2D,SACFgB,EAAaC,QAAQjB,GAGrBkB,EACJpI,IAAAC,cAACoI,IAAI,CACHnB,SAAUA,EACVoB,aAAc,CAAEC,SAAU,MAAOC,WAAY,SAC7CC,gBAAiB,CAAEF,SAAU,MAAOC,WAAY,SAChDV,KAAMI,EACNQ,QAASvF,KAAKiE,iBAEdpH,IAAAC,cAAC0I,IAAQ,CAAC9C,UAAW3F,IAAMC,GAAI,wBAAyByI,QAASzF,KAAKqE,cAClExH,IAAAC,cAAA,KAAGiB,UAAU,4BAA2B,iBAAiB,sBAE7DlB,IAAAC,cAAC0I,IAAQ,CAACC,QAASzF,KAAKmE,gBACxBtH,IAAAC,cAAA,KAAGiB,UAAU,4BAA2B,eAAe,WAKrD2H,EAAS,CACbC,KAAM,CACJC,MAAO,KAETC,SAAU,CACRD,MAAO,QAETE,OAAQ,CACNF,MATgB,IAUhBG,WAAY,GAEdC,aAAc,CACZlE,QAAS,OACTmE,WAAY,SACZC,QAAS,QACTC,eAAgB,aAKpB,OAEEtJ,IAAAC,cAAA,OAAKiB,UAAU,QACflB,IAAAC,cAACsJ,IAAM,CAACC,SAAS,SAAStI,UAAU,cAClClB,IAAAC,cAACwJ,IAAO,KACNzJ,IAAAC,cAACyJ,IAAU,CAACxI,UAAU,aAAawF,MAAM,UAAUiD,aAAW,OAAOf,QAASzF,KAAKyE,aAAa,YAAY,IAC1G5H,IAAAC,cAAC2J,IAAQ,OAEX5J,IAAAC,cAAC4J,IAAM,KACH7J,IAAAC,cAAA,OAAKyF,IAAI,yBAAyBC,IAAI,UAE1C3F,IAAAC,cAAC2F,IAAU,CAACE,QAAQ,KAAKY,MAAM,UAAUxF,UAAU,QAAO,cACxCiC,KAAKI,MAAMuD,YAG7B9G,IAAAC,cAAC2F,IAAU,CAACE,QAAQ,YAAYY,MAAM,WACjCvD,KAAKI,MAAM0E,gBAGhBjI,IAAAC,cAACyJ,IAAU,CACTI,YAAW5B,EAAa,uBAAoB6B,EAC5CC,gBAAc,OACdpB,QAASzF,KAAK8D,sBACdP,MAAM,WAEP1G,IAAAC,cAACgK,IAAa,SAIlB7B,EAEDpI,IAAAC,cAACiK,IAAM,CACHhJ,UAAW2H,EAAOI,OAClBnD,QAAQ,aACRqE,OAAO,OACPrC,KAAM3E,KAAKI,MAAMoE,UAGnB3H,IAAAC,cAAA,OAAKiB,UAAW2H,EAAOM,cAErBnJ,IAAAC,cAACyJ,IAAU,CAACd,QAASzF,KAAKuE,eACC,IAAxBvE,KAAKI,MAAMoE,SAAoB3H,IAAAC,cAACmK,IAAe,MAAMpK,IAAAC,cAACoK,IAAgB,OAEzErK,IAAAC,cAAA,QAAMiB,UAAU,qBAAoB,sBAEtClB,IAAAC,cAACqK,IAAO,MACNtK,IAAAC,cAACsK,IAAI,KACDvK,IAAAC,cAACW,IAAQ,CAACC,QAAM,EAACP,IAAK,EAAGuF,UAAW3F,IAAMC,GAAI,QAASyI,QAAS,kBAAMtE,EAAKE,SAAS,CAACmD,UAAS,MAC5F3H,IAAAC,cAACuK,IAAY,KAACxK,IAAAC,cAAA,KAAGiB,UAAU,4BAA2B,SACtDlB,IAAAC,cAACa,IAAY,CAACC,QAAQ,YAExBf,IAAAC,cAACW,IAAQ,CAACC,QAAM,EAACP,IAAK,EAAGuF,UAAW3F,IAAMC,GAAE,4BAAAC,OAA8B+C,KAAKI,MAAM5F,YAAciL,QAAS,kBAAMtE,EAAKE,SAAS,CAACmD,UAAS,MACxI3H,IAAAC,cAACuK,IAAY,KAACxK,IAAAC,cAAA,KAAGiB,UAAU,4BAA2B,yBACtDlB,IAAAC,cAACa,IAAY,CAACC,QAAQ,iBAMxBf,IAAAC,cAACqK,IAAO,MAYRtK,IAAAC,cAACW,IAAQ,CAACC,QAAM,EAACP,IAAK,EAAGsI,QAASzF,KAAKmE,gBACrCtH,IAAAC,cAACuK,IAAY,KAACxK,IAAAC,cAAA,KAAGiB,UAAU,6BAA4B,gBACvDlB,IAAAC,cAACa,IAAY,CAACC,QAAQ,kBAWnC8F,EA1LK,CAASD,8DEiBN6D,ICpCa7D,YDAR,SAAA7D,GAChB,SAAA0H,EAAYzH,GAAM,IAAAC,EAUb,OAVaC,YAAAC,KAAAsH,IAIdxH,EAAAG,YAAAD,KAAAE,YAAAoH,GAAAnH,KAAAH,KAAMH,KACDO,MAAQ,CACTmH,YAAa1H,EAAM2H,IACnBhN,WAAYqF,EAAMrF,WAClB6C,SAAUwC,EAAMpF,UAChBC,SAAUmF,EAAMnF,UACnBoF,EAqBF,OAhCaiB,YAAAuG,EAAA1H,GAYfoB,YAAAsG,EAAA,EAAAnK,IAAA,SAAA8D,MAAA,WAIG,IAAIwG,EAAgB,KAWpB,MAT+B,MAA3BzH,KAAKI,MAAMmH,cACXE,EAAgB5K,IAAAC,cAAAD,IAAAgB,SAAA,KAAEhB,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YAChB5E,UAAU,cACV2J,KAAK,QACLhF,UAAW3F,IAAMC,GAAE,qBAAAC,OAAuB+C,KAAKI,MAAM/C,SAAQ,KAAAJ,OAAI+C,KAAKI,MAAM1F,SAAQ,KACpF6I,MAAM,aAAY,iBAKpD1G,IAAAC,cAAAD,IAAAgB,SAAA,KACM4J,OAGTH,EAhCa,CAAS7D,6CEoBvBnJ,GAAgBqN,eAAK,kBAAM/I,QAAAC,UAAAxC,KAAAgC,EAAAuC,KAAA,aAgJlBgH,GA9IH,SAAAhI,GAEV,SAAAgI,EAAY/H,GAAM,IAAAC,EAUmC,OAVnCC,YAAAC,KAAA4H,IAChB9H,EAAAG,YAAAD,KAAAE,YAAA0H,GAAAzH,KAAAH,KAAMH,KAEDO,MAAQ,CACTyH,gBAAmBpI,cACnBqI,aAAcjL,IAAAC,cAAA,YACdiL,WAAYlI,EAAMkI,WAClBxM,SAAS,EACTyM,aAAa,GAEjBlI,EAAKmI,cAAgBnI,EAAKmI,cAAcrH,KAAIC,wBAAAf,KAAOA,EA6HpD,OAzISiB,YAAA6G,EAAAhI,GAaToB,YAAA4G,EAAA,EAAAzK,IAAA,kBAAA8D,MAAA,SAEeiH,GAEZ,GAAa,IAATA,EACA,OAAOrL,IAAAC,cAACsK,IAAI,CAAC1E,UAAU,OAAM7F,IAAAC,cAACW,IAAQ,CAACC,QAAM,GAAC,IAACb,IAAAC,cAACa,IAAY,CAACC,QAAQ,6BAE5E,CAAAT,IAAA,gBAAA8D,MAAA,WAIc,IAAAE,EAAAnB,KAEb,GAAKA,KAAKI,MAAMyH,gBAAgBrN,WAAhC,CAIA,IAAIA,EAAawF,KAAKI,MAAMyH,gBAAgBrN,WAC5C4B,YAAQ,8BAAgC5B,EAAYwF,KAAKI,OAAO/D,KAAM,SAACC,GACjE,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE7B,IAAIC,EAAUF,EAAa4L,OAAOxL,IAC5B,SAACC,EAAMO,GAAG,OAAKN,IAAAC,cAACsL,KAAI,CAACjL,IAAKA,EAAKY,UAAU,QAC/BlB,IAAAC,cAACuL,KAAU,CAACtK,UAAU,aAChBuK,OACEzL,IAAAC,cAAA,KAAGiB,UAAU,kBAAiB,YAEhCwK,MAAK,GAAAtL,OAAKL,EAAK4L,aAAY,KAAAvL,OAAIL,EAAK6L,aAExC5L,IAAAC,cAAC4L,KAAW,KACZ7L,IAAAC,cAAC6L,KAAI,CAACC,GAAIzH,EAAKf,MAAM4H,aACrBnL,IAAAC,cAACsK,IAAI,CAAC1E,UAAU,OACN7F,IAAAC,cAAC+L,WAAQ,CAACC,SAAUjM,IAAAC,cAAA,WAAK,iBACtBD,IAAAC,cAACxC,GAAa,CAACG,UAAWmC,EAAKnC,UAAWC,SAAUkC,EAAKlC,SAAUF,WAAYA,OAI5FqC,IAAAC,cAAA,WAECD,IAAAC,cAACiM,KAAO,CAACR,MAAM,qBAAqB/B,aAAW,OAC5C3J,IAAAC,cAACyJ,IAAU,CAAChD,MAAM,UAAUiD,aAAW,iBAAiB9D,UAAW3F,IAAMC,GAAE,wBAAAC,OAA0BL,EAAKnC,UAAS,KAAAwC,OAAIL,EAAKlC,SAAQ,KAAAuC,OAAIzC,EAAU,KAAAyC,OAAIkE,EAAKf,MAAM2H,aAC7JlL,IAAAC,cAACkM,KAAU,QAIlBnM,IAAAC,cAACwK,GAAc,CAACE,IAAK5K,EAAKsL,KAAMzN,UAAWmC,EAAKnC,UAAWC,SAAUkC,EAAKlC,SAAUF,WAAYA,IAChGqC,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YACnB5E,UAAU,cACVT,MAAO,CAACwE,QAAuB,MAAdlF,EAAKsL,KAAe,GAAK,QAC1CR,KAAK,QACLhF,UAAW3F,IAAMC,GAAE,4BAAAC,OAA8BL,EAAKnC,UAAS,KAAAwC,OAAIL,EAAKlC,SAAQ,KAChF6I,MAAM,aAAY,oBAOhDpC,EAAKE,SAAS,CAACyG,aAAcrL,GAAU,WAK/BwM,WACE,WACEjJ,KAAKqB,SAAS,CAAC9F,SAAS,KAEzBqF,KAAKO,GACN,YAMZjD,QAAQC,IAAI,wCAGrB,CAAAhB,IAAA,WAAA8D,MAAA,SAEQO,GACPxB,KAAKqB,SAAQI,YAAA,GAAGD,EAAEE,OAAOC,KAAOH,EAAEE,OAAOT,UAC1C,CAAA9D,IAAA,SAAA8D,MAAA,WAMC,OAEEpE,IAAAC,cAAA,OAAKiB,UAAU,aACTlB,IAAAC,cAAA,WACAD,IAAAC,cAAA,OAAKiB,UAAU,+BACLlB,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YACR5E,UAAU,UACV2J,KAAK,QACLhF,UAAW3F,IAAMC,GAAE,gCACnBuG,MAAM,aAAY,6BAGlD1G,IAAAC,cAAA,OAAKiB,UAAU,gBACflB,IAAAC,cAACkF,IAAa,CACNzG,QAASyE,KAAKI,MAAM7E,QACpB0G,QAAQ,UACRC,aAAa,UACbC,UAAU,UACVC,QAAQ,2BACRC,KAAK,OAENrC,KAAKI,MAAM0H,kBAU3B,CAAA3K,IAAA,oBAAA8D,MAAA,WAGCjB,KAAKqB,SAAS,CAAC2G,aAAY,IAC3BhI,KAAKiI,oBACNL,EAzIS,CAASnE,oDCmHNyF,GAxIK,SAAAtJ,GAElB,SAAAsJ,EAAYrJ,EAAOsJ,GAAS,IAAArJ,EAAAC,YAAAC,KAAAkJ,IAC1BpJ,EAAAG,YAAAD,KAAAE,YAAAgJ,GAAA/I,KAAAH,KAAMH,EAAOsJ,KAERrI,SAAWhB,EAAKgB,SAASF,KAAIC,wBAAAf,KAClCA,EAAKsJ,WAAatJ,EAAKsJ,WAAWxI,KAAIC,wBAAAf,KACtCA,EAAKuJ,YAAcvJ,EAAKuJ,YAAYzI,KAAIC,wBAAAf,KACxCA,EAAKwJ,kBAAoBxJ,EAAKwJ,kBAAkB1I,KAAIC,wBAAAf,KACpD,IAAIyJ,EAAI,IAAIC,KACRC,EAAOF,EAAEG,WAAY,EAErBC,EAAaJ,EAAEK,cAAgB,KAA8B,IAAvBC,OAAOJ,GAAKK,OAAc,IAAML,EAAKA,GAAQ,IAAMF,EAAEQ,UAgB7F,OAdFjK,EAAKM,MAAQ,CACX4J,OAAQnK,EAAMmK,OACd3M,SAAUwC,EAAMoK,QAChBvP,SAAUmF,EAAMqK,QAChBC,eAAgBtK,EAAMsK,eACtBC,iBAAkBvK,EAAMuK,iBACxBC,cAAexK,EAAMwK,cAAgBxK,EAAMwK,cAAgBV,EAC3DW,aAAczK,EAAMyK,aACpBC,cAAe1K,EAAM2K,QACrBC,cAAe5K,EAAM6K,SACrBxO,eAAgB2D,EAAM8K,cACtBC,kBAAmB/N,IAAAC,cAAA,UAAID,IAAAC,cAAA,YACvB+N,aAAa,EACbC,MAAM,GACNhL,EAyGH,OArIiBiB,YAAAmI,EAAAtJ,GA8BjBoB,YAAAkI,EAAA,EAAA/L,IAAA,oBAAA8D,MAAA,WAEkB,IAAAE,EAAAnB,KACbA,KAAKI,MAAMgK,kBAAoBpK,KAAKI,MAAMiK,eAW5C7L,YAAS,mBAAoBwB,KAAKI,OAAO/D,KAAM,SAACC,IAEnB,IADRA,EACFE,OACf2E,EAAKtB,MAAMkL,kBACX5J,EAAKkI,eAELnL,QAAQC,IAAI,gCAOnB,CAAAhB,IAAA,WAAA8D,MAAA,SAEQO,GACPtD,QAAQC,IAAIqD,EAAEE,OAAOC,MACrB3B,KAAKqB,SAAQI,YAAA,GACRD,EAAEE,OAAOC,KAAOH,EAAEE,OAAOT,UAE/B,CAAA9D,IAAA,cAAA8D,MAAA,WAGCjB,KAAKqB,SAAS,CAAEyJ,MAAM,MACvB,CAAA3N,IAAA,aAAA8D,MAAA,WAGCjB,KAAKqB,SAAS,CAAEyJ,MAAM,MACvB,CAAA3N,IAAA,SAAA8D,MAAA,WAKC,IAEI+J,EAAQnO,IAAAC,cAACwG,KAAM,CAAChG,MAAO,CAACwE,QAAS9B,KAAKI,MAAMlE,eAAiB,GAAK,QAAUwC,KAAK,SAAU+G,QAASzF,KAAKoJ,WAAY7F,MAAM,WAAU,oBAE/G,SAAtBvD,KAAKI,MAAM4J,SACXgB,EAASnO,IAAAC,cAAA,KAAGU,KALF,IAKiBiI,QAASzF,KAAKoJ,WAAYb,MAAM,oBACzD1L,IAAAC,cAAA,KAAGmO,MAAM,8BAA6B,UAG5C,IAAIC,EAAgB,GAKpB,OAJIlL,KAAKI,MAAMyK,cACZK,EAAgB,oDAIjBrO,IAAAC,cAAAD,IAAAgB,SAAA,KAEGmN,EAEDnO,IAAAC,cAACqO,KAAK,CAACL,KAAM9K,KAAKI,MAAM0K,KAAMM,OAAQpL,KAAKqJ,aACzCxM,IAAAC,cAACqO,KAAME,OAAM,CAACC,aAAW,GACvBzO,IAAAC,cAACqO,KAAMI,MAAK,KAAC,0BAEf1O,IAAAC,cAACqO,KAAMK,KAAI,KAEL3O,IAAAC,cAAC2O,KAAI,KACDP,EACFrO,IAAAC,cAAC2O,KAAKC,MAAK,CAACC,UAAU,kBACpB9O,IAAAC,cAAC2O,KAAKG,MAAK,KAAC,oBACZ/O,IAAAC,cAAC2O,KAAKI,QAAO,CAACnN,KAAK,OAAOoN,YAAY,SAASnK,KAAK,mBAAmBV,MAAOjB,KAAKI,MAAMgK,iBAAkBtJ,SAAUd,KAAKc,YAG5HjE,IAAAC,cAAC2O,KAAKC,MAAK,CAACC,UAAU,qBACpB9O,IAAAC,cAAC2O,KAAKG,MAAK,KAAC,SACZ/O,IAAAC,cAAC2O,KAAKI,QAAO,CAACnN,KAAK,OAAOiD,KAAK,gBAAgBb,SAAUd,KAAKc,SAAWG,MAAOjB,KAAKI,MAAMiK,mBAMrGxN,IAAAC,cAACqO,KAAMY,OAAM,KACblP,IAAAC,cAACwG,KAAM,CAACX,QAAQ,UAAU8C,QAASzF,KAAKsJ,mBAAmB,WAGzDzM,IAAAC,cAACwG,KAAM,CAACX,QAAQ,YAAY8C,QAASzF,KAAKqJ,aAAa,eAOhE,CAAAlM,IAAA,oBAAA8D,MAAA,gBAKAiI,EArIiB,CAASzF,qGCwOduI,GAvNE,SAAApM,GAEf,SAAAoM,EAAYnM,GAAM,IAAAC,EAoByC,OApBzCC,YAAAC,KAAAgM,IAChBlM,EAAAG,YAAAD,KAAAE,YAAA8L,GAAA7L,KAAAH,KAAMH,KACDO,MAAQ,CACTyH,gBAAiBpI,cACjBvC,cAAe2C,EAAMoM,MAAM7O,OAAO8O,aAClC7O,SAAUwC,EAAMoM,MAAM7O,OAAO6M,QAC7BvP,SAAUmF,EAAMoM,MAAM7O,OAAO8M,QAC7BI,aAAczK,EAAMoM,MAAM7O,OAAO+O,YACjCvB,kBAAmB/N,IAAAC,cAAA,UAAID,IAAAC,cAAA,YACvByN,cAAe,GACf6B,kBAAmB,GACnBC,YAAc,EACdC,eAAgB,EAChBC,aAAc,KACdC,iBAAiB,EACjBC,UAAU,GAGd3M,EAAK4M,mBAAqB5M,EAAK4M,mBAAmB9L,KAAIC,wBAAAf,KACtDA,EAAKwM,eAAiBxM,EAAKwM,eAAe1L,KAAIC,wBAAAf,KAC9CA,EAAK6M,iBAAmB7M,EAAK6M,iBAAiB/L,KAAIC,wBAAAf,KAAOA,EA8L1D,OApNciB,YAAAiL,EAAApM,GAuBdoB,YAAAgL,EAAA,EAAA7O,IAAA,WAAA8D,MAAA,SAGQO,GACPxB,KAAKqB,SAAQI,YAAA,GAAGD,EAAEE,OAAOC,KAAOH,EAAEE,OAAOT,UAC1C,CAAA9D,IAAA,mBAAA8D,MAAA,WAEiB,IAAAE,EAAAnB,KAChB5D,YAAQ,wBAAwB4D,KAAKI,MAAMkK,aAActK,KAAKI,OAAO/D,KAAM,SAACC,GAC1E,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC/B,IAAIoQ,EAAYrQ,EAAaqQ,UAC7BzL,EAAKE,SAAS,CACVnE,cAAgB0P,EAAUC,cAC1BxP,SAAWuP,EAAUE,WACrBvC,cAAeqC,EAAUG,aACzBC,eAAgBJ,EAAUR,yBAInC,CAAAjP,IAAA,iBAAA8D,MAAA,WAEe,IAAAgM,EAAAjN,KACZ5D,YAAQ,mBAAoB4D,KAAKI,OAAO/D,KAAM,SAACC,GAC7C,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC/B,IAAI+P,EAAehQ,EAAagQ,aAC5BpR,EAAUoB,EAAapB,QAC3B8R,EAAK5L,SAAS,CAACiL,eAAgBnR,EAASkR,YAAalR,EAASoR,aAAcA,SAInF,CAAApP,IAAA,gBAAA8D,MAAA,SAEaiM,GACZ,MAAc,eAAVA,EACMC,KAAOD,GAAOE,OAAO,eAErB,cACX,CAAAjQ,IAAA,wBAAA8D,MAAA,SAEqBkJ,GAAe,IAAAkD,EAAArN,KACvBsN,OAAOC,QAAQ,4CAEvBnR,YAAQ,sBAAwB+N,EAAiB,IAAMnK,KAAKI,MAAMyH,gBAAgB2F,MAAOxN,KAAKI,OAAO/D,KAAM,SAACC,IAE/E,IADRA,EACFE,OACZ6Q,EAAKX,yBAKjB,CAAAvP,IAAA,8BAAA8D,MAAA,SAE2BrE,GAAK,IAAA6Q,EAAAzN,KAC7B,GAAoB,MAAhBpD,EAAK8Q,OAAe,CAEpB,OAAO7Q,IAAAC,cAACC,IAAI,CAACC,GADC,IACYyI,QAAS,kBAAMgI,EAAKE,sBAAsB/Q,EAAKuN,kBACrEtN,IAAAC,cAACiM,KAAO,CAACR,MAAM,mBAAmBqF,UAAU,cACtC/Q,IAAAC,cAAA,KAAGiB,UAAU,6BAA6B,eAI3D,CAAAZ,IAAA,qBAAA8D,MAAA,WAEmB,IAAA4M,EAAA7N,KAEZ8N,EAAkBC,aAAW,SAAAC,GAAK,MAAK,CAC3CC,KAAM,CACJC,gBAAiBF,EAAMG,QAAQC,OAAOC,MACtC9K,MAAOyK,EAAMG,QAAQC,OAAOE,OAE9BpP,KAAM,CACJlB,SAAU,MANU+P,CAQpBQ,MAEEC,EAAiBT,aAAW,SAAAC,GAAK,MAAK,CAC1CS,KAAM,CACJC,qBAAsB,CACpBR,gBAAiBF,EAAMG,QAAQQ,WAAWC,YAHzBb,CAMnBc,MAEJzS,YAAQ,qBAAuB4D,KAAKI,MAAMkK,aAAe,IAAMtK,KAAKI,MAAM/C,SAAW,IAAM2C,KAAKI,MAAM1F,SAAW,IAAMsF,KAAKI,MAAMiM,YAAarM,KAAKI,OAAO/D,KAAM,SAACC,GAC5J,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE7B,IAAIsS,EAAYvS,EAAawS,YAAYpS,IACnC,SAAAC,GAAI,OAAGC,IAAAC,cAAC0R,EAAc,CAACQ,OAAK,EAAE7R,IAAKP,EAAKuN,eAAgBpM,UAAU,cAClElB,IAAAC,cAACgR,EAAe,CAAEmB,MAAM,QAAQpB,EAAKqB,cAActS,EAAKyN,gBACxDxN,IAAAC,cAACgR,EAAe,CAAEmB,MAAM,QAAQrS,EAAKwN,kBACrCvN,IAAAC,cAACgR,EAAe,CAAEmB,MAAM,UAClBpS,IAAAC,cAACoM,GAAc,CAAC6B,gBAAiB8C,EAAKnB,mBAAmB9L,KAAKiN,GAAOvD,aAAcuD,EAAKzN,MAAMkK,aAAcH,eAAgBvN,EAAKuN,eAAgBC,iBAAkBxN,EAAKwN,iBAAkBC,cAAezN,EAAKyN,cAAeL,OAAO,SACpOnN,IAAAC,cAACC,IAAI,CAACO,MAAO,CAACwE,QAAS+L,EAAKzN,MAAMoM,gBAAkB,GAAK,QAAUxP,GAAE,wBAAAC,OAA0B4Q,EAAKzN,MAAMkK,aAAY,KAAArN,OAAIL,EAAKuN,eAAc,KAAAlN,OAAI4Q,EAAKzN,MAAM/C,SAAQ,KAAAJ,OAAI4Q,EAAKzN,MAAM1F,SAAQ,KAAAuC,OAAI4Q,EAAKzN,MAAMlD,eAAkBqL,MAAM,kBAClO1L,IAAAC,cAACiM,KAAO,CAACR,MAAM,iBAAiBqF,UAAU,cACpC/Q,IAAAC,cAAA,KAAGiB,UAAU,4BAA4B,0BAI9C8P,EAAKsB,4BAA4BvS,OAI1C6P,EAAW,EACX2C,OAAOC,KAAK9S,EAAawS,aAAajF,OAAS,IAC9C2C,GAAW,GAGhBoB,EAAKxM,SAAS,CAACuJ,kBAAmBkE,EAAWrC,SAAUA,SAGzDvO,QAAQC,IAAI,uCAGnB,CAAAhB,IAAA,SAAA8D,MAAA,WAID,IAAM6M,EAAkBC,aAAW,SAAAC,GAAK,MAAK,CAC3CC,KAAM,CACJ1K,MAAOyK,EAAMG,QAAQC,OAAOE,OAE9BpP,KAAM,CACJlB,SAAU,MALU+P,CAOpBQ,MAEAe,EAAgB,GAIpB,OAHItP,KAAKI,MAAMqM,WACV6C,EAAgBzS,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YAAY5E,UAAU,cAAc2E,UAAW3F,IAAMC,GAAI,iCAAmCgD,KAAKI,MAAMkK,aAAe,IAAMtK,KAAKI,MAAM/C,SAAW,IAAK2C,KAAKI,MAAM1F,SAAW,IAAKsF,KAAKI,MAAMlD,cAAgB,IAAM8C,KAAKI,MAAMiM,YAAa9I,MAAM,aAAY,gBAIhT1G,IAAAC,cAAA,OAAKiB,UAAU,aAGXlB,IAAAC,cAACyS,KAAI,CAACC,WAAS,EAACC,QAAS,GACrB5S,IAAAC,cAACyS,KAAI,CAAC3S,MAAI,EAAC8S,GAAI,IACb7S,IAAAC,cAACwF,IAAK,CAACvE,UAAU,gBAEblB,IAAAC,cAAC4J,IAAM,CAAC3I,UAAU,cACFlB,IAAAC,cAAA,KAAGiB,UAAU,4BAA2B,yBAKxDlB,IAAAC,cAAC2F,IAAU,CAACE,QAAQ,KAAKD,UAAU,KAAK3E,UAAU,UAAS,6BACzBiC,KAAKI,MAAMmK,eAGvC1N,IAAAC,cAAA,MAAIiB,UAAU,cAAa,uCACzBlB,IAAAC,cAAA,SAAIkD,KAAKI,MAAMmK,cAAc,MAAIvK,KAAKI,MAAM4M,eAAe,kBAAahN,KAAKI,MAAMiM,aAErFxP,IAAAC,cAAC6S,KAAK,CAAC5R,UAAU,+BACXlB,IAAAC,cAAC8S,KAAS,CAAC7R,UAAU,YACnBlB,IAAAC,cAAC+R,KAAQ,CAAE9Q,UAAU,YACnBlB,IAAAC,cAACgR,EAAe,CAAC/P,UAAU,sBAAsB6H,MAAM,OAAO,SAC9D/I,IAAAC,cAACgR,EAAe,CAAC/P,UAAU,sBAAsB6H,MAAM,MAAMqJ,MAAM,QAAO,oBAC1EpS,IAAAC,cAACgR,EAAe,CAAC/P,UAAU,sBAAsB6H,MAAM,MAAMqJ,MAAM,QAAO,eAI9EpS,IAAAC,cAAC+S,KAAS,KAED7P,KAAKI,MAAMwK,oBAMhC/N,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YAAY5E,UAAU,cAAc2E,UAAW3F,IAAMC,GAAI,qBAAuBgD,KAAKI,MAAM/C,SAAW,IAAK2C,KAAKI,MAAM1F,SAAW,IAAMsF,KAAKI,MAAMlD,cAAgBqG,MAAM,WAAU,cAC/M+L,EACDzS,IAAAC,cAACoM,GAAc,CAACyB,cAAe3K,KAAKI,MAAMoM,gBAAiBvC,QAASjK,KAAKI,MAAM/C,SAAU6M,QAASlK,KAAKI,MAAM1F,SAAUqQ,gBAAiB/K,KAAK0M,mBAAmB9L,KAAKZ,MAAOsK,aAActK,KAAKI,MAAMkK,aAAcH,eAAe,GAAGC,iBAAiB,GAAGC,cAAc,GAAGL,OAAO,cAUhS,CAAA7M,IAAA,oBAAA8D,MAAA,WAECjB,KAAK0M,qBACL1M,KAAKsM,iBACLtM,KAAK2M,uBACNX,EApNc,CAASvI,+BCyKXqM,GAvLS,SAAAlQ,GACpB,SAAAkQ,EAAYjQ,GAAM,IAAAC,EAa6B,OAb7BC,YAAAC,KAAA8P,IACdhQ,EAAAG,YAAAD,KAAAE,YAAA4P,GAAA3P,KAAAH,KAAMH,KAyFZkQ,WAAa,WACX,IAAIC,EAAa,CACbC,aAAenQ,EAAKD,MAAMoQ,aAC1B3F,aAAexK,EAAKD,MAAMyK,aAC1BpN,cAAe4C,EAAKD,MAAM3C,cAC1BG,SAAWyC,EAAKD,MAAMxC,SACtB3C,SAAWoF,EAAKD,MAAMnF,SACtBqN,WAAYjI,EAAKD,MAAMkI,YAE3BvJ,YAAS,6BAA8BwR,GAAY3T,KAAM,SAACC,GACtD,IAAIC,EAAeD,GACQ,IAAvBC,EAAaC,OACb0B,QAAQC,IAAI5B,GAE2B,IAAnC2T,SAAS3T,EAAa4T,WACtBjS,QAAQC,IAAI,4BAA6B5B,EAAa4T,SACtDrQ,EAAKuB,SAAS,CAAC+O,UAAU,EAAO5T,OAAO,EAAO6T,YAAY,EAAOC,WAAY,KAC7ExQ,EAAKD,MAAM0Q,mBAAmBzQ,EAAKD,MAAMoQ,aAAa,IACtDO,SAASC,eAAe5G,OAAO/J,EAAKD,MAAMoQ,eAAehP,MAAQ,MAOrEnB,EAAKuB,SAAS,CAAC+O,UAAU,EAAO5T,OAAO,EAAM6T,YAAY,IACzDnS,QAAQC,IAAI,gCAlHhB2B,EAAKM,MAAQ,CACTsQ,MAAO7Q,EAAM6Q,MACbJ,WAAYzQ,EAAM8Q,KAClBP,UAAU,EACVQ,YAAY,EACZpU,OAAO,EACPqU,SAAU,EACVC,MAAO,0BAEXhR,EAAKiR,YAAcjR,EAAKiR,YAAYnQ,KAAIC,wBAAAf,KACxCA,EAAKkR,aAAelR,EAAKkR,aAAapQ,KAAIC,wBAAAf,KAC1CA,EAAKmR,UAAYnR,EAAKmR,UAAUrQ,KAAIC,wBAAAf,KAAOA,EAsK5C,OApLiBiB,YAAA+O,EAAAlQ,GAgBnBoB,YAAA8O,EAAA,EAAA3S,IAAA,aAAA8D,MAAA,SAEUA,EAAOiQ,GACd,IAAIC,EAAaC,KAAKC,IAAI,GAAIH,GAAa,GAC3C,OAAOE,KAAKE,MAAMrQ,EAAQkQ,GAAcA,IAC3C,CAAAhU,IAAA,cAAA8D,MAAA,SAEWO,GAIR,GAHAtD,QAAQC,IAAIqD,EAAErE,KAGA,UAAVqE,EAAErE,IAAgB,CAGpB,GAAGoU,MAAM/P,EAAEE,OAAOT,OAGf,OAFA/C,QAAQC,IAAI,wBACZ6B,KAAKqB,SAAS,CAAC7E,OAAO,IAMxB,IAAIgV,EAAUC,WAAWjQ,EAAEE,OAAOT,OAElC,GAAIuQ,EAAUxR,KAAKI,MAAMyQ,SAItB,OAHA3S,QAAQC,IAAI,oCAAsC6B,KAAKI,MAAMyQ,UAC7D7Q,KAAKH,MAAM6R,wBACX1R,KAAKqB,SAAS,CAAC7E,OAAO,IAIxBwD,KAAKqB,SAAS,CAAC4O,aAAczO,EAAEE,OAAOyB,KAGtCnD,KAAKgR,aAAaQ,QAGjBxR,KAAKqB,SAAS,CAAC+O,UAAU,MAEjC,CAAAjT,IAAA,eAAA8D,MAAA,SAEYuQ,GAAQ,IAAArQ,EAAAnB,KACbgQ,EAAa,CACbC,aAAejQ,KAAKH,MAAMoQ,aAC1B3F,aAAetK,KAAKH,MAAMyK,aAC1BpN,cAAe8C,KAAKH,MAAM3C,cAC1BG,SAAW2C,KAAKH,MAAMxC,SACtB3C,SAAWsF,KAAKH,MAAMnF,SACtBqN,WAAY/H,KAAKH,MAAMkI,WACvB4J,YAAaH,GAGZA,GAKLxR,KAAKqB,SAAS,CAACuP,YAAY,IAE3BpS,YAAS,6BAA8BwR,GAAY3T,KAAM,SAACC,IAE7B,IADRA,EACFE,OACb2E,EAAKtB,MAAM+R,YAAYzQ,EAAKtB,MAAMoQ,cAClC9O,EAAKE,SAAS,CAAC+O,UAAU,EAAM5T,OAAO,EAAOoU,YAAY,MAKzDzP,EAAKE,SAAS,CAAC+O,UAAU,EAAO5T,OAAO,EAAMoU,YAAY,IACzD1S,QAAQC,IAAI,gCAhBd6B,KAAKqB,SAAS,CAAC7E,OAAO,MAoB/B,CAAAW,IAAA,YAAA8D,MAAA,SAmCSO,GAERtD,QAAQC,IAAI,sBACZ6B,KAAKqB,SAAS,CAAC+O,UAAU,MAE1B,CAAAjT,IAAA,kBAAA8D,MAAA,SAEe4Q,GACV,GAAe,KAAXA,EACA,OAAOJ,WAAWI,GAAQC,QAAQ,KAE3C,CAAA3U,IAAA,SAAA8D,MAAA,WAGU,IAAAgM,EAAAjN,KAEL,OACInD,IAAAC,cAAAD,IAAAgB,SAAA,KACAhB,IAAAC,cAAA,OAAKiB,UAAU,kBACXlB,IAAAC,cAAA,WACAD,IAAAC,cAACmG,IAAS,CAACzG,MAAOwD,KAAKI,MAAM5D,MAAOuV,SAAU,SAACC,GAAS/E,EAAI,MAAAhQ,OAAOgQ,EAAKpN,MAAM6Q,QAAWsB,GACrFC,WAAY,CACRC,UAAW,EACX5U,MAAO,CAAE6U,UAAW,WAExBxQ,KAAM3B,KAAKH,MAAMoQ,aACjB9M,GAAInD,KAAKH,MAAMoQ,aACf5M,WAAW,EACXG,SAAUxD,KAAKI,MAAMwQ,WACrB7S,UAAU,yCACVqU,aAAcpS,KAAKqS,gBAAgBrS,KAAKI,MAAMkQ,YAC9CgC,OAAQtS,KAAKiR,UACbsB,QAASvS,KAAK+Q,YACdjQ,SAAUd,KAAKH,MAAM2S,aACrBC,QAASzS,KAAKH,MAAM6S,cAGpB7V,IAAAC,cAAA,OAAKyF,IAAKvC,KAAKI,MAAM0Q,MAAQxT,MAAO,CAACqV,WAAY3S,KAAKI,MAAMgQ,SAAW,UAAY,UAAY5N,IAAI,QACnG3F,IAAAC,cAACsB,IAAc,CAAEuD,KAAI,QAAA1E,OAAU+C,KAAKH,MAAM6Q,OAASpT,MAAO,CAACqV,WAAY3S,KAAKI,MAAMwQ,WAAa,UAAY,aAE/G/T,IAAAC,cAAA,WACID,IAAAC,cAACiM,KAAO,CAAER,MAAM,cAAc/B,aAAW,OACzC3J,IAAAC,cAAA,KAAGiB,UAAU,2BAA2B0H,QAAS,kBAAKwH,EAAK8C,cAC/DzS,MAAO,CAACqV,WAAqC,IAAzB3S,KAAKI,MAAMkQ,YAAoBtQ,KAAKI,MAAMgQ,SAAW,UAAY,WAAY,wBAS5G,CAAAjT,IAAA,oBAAA8D,MAAA,gBAIE6O,EApLiB,CAASrM,iCC2KlBmP,GA3KK,SAAAhT,GAChB,SAAAgT,EAAY/S,GAAM,IAAAC,EAc6B,OAd7BC,YAAAC,KAAA4S,IACd9S,EAAAG,YAAAD,KAAAE,YAAA0S,GAAAzS,KAAAH,KAAMH,KAoFZkQ,WAAa,WACX,IAAIC,EAAa,CACbC,aAAenQ,EAAKD,MAAMoQ,aAC1B3F,aAAexK,EAAKD,MAAMyK,aAC1BpN,cAAe4C,EAAKD,MAAM3C,cAC1BG,SAAWyC,EAAKD,MAAMxC,SACtB3C,SAAWoF,EAAKD,MAAMnF,SACtBqN,WAAYjI,EAAKD,MAAMkI,YAE3BvJ,YAAS,6BAA8BwR,GAAY3T,KAAM,SAACC,GACtD,IAAIC,EAAeD,GACQ,IAAvBC,EAAaC,OACb0B,QAAQC,IAAI5B,GAE2B,IAAnC2T,SAAS3T,EAAa4T,WACtBjS,QAAQC,IAAI,4BAA6B5B,EAAa4T,SACtDrQ,EAAKuB,SAAS,CAAC+O,UAAU,EAAO5T,OAAO,EAAO6T,YAAY,EAAOC,WAAY,KAC7ExQ,EAAKD,MAAM0Q,mBAAmBzQ,EAAKD,MAAMoQ,aAAa,IACtDO,SAASC,eAAe5G,OAAO/J,EAAKD,MAAMoQ,eAAehP,MAAQ,MAOrEnB,EAAKuB,SAAS,CAAC+O,UAAU,EAAO5T,OAAO,EAAM6T,YAAY,IACzDnS,QAAQC,IAAI,gCA7GhB2B,EAAKM,MAAQ,CACTsQ,MAAO7Q,EAAM6Q,MACbJ,WAAYzQ,EAAM8Q,KAClBP,UAAU,EACVQ,YAAY,EACZpU,OAAO,EACPqU,SAAU,EACVC,MAAO,0BAEXhR,EAAKiR,YAAcjR,EAAKiR,YAAYnQ,KAAIC,wBAAAf,KACxCA,EAAKkR,aAAelR,EAAKkR,aAAapQ,KAAIC,wBAAAf,KAC1CA,EAAKiQ,WAAajQ,EAAKiQ,WAAWnP,KAAIC,wBAAAf,KACtCA,EAAKmR,UAAYnR,EAAKmR,UAAUrQ,KAAIC,wBAAAf,KAAOA,EAyJ5C,OAxKaiB,YAAA6R,EAAAhT,GAiBfoB,YAAA4R,EAAA,EAAAzV,IAAA,aAAA8D,MAAA,SAEUA,EAAOiQ,GACd,IAAIC,EAAaC,KAAKC,IAAI,GAAIH,GAAa,GAC3C,OAAOE,KAAKE,MAAMrQ,EAAQkQ,GAAcA,IAC3C,CAAAhU,IAAA,cAAA8D,MAAA,SAEWO,GAIR,GAHAtD,QAAQC,IAAIqD,EAAErE,KAGA,UAAVqE,EAAErE,IAAgB,CAMnB,IAAIqU,EAAUhQ,EAAEE,OAAOT,MAEvB,GAAgB,MAAZuQ,GAA+B,MAAZA,GAA+B,MAAZA,EAGvC,OAFAxR,KAAKH,MAAM6R,wBACX1R,KAAKqB,SAAS,CAAC7E,OAAO,IAIxBwD,KAAKqB,SAAS,CAAC4O,aAAczO,EAAEE,OAAOyB,KAGtCnD,KAAKgR,aAAaQ,QAGjBxR,KAAKqB,SAAS,CAAC+O,UAAU,MAEjC,CAAAjT,IAAA,eAAA8D,MAAA,SAEYuQ,GAAQ,IAAArQ,EAAAnB,KACbgQ,EAAa,CACbC,aAAejQ,KAAKH,MAAMoQ,aAC1B3F,aAAetK,KAAKH,MAAMyK,aAC1BpN,cAAe8C,KAAKH,MAAM3C,cAC1BG,SAAW2C,KAAKH,MAAMxC,SACtB3C,SAAWsF,KAAKH,MAAMnF,SACtBqN,WAAY/H,KAAKH,MAAMkI,WACvB4J,YAAaH,GAGZA,GAKLxR,KAAKqB,SAAS,CAACuP,YAAY,IAE3BpS,YAAS,6BAA8BwR,GAAY3T,KAAM,SAACC,IAE7B,IADRA,EACFE,OACb2E,EAAKtB,MAAM+R,YAAYzQ,EAAKtB,MAAMoQ,cAClC9O,EAAKE,SAAS,CAAC+O,UAAU,EAAM5T,OAAO,EAAOoU,YAAY,KAKzDzP,EAAKE,SAAS,CAAC+O,UAAU,EAAO5T,OAAO,EAAMoU,YAAY,OAf3D5Q,KAAKqB,SAAS,CAAC7E,OAAO,MAoB/B,CAAAW,IAAA,YAAA8D,MAAA,SAkCSO,GAGRxB,KAAKqB,SAAS,CAAC+O,UAAU,MAE1B,CAAAjT,IAAA,SAAA8D,MAAA,WAGU,IAAAgM,EAAAjN,KAEL,OACInD,IAAAC,cAAAD,IAAAgB,SAAA,KACChB,IAAAC,cAAA,OAAKiB,UAAU,kBACZlB,IAAAC,cAAA,WACID,IAAAC,cAACmG,IAAS,CAACzG,MAAOwD,KAAKI,MAAM5D,MAAOuV,SAAU,SAACC,GAAS/E,EAAI,MAAAhQ,OAAOgQ,EAAKpN,MAAM6Q,QAAWsB,GACrFC,WAAY,CACRC,UAAW,EACX5U,MAAO,CAAE6U,UAAW,WAExBxQ,KAAM3B,KAAKH,MAAMoQ,aACjB9M,GAAInD,KAAKH,MAAMoQ,aACf5M,WAAW,EACXG,SAAUxD,KAAKI,MAAMwQ,WACrB7S,UAAU,qCACVqU,aAAcpS,KAAKI,MAAMkQ,WACzBgC,OAAQtS,KAAKiR,UAEbsB,QAASvS,KAAK+Q,YACNjQ,SAAUd,KAAKH,MAAM2S,aACrBC,QAASzS,KAAKH,MAAM6S,YACpBtP,aAAa,QAErBvG,IAAAC,cAAA,OAAKyF,IAAKvC,KAAKI,MAAM0Q,MAAQxT,MAAO,CAACqV,WAAY3S,KAAKI,MAAMgQ,SAAW,UAAY,UAAY5N,IAAI,QACnG3F,IAAAC,cAACsB,IAAc,CAAEuD,KAAI,QAAA1E,OAAU+C,KAAKH,MAAM6Q,OAASpT,MAAO,CAACqV,WAAY3S,KAAKI,MAAMwQ,WAAa,UAAY,aAE/G/T,IAAAC,cAAA,WACID,IAAAC,cAACiM,KAAO,CAAER,MAAM,cAAc/B,aAAW,OACzC3J,IAAAC,cAAA,KAAGiB,UAAU,2BAA2B0H,QAAS,kBAAKwH,EAAK8C,cAC/DzS,MAAO,CAACqV,WAAqC,IAAzB3S,KAAKI,MAAMkQ,YAAoBtQ,KAAKI,MAAMgQ,SAAW,UAAY,WAAY,wBAQhH,CAAAjT,IAAA,oBAAA8D,MAAA,gBAIE2R,EAxKa,CAASnP,aCPtB,SAASoP,KACR,IAAI1X,EAAW,KAGf,OAFIU,eAAeC,QAAQ,aACnBX,EAAWQ,KAAKC,MAAMC,eAAeC,QAAQ,aAC9CX,ECUwC,IA4cxC2X,GAzcK,SAAAlT,GAIlB,SAAAkT,EAAYjT,GAAM,IAAAC,EA0CqD,OA1CrDC,YAAAC,KAAA8S,IAChBhT,EAAAG,YAAAD,KAAAE,YAAA4S,GAAA3S,KAAAH,KAAMH,KAqPRwJ,YAAc,SAACnI,EAAO6R,GAChBjT,EAAKuB,SAAS,CAAC2R,gBAAgB,KACpClT,EAEDmT,WAAa,SAAC9P,GAAE,OAAKrD,EAAA,MAAA7C,OAAWkG,IAAM+P,QAAQC,SAxP5CrT,EAAKM,MAAQ,CACTyH,gBAAiBpI,cACjB2T,gBAAiBP,KACjBxV,SAAUwC,EAAMoM,MAAM7O,OAAO6M,QAC7BvP,SAAUmF,EAAMoM,MAAM7O,OAAO8M,QAC7BhN,cAAe2C,EAAMoM,MAAM7O,OAAO8O,aAElC5B,aAAczK,EAAMoM,MAAM7O,OAAOiW,YACjCC,cAAezW,IAAAC,cAAA,UAAID,IAAAC,cAAA,YACnBuP,YAAa,EACbsF,YAAa,EACb1B,aAAc,EACdsD,WAAY,GACZnD,SAAU,GACVoD,WAAa,GACbC,WAAY,EACZ5C,SAAU,EACV6C,UAAW,GACXC,aAAc,GACdC,UAAW,IACXC,iBAAiB,EACjBtY,SAAS,EACTyX,gBAAgB,GAEpBlT,EAAKgU,eAAiBhU,EAAKgU,eAAelT,KAAIC,wBAAAf,KAC9CA,EAAKwM,eAAiBxM,EAAKwM,eAAe1L,KAAIC,wBAAAf,KAC9CA,EAAKiU,kBAAoBjU,EAAKiU,kBAAkBnT,KAAIC,wBAAAf,KACpDA,EAAK0S,aAAe1S,EAAK0S,aAAa5R,KAAIC,wBAAAf,KAC1CA,EAAKyQ,mBAAqBzQ,EAAKyQ,mBAAmB3P,KAAIC,wBAAAf,KACtDA,EAAKuJ,YAAcvJ,EAAKuJ,YAAYzI,KAAIC,wBAAAf,KACxCA,EAAKkR,aAAelR,EAAKkR,aAAapQ,KAAIC,wBAAAf,KAC1CA,EAAKiR,YAAcjR,EAAKiR,YAAYnQ,KAAIC,wBAAAf,KACxCA,EAAKkU,kBAAoBlU,EAAKkU,kBAAkBpT,KAAIC,wBAAAf,KACpDA,EAAKmU,YAAcnU,EAAKmU,YAAYrT,KAAIC,wBAAAf,KACxCA,EAAK8R,YAAc9R,EAAK8R,YAAYhR,KAAIC,wBAAAf,KACxCA,EAAK4S,YAAc5S,EAAK4S,YAAY9R,KAAIC,wBAAAf,KACxCA,EAAKoU,WAAapU,EAAKoU,WAAWtT,KAAIC,wBAAAf,KACtCA,EAAKqU,gBAAkBrU,EAAKqU,gBAAgBvT,KAAIC,wBAAAf,KAChDA,EAAK4R,iBAAmB5R,EAAK4R,iBAAiB9Q,KAAIC,wBAAAf,KAClDA,EAAK6M,iBAAmB7M,EAAK6M,iBAAiB/L,KAAIC,wBAAAf,KAClDA,EAAKsU,uBAAyBtU,EAAKsU,uBAAuBxT,KAAIC,wBAAAf,KAAOA,EAwZtE,OAtciBiB,YAAA+R,EAAAlT,GA+CjBoB,YAAA8R,EAAA,EAAA3V,IAAA,WAAA8D,MAAA,SAGQO,GACPxB,KAAKqB,SAAQI,YAAA,GAAGD,EAAEE,OAAOC,KAAOH,EAAEE,OAAOT,UAC1C,CAAA9D,IAAA,eAAA8D,MAAA,SAEYO,GACT,IAAM+R,EAAavT,KAAKI,MAAMmT,WAC9BA,EAAW/R,EAAEE,OAAOC,MAAQH,EAAEE,OAAOT,MACrCjB,KAAKqB,SAAS,CAAEkS,iBACnB,CAAApW,IAAA,qBAAA8D,MAAA,SAEkBU,GACfzD,QAAQC,IAAI,qBAAsBwD,GAClC,IAAM4R,EAAavT,KAAKI,MAAMmT,WAC9BA,EAAW5R,GAAQ,GACnB3B,KAAKqB,SAAS,CAAEkS,iBACnB,CAAApW,IAAA,oBAAA8D,MAAA,SAEiBgP,EAAcU,GAC5B,IAAM4C,EAAavT,KAAKI,MAAMmT,WAG9B,OAFAA,EAAWtD,GAAgBU,EAC3B3Q,KAAKqB,SAAS,CAAEkS,gBACT,IACV,CAAApW,IAAA,mBAAA8D,MAAA,WAIEjB,KAAKqB,SAAS,CAAC2R,gBAAgB,IAC/BqB,KAAM7X,MAAM,gDACd,CAAAW,IAAA,yBAAA8D,MAAA,WAIEjB,KAAKqB,SAAS,CAAC2R,gBAAgB,IAC/BqB,KAAM7X,MAAM,6BAA+BwD,KAAKI,MAAMyQ,YACxD,CAAA1T,IAAA,cAAA8D,MAAA,SAEWC,GACVA,EAAMQ,OAAO4S,WACd,CAAAnX,IAAA,cAAA8D,MAAA,SAEWO,GAIR,GAHAtD,QAAQC,IAAIqD,EAAErE,KAGA,UAAVqE,EAAErE,IAAgB,CAGpB,GAAGoU,MAAM/P,EAAEE,OAAOT,OAEf,YADA/C,QAAQC,IAAI,mBAMd,GAFcsT,WAAWjQ,EAAEE,OAAOT,OAEpBjB,KAAKI,MAAMyQ,SAGtB,OAGF7Q,KAAKqB,SAAS,CAAC4O,aAAczO,EAAEE,OAAOyB,KAGtCnD,KAAKgR,aAAaxP,EAAEE,OAAOyB,OAElC,CAAAhG,IAAA,cAAA8D,MAAA,SAEWO,GACR,IAAM+R,EAAavT,KAAKI,MAAMmT,WAC9BA,EAAW/R,EAAEE,OAAOC,MAAQH,EAAEE,OAAOT,MAErCjB,KAAKqB,SAAS,CAAEkS,iBACnB,CAAApW,IAAA,oBAAA8D,MAAA,SAEiBgP,EAAcsE,GACtB,IAAMnE,EAAWpQ,KAAKI,MAAMgQ,SAC5BA,EAAQ,QAAAnT,OAASgT,IAAkBsE,EACnCvU,KAAKqB,SAAS,CAAE+O,eACzB,CAAAjT,IAAA,cAAA8D,MAAA,SAEWgP,GACR,IAAIuD,EAAaxT,KAAKI,MAAMoT,WACxBgB,EAAUpF,OAAOC,KAAKmE,GAAY1J,OAEtCsF,OAAOC,KAAKmE,GAAYiB,QAAQ,SAAStX,GACnC,IAAIuX,EAAOxE,SAAS/S,GAAO,EAEzB,GAAI8S,IAAiBuD,EAAWrW,QAAhC,CAEE,IAAIwX,EAASnB,EAAWkB,GAEpBA,EAAOF,GACPhE,SAASC,eAAe5G,OAAO8K,IAASxB,aAUzD,CAAAhW,IAAA,eAAA8D,MAAA,SAEYgP,GAAa,IAAA9O,EAAAnB,KAEhB4U,EAAQ5U,KAAKI,MAAMmT,WAAWtD,GAC9BD,EAAa,CACbC,aAAeA,EACf3F,aAAetK,KAAKI,MAAMkK,aAC1BpN,cAAe8C,KAAKI,MAAMlD,cAC1BG,SAAW2C,KAAKI,MAAM/C,SACtB3C,SAAWsF,KAAKI,MAAM1F,SACtBiX,YAAaiD,GAGjBpW,YAAS,6BAA8BwR,GAAY3T,KAAM,SAACC,GAExD,OAA2B,IADRA,EACFE,OACb2E,EAAKyQ,YAAY3B,GAEjB9O,EAAK6S,kBAAkB/D,GAAc,IAC9B,IAEP/R,QAAQC,IAAI,6BACL,OAGlB,CAAAhB,IAAA,iBAAA8D,MAAA,WAEe,IAAAgM,EAAAjN,KACZ5D,YAAQ,mBAAoB4D,KAAKI,OAAO/D,KAAM,SAACC,GAC7C,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC/B,IAAIrB,EAAUoB,EAAapB,QAC3B8R,EAAK5L,SAAS,CAACgL,YAAalR,SAInC,CAAAgC,IAAA,aAAA8D,MAAA,WAEW,IAAAoM,EAAArN,KAEV5D,YAAQ,oBAAsB4D,KAAKI,MAAM/C,SAAU2C,KAAKI,OAAO/D,KAAM,SAACC,GACpE,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAIiX,EAAalX,EAAakX,WAC1B5C,EAAWtU,EAAasU,SACxB6C,EAAYnX,EAAamX,UAC7BrG,EAAKhM,SAAS,CACRoS,WAAYA,EACZ5C,SAAUA,EACV6C,UAAWA,SAItB,CAAAvW,IAAA,mBAAA8D,MAAA,WAEiB,IAAAwM,EAAAzN,KAChB5D,YAAQ,wBAAwB4D,KAAKI,MAAMkK,aAActK,KAAKI,OAAO/D,KAAM,SAACC,GAC1E,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC/B,IAAIoQ,EAAYrQ,EAAaqQ,UAC7Ba,EAAKpM,SAAS,CACVnE,cAAgB0P,EAAUC,cAC1BxP,SAAWuP,EAAUE,WACrBvC,cAAeqC,EAAUG,aACzBC,eAAgBJ,EAAUR,kBAC1ByI,UAAWjI,EAAUkI,iBACrBC,YAAanI,EAAUoI,0BAIhC,CAAA7X,IAAA,kBAAA8D,MAAA,WAEgB,IAAA4M,EAAA7N,KACXxF,EAAawF,KAAKI,MAAMyH,gBAAgBrN,WAC5C4B,YAAQ,8BAAgC4D,KAAKI,MAAMlD,cAAgB,IAAM1C,EAAYwF,KAAKI,OAAO/D,KAAM,SAACC,GACtG,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAImX,EAAepX,EAAa0Y,WAC5BrB,EAAYrX,EAAaqX,UAC7B/F,EAAKxM,SAAS,CACRuS,UAAWA,EACXD,aAAcA,GACf,WAEG9F,EAAKiG,wBAGXjG,EAAKxM,SAAS,CAACwS,iBAAiB,QAMvC,CAAA1W,IAAA,iBAAA8D,MAAA,WAQe,IAAAiU,EAAAlV,KAEdxB,YAAS,0BAA2BwB,KAAKI,OAAO/D,KAAM,SAACC,GACjD,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE1B,IAuBKsS,EAvBDsB,EAAW8E,EAAK9U,MAAMgQ,SACtB+E,EAAcD,EAAK9U,MAAMmT,WACzBC,EAAa0B,EAAK9U,MAAMoT,WAC7BpE,OAAOC,KAAK9S,EAAa6Y,SAASX,QAAQ,SAAStX,GAE/C,IAAI8S,EAAe1T,EAAa6Y,QAAQjY,GAAK8S,aACzC2E,EAAQrY,EAAa6Y,QAAQjY,GAAKyX,MAEtCpB,EAAWrW,GAAO8S,EAEb2E,IACDA,EAAQ,IAERO,EAAYlF,GAAgB2E,EAO7BxE,EAAQ,QAAAnT,OAASgT,KAAkB,IAMjCnB,EADsB,MAAzBoG,EAAK9U,MAAMwT,WAAqB1D,SAASgF,EAAK9U,MAAM/C,WAAa,EAClDd,EAAa6Y,QAAQzY,IAChC,SAACC,EAAM8T,GAAK,OAAI7T,IAAAC,cAAA,MAAIK,IAAKP,EAAKyY,YACtBxY,IAAAC,cAAA,MAAImS,MAAM,UAAUyB,EAAM,GAC1B7T,IAAAC,cAAA,UAAKF,EAAK0Y,sBACVzY,IAAAC,cAAA,MAAIyY,OAAO,UACP1Y,IAAAC,cAAA,OAAKiB,UAAU,kBACflB,IAAAC,cAACgT,GAAkB,CACfnO,KAAM/E,EAAKqT,aACXA,aAAgBrT,EAAKqT,aACrB3F,aAAgB4K,EAAK9U,MAAMkK,aAC3BpN,cAAiBgY,EAAK9U,MAAMlD,cAC5BG,SAAY6X,EAAK9U,MAAM/C,SACvB3C,SAAYwa,EAAK9U,MAAM1F,SACvBqN,WAAcmN,EAAK9U,MAAMgT,gBAAgBrL,WACzC5E,GAAIvG,EAAKqT,aACTU,KAAMuE,EAAK9U,MAAMmT,WAAW3W,EAAKqT,cACjCuC,aAAc0C,EAAK1C,aACnBjC,mBAAoB2E,EAAK3E,mBACzBmC,YAAawC,EAAKxC,YAClBd,YAAasD,EAAKtD,YAClBF,iBAAkBwD,EAAKd,yBAGzBvX,IAAAC,cAACsB,IAAc,CAACsS,MAAOA,EAAO/O,KAAI,QAAA1E,OAAUL,EAAKqT,cAAgB3S,MAAO,CAACqV,WAAYuC,EAAK9U,MAAMgQ,SAASxT,EAAKqT,cAAgB,UAAY,iBAMjJ1T,EAAa6Y,QAAQzY,IAChC,SAACC,EAAM8T,GAAK,OAAI7T,IAAAC,cAAA,MAAIK,IAAKP,EAAKyY,YACtBxY,IAAAC,cAAA,MAAKmS,MAAM,UAAUrS,EAAKqT,cAC1BpT,IAAAC,cAAA,UAAKF,EAAK0Y,sBACVzY,IAAAC,cAAA,MAAIyY,OAAO,UAEP1Y,IAAAC,cAAC8V,GAAc,CACXjR,KAAM/E,EAAKqT,aACXA,aAAgBrT,EAAKqT,aACrB3F,aAAgB4K,EAAK9U,MAAMkK,aAC3BpN,cAAiBgY,EAAK9U,MAAMlD,cAC5BG,SAAY6X,EAAK9U,MAAM/C,SACvB3C,SAAYwa,EAAK9U,MAAM1F,SACvBqN,WAAcmN,EAAK9U,MAAMgT,gBAAgBrL,WACzC5E,GAAIvG,EAAKqT,aACTU,KAAMuE,EAAK9U,MAAMmT,WAAW3W,EAAKqT,cACjCuC,aAAc0C,EAAK1C,aACnBjC,mBAAoB2E,EAAK3E,mBACzBmC,YAAawC,EAAKxC,YAClBd,YAAasD,EAAKtD,YAClBF,iBAAkBwD,EAAKxD,mBAEzB7U,IAAAC,cAACsB,IAAc,CAACsS,MAAOA,EAAO/O,KAAI,QAAA1E,OAAUL,EAAKqT,cAAgB3S,MAAO,CAACqV,WAAYuC,EAAK9U,MAAMgQ,SAASxT,EAAKqT,cAAgB,UAAY,gBAQ1JiF,EAAK7T,SAAS,CAAEiS,cAAgBxE,GAAa,WACvCoG,EAAK7T,SAAS,CAAC9F,SAAS,WAItC2C,QAAQC,IAAI,uCAGnB,CAAAhB,IAAA,SAAA8D,MAAA,WAID,IAAIuU,EAAsB,IAIS,IAA/BxV,KAAKI,MAAMyT,kBACX2B,EAAsB3Y,IAAAC,cAAC2Y,KAAK,CAACtY,IAAK,EAAGwF,QAAQ,UACzC9F,IAAAC,cAAC2Y,KAAMC,QAAO,KAAC,oCAA6C,qHAKpE,IAAIC,EAAY,oIAIhB,OAH6B,MAAzB3V,KAAKI,MAAMwT,WAAqB1D,SAASlQ,KAAKI,MAAM/C,UAAY,KAChEsY,EAAY,uHAIhB9Y,IAAAC,cAAA,OAAKiB,UAAU,aACXlB,IAAAC,cAAA,WAEAD,IAAAC,cAACkF,IAAa,CACZzG,QAASyE,KAAKI,MAAM7E,QACpB0G,QAAQ,UACRC,aAAa,UACbC,UAAU,UACVC,QAAQ,2BACRC,KAAK,OAGPxF,IAAAC,cAAA,OAAKiB,UAAU,QACblB,IAAAC,cAAA,OAAKiB,UAAU,eACTlB,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,WAAWD,UAAW3F,IAAMC,GAAE,qBAAAC,OAAuB+C,KAAKI,MAAM/C,SAAQ,KAAAJ,OAAI+C,KAAKI,MAAM1F,SAAQ,KAAAuC,OAAI+C,KAAKI,MAAMlD,eAAiBqG,MAAM,WAAU,cAC7K1G,IAAAC,cAAA,QAAMiB,UAAU,2CAA0ClB,IAAAC,cAAA,cAAQ,6BAAkC,KAAGkD,KAAKI,MAAMuT,aAAa,MAAG9W,IAAAC,cAAA,cAAQ,UAAe,IAAEkD,KAAKI,MAAMsT,UAAU,OAAK1T,KAAKI,MAAM1F,SAAS,KAAEmC,IAAAC,cAAA,cAAQ,eAAiB,KAAGkD,KAAKI,MAAMiM,YAAY,MAEpQxP,IAAAC,cAAA,OAAKiB,UAAU,aACflB,IAAAC,cAAA,OAAKiB,UAAU,uBACViC,KAAKI,MAAM/C,UAAY,EACtBR,IAAAC,cAAAD,IAAAgB,SAAA,KACEhB,IAAAC,cAAA,cAAQ,cAAmB,IAAEkD,KAAKI,MAAMmK,cAAc,MAAIvK,KAAKI,MAAM4M,gBAGvEnQ,IAAAC,cAAAD,IAAAgB,SAAA,KACEhB,IAAAC,cAAA,cAAQ,cAAmB,IAAEkD,KAAKI,MAAMmK,cAAc,IAAC1N,IAAAC,cAAA,WACvDD,IAAAC,cAAA,cAAQ,MAAW,IAAEkD,KAAKI,MAAM4M,eAAe,IAACnQ,IAAAC,cAAA,WAChDD,IAAAC,cAAA,cAAQ,MAAW,IAAEkD,KAAKI,MAAMyU,UAAU,IAAChY,IAAAC,cAAA,WAC3CD,IAAAC,cAAA,cAAQ,MAAW,IAAEkD,KAAKI,MAAM2U,cAKtClY,IAAAC,cAAA,OAAKiB,UAAU,gCACR4X,GAEP9Y,IAAAC,cAAA,MAAIiB,UAAU,cAAa,6BAE1ByX,EAGD3Y,IAAAC,cAAA,SAAOiB,UAAU,iBACflB,IAAAC,cAAA,aACED,IAAAC,cAAA,UACED,IAAAC,cAAA,MAAI8I,MAAM,KAAKqJ,MAAM,UAAS,SAC9BpS,IAAAC,cAAA,MAAI8I,MAAM,OAAM,UAChB/I,IAAAC,cAAA,MAAI8I,MAAM,MAAOqJ,MAAM,UAAS,UAGpCpS,IAAAC,cAAA,aACGkD,KAAKI,MAAMkT,gBAIhBzW,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YAAYD,UAAW3F,IAAMC,GAAE,qBAAAC,OAAuB+C,KAAKI,MAAM/C,SAAQ,KAAAJ,OAAI+C,KAAKI,MAAM1F,SAAQ,KAAAuC,OAAI+C,KAAKI,MAAMlD,eAAiBqG,MAAM,WAAU,cAC9K1G,IAAAC,cAAC8Y,WAAO,CAACvP,SAAS,oBAY3B,CAAAlJ,IAAA,qBAAA8D,MAAA,SAEkB4U,EAAWC,MAE7B,CAAA3Y,IAAA,oBAAA8D,MAAA,WAECjB,KAAKsM,iBACLtM,KAAKkU,aACLlU,KAAKmU,kBACLnU,KAAK2M,uBAENmG,EAtciB,CAASrP,aCwVdsS,WA9Vc,SAAAnW,GAK3B,SAAAmW,EAAYlW,GAAM,IAAAC,EAiCuC,OAjCvCC,YAAAC,KAAA+V,IAChBjW,EAAAG,YAAAD,KAAAE,YAAA6V,GAAA5V,KAAAH,KAAMH,KAuLRoT,WAAa,SAAC9P,GAAE,OAAKrD,EAAA,MAAA7C,OAAWkG,IAAM+P,QAAQC,SAtL5CrT,EAAKM,MAAQ,CACTyH,gBAAiBpI,cACjBpC,SAAUwC,EAAMoM,MAAM7O,OAAO6M,QAC7BvP,SAAUmF,EAAMoM,MAAM7O,OAAO8M,QAC7BhN,cAAe2C,EAAMoM,MAAM7O,OAAO8O,aAClC/B,eAAgBtK,EAAMoM,MAAM7O,OAAO4Y,YACnC1L,aAAczK,EAAMoM,MAAM7O,OAAOiW,YACjCM,aAAc,KACdD,UAAW,KACXJ,cAAezW,IAAAC,cAAA,UAAID,IAAAC,cAAA,YACnBmZ,cAAepZ,IAAAC,cAAA,UAAID,IAAAC,cAAA,YACnBuP,YAAa,EACbsF,YAAa,EACb1B,aAAc,EACdsD,WAAY,GACZnD,SAAU,GACVoD,WAAa,IAGjB1T,EAAKgU,eAAiBhU,EAAKgU,eAAelT,KAAIC,wBAAAf,KAC9CA,EAAKwM,eAAiBxM,EAAKwM,eAAe1L,KAAIC,wBAAAf,KAC9CA,EAAKiU,kBAAoBjU,EAAKiU,kBAAkBnT,KAAIC,wBAAAf,KACpDA,EAAK0S,aAAe1S,EAAK0S,aAAa5R,KAAIC,wBAAAf,KAC1CA,EAAKkR,aAAelR,EAAKkR,aAAapQ,KAAIC,wBAAAf,KAC1CA,EAAKiR,YAAcjR,EAAKiR,YAAYnQ,KAAIC,wBAAAf,KACxCA,EAAKkU,kBAAoBlU,EAAKkU,kBAAkBpT,KAAIC,wBAAAf,KACpDA,EAAKmU,YAAcnU,EAAKmU,YAAYrT,KAAIC,wBAAAf,KACxCA,EAAK8R,YAAc9R,EAAK8R,YAAYhR,KAAIC,wBAAAf,KACxCA,EAAK4S,YAAc5S,EAAK4S,YAAY9R,KAAIC,wBAAAf,KACxCA,EAAKoW,SAAWpW,EAAKoW,SAAStV,KAAIC,wBAAAf,KAClCA,EAAKoU,WAAapU,EAAKoU,WAAWtT,KAAIC,wBAAAf,KACtCA,EAAKqU,gBAAkBrU,EAAKqU,gBAAgBvT,KAAIC,wBAAAf,KAAOA,EAqTxD,OA3V0BiB,YAAAgV,EAAAnW,GAuC1BoB,YAAA+U,EAAA,EAAA5Y,IAAA,WAAA8D,MAAA,SAGQO,GACPxB,KAAKqB,SAAQI,YAAA,GAAGD,EAAEE,OAAOC,KAAOH,EAAEE,OAAOT,UAC1C,CAAA9D,IAAA,eAAA8D,MAAA,SAEYO,GAAE,IAAAL,EAAAnB,KACX9B,QAAQC,IAAIqD,EAAEE,QACd,IAAM6R,EAAavT,KAAKI,MAAMmT,WAC9BA,EAAW/R,EAAEE,OAAOC,MAAQH,EAAEE,OAAOT,MACrCjB,KAAKqB,SAAS,CAAEkS,cAAc,WAAOrV,QAAQC,IAAIgD,EAAKf,MAAMmT,gBAC/D,CAAApW,IAAA,kBAAA8D,MAAA,WAEgB,IAAAgM,EAAAjN,KACXxF,EAAawF,KAAKI,MAAMyH,gBAAgBrN,WAC5C4B,YAAQ,8BAAgC4D,KAAKI,MAAMlD,cAAgB,IAAM1C,EAAYwF,KAAKI,OAAO/D,KAAM,SAACC,GACtG,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAImX,EAAepX,EAAa0Y,WAEhChI,EAAK5L,SAAS,CACRsS,aAAcA,SAGlB1G,EAAK5L,SAAS,CAACwS,iBAAiB,QAMvC,CAAA1W,IAAA,aAAA8D,MAAA,WAEW,IAAAoM,EAAArN,KAEV5D,YAAQ,oBAAsB4D,KAAKI,MAAM/C,SAAU2C,KAAKI,OAAO/D,KAAM,SAACC,GACpE,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAIkX,EAAYnX,EAAamX,UAC7BrG,EAAKhM,SAAS,CACRqS,UAAWA,SAItB,CAAAvW,IAAA,oBAAA8D,MAAA,SAEiBgP,EAAcU,GAC5B,IAAM4C,EAAavT,KAAKI,MAAMmT,WAG9B,OAFAA,EAAWtD,GAAgBU,EAC3B3Q,KAAKqB,SAAS,CAAEkS,gBACT,IACV,CAAApW,IAAA,cAAA8D,MAAA,SAEWC,GACVA,EAAMQ,OAAO4S,WACd,CAAAnX,IAAA,cAAA8D,MAAA,SAEWO,GAGM,UAAVA,EAAErE,MAIF6C,KAAKqB,SAAS,CAAC4O,aAAczO,EAAEE,OAAOyB,KACtCnD,KAAKgR,aAAaxP,EAAEE,OAAOyB,OAElC,CAAAhG,IAAA,cAAA8D,MAAA,SAEWO,GAER,IAAM+R,EAAavT,KAAKI,MAAMmT,WAC9BA,EAAW/R,EAAEE,OAAOC,MAAQH,EAAEE,OAAOT,MAErCjB,KAAKqB,SAAS,CAAEkS,iBACnB,CAAApW,IAAA,oBAAA8D,MAAA,SAEiBgP,EAAcsE,GACtB,IAAMnE,EAAWpQ,KAAKI,MAAMgQ,SAC5BA,EAAQ,QAAAnT,OAASgT,IAAkBsE,EACnCvU,KAAKqB,SAAS,CAAE+O,eACzB,CAAAjT,IAAA,cAAA8D,MAAA,SAEWgP,GACR/R,QAAQC,IAAI,yBACZ,IAAIqV,EAAaxT,KAAKI,MAAMoT,WAE5BpE,OAAOC,KAAKmE,GAAYiB,QAAQ,SAAStX,GACnC,IAAIuX,EAAOxE,SAAS/S,GAAO,EAGzB,GAFFe,QAAQC,IAAIqV,EAAW1J,OAAS,IAAM4K,GAEhCzE,IAAiBuD,EAAWrW,QAAhC,CAEE,IAAIwX,EAASnB,EAAWkB,GAExBlE,SAASC,eAAe5G,OAAO8K,IAASxB,aAQrD,CAAAhW,IAAA,eAAA8D,MAAA,SAEYgP,GAAa,IAAAxC,EAAAzN,KAChB4U,EAAQ5U,KAAKI,MAAMmT,WAAWtD,GAC9BD,EAAa,CACbC,aAAeA,EACf9F,eAAiBnK,KAAKI,MAAM+J,eAC5BwH,YAAaiD,GAajBpW,YAAS,6BAA8BwR,GAAY3T,KAAM,SAACC,GAExD,OAA2B,IADRA,EACFE,OACb0B,QAAQC,IAAI,kBAEZsP,EAAKmE,YAAY3B,IACV,IAET/R,QAAQC,IAAI,6BACH,OAGlB,CAAAhB,IAAA,iBAAA8D,MAAA,WAEe,IAAA4M,EAAA7N,KACZ5D,YAAQ,mBAAoB4D,KAAKI,OAAO/D,KAAM,SAACC,GAC7C,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC/B,IAAIrB,EAAUoB,EAAapB,QAC3B0S,EAAKxM,SAAS,CAACgL,YAAalR,SAInC,CAAAgC,IAAA,iBAAA8D,MAAA,SAIc4Q,EAAQsE,GACnB,MAAgB,yBAAZA,GAAkD,iBAAZA,EACvB,OAAXtE,EACKJ,WAAWI,GAAQC,QAAQ,GAE3BL,WAAW,GAAGK,QAAQ,GAExBD,IAEd,CAAA1U,IAAA,WAAA8D,MAAA,SAEQmV,EAAOC,GAEZ,IAAIC,EAAO,EACPC,EAAW,EACX5B,EAAS,EACbvF,OAAOC,KAAK+G,GAAO3B,QAAQ,SAAStX,GAE5BwX,EAAS,GAEQ,OAAfyB,EAAMjZ,KACNmZ,GAAQ7E,WAAW2E,EAAMjZ,IACzBoZ,KAIR5B,MAIF,IAAIuB,EAAW,EAMf,OAJIA,EADAI,EAAO,EACKA,EAAOC,EAER,EAER9E,WAAWyE,GAAUpE,QAAQ,KAEvC,CAAA3U,IAAA,iBAAA8D,MAAA,WAEc,IAAAiU,EAAAlV,KAEb5D,YAAQ,oCAAsC4D,KAAKI,MAAMkK,aAAe,IAAMtK,KAAKI,MAAM/C,SAAW,IAAM2C,KAAKI,MAAM1F,SAAUsF,KAAKI,OAAO/D,KAAM,SAACC,GAC5I,IAoCwBka,EAAMC,EApC1Bla,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAI7B,IAAIka,EAAUtH,OAAOC,KAAK9S,EAAa6Y,QAAQ,IAC3CiB,EAAU,GACVM,EAAY,EACZC,EAAgB,IAA6B,IAAtBF,EAAQ5M,OAAS,GAC5CsF,OAAOC,KAAKqH,GAASjC,QAAQ,SAAStX,GAClC,IAAI0Z,EAAc,GACdC,EAAW,GACf,OAAQ3Z,GACN,IAAK,IACD0Z,EAAc,YACdC,EAAW,KACX,MACJ,IAAK,IACDD,EAAc,oBACdC,EAAWF,EAAgB,IAC3B,MACJ,QACIC,EAAc,QAAUF,EACxBG,EAAW,KACXH,IAIJ,IAAII,EAAS,CAAEC,OAAQH,EAAalV,KAAM+U,EAAQvZ,GAAMuK,KAAMoP,GAC9DT,EAAQY,KAAKF,KAMnB,IAAIG,EAAaR,EAAQ5M,OAAQ,EAgB7BgF,GAfgB0H,EAeOja,EAAa6Y,QAfdqB,EAeuBJ,EAd7CG,EAAK7Z,IAAI,SAACwa,EAAKha,GAAS,MAAO,CACzBN,IAAAC,cAAA,MAAIK,IAAKga,EAAIlH,cACZwG,EAAK9Z,IAAI,SAAAya,GAAG,OACXva,IAAAC,cAAA,MAAIK,IAAKia,EAAIzV,MAAOuT,EAAKmC,eAAeF,EAAIC,EAAIzV,MAAOyV,EAAIzV,SAE7D9E,IAAAC,cAAA,MAAIK,IAAK+Z,EAAU,GAAIhC,EAAKgB,SAASM,EAAKrZ,GAAMkZ,SAY1DA,EAAQY,KADK,CAAED,OAAQ,OAAQrV,KAAM,WAAY+F,KAAM,OAGvD,IAAI4P,EAAejB,EAAQ1Z,IACzB,SAACC,EAAMO,GAAG,OAAIN,IAAAC,cAAA,MAAIK,IAAKA,EAAKyI,MAAOhJ,EAAK8K,MAAO9K,EAAKoa,UAEtD9B,EAAK7T,SAAS,CAAEiS,cAAgBxE,EAAWwI,aAAcA,SAG3DpZ,QAAQC,IAAI,uCAGnB,CAAAhB,IAAA,SAAA8D,MAAA,WAKD,OAEApE,IAAAC,cAAA,OAAKiB,UAAU,aACXlB,IAAAC,cAAA,WAEAD,IAAAC,cAAA,OAAKiB,UAAU,4BACblB,IAAAC,cAAA,OAAKiB,UAAU,eACTlB,IAAAC,cAAA,UAAI,8BAA4BkD,KAAKI,MAAMuT,aAAa,WAAS3T,KAAKI,MAAMsT,UAAU,MAAI1T,KAAKI,MAAM1F,SAAS,kBAAasF,KAAKI,MAAMiM,YAAY,MAExJxP,IAAAC,cAAA,OAAKiB,UAAU,aACblB,IAAAC,cAAA,MAAIiB,UAAU,cAAa,oBAG3BlB,IAAAC,cAAA,SAAOiB,UAAU,6CACflB,IAAAC,cAAA,aACED,IAAAC,cAAA,MAAIiB,UAAU,iBACXiC,KAAKI,MAAMkX,eAGhBza,IAAAC,cAAA,aACGkD,KAAKI,MAAMkT,gBAIhBzW,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YAAYD,UAAW3F,IAAMC,GAAE,qBAAAC,OAAuB+C,KAAKI,MAAMkK,aAAY,KAAArN,OAAI+C,KAAKI,MAAM/C,SAAQ,KAAAJ,OAAI+C,KAAKI,MAAM1F,SAAQ,KAAAuC,OAAI+C,KAAKI,MAAMlD,eAAiBqG,MAAM,WAAU,mBASlN,CAAApG,IAAA,qBAAA8D,MAAA,SAEkB4U,EAAWC,MAE7B,CAAA3Y,IAAA,oBAAA8D,MAAA,WAECjB,KAAKkU,aACLlU,KAAKmU,kBACLnU,KAAKsM,iBACLtM,KAAK8T,qBACNiC,EA3V0B,CAAStS,8FCiLvB8T,GA3KK,SAAA3X,GAElB,SAAA2X,EAAY1X,EAAOsJ,GAAS,IAAArJ,EAAAC,YAAAC,KAAAuX,IAC1BzX,EAAAG,YAAAD,KAAAE,YAAAqX,GAAApX,KAAAH,KAAMH,EAAOsJ,KAERrI,SAAWhB,EAAKgB,SAASF,KAAIC,wBAAAf,KAClCA,EAAKsJ,WAAatJ,EAAKsJ,WAAWxI,KAAIC,wBAAAf,KACtCA,EAAKuJ,YAAcvJ,EAAKuJ,YAAYzI,KAAIC,wBAAAf,KACxCA,EAAK0X,kBAAoB1X,EAAK0X,kBAAkB5W,KAAIC,wBAAAf,KACpD,IAAI2X,EAAiBhY,cAmBnB,OAjBFK,EAAKM,MAAQ,CACXsQ,MAAO7Q,EAAM6Q,MACb1G,OAAQnK,EAAMmK,OACd6C,cAAehN,EAAM3C,cACrBG,SAAUwC,EAAMxC,SAChBiN,aAAczK,EAAMyK,aACpByC,aAAclN,EAAMkN,aACpBX,kBAAmBvM,EAAMuM,kBACzBrE,WAAYlI,EAAMkI,WAClBsE,YAAaxM,EAAMwM,YACnB7R,WAAYid,EAAejd,WAC3BoK,WAAY6S,EAAe7S,WAC3B4I,MAAOiK,EAAejK,MACtB7I,MAAM,EACNmG,MAAM,EACNtH,UAAU,EACVjI,SAAS,GACTuE,EA4IH,OAxKiBiB,YAAAwW,EAAA3X,GA8BjBoB,YAAAuW,EAAA,EAAApa,IAAA,oBAAA8D,MAAA,WAEkB,IAAAE,EAAAnB,KACbA,KAAKI,MAAMkK,cAAgBtK,KAAKI,MAAMgM,oBACxCpM,KAAKqB,SAAS,CAACmC,UAAU,EAAMjI,SAAS,IAGxCiD,YAAS,sCAAuCwB,KAAKI,OAAO/D,KAAM,SAACC,IAEtC,IADRA,EACFE,OACb2E,EAAKE,SAAS,CAACmC,UAAU,EAAOjI,SAAS,IACzC4F,EAAKtB,MAAM6X,yBAEXvW,EAAKkI,gBAEPlI,EAAKE,SAAS,CAACmC,UAAU,IACzBtF,QAAQC,IAAI,kCAOnB,CAAAhB,IAAA,WAAA8D,MAAA,SAEQO,GACPxB,KAAKqB,SAAQI,YAAA,GACRD,EAAEE,OAAOC,KAAOH,EAAEE,OAAOT,UAE/B,CAAA9D,IAAA,cAAA8D,MAAA,WAGCjB,KAAKqB,SAAS,CAAEyJ,MAAM,EAAOnG,MAAM,MACpC,CAAAxH,IAAA,aAAA8D,MAAA,SAEU0W,GACTzZ,QAAQC,IAAI,cAAgB6B,KAAKI,MAAMkK,cACvCtK,KAAKqB,SAAS,CAAEyJ,MAAM,EAAMnG,MAAM,MACnC,CAAAxH,IAAA,SAAA8D,MAAA,WAGQ,IAAAgM,EAAAjN,KAEH4X,GAAe,EAQnB,OAHI5X,KAAKH,MAAMgY,WAAa,GAAK7X,KAAKH,MAAMkI,aAAe/H,KAAKH,MAAMwM,cAClEuL,GAAe,GAGjB/a,IAAAC,cAAAD,IAAAgB,SAAA,KAGEhB,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAAS+G,QAAS,kBAAMwH,EAAK7D,WAAW,IAAK9L,MAAO,CAACwE,QAAS8V,EAAe,GAAK,SAC/F/a,IAAAC,cAACiM,KAAO,CAACR,MAAM,mBAAmBqF,UAAU,cACxC/Q,IAAAC,cAAA,KAAGiB,UAAU,iCAAgC,UASjDlB,IAAAC,cAACgb,KAAM,CAAC9U,WAAW,EAAM+U,SAAU,KAAMC,kBAAgB,0BAA0BrT,KAAM3E,KAAKI,MAAMuE,MAEpG9H,IAAAC,cAACmb,KAAW,CAAC9U,GAAG,0BAA0BoC,QAASvF,KAAKqJ,aACrDxM,IAAAC,cAAC4J,IAAM,CAAC3I,UAAU,cAChBlB,IAAAC,cAAA,KAAGiB,UAAU,4BAA2B,aAGhC,yBAGblB,IAAAC,cAACob,KAAa,KAEVrb,IAAAC,cAACqb,KAAiB,KAAC,mJAEhBtb,IAAAC,cAAA,WAAM,IAACD,IAAAC,cAAA,YAGVD,IAAAC,cAACmG,IAAS,CACNtB,KAAK,eACLuB,MAAM,SACNkP,aAAcpS,KAAKI,MAAM2M,aACzBqL,WAAY,CACR5U,UAAU,KAIlB3G,IAAAC,cAACmG,IAAS,CACNtB,KAAK,oBACL0B,WAAS,EACTP,OAAO,QACPK,GAAG,oBACHD,MAAM,iBACNxE,KAAK,OACL2Z,WAAS,EACTC,QAAS,EACTlG,aAAcpS,KAAKI,MAAMgM,kBACzBtL,SAAUd,KAAKc,SACfkC,WAAS,IAEjBnG,IAAAC,cAACyb,KAAU,CAACxa,UAAU,QACdya,QAAQ,WAAU,aAC1B3b,IAAAC,cAAC2b,KAAM,CACL9W,KAAK,aACLV,MAAOjB,KAAKI,MAAM2H,WAClBjH,SAAUd,KAAKc,SACf/C,UAAU,cAEVlB,IAAAC,cAAC0I,IAAQ,CAACvE,MAAO,GAAG,KACpBpE,IAAAC,cAAC0I,IAAQ,CAACvE,MAAO,GAAG,aACpBpE,IAAAC,cAAC0I,IAAQ,CAACvE,MAAO,GAAG,aACpBpE,IAAAC,cAAC0I,IAAQ,CAACvE,MAAO,GAAG,aACpBpE,IAAAC,cAAC0I,IAAQ,CAACvE,MAAO,GAAG,eAItBpE,IAAAC,cAAC4b,KAAa,KACZ7b,IAAAC,cAACwG,IAAM,CAACX,QAAQ,YAAY8C,QAAS,kBAAMwH,EAAK5D,eAAe9F,MAAM,WAAU,UAG/E1G,IAAAC,cAACwG,IAAM,CAACD,WAAS,EAACV,QAAQ,YAAYa,SAAUxD,KAAKI,MAAM7E,QAASkK,QAAS,kBAAMwH,EAAKuK,qBAAqBjU,MAAM,aAC/G1G,IAAAC,cAAC6b,KAAgB,CAAErb,MAAO,CAACwE,QAAS9B,KAAKI,MAAM7E,QAAU,GAAK,UAAY,yBAOrF,CAAA4B,IAAA,oBAAA8D,MAAA,gBAKAsW,EAxKiB,CAAS9T,aC2SdmV,GAvSW,SAAAhZ,GAGtB,SAAAgZ,EAAY/Y,GAAM,IAAAC,EAAAC,YAAAC,KAAA4Y,GAChB9Y,EAAAG,YAAAD,KAAAE,YAAA0Y,GAAAzY,KAAAH,KAAMH,IAEN,IAAI4X,EAAiBhY,cACjBmF,EAAa,KACb4I,EAAQ,KACRhT,EAAa,KA0BkD,OAxB/Did,IACF7S,EAAc6S,EAAe7S,WAC7B4I,EAAQiK,EAAejK,MACvBhT,EAAaid,EAAejd,YAG9BsF,EAAKM,MAAQ,CACPwE,WAAYA,EACZpK,WAAYA,EACZgT,MAAOA,EACPtQ,cAAe2C,EAAMoM,MAAM7O,OAAO8O,aAClC7O,SAAUwC,EAAMoM,MAAM7O,OAAO6M,QAC7BvP,SAAUmF,EAAMoM,MAAM7O,OAAO8M,QAC7BmC,YAAa,EACbsH,aAAc,GACd/I,kBAAmB/N,IAAAC,cAAC+R,KAAQ,CAAC1R,IAAK,GAAGN,IAAAC,cAACyR,KAAS,CAACU,MAAM,UAAS,iBAC/D4J,cAAgB,KAChBC,aAAa,GAEnBhZ,EAAKoU,WAAapU,EAAKoU,WAAWtT,KAAIC,wBAAAf,KACtCA,EAAK4M,mBAAqB5M,EAAK4M,mBAAmB9L,KAAIC,wBAAAf,KACtDA,EAAKqU,gBAAkBrU,EAAKqU,gBAAgBvT,KAAIC,wBAAAf,KAChDA,EAAKiZ,WAAajZ,EAAKiZ,WAAWnY,KAAIC,wBAAAf,KACtCA,EAAKkZ,aAAelZ,EAAKkZ,aAAapY,KAAIC,wBAAAf,KAC1CA,EAAK4X,uBAAwB5X,EAAK4X,uBAAuB9W,KAAIC,wBAAAf,KAAMA,EA+PlE,OAlSmBiB,YAAA6X,EAAAhZ,GAoCrBoB,YAAA4X,EAAA,EAAAzb,IAAA,aAAA8D,MAAA,SAEUsT,GACPvU,KAAKqB,SAAS,CACVyX,YAAavE,MAEpB,CAAApX,IAAA,WAAA8D,MAAA,SAEQO,GACLxB,KAAKqB,SAAQI,YAAA,GAAGD,EAAEE,OAAOC,KAAOH,EAAEE,OAAOT,UAC5C,CAAA9D,IAAA,eAAA8D,MAAA,SAEYO,GACT,IAAMqX,EAAgB7Y,KAAKI,MAAMyY,cACjCA,EAAcrX,EAAEE,OAAOC,MAAQH,EAAEE,OAAOT,MACxCjB,KAAKqB,SAAS,CAAEwX,oBACnB,CAAA1b,IAAA,iBAAA8D,MAAA,WAEe,IAAAE,EAAAnB,KACd5D,YAAQ,mBAAoB4D,KAAKI,OAAO/D,KAAM,SAACC,GAC7C,IAAIC,EAAeD,EAEnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC/B,IAAIrB,EAAUoB,EAAapB,QAI3BgG,EAAKE,SAAS,CAACgL,YAAalR,SAGnC,CAAAgC,IAAA,aAAA8D,MAAA,WAEa,IAAAgM,EAAAjN,KAER5D,YAAQ,oBAAsB4D,KAAKI,MAAM/C,SAAU2C,KAAKI,OAAO/D,KAAM,SAACC,GACpE,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAIiX,EAAalX,EAAakX,WAC1B5C,EAAWtU,EAAasU,SACxB6C,EAAYnX,EAAamX,UACzBuF,EAAW1c,EAAa2c,MAC5BjM,EAAK5L,SAAS,CACRoS,WAAYA,EACZ5C,SAAUA,EACV6C,UAAWA,EACXuF,SAAUA,GACX,WACChM,EAAKP,4BAIhB,CAAAvP,IAAA,kBAAA8D,MAAA,WAEgB,IAAAoM,EAAArN,KACXxF,EAAawF,KAAKI,MAAM5F,WAiB5B,OAfA4B,YAAQ,8BAAgC4D,KAAKI,MAAMlD,cAAgB,IAAM1C,EAAYwF,KAAKI,OAAO/D,KAAM,SAACC,GACtG,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAImX,EAAepX,EAAa0Y,WAEhC5H,EAAKhM,SAAS,CACRsS,aAAcA,SAIlBtG,EAAKhM,SAAS,CAACwS,iBAAiB,OAI/B,IAER,CAAA1W,IAAA,yBAAA8D,MAAA,WAGGjB,KAAK0M,uBACR,CAAAvP,IAAA,qBAAA8D,MAAA,WAGmB,IAAAwM,EAAAzN,KAEZ8N,EAAkBC,aAAW,SAAAC,GAAK,MAAK,CAC3CC,KAAM,CACJC,gBAAiBF,EAAMG,QAAQC,OAAOC,MACtC9K,MAAOyK,EAAMG,QAAQC,OAAOE,OAE9BpP,KAAM,CACJlB,SAAU,MANU+P,CAQpBQ,MAEEC,EAAiBT,aAAW,SAAAC,GAAK,MAAK,CAC1CS,KAAM,CACJC,qBAAsB,CACpBR,gBAAiBF,EAAMG,QAAQQ,WAAWC,YAHzBb,CAMnBc,MAsEF,OApEFzS,YAAQ,oCAAsC4D,KAAKI,MAAM/C,SAAW,IAAM2C,KAAKI,MAAMlD,cAAgB,IAAM8C,KAAKI,MAAM5F,WAAYwF,KAAKI,OAAO/D,KAAM,SAACC,GAC/I,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC7B,IAAIsS,EAAY,KAEXrB,EAAKpM,SAAS,CACTwX,cAAetc,EAAa4c,aAC9B,WACArK,EAAYrB,EAAKrN,MAAMyY,cAAclc,IACnC,SAACC,EAAM8T,GAAK,OAAM7T,IAAAC,cAAC0R,EAAc,CAACQ,OAAK,EAAE7R,IAAKP,EAAK0N,aAAcvM,UAAU,cACzDlB,IAAAC,cAACgR,EAAe,CAAEmB,MAAM,QAAQrS,EAAKmQ,cACrClQ,IAAAC,cAACgR,EAAe,CAAEmB,MAAM,QACnBxB,EAAKrN,MAAM/C,SAAW,EACvBR,IAAAC,cAAAD,IAAAgB,SAAA,KAECjB,EAAKwP,mBACFvP,IAAAC,cAAAD,IAAAgB,SAAA,KACIhB,IAAAC,cAAA,cAAQ,MAAW,IAACD,IAAAC,cAAA,QAAMiB,UAAU,gBAAgBnB,EAAKwP,mBAAyBvP,IAAAC,cAAA,YAIzFF,EAAKkY,kBACFjY,IAAAC,cAAAD,IAAAgB,SAAA,KACIhB,IAAAC,cAAA,cAAQ,MAAW,IAACD,IAAAC,cAAA,QAAMiB,UAAU,gBAAgBnB,EAAKkY,kBAAwBjY,IAAAC,cAAA,YAGxFF,EAAKoY,oBACFnY,IAAAC,cAAAD,IAAAgB,SAAA,KACIhB,IAAAC,cAAA,cAAQ,MAAW,IAACD,IAAAC,cAAA,QAAMiB,UAAU,eAAenB,EAAKoY,oBAA0BnY,IAAAC,cAAA,aAKtFD,IAAAC,cAAA,UAAKF,EAAKwP,oBAGlBvP,IAAAC,cAACgR,EAAe,CAAEmB,MAAM,UACnBrS,EAAKmL,YAEVlL,IAAAC,cAACgR,EAAe,CAAEmB,MAAM,UAClBpS,IAAAC,cAACya,GAAc,CAACpa,IAAKuT,EAAOpG,aAAc1N,EAAK0N,aAC/ByC,aAAcnQ,EAAKmQ,aACnBX,kBAAmBxP,EAAKwP,kBACxBrE,WAAYnL,EAAKmL,WACjB7K,cAAeuQ,EAAKrN,MAAMlD,cAC1BG,SAAUoQ,EAAKrN,MAAM/C,SACrBgP,YAAaoB,EAAKrN,MAAMiM,YACxBqL,uBAAwB,kBAAKjK,EAAKiK,0BAClCG,WAAcjb,EAAKwc,aAcrE3L,EAAKpM,SAAS,CAACuJ,kBAAmBkE,EAAWvT,SAAS,SAGxD2C,QAAQC,IAAI,sCAGX,IACR,CAAAhB,IAAA,SAAA8D,MAAA,WAID,IAAKjB,KAAKI,MAAMwE,WACZ,OAAQ/H,IAAAC,cAAC+E,IAAQ,CAAC7E,GAAI,WAGxB,IAAM8Q,EAAkBC,aAAW,SAAAC,GAAK,MAAK,CAC3CC,KAAM,CACJ1K,MAAOyK,EAAMG,QAAQC,OAAOE,OAE9BpP,KAAM,CACJlB,SAAU,MALU+P,CAOpBQ,MAEN,OACQ1R,IAAAC,cAAAD,IAAAgB,SAAA,KAGAhB,IAAAC,cAAA,OAAKiB,UAAU,aACPlB,IAAAC,cAAA,WAIAD,IAAAC,cAACyS,KAAI,CAACC,WAAS,EAACC,QAAS,GACrB5S,IAAAC,cAACyS,KAAI,CAAC3S,MAAI,EAAC8S,GAAI,IACf7S,IAAAC,cAACwF,IAAK,CAACvE,UAAU,gBAEblB,IAAAC,cAAC4J,IAAM,CAAC3I,UAAU,cACFlB,IAAAC,cAAA,KAAGiB,UAAU,4BAA2B,yBAKxDlB,IAAAC,cAAC2F,IAAU,CAACE,QAAQ,KAAKD,UAAU,KAAK3E,UAAU,UAAS,qBACpCiC,KAAKI,MAAMsT,UAAU,MAAI1T,KAAKI,MAAM1F,SAAS,SAAOsF,KAAKI,MAAMuT,aAAa,eAAU3T,KAAKI,MAAMiZ,aAGxHxc,IAAAC,cAAC2F,IAAU,CAACE,QAAQ,KAAKD,UAAU,KAAK3E,UAAU,WAAUlB,IAAAC,cAAA,KAAGiB,UAAU,4BAA2B,QACxF,sOAIJlB,IAAAC,cAAC6S,KAAK,CAAC5R,UAAU,+BACblB,IAAAC,cAAC8S,KAAS,CAAC7R,UAAU,YACjBlB,IAAAC,cAAC+R,KAAQ,CAAE9Q,UAAU,YACrBlB,IAAAC,cAACgR,EAAe,CAAC/P,UAAU,sBAAsB6H,MAAM,MAAM,aAC7D/I,IAAAC,cAACgR,EAAe,CAAC/P,UAAU,sBAAsB6H,MAAM,MAAMqJ,MAAM,QAAO,YAC1EpS,IAAAC,cAACgR,EAAe,CAAC/P,UAAU,sBAAsB6H,MAAM,KAAKqJ,MAAM,QAAO,WACzEpS,IAAAC,cAACgR,EAAe,CAAC/P,UAAU,sBAAsB6H,MAAM,KAAKqJ,MAAM,QAAO,eAI7EpS,IAAAC,cAAC+S,KAAS,KAED7P,KAAKI,MAAMwK,oBAMhC/N,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YAAY5E,UAAU,cAAc2E,UAAW3F,IAAMC,GAAI,qBAAuBgD,KAAKI,MAAM/C,SAAW,IAAK2C,KAAKI,MAAM1F,SAAW,IAAMsF,KAAKI,MAAMlD,cAAeqG,MAAM,WAAU,qBAa1O,CAAApG,IAAA,oBAAA8D,MAAA,WAGGjB,KAAKqB,SAAS,CAAC9F,SAAS,IACxByE,KAAKsM,iBACLtM,KAAKmU,kBACLnU,KAAKkU,iBAEN0E,EAlSmB,CAASnV,aCqqBpB6V,WA/qBY,SAAA1Z,GAKzB,SAAA0Z,EAAYzZ,GAAM,IAAAC,EAyC6B,OAzC7BC,YAAAC,KAAAsZ,IAChBxZ,EAAAG,YAAAD,KAAAE,YAAAoZ,GAAAnZ,KAAAH,KAAMH,KA8JRoT,WAAa,SAAC9P,GAAE,OAAKrD,EAAA,MAAA7C,OAAWkG,IAAM+P,QAAQC,SA7J5CrT,EAAKM,MAAQ,CACT/C,SAAUwC,EAAMoM,MAAM7O,OAAO6M,QAC7BvP,SAAUmF,EAAMoM,MAAM7O,OAAO8M,QAC7BhN,cAAe2C,EAAMoM,MAAM7O,OAAO8O,aAClC/B,eAAgBtK,EAAMoM,MAAM7O,OAAO4Y,YACnC1L,aAAczK,EAAMoM,MAAM7O,OAAOiW,YACjCK,UAAW,KACXJ,cAAe,KACf2C,cAAe,KACfsD,eAAgB,KAChBlN,YAAa,EACbsF,YAAa,EACb1B,aAAc,EACdsD,WAAY,GACZnD,SAAU,GACVoD,WAAa,GACbgG,gBAAiB,CAAC,GAAI,IACtBC,eAAgB,EAChBC,iBAAiB,EACjBC,iBAAiB,EACjBpe,SAAS,GAGbuE,EAAKgU,eAAiBhU,EAAKgU,eAAelT,KAAIC,wBAAAf,KAC9CA,EAAKwM,eAAiBxM,EAAKwM,eAAe1L,KAAIC,wBAAAf,KAC9CA,EAAKiU,kBAAoBjU,EAAKiU,kBAAkBnT,KAAIC,wBAAAf,KACpDA,EAAK0S,aAAe1S,EAAK0S,aAAa5R,KAAIC,wBAAAf,KAC1CA,EAAKkR,aAAelR,EAAKkR,aAAapQ,KAAIC,wBAAAf,KAC1CA,EAAKiR,YAAcjR,EAAKiR,YAAYnQ,KAAIC,wBAAAf,KACxCA,EAAKkU,kBAAoBlU,EAAKkU,kBAAkBpT,KAAIC,wBAAAf,KACpDA,EAAKmU,YAAcnU,EAAKmU,YAAYrT,KAAIC,wBAAAf,KACxCA,EAAK8R,YAAc9R,EAAK8R,YAAYhR,KAAIC,wBAAAf,KACxCA,EAAK4S,YAAc5S,EAAK4S,YAAY9R,KAAIC,wBAAAf,KACxCA,EAAKoW,SAAWpW,EAAKoW,SAAStV,KAAIC,wBAAAf,KAClCA,EAAK8Z,gBAAkB9Z,EAAK8Z,gBAAgBhZ,KAAIC,wBAAAf,KAChDA,EAAK+Z,cAAgB/Z,EAAK+Z,cAAcjZ,KAAIC,wBAAAf,KAC5CA,EAAKoU,WAAapU,EAAKoU,WAAWtT,KAAIC,wBAAAf,KACtCA,EAAKga,oBAAsBha,EAAKga,oBAAoBlZ,KAAIC,wBAAAf,KACxDA,EAAKia,uBAAyBja,EAAKia,uBAAuBnZ,KAAIC,wBAAAf,KAC9DA,EAAKka,WAAala,EAAKka,WAAWpZ,KAAIC,wBAAAf,KAAOA,EA8nB9C,OA5qBwBiB,YAAAuY,EAAA1Z,GA+CxBoB,YAAAsY,EAAA,EAAAnc,IAAA,WAAA8D,MAAA,SAGQO,GACPxB,KAAKqB,SAAQI,YAAA,GAAGD,EAAEE,OAAOC,KAAOH,EAAEE,OAAOT,UAC1C,CAAA9D,IAAA,eAAA8D,MAAA,SAEYO,GACT,IAAM+R,EAAavT,KAAKI,MAAMmT,WAC9BA,EAAW/R,EAAEE,OAAOC,MAAQH,EAAEE,OAAOT,MACrCjB,KAAKqB,SAAS,CAAEkS,iBACnB,CAAApW,IAAA,oBAAA8D,MAAA,SAEiBgP,EAAcU,GAC5B,IAAM4C,EAAavT,KAAKI,MAAMmT,WAG9B,OAFAA,EAAWtD,GAAgBU,EAC3B3Q,KAAKqB,SAAS,CAAEkS,gBACT,IACV,CAAApW,IAAA,cAAA8D,MAAA,SAEWC,GACVA,EAAMQ,OAAO4S,WACd,CAAAnX,IAAA,cAAA8D,MAAA,SAEWO,GAGM,UAAVA,EAAErE,MAEF6C,KAAKqB,SAAS,CAAC4O,aAAczO,EAAEE,OAAOyB,KACtCnD,KAAKgR,aAAaxP,EAAEE,OAAOyB,OAElC,CAAAhG,IAAA,cAAA8D,MAAA,SAEWO,GAER,IAAM+R,EAAavT,KAAKI,MAAMmT,WAC9BA,EAAW/R,EAAEE,OAAOC,MAAQH,EAAEE,OAAOT,MAErCjB,KAAKqB,SAAS,CAAEkS,iBACnB,CAAApW,IAAA,oBAAA8D,MAAA,SAEiBgP,EAAcsE,GACtB,IAAMnE,EAAWpQ,KAAKI,MAAMgQ,SAC5BA,EAAQ,QAAAnT,OAASgT,IAAkBsE,EACnCvU,KAAKqB,SAAS,CAAE+O,eACzB,CAAAjT,IAAA,cAAA8D,MAAA,SAEWgP,GAER,IAAIuD,EAAaxT,KAAKI,MAAMoT,WAE5BpE,OAAOC,KAAKmE,GAAYiB,QAAQ,SAAStX,GACnC,IAAIuX,EAAOxE,SAAS/S,GAAO,EAEzB,GAAI8S,IAAiBuD,EAAWrW,QAAhC,CAEE,IAAIwX,EAASnB,EAAWkB,GAExBlE,SAASC,eAAe5G,OAAO8K,IAASxB,aAQrD,CAAAhW,IAAA,eAAA8D,MAAA,SAEYgP,GAAa,IAAA9O,EAAAnB,KAChB4U,EAAQ5U,KAAKI,MAAMmT,WAAWtD,GAC9BD,EAAa,CACbC,aAAeA,EACf9F,eAAiBnK,KAAKI,MAAM+J,eAC5BwH,YAAaiD,GAIjBpW,YAAS,6BAA8BwR,GAAY3T,KAAM,SAACC,GAExD,OAA2B,IADRA,EACFE,OAGb2E,EAAKyQ,YAAY3B,IACV,IAEP/R,QAAQC,IAAI,6BACL,OAGlB,CAAAhB,IAAA,iBAAA8D,MAAA,WAEe,IAAAgM,EAAAjN,KACZ5D,YAAQ,mBAAoB4D,KAAKI,OAAO/D,KAAM,SAACC,GAC7C,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC/B,IAAIrB,EAAUoB,EAAapB,QAC3B8R,EAAK5L,SAAS,CAACgL,YAAalR,SAInC,CAAAgC,IAAA,aAAA8D,MAAA,WAEW,IAAAoM,EAAArN,KAEV5D,YAAQ,oBAAsB4D,KAAKI,MAAM/C,SAAU2C,KAAKI,OAAO/D,KAAM,SAACC,GACpE,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAIkX,EAAYnX,EAAamX,UAC7BrG,EAAKhM,SAAS,CACRqS,UAAWA,SAItB,CAAAvW,IAAA,WAAA8D,MAAA,SAIQmV,EAAOC,GAEd,IAAIC,EAAO,EACPC,EAAW,EACX5B,EAAS,EACTsF,EAAW,EACXC,EAAela,KAAKI,MAAMoZ,gBAM9BpK,OAAOC,KAAK+G,GAAO3B,QAAQ,SAAStX,GAGhC,GAAIwX,EAAS,GACQ,OAAfyB,EAAMjZ,IAAyB,QAARA,EAAe,CACtC,IAAIwT,EAAOc,WAAW2E,EAAMjZ,IAExBgd,EADO1I,WAAW2E,EAAW,MACb8D,EAAa,GAAK,KAClCE,EAASzJ,GAAQuJ,EAAa,GAAK,KAEvCD,EAAWxI,WAAW0I,GAAS1I,WAAW2I,GAC1C9D,GAAQ2D,EAER1D,IAIR5B,MAGF,IAAI0F,EAAY,EAOhB,OANI/D,EAAO,IACR+D,EAAa/D,EAAOC,GAGvB8D,EAAYra,KAAKga,WAAWK,EAAU,GAE/B5I,WAAW4I,GAAWvI,QAAQ,KAExC,CAAA3U,IAAA,eAAA8D,MAAA,SAEcmV,EAAOC,GAEhB,IAAIC,EAAO,EACPC,EAAW,EACX5B,EAAS,EACTsF,EAAW,EACXC,EAAela,KAAKI,MAAMoZ,gBAO9BpK,OAAOC,KAAK+G,GAAO3B,QAAQ,SAAStX,GAEhC,GAAIwX,EAAS,GACQ,OAAfyB,EAAMjZ,IAAyB,QAARA,GAAyB,QAARA,EAAe,CACvD,IAAIwT,EAAOc,WAAW2E,EAAMjZ,IACxBmd,EAAO7I,WAAW2E,EAAW,KAC7BmE,EAAO9I,WAAW2E,EAAW,KAC7B+D,EAASG,GAAOJ,EAAa,GAAK,KAClCE,EAASG,GAAOL,EAAa,GAAK,KAClCM,EAAS7J,GAAQuJ,EAAa,GAAK,KAMvCD,EAAWxI,WAAW0I,GAAS1I,WAAW2I,GAAS3I,WAAW+I,GAK9DlE,GAAQ2D,EAER1D,IAIR5B,MAIF,IAAI0F,EAAY,EAMhB,OALI/D,EAAO,IACR+D,EAAa/D,EAAOC,GAEvB8D,EAAYra,KAAKga,WAAWK,EAAU,GAE/B5I,WAAW4I,GAAWvI,QAAQ,KAExC,CAAA3U,IAAA,yBAAA8D,MAAA,WAEuB,IAAAwM,EAAAzN,KACtB5D,YAAQ,+CAAiD4D,KAAKI,MAAM/C,SAAW,IAAM2C,KAAKI,MAAMlD,cAAe8C,KAAKI,OAAO/D,KAAM,SAACC,GAChI,IAAIC,EAAeD,EAEnB,OAA2B,IAAvBC,EAAaC,QACTD,EAAake,YACbhN,EAAKpM,SAAS,CAACqY,iBAAiB,EAAMD,eAAgBld,EAAame,YAAa,WAC9EjN,EAAKqG,oBAEA,QAEPrG,EAAKqG,sBAMhB,CAAA3W,IAAA,kBAAA8D,MAAA,SAEe0Z,EAAOlE,GACrB,IAAImE,EAAU,GAoDd,OAlDAxL,OAAOC,KAAKoH,GAAMhC,QAAQ,SAAStX,GAC/B,IAAI0d,EAAUpE,EAAKtZ,GAAKwE,KAExB,OAAQxE,GACN,IAAK,IAGL,IAAK,IACDyd,EAAQ3D,KAAKpa,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQE,IAAQwd,EAAME,KAC1C,MACJ,QACY,OAAQA,GACJ,IAAK,MACH,IAAIC,EAAQ,EACW,OAAnBH,EAAME,KACVC,EAAQH,EAAME,IAEXD,EAAQ3D,KAAKpa,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQE,GAAOY,UAAU,eAAe0T,WAAWqJ,GAAOhJ,QAAQ,KACvF,MACJ,IAAK,MACD,IAAIiJ,EAAQ,EACW,OAAnBJ,EAAME,KACNE,EAAQJ,EAAME,IAEhBD,EAAQ3D,KAAKpa,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQE,GAAOY,UAAU,eAAe0T,WAAWsJ,GAAOjJ,QAAQ,KACtF,MACN,QAEE,IAAIkJ,EAAQ,EACRC,EAAQ,EAEW,OAAnBN,EAAME,KACNG,EAAQL,EAAME,IAEG,OAAjBF,EAAW,MACXM,EAAQN,EAAW,KAEnB,IAAIzE,EAAgC,GAApBzE,WAAWuJ,GAAqC,GAApBvJ,WAAWwJ,GAErD9J,EAAaC,KAAKC,IAAI,GAAI,GAC9B6E,EAAW9E,KAAKE,MAAM4E,EAAW/E,GAAcA,EAC/CyJ,EAAQ3D,KAAKpa,IAAAC,cAAAD,IAAAgB,SAAA,KAAEhB,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQE,GAAOY,UAAU,qBAAqB0T,WAAWuJ,GAAOlJ,QAAQ,IAC9EjV,IAAAC,cAAA,MAAIiB,UAAU,eAAe0T,WAAmB,GAARuJ,GAAalJ,QAAQ,IAC7DjV,IAAAC,cAAA,MAAIiB,UAAU,eAAe0T,WAAmB,GAARwJ,GAAanJ,QAAQ,IAC7DjV,IAAAC,cAAA,MAAIiB,UAAU,uBAAuB0T,WAAWyE,GAAUpE,QAAQ,UAMrG8I,IACR,CAAAzd,IAAA,aAAA8D,MAAA,SAEQA,EAAOiQ,GACd,IAAIC,EAAaC,KAAKC,IAAI,GAAIH,GAAa,GAC3C,OAAOE,KAAKE,MAAMrQ,EAAQkQ,GAAcA,IAC3C,CAAAhU,IAAA,sBAAA8D,MAAA,SAEoB0Z,EAAOlE,GACxB,IAAImE,EAAU,GACVM,EAAWlb,KAAKI,MAAMqZ,eAAiB,IA8DzC,OA5DFrK,OAAOC,KAAKoH,GAAMhC,QAAQ,SAAStX,GAC/B,IAAI0d,EAAUpE,EAAKtZ,GAAKwE,KAGxB,OAAQxE,GACN,IAAK,IAGL,IAAK,IACDyd,EAAQ3D,KAAKpa,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQE,IAAQwd,EAAME,KAC1C,MACJ,QACY,OAAQA,GACJ,IAAK,MAED,IAAIlK,EAAO,EACY,OAAnBgK,EAAME,KACNlK,EAAOgK,EAAME,IAEjBD,EAAQ3D,KAAKpa,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQE,GAAOY,UAAU,eAAe0T,WAAWd,GAAMmB,QAAQ,KACrF,MACJ,IAAK,MACD,IAAIsI,EAAQ,EACW,OAAnBO,EAAME,KACNT,EAAQO,EAAME,IAEhBD,EAAQ3D,KAAKpa,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQE,GAAOY,UAAU,eAAe0T,WAAW2I,GAAOtI,QAAQ,KACtF,MACN,QAEI,IAAIkJ,EAAQ,EACRC,EAAQ,EACRE,EAAO,EAEY,OAAnBR,EAAME,KACNG,EAAQL,EAAME,IAEG,OAAjBF,EAAW,MACXM,EAAQN,EAAW,KAEF,OAAjBA,EAAW,MACXQ,EAAOR,EAAW,KAEtB,IAAIzE,EAAgC,GAApBzE,WAAWuJ,GAAqC,GAApBvJ,WAAWwJ,GAAiBxJ,WAAW0J,GAAQD,EAG3FhF,EAAWlW,KAAKga,WAAW9D,EAAS,GAEpC0E,EAAQ3D,KAAKpa,IAAAC,cAAAD,IAAAgB,SAAA,KAAEhB,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQE,GAAOY,UAAU,qBAAqB0T,WAAWuJ,GAAOlJ,QAAQ,IAC9EjV,IAAAC,cAAA,MAAIiB,UAAU,gBAAoC,GAApB0T,WAAWuJ,IAAclJ,QAAQ,IAC/DjV,IAAAC,cAAA,MAAIiB,UAAU,gBAAoC,GAApB0T,WAAWwJ,IAAcnJ,QAAQ,IAC/DjV,IAAAC,cAAA,MAAIiB,UAAU,gBAAgB0T,WAAW0J,GAAQD,GAAUpJ,QAAQ,IACnEjV,IAAAC,cAAA,MAAIiB,UAAU,uBAAuB0T,WAAWyE,GAAUpE,QAAQ,SAK1GlR,KAAKZ,OAGE4a,IACX,CAAAzd,IAAA,gBAAA8D,MAAA,SAEa0P,GACX,IAAIyK,EAEJ,OADAA,EAAyB,GAAnB3J,WAAWd,GACVc,WAAW2J,GAAKtJ,QAAQ,KAGnC,CAAA3U,IAAA,sBAAA8D,MAAA,SACoB1E,GAAa,IAAAsR,EAAA7N,KAIvBqb,EAAU,CAAC,OAAQ,MAAO,MAAO,QAErC,GAAK9e,EAAa6Y,QAAQ,GAAGkG,IAA7B,CAKA,IAAI5E,EAAUtH,OAAOC,KAAK9S,EAAa6Y,QAAQ,IAC3CiB,EAAU,GACVkF,EAAiB,GAEjB3E,EAAgB,KAAO,EAAiC,IAAtBF,EAAQ5M,OAAS,IACnD0R,EAAa,EACbC,EAAkB,EACtBrM,OAAOC,KAAKqH,GAASjC,QAAQ,SAAStX,GAClC,IAAI0Z,EAAc,GACdC,EAAW,GACf,OAAQ3Z,GACN,IAAK,IACD0Z,EAAc,YACdC,EAAW,KACX,MACJ,IAAK,IACDD,EAAc,oBACdC,EAAWF,EAAgB,IAC3B,MACJ,IAAK,IACDC,EAAcH,EAAQvZ,GACtB2Z,EAAW,KACX0E,IACA,MACJ,QACI3E,EAAcH,EAAQvZ,GACtB2Z,EAAW,MACX0E,IAGNC,IAEA,IAAI1E,EAAS,CAAEC,OAAQH,EAAalV,KAAM+U,EAAQvZ,GAAMuK,KAAMoP,GAC9DT,EAAQY,KAAKF,KAMjByE,EAAcC,EAAqC,GAAlBD,EAAa,IAAWA,EAAW,GAGpE,IADA,IAAIE,EAAK,EACDC,EAAI,EAAGA,EAAEH,EAAYG,IACzB,GAAIA,EAAI,GAAKA,EAAKH,EAAa,CAE7B,IAAIzE,EAAS,CAAEC,OAAQqE,EAAQK,GAAK/Z,KAAM0Z,EAAQK,GAAKhU,KAAM,QAC7DgU,EACO,IACHA,EAAK,GAETH,EAAetE,KAAKF,GAI1B,IAAoBP,EAAMC,EAKtB3H,GALgB0H,EAKOja,EAAa6Y,QALdqB,EAKuBJ,EAJ7CG,EAAK7Z,IAAI,SAACwa,EAAKha,GAAG,OAAIN,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQE,IAAQ0Q,EAAK+L,gBAAgBzC,EAAKV,GAAM5Z,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQE,IAAQ0Q,EAAKqI,SAASM,EAAKrZ,GAAMkZ,QAOjIA,EAAQY,KADK,CAAED,OAAQ,OAAQrV,KAAM,WAAY+F,KAAM,OAGvD,IAAI4P,EAAejB,EAAQ1Z,IACzB,SAACC,EAAMO,GAAG,OAAIN,IAAAC,cAAA,MAAIK,IAAKA,EAAKY,UAAWZ,EAAM,GAAKA,EAAMse,EAAkB,cAAe,KAAMG,QAASze,GAAO,GAAKA,EAAOse,EAAkB,EAAK,IAAK,KAAMI,QAAS1e,EAAM,GAAKA,EAAMse,EAAkB,IAAK,IAAK7V,MAAOhJ,EAAK8K,MAAO9K,EAAKoa,UAEzO8E,EAAgBP,EAAe5e,IAC/B,SAACC,EAAMO,GAAG,OAAIN,IAAAC,cAAA,MAAIK,IAAG,KAAAF,OAAOE,GAAQyI,MAAOhJ,EAAK8K,MAAO9K,EAAKoa,UAEhEhX,KAAKqB,SAAS,CAAEiS,cAAgBxE,EAAWwI,aAAcA,EAAciC,eAAgBuC,SA1EnF9b,KAAKqB,SAAS,CAACsY,iBAAiB,MA2EzC,CAAAxc,IAAA,oBAAA8D,MAAA,SAEiB1E,GAAa,IAAA2Y,EAAAlV,KAEnBqb,EAAU,CAAC,OAAQ,MADRrb,KAAKI,MAAMqZ,eACe,IAAK,MAAO,QAErD,GAAKld,EAAa6Y,QAAQ,GAAGkG,IAA7B,CAKA,IAAI5E,EAAUtH,OAAOC,KAAK9S,EAAa6Y,QAAQ,IAC3CiB,EAAU,GACVkF,EAAiB,GAEjB3E,EAAgB,KAAO,EAAiC,IAAtBF,EAAQ5M,OAAS,IACnD0R,EAAa,EACbC,EAAkB,EACtBrM,OAAOC,KAAKqH,GAASjC,QAAQ,SAAStX,GAClC,IAAI0Z,EAAc,GACdC,EAAW,GACf,OAAQ3Z,GACN,IAAK,IACD0Z,EAAc,YACdC,EAAW,KACX,MACJ,IAAK,IACDD,EAAc,oBACdC,EAAWF,EAAgB,IAC3B,MACJ,IAAK,IACDC,EAAcH,EAAQvZ,GACtB2Z,EAAW,KACX0E,IACA,MACJ,QACI3E,EAAcH,EAAQvZ,GACtB2Z,EAAW,MACX0E,IAGNC,IAEA,IAAI1E,EAAS,CAAEC,OAAQH,EAAalV,KAAM+U,EAAQvZ,GAAMuK,KAAMoP,GAC9DT,EAAQY,KAAKF,KAKjByE,EAAcC,EAAqC,GAAlBD,EAAa,IAAWA,EAAY,GAGrE,IADA,IAAIE,EAAK,EACDC,EAAI,EAAGA,EAAEH,EAAYG,IACzB,GAAIA,EAAI,GAAKA,EAAKH,EAAa,CAE7B,IAAIzE,EAAS,CAAEC,OAAQqE,EAAQK,GAAK/Z,KAAM0Z,EAAQK,GAAKhU,KAAM,QAC7DgU,EACO,IACHA,EAAK,GAETH,EAAetE,KAAKF,GAO1B,IAAoBP,EAAMC,EAItB3H,GAJgB0H,EAIOja,EAAa6Y,QAJdqB,EAIuBJ,EAH7CG,EAAK7Z,IAAI,SAACwa,EAAKha,GAAG,OAAIN,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQE,IAAQ+X,EAAK6G,oBAAoB5E,EAAKV,GAAM5Z,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQE,IAAQ+X,EAAK8G,aAAaxF,EAAKrZ,GAAMkZ,QAOzIA,EAAQY,KADK,CAAED,OAAQ,OAAQrV,KAAM,WAAY+F,KAAM,OAGvD,IAAI4P,EAAejB,EAAQ1Z,IACzB,SAACC,EAAMO,GAAG,OAAIN,IAAAC,cAAA,MAAIK,IAAKA,EAAKY,UAAWZ,EAAM,GAAKA,EAAMse,EAAkB,cAAe,KAAMG,QAASze,GAAO,GAAKA,EAAOse,EAAkB,EAAK,IAAK,KAAMI,QAAS1e,EAAM,GAAKA,EAAMse,EAAkB,IAAK,IAAK7V,MAAOhJ,EAAK8K,MAAO9K,EAAKoa,UAEzO8E,EAAgBP,EAAe5e,IAC/B,SAACC,EAAMO,GAAG,OAAIN,IAAAC,cAAA,MAAIK,IAAG,KAAAF,OAAOE,GAAQyI,MAAOhJ,EAAK8K,MAAO9K,EAAKoa,UAEhEhX,KAAKqB,SAAS,CAAEiS,cAAgBxE,EAAWwI,aAAcA,EAAciC,eAAgBuC,SA5EnF9b,KAAKqB,SAAS,CAACsY,iBAAiB,MA8E3C,CAAAxc,IAAA,iBAAA8D,MAAA,WAEe,IAAAgb,EAAAjc,KAEZ5D,YAAQ,gCAAkC4D,KAAKI,MAAM/C,SAAW,IAAM2C,KAAKI,MAAM1F,SAAW,IAAMsF,KAAKI,MAAMlD,cAAe8C,KAAKI,OAAO/D,KAAM,SAACC,GACzI,IAAIC,EAAeD,GACQ,IAAvBC,EAAaC,OAEVyf,EAAK7b,MAAMsZ,gBAGZuC,EAAK5a,SAAS,CAACmY,gBAAiB,CAAC,GAAIyC,EAAK7b,MAAMqZ,eAAgB,KAAM,WACpEwC,EAAKC,kBAAkB3f,KAHxB0f,EAAKnC,oBAAoBvd,GAQ9B0f,EAAK5a,SAAS,CAAC9F,SAAS,KAGxB2C,QAAQC,IAAI,0CAGnB,CAAAhB,IAAA,SAAA8D,MAAA,WAKD,IAAIkb,EAAe,IACgB,IAA/Bnc,KAAKI,MAAMuZ,kBACTwC,EAAetf,IAAAC,cAAC2Y,KAAK,CAACtY,IAAK,EAAGwF,QAAQ,UACpC9F,IAAAC,cAAC2Y,KAAMC,QAAO,KAAC,WAAuB,gFAK9C,IAAI0G,EAAqBvf,IAAAC,cAAA,OAAKiB,UAAU,eACRlB,IAAAC,cAAA,KAAGiB,UAAU,gCAA+B,QAC5ClB,IAAAC,cAAA,cAAQ,SAAc,gCACtBD,IAAAC,cAAA,cAAQ,SAAc,8BACtBD,IAAAC,cAAA,cAAQ,UAAe,gCAKvD,OAHKkD,KAAKI,MAAMsZ,kBACZ0C,EAAqBvf,IAAAC,cAAA,OAAKiB,UAAU,eAAclB,IAAAC,cAAA,KAAGiB,UAAU,gCAA+B,QAAQlB,IAAAC,cAAA,cAAQ,QAAa,mCAK/HD,IAAAC,cAAA,OAAKiB,UAAU,aAEblB,IAAAC,cAACkF,IAAa,CACAzG,QAASyE,KAAKI,MAAM7E,QACpB0G,QAAQ,UACRC,aAAa,UACbC,UAAU,UACVC,QAAQ,2BACRC,KAAK,OAGjBxF,IAAAC,cAAA,OAAKiB,UAAU,QACblB,IAAAC,cAAA,OAAKiB,UAAU,eACTlB,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,WAAWD,UAAW3F,IAAMC,GAAE,qBAAAC,OAAuB+C,KAAKI,MAAM/C,SAAQ,KAAAJ,OAAI+C,KAAKI,MAAM1F,SAAQ,KAAAuC,OAAI+C,KAAKI,MAAMlD,eAAiBqG,MAAM,WAAU,cAC7K1G,IAAAC,cAAA,QAAMiB,UAAU,2CAA0C,qBAC1DlB,IAAAC,cAAA,cAAQ,eAAiB,IAAEkD,KAAKI,MAAMiM,YAAY,IAClDxP,IAAAC,cAAA,cAAQ,WAAiBkD,KAAKI,MAAMsT,UAAU,MAAI1T,KAAKI,MAAM1F,SAAS,MAE5EmC,IAAAC,cAAA,OAAKiB,UAAU,aAEZqe,EAEDvf,IAAAC,cAAA,MAAIiB,UAAU,cAAa,oBAE1Boe,EACDtf,IAAAC,cAAA,SAAOiB,UAAU,uEACblB,IAAAC,cAAA,aACAD,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQ,GAAKc,UAAU,iBAAiBiC,KAAKI,MAAMkX,cAC1Dza,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQ,IAAM+C,KAAKI,MAAMmZ,iBAEhC1c,IAAAC,cAAA,aAAQkD,KAAKI,MAAMkT,gBAGvBzW,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YAAYD,UAAW3F,IAAMC,GAAE,qBAAAC,OAAuB+C,KAAKI,MAAM/C,SAAQ,KAAAJ,OAAI+C,KAAKI,MAAM1F,SAAQ,KAAAuC,OAAI+C,KAAKI,MAAMlD,eAAiBqG,MAAM,WAAU,oBAWvL,CAAApG,IAAA,qBAAA8D,MAAA,SAEkB4U,EAAWC,MAE7B,CAAA3Y,IAAA,oBAAA8D,MAAA,WAECjB,KAAKsM,iBACLtM,KAAKkU,aACLlU,KAAK+Z,6BACNT,EA5qBwB,CAAS7V,cCgJrB4Y,WAtJM,SAAAzc,GACjB,SAAAyc,EAAYxc,GAAM,IAAAC,EAY6B,OAZ7BC,YAAAC,KAAAqc,IACdvc,EAAAG,YAAAD,KAAAE,YAAAmc,GAAAlc,KAAAH,KAAMH,KACDO,MAAQ,CACTsQ,MAAO7Q,EAAM6Q,MACbJ,WAAYzQ,EAAM8Q,KAClBP,UAAU,EACVQ,YAAY,EACZpU,OAAO,EACPsU,MAAO,0BAEXhR,EAAKiR,YAAcjR,EAAKiR,YAAYnQ,KAAIC,wBAAAf,KACxCA,EAAKkR,aAAelR,EAAKkR,aAAapQ,KAAIC,wBAAAf,KAC1CA,EAAKmR,UAAYnR,EAAKmR,UAAUrQ,KAAIC,wBAAAf,KAAOA,EAsI5C,OAnJciB,YAAAsb,EAAAzc,GAehBoB,YAAAqb,EAAA,EAAAlf,IAAA,aAAA8D,MAAA,SAEUA,EAAOiQ,GACd,IAAIC,EAAaC,KAAKC,IAAI,GAAIH,GAAa,GAC3C,OAAOE,KAAKE,MAAMrQ,EAAQkQ,GAAcA,IAC3C,CAAAhU,IAAA,mBAAA8D,MAAA,SAGgB0P,GACb,OAAOA,GACH,IAAK,IAEL,IAAK,IAEL,IAAK,IACD,OAAO,EACX,QACI,OAAO,KAGlB,CAAAxT,IAAA,cAAA8D,MAAA,SAEWO,GAIR,GAAc,UAAVA,EAAErE,IAAgB,CAElB,IAAIqU,EAAUhQ,EAAEE,OAAOT,MAEvB,GAAgB,MAAZuQ,GAAgC,MAAbA,GAAiC,MAAbA,EAKtC,YADAxR,KAAKqB,SAAS,CAAC+O,UAAU,IAH1BpQ,KAAKqB,SAAS,CAAC4O,aAAczO,EAAEE,OAAOyB,KACtCnD,KAAKgR,aAAaQ,QASrBxR,KAAKqB,SAAS,CAAC+O,UAAU,MAEjC,CAAAjT,IAAA,WAAA8D,MAAA,SAEQO,GACLA,EAAE8a,QAAU,IACd,CAAAnf,IAAA,eAAA8D,MAAA,SAEWuQ,GAAQ,IAAArQ,EAAAnB,KAEbgQ,EAAa,CACbC,aAAejQ,KAAKH,MAAMoQ,aAC1B5S,SAAU2C,KAAKH,MAAMxC,SACrB3C,SAAUsF,KAAKH,MAAMnF,SACrBwC,cAAe8C,KAAKH,MAAM3C,cAC1ByU,YAAaH,GAGZA,GAMkC,IAAnCxR,KAAKuc,iBAAiB/K,IAK1BxR,KAAKqB,SAAS,CAACuP,YAAY,IAE3BpS,YAAS,+BAAgCwR,GAAY3T,KAAM,SAACC,IAE/B,IADRA,EACFE,OACb2E,EAAKtB,MAAM+R,YAAYzQ,EAAKtB,MAAMoQ,cAClC9O,EAAKE,SAAS,CAAC+O,UAAU,EAAM5T,OAAO,EAAOoU,YAAY,MAKzDzP,EAAKE,SAAS,CAAC+O,UAAU,EAAO5T,OAAO,EAAMoU,YAAY,IACzD1S,QAAQC,IAAI,gCAhBd6B,KAAKqB,SAAS,CAAC+O,UAAU,EAAO5T,OAAO,IANvCwD,KAAKqB,SAAS,CAAC7E,OAAO,MA0B/B,CAAAW,IAAA,YAAA8D,MAAA,SAESO,GAERtD,QAAQC,IAAI,sBACZ6B,KAAKqB,SAAS,CAAC+O,UAAU,MAE1B,CAAAjT,IAAA,kBAAA8D,MAAA,SAEe4Q,GACV,GAAe,KAAXA,EACA,OAAOJ,WAAWI,GAAQC,QAAQ,KAE3C,CAAA3U,IAAA,SAAA8D,MAAA,WAGU,IAAAgM,EAAAjN,KAEL,OACInD,IAAAC,cAAAD,IAAAgB,SAAA,KACAhB,IAAAC,cAACmG,IAAS,CAACzG,MAAOwD,KAAKI,MAAM5D,MACrByV,WAAY,CACRC,UAAW,EACX5U,MAAO,CAAE6U,UAAW,WAExBJ,SAAU,SAACC,GAAS/E,EAAI,MAAAhQ,OAAOgQ,EAAKpN,MAAM6Q,QAAWsB,GACrDrQ,KAAM3B,KAAKH,MAAMoQ,aACjB9M,GAAInD,KAAKH,MAAMoQ,aACfzM,SAAUxD,KAAKI,MAAMwQ,WACrBvN,WAAW,EACXtF,UAAU,0BACVqU,aAAcpS,KAAKI,MAAMkQ,WACzBgC,OAAQtS,KAAKiR,UACbuL,UAAWxc,KAAKyc,SAChBlK,QAASvS,KAAK+Q,YACJjQ,SAAUd,KAAKH,MAAM2S,aACrBC,QAASzS,KAAKH,MAAM6S,cAE9B7V,IAAAC,cAAA,OAAKyF,IAAKvC,KAAKI,MAAM0Q,MAAOtO,IAAI,MAAOlF,MAAO,CAACqV,WAAY3S,KAAKI,MAAMgQ,SAAW,UAAY,YAC7FvT,IAAAC,cAACsB,IAAc,CAAEuD,KAAI,QAAA1E,OAAU+C,KAAKH,MAAM6Q,OAASpT,MAAO,CAACqV,WAAY3S,KAAKI,MAAMwQ,WAAa,UAAY,eAG1H,CAAAzT,IAAA,oBAAA8D,MAAA,gBAIEob,EAnJc,CAAS5Y,cC8YfiZ,GArYO,SAAA9c,GAIpB,SAAA8c,EAAY7c,GAAM,IAAAC,EAiCuC,OAjCvCC,YAAAC,KAAA0c,IAChB5c,EAAAG,YAAAD,KAAAE,YAAAwc,GAAAvc,KAAAH,KAAMH,KAiPRoT,WAAa,SAAC9P,GAAE,OAAKrD,EAAA,MAAA7C,OAAWkG,IAAM+P,QAAQC,SAhP5CrT,EAAKM,MAAQ,CACTyH,gBAAiBpI,cACjBpC,SAAUwC,EAAMoM,MAAM7O,OAAO6M,QAC7BvP,SAAUmF,EAAMoM,MAAM7O,OAAO8M,QAC7BhN,cAAe2C,EAAMoM,MAAM7O,OAAO8O,aAClCoH,cAAezW,IAAAC,cAAA,UAAID,IAAAC,cAAA,YACnBuP,YAAa,EACbsF,YAAa,EACb1B,aAAc,EACdsD,WAAY,GACZnD,SAAU,GACVoD,WAAa,GACbC,WAAY,EACZ5C,SAAU,EACV6C,UAAW,GACXC,aAAc,GACdE,iBAAiB,EACjBtY,SAAS,GAGbuE,EAAKgU,eAAiBhU,EAAKgU,eAAelT,KAAIC,wBAAAf,KAC9CA,EAAKwM,eAAiBxM,EAAKwM,eAAe1L,KAAIC,wBAAAf,KAC9CA,EAAKiU,kBAAoBjU,EAAKiU,kBAAkBnT,KAAIC,wBAAAf,KACpDA,EAAK0S,aAAe1S,EAAK0S,aAAa5R,KAAIC,wBAAAf,KAC1CA,EAAKkR,aAAelR,EAAKkR,aAAapQ,KAAIC,wBAAAf,KAC1CA,EAAKiR,YAAcjR,EAAKiR,YAAYnQ,KAAIC,wBAAAf,KACxCA,EAAKkU,kBAAoBlU,EAAKkU,kBAAkBpT,KAAIC,wBAAAf,KACpDA,EAAKmU,YAAcnU,EAAKmU,YAAYrT,KAAIC,wBAAAf,KACxCA,EAAK8R,YAAc9R,EAAK8R,YAAYhR,KAAIC,wBAAAf,KACxCA,EAAK4S,YAAc5S,EAAK4S,YAAY9R,KAAIC,wBAAAf,KACxCA,EAAKoU,WAAapU,EAAKoU,WAAWtT,KAAIC,wBAAAf,KACtCA,EAAKqU,gBAAkBrU,EAAKqU,gBAAgBvT,KAAIC,wBAAAf,KAAOA,EA6VxD,OAlYmBiB,YAAA2b,EAAA9c,GAsCnBoB,YAAA0b,EAAA,EAAAvf,IAAA,WAAA8D,MAAA,SAGQO,GACPxB,KAAKqB,SAAQI,YAAA,GAAGD,EAAEE,OAAOC,KAAOH,EAAEE,OAAOT,UAC1C,CAAA9D,IAAA,mBAAA8D,MAAA,SAEgB0P,GACf,OAAOA,GACH,IAAK,IAEL,IAAK,IAEL,IAAK,IAEL,IAAK,IAEL,IAAK,IAEL,IAAK,IAEL,IAAK,IACD,OAAO,EACX,QACI,OAAO,KAGlB,CAAAxT,IAAA,eAAA8D,MAAA,SAGcO,GAEP,IAAIgQ,EAGAtT,QAAQC,IAAI,SACZqT,EAAUhQ,EAAEE,OAAOT,MACnB,IAAMsS,EAAavT,KAAKI,MAAMmT,WAC9BA,EAAW/R,EAAEE,OAAOC,MAAQ6P,EAC5BxR,KAAKqB,SAAS,CAAEkS,iBAMzB,CAAApW,IAAA,oBAAA8D,MAAA,SAEiBgP,EAAcU,GAC5B,IAAM4C,EAAavT,KAAKI,MAAMmT,WAG9B,OAFAA,EAAWtD,GAAgBU,EAC3B3Q,KAAKqB,SAAS,CAAEkS,gBACT,IACV,CAAApW,IAAA,cAAA8D,MAAA,SAEWC,GACVA,EAAMQ,OAAO4S,WACd,CAAAnX,IAAA,kBAAA8D,MAAA,SAEe0b,GACZ,OAAQA,GACN,IAAK,IAEL,IAAK,IAEL,IAAK,IAEL,IAAK,IAEL,IAAK,IAEL,IAAK,IAEL,IAAK,IACC,OAAO,EACb,QACI,OAAO,KAGhB,CAAAxf,IAAA,cAAA8D,MAAA,SAEWO,GAGR,GAAc,UAAVA,EAAErE,IAAgB,CAGpB,IAAI6C,KAAK4c,gBAAgBpb,EAAEE,OAAOT,OAG/B,OAFA/C,QAAQC,IAAI,0CACZqD,EAAEE,OAAOT,MAAQ,IAIlBjB,KAAKqB,SAAS,CAAC4O,aAAczO,EAAEE,OAAOyB,KACtCnD,KAAKgR,aAAaxP,EAAEE,OAAOyB,OAElC,CAAAhG,IAAA,cAAA8D,MAAA,SAEWO,GACR,IAAM+R,EAAavT,KAAKI,MAAMmT,WAC9BA,EAAW/R,EAAEE,OAAOC,MAAQH,EAAEE,OAAOT,MAErCjB,KAAKqB,SAAS,CAAEkS,iBACnB,CAAApW,IAAA,oBAAA8D,MAAA,SAEiBgP,EAAcsE,GACtB,IAAMnE,EAAWpQ,KAAKI,MAAMgQ,SAC5BA,EAAQ,QAAAnT,OAASgT,IAAkBsE,EACnCvU,KAAKqB,SAAS,CAAE+O,eACzB,CAAAjT,IAAA,cAAA8D,MAAA,SAEWgP,GACR,IAAIuD,EAAaxT,KAAKI,MAAMoT,WACxBgB,EAAUpF,OAAOC,KAAKmE,GAAY1J,OAEtCsF,OAAOC,KAAKmE,GAAYiB,QAAQ,SAAStX,GACnC,IAAIuX,EAAOxE,SAAS/S,GAAO,EAEzB,GAAI8S,IAAiBuD,EAAWrW,QAAhC,CAEE,IAAIwX,EAASnB,EAAWkB,GAEpBA,EAAOF,GACPhE,SAASC,eAAe5G,OAAO8K,IAASxB,aAUzD,CAAAhW,IAAA,eAAA8D,MAAA,SAEYgP,GAAa,IAAA9O,EAAAnB,KAChB4U,EAAQ5U,KAAKI,MAAMmT,WAAWtD,GAC9BD,EAAa,CACbC,aAAeA,EACf5S,SAAU2C,KAAKI,MAAM/C,SACrB3C,SAAUsF,KAAKI,MAAM1F,SACrBwC,cAAe8C,KAAKI,MAAMlD,cAC1ByU,YAAaiD,GAGjBpW,YAAS,+BAAgCwR,GAAY3T,KAAM,SAACC,GAE1D,OAA2B,IADRA,EACFE,OACb2E,EAAKyQ,YAAY3B,IACV,IAEP/R,QAAQC,IAAI,6BACL,OAGlB,CAAAhB,IAAA,iBAAA8D,MAAA,WAEe,IAAAgM,EAAAjN,KACZ5D,YAAQ,mBAAoB4D,KAAKI,OAAO/D,KAAM,SAACC,GAC7C,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC/B,IAAIrB,EAAUoB,EAAapB,QAC3B8R,EAAK5L,SAAS,CAACgL,YAAalR,SAInC,CAAAgC,IAAA,aAAA8D,MAAA,WAEW,IAAAoM,EAAArN,KAEV5D,YAAQ,oBAAsB4D,KAAKI,MAAM/C,SAAU2C,KAAKI,OAAO/D,KAAM,SAACC,GACpE,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAIiX,EAAalX,EAAakX,WAC1B5C,EAAWtU,EAAasU,SACxB6C,EAAYnX,EAAamX,UAC7BrG,EAAKhM,SAAS,CACRoS,WAAYA,EACZ5C,SAAUA,EACV6C,UAAWA,SAItB,CAAAvW,IAAA,kBAAA8D,MAAA,WAEgB,IAAAwM,EAAAzN,KACXxF,EAAawF,KAAKI,MAAMyH,gBAAgBrN,WAC5C4B,YAAQ,8BAAgC4D,KAAKI,MAAMlD,cAAgB,IAAM1C,EAAYwF,KAAKI,OAAO/D,KAAM,SAACC,GACtG,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAImX,EAAepX,EAAa0Y,WAEhCxH,EAAKpM,SAAS,CACRsS,aAAcA,GACf,WAEGlG,EAAKqG,wBAGXrG,EAAKpM,SAAS,CAACwS,iBAAiB,QAMvC,CAAA1W,IAAA,iBAAA8D,MAAA,WAIe,IAAA4M,EAAA7N,KAEdxB,YAAS,4BAA6BwB,KAAKI,OAAO/D,KAAM,SAACC,GACnD,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE1B,IAAI4T,EAAWvC,EAAKzN,MAAMgQ,SACtB+E,EAActH,EAAKzN,MAAMmT,WACzBC,EAAa3F,EAAKzN,MAAMoT,WAC7BpE,OAAOC,KAAK9S,EAAa6Y,SAASX,QAAQ,SAAStX,GAE/C,IAAI8S,EAAe1T,EAAa6Y,QAAQjY,GAAK8S,aACzC2E,EAAQrY,EAAa6Y,QAAQjY,GAAKyX,MAEtCpB,EAAWrW,GAAO8S,EAEb2E,IACDA,EAAQ,IAERO,EAAYlF,GAAgB2E,EAO7BxE,EAAQ,QAAAnT,OAASgT,KAAkB,IAI5C,IAAInB,EAAYvS,EAAa6Y,QAAQzY,IACnC,SAACC,EAAM8T,GAAK,OAAI7T,IAAAC,cAAA,MAAIK,IAAKP,EAAKyY,YACtBxY,IAAAC,cAAA,UAAKF,EAAKqT,cACVpT,IAAAC,cAAA,UAAKF,EAAK0Y,sBACVzY,IAAAC,cAAA,UAEID,IAAAC,cAACuf,GAAe,CACXtK,SAAU,SAACC,GAASnE,EAAI,MAAA5Q,OAAOyT,IAAWsB,GAC1CrQ,KAAM/E,EAAKqT,aACXA,aAAgBrT,EAAKqT,aACrB5S,SAAYwQ,EAAKzN,MAAM/C,SACvB3C,SAAYmT,EAAKzN,MAAM1F,SACvBwC,cAAe2Q,EAAKzN,MAAMlD,cAC1BiG,GAAIvG,EAAKqT,aACTU,KAAM9C,EAAKzN,MAAMmT,WAAW3W,EAAKqT,cACjCuC,aAAc3E,EAAK2E,aACnBE,YAAa7E,EAAK6E,YAClBd,YAAa/D,EAAK+D,kBAS/B/D,EAAKxM,SAAS,CAAEiS,cAAgBxE,GAAa,WACxCjB,EAAKxM,SAAS,CAAC9F,SAAS,WAIrC2C,QAAQC,IAAI,uCAGnB,CAAAhB,IAAA,SAAA8D,MAAA,WAID,IAAIuU,EAAsB,GAQ1B,OAPmC,IAA/BxV,KAAKI,MAAMyT,kBACX2B,EAAsB3Y,IAAAC,cAAC2Y,KAAK,CAACtY,IAAK,EAAGwF,QAAQ,UACzC9F,IAAAC,cAAC2Y,KAAMC,QAAO,KAAC,oCAA6C,qHAOpE7Y,IAAAC,cAAA,OAAKiB,UAAU,aACXlB,IAAAC,cAAA,WAEAD,IAAAC,cAACkF,IAAa,CACFzG,QAASyE,KAAKI,MAAM7E,QACpB0G,QAAQ,UACRC,aAAa,UACbC,UAAU,UACVC,QAAQ,2BACRC,KAAK,OAGjBxF,IAAAC,cAAA,OAAKiB,UAAU,QACblB,IAAAC,cAAA,OAAKiB,UAAU,eACXlB,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,WAAWD,UAAW3F,IAAMC,GAAE,qBAAAC,OAAuB+C,KAAKI,MAAM/C,SAAQ,KAAAJ,OAAI+C,KAAKI,MAAM1F,SAAQ,KAAAuC,OAAI+C,KAAKI,MAAMlD,eAAiBqG,MAAM,WAAU,cAC3K1G,IAAAC,cAAA,QAAMiB,UAAU,2CAA0ClB,IAAAC,cAAA,cAAQ,6BAAkC,IACpGD,IAAAC,cAAA,cAAQ,WAAgB,IAAEkD,KAAKI,MAAMsT,UAAU,OAAK1T,KAAKI,MAAM1F,SAC/DmC,IAAAC,cAAA,cAAQ,iBAAoBkD,KAAKI,MAAMiM,YAAY,MAIzDxP,IAAAC,cAAA,OAAKiB,UAAU,aACflB,IAAAC,cAAA,OAAKiB,UAAU,cAAc,iHAG3BlB,IAAAC,cAAA,MAAIiB,UAAU,cAAa,oBAE1ByX,EAED3Y,IAAAC,cAAA,SAAOiB,UAAU,6CACflB,IAAAC,cAAA,aACED,IAAAC,cAAA,MAAIiB,UAAU,iBACZlB,IAAAC,cAAA,MAAI8I,MAAM,MAAK,aACf/I,IAAAC,cAAA,MAAI8I,MAAM,OAAM,UAChB/I,IAAAC,cAAA,MAAI8I,MAAM,MAAK,UAGnB/I,IAAAC,cAAA,aACGkD,KAAKI,MAAMkT,gBAIhBzW,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YAAYD,UAAW3F,IAAMC,GAAE,qBAAAC,OAAuB+C,KAAKI,MAAM/C,SAAQ,KAAAJ,OAAI+C,KAAKI,MAAM1F,SAAQ,KAAAuC,OAAI+C,KAAKI,MAAMlD,eAAiBqG,MAAM,WAAU,oBAWvL,CAAApG,IAAA,oBAAA8D,MAAA,WAGCjB,KAAKsM,iBACLtM,KAAKkU,aACLlU,KAAKmU,sBAENuI,EAlYmB,CAASjZ,sBC+ShBoZ,GA7SE,SAAAjd,GAEf,SAAAid,EAAYhd,GAAM,IAAAC,EAwByC,OAxBzCC,YAAAC,KAAA6c,IAEd/c,EAAAG,YAAAD,KAAAE,YAAA2c,GAAA1c,KAAAH,KAAMH,KAuMVid,gBAAkB,SAACtb,GACf1B,EAAKuB,SAAS,CAAC0G,WAAYvG,EAAEE,OAAOT,OAAQ,WACxCnB,EAAKid,yBAxMTjd,EAAKM,MAAQ,CACT/C,SAAUwC,EAAMoM,MAAM7O,OAAO6M,QAC7BvP,SAAUmF,EAAMoM,MAAM7O,OAAO8M,QAC7BrC,gBAAiBpI,cACjBsI,WAAY,EACZ2L,UAAW,KACXsJ,cAAe,KACfC,aAAc,EACdC,eAAgB,KAChBC,qBAAsB,KACtBC,eAAgB,KAChB7hB,SAAS,GAIbuE,EAAKud,gBAAkBvd,EAAKud,gBAAgBzc,KAAIC,wBAAAf,KAChDA,EAAKoU,WAAapU,EAAKoU,WAAWtT,KAAIC,wBAAAf,KACtCA,EAAKid,oBAAsBjd,EAAKid,oBAAoBnc,KAAIC,wBAAAf,KACxDA,EAAKwM,eAAiBxM,EAAKwM,eAAe1L,KAAIC,wBAAAf,KAC9CA,EAAKwd,aAAexd,EAAKwd,aAAa1c,KAAIC,wBAAAf,KAC1CA,EAAKyd,cAAgBzd,EAAKyd,cAAc3c,KAAIC,wBAAAf,KAC5CA,EAAK0d,gBAAkB1d,EAAK0d,gBAAgB5c,KAAIC,wBAAAf,KAAOA,EA+Q1D,OAzSciB,YAAA8b,EAAAjd,GA4BdoB,YAAA6b,EAAA,EAAA1f,IAAA,aAAA8D,MAAA,WAEY,IAAAE,EAAAnB,KAEX5D,YAAQ,oBAAsB4D,KAAKI,MAAM/C,SAAU2C,KAAKI,OAAO/D,KAAM,SAACC,GACpE,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAIkX,EAAYnX,EAAamX,UAC7BvS,EAAKE,SAAS,CACRqS,UAAWA,SAItB,CAAAvW,IAAA,kBAAA8D,MAAA,WAEgB,IAAAgM,EAAAjN,KAEf5D,YAAQ,6BAA+B4D,KAAKI,MAAM6P,aAAcjQ,KAAKI,OAAO/D,KAAM,SAACC,GACjF,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC9B,IAAIihB,EAAelhB,EAAamhB,UAAU,GAE3CzQ,EAAK5L,SAAS,CACZ2b,cAAgBS,EAAanI,sBAC1B,mBAKV,CAAAnY,IAAA,iBAAA8D,MAAA,WAEe,IAAAoM,EAAArN,KACd5D,YAAQ,mBAAoB4D,KAAKI,OAAO/D,KAAM,SAACC,GAC7C,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC/B,IAAIrB,EAAUoB,EAAapB,QAC3BkS,EAAKhM,SAAS,CAAC0G,WAAY5M,GAAU,WACjCkS,EAAKmQ,kBACLnQ,EAAK0P,6BAMhB,CAAA5f,IAAA,mBAAA8D,MAAA,SAEkB0c,GACb,OAAQA,EAAShhB,IACV,SAACC,EAAM8T,GAAK,OAAI7T,IAAAC,cAAAD,IAAAgB,SAAA,KAAEhB,IAAAC,cAAA,MAAI8I,MAAM,KAAK7H,UAAU,yBAAyB2S,QAE9E,CAAAvT,IAAA,gBAAA8D,MAAA,SAEa9D,EAAKygB,GAEjB,OAAI1N,SAASlQ,KAAKI,MAAM/C,WAAa,GAC7BF,EAAM,EACF,aAAa0gB,KAAKD,GACXA,EAEAnM,WAAWmM,GAAO9L,QAAQ,GAIlC8L,IACd,CAAAzgB,IAAA,eAAA8D,MAAA,SAIc6c,GACX,IAAIlD,EAAU,GA6Bd,OA3BAxL,OAAOC,KAAKyO,GAAMrJ,QAAQ,SAAStX,GACjC,IAAI0d,EAAUiD,EAAK3gB,GAEf4gB,EAAQ,GAGRA,EADQ,MAAR5gB,EACQ,yBAEA,uBAGR+S,SAASlQ,KAAKI,MAAM/C,WAAa,GAC7B6S,SAAS/S,GAAO,GACbsU,WAAWoJ,GAAW,IACvBkD,GAAS,gBAQrBnD,EAAQ3D,KAAKpa,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQE,GAAOY,UAAWggB,GAAQ/d,KAAKud,cAAcpgB,EAAK0d,MAE5Eja,KAAKZ,OAGC4a,IACT,CAAAzd,IAAA,uBAAA8D,MAAA,SACoB0Z,GAAM,IAAAlN,EAAAzN,KACzB,OAAQ2a,EAAMhe,IACd,SAACC,EAAM8T,GAAK,OAAI7T,IAAAC,cAAAD,IAAAgB,SAAA,KAAEhB,IAAAC,cAAA,MAAIK,IAAKP,EAAKyY,YAAa5H,EAAK6P,aAAa1gB,SAEhE,CAAAO,IAAA,sBAAA8D,MAAA,WAEoB,IAAA4M,EAAA7N,KAIX3C,EAAW2C,KAAKI,MAAM/C,SACtB3C,EAAWsF,KAAKI,MAAM1F,SACtBsjB,EAAM,iCACJxQ,EAAQxN,KAAKI,MAAMyH,gBAAgB2F,MACnC5I,EAAa5E,KAAKI,MAAMyH,gBAAgBjD,WAE9C5E,KAAKqB,SAAS,CAAC9F,SAAS,IAEpByE,KAAKI,MAAM/C,SAAW,IACtB2gB,EAAM,uCAEV5hB,YAAQ4hB,EAAM3gB,EAAW,IAAM3C,EAAW,IAAMsF,KAAKI,MAAM2H,WAAa,IAAInD,EAAW,IAAI4I,EAAOxN,KAAKI,OAAO/D,KAAM,SAACC,GACnH,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAIme,EAAQpe,EAAaoe,MACrBgD,EAAWphB,EAAaohB,SACxBM,EAAaphB,IAAAC,cAAA,MAAI8I,MAAM,KAAK7H,UAAU,aAAY,QAElD8P,EAAKzN,MAAM/C,SAAW,IACtB4gB,EAAa,IAEjB,IAAIjH,EAASna,IAAAC,cAAA,SAAOiB,UAAU,iBAC1BlB,IAAAC,cAAA,aACED,IAAAC,cAAA,MAAIiB,UAAU,IACZlB,IAAAC,cAAA,MAAI8I,MAAM,KAAK7H,UAAU,aAAY,aACrClB,IAAAC,cAAA,MAAI8I,MAAM,MAAM7H,UAAU,aAAY,yBACpC8P,EAAKqQ,iBAAiBP,GACtBM,IAGNphB,IAAAC,cAAA,aACG+Q,EAAKsQ,qBAAqBxD,KAI/BC,EAAU,GACVxL,OAAOC,KAAKsO,GAAUlJ,QAAQ,SAAStX,GACvCyd,EAAQ3D,KAAKpa,IAAAC,cAAAD,IAAAgB,SAAA,KAAEhB,IAAAC,cAAA,QAAMiB,UAAU,qBAAqBZ,IAAG,OAAAF,OAASE,IAAO,IAAEA,EAAI,KAAGwgB,EAASxgB,IAAY,QAMvG0Q,EAAKxM,SAAS,CAAC0b,oBAAqB/F,EAAQkG,eAAgBtC,EAASrf,SAAS,SAMvF,CAAA4B,IAAA,kBAAA8D,MAAA,WAKC,IAFA,IAAImd,EAAgB,GAEXC,EAAI,EAAGA,GAAKre,KAAKI,MAAM2H,WAAYsW,IACxCD,EAAcnH,KAAKoH,GAEvB,IAAMC,EAAQF,EAAczhB,IAAI,SAACC,EAAM8T,GAAK,OAAI7T,IAAAC,cAAC0I,IAAQ,CAACrI,IAAKuT,EAAOzP,MAAOrE,GAAM,WAASA,KAE5FoD,KAAKqB,SAAS,CAAC+b,eAAgBkB,MAEhC,CAAAnhB,IAAA,SAAA8D,MAAA,WAUC,IACIsd,EAAc,KAKlB,MAJ6B,MAAzBve,KAAKI,MAAMoe,YACXD,EAAc1hB,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YAAY5E,UAAU,cAAc2E,UAAW3F,IAAMC,GAAE,wBAAAC,OAA0B+C,KAAKI,MAAM/C,SAAQ,KAAAJ,OAAI+C,KAAKI,MAAM1F,SAAQ,KAAAuC,OAAI+C,KAAKI,MAAM5F,YAAc+I,MAAM,WAAU,eAKxN1G,IAAAC,cAAA,OAAKiB,UAAU,aACVlB,IAAAC,cAAA,OAAKiB,UAAU,QACZlB,IAAAC,cAAA,OAAKiB,UAAU,eACXlB,IAAAC,cAACyS,KAAI,CAACC,WAAS,EAACiP,UAAU,MAAMtY,eAAe,gBAAgBF,WAAW,UACpEpJ,IAAAC,cAACyS,KAAI,CAAC3S,MAAI,EAAC8S,GAAI,GACX7S,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,WAAWD,UAAW3F,IAAMC,GAAE,SAAYuG,MAAM,WAAU,eAG5F1G,IAAAC,cAACyS,KAAI,CAAC3S,MAAI,EAAC8S,GAAI,GACf7S,IAAAC,cAAA,cAAS,UAAe,IAAEkD,KAAKI,MAAMsT,UAAU,OAAK1T,KAAKI,MAAM1F,UAE/DmC,IAAAC,cAACyS,KAAI,CAAC3S,MAAI,EAAC8S,GAAI,GACT7S,IAAAC,cAAA,UAASiB,UAAU,QAAO,eAC1BlB,IAAAC,cAAC+F,IAAW,CAAC9E,UAAU,QAErBlB,IAAAC,cAAC2b,KAAM,CACLiG,QAAQ,gBACRvb,GAAG,aACHlC,MAAQjB,KAAKI,MAAM2H,WACnBjH,SAAUd,KAAK8c,iBAEX9c,KAAKI,MAAMgd,kBAIzBvgB,IAAAC,cAACyS,KAAI,CAAC3S,MAAI,EAAC8S,GAAI,GAGf7S,IAAAC,cAAA,OAAKiB,UAAU,YAAY4gB,KAAK,QAAQnY,aAAW,qCAG/C3J,IAAAC,cAAA,OAAKiB,UAAU,YAAY4gB,KAAK,SAC9B9hB,IAAAC,cAAA,UAAQqG,GAAG,gBAAgBzE,KAAK,SAASX,UAAU,kCAAkC6gB,iBAAe,WAAWC,gBAAc,SAAQ,gBAGrIhiB,IAAAC,cAAA,MAAIiB,UAAU,gBAAgBia,kBAAgB,iBAC3ChY,KAAKI,MAAM/C,UAAY,EACxBR,IAAAC,cAAAD,IAAAgB,SAAA,KACAhB,IAAAC,cAAA,UAAID,IAAAC,cAAA,KAAGiB,UAAU,gBAAgB2D,OAAO,SAAUlE,KAAMshB,KAAY,0BAAA7hB,OAA6B+C,KAAKI,MAAM/C,SAAQ,WAAAJ,OAAU+C,KAAKI,MAAM1F,SAAQ,aAAAuC,OAAY+C,KAAKI,MAAM2H,WAAU,SAAA9K,OAAQ+C,KAAKI,MAAMyH,gBAAgBrN,WAAU,OAAAyC,OAAM+C,KAAKI,MAAMyH,gBAAgB2F,QAAS,mBACzQ3Q,IAAAC,cAAA,UAAID,IAAAC,cAAA,KAAGiB,UAAU,gBAAgB2D,OAAO,SAAUlE,KAAMshB,KAAY,+BAAA7hB,OAAkC+C,KAAKI,MAAM/C,SAAQ,WAAAJ,OAAU+C,KAAKI,MAAM1F,SAAQ,aAAAuC,OAAY+C,KAAKI,MAAM2H,WAAU,SAAA9K,OAAQ+C,KAAKI,MAAMyH,gBAAgBrN,WAAU,OAAAyC,OAAM+C,KAAKI,MAAMyH,gBAAgB2F,QAAS,mCAC9Q3Q,IAAAC,cAAA,UAAID,IAAAC,cAAA,KAAGiB,UAAU,gBAAgB2D,OAAO,SAAUlE,KAAMshB,KAAY,iCAAA7hB,OAAoC+C,KAAKI,MAAM/C,SAAQ,WAAAJ,OAAU+C,KAAKI,MAAM1F,SAAQ,aAAAuC,OAAY+C,KAAKI,MAAM2H,WAAU,SAAA9K,OAAQ+C,KAAKI,MAAMyH,gBAAgBrN,WAAU,OAAAyC,OAAM+C,KAAKI,MAAMyH,gBAAgB2F,QAAS,4BAChR3Q,IAAAC,cAAA,UAAID,IAAAC,cAAA,KAAGiB,UAAU,gBAAgB2D,OAAO,SAAUlE,KAAMshB,KAAY,8BAAA7hB,OAAiC+C,KAAKI,MAAM/C,SAAQ,WAAAJ,OAAU+C,KAAKI,MAAM1F,SAAQ,aAAAuC,OAAY+C,KAAKI,MAAM2H,WAAU,SAAA9K,OAAQ+C,KAAKI,MAAMyH,gBAAgBrN,WAAU,OAAAyC,OAAM+C,KAAKI,MAAMyH,gBAAgB2F,QAAS,+BAC7Q3Q,IAAAC,cAAA,UAAID,IAAAC,cAAA,KAAGiB,UAAU,gBAAgB2D,OAAO,SAAUlE,KAAMshB,KAAY,+BAAA7hB,OAAkC+C,KAAKI,MAAM/C,SAAQ,WAAAJ,OAAU+C,KAAKI,MAAM1F,SAAQ,aAAAuC,OAAY+C,KAAKI,MAAM2H,WAAU,SAAA9K,OAAQ+C,KAAKI,MAAMyH,gBAAgBrN,WAAU,OAAAyC,OAAM+C,KAAKI,MAAMyH,gBAAgB2F,QAAS,4BAC9Q3Q,IAAAC,cAAA,UAAID,IAAAC,cAAA,KAAGiB,UAAU,gBAAgB2D,OAAO,SAAUlE,KAAMshB,KAAY,mCAAA7hB,OAAsC+C,KAAKI,MAAM/C,SAAQ,WAAAJ,OAAU+C,KAAKI,MAAM1F,SAAQ,aAAAuC,OAAY+C,KAAKI,MAAM2H,WAAU,SAAA9K,OAAQ+C,KAAKI,MAAMyH,gBAAgBrN,WAAU,OAAAyC,OAAM+C,KAAKI,MAAMyH,gBAAgB2F,QAAS,4BAGlR3Q,IAAAC,cAAA,UAAID,IAAAC,cAAA,KAAGiB,UAAU,gBAAgB2D,OAAO,SAAUlE,KAAMshB,KAAY,4BAAA7hB,OAA+B+C,KAAKI,MAAM/C,SAAQ,WAAAJ,OAAU+C,KAAKI,MAAM1F,SAAQ,aAAAuC,OAAY+C,KAAKI,MAAM2H,WAAU,SAAA9K,OAAQ+C,KAAKI,MAAMyH,gBAAgBrN,WAAU,OAAAyC,OAAM+C,KAAKI,MAAMyH,gBAAgB2F,QAAS,yBAU7R3Q,IAAAC,cAACsB,IAAc,CAACd,MAAO,CAACqV,WAAY3S,KAAKI,MAAM7E,QAAU,UAAY,YACrEsB,IAAAC,cAAA,OAAKiB,UAAU,aACLlB,IAAAC,cAAA,OAAKiB,UAAU,kBACViC,KAAKI,MAAM8c,gBAEfld,KAAKI,MAAM2c,qBAGjBwB,MAMd,CAAAphB,IAAA,oBAAA8D,MAAA,WAGCjB,KAAKkU,aACLlU,KAAKsM,qBAINuQ,EAzSc,CAASpZ,aCqPXsb,GA1PW,SAAAnf,GAKxB,SAAAmf,EAAYlf,GAAM,IAAAC,EA8BuC,OA9BvCC,YAAAC,KAAA+e,IAChBjf,EAAAG,YAAAD,KAAAE,YAAA6e,GAAA5e,KAAAH,KAAMH,KAmJRid,gBAAkB,SAACtb,GACf1B,EAAKuB,SAAS,CAACgL,YAAa7K,EAAEE,OAAOT,OAAQ,WACzCnB,EAAKgU,oBApJXhU,EAAKM,MAAQ,CACT/C,SAAUwC,EAAMoM,MAAM7O,OAAO6M,QAC7BvP,SAAUmF,EAAMoM,MAAM7O,OAAO8M,QAC7BhN,cAAe2C,EAAMoM,MAAM7O,OAAO8O,aAClC/B,eAAgBtK,EAAMoM,MAAM7O,OAAO4Y,YACnC1L,aAAczK,EAAMoM,MAAM7O,OAAOiW,YACjCK,UAAW,KACXJ,cAAe,KACf2C,cAAe,KACfsD,eAAgB,KAChBlN,YAAa,EACbsF,YAAa,EACb1B,aAAc,EACdsD,WAAY,GACZnD,SAAU,GACVoD,WAAa,GACbgG,gBAAiB,CAAC,GAAI,IACtBC,eAAgB,EAChBC,iBAAiB,EACjBC,iBAAiB,EACjBpe,SAAS,EACTyjB,aAAa,GAGjBlf,EAAKgU,eAAiBhU,EAAKgU,eAAelT,KAAIC,wBAAAf,KAC9CA,EAAKwM,eAAiBxM,EAAKwM,eAAe1L,KAAIC,wBAAAf,KAC9CA,EAAKoU,WAAapU,EAAKoU,WAAWtT,KAAIC,wBAAAf,KACtCA,EAAKga,oBAAsBha,EAAKga,oBAAoBlZ,KAAIC,wBAAAf,KACxDA,EAAK0d,gBAAkB1d,EAAK0d,gBAAgB5c,KAAIC,wBAAAf,KAAOA,EAoNxD,OAvPuBiB,YAAAge,EAAAnf,GAqCvBoB,YAAA+d,EAAA,EAAA5hB,IAAA,iBAAA8D,MAAA,WAIe,IAAAE,EAAAnB,KACZ5D,YAAQ,mBAAoB4D,KAAKI,OAAO/D,KAAM,SAACC,GAC7C,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC/B,IAAIrB,EAAUoB,EAAapB,QAC3BgG,EAAKE,SAAS,CAACgL,YAAalR,GAAU,WAClCgG,EAAKqc,yBAKhB,CAAArgB,IAAA,aAAA8D,MAAA,WAEW,IAAAgM,EAAAjN,KAEV5D,YAAQ,oBAAsB4D,KAAKI,MAAM/C,SAAU2C,KAAKI,OAAO/D,KAAM,SAACC,GACpE,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAIkX,EAAYnX,EAAamX,UAC7BzG,EAAK5L,SAAS,CACRqS,UAAWA,SAItB,CAAAvW,IAAA,gBAAA8D,MAAA,SAKW0Z,EAAOlE,GACjB,IAAImE,EAAU,GAWd,OAVAxL,OAAOC,KAAKsL,GAAOlG,QAAQ,SAAStX,GAChC,IAAI8hB,EAAYtE,EAAMxd,GAClBwT,EAAOsO,EACPC,EAAS,GACT/hB,EAAM,IACNwT,EAAOc,WAAWwN,GAAWnN,QAAQ,GACrCoN,EAAS,UAEbtE,EAAQ3D,KAAKpa,IAAAC,cAAA,MAAImS,MAAOiQ,EAAQ/hB,IAAG,MAAAF,OAAQE,IAAQwT,MAEhDiK,IACV,CAAAzd,IAAA,eAAA8D,MAAA,SAEY9D,EAAKgiB,GAOd,OAAY,IAARhiB,EACO,MAEC,IAARA,EALO,IADE,IADJgiB,EAAQ,GAEI,GAMH,IAEdhiB,EAAM,GAAKA,EAAMgiB,EACV,MAEPhiB,IAASgiB,EAAM,EACR,WADX,IAIH,CAAAhiB,IAAA,sBAAA8D,MAAA,SAEmBme,EAAUC,GAAW,IAAAhS,EAAArN,KAKjCsf,EADUlQ,OAAOC,KAAK+P,GACHtV,OAGnBwN,EAAe8H,EAASziB,IACxB,SAACC,EAAMO,GAAG,OAAIN,IAAAC,cAAA,MAAIK,IAAKA,EAAKY,UAAW,cAAgB6H,MAAOyH,EAAKkS,aAAapiB,EAAImiB,IAAY1iB,KAUhGkS,EAPeuQ,EAAW1iB,IAAI,SAAC6iB,EAAQriB,GAAG,OAClCN,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQE,IACXkQ,EAAKoS,cAAcD,EAAQriB,MAO3C6C,KAAKqB,SAAS,CAAEiS,cAAgBxE,EAAWwI,aAAcA,MAC5D,CAAAna,IAAA,iBAAA8D,MAAA,WAGe,IAAAwM,EAAAzN,KACZA,KAAKqB,SAAS,CAAC2d,aAAa,IAC5B5iB,YAAQ,sCAAwC4D,KAAKI,MAAM/C,SAAW,IAAM2C,KAAKI,MAAM1F,SAAW,IAAMsF,KAAKI,MAAMlD,cAAgB,IAAM8C,KAAKI,MAAMiM,YAAarM,KAAKI,OAAO/D,KAAM,SAACC,GAC9K,IAAIC,EAAeD,GAEQ,IAAvBC,EAAaC,OAGfiR,EAAKqM,oBAAoBvd,EAAamjB,UAAUnjB,EAAaojB,OAG7DlS,EAAKpM,SAAS,CAAC9F,SAAS,EAAOyjB,aAAa,KAG5C9gB,QAAQC,IAAI,0CAGnB,CAAAhB,IAAA,kBAAA8D,MAAA,WAaC,IAFA,IAAImd,EAAgB,GAEXC,EAAI,EAAGA,GAAKre,KAAKI,MAAMiM,YAAagS,IACzCD,EAAcnH,KAAKoH,GAEvB,IAAMC,EAAQF,EAAczhB,IAAI,SAACC,EAAM8T,GAAK,OAAI7T,IAAAC,cAAC0I,IAAQ,CAACrI,IAAKuT,EAAOzP,MAAOrE,GAAM,WAASA,KAE5FoD,KAAKqB,SAAS,CAAC+b,eAAgBkB,MAElC,CAAAnhB,IAAA,SAAA8D,MAAA,WAQC,OAGApE,IAAAC,cAAA,OAAKiB,UAAU,aAEblB,IAAAC,cAACkF,IAAa,CACAzG,QAASyE,KAAKI,MAAM7E,QACpB0G,QAAQ,UACRC,aAAa,UACbC,UAAU,UACVC,QAAQ,2BACRC,KAAK,OAGjBxF,IAAAC,cAAA,OAAKiB,UAAU,QACblB,IAAAC,cAAA,OAAKiB,UAAU,eACTlB,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,WAAWD,UAAW3F,IAAMC,GAAE,qBAAAC,OAAuB+C,KAAKI,MAAM/C,SAAQ,KAAAJ,OAAI+C,KAAKI,MAAM1F,SAAQ,KAAAuC,OAAI+C,KAAKI,MAAMlD,eAAiBqG,MAAM,WAAU,cAC7K1G,IAAAC,cAAA,QAAMiB,UAAU,2CAA0C,qBAC1DlB,IAAAC,cAAA,cAAQ,gBAERD,IAAAC,cAAC+F,IAAW,CAAC9E,UAAU,QAEflB,IAAAC,cAAC2b,KAAM,CACLiG,QAAQ,gBACRvb,GAAG,aACHlC,MAAQjB,KAAKI,MAAMiM,YACnBvL,SAAUd,KAAK8c,iBAEX9c,KAAKI,MAAMgd,iBAIzBvgB,IAAAC,cAAA,cAAQ,YAAkBkD,KAAKI,MAAMsT,UAAU,MAAI1T,KAAKI,MAAM1F,SAAS,MAE7EmC,IAAAC,cAAA,OAAKiB,UAAU,aACflB,IAAAC,cAACsB,IAAc,CAACd,MAAO,CAACqV,WAAY3S,KAAKI,MAAM4e,YAAc,UAAY,YAGvEniB,IAAAC,cAAA,MAAIiB,UAAU,cAAa,oBAG3BlB,IAAAC,cAAA,SAAOiB,UAAU,uEACblB,IAAAC,cAAA,aACAD,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQ,GAAKc,UAAU,iBAAiBiC,KAAKI,MAAMkX,cAC1Dza,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQ,IAAM+C,KAAKI,MAAMmZ,iBAEhC1c,IAAAC,cAAA,aAAQkD,KAAKI,MAAMkT,gBAGvBzW,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YAAYD,UAAW3F,IAAMC,GAAE,qBAAAC,OAAuB+C,KAAKI,MAAM/C,SAAQ,KAAAJ,OAAI+C,KAAKI,MAAM1F,SAAQ,KAAAuC,OAAI+C,KAAKI,MAAMlD,eAAiBqG,MAAM,WAAU,oBAWvL,CAAApG,IAAA,qBAAA8D,MAAA,SAEkB4U,EAAWC,MAE7B,CAAA3Y,IAAA,oBAAA8D,MAAA,WAECjB,KAAKsM,iBACLtM,KAAKkU,aACLlU,KAAK8T,qBACNiL,EAvPuB,CAAStb,aCqZpBmc,kBAvYE,SAAAhgB,GAKf,SAAAggB,EAAY/f,GAAM,IAAAC,EAAAC,YAAAC,KAAA4f,GAChB9f,EAAAG,YAAAD,KAAAE,YAAA0f,GAAAzf,KAAAH,KAAMH,IAEN,IAAI4X,EAAiBhY,cACjBmF,EAAa,KACb4I,EAAQ,KACRhT,EAAa,KAoC4D,OAlCzEid,IACA7S,EAAc6S,EAAe7S,WAC7B4I,EAAQiK,EAAejK,MACvBhT,EAAaid,EAAejd,YAGhCsF,EAAKM,MAAQ,CACTwE,WAAYA,EACZpK,WAAYA,EACZgT,MAAOA,EACPtQ,cAAe2C,EAAMoM,MAAM7O,OAAO8O,aAClC7O,SAAUwC,EAAMoM,MAAM7O,OAAO6M,QAC7BvP,SAAUmF,EAAMoM,MAAM7O,OAAO8M,QAC7BU,kBAAmB/N,IAAAC,cAAC+R,KAAQ,CAAC1R,IAAK,GAAGN,IAAAC,cAACyR,KAAS,CAACU,MAAM,UAAS,iBAC/D0E,aAAc,KACdD,UAAW,KACXrH,YAAa,EACbG,iBAAiB,EACjB6M,YAAa,EACbJ,SAAU,EACV4G,eAAgB,KAChBC,aAAc,KACdC,YAAY,EACZC,eAAe,EACfzkB,SAAS,EACTqY,UAAW,IACXwJ,eAAgB,KAChB6C,qBAAqB,GAEzBngB,EAAK4M,mBAAqB5M,EAAK4M,mBAAmB9L,KAAIC,wBAAAf,KACtDA,EAAKwM,eAAiBxM,EAAKwM,eAAe1L,KAAIC,wBAAAf,KAC9CA,EAAKqU,gBAAkBrU,EAAKqU,gBAAgBvT,KAAIC,wBAAAf,KAChDA,EAAKia,uBAAyBja,EAAKia,uBAAuBnZ,KAAIC,wBAAAf,KAC9DA,EAAKoU,WAAapU,EAAKoU,WAAWtT,KAAIC,wBAAAf,KACtCA,EAAKogB,2BAA6BpgB,EAAKogB,2BAA2Btf,KAAIC,wBAAAf,KAAOA,EAqV9E,OApYciB,YAAA6e,EAAAhgB,GAiDdoB,YAAA4e,EAAA,EAAAziB,IAAA,WAAA8D,MAAA,SAGQO,GACPxB,KAAKqB,SAAQI,YAAA,GAAGD,EAAEE,OAAOC,KAAOH,EAAEE,OAAOT,UAC1C,CAAA9D,IAAA,yBAAA8D,MAAA,WAEuB,IAAAE,EAAAnB,KACtB5D,YAAQ,+CAAiD4D,KAAKI,MAAM/C,SAAW,IAAM2C,KAAKI,MAAMlD,cAAe8C,KAAKI,OAAO/D,KAAM,SAACC,GAChI,IAAIC,EAAeD,GAEQ,IAAvBC,EAAaC,OACTD,EAAake,WACbtZ,EAAKE,SAAS,CAAC2e,eAAe,IAIlC7e,EAAKE,SAAS,CAAC2e,eAAe,QAIrC,CAAA7iB,IAAA,aAAA8D,MAAA,WAEW,IAAAgM,EAAAjN,KAEV5D,YAAQ,oBAAsB4D,KAAKI,MAAM/C,SAAU2C,KAAKI,OAAO/D,KAAM,SAACC,GACpE,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAIiX,EAAalX,EAAakX,WAC1B5C,EAAWtU,EAAasU,SACxB6C,EAAYnX,EAAamX,UACzBuF,EAAW1c,EAAa2c,MAC5BjM,EAAK5L,SAAS,CACRoS,WAAYA,EACZ5C,SAAUA,EACV6C,UAAWA,EACXuF,SAAUA,GACX,mBAKV,CAAA9b,IAAA,iBAAA8D,MAAA,WAEe,IAAAoM,EAAArN,KACZ5D,YAAQ,mBAAoB4D,KAAKI,OAAO/D,KAAM,SAACC,GAC7C,IAAIC,EAAeD,EAEnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC/B,IAAIrB,EAAUoB,EAAapB,QACvBke,EAAc9c,EAAa8c,YAC3BwG,EAAiBtjB,EAAagQ,aAC9BuT,EAAevjB,EAAa4jB,cAC5BJ,GAAa,EACbK,EAAcjT,KAAO2S,GAAc1S,OAAO,cAC1CiT,EAAMlT,OAASC,OAAO,cAGtBiT,GAAOR,GACRxS,EAAKhM,SAAS,CAAEmL,iBAAiB,IAEhC6T,GAAOD,IACPL,GAAc,GAElB1S,EAAKhM,SAAS,CAACgL,YAAalR,EAASke,YAAaA,EAAawG,eAAgBA,EAAgBC,aAAcA,EAAcC,WAAYA,GAAa,WAChJ1S,EAAK6S,6BACL7S,EAAKX,4BAIhB,CAAAvP,IAAA,6BAAA8D,MAAA,WAE2B,IAAAwM,EAAAzN,KAE1B5D,YAAQ,iCAAmC4D,KAAKI,MAAM/C,SAAW,IAAM2C,KAAKI,MAAM1F,SAAW,IAAMsF,KAAKI,MAAMlD,cAAgB,IAAM8C,KAAKI,MAAMiM,YAAarM,KAAKI,OAAO/D,KAAM,SAACC,GACvK,IAAIC,EAAeD,GACQ,IAAvBC,EAAaC,QACMD,EAAa+jB,SACb,GACf7S,EAAKpM,SAAS,CAAC4e,qBAAqB,SAKrD,CAAA9iB,IAAA,kBAAA8D,MAAA,WAEgB,IAAA4M,EAAA7N,KACXxF,EAAawF,KAAKI,MAAM5F,WAkB5B,OAhBA4B,YAAQ,8BAAgC4D,KAAKI,MAAMlD,cAAgB,IAAM1C,EAAYwF,KAAKI,OAAO/D,KAAM,SAACC,GACtG,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAImX,EAAepX,EAAa0Y,WAEhCpH,EAAKxM,SAAS,CACRuS,UAAWrX,EAAaqX,UACxBD,aAAcA,SAIlB9F,EAAKxM,SAAS,CAACwS,iBAAiB,OAI/B,IAER,CAAA1W,IAAA,qBAAA8D,MAAA,WAEmB,IAAAiU,EAAAlV,KAEZ8N,EAAkBC,aAAW,SAAAC,GAAK,MAAK,CAC3CC,KAAM,CACJC,gBAAiBF,EAAMG,QAAQC,OAAOC,MACtC9K,MAAOyK,EAAMG,QAAQC,OAAOE,OAE9BpP,KAAM,CACJlB,SAAU,MANU+P,CAQpBQ,MAEEC,EAAiBT,aAAW,SAAAC,GAAK,MAAK,CAC1CS,KAAM,CACJC,qBAAsB,CACpBR,gBAAiBF,EAAMG,QAAQQ,WAAWC,YAHzBb,CAMnBc,MA4EF,OA1EFzS,YAAQ,mCAAqC4D,KAAKI,MAAM/C,SAAW,IAAM2C,KAAKI,MAAM1F,SAAY,IAAMsF,KAAKI,MAAMlD,cAAgB,IAAM8C,KAAKI,MAAM5F,WAAa,IAAMwF,KAAKI,MAAMiM,YAAarM,KAAKI,OAAO/D,KAAM,SAACC,GAC1M,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC7B,IAAIsS,EAIAA,EAAYvS,EAAa4c,YAAYxc,IACrC,SAAAC,GAAI,OAAIC,IAAAC,cAAC0R,EAAc,CAACQ,OAAK,EAAE7R,IAAKP,EAAK0N,aAAcvM,UAAU,cACrDlB,IAAAC,cAACgR,EAAe,CAAEmB,MAAM,QAAQrS,EAAKmQ,cACrClQ,IAAAC,cAACgR,EAAe,CAAEmB,MAAM,QACvBiG,EAAK9U,MAAM/C,SAAW,EACHR,IAAAC,cAAAD,IAAAgB,SAAA,KAECjB,EAAKwP,mBACFvP,IAAAC,cAAAD,IAAAgB,SAAA,KACIhB,IAAAC,cAAA,cAAQ,MAAW,IAACD,IAAAC,cAAA,QAAMiB,UAAU,gBAAgBnB,EAAKwP,mBAAyBvP,IAAAC,cAAA,YAIzFF,EAAKkY,kBACFjY,IAAAC,cAAAD,IAAAgB,SAAA,KACIhB,IAAAC,cAAA,cAAQ,MAAW,IAACD,IAAAC,cAAA,QAAMiB,UAAU,gBAAgBnB,EAAKkY,kBAAwBjY,IAAAC,cAAA,YAGxFF,EAAKoY,oBACFnY,IAAAC,cAAAD,IAAAgB,SAAA,KACIhB,IAAAC,cAAA,cAAQ,MAAW,IAACD,IAAAC,cAAA,QAAMiB,UAAU,eAAenB,EAAKoY,oBAA0BnY,IAAAC,cAAA,aAKtFD,IAAAC,cAAA,UAAKF,EAAKwP,oBAGlCvP,IAAAC,cAACgR,EAAe,CAAEmB,MAAM,UAAUrS,EAAKwc,KAAO,EAAIxc,EAAKwc,KAAO,IAC9Dvc,IAAAC,cAACgR,EAAe,CAAEmB,MAAM,UAClBpS,IAAAC,cAACC,IAAI,CAACC,GAAE,wBAAAC,OAA0BL,EAAK0N,aAAY,KAAArN,OAAIiY,EAAK9U,MAAM/C,SAAQ,KAAAJ,OAAIiY,EAAK9U,MAAM1F,SAAQ,KAAAuC,OAAIiY,EAAK9U,MAAMlD,gBAChHL,IAAAC,cAACiM,KAAO,CAACR,MAAM,iBAAiBqF,UAAU,cACtC/Q,IAAAC,cAAA,KAAGiB,UAAU,4BAA2B,oBA2BlEmX,EAAK7T,SAAS,CAACuJ,kBAAmBkE,GAAY,WAC1CoG,EAAK7T,SAAS,CAAC9F,SAAS,WAI9B2C,QAAQC,IAAI,sCAGX,IACR,CAAAhB,IAAA,SAAA8D,MAAA,WAMD,IAAKjB,KAAKI,MAAMwE,WACd,OAAQ/H,IAAAC,cAAC+E,IAAQ,CAAC7E,GAAI,WAGxB,IAAM8Q,EAAkBC,aAAW,SAAAC,GAAK,MAAK,CAC3CC,KAAM,CACJ1K,MAAOyK,EAAMG,QAAQC,OAAOE,OAE9BpP,KAAM,CACJlB,SAAU,MALU+P,CAOpBQ,MAGAgS,EAAyB,GACe,IAAxCvgB,KAAKI,MAAMwK,kBAAkBd,SAC7ByW,EAAyB1jB,IAAAC,cAAC2Y,KAAK,CAACtY,IAAK,EAAGwF,QAAQ,WAAU,sDACL9F,IAAAC,cAAA,cAAQ,aAAkB,yDAInF,IAYI0jB,EATWtQ,SAASlQ,KAAKI,MAAM6Y,UAW/BuH,EAAqB3jB,IAAAC,cAACiM,KAAO,CAACR,MAAM,6CAA6CqF,UAAU,gBAAe/Q,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YAAYD,UAAW3F,IAAMC,GAAI,8BAAgCgD,KAAKI,MAAM/C,SAAW,IAAK2C,KAAKI,MAAM1F,SAAW,IAAMsF,KAAKI,MAAMlD,cAAgB,KAAMqG,MAAM,aAAY,qBAEvT,IAAIkd,EAQJ,OANIA,EAAgB5jB,IAAAC,cAAC2F,IAAU,CAACE,QAAQ,KAAKD,UAAU,KAAK3E,UAAU,WAAUlB,IAAAC,cAAA,KAAGiB,UAAU,4BAA2B,QAAQ,yDAAsDlB,IAAAC,cAAA,KAAGiB,UAAU,4BAA2B,cAEtN,4EAAsElB,IAAAC,cAAA,cAAQ,eAAoB,MAM1GD,IAAAC,cAAA,OAAKiB,UAAU,aACXlB,IAAAC,cAAA,WAEAD,IAAAC,cAACkF,IAAa,CACFzG,QAASyE,KAAKI,MAAM7E,QACpB0G,QAAQ,UACRC,aAAa,UACbC,UAAU,UACVC,QAAQ,2BACRC,KAAK,OAGjBxF,IAAAC,cAACyS,KAAI,CAACC,WAAS,EAACC,QAAS,GACrB5S,IAAAC,cAACyS,KAAI,CAAC3S,MAAI,EAAC8S,GAAI,IACb7S,IAAAC,cAACwF,IAAK,CAACvE,UAAU,gBAEblB,IAAAC,cAAC4J,IAAM,CAAC3I,UAAU,cACFlB,IAAAC,cAAA,KAAGiB,UAAU,4BAA2B,yBAKxDlB,IAAAC,cAAC2F,IAAU,CAACE,QAAQ,KAAKD,UAAU,KAAK3E,UAAU,UAAS,qBACnCiC,KAAKI,MAAMsT,UAAU,MAAI1T,KAAKI,MAAM1F,SAAS,SAAOsF,KAAKI,MAAMuT,aAAa,mBAAc3T,KAAKI,MAAMiM,YAAY,eAAUrM,KAAKI,MAAMiZ,aAG3JkH,EACAE,EAEG5jB,IAAAC,cAAC6S,KAAK,CAAC5R,UAAU,+BACXlB,IAAAC,cAAC8S,KAAS,CAAC7R,UAAU,YACnBlB,IAAAC,cAAC+R,KAAQ,CAAE9Q,UAAU,YACnBlB,IAAAC,cAACgR,EAAe,CAAC/P,UAAU,sBAAsB6H,MAAM,MAAM,aAC7D/I,IAAAC,cAACgR,EAAe,CAAC/P,UAAU,sBAAsB6H,MAAM,MAAMqJ,MAAM,QAAO,YAC1EpS,IAAAC,cAACgR,EAAe,CAAC/P,UAAU,sBAAsB6H,MAAM,KAAKqJ,MAAM,QAAO,SACzEpS,IAAAC,cAACgR,EAAe,CAAC/P,UAAU,sBAAsB6H,MAAM,KAAKqJ,MAAM,QAAO,eAI7EpS,IAAAC,cAAC+S,KAAS,KAED7P,KAAKI,MAAMwK,oBAMhC/N,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YAAY5E,UAAU,cAAc2E,UAAW3F,IAAMC,GAAI,SAAUuG,MAAM,WAAU,cAChHvD,KAAKI,MAAM6f,qBACPpjB,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YAAY5E,UAAU,cAAc2E,UAAW3F,IAAMC,GAAI,oBAAsBgD,KAAKI,MAAM/C,SAAW,IAAK2C,KAAKI,MAAM1F,SAAW,IAAMsF,KAAKI,MAAMlD,cAAgB,IAAM8C,KAAKI,MAAMiM,YAAa9I,MAAM,WAAU,gBA1E3O,KADF,KAEC,KA8ELid,EACD3jB,IAAAC,cAACiM,KAAO,CAACR,MAAM,0BAA0BqF,UAAU,gBACnD/Q,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YAAY5E,UAAU,aAAa2E,UAAW3F,IAAMC,GAAI,8BAAgCgD,KAAKI,MAAM/C,SAAW,IAAK2C,KAAKI,MAAM1F,SAAW,IAAMsF,KAAKI,MAAMlD,cAAeqG,MAAM,WAAU,uBAgBtO,CAAApG,IAAA,oBAAA8D,MAAA,WAGCjB,KAAKqB,SAAS,CAAC9F,SAAS,IACxByE,KAAKmU,kBACLnU,KAAKkU,aACLlU,KAAKsM,iBACLtM,KAAK+Z,6BAEN6F,EApYc,CAASnc,cCkHXid,WAtIM,SAAA9gB,GACjB,SAAA8gB,EAAY7gB,GAAM,IAAAC,EAgB6B,OAhB7BC,YAAAC,KAAA0gB,IACd5gB,EAAAG,YAAAD,KAAAE,YAAAwgB,GAAAvgB,KAAAH,KAAMH,KACDO,MAAQ,CACTsQ,MAAO7Q,EAAM6Q,MACbT,aAAcpQ,EAAMoQ,aACpB0B,YAAa9R,EAAM8Q,KACnBtT,SAAUwC,EAAMxC,SAChB3C,SAAUmF,EAAMnF,SAChBwC,cAAe2C,EAAM3C,cACrBkT,UAAU,EACVQ,YAAY,EACZpU,OAAO,EACPsU,MAAO,0BAEXhR,EAAKiR,YAAcjR,EAAKiR,YAAYnQ,KAAIC,wBAAAf,KACxCA,EAAKkR,aAAelR,EAAKkR,aAAapQ,KAAIC,wBAAAf,KAC1CA,EAAKmR,UAAYnR,EAAKmR,UAAUrQ,KAAIC,wBAAAf,KAAOA,EAkH5C,OAnIciB,YAAA2f,EAAA9gB,GAmBhBoB,YAAA0f,EAAA,EAAAvjB,IAAA,aAAA8D,MAAA,SAEUA,EAAOiQ,GACd,IAAIC,EAAaC,KAAKC,IAAI,GAAIH,GAAa,GAC3C,OAAOE,KAAKE,MAAMrQ,EAAQkQ,GAAcA,IAC3C,CAAAhU,IAAA,cAAA8D,MAAA,SAEWO,GAIR,GAAc,UAAVA,EAAErE,IAAgB,CAGpB,GAAGoU,MAAM/P,EAAEE,OAAOT,OAEf,YADA/C,QAAQC,IAAI,mBAMd,IAAIqT,EAAUC,WAAWjQ,EAAEE,OAAOT,OAElC,GAAIuQ,EAAUxR,KAAKI,MAAMyQ,SAEtB,YADA3S,QAAQC,IAAI,oCAAsC6B,KAAKI,MAAMyQ,UAI/D7Q,KAAKqB,SAAS,CAAC4O,aAAczO,EAAEE,OAAOyB,KAGtCnD,KAAKgR,aAAaQ,QAGjBxR,KAAKqB,SAAS,CAAC+O,UAAU,MAEjC,CAAAjT,IAAA,eAAA8D,MAAA,SAEYuQ,GAAQ,IAAArQ,EAAAnB,KAEjB,GAAKwR,EAAL,CAKA,IAAIxB,EAAa,CACbC,aAAejQ,KAAKI,MAAM6P,aAC1B5S,SAAW2C,KAAKI,MAAM/C,SACtB3C,SAAWsF,KAAKI,MAAM1F,SACtBwC,cAAe8C,KAAKI,MAAMlD,cAC1ByU,YAAaH,GAGjBxR,KAAKqB,SAAS,CAACuP,YAAY,IAE3BpS,YAAS,0BAA2BwR,GAAY3T,KAAM,SAACC,IAE1B,IADRA,EACFE,OACb2E,EAAKtB,MAAM+R,YAAYzQ,EAAKtB,MAAMoQ,cAClC9O,EAAKE,SAAS,CAAC+O,UAAU,EAAM5T,OAAO,EAAOoU,YAAY,MAKzDzP,EAAKE,SAAS,CAAC+O,UAAU,EAAO5T,OAAO,EAAMoU,YAAY,IACzD1S,QAAQC,IAAI,oCAxBd6B,KAAKqB,SAAS,CAAC7E,OAAO,MA4B/B,CAAAW,IAAA,YAAA8D,MAAA,SAESO,GAERtD,QAAQC,IAAI,sBACZ6B,KAAKqB,SAAS,CAAC+O,UAAU,MAE1B,CAAAjT,IAAA,kBAAA8D,MAAA,SAEe4Q,GACV,GAAe,KAAXA,EACA,OAAOJ,WAAWI,GAAQC,QAAQ,KAE3C,CAAA3U,IAAA,SAAA8D,MAAA,WAGU,IAAAgM,EAAAjN,KAEL,OACInD,IAAAC,cAAAD,IAAAgB,SAAA,KACAhB,IAAAC,cAACmG,IAAS,CAACzG,MAAOwD,KAAKI,MAAM5D,MAAOuV,SAAU,SAACC,GAAS/E,EAAI,MAAAhQ,OAAOgQ,EAAKpN,MAAM6Q,QAAWsB,GACjFC,WAAY,CACRC,UAAW,GAEfvQ,KAAM3B,KAAKH,MAAMoQ,aACjB9M,GAAInD,KAAKH,MAAMoQ,aACf5M,WAAW,EACXG,SAAUxD,KAAKI,MAAMwQ,WACrB7S,UAAU,0BACVqU,aAAcpS,KAAKqS,gBAAgBrS,KAAKI,MAAMuR,aAC9CW,OAAQtS,KAAKiR,UACbsB,QAASvS,KAAK+Q,YACJjQ,SAAUd,KAAKH,MAAM2S,aACrBC,QAASzS,KAAKH,MAAM6S,cAE9B7V,IAAAC,cAAA,OAAKyF,IAAKvC,KAAKI,MAAM0Q,MAAQxT,MAAO,CAACqV,WAAY3S,KAAKI,MAAMgQ,SAAW,UAAY,UAAY5N,IAAI,QACnG3F,IAAAC,cAACsB,IAAc,CAAEuD,KAAI,QAAA1E,OAAU+C,KAAKH,MAAM6Q,OAASpT,MAAO,CAACqV,WAAY3S,KAAKI,MAAMwQ,WAAa,UAAY,eAG1H,CAAAzT,IAAA,oBAAA8D,MAAA,gBAIEyf,EAnIc,CAASjd,cCyVfkd,GAjVE,SAAA/gB,GAIf,SAAA+gB,EAAY9gB,GAAM,IAAAC,EAgCuC,OAhCvCC,YAAAC,KAAA2gB,IAChB7gB,EAAAG,YAAAD,KAAAE,YAAAygB,GAAAxgB,KAAAH,KAAMH,KAgMRoT,WAAa,SAAC9P,GAAE,OAAKrD,EAAA,MAAA7C,OAAWkG,IAAM+P,QAAQC,SA/L5CrT,EAAKM,MAAQ,CACTyH,gBAAiBpI,cACjBpC,SAAUwC,EAAMoM,MAAM7O,OAAO6M,QAC7BvP,SAAUmF,EAAMoM,MAAM7O,OAAO8M,QAC7BhN,cAAe2C,EAAMoM,MAAM7O,OAAO8O,aAClCoH,cAAezW,IAAAC,cAAA,UAAID,IAAAC,cAAA,YACnBuP,YAAa,EACbsF,YAAa,EACb1B,aAAc,EACdsD,WAAY,GACZnD,SAAU,GACVoD,WAAa,GACbC,WAAY,EACZ5C,SAAU,EACV6C,UAAW,GACXC,aAAc,GACdE,iBAAiB,EACjBtY,SAAS,GAEbuE,EAAKgU,eAAiBhU,EAAKgU,eAAelT,KAAIC,wBAAAf,KAC9CA,EAAKwM,eAAiBxM,EAAKwM,eAAe1L,KAAIC,wBAAAf,KAC9CA,EAAKiU,kBAAoBjU,EAAKiU,kBAAkBnT,KAAIC,wBAAAf,KACpDA,EAAK0S,aAAe1S,EAAK0S,aAAa5R,KAAIC,wBAAAf,KAC1CA,EAAKkR,aAAelR,EAAKkR,aAAapQ,KAAIC,wBAAAf,KAC1CA,EAAKiR,YAAcjR,EAAKiR,YAAYnQ,KAAIC,wBAAAf,KACxCA,EAAKkU,kBAAoBlU,EAAKkU,kBAAkBpT,KAAIC,wBAAAf,KACpDA,EAAKmU,YAAcnU,EAAKmU,YAAYrT,KAAIC,wBAAAf,KACxCA,EAAK8R,YAAc9R,EAAK8R,YAAYhR,KAAIC,wBAAAf,KACxCA,EAAK4S,YAAc5S,EAAK4S,YAAY9R,KAAIC,wBAAAf,KACxCA,EAAKoU,WAAapU,EAAKoU,WAAWtT,KAAIC,wBAAAf,KACtCA,EAAKqU,gBAAkBrU,EAAKqU,gBAAgBvT,KAAIC,wBAAAf,KAAOA,EA0SxD,OA9UciB,YAAA4f,EAAA/gB,GAqCdoB,YAAA2f,EAAA,EAAAxjB,IAAA,WAAA8D,MAAA,SAGQO,GACPxB,KAAKqB,SAAQI,YAAA,GAAGD,EAAEE,OAAOC,KAAOH,EAAEE,OAAOT,UAC1C,CAAA9D,IAAA,eAAA8D,MAAA,SAEYO,GAET,IAAM+R,EAAavT,KAAKI,MAAMmT,WAC9BA,EAAW/R,EAAEE,OAAOC,MAAQH,EAAEE,OAAOT,MACrCjB,KAAKqB,SAAS,CAAEkS,iBACnB,CAAApW,IAAA,oBAAA8D,MAAA,SAEiBgP,EAAcU,GAC5B,IAAM4C,EAAavT,KAAKI,MAAMmT,WAG9B,OAFAA,EAAWtD,GAAgBU,EAC3B3Q,KAAKqB,SAAS,CAAEkS,gBACT,IACV,CAAApW,IAAA,cAAA8D,MAAA,SAEWC,GACVA,EAAMQ,OAAO4S,WACd,CAAAnX,IAAA,cAAA8D,MAAA,SAEWO,GAIR,GAAc,UAAVA,EAAErE,IAAgB,CAGpB,GAAGoU,MAAM/P,EAAEE,OAAOT,OAEf,YADA/C,QAAQC,IAAI,mBAMd,GAFcsT,WAAWjQ,EAAEE,OAAOT,OAEpBjB,KAAKI,MAAMyQ,SAEtB,YADA3S,QAAQC,IAAI,oCAAsC6B,KAAKI,MAAMyQ,UAI/D7Q,KAAKqB,SAAS,CAAC4O,aAAczO,EAAEE,OAAOyB,KACtCnD,KAAKgR,aAAaxP,EAAEE,OAAOyB,OAElC,CAAAhG,IAAA,cAAA8D,MAAA,SAEWO,GACR,IAAM+R,EAAavT,KAAKI,MAAMmT,WAC9BA,EAAW/R,EAAEE,OAAOC,MAAQH,EAAEE,OAAOT,MAErCjB,KAAKqB,SAAS,CAAEkS,iBACnB,CAAApW,IAAA,oBAAA8D,MAAA,SAEiBgP,EAAcsE,GACtB,IAAMnE,EAAWpQ,KAAKI,MAAMgQ,SAC5BA,EAAQ,QAAAnT,OAASgT,IAAkBsE,EACnCvU,KAAKqB,SAAS,CAAE+O,eACzB,CAAAjT,IAAA,cAAA8D,MAAA,SAEWgP,GACR,IAAIuD,EAAaxT,KAAKI,MAAMoT,WACxBgB,EAAUpF,OAAOC,KAAKmE,GAAY1J,OAEtCsF,OAAOC,KAAKmE,GAAYiB,QAAQ,SAAStX,GACnC,IAAIuX,EAAOxE,SAAS/S,GAAO,EAEzB,GAAI8S,IAAiBuD,EAAWrW,QAAhC,CAEE,IAAIwX,EAASnB,EAAWkB,GAEpBA,EAAOF,GACPhE,SAASC,eAAe5G,OAAO8K,IAASxB,aAUzD,CAAAhW,IAAA,eAAA8D,MAAA,SAEYgP,GAAa,IAAA9O,EAAAnB,KAChB4U,EAAQ5U,KAAKI,MAAMmT,WAAWtD,GAC9BD,EAAa,CACbC,aAAeA,EACf5S,SAAU2C,KAAKI,MAAM/C,SACrB3C,SAAUsF,KAAKI,MAAM1F,SACrBwC,cAAe8C,KAAKI,MAAMlD,cAC1ByU,YAAaiD,GAGjBpW,YAAS,0BAA2BwR,GAAY3T,KAAM,SAACC,GAErD,OAA2B,IADRA,EACFE,OACb2E,EAAKyQ,YAAY3B,IACV,IAEP/R,QAAQC,IAAI,6BACL,OAGlB,CAAAhB,IAAA,iBAAA8D,MAAA,WAEe,IAAAgM,EAAAjN,KACZ5D,YAAQ,mBAAoB4D,KAAKI,OAAO/D,KAAM,SAACC,GAC7C,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC/B,IAAIrB,EAAUoB,EAAapB,QAC3B8R,EAAK5L,SAAS,CAACgL,YAAalR,SAInC,CAAAgC,IAAA,aAAA8D,MAAA,WAEW,IAAAoM,EAAArN,KAEV5D,YAAQ,oBAAsB4D,KAAKI,MAAM/C,SAAU2C,KAAKI,OAAO/D,KAAM,SAACC,GACpE,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAIiX,EAAalX,EAAakX,WAC1B5C,EAAWtU,EAAasU,SACxB6C,EAAYnX,EAAamX,UAC7BrG,EAAKhM,SAAS,CACRoS,WAAYA,EACZ5C,SAAUA,EACV6C,UAAWA,SAItB,CAAAvW,IAAA,kBAAA8D,MAAA,WAEgB,IAAAwM,EAAAzN,KACXxF,EAAawF,KAAKI,MAAMyH,gBAAgBrN,WAC5C4B,YAAQ,8BAAgC4D,KAAKI,MAAMlD,cAAgB,IAAM1C,EAAYwF,KAAKI,OAAO/D,KAAM,SAACC,GACtG,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAImX,EAAepX,EAAa0Y,WAEhCxH,EAAKpM,SAAS,CACRsS,aAAcA,GACf,WAEGlG,EAAKqG,wBAGXrG,EAAKpM,SAAS,CAACwS,iBAAiB,QAMvC,CAAA1W,IAAA,iBAAA8D,MAAA,WAIe,IAAA4M,EAAA7N,KAEdxB,YAAS,uBAAwBwB,KAAKI,OAAO/D,KAAM,SAACC,GAC9C,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE1B,IAAI4T,EAAWvC,EAAKzN,MAAMgQ,SACtB+E,EAActH,EAAKzN,MAAMmT,WACzBC,EAAa3F,EAAKzN,MAAMoT,WAC7BpE,OAAOC,KAAK9S,EAAa6Y,SAASX,QAAQ,SAAStX,GAE/C,IAAI8S,EAAe1T,EAAa6Y,QAAQjY,GAAK8S,aACzC2E,EAAQrY,EAAa6Y,QAAQjY,GAAKyX,MAEtCpB,EAAWrW,GAAO8S,EAEb2E,IACDA,EAAQ,IAERO,EAAYlF,GAAgB2E,EAO7BxE,EAAQ,QAAAnT,OAASgT,KAAkB,IAI5C,IAAInB,EAAYvS,EAAa6Y,QAAQzY,IACnC,SAACC,EAAM8T,GAAK,OAAI7T,IAAAC,cAAA,MAAIK,IAAKP,EAAKyY,YACtBxY,IAAAC,cAAA,UAAKF,EAAKqT,cACVpT,IAAAC,cAAA,UAAKF,EAAK0Y,sBACVzY,IAAAC,cAAA,UAEAD,IAAAC,cAAC4jB,GAAe,CACP3O,SAAU,SAACC,GAASnE,EAAI,MAAA5Q,OAAOyT,IAAWsB,GAC1CrQ,KAAM/E,EAAKqT,aACXA,aAAgBrT,EAAKqT,aACrB5S,SAAYwQ,EAAKzN,MAAM/C,SACvB3C,SAAYmT,EAAKzN,MAAM1F,SACvBwC,cAAiB2Q,EAAKzN,MAAMlD,cAC5BiG,GAAIvG,EAAKqT,aACTU,KAAM9C,EAAKzN,MAAMmT,WAAW3W,EAAKqT,cACjCuC,aAAc3E,EAAK2E,aACnBE,YAAa7E,EAAK6E,YAClBd,YAAa/D,EAAK+D,YAClBW,QAAS1E,EAAKkD,cAGjBlU,IAAAC,cAACsB,IAAc,CAAEuD,KAAI,QAAA1E,OAAUL,EAAKqT,cAAgB3S,MAAO,CAACqV,WAAY9E,EAAKzN,MAAMgQ,SAASxT,EAAKqT,cAAgB,UAAY,gBAMnJpC,EAAKxM,SAAS,CAAEiS,cAAgBxE,EAAWvT,SAAS,SAGhD2C,QAAQC,IAAI,uCAGnB,CAAAhB,IAAA,SAAA8D,MAAA,WAID,IAAIuU,EAAsB,GAQ1B,OAPmC,IAA/BxV,KAAKI,MAAMyT,kBACX2B,EAAsB3Y,IAAAC,cAAC2Y,KAAK,CAACtY,IAAK,EAAGwF,QAAQ,UACzC9F,IAAAC,cAAC2Y,KAAMC,QAAO,KAAC,oCAA6C,qHAOpE7Y,IAAAC,cAAA,OAAKiB,UAAU,aACXlB,IAAAC,cAAA,WAEAD,IAAAC,cAACkF,IAAa,CACFzG,QAASyE,KAAKI,MAAM7E,QACpB0G,QAAQ,UACRC,aAAa,UACbC,UAAU,UACVC,QAAQ,2BACRC,KAAK,OAGjBxF,IAAAC,cAAA,OAAKiB,UAAU,QACblB,IAAAC,cAAA,OAAKiB,UAAU,eAEXlB,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,WAAWD,UAAW3F,IAAMC,GAAE,qBAAAC,OAAuB+C,KAAKI,MAAM/C,SAAQ,KAAAJ,OAAI+C,KAAKI,MAAM1F,SAAQ,KAAAuC,OAAI+C,KAAKI,MAAMlD,eAAiBqG,MAAM,WAAU,cAC3K1G,IAAAC,cAAA,QAAMiB,UAAU,4BAA2B,mCAA8BiC,KAAKI,MAAMuT,aAAa,MAAG9W,IAAAC,cAAA,cAAQ,UAAe,IAAEkD,KAAKI,MAAMsT,UAAU,OAAK1T,KAAKI,MAAM1F,SAAS,KAAEmC,IAAAC,cAAA,cAAQ,eAAiB,KAAGkD,KAAKI,MAAMiM,YAAY,MAGtOxP,IAAAC,cAAA,OAAKiB,UAAU,aACflB,IAAAC,cAAA,OAAKiB,UAAU,cAAc,oIAG3BlB,IAAAC,cAAA,MAAIiB,UAAU,cAAa,oBAE1ByX,EAED3Y,IAAAC,cAAA,SAAOiB,UAAU,6CACflB,IAAAC,cAAA,aACED,IAAAC,cAAA,MAAIiB,UAAU,iBACZlB,IAAAC,cAAA,MAAI8I,MAAM,MAAK,aACf/I,IAAAC,cAAA,MAAI8I,MAAM,OAAM,UAChB/I,IAAAC,cAAA,MAAI8I,MAAM,MAAK,UAGnB/I,IAAAC,cAAA,aACGkD,KAAKI,MAAMkT,gBAIhBzW,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YAAYD,UAAW3F,IAAMC,GAAE,qBAAAC,OAAuB+C,KAAKI,MAAM/C,SAAQ,KAAAJ,OAAI+C,KAAKI,MAAM1F,SAAQ,KAAAuC,OAAI+C,KAAKI,MAAMlD,eAAiBqG,MAAM,WAAU,oBAWvL,CAAApG,IAAA,oBAAA8D,MAAA,WAGCjB,KAAKsM,iBACLtM,KAAKkU,aACLlU,KAAKmU,sBAENwM,EA9Uc,CAASld,uBCoBXmd,GA3BQ,SAAHrmB,GAAA,IAAKsmB,EAAgBtmB,EAAhBsmB,iBAAkB1lB,EAAOZ,EAAPY,QAAS2lB,EAAWvmB,EAAXumB,YAAaC,EAAcxmB,EAAdwmB,eAAgBC,EAAUzmB,EAAVymB,WAAU,OACvFnkB,IAAAC,cAAA,WACQD,IAAAC,cAACyS,KAAI,CAACC,WAAS,EAACC,QAAS,GACrB5S,IAAAC,cAACyS,KAAI,CAAC3S,MAAI,EAAC8S,GAAI,IACf7S,IAAAC,cAACwF,IAAK,CAACvE,UAAU,gBAEblB,IAAAC,cAAC4J,IAAM,CAAC3I,UAAU,kBACFlB,IAAAC,cAAA,KAAGiB,UAAU,kBAAiB,SAK9ClB,IAAAC,cAAC2F,IAAU,CAACE,QAAQ,KAAKD,UAAU,KAAK3E,UAAU,gBAC/ClB,IAAAC,cAAA,QAAMQ,MAAO,CAACqV,WAAYkO,EAAmB,UAAY,WACpDhkB,IAAAC,cAAA,cAAQ,mBAAwB,IAAE3B,EAAQ,IAA2B,IAAzB+U,SAAS8Q,GAAoB,kBAAiB,GAAG,IAACnkB,IAAAC,cAAA,cAAQ,oBAAyB,IAAEgkB,EAAY,KAAEjkB,IAAAC,cAAA,QAAMiB,UAAU,YAAW,IAAEgjB,GAAsB,KAEvMlkB,IAAAC,cAAA,QAAMQ,MAAO,CAACqV,WAAYkO,EAAmB,SAAW,YACnDhkB,IAAAC,cAAA,OAAKyF,IAAI,sBAAsBqD,MAAM,OAAQpD,IAAI,mBC6Q9Dye,GA1RS,SAAArhB,GAEtB,SAAAqhB,EAAYphB,GAAM,IAAAC,EAuByC,OAvBzCC,YAAAC,KAAAihB,IAEdnhB,EAAAG,YAAAD,KAAAE,YAAA+gB,GAAA9gB,KAAAH,KAAMH,KAgOVid,gBAAkB,SAACtb,GACf1B,EAAKuB,SAAS,CAAC0G,WAAYvG,EAAEE,OAAOT,OAAQ,WACxCnB,EAAKid,yBAjOTjd,EAAKM,MAAQ,CACT/C,SAAUwC,EAAMoM,MAAM7O,OAAO6M,QAC7BvP,SAAUmF,EAAMoM,MAAM7O,OAAO8M,QAC7BnC,WAAY,EACZ2L,UAAW,KACXsJ,cAAe,KACfC,aAAc,EACdC,eAAgB,KAChBC,qBAAsB,KACtBC,eAAgB,KAChB7hB,SAAS,GAIbuE,EAAKud,gBAAkBvd,EAAKud,gBAAgBzc,KAAIC,wBAAAf,KAChDA,EAAKoU,WAAapU,EAAKoU,WAAWtT,KAAIC,wBAAAf,KACtCA,EAAKid,oBAAsBjd,EAAKid,oBAAoBnc,KAAIC,wBAAAf,KACxDA,EAAKwM,eAAiBxM,EAAKwM,eAAe1L,KAAIC,wBAAAf,KAC9CA,EAAKwd,aAAexd,EAAKwd,aAAa1c,KAAIC,wBAAAf,KAC1CA,EAAKyd,cAAgBzd,EAAKyd,cAAc3c,KAAIC,wBAAAf,KAC5CA,EAAK0d,gBAAkB1d,EAAK0d,gBAAgB5c,KAAIC,wBAAAf,KAAOA,EA6P1D,OAtRqBiB,YAAAkgB,EAAArhB,GA2BrBoB,YAAAigB,EAAA,EAAA9jB,IAAA,aAAA8D,MAAA,WAEY,IAAAE,EAAAnB,KAEX5D,YAAQ,oBAAsB4D,KAAKI,MAAM/C,SAAU2C,KAAKI,OAAO/D,KAAM,SAACC,GACpE,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAIkX,EAAYnX,EAAamX,UAC7BvS,EAAKE,SAAS,CACRqS,UAAWA,SAItB,CAAAvW,IAAA,kBAAA8D,MAAA,WAEgB,IAAAgM,EAAAjN,KAEf5D,YAAQ,6BAA+B4D,KAAKI,MAAM6P,aAAcjQ,KAAKI,OAAO/D,KAAM,SAACC,GACjF,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC9B,IAAIihB,EAAelhB,EAAamhB,UAAU,GAE3CzQ,EAAK5L,SAAS,CACZ2b,cAAgBS,EAAanI,sBAC1B,mBAKV,CAAAnY,IAAA,iBAAA8D,MAAA,WAEe,IAAAoM,EAAArN,KACd5D,YAAQ,mBAAoB4D,KAAKI,OAAO/D,KAAM,SAACC,GAC7C,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC/B,IAAIrB,EAAUoB,EAAapB,QAC3BkS,EAAKhM,SAAS,CAAC0G,WAAY5M,GAAU,WACjCkS,EAAKmQ,kBACLnQ,EAAK0P,6BAMhB,CAAA5f,IAAA,mBAAA8D,MAAA,SAEkB0c,GACb,OAAQA,EAAShhB,IACV,SAACC,EAAM8T,GAAK,OAAI7T,IAAAC,cAAAD,IAAAgB,SAAA,KAAEhB,IAAAC,cAAA,MAAI8I,MAAM,KAAK7H,UAAU,yBAAyB2S,QAE9E,CAAAvT,IAAA,gBAAA8D,MAAA,SAEa9D,EAAKygB,GAEjB,OAAI1N,SAASlQ,KAAKI,MAAM/C,UAETugB,IAKlB,CAAAzgB,IAAA,cAAA8D,MAAA,SAEa9D,EAAK4Z,EAAQ1Z,GACrB,IAAIud,EAAU,GAQd,OAPAxL,OAAOC,KAAK0H,GAAQtC,QAAQ,SAAStX,GACnC,IAAI4gB,EAAQ,GACRtM,WAAWsF,EAAO5Z,IAAQ,GAAKE,GAAY,IACvC0gB,EAAQ,kBAEdnD,EAAQ3D,KAAKpa,IAAAC,cAAA,OAAKiB,UAAS,UAAAd,OAAYE,EAAG,KAAAF,OAAI8gB,IAAUhH,EAAO5Z,OAE5Dyd,IACV,CAAAzd,IAAA,eAAA8D,MAAA,SAEY6c,GACX,IAAIlD,EAAU,GAkDd,OAhDAxL,OAAOC,KAAKyO,GAAMrJ,QAAQ,SAAStX,GACjC,IAAM+jB,EAAU9R,OAAOC,KAAKyO,GAAMhU,OAC9B+Q,EAAUiD,EAAK3gB,GAEf4gB,EAAQ,GAGRA,EADQ,MAAR5gB,EACQ,yBAEA,uBAGR+S,SAASlQ,KAAKI,MAAM/C,UAQpB6S,SAASlQ,KAAKI,MAAM/C,WAAa,EAC7B6S,SAAS/S,IAAQ,EACjByd,EAAQ3D,KAAKpa,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQE,GAAOY,UAAWggB,GAAQ/d,KAAKud,cAAcpgB,EAAK0d,KAE1E1d,EAAO+jB,EAAU,EACjBtG,EAAQ3D,KAAKpa,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQE,GAAOY,UAAWggB,GAAQ/d,KAAKmhB,YAAYhkB,EAAK0d,EAAS3K,SAASlQ,KAAKI,MAAM/C,cAErGoU,WAAWoJ,GAAW,IACxBkD,GAAS,gBACXnD,EAAQ3D,KAAKpa,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQE,GAAOY,UAAWggB,GAAQ/d,KAAKud,cAAcpgB,EAAK0d,MAIlF3K,SAAS/S,IAAQ,EACjByd,EAAQ3D,KAAKpa,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQE,GAAOY,UAAWggB,GAAQ/d,KAAKud,cAAcpgB,EAAK0d,KAE1E1d,EAAO+jB,EAAU,EACjBtG,EAAQ3D,KAAKpa,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQE,GAAOY,UAAWggB,GAAQ/d,KAAKmhB,YAAYhkB,EAAK0d,EAAS3K,SAASlQ,KAAKI,MAAM/C,aAEzGud,EAAQ3D,KAAKpa,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQE,GAAOY,UAAWggB,GAAO,OAMjEnd,KAAKZ,OAGC4a,IACT,CAAAzd,IAAA,uBAAA8D,MAAA,SACoB0Z,GAAM,IAAAlN,EAAAzN,KACzB,OAAQ2a,EAAMhe,IACd,SAACC,EAAM8T,GAAK,OAAI7T,IAAAC,cAAAD,IAAAgB,SAAA,KAAEhB,IAAAC,cAAA,MAAIK,IAAKP,EAAKyY,YAAa5H,EAAK6P,aAAa1gB,SAEhE,CAAAO,IAAA,sBAAA8D,MAAA,WAEoB,IAAA4M,EAAA7N,KAIX3C,EAAW2C,KAAKI,MAAM/C,SACtB3C,EAAWsF,KAAKI,MAAM1F,SACtBsjB,EAAM,iCACVhe,KAAKqB,SAAS,CAAC9F,SAAS,IAEpB8B,EAAW,IACZ2gB,EAAM,uCAET5hB,YAAQ4hB,EAAM3gB,EAAW,IAAM3C,EAAW,IAAKsF,KAAKI,OAAO/D,KAAM,SAACC,GAChE,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAIme,EAAQpe,EAAaoe,MACrBgD,EAAWphB,EAAaohB,SACxBM,EAAaphB,IAAAC,cAAA,MAAI8I,MAAM,KAAK7H,UAAU,aAAY,QAElD8P,EAAKzN,MAAM/C,SAAW,IACtB4gB,EAAa,IAEjB,IAAIjH,EAASna,IAAAC,cAAA,SAAOiB,UAAU,iBAC1BlB,IAAAC,cAAA,aACED,IAAAC,cAAA,MAAIiB,UAAU,IACZlB,IAAAC,cAAA,MAAI8I,MAAM,KAAK7H,UAAU,aAAY,aACrClB,IAAAC,cAAA,MAAI8I,MAAM,MAAM7H,UAAU,aAAY,yBACtClB,IAAAC,cAAA,MAAI8I,MAAM,KAAK7H,UAAU,aAAY,OACnC8P,EAAKqQ,iBAAiBP,GACtBM,IAGNphB,IAAAC,cAAA,aACG+Q,EAAKsQ,qBAAqBxD,KAI/BC,EAAU,GACVxL,OAAOC,KAAKsO,GAAUlJ,QAAQ,SAAStX,GACvCyd,EAAQ3D,KAAKpa,IAAAC,cAAAD,IAAAgB,SAAA,KAAEhB,IAAAC,cAAA,QAAMiB,UAAU,qBAAqBZ,IAAG,OAAAF,OAASE,IAAO,IAAEA,EAAI,KAAGwgB,EAASxgB,IAAY,QAMvG0Q,EAAKxM,SAAS,CAAC0b,oBAAqB/F,EAAQkG,eAAgBtC,EAASrf,SAAS,SAMvF,CAAA4B,IAAA,kBAAA8D,MAAA,WAKC,IAFA,IAAImd,EAAgB,GAEXC,EAAI,EAAGA,GAAKre,KAAKI,MAAM2H,WAAYsW,IACxCD,EAAcnH,KAAKoH,GAEvB,IAAMC,EAAQF,EAAczhB,IAAI,SAACC,EAAM8T,GAAK,OAAI7T,IAAAC,cAAC0I,IAAQ,CAACrI,IAAKuT,EAAOzP,MAAOrE,GAAM,WAASA,KAE5FoD,KAAKqB,SAAS,CAAC+b,eAAgBkB,MAEhC,CAAAnhB,IAAA,SAAA8D,MAAA,WAWC,IAAIsd,EAAc,KAKlB,MAJ6B,MAAzBve,KAAKI,MAAMoe,YACXD,EAAc1hB,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YAAY5E,UAAU,cAAc2E,UAAW3F,IAAMC,GAAE,wBAAAC,OAA0B+C,KAAKI,MAAM/C,SAAQ,KAAAJ,OAAI+C,KAAKI,MAAM1F,SAAQ,KAAAuC,OAAI+C,KAAKI,MAAM5F,YAAc+I,MAAM,WAAU,eAKxN1G,IAAAC,cAAA,OAAKiB,UAAU,aACVlB,IAAAC,cAAA,OAAKiB,UAAU,QACZlB,IAAAC,cAAA,OAAKiB,UAAU,eACTlB,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,WAAWD,UAAW3F,IAAMC,GAAE,SAAYuG,MAAM,WAAU,cACxF1G,IAAAC,cAAA,QAAMiB,UAAU,4CACZlB,IAAAC,cAAA,cAAQ,uBAA4B,KAAGkD,KAAKI,MAAMuT,aAAa,KAC/D9W,IAAAC,cAAA,cAAS,UAAe,IAAEkD,KAAKI,MAAMsT,UAAU,OAAK1T,KAAKI,MAAM1F,SAAS,IACxEmC,IAAAC,cAAA,UAASiB,UAAU,QAAO,eAAiB,MAAIiC,KAAKI,MAAM2H,aAKpElL,IAAAC,cAACsB,IAAc,CAACd,MAAO,CAACqV,WAAY3S,KAAKI,MAAM7E,QAAU,UAAY,YACrEsB,IAAAC,cAAA,OAAKiB,UAAU,aACLlB,IAAAC,cAAA,OAAKiB,UAAU,kBACViC,KAAKI,MAAM8c,gBAEfld,KAAKI,MAAM2c,qBAGjBwB,MAMd,CAAAphB,IAAA,oBAAA8D,MAAA,WAGCjB,KAAKkU,aACLlU,KAAKsM,qBAIN2U,EAtRqB,CAASxd,aCqIlB2d,WAzIU,SAAAxhB,GAGrB,SAAAwhB,EAAYvhB,GAAM,IAAAC,EAc6B,OAd7BC,YAAAC,KAAAohB,IAEdthB,EAAAG,YAAAD,KAAAE,YAAAkhB,GAAAjhB,KAAAH,KAAMH,KACDO,MAAQ,CACTsQ,MAAO7Q,EAAM6Q,MACbJ,WAAYzQ,EAAM8Q,KAClBP,UAAU,EACVQ,YAAY,EACZpU,OAAO,EACPqU,SAAU,EACVC,MAAO,0BAEXhR,EAAKiR,YAAcjR,EAAKiR,YAAYnQ,KAAIC,wBAAAf,KACxCA,EAAKkR,aAAelR,EAAKkR,aAAapQ,KAAIC,wBAAAf,KAC1CA,EAAKmR,UAAYnR,EAAKmR,UAAUrQ,KAAIC,wBAAAf,KAAOA,EAqH5C,OAtIkBiB,YAAAqgB,EAAAxhB,GAmBpBoB,YAAAogB,EAAA,EAAAjkB,IAAA,aAAA8D,MAAA,SAEUA,EAAOiQ,GACd,IAAIC,EAAaC,KAAKC,IAAI,GAAIH,GAAa,GAC3C,OAAOE,KAAKE,MAAMrQ,EAAQkQ,GAAcA,IAC3C,CAAAhU,IAAA,cAAA8D,MAAA,SAEWO,GAIR,GAHAtD,QAAQC,IAAIqD,EAAErE,KAGA,UAAVqE,EAAErE,IAAgB,CAGpB,GAAGoU,MAAM/P,EAAEE,OAAOT,OAGf,OAFA/C,QAAQC,IAAI,wBACZ6B,KAAKqB,SAAS,CAAC7E,OAAO,IAMxB,IAAIgV,EAAUC,WAAWjQ,EAAEE,OAAOT,OAElC,GAAIuQ,EAAU,EAIX,OAHAtT,QAAQC,IAAI,oCAAsC6B,KAAKI,MAAMyQ,UAC7D7Q,KAAKH,MAAM6R,wBACX1R,KAAKqB,SAAS,CAAC7E,OAAO,IAIxBwD,KAAKqB,SAAS,CAAC4O,aAAczO,EAAEE,OAAOyB,KAGtCnD,KAAKgR,aAAaQ,QAGjBxR,KAAKqB,SAAS,CAAC+O,UAAU,MAEjC,CAAAjT,IAAA,eAAA8D,MAAA,SAEYuQ,GAAQ,IAAArQ,EAAAnB,KACbgQ,EAAa,CACbC,aAAejQ,KAAKH,MAAMoQ,aAC1B/S,cAAgB8C,KAAKH,MAAM3C,cAC3B6K,WAAa/H,KAAKH,MAAMkI,WACxB4J,YAAaH,GAGZA,GAKLxR,KAAKqB,SAAS,CAACuP,YAAY,IAE3BpS,YAAS,mCAAoCwR,GAAY3T,KAAM,SAACC,IAEnC,IADRA,EACFE,OACb2E,EAAKtB,MAAM+R,YAAYzQ,EAAKtB,MAAMoQ,cAClC9O,EAAKE,SAAS,CAAC+O,UAAU,EAAM5T,OAAO,EAAOoU,YAAY,MAKzDzP,EAAKE,SAAS,CAAC+O,UAAU,EAAO5T,OAAO,EAAMoU,YAAY,IACzD1S,QAAQC,IAAI,gCAhBd6B,KAAKqB,SAAS,CAAC7E,OAAO,MAoB/B,CAAAW,IAAA,YAAA8D,MAAA,SAESO,GAERtD,QAAQC,IAAI,sBACZ6B,KAAKqB,SAAS,CAAC+O,UAAU,MAE1B,CAAAjT,IAAA,kBAAA8D,MAAA,SAEe4Q,GAEV,GAAe,KAAXA,EACA,OAAOJ,WAAWI,GAAQC,QAAQ,KAE3C,CAAA3U,IAAA,SAAA8D,MAAA,WAGU,IAAAgM,EAAAjN,KAEL,OACInD,IAAAC,cAAAD,IAAAgB,SAAA,KACAhB,IAAAC,cAACmG,IAAS,CAACzG,MAAOwD,KAAKI,MAAM5D,MAAOuV,SAAU,SAACC,GAAS/E,EAAI,MAAAhQ,OAAOgQ,EAAKpN,MAAM6Q,QAAWsB,GACjFC,WAAY,CACRC,UAAW,GAEfvQ,KAAM3B,KAAKH,MAAMoQ,aACjB9M,GAAInD,KAAKH,MAAMoQ,aACf5M,WAAW,EACXG,SAAUxD,KAAKI,MAAMwQ,WACrB7S,UAAU,0BACVqU,aAAcpS,KAAKqS,gBAAgBrS,KAAKI,MAAMkQ,YAE9CgC,OAAQtS,KAAKiR,UACbsB,QAASvS,KAAK+Q,YACJjQ,SAAUd,KAAKH,MAAM2S,aACrBC,QAASzS,KAAKH,MAAM6S,cAE9B7V,IAAAC,cAAA,OAAKyF,IAAKvC,KAAKI,MAAM0Q,MAAQxT,MAAO,CAACqV,WAAY3S,KAAKI,MAAMgQ,SAAW,UAAY,UAAY5N,IAAI,QACnG3F,IAAAC,cAACsB,IAAc,CAAEuD,KAAI,QAAA1E,OAAU+C,KAAKH,MAAM6Q,OAASpT,MAAO,CAACqV,WAAY3S,KAAKI,MAAMwQ,WAAa,UAAY,eAG1H,CAAAzT,IAAA,oBAAA8D,MAAA,gBAIEmgB,EAtIkB,CAAS3d,cCwXnB4d,GA/WG,SAAAzhB,GAIhB,SAAAyhB,EAAYxhB,GAAM,IAAAC,EAmCyC,OAnCzCC,YAAAC,KAAAqhB,IAChBvhB,EAAAG,YAAAD,KAAAE,YAAAmhB,GAAAlhB,KAAAH,KAAMH,KA6MRwJ,YAAc,SAACnI,EAAO6R,GAChBjT,EAAKuB,SAAS,CAAC2R,gBAAgB,KACpClT,EAEDmT,WAAa,SAAC9P,GAAE,OAAKrD,EAAA,MAAA7C,OAAWkG,IAAM+P,QAAQC,SAhN5CrT,EAAKM,MAAQ,CACTyH,gBAAiBpI,cACjBpC,SAAUwC,EAAMoM,MAAM7O,OAAO6M,QAC7BvP,SAAUmF,EAAMoM,MAAM7O,OAAO8M,QAC7BhN,cAAe2C,EAAMoM,MAAM7O,OAAO8O,aAClCoH,cAAezW,IAAAC,cAAA,UAAID,IAAAC,cAAA,YACnBuP,YAAa,EACbsF,YAAa,EACb1B,aAAc,EACdsD,WAAY,GACZnD,SAAU,GACVoD,WAAa,GACbC,WAAY,EACZ5C,SAAU,EACV6C,UAAW,GACXC,aAAc,GACdE,iBAAiB,EACjBtY,SAAS,EACTyX,gBAAgB,GAEpBlT,EAAKgU,eAAiBhU,EAAKgU,eAAelT,KAAIC,wBAAAf,KAC9CA,EAAKwM,eAAiBxM,EAAKwM,eAAe1L,KAAIC,wBAAAf,KAC9CA,EAAKiU,kBAAoBjU,EAAKiU,kBAAkBnT,KAAIC,wBAAAf,KACpDA,EAAK0S,aAAe1S,EAAK0S,aAAa5R,KAAIC,wBAAAf,KAC1CA,EAAKuJ,YAAcvJ,EAAKuJ,YAAYzI,KAAIC,wBAAAf,KACxCA,EAAKkR,aAAelR,EAAKkR,aAAapQ,KAAIC,wBAAAf,KAC1CA,EAAKiR,YAAcjR,EAAKiR,YAAYnQ,KAAIC,wBAAAf,KACxCA,EAAKkU,kBAAoBlU,EAAKkU,kBAAkBpT,KAAIC,wBAAAf,KACpDA,EAAKmU,YAAcnU,EAAKmU,YAAYrT,KAAIC,wBAAAf,KACxCA,EAAK8R,YAAc9R,EAAK8R,YAAYhR,KAAIC,wBAAAf,KACxCA,EAAK4S,YAAc5S,EAAK4S,YAAY9R,KAAIC,wBAAAf,KACxCA,EAAKoU,WAAapU,EAAKoU,WAAWtT,KAAIC,wBAAAf,KACtCA,EAAKqU,gBAAkBrU,EAAKqU,gBAAgBvT,KAAIC,wBAAAf,KAChDA,EAAK4R,iBAAmB5R,EAAK4R,iBAAiB9Q,KAAIC,wBAAAf,KAAOA,EAqU1D,OA5WeiB,YAAAsgB,EAAAzhB,GAwCfoB,YAAAqgB,EAAA,EAAAlkB,IAAA,WAAA8D,MAAA,SAGQO,GACPxB,KAAKqB,SAAQI,YAAA,GAAGD,EAAEE,OAAOC,KAAOH,EAAEE,OAAOT,UAC1C,CAAA9D,IAAA,eAAA8D,MAAA,SAEYO,GACT,IAAM+R,EAAavT,KAAKI,MAAMmT,WAC9BA,EAAW/R,EAAEE,OAAOC,MAAQH,EAAEE,OAAOT,MACrCjB,KAAKqB,SAAS,CAAEkS,iBACnB,CAAApW,IAAA,oBAAA8D,MAAA,SAEiBgP,EAAcU,GAC5B,IAAM4C,EAAavT,KAAKI,MAAMmT,WAG9B,OAFAA,EAAWtD,GAAgBU,EAC3B3Q,KAAKqB,SAAS,CAAEkS,gBACT,IACV,CAAApW,IAAA,mBAAA8D,MAAA,WAIEjB,KAAKqB,SAAS,CAAC2R,gBAAgB,IAC/BqB,KAAM7X,MAAM,6BAA+BwD,KAAKI,MAAMyQ,YACxD,CAAA1T,IAAA,cAAA8D,MAAA,SAEWC,GACVA,EAAMQ,OAAO4S,WACd,CAAAnX,IAAA,cAAA8D,MAAA,SAEWO,GAIR,GAHAtD,QAAQC,IAAIqD,EAAErE,KAGA,UAAVqE,EAAErE,IAAgB,CAGpB,GAAGoU,MAAM/P,EAAEE,OAAOT,OAEf,YADA/C,QAAQC,IAAI,mBAId,IAAIqT,EAAUC,WAAWjQ,EAAEE,OAAOT,OAElC,GADA/C,QAAQC,IAAIqT,EAAU,IAAMxR,KAAKI,MAAMyQ,UACnCW,EAAUxR,KAAKI,MAAMyQ,SAGtB,OAGF7Q,KAAKqB,SAAS,CAAC4O,aAAczO,EAAEE,OAAOyB,KACtCjF,QAAQC,IAAIqD,GAEZxB,KAAKgR,aAAaxP,EAAEE,OAAOyB,OAElC,CAAAhG,IAAA,cAAA8D,MAAA,SAEWO,GACR,IAAM+R,EAAavT,KAAKI,MAAMmT,WAC9BA,EAAW/R,EAAEE,OAAOC,MAAQH,EAAEE,OAAOT,MAErCjB,KAAKqB,SAAS,CAAEkS,iBACnB,CAAApW,IAAA,oBAAA8D,MAAA,SAEiBgP,EAAcsE,GACtB,IAAMnE,EAAWpQ,KAAKI,MAAMgQ,SAC5BA,EAAQ,QAAAnT,OAASgT,IAAkBsE,EACnCvU,KAAKqB,SAAS,CAAE+O,eACzB,CAAAjT,IAAA,cAAA8D,MAAA,SAEWgP,GACR,IAAIuD,EAAaxT,KAAKI,MAAMoT,WACxBgB,EAAUpF,OAAOC,KAAKmE,GAAY1J,OAEtCsF,OAAOC,KAAKmE,GAAYiB,QAAQ,SAAStX,GACnC,IAAIuX,EAAOxE,SAAS/S,GAAO,EAEzB,GAAI8S,IAAiBuD,EAAWrW,QAAhC,CAEE,IAAIwX,EAASnB,EAAWkB,GAEpBA,EAAOF,GACPhE,SAASC,eAAe5G,OAAO8K,IAASxB,aAUzD,CAAAhW,IAAA,eAAA8D,MAAA,SAEYgP,GAAa,IAAA9O,EAAAnB,KACtB9B,QAAQC,IAAI,wBACV,IAAIyW,EAAQ5U,KAAKI,MAAMmT,WAAWtD,GAC9BD,EAAa,CACbC,aAAeA,EACf/S,cAAgB8C,KAAKI,MAAMlD,cAC3B6K,WAAa/H,KAAKI,MAAMiM,YACxBsF,YAAaiD,GAGjBpW,YAAS,mCAAoCwR,GAAY3T,KAAM,SAACC,GAE9D,OAA2B,IADRA,EACFE,OACb2E,EAAKyQ,YAAY3B,GAEjB9O,EAAK6S,kBAAkB/D,GAAc,IAC9B,IAEP/R,QAAQC,IAAI,6BACL,OAGlB,CAAAhB,IAAA,iBAAA8D,MAAA,WAEe,IAAAgM,EAAAjN,KACZ5D,YAAQ,mBAAoB4D,KAAKI,OAAO/D,KAAM,SAACC,GAC7C,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC/B,IAAIrB,EAAUoB,EAAapB,QAC3B8R,EAAK5L,SAAS,CAACgL,YAAalR,SAInC,CAAAgC,IAAA,aAAA8D,MAAA,WAEW,IAAAoM,EAAArN,KAEV5D,YAAQ,oBAAsB4D,KAAKI,MAAM/C,SAAU2C,KAAKI,OAAO/D,KAAM,SAACC,GACpE,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAIiX,EAAalX,EAAakX,WAC1B5C,EAAWtU,EAAasU,SACxB6C,EAAYnX,EAAamX,UAC7BrG,EAAKhM,SAAS,CACRoS,WAAYA,EACZ5C,SAAUA,EACV6C,UAAWA,SAItB,CAAAvW,IAAA,kBAAA8D,MAAA,WAEgB,IAAAwM,EAAAzN,KACXxF,EAAawF,KAAKI,MAAMyH,gBAAgBrN,WAC5C4B,YAAQ,8BAAgC4D,KAAKI,MAAMlD,cAAgB,IAAM1C,EAAYwF,KAAKI,OAAO/D,KAAM,SAACC,GACtG,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAImX,EAAepX,EAAa0Y,WAEhCxH,EAAKpM,SAAS,CACRsS,aAAcA,GACf,WAEGlG,EAAKqG,wBAGXrG,EAAKpM,SAAS,CAACwS,iBAAiB,QAMvC,CAAA1W,IAAA,iBAAA8D,MAAA,WAQe,IAAA4M,EAAA7N,KAEdxB,YAAS,oCAAqCwB,KAAKI,OAAO/D,KAAM,SAACC,GAC3D,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE1B,IAAI4T,EAAWvC,EAAKzN,MAAMgQ,SACtB+E,EAActH,EAAKzN,MAAMmT,WACzBC,EAAa3F,EAAKzN,MAAMoT,WAC7BpE,OAAOC,KAAK9S,EAAa6Y,SAASX,QAAQ,SAAStX,GAE/C,IAAI8S,EAAe1T,EAAa6Y,QAAQjY,GAAK8S,aACzC2E,EAAQrY,EAAa6Y,QAAQjY,GAAK6jB,WAGtCxN,EAAWrW,GAAO8S,EAMlBkF,EAAYlF,GAAgB2E,EAOzBxE,EAAQ,QAAAnT,OAASgT,KAAkB,IAIxC/R,QAAQC,IAAIgX,GAEhB,IAAIrG,EAAYvS,EAAa6Y,QAAQzY,IACnC,SAACC,EAAM8T,GAAK,OAAI7T,IAAAC,cAAA,MAAIK,IAAKP,EAAKyY,YACtBxY,IAAAC,cAAA,UAAKF,EAAKqT,cACVpT,IAAAC,cAAA,UAAKF,EAAK0Y,sBACVzY,IAAAC,cAAA,MAAKmS,MAAM,UAAUrS,EAAK0kB,SAC1BzkB,IAAAC,cAAA,MAAKmS,MAAM,UAENpS,IAAAC,cAACskB,GAAmB,CAChBzf,KAAM/E,EAAKqT,aACXA,aAAgBrT,EAAKqT,aACrB/S,cAAiB2Q,EAAKzN,MAAMlD,cAC5B6K,WAAc8F,EAAKzN,MAAMiM,YACzBlJ,GAAIvG,EAAKqT,aACTU,KAAM9C,EAAKzN,MAAMmT,WAAW3W,EAAKqT,cACjCuC,aAAc3E,EAAK2E,aACnBE,YAAa7E,EAAK6E,YAClBd,YAAa/D,EAAK+D,YAClBF,iBAAkB7D,EAAK6D,mBAE1B7U,IAAAC,cAACsB,IAAc,CAACsS,MAAOA,EAAO/O,KAAI,QAAA1E,OAAUL,EAAKqT,cAAgB3S,MAAO,CAACqV,WAAY9E,EAAKzN,MAAMgQ,SAASxT,EAAKqT,cAAgB,UAAY,gBAKpJpC,EAAKxM,SAAS,CAAEiS,cAAgBxE,GAAa,WACvCjB,EAAKxM,SAAS,CAAC9F,SAAS,WAItC2C,QAAQC,IAAI,uCAGnB,CAAAhB,IAAA,SAAA8D,MAAA,WAID,IAAIuU,EAAsB,GAa1B,OATmC,IAA/BxV,KAAKI,MAAMyT,kBACX2B,EAAsB3Y,IAAAC,cAAC2Y,KAAK,CAACtY,IAAK,EAAGwF,QAAQ,UACzC9F,IAAAC,cAAC2Y,KAAMC,QAAO,KAAC,oCAA6C,qHASpE7Y,IAAAC,cAAA,OAAKiB,UAAU,aACXlB,IAAAC,cAAA,WAEAD,IAAAC,cAACkF,IAAa,CACZzG,QAASyE,KAAKI,MAAM7E,QACpB0G,QAAQ,UACRC,aAAa,UACbC,UAAU,UACVC,QAAQ,2BACRC,KAAK,OAGPxF,IAAAC,cAAA,OAAKiB,UAAU,QACblB,IAAAC,cAAA,OAAKiB,UAAU,eACTlB,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,WAAWD,UAAW3F,IAAMC,GAAE,SAAYuG,MAAM,WAAU,cACxF1G,IAAAC,cAAA,QAAMiB,UAAU,2CAA0ClB,IAAAC,cAAA,cAAQ,2BAAgC,KAAGkD,KAAKI,MAAMuT,aAAa,MAAG9W,IAAAC,cAAA,cAAQ,UAAe,IAAEkD,KAAKI,MAAMsT,UAAU,OAAK1T,KAAKI,MAAM1F,SAAS,KAAEmC,IAAAC,cAAA,cAAQ,eAAiB,KAAGkD,KAAKI,MAAMiM,YAAY,MAElQxP,IAAAC,cAAA,OAAKiB,UAAU,aACblB,IAAAC,cAAA,OAAKiB,UAAU,YAAY,oIAG3BlB,IAAAC,cAAA,MAAIiB,UAAU,cAAa,oBAE1ByX,EAGD3Y,IAAAC,cAAA,SAAOiB,UAAU,6CACflB,IAAAC,cAAA,aACED,IAAAC,cAAA,MAAIiB,UAAU,iBACZlB,IAAAC,cAAA,MAAI8I,MAAM,MAAK,aACf/I,IAAAC,cAAA,MAAI8I,MAAM,OAAM,UAChB/I,IAAAC,cAAA,MAAI8I,MAAM,KAAKqJ,MAAM,UAAS,QAC9BpS,IAAAC,cAAA,MAAI8I,MAAM,MAAK,mBAGnB/I,IAAAC,cAAA,aACGkD,KAAKI,MAAMkT,gBAIhBzW,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YAAYD,UAAW3F,IAAMC,GAAE,SAAYuG,MAAM,WAAU,cACzF1G,IAAAC,cAAC8Y,WAAO,CAACvP,SAAS,oBAY3B,CAAAlJ,IAAA,qBAAA8D,MAAA,SAEkB4U,EAAWC,MAE7B,CAAA3Y,IAAA,oBAAA8D,MAAA,WAECjB,KAAKsM,iBACLtM,KAAKkU,aACLlU,KAAKmU,sBAENkN,EA5We,CAAS5d,aC+GZ8d,GAxHU,SAAA3hB,GACrB,SAAA2hB,EAAY1hB,GAAM,IAAAC,EAa6B,OAb7BC,YAAAC,KAAAuhB,IACdzhB,EAAAG,YAAAD,KAAAE,YAAAqhB,GAAAphB,KAAAH,KAAMH,KACDO,MAAQ,CACTsQ,MAAO7Q,EAAM6Q,MACbJ,WAAYzQ,EAAM8Q,KAClBP,UAAU,EACVQ,YAAY,EACZpU,OAAO,EACPqU,SAAU,EACVC,MAAO,0BAEXhR,EAAKiR,YAAcjR,EAAKiR,YAAYnQ,KAAIC,wBAAAf,KACxCA,EAAKkR,aAAelR,EAAKkR,aAAapQ,KAAIC,wBAAAf,KAC1CA,EAAKmR,UAAYnR,EAAKmR,UAAUrQ,KAAIC,wBAAAf,KAAOA,EAuG5C,OArHkBiB,YAAAwgB,EAAA3hB,GAgBpBoB,YAAAugB,EAAA,EAAApkB,IAAA,cAAA8D,MAAA,SAEWO,GAIR,GAHAtD,QAAQC,IAAIqD,EAAErE,KAGA,UAAVqE,EAAErE,IAAgB,CAMnB,IAAIqU,EAAUhQ,EAAEE,OAAOT,MAEvB,GAAIsQ,MAAMC,GAIP,OAHAtT,QAAQC,IAAI,8CACZ6B,KAAKH,MAAM2hB,4BACXxhB,KAAKqB,SAAS,CAAC7E,OAAO,IAIxBwD,KAAKqB,SAAS,CAAC4O,aAAczO,EAAEE,OAAOyB,KAGtCnD,KAAKgR,aAAaQ,QAGjBxR,KAAKqB,SAAS,CAAC+O,UAAU,MAEjC,CAAAjT,IAAA,eAAA8D,MAAA,SAEYuQ,GAAQ,IAAArQ,EAAAnB,KACbgQ,EAAa,CACbC,aAAejQ,KAAKH,MAAMoQ,aAC1B5S,SAAU2C,KAAKH,MAAMxC,SACrB3C,SAAUsF,KAAKH,MAAMnF,SACrBwC,cAAe8C,KAAKH,MAAM3C,cAC1B6K,WAAY/H,KAAKH,MAAMkI,WACvB0Z,WAAYjQ,GAGXA,GAKLxR,KAAKqB,SAAS,CAACuP,YAAY,IAE3BpS,YAAS,mCAAoCwR,GAAY3T,KAAM,SAACC,IAEnC,IADRA,EACFE,OACb2E,EAAKtB,MAAM+R,YAAYzQ,EAAKtB,MAAMoQ,cAClC9O,EAAKE,SAAS,CAAC+O,UAAU,EAAM5T,OAAO,EAAOoU,YAAY,KAKzDzP,EAAKE,SAAS,CAAC+O,UAAU,EAAO5T,OAAO,EAAMoU,YAAY,OAf3D5Q,KAAKqB,SAAS,CAAC7E,OAAO,MAoB/B,CAAAW,IAAA,YAAA8D,MAAA,SAESO,GAGRxB,KAAKqB,SAAS,CAAC+O,UAAU,MAE1B,CAAAjT,IAAA,SAAA8D,MAAA,WAGU,IAAAgM,EAAAjN,KAEL,OACInD,IAAAC,cAAAD,IAAAgB,SAAA,KACAhB,IAAAC,cAACmG,IAAS,CAACzG,MAAOwD,KAAKI,MAAM5D,MAAOuV,SAAU,SAACC,GAAS/E,EAAI,MAAAhQ,OAAOgQ,EAAKpN,MAAM6Q,QAAWsB,GACjFC,WAAY,CACRC,UAAW,EACX5U,MAAO,CAAE6U,UAAW,WAExBxQ,KAAM3B,KAAKH,MAAMoQ,aACjB9M,GAAInD,KAAKH,MAAMoQ,aACf5M,WAAW,EACXG,SAAUxD,KAAKI,MAAMwQ,WACrB7S,UAAU,0BACVqU,aAAcpS,KAAKI,MAAMkQ,WACzBgC,OAAQtS,KAAKiR,UAEbsB,QAASvS,KAAK+Q,YACJjQ,SAAUd,KAAKH,MAAM2S,aACrBC,QAASzS,KAAKH,MAAM6S,cAE9B7V,IAAAC,cAAA,OAAKyF,IAAKvC,KAAKI,MAAM0Q,MAAQxT,MAAO,CAACqV,WAAY3S,KAAKI,MAAMgQ,SAAW,UAAY,UAAY5N,IAAI,QACnG3F,IAAAC,cAACsB,IAAc,CAAEuD,KAAI,QAAA1E,OAAU+C,KAAKH,MAAM6Q,OAASpT,MAAO,CAACqV,WAAY3S,KAAKI,MAAMwQ,WAAa,UAAY,eAG1H,CAAAzT,IAAA,oBAAA8D,MAAA,gBAIEsgB,EArHkB,CAAS9d,aCmYnBie,GAxXE,SAAA9hB,GAIf,SAAA8hB,EAAY7hB,GAAM,IAAAC,EAuCiD,OAvCjDC,YAAAC,KAAA0hB,IAChB5hB,EAAAG,YAAAD,KAAAE,YAAAwhB,GAAAvhB,KAAAH,KAAMH,KAqNRwJ,YAAc,SAACnI,EAAO6R,GAChBjT,EAAKuB,SAAS,CAAC2R,gBAAgB,KACpClT,EAEDmT,WAAa,SAAC9P,GAAE,OAAKrD,EAAA,MAAA7C,OAAWkG,IAAM+P,QAAQC,SAxN5CrT,EAAKM,MAAQ,CACTyH,gBAAiBpI,cACjB2T,gBAAiBP,KACjBxV,SAAUwC,EAAMoM,MAAM7O,OAAO6M,QAC7BvP,SAAUmF,EAAMoM,MAAM7O,OAAO8M,QAC7BhN,cAAe2C,EAAMoM,MAAM7O,OAAO8O,aAElC5B,aAAczK,EAAMoM,MAAM7O,OAAOiW,YACjCC,cAAezW,IAAAC,cAAA,UAAID,IAAAC,cAAA,YACnBuP,YAAa,EACbsF,YAAa,EACb1B,aAAc,EACdsD,WAAY,GACZnD,SAAU,GACVoD,WAAa,GACbC,WAAY,EACZ5C,SAAU,EACV6C,UAAW,GACXC,aAAc,GACdC,UAAW,IACXC,iBAAiB,EACjBtY,SAAS,EACTyX,gBAAgB,GAEpBlT,EAAKgU,eAAiBhU,EAAKgU,eAAelT,KAAIC,wBAAAf,KAC9CA,EAAKwM,eAAiBxM,EAAKwM,eAAe1L,KAAIC,wBAAAf,KAC9CA,EAAKiU,kBAAoBjU,EAAKiU,kBAAkBnT,KAAIC,wBAAAf,KACpDA,EAAK0S,aAAe1S,EAAK0S,aAAa5R,KAAIC,wBAAAf,KAC1CA,EAAKuJ,YAAcvJ,EAAKuJ,YAAYzI,KAAIC,wBAAAf,KACxCA,EAAKkR,aAAelR,EAAKkR,aAAapQ,KAAIC,wBAAAf,KAC1CA,EAAKiR,YAAcjR,EAAKiR,YAAYnQ,KAAIC,wBAAAf,KACxCA,EAAKkU,kBAAoBlU,EAAKkU,kBAAkBpT,KAAIC,wBAAAf,KACpDA,EAAKmU,YAAcnU,EAAKmU,YAAYrT,KAAIC,wBAAAf,KACxCA,EAAK8R,YAAc9R,EAAK8R,YAAYhR,KAAIC,wBAAAf,KACxCA,EAAK4S,YAAc5S,EAAK4S,YAAY9R,KAAIC,wBAAAf,KACxCA,EAAKoU,WAAapU,EAAKoU,WAAWtT,KAAIC,wBAAAf,KACtCA,EAAKqU,gBAAkBrU,EAAKqU,gBAAgBvT,KAAIC,wBAAAf,KAChDA,EAAK0hB,qBAAuB1hB,EAAK0hB,qBAAqB5gB,KAAIC,wBAAAf,KAAOA,EA0UlE,OArXciB,YAAA2gB,EAAA9hB,GA6CdoB,YAAA0gB,EAAA,EAAAvkB,IAAA,WAAA8D,MAAA,SAGQO,GACPxB,KAAKqB,SAAQI,YAAA,GAAGD,EAAEE,OAAOC,KAAOH,EAAEE,OAAOT,UAC1C,CAAA9D,IAAA,eAAA8D,MAAA,SAEYO,GACT,IAAM+R,EAAavT,KAAKI,MAAMmT,WAC9BA,EAAW/R,EAAEE,OAAOC,MAAQH,EAAEE,OAAOT,MACrCjB,KAAKqB,SAAS,CAAEkS,iBACnB,CAAApW,IAAA,oBAAA8D,MAAA,SAEiBgP,EAAcU,GAC5B,IAAM4C,EAAavT,KAAKI,MAAMmT,WAG9B,OAFAA,EAAWtD,GAAgBU,EAC3B3Q,KAAKqB,SAAS,CAAEkS,gBACT,IACV,CAAApW,IAAA,uBAAA8D,MAAA,WAIEjB,KAAKqB,SAAS,CAAC2R,gBAAgB,IAC/BqB,KAAM7X,MAAM,+CACd,CAAAW,IAAA,cAAA8D,MAAA,SAEWC,GACVA,EAAMQ,OAAO4S,WACd,CAAAnX,IAAA,cAAA8D,MAAA,SAEWO,GAIR,GAHAtD,QAAQC,IAAIqD,EAAErE,KAGA,UAAVqE,EAAErE,IAAgB,CAGpB,GAAGoU,MAAM/P,EAAEE,OAAOT,OAEf,YADA/C,QAAQC,IAAI,mBAMd,GAFcsT,WAAWjQ,EAAEE,OAAOT,OAEpBjB,KAAKI,MAAMyQ,SAGtB,OAGF7Q,KAAKqB,SAAS,CAAC4O,aAAczO,EAAEE,OAAOyB,KAGtCnD,KAAKgR,aAAaxP,EAAEE,OAAOyB,OAElC,CAAAhG,IAAA,cAAA8D,MAAA,SAEWO,GACR,IAAM+R,EAAavT,KAAKI,MAAMmT,WAC9BA,EAAW/R,EAAEE,OAAOC,MAAQH,EAAEE,OAAOT,MAErCjB,KAAKqB,SAAS,CAAEkS,iBACnB,CAAApW,IAAA,oBAAA8D,MAAA,SAEiBgP,EAAcsE,GACtB,IAAMnE,EAAWpQ,KAAKI,MAAMgQ,SAC5BA,EAAQ,QAAAnT,OAASgT,IAAkBsE,EACnCvU,KAAKqB,SAAS,CAAE+O,eACzB,CAAAjT,IAAA,cAAA8D,MAAA,SAEWgP,GACR,IAAIuD,EAAaxT,KAAKI,MAAMoT,WACxBgB,EAAUpF,OAAOC,KAAKmE,GAAY1J,OAEtCsF,OAAOC,KAAKmE,GAAYiB,QAAQ,SAAStX,GACnC,IAAIuX,EAAOxE,SAAS/S,GAAO,EAEzB,GAAI8S,IAAiBuD,EAAWrW,QAAhC,CAEE,IAAIwX,EAASnB,EAAWkB,GAEpBA,EAAOF,GACPhE,SAASC,eAAe5G,OAAO8K,IAASxB,aAUzD,CAAAhW,IAAA,eAAA8D,MAAA,SAEYgP,GAAa,IAAA9O,EAAAnB,KAEhB4U,EAAQ5U,KAAKI,MAAMmT,WAAWtD,GAC9BD,EAAa,CACbC,aAAeA,EACf3F,aAAetK,KAAKI,MAAMkK,aAC1BpN,cAAe8C,KAAKI,MAAMlD,cAC1BG,SAAW2C,KAAKI,MAAM/C,SACtB3C,SAAWsF,KAAKI,MAAM1F,SACtBiX,YAAaiD,GAGjBpW,YAAS,6BAA8BwR,GAAY3T,KAAM,SAACC,GAExD,OAA2B,IADRA,EACFE,OACb2E,EAAKyQ,YAAY3B,GAEjB9O,EAAK6S,kBAAkB/D,GAAc,IAC9B,IAEP/R,QAAQC,IAAI,6BACL,OAGlB,CAAAhB,IAAA,iBAAA8D,MAAA,WAEe,IAAAgM,EAAAjN,KACZ5D,YAAQ,mBAAoB4D,KAAKI,OAAO/D,KAAM,SAACC,GAC7C,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC/B,IAAIrB,EAAUoB,EAAapB,QAC3B8R,EAAK5L,SAAS,CAACgL,YAAalR,SAInC,CAAAgC,IAAA,aAAA8D,MAAA,WAEW,IAAAoM,EAAArN,KAEV5D,YAAQ,oBAAsB4D,KAAKI,MAAM/C,SAAU2C,KAAKI,OAAO/D,KAAM,SAACC,GACpE,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAIiX,EAAalX,EAAakX,WAC1B5C,EAAWtU,EAAasU,SACxB6C,EAAYnX,EAAamX,UAC7BrG,EAAKhM,SAAS,CACRoS,WAAYA,EACZ5C,SAAUA,EACV6C,UAAWA,SAItB,CAAAvW,IAAA,kBAAA8D,MAAA,WAEgB,IAAAwM,EAAAzN,KACXxF,EAAawF,KAAKI,MAAMyH,gBAAgBrN,WAC5C4B,YAAQ,8BAAgC4D,KAAKI,MAAMlD,cAAgB,IAAM1C,EAAYwF,KAAKI,OAAO/D,KAAM,SAACC,GACtG,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAImX,EAAepX,EAAa0Y,WAC5BrB,EAAYrX,EAAaqX,UAC7BnG,EAAKpM,SAAS,CACRuS,UAAWA,EACXD,aAAcA,GACf,WAEGlG,EAAKqG,wBAGXrG,EAAKpM,SAAS,CAACwS,iBAAiB,QAMvC,CAAA1W,IAAA,iBAAA8D,MAAA,WAQe,IAAA4M,EAAA7N,KAEdxB,YAAS,oCAAqCwB,KAAKI,OAAO/D,KAAM,SAACC,GAC3D,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE1B,IAuBKsS,EAvBDsB,EAAWvC,EAAKzN,MAAMgQ,SACtB+E,EAActH,EAAKzN,MAAMmT,WACzBC,EAAa3F,EAAKzN,MAAMoT,WAC7BpE,OAAOC,KAAK9S,EAAa6Y,SAASX,QAAQ,SAAStX,GAE/C,IAAI8S,EAAe1T,EAAa6Y,QAAQjY,GAAK8S,aACzC2E,EAAQrY,EAAa6Y,QAAQjY,GAAKyX,MAEtCpB,EAAWrW,GAAO8S,EAEb2E,IACDA,EAAQ,IAERO,EAAYlF,GAAgB2E,EAO7BxE,EAAQ,QAAAnT,OAASgT,KAAkB,IAKrCnB,EAAYvS,EAAa6Y,QAAQzY,IAChC,SAACC,EAAM8T,GAAK,OAAI7T,IAAAC,cAAA,MAAIK,IAAKP,EAAKyY,YACtBxY,IAAAC,cAAA,MAAKmS,MAAM,UAAUrS,EAAKqT,cAC1BpT,IAAAC,cAAA,UAAKF,EAAK0Y,sBACVzY,IAAAC,cAAA,MAAIyY,OAAO,UAEP1Y,IAAAC,cAACykB,GAAmB,CAChB5f,KAAM/E,EAAKqT,aACXA,aAAgBrT,EAAKqT,aACrB/S,cAAiB2Q,EAAKzN,MAAMlD,cAC5BG,SAAYwQ,EAAKzN,MAAM/C,SACvB3C,SAAYmT,EAAKzN,MAAM1F,SACvBqN,WAAc8F,EAAKzN,MAAMgT,gBAAgBrL,WACzC5E,GAAIvG,EAAKqT,aACTU,KAAM9C,EAAKzN,MAAMmT,WAAW3W,EAAKqT,cACjCuC,aAAc3E,EAAK2E,aACnBE,YAAa7E,EAAK6E,YAClBd,YAAa/D,EAAK+D,YAClBF,iBAAkB7D,EAAK6D,mBAEzB7U,IAAAC,cAACsB,IAAc,CAACsS,MAAOA,EAAO/O,KAAI,QAAA1E,OAAUL,EAAKqT,cAAgB3S,MAAO,CAACqV,WAAY9E,EAAKzN,MAAMgQ,SAASxT,EAAKqT,cAAgB,UAAY,gBAQ1JpC,EAAKxM,SAAS,CAAEiS,cAAgBxE,GAAa,WACvCjB,EAAKxM,SAAS,CAAC9F,SAAS,WAItC2C,QAAQC,IAAI,uCAGnB,CAAAhB,IAAA,SAAA8D,MAAA,WAID,IAAIuU,EAAsB,IAIS,IAA/BxV,KAAKI,MAAMyT,kBACX2B,EAAsB3Y,IAAAC,cAAC2Y,KAAK,CAACtY,IAAK,EAAGwF,QAAQ,UACzC9F,IAAAC,cAAC2Y,KAAMC,QAAO,KAAC,oCAA6C,qHAOpE,OAEA7Y,IAAAC,cAAA,OAAKiB,UAAU,aACXlB,IAAAC,cAAA,WAEAD,IAAAC,cAACkF,IAAa,CACZzG,QAASyE,KAAKI,MAAM7E,QACpB0G,QAAQ,UACRC,aAAa,UACbC,UAAU,UACVC,QAAQ,2BACRC,KAAK,OAGPxF,IAAAC,cAAA,OAAKiB,UAAU,QACblB,IAAAC,cAAA,OAAKiB,UAAU,eACTlB,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,WAAWD,UAAW3F,IAAMC,GAAE,qBAAAC,OAAuB+C,KAAKI,MAAM/C,SAAQ,KAAAJ,OAAI+C,KAAKI,MAAM1F,SAAQ,KAAAuC,OAAI+C,KAAKI,MAAMlD,eAAiBqG,MAAM,WAAU,cAC7K1G,IAAAC,cAAA,QAAMiB,UAAU,2CAA0ClB,IAAAC,cAAA,cAAQ,yBAA8B,KAAGkD,KAAKI,MAAMuT,aAAa,MAAG9W,IAAAC,cAAA,cAAQ,UAAe,IAAEkD,KAAKI,MAAMsT,UAAU,OAAK1T,KAAKI,MAAM1F,SAAS,KAAEmC,IAAAC,cAAA,cAAQ,eAAiB,KAAGkD,KAAKI,MAAMiM,YAAY,MAEhQxP,IAAAC,cAAA,OAAKiB,UAAU,aACblB,IAAAC,cAAA,OAAKiB,UAAU,gCAtBP,qDAyBRlB,IAAAC,cAAA,MAAIiB,UAAU,cAAa,oBAE1ByX,EAGD3Y,IAAAC,cAAA,SAAOiB,UAAU,iBACflB,IAAAC,cAAA,aACED,IAAAC,cAAA,UACED,IAAAC,cAAA,MAAI8I,MAAM,KAAKqJ,MAAM,UAAS,SAC9BpS,IAAAC,cAAA,MAAI8I,MAAM,OAAM,UAChB/I,IAAAC,cAAA,MAAI8I,MAAM,KAAMqJ,MAAM,UAAS,UAGnCpS,IAAAC,cAAA,aACGkD,KAAKI,MAAMkT,gBAIhBzW,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YAAYD,UAAW3F,IAAMC,GAAE,qBAAAC,OAAuB+C,KAAKI,MAAM/C,SAAQ,KAAAJ,OAAI+C,KAAKI,MAAM1F,SAAQ,KAAAuC,OAAI+C,KAAKI,MAAMlD,eAAiBqG,MAAM,WAAU,cAC9K1G,IAAAC,cAAC8Y,WAAO,CAACvP,SAAS,oBAY3B,CAAAlJ,IAAA,qBAAA8D,MAAA,SAEkB4U,EAAWC,MAE7B,CAAA3Y,IAAA,oBAAA8D,MAAA,WAECjB,KAAKsM,iBACLtM,KAAKkU,aACLlU,KAAKmU,sBAGNuN,EArXc,CAASje,aCsPXke,GA5PY,SAAA/hB,GAKzB,SAAA+hB,EAAY9hB,GAAM,IAAAC,EA8BuC,OA9BvCC,YAAAC,KAAA2hB,IAChB7hB,EAAAG,YAAAD,KAAAE,YAAAyhB,GAAAxhB,KAAAH,KAAMH,KAmJRid,gBAAkB,SAACtb,GACf1B,EAAKuB,SAAS,CAACgL,YAAa7K,EAAEE,OAAOT,OAAQ,WACzCnB,EAAKgU,oBApJXhU,EAAKM,MAAQ,CACT/C,SAAUwC,EAAMoM,MAAM7O,OAAO6M,QAC7BvP,SAAUmF,EAAMoM,MAAM7O,OAAO8M,QAC7BhN,cAAe2C,EAAMoM,MAAM7O,OAAO8O,aAClC/B,eAAgBtK,EAAMoM,MAAM7O,OAAO4Y,YACnC1L,aAAczK,EAAMoM,MAAM7O,OAAOiW,YACjCK,UAAW,KACXJ,cAAe,KACf2C,cAAe,KACfsD,eAAgB,KAChBlN,YAAa,EACbsF,YAAa,EACb1B,aAAc,EACdsD,WAAY,GACZnD,SAAU,GACVoD,WAAa,GACbgG,gBAAiB,CAAC,GAAI,IACtBC,eAAgB,EAChBC,iBAAiB,EACjBC,iBAAiB,EACjBpe,SAAS,EACTyjB,aAAa,GAGjBlf,EAAKgU,eAAiBhU,EAAKgU,eAAelT,KAAIC,wBAAAf,KAC9CA,EAAKwM,eAAiBxM,EAAKwM,eAAe1L,KAAIC,wBAAAf,KAC9CA,EAAKoU,WAAapU,EAAKoU,WAAWtT,KAAIC,wBAAAf,KACtCA,EAAKga,oBAAsBha,EAAKga,oBAAoBlZ,KAAIC,wBAAAf,KACxDA,EAAK0d,gBAAkB1d,EAAK0d,gBAAgB5c,KAAIC,wBAAAf,KAAOA,EAsNxD,OAzPwBiB,YAAA4gB,EAAA/hB,GAqCxBoB,YAAA2gB,EAAA,EAAAxkB,IAAA,iBAAA8D,MAAA,WAIe,IAAAE,EAAAnB,KACZ5D,YAAQ,mBAAoB4D,KAAKI,OAAO/D,KAAM,SAACC,GAC7C,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC/B,IAAIrB,EAAUoB,EAAapB,QAC3BgG,EAAKE,SAAS,CAACgL,YAAalR,GAAU,WAClCgG,EAAKqc,yBAKhB,CAAArgB,IAAA,aAAA8D,MAAA,WAEW,IAAAgM,EAAAjN,KAEV5D,YAAQ,oBAAsB4D,KAAKI,MAAM/C,SAAU2C,KAAKI,OAAO/D,KAAM,SAACC,GACpE,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAIkX,EAAYnX,EAAamX,UAC7BzG,EAAK5L,SAAS,CACRqS,UAAWA,SAItB,CAAAvW,IAAA,gBAAA8D,MAAA,SAKW0Z,EAAOlE,GACjB,IAAImE,EAAU,GAWd,OAVAxL,OAAOC,KAAKsL,GAAOlG,QAAQ,SAAStX,GAChC,IAAI8hB,EAAYtE,EAAMxd,GAClBwT,EAAOsO,EACPC,EAAS,GACT/hB,EAAM,IACNwT,EAAOc,WAAWwN,GAAWnN,QAAQ,GACrCoN,EAAS,UAEbtE,EAAQ3D,KAAKpa,IAAAC,cAAA,MAAImS,MAAOiQ,EAAQ/hB,IAAG,MAAAF,OAAQE,IAAQwT,MAEhDiK,IACV,CAAAzd,IAAA,eAAA8D,MAAA,SAEY9D,EAAKgiB,GAOd,OAAY,IAARhiB,EACO,MAEC,IAARA,EALO,IADE,IADJgiB,EAAQ,GAEI,GAMH,IAEdhiB,EAAM,GAAKA,EAAMgiB,EACV,MAEPhiB,IAASgiB,EAAM,EACR,WADX,IAIH,CAAAhiB,IAAA,sBAAA8D,MAAA,SAEmBme,EAAUC,GAAW,IAAAhS,EAAArN,KAKjCsf,EADUlQ,OAAOC,KAAK+P,GACHtV,OAGnBwN,EAAe8H,EAASziB,IACxB,SAACC,EAAMO,GAAG,OAAIN,IAAAC,cAAA,MAAIK,IAAKA,EAAKY,UAAW,cAAgB6H,MAAOyH,EAAKkS,aAAapiB,EAAImiB,IAAY1iB,KAUhGkS,EAPeuQ,EAAW1iB,IAAI,SAAC6iB,EAAQriB,GAAG,OAClCN,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQE,IACXkQ,EAAKoS,cAAcD,EAAQriB,MAO3C6C,KAAKqB,SAAS,CAAEiS,cAAgBxE,EAAWwI,aAAcA,MAC5D,CAAAna,IAAA,iBAAA8D,MAAA,WAGe,IAAAwM,EAAAzN,KACZA,KAAKqB,SAAS,CAAC2d,aAAa,IAC5B5iB,YAAQ,sCAAwC4D,KAAKI,MAAM/C,SAAW,IAAM2C,KAAKI,MAAM1F,SAAW,IAAMsF,KAAKI,MAAMlD,cAAgB,IAAM8C,KAAKI,MAAMiM,YAAarM,KAAKI,OAAO/D,KAAM,SAACC,GAC9K,IAAIC,EAAeD,GAEQ,IAAvBC,EAAaC,OAGfiR,EAAKqM,oBAAoBvd,EAAamjB,UAAUnjB,EAAaojB,OAG7DlS,EAAKpM,SAAS,CAAC9F,SAAS,EAAOyjB,aAAa,KAG5C9gB,QAAQC,IAAI,0CAGnB,CAAAhB,IAAA,kBAAA8D,MAAA,WAaC,IAFA,IAAImd,EAAgB,GAEXC,EAAI,EAAGA,GAAKre,KAAKI,MAAMiM,YAAagS,IACzCD,EAAcnH,KAAKoH,GAEvB,IAAMC,EAAQF,EAAczhB,IAAI,SAACC,EAAM8T,GAAK,OAAI7T,IAAAC,cAAC0I,IAAQ,CAACrI,IAAKuT,EAAOzP,MAAOrE,GAAM,WAASA,KAE5FoD,KAAKqB,SAAS,CAAC+b,eAAgBkB,MAElC,CAAAnhB,IAAA,SAAA8D,MAAA,WAQC,OAGApE,IAAAC,cAAA,OAAKiB,UAAU,aAEblB,IAAAC,cAACkF,IAAa,CACAzG,QAASyE,KAAKI,MAAM7E,QACpB0G,QAAQ,UACRC,aAAa,UACbC,UAAU,UACVC,QAAQ,2BACRC,KAAK,OAGjBxF,IAAAC,cAAA,OAAKiB,UAAU,QACblB,IAAAC,cAAA,OAAKiB,UAAU,eACTlB,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,WAAWD,UAAW3F,IAAMC,GAAE,SAAYuG,MAAM,WAAU,cACxF1G,IAAAC,cAAA,QAAMiB,UAAU,2CAA0C,qBAC1DlB,IAAAC,cAAA,cAAQ,gBAERD,IAAAC,cAAC+F,IAAW,CAAC9E,UAAU,QAEflB,IAAAC,cAAC2b,KAAM,CACLiG,QAAQ,gBACRvb,GAAG,aACHlC,MAAQjB,KAAKI,MAAMiM,YACnBvL,SAAUd,KAAK8c,iBAEX9c,KAAKI,MAAMgd,iBAIzBvgB,IAAAC,cAAA,cAAQ,YAAkBkD,KAAKI,MAAMsT,UAAU,MAAI1T,KAAKI,MAAM1F,SAAS,KAEvEmC,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,WAAWD,UAAW3F,IAAMC,GAAE,gCAAAC,OAAkC+C,KAAKI,MAAM/C,SAAQ,KAAAJ,OAAI+C,KAAKI,MAAM1F,SAAQ,KAAAuC,OAAI+C,KAAKI,MAAMlD,cAAa,KAAAD,OAAI+C,KAAKI,MAAMiM,aAAe9I,MAAM,WAAU,kBAExN1G,IAAAC,cAAA,OAAKiB,UAAU,aACflB,IAAAC,cAACsB,IAAc,CAACd,MAAO,CAACqV,WAAY3S,KAAKI,MAAM4e,YAAc,UAAY,YAGvEniB,IAAAC,cAAA,MAAIiB,UAAU,cAAa,oBAG3BlB,IAAAC,cAAA,SAAOiB,UAAU,uEACblB,IAAAC,cAAA,aACAD,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQ,GAAKc,UAAU,iBAAiBiC,KAAKI,MAAMkX,cAC1Dza,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQ,IAAM+C,KAAKI,MAAMmZ,iBAEhC1c,IAAAC,cAAA,aAAQkD,KAAKI,MAAMkT,gBAGvBzW,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YAAYD,UAAW3F,IAAMC,GAAE,SAAYuG,MAAM,WAAU,oBAWlG,CAAApG,IAAA,qBAAA8D,MAAA,SAEkB4U,EAAWC,MAE7B,CAAA3Y,IAAA,oBAAA8D,MAAA,WAECjB,KAAKsM,iBACLtM,KAAKkU,aACLlU,KAAK8T,qBACN6N,EAzPwB,CAASle,aCP7B,SAASme,GAAWrnB,GAAe,IAAZsnB,EAAQtnB,EAARsnB,SACxBniB,EAAUD,cAGd,OADAvB,QAAQC,IAAI,SAAUuB,GACK,MAAvBA,EAAQoiB,WACEjlB,IAAAC,cAAC+E,IAAQ,CAAC7E,GAAI,UAEf6kB,ECPR,SAASE,GAAcxnB,GAAe,IAAZsnB,EAAQtnB,EAARsnB,SAI/B,MAAyB,MAHXpiB,cAGFuiB,SACEnlB,IAAAC,cAAC+E,IAAQ,CAAC7E,GAAI,UAEf6kB,2BC4bAI,GAvboB,SAAAriB,GAGjC,SAAAqiB,EAAYpiB,GAAM,IAAAC,EAAAC,YAAAC,KAAAiiB,IAChBniB,EAAAG,YAAAD,KAAAE,YAAA+hB,GAAA9hB,KAAAH,KAAMH,KAiFRqiB,mBAAqB,SAAC1gB,GACpB1B,EAAKuB,SAAS,CAAC8gB,cAAe3gB,EAAEE,OAAOT,OAAQ,WAC3CnB,EAAKsiB,2BAGZtiB,EAqBCuiB,wBAA0B,SAAC7gB,GACzB1B,EAAKuB,SAAS,CAACnE,cAAesE,EAAEE,OAAOT,OAAQ,WACjB,OAAxBnB,EAAKM,MAAM/C,UACXyC,EAAKgU,oBAEZhU,EA+KDgd,gBAAkB,SAACtb,GACf1B,EAAKuB,SAAS,CAACgL,YAAa7K,EAAEE,OAAOT,OAAQ,WACb,OAAxBnB,EAAKM,MAAM/C,UACXyC,EAAKgU,oBAGhBhU,EAeDwiB,wBAA0B,WACxBpkB,QAAQC,IAAI,iBACZ2B,EAAKuB,SAAS,CAACkhB,cAAc,KAC9BziB,EAED0iB,oBAAsB,WACpBtkB,QAAQC,IAAI,kBACZ2B,EAAKuB,SAAS,CAACkhB,cAAc,KA1T7B,IAAIllB,EAAW,KACX3C,EAAW,KACXynB,EAAgB,KAChBjlB,EAAgB,KA6CmD,OA3CnE2C,EAAMoM,MAAM7O,OAAO6M,UACpB5M,EAAWwC,EAAMoM,MAAM7O,OAAO6M,QAC9BvP,EAAWmF,EAAMoM,MAAM7O,OAAO8M,QAC9BhN,EAAgB2C,EAAMoM,MAAM7O,OAAO8O,aACnCiW,EAAgB9kB,EAAW,IAAM3C,GAGpCoF,EAAKM,MAAQ,CACTyH,gBAAmBpI,cACnBpC,SAAUA,EACV3C,SAAUA,EACVynB,cAAeA,EACfjlB,cAAeA,EACfwW,UAAW,KACXJ,cAAe,KACfxL,aAAc,KACd/M,kBAAmB,KACnBkb,cAAe,KACfsD,eAAgB,KAChBlN,YAAa,EACbsF,YAAa,EACb1B,aAAc,EACdsD,WAAY,GACZnD,SAAU,GACVoD,WAAa,GACbgG,gBAAiB,CAAC,GAAI,IACtBC,eAAgB,EAChBC,iBAAiB,EACjBC,iBAAiB,EACjBpe,SAAS,EACTyjB,aAAa,EACbuD,cAAc,EACdE,QAAU,IAGd3iB,EAAKgU,eAAiBhU,EAAKgU,eAAelT,KAAIC,wBAAAf,KAC9CA,EAAKwM,eAAiBxM,EAAKwM,eAAe1L,KAAIC,wBAAAf,KAC9CA,EAAKoU,WAAapU,EAAKoU,WAAWtT,KAAIC,wBAAAf,KACtCA,EAAKga,oBAAsBha,EAAKga,oBAAoBlZ,KAAIC,wBAAAf,KACxDA,EAAK0d,gBAAkB1d,EAAK0d,gBAAgB5c,KAAIC,wBAAAf,KAChDA,EAAKsiB,sBAAwBtiB,EAAKsiB,sBAAsBxhB,KAAIC,wBAAAf,KAC5DA,EAAKuiB,wBAA0BviB,EAAKuiB,wBAAwBzhB,KAAIC,wBAAAf,KAChEA,EAAK0iB,oBAAsB1iB,EAAK0iB,oBAAoB5hB,KAAIC,wBAAAf,KACxDA,EAAKwiB,wBAA0BxiB,EAAKwiB,wBAAwB1hB,KAAIC,wBAAAf,KAAOA,EA+XxE,OApbgCiB,YAAAkhB,EAAAriB,GAwDhCoB,YAAAihB,EAAA,EAAA9kB,IAAA,mBAAA8D,MAAA,WAGiB,IAAAE,EAAAnB,KACVxF,EAAawF,KAAKI,MAAMyH,gBAAgBrN,WAC5C4B,YAAQ,8BAAgC5B,EAAYwF,KAAKI,OAAO/D,KAAM,SAACC,GACrE,IACIomB,EADAnmB,EAAeD,EAEfqmB,EAAUpmB,EAAa4L,OAEC,OAAxBhH,EAAKf,MAAM/C,SACXqlB,EAAavhB,EAAKf,MAAM/C,SAAW,IAAM8D,EAAKf,MAAM1F,UAEpDgoB,EAAaC,EAAQ,GAAGloB,UAAY,IAAMkoB,EAAQ,GAAGjoB,SACrDyG,EAAKE,SAAS,CACZhE,SAAUslB,EAAQ,GAAGtlB,SACrB3C,SAAUioB,EAAQ,GAAGjoB,SACrBynB,cAAeO,KAIrB,IAAMpE,EAAQ/hB,EAAa4L,OAAOxL,IAAI,SAACC,EAAM8T,GAAK,OAAI7T,IAAAC,cAAC0I,IAAQ,CAACrI,IAAKuT,EAAOzP,MAAK,GAAAhE,OAAKL,EAAKnC,UAAS,KAAAwC,OAAIL,EAAKlC,WAAakC,EAAK4L,aAAa,MAAI5L,EAAKlC,YACrJyG,EAAKE,SAAS,CAACyG,aAAcwW,EAAO6D,cAAeO,GAAa,WAC7DvhB,EAAKihB,8BAIb,CAAAjlB,IAAA,wBAAA8D,MAAA,WASsB,IAAAgM,EAAAjN,KACfxF,EAAawF,KAAKI,MAAMyH,gBAAgBrN,WAExCooB,EADa5iB,KAAKI,MAAM+hB,cACIU,MAAM,KAClCxlB,EAAWulB,EAAe,GAC1BloB,EAAWkoB,EAAe,GAE9BxmB,YAAQ,mCAAqC5B,EAAa,IAAM6C,EAAW,IAAM3C,EAAW,KAAMsF,KAAKI,OAAO/D,KAAM,SAACC,GACnH,IAAIC,EAAeD,EAEfY,GADa+P,EAAK7M,MAAM/C,SAAiB4P,EAAK7M,MAAM1F,SACpC6B,EAAaG,YAAY,GAAGQ,eAC1CohB,EAAQ/hB,EAAaG,YAAYC,IAAI,SAACC,EAAM8T,GAAK,OAAI7T,IAAAC,cAAC0I,IAAQ,CAACrI,IAAKuT,EAAOzP,MAAOrE,EAAKM,eAAgBN,EAAKkB,qBAClHmP,EAAK5L,SAAS,CAACtG,kBAAmBujB,EAAOphB,cAAeA,GAAgB,WAClE+P,EAAK6G,uBAIhB,CAAA3W,IAAA,iBAAA8D,MAAA,WAWe,IAAAoM,EAAArN,KACZ5D,YAAQ,mBAAoB4D,KAAKI,OAAO/D,KAAM,SAACC,GAC7C,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC/B,IAAIrB,EAAUoB,EAAapB,QAC3BkS,EAAKhM,SAAS,CAACgL,YAAalR,GAAU,WAClCkS,EAAKmQ,yBAMhB,CAAArgB,IAAA,aAAA8D,MAAA,WAEW,IAAAwM,EAAAzN,KAEV5D,YAAQ,oBAAsB4D,KAAKI,MAAM/C,SAAU2C,KAAKI,OAAO/D,KAAM,SAACC,GACpE,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAE/B,IAAIkX,EAAYnX,EAAamX,UAC7BjG,EAAKpM,SAAS,CACRqS,UAAWA,SAItB,CAAAvW,IAAA,gBAAA8D,MAAA,SAIW0Z,EAAOlE,GACjB,IAAImE,EAAU,GAmBd,OAjBAxL,OAAOC,KAAKsL,GAAOlG,QAAQ,SAAStX,GAIhC,IAAI8hB,EAAYtE,EAAMxd,GAClBwT,EAAOsO,EACPC,EAAS,GAED,aAAR/hB,GAA8B,aAARA,GAA8B,aAARA,GAA8B,aAARA,GAA8B,aAARA,IAE1Fe,QAAQC,IAAIwc,EAAoB,eACzBpJ,MAAME,WAAWwN,KAAe6D,SAAS7D,KAC1CtO,EAAOc,WAAWwN,GAAWnN,QAAQ,IACzCoN,EAAS,UAEbtE,EAAQ3D,KAAKpa,IAAAC,cAAA,MAAImS,MAAOiQ,EAAQ/hB,IAAG,MAAAF,OAAQE,IAAQwT,MAEhDiK,IACV,CAAAzd,IAAA,eAAA8D,MAAA,SAEY9D,EAAKgiB,GAOd,OAAY,IAARhiB,EACO,MAEC,IAARA,EALO,IADE,IADJgiB,EAAQ,GAEI,GAMH,IAEdhiB,EAAM,GAAKA,EAAMgiB,EACV,MAEPhiB,IAASgiB,EAAM,EACR,WADX,IAIH,CAAAhiB,IAAA,sBAAA8D,MAAA,SAEmBoe,GAAW,IAQvB0D,EARuBlV,EAAA7N,KAMtBwf,EAASH,EAAW,GACrBD,EAAW,GAEThQ,OAAOC,KAAKmQ,GAAQ/K,QAAQ,SAAAtX,GAEtB,OADA4lB,EAAU,GACF5lB,GACJ,IAAK,eACC4lB,EAAU,KACV,MACN,IAAK,uBACCA,EAAU,oBACV,MACN,IAAK,WACCA,EAAU,YACV,MACN,IAAK,WACCA,EAAU,YACV,MACN,IAAK,WACCA,EAAU,YACV,MACN,IAAK,WACCA,EAAU,YACV,MACN,IAAK,WACCA,EAAU,WAIpB3D,EAASnI,KAAK8L,KAM1B,IACIzD,EADUlQ,OAAOC,KAAK+P,GACHtV,OAGnBwN,EAAe8H,EAASziB,IACxB,SAACC,EAAMO,GAAG,OAAIN,IAAAC,cAAA,MAAIK,IAAKA,EAAKY,UAAW,cAAgB6H,MAAOiI,EAAK0R,aAAapiB,EAAImiB,IAAY1iB,KAUhGkS,EAPeuQ,EAAW1iB,IAAI,SAAC6iB,EAAQriB,GAAG,OAClCN,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQE,IACX0Q,EAAK4R,cAAcD,EAAQriB,MAO3C6C,KAAKqB,SAAS,CAAEiS,cAAgBxE,EAAWwI,aAAcA,MAE5D,CAAAna,IAAA,iBAAA8D,MAAA,WAGe,IAAAiU,EAAAlV,KACZA,KAAKqB,SAAS,CAAC2d,aAAa,IAC5B,IACI4D,EADa5iB,KAAKI,MAAM+hB,cACIU,MAAM,KAClCxlB,EAAWulB,EAAe,GAC1BloB,EAAWkoB,EAAe,GAE1B5E,EAAM,qCACNgF,EAAS,sBACT3lB,EAAW,IACX2gB,EAAM,2CACNgF,EAAS,yBAGbhjB,KAAKqB,SAAS,CAACohB,QAAO,iDAAAxlB,OAAmD+lB,EAAM,eAAA/lB,OAAcI,EAAQ,WAAAJ,OAAUvC,EAAQ,UAAAuC,OAAS+C,KAAKI,MAAMlD,cAAa,gBAAAD,OAAe+C,KAAKI,MAAMiM,YAAW,WAAApP,OAAU+C,KAAKI,MAAMyH,gBAAgB2F,SAClOpR,YAAQ4hB,EAAM3gB,EAAW,IAAM3C,EAAW,IAAMsF,KAAKI,MAAMlD,cAAgB,IAAM8C,KAAKI,MAAMiM,YAAarM,KAAKI,OAAO/D,KAAM,SAACC,GACtH,IAAIC,EAAeD,GAEQ,IAAvBC,EAAaC,OAGf0Y,EAAK4E,oBAAoBvd,EAAa+hB,OAGtCpJ,EAAK7T,SAAS,CAAC9F,SAAS,EAAOyjB,aAAa,KAG5C9gB,QAAQC,IAAI,0CAGnB,CAAAhB,IAAA,kBAAA8D,MAAA,WAcC,IAFA,IAAImd,EAAgB,GAEXC,EAAI,EAAGA,GAAKre,KAAKI,MAAMiM,YAAagS,IACzCD,EAAcnH,KAAKoH,GAEvB,IAAMC,EAAQF,EAAczhB,IAAI,SAACC,EAAM8T,GAAK,OAAI7T,IAAAC,cAAC0I,IAAQ,CAACrI,IAAKuT,EAAOzP,MAAOrE,GAAM,WAASA,KAE5FoD,KAAKqB,SAAS,CAAC+b,eAAgBkB,MAElC,CAAAnhB,IAAA,SAAA8D,MAAA,WAoBC,OAGApE,IAAAC,cAAA,OAAKiB,UAAU,aAEblB,IAAAC,cAACkF,IAAa,CACAzG,QAASyE,KAAKI,MAAM7E,QACpB0G,QAAQ,UACRC,aAAa,UACbC,UAAU,UACVC,QAAQ,2BACRC,KAAK,OAGjBxF,IAAAC,cAAA,OAAKiB,UAAU,QACblB,IAAAC,cAAA,OAAKiB,UAAU,eACTlB,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,WAAWD,UAAW3F,IAAMC,GAAE,SAAYuG,MAAM,WAAU,cACxF1G,IAAAC,cAAA,QAAMiB,UAAU,2CAA0C,qBAC1DlB,IAAAC,cAAA,cAAQ,WAEPD,IAAAC,cAAC+F,IAAW,CAAC9E,UAAU,QAEhBlB,IAAAC,cAAC2b,KAAM,CACLiG,QAAQ,cACRxb,MAAM,oBACNC,GAAG,aACHlC,MAAQjB,KAAKI,MAAM+hB,cACnBrhB,SAAUd,KAAKkiB,oBAEXliB,KAAKI,MAAM0H,eAKzBjL,IAAAC,cAAA,cAAQ,gBAEPD,IAAAC,cAAC+F,IAAW,CAAC9E,UAAU,QAEhBlB,IAAAC,cAAC2b,KAAM,CACLiG,QAAQ,mBACRvb,GAAG,gBACHlC,MAAQjB,KAAKI,MAAMlD,cACnB4D,SAAUd,KAAKqiB,yBAEXriB,KAAKI,MAAMrF,oBAInB8B,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YAAY5E,UAAU,OAAO0H,QAASzF,KAAKsiB,wBAAyB/e,MAAM,WAAU,gBAI9H1G,IAAAC,cAAA,OAAKiB,UAAU,aACflB,IAAAC,cAACsB,IAAc,CAACd,MAAO,CAACqV,WAAY3S,KAAKI,MAAM4e,YAAc,UAAY,YAGvEniB,IAAAC,cAAA,MAAIiB,UAAU,cAAa,+BAG3BlB,IAAAC,cAAA,SAAOiB,UAAU,uEACblB,IAAAC,cAAA,aACAD,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQ,GAAKc,UAAU,iBAAiBiC,KAAKI,MAAMkX,cAC1Dza,IAAAC,cAAA,MAAIK,IAAG,MAAAF,OAAQ,IAAM+C,KAAKI,MAAMmZ,iBAEhC1c,IAAAC,cAAA,aAAQkD,KAAKI,MAAMkT,gBAGvBzW,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YAAYD,UAAW3F,IAAMC,GAAE,SAAYuG,MAAM,WAAU,iBAO7F1G,IAAAC,cAACgb,KAAM,CAACmL,YAAU,EAACte,KAAM3E,KAAKI,MAAMmiB,aAAchd,QAASvF,KAAKwiB,qBAChE3lB,IAAAC,cAACsJ,IAAM,KACLvJ,IAAAC,cAACwJ,IAAO,KACNzJ,IAAAC,cAACyJ,IAAU,CAAC2c,KAAK,QAAQ3f,MAAM,UAAUkC,QAASzF,KAAKwiB,oBAAqBhc,aAAW,SACrF3J,IAAAC,cAACqmB,KAAS,OAEZtmB,IAAAC,cAAC2F,IAAU,CAACE,QAAQ,MAAM,sBAM9B9F,IAAAC,cAACob,KAAa,KACVrb,IAAAC,cAAA,UAAQyF,IAAKvC,KAAKI,MAAMqiB,QAAS1kB,UAAU,oBAWpD,CAAAZ,IAAA,qBAAA8D,MAAA,SAEkB4U,EAAWC,MAE7B,CAAA3Y,IAAA,oBAAA8D,MAAA,WAECjB,KAAKsM,iBACLtM,KAAKkU,aACLlU,KAAKojB,uBACNnB,EApbgC,CAASxe,aCuBtC4f,GAAgC1b,eAAK,kBAAMtJ,EAAAmD,EAAA,GAAAnF,KAAAgC,EAAAuC,KAAA,aAC3C0iB,GAAmB3b,eAAK,kBAAMtJ,EAAAmD,EAAA,GAAAnF,KAAAgC,EAAAuC,KAAA,aAC9B2iB,GAAiB5b,eAAK,kBAAMtJ,EAAAmD,EAAA,GAAAnF,KAAAgC,EAAAuC,KAAA,aAC5B4iB,GAAmB7b,eAAK,kBAAMtJ,EAAAmD,EAAA,IAAAnF,KAAAgC,EAAAuC,KAAA,aAE9B6iB,GAAgB9b,eAAK,kBAAMtJ,EAAAmD,EAAA,GAAAnF,KAAAgC,EAAAuC,KAAA,aAC3B8iB,GAAgB/b,eAAK,kBAAMtJ,EAAAmD,EAAA,IAAAnF,KAAAgC,EAAAuC,KAAA,aAC3B+iB,GAAkBhc,eAAK,kBAAMtJ,EAAAmD,EAAA,GAAAnF,KAAAgC,EAAAuC,KAAA,aAC7BgjB,GAAqBjc,eAAK,kBAAMtJ,EAAAmD,EAAA,IAAAnF,KAAAgC,EAAAuC,KAAA,aAChCijB,GAAqBlc,eAAK,kBAAMtJ,EAAAmD,EAAA,GAAAnF,KAAAgC,EAAAuC,KAAA,aAChCkjB,GAA2Bnc,eAAK,kBAAMtJ,EAAAmD,EAAA,GAAAnF,KAAAgC,EAAAuC,KAAA,aAwW7BmjB,GArWL,SAAAnkB,GAIR,SAAAmkB,EAAYlkB,GAAM,IAAAC,EAqC2C,OArC3CC,YAAAC,KAAA+jB,IAIdjkB,EAAAG,YAAAD,KAAAE,YAAA6jB,GAAA5jB,KAAAH,KAAMH,KAqCVsE,eAAiB,WACdtI,eAAemoB,QACflkB,EAAKuB,SAAS,CAACwG,gBAAiBpI,iBAClCK,EA2DDmkB,iBAAmB,WACjBnkB,EAAKuB,SAAS,CAAC6iB,WAAU,KAnGvBpkB,EAAKM,MAAQ,CACTyH,gBAAiBpI,cACjBjF,WAAY,EACZ6F,SAAS,GACTC,SAAS,GACTwH,aAAcjL,IAAAC,cAAA,YACdyD,UAAU,EACV4jB,mBAAmB,EACnB3kB,aAAa,EACb8M,eAAiB,KACjB+M,YAAe,KACfwG,eAAkB,KAClBuE,gBAAmB,KACnBC,iBAAoB,KACpBnoB,eAAgB,EAChBC,aAAc,EACdmoB,sBAAuB,GACvBzD,kBAAkB,EAClB0D,cAAe,GACfL,WAAW,GAEfpkB,EAAKmI,cAAgBnI,EAAKmI,cAAcrH,KAAIC,wBAAAf,KAC5CA,EAAKqE,eAAiBrE,EAAKqE,eAAevD,KAAIC,wBAAAf,KAC9CA,EAAK0kB,UAAY,KACjB1kB,EAAK2kB,SAAW3kB,EAAK4kB,UAAU9jB,KAAIC,wBAAAf,KACnCA,EAAK6kB,SAAW7kB,EAAK8kB,UAAUhkB,KAAIC,wBAAAf,KACnCA,EAAK+kB,OAAS/kB,EAAKglB,QAAQlkB,KAAIC,wBAAAf,KAC/BA,EAAKilB,uBAAyBjlB,EAAKilB,uBAAuBnkB,KAAIC,wBAAAf,KAC9DA,EAAKklB,mBAAqBllB,EAAKklB,mBAAmBpkB,KAAIC,wBAAAf,KACtDA,EAAKihB,eAAiBjhB,EAAKihB,eAAengB,KAAIC,wBAAAf,KAC9CA,EAAKmlB,qBAAuBnlB,EAAKmlB,qBAAqBrkB,KAAIC,wBAAAf,KAC1DA,EAAKolB,sBAAwBplB,EAAKolB,sBAAsBtkB,KAAIC,wBAAAf,KAC5DA,EAAKmkB,iBAAmBnkB,EAAKmkB,iBAAiBrjB,KAAIC,wBAAAf,KAAOA,EAwT5D,OAjWOiB,YAAAgjB,EAAAnkB,GA2CPoB,YAAA+iB,EAAA,EAAA5mB,IAAA,YAAA8D,MAAA,SAQSO,MAET,CAAArE,IAAA,YAAA8D,MAAA,SAESO,MAGT,CAAArE,IAAA,UAAA8D,MAAA,SAEOO,GAGN3F,eAAemoB,QACfhkB,KAAKqB,SAAS,CAAC8iB,mBAAmB,MAEpC,CAAAhnB,IAAA,qBAAA8D,MAAA,WACoB,IAAAE,EAAAnB,KAClB5D,YAAQ,yBAA0B4D,KAAKI,OAAO/D,KAAM,SAACC,GACnD,IAAIC,EAAeD,GACQ,IAAvBC,EAAaC,OAEb2E,EAAKE,SAAS,CACVgjB,iBAAmB9nB,EAAagQ,aAChCpQ,aAAcI,EAAagY,QAC5B,WACCpT,EAAK+jB,wBACDhV,SAAS/O,EAAKf,MAAMjE,cAAgB,EACpCgF,EAAK8jB,uBAEP9jB,EAAKE,SAAS,CACZijB,sBAAuB,qBACvBzD,kBAAkB,UAMjC,CAAA1jB,IAAA,6BAAA8D,MAAA,WAE2B,IAAAgM,EAAAjN,KAC1B5D,YAAQ,iCAAiC4D,KAAKI,MAAMyH,gBAAgBrN,WAAYwF,KAAKI,OAAO/D,KAAM,SAACC,GACjG,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC7B,IAAM4Y,EAAU9Y,EAAO8Y,SAAW,GAClClX,QAAQC,IAAIiX,EAAQtL,QAChBsL,EAAQtL,OAAS,IACnB5L,QAAQC,IAAI,kBACZ8O,EAAK5L,SAAS,CACZkjB,cAAgBhoB,EAAa6Y,QAC7B8O,WAAW,UAKtB,CAAA/mB,IAAA,wBAAA8D,MAAA,WASC,IAAI0Z,EAAQ,CACRpO,aAAcvM,KAAKI,MAAMyf,eACzBwE,iBAAkBrkB,KAAKI,MAAMikB,iBAC7BnoB,eAAiB8D,KAAKI,MAAMlE,eAC5BC,aAAe6D,KAAKI,MAAMjE,aAC1B4L,WAAa/H,KAAKI,MAAMkM,gBAG5BzQ,eAAe0F,QAAQ,UAAU5F,KAAKwD,UAAUwb,IAChD3a,KAAKiI,kBACN,CAAA9K,IAAA,yBAAA8D,MAAA,WAEuB,IAAAoM,EAAArN,KAElB5D,YAAQ,mBAAoB4D,KAAKI,OAAO/D,KAAM,SAACC,GAC7C,IAAIC,EAAeD,GACQ,IAAvBC,EAAaC,OAEf6Q,EAAKhM,SAAS,CACZiL,eAAkB/P,EAAapB,QAC/Bke,YAAc9c,EAAa8c,YAC3BwG,eAAiBtjB,EAAagQ,aAC9B6X,gBAAkB7nB,EAAa4jB,cAC/BjkB,eAAgBK,EAAagY,QAC5B,WAC4C,IAAxCrE,SAAS7C,EAAKjN,MAAMlE,iBACrBmR,EAAK0T,iBACL1T,EAAK6X,yBAEL7X,EAAK2X,2BAIpB,CAAA7nB,IAAA,iBAAA8D,MAAA,WAIC,IAAIkkB,EAAkBhY,KAAOnN,KAAKI,MAAMyf,eAAiB,YAAa,oBAAoBuF,MAAM,QAAQC,OAIxG,OAFAnnB,QAAQC,IAAIgnB,GAERA,EAAkB,OAClBnlB,KAAKqB,SAAS,CACZijB,sBAAwBnX,KAAOnN,KAAKI,MAAMyf,eAAiB,YAAa,YAAYuF,MAAM,OAAOE,UACjGzE,kBAAkB,SAKpB7gB,KAAKqB,SAAS,CACZijB,sBAAwB,qBACxBzD,kBAAkB,MAMzB,CAAA1jB,IAAA,uBAAA8D,MAAA,WAGC,IAAIof,EAAMlT,OAASC,OAAO,cAE1B,OAAIpN,KAAKI,MAAMikB,kBAAoBhE,OAC/BrgB,KAAKqB,SAAS,CACZwe,eAAgB7f,KAAKI,MAAMikB,iBAC3BC,sBAAuBnX,KAAOnN,KAAKI,MAAMikB,iBAAkB,YAAYe,MAAM,OAAOE,UACpFzE,kBAAkB,SAKtB7gB,KAAKqB,SAAS,CACZijB,sBAAuB,qBACvBzD,kBAAkB,MAKvB,CAAA1jB,IAAA,gBAAA8D,MAAA,SAEaiM,GACZ,MAAc,eAAVA,EACMC,KAAOD,GAAOE,OAAO,eAErB,cACX,CAAAjQ,IAAA,gBAAA8D,MAAA,WAGc,IAAAwM,EAAAzN,KAIb,GAFA9B,QAAQC,IAAI,iBAEP6B,KAAKI,MAAMyH,gBAAhB,CAGA,IAAIrN,EAAawF,KAAKI,MAAMyH,gBAAgBrN,WAC5C4B,YAAQ,8BAAgC5B,EAAYwF,KAAKI,OAAO/D,KAAM,SAACC,GACjE,IAAIC,EAAeD,EACnB,IAA2B,IAAvBC,EAAaC,MAAgB,CAC7B,IAAIC,EAAUF,EAAa4L,OAAOxL,IAC5B,SAAAC,GAAI,OAAIC,IAAAC,cAAA,OAAKK,IAAKP,EAAKnC,UAAWsD,UAAU,mBAClClB,IAAAC,cAAA,OAAKiB,UAAU,kCACXnB,EAAK4L,aAAa,IAAE5L,EAAK6L,WAE7B5L,IAAAC,cAAA,OAAKiB,UAAU,aACXlB,IAAAC,cAACxC,UAAa,CAACG,UAAWmC,EAAKnC,UAAWD,WAAYiT,EAAKrN,MAAMyH,gBAAgBrN,iBAIrGiT,EAAKpM,SAAS,CAACyG,aAAcrL,SAG/ByB,QAAQC,IAAI,wCAGrB,CAAAhB,IAAA,WAAA8D,MAAA,SAEQO,GACPxB,KAAKqB,SAAQI,YAAA,GAAGD,EAAEE,OAAOC,KAAOH,EAAEE,OAAOT,UAC1C,CAAA9D,IAAA,SAAA8D,MAAA,WAEQ,IAAA4M,EAAA7N,KAED8N,EAAkBC,aAAW,SAACC,GAAK,MAAM,CAC7CC,KAAM,CACJC,gBAAiBF,EAAMG,QAAQC,OAAOC,MACtC9K,MAAOyK,EAAMG,QAAQC,OAAOE,OAE9BpP,KAAM,CACJlB,SAAU,GACVkI,QAAS,SAPW6H,CASpBQ,MAEJ,OAAKvO,KAAKI,MAAMyH,gBAIZ7H,KAAKI,MAAM+jB,kBACJtnB,IAAAC,cAAC+E,IAAQ,CAAC7E,GAAI,oBAOzBH,IAAAC,cAAA,OAAKqG,GAAG,aACFtG,IAAAC,cAAC4G,EAAM,CAACmB,aAAc7E,KAAKI,MAAMyH,gBAAiBzD,cAAepE,KAAKmE,eAAevD,KAAKZ,QAC1FnD,IAAAC,cAAC8jB,GAAc,CAACC,iBAAkB7gB,KAAKI,MAAMygB,iBAAkBrmB,WAAawF,KAAKI,MAAMyH,gBAAgBrN,WAAYumB,eAAgB/gB,KAAKI,MAAMkkB,sBAAuBnpB,QAAW6E,KAAKI,MAAMkM,eAAgBwU,YAAe9gB,KAAKkP,cAAclP,KAAKI,MAAMyf,gBAAiBmB,WAAYhhB,KAAKI,MAAMjE,eAChSU,IAAAC,cAACyoB,KAAS,CACJC,IAAK,SAAAA,GAAS3X,EAAK2W,UAAYgB,GAC/BC,QAASjV,SACTmU,SAAU3kB,KAAK2kB,SACfE,OAAQ7kB,KAAK6kB,OACbJ,SAAUzkB,KAAKykB,SACfiB,SAAU,IACVC,QAAS,MAEf9oB,IAAAC,cAAC+L,WAAQ,CAACC,SAAUjM,IAAAC,cAAAD,IAAAgB,SAAA,KAAEhB,IAAAC,cAAA,OAAKiB,UAAU,YAAgBlB,IAAAC,cAAA,OAAKiB,UAAU,cAE9DlB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,QAAQC,OAAK,EAACpjB,UAAW,SAAA7C,GAAK,OAAIhD,IAAAC,cAAC8K,GAAM,CAACG,WAAY8F,EAAKzN,MAAMkM,oBAC7EzP,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,+DAA+DnjB,UAAWif,GAAuBmE,OAAK,IAClHjpB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,+DAA+DnjB,UAAW,SAAA7C,GAAK,OAAIhD,IAAAC,cAACymB,GAAmB1jB,IAAWimB,OAAK,IACnIjpB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,sCAAsCnjB,UAAW,SAAA7C,GAAK,OAAIhD,IAAAC,cAAC8mB,GAAuB/jB,IAAWimB,OAAK,IAC9GjpB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,sCAAsCnjB,UAAWma,GAAaiJ,OAAK,IAC/EjpB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,6CAA6CnjB,UAAWue,GAAoB6E,OAAK,IAC7FjpB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,0EAA0EnjB,UAAWuf,GAA+B6D,OAAK,IACrIjpB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,gCAAgCnjB,UAAWuf,GAA+B6D,OAAK,IAC3FjpB,IAAAC,cAAC8kB,GAAW,KACR/kB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,oDAAoDnjB,UAAWkd,GAAckG,OAAK,IAC9FjpB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,iEAAiEC,OAAK,EAACpjB,UAAWsJ,KAE9FnP,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,oEAAoEC,OAAK,EAACpjB,UAAWoQ,KACjGjW,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,sFAAsFC,OAAK,EAACpjB,UAAWqT,KACnHlZ,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,4DAA4DC,OAAK,EAACpjB,UAAWgf,KACzF7kB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,oDAAoDnjB,UAAWie,GAAamF,OAAK,IAC7FjpB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,8DAA8DnjB,UAAW4W,GAAuBwM,OAAK,IACjHjpB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,+EAA+EnjB,UAAW,SAAA7C,GAAK,OAAIhD,IAAAC,cAACumB,GAAkCxjB,IAAWimB,OAAK,IAClKjpB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,yDAAyDnjB,UAAW,SAAA7C,GAAK,OAAIhD,IAAAC,cAACwmB,GAAqBzjB,IAAWimB,OAAK,IAE/HjpB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,mEAAmEnjB,UAAW,SAAA7C,GAAK,OAAIhD,IAAAC,cAAC0mB,GAAqB3jB,IAAWimB,OAAK,IACzIjpB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,yDAAyDnjB,UAAW,SAAA7C,GAAK,OAAIhD,IAAAC,cAAC4f,GAAqB7c,IAAWimB,OAAK,IAC/HjpB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,4EAA4EnjB,UAAW,SAAA7C,GAAK,OAAIhD,IAAAC,cAACgnB,GAA6BjkB,IAAWimB,OAAK,IAC1JjpB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,2EAA2EnjB,UAAW,SAAA7C,GAAK,OAAIhD,IAAAC,cAAC2mB,GAAkB5jB,IAAWimB,OAAK,IAC9IjpB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,wBAAwBnjB,UAAW,SAAA7C,GAAK,OAAIhD,IAAAC,cAAC4mB,GAAkB7jB,IAAWimB,OAAK,IAC3FjpB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,2EAA2EnjB,UAAW,SAAA7C,GAAK,OAAIhD,IAAAC,cAAC6mB,GAAoB9jB,IAAWimB,OAAK,IAEhJjpB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,4BAA4BnjB,UAAW,SAAA7C,GAAK,OAAIhD,IAAAC,cAAC+mB,GAAuBhkB,IAAWimB,OAAK,IACpGjpB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,6DAA6DnjB,UAAWkW,GAAsBkN,OAAK,IAE/GjpB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,wEAAwEnjB,UAAWqc,GAAsB+G,OAAK,KAE9HjpB,IAAAC,cAACilB,GAAc,KACXllB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,qDAAqDC,OAAK,EAACpjB,UAAW2e,OAM5FxkB,IAAAC,cAACgb,KAAM,CAAC9U,WAAW,EAAM+U,SAAU,KAAMC,kBAAgB,0BAA0BrT,KAAM3E,KAAKI,MAAM8jB,WACtGrnB,IAAAC,cAACmb,KAAW,CAAC9U,GAAG,0BAA0BoC,QAASvF,KAAKikB,kBAAkB,wBAG1EpnB,IAAAC,cAACob,KAAa,KACdrb,IAAAC,cAAC6S,KAAK,KACJ9S,IAAAC,cAAC8S,KAAS,KACR/S,IAAAC,cAAC+R,KAAQ,KACPhS,IAAAC,cAACgR,EAAe,KAAC,WACjBjR,IAAAC,cAACgR,EAAe,KAAC,QACjBjR,IAAAC,cAACgR,EAAe,KAAC,WAGrBjR,IAAAC,cAAC+S,KAAS,KACP7P,KAAKI,MAAMmkB,cAAc5nB,IAAI,SAACopB,GAAO,OACpClpB,IAAAC,cAAC+R,KAAQ,CAAC1R,IAAK4oB,EAAQC,WACrBnpB,IAAAC,cAACgR,EAAe,KAAEiY,EAAQzQ,sBAC1BzY,IAAAC,cAACgR,EAAe,KAAEiY,EAAQE,MAC1BppB,IAAAC,cAACgR,EAAe,KAAEiY,EAAQvd,aAAa,MAAIud,EAAQrrB,gBAO1DmC,IAAAC,cAAC4b,KAAa,KACb7b,IAAAC,cAACwG,IAAM,CAACmC,QAASzF,KAAKikB,kBAAkB,aA1FlCpnB,IAAAC,cAAC+E,IAAQ,CAAC7E,GAAI,aAkG3B,CAAAG,IAAA,oBAAA8D,MAAA,WAICjB,KAAK+kB,yBACL/kB,KAAKkmB,iCACNnC,EAjWO,CAAStgB,aCrBJ0iB,WA3BD,SAAAvmB,GAEZ,SAAAumB,EAAYtmB,GAAM,OAAAE,YAAAC,KAAAmmB,GAAAlmB,iBAAAH,GAsBjB,OAxBWiB,YAAAolB,EAAAvmB,GAKXoB,YAAAmlB,EAAA,EAAAhpB,IAAA,WAAA8D,MAAA,SAGQO,GACPxB,KAAKqB,SAAQI,YAAA,GAAGD,EAAEE,OAAOC,KAAOH,EAAEE,OAAOT,UAC1C,CAAA9D,IAAA,SAAA8D,MAAA,WAMC,OAEApE,IAAAC,cAAA,OAAKiB,UAAU,aACTlB,IAAAC,cAAA,UAAI,kBAKXqpB,EAxBW,CAAS1iB,iCCiKR2iB,GAvJK,SAAAxmB,GAElB,SAAAwmB,EAAYvmB,GAAM,IAAAC,EAAAC,YAAAC,KAAAomB,GACdtmB,EAAAG,YAAAD,KAAAE,YAAAkmB,GAAAjmB,KAAAH,KAAMH,IAEN,IAAI4X,EAAiBhY,cACjBmF,EAAa,KACb4I,EAAQ,KAgB6B,OAfrCiK,IACA7S,EAAc6S,EAAe7S,WAC7B4I,EAAQiK,EAAejK,OAI3B1N,EAAKM,MAAQ,CACTwE,WAAYA,EACZtE,SAAS,GACT+lB,WAAW,GACX7Y,MAAOA,EACPjN,UAAU,EACVf,aAAa,GAEjBM,EAAKwmB,YAAcxmB,EAAKwmB,YAAY1lB,KAAIC,wBAAAf,KACxCA,EAAKgB,SAAWhB,EAAKgB,SAASF,KAAIC,wBAAAf,KAAOA,EA6H5C,OApJiBiB,YAAAqlB,EAAAxmB,GAwBjBoB,YAAAolB,EAAA,EAAAjpB,IAAA,cAAA8D,MAAA,SAEWC,GAAM,IAAAC,EAAAnB,KAEhB,GADAkB,EAAME,iBACFpB,KAAKI,MAAME,UAAYN,KAAKI,MAAMimB,WAAW,CAC7C,GAAIrmB,KAAKI,MAAME,WAAaN,KAAKI,MAAMimB,WAEnC,YADAE,MAAM,6CAIV/nB,YAAS,wBAAyBwB,KAAKI,OAAO/D,KAAM,SAACC,IAIxB,IAHRA,EAGFE,MAEb2E,EAAKE,SAAS,CAACd,UAAU,IAGzBrC,QAAQC,IAAI,qCAMvB,CAAAhB,IAAA,WAAA8D,MAAA,SAEQO,GACPxB,KAAKqB,SAAQI,YAAA,GAAGD,EAAEE,OAAOC,KAAOH,EAAEE,OAAOT,UAC1C,CAAA9D,IAAA,SAAA8D,MAAA,WAIC,IAAIW,EAAgB/E,IAAAC,cAAA,YAMpB,GAJIkD,KAAKI,MAAMZ,cACXoC,EAAiB/E,IAAAC,cAAA,QAAMiB,UAAU,2BAA0B,MAAGlB,IAAAC,cAAA,cAAQ,SAAc,2DAGpFkD,KAAKI,MAAMG,SACZ,OAAQ1D,IAAAC,cAAC+E,IAAQ,CAAC7E,GAAI,UAGzB,IAAKgD,KAAKI,MAAMwE,WACd,OAAQ/H,IAAAC,cAAC+E,IAAQ,CAAC7E,GAAI,WAmCxB,OAGEH,IAAAC,cAAA,OAAKiB,UAAU,QACTlB,IAAAC,cAACiF,IAAW,MACNlF,IAAAC,cAACwF,IAAK,CAACvE,UAAU,SAEjBlB,IAAAC,cAAC4J,IAAM,CAAC3I,UAAU,UAChBlB,IAAAC,cAAA,KAAGiB,UAAU,kBAAiB,SAK9BlB,IAAAC,cAAC2F,IAAU,CAACC,UAAU,KAAKC,QAAQ,MAAK,2BAGvCf,EACD/E,IAAAC,cAAA,WACED,IAAAC,cAAA,cAAQ,4DAEVD,IAAAC,cAAA,QAAMiB,UAAU,aAAc6E,SAAU5C,KAAKsmB,aAC3CzpB,IAAAC,cAAC+F,IAAW,CAACC,OAAO,SAASC,UAAQ,EAACC,WAAS,GAC7CnG,IAAAC,cAACyb,KAAU,CAACC,QAAQ,SAAQ,uBAC5B3b,IAAAC,cAAC0pB,KAAK,CAAC7kB,KAAK,WAAWwB,GAAG,WAAWzE,KAAK,WAAW0E,aAAa,gBAAatC,SAAUd,KAAKc,SAAUuC,WAAS,KAEnHxG,IAAAC,cAAC+F,IAAW,CAACC,OAAO,SAASC,UAAQ,EAACC,WAAS,GAC7CnG,IAAAC,cAACyb,KAAU,CAACC,QAAQ,YAAW,2BAC/B3b,IAAAC,cAAC0pB,KAAK,CAAC7kB,KAAK,aAAawB,GAAG,aAAazE,KAAK,WAAWoC,SAAUd,KAAKc,SAAUsC,aAAa,6BAGjGvG,IAAAC,cAACwG,IAAM,CACL5E,KAAK,SACLsE,WAAS,EACTL,QAAQ,YACRY,MAAM,UACNxF,UAnEL,SAAAiQ,GAAK,MAAK,CACvByY,KAAIhlB,YAAA,CACFmE,MAAO,OACP9D,QAAS,QACT4kB,WAAiC,EAArB1Y,EAAMyB,QAAQkX,KAC1BC,YAAkC,EAArB5Y,EAAMyB,QAAQkX,MAC1B3Y,EAAM6Y,YAAYC,GAAG,IAA2B,EAArB9Y,EAAMyB,QAAQkX,KAAW,GAAK,CACxD/gB,MAAO,IACP8gB,WAAY,OACZE,YAAa,SAGjBG,MAAO,CACLC,UAAgC,EAArBhZ,EAAMyB,QAAQkX,KACzB7kB,QAAS,OACTmlB,cAAe,SACfhhB,WAAY,SACZC,QAAO,GAAAjJ,OAA0B,EAArB+Q,EAAMyB,QAAQkX,KAAQ,OAAA1pB,OAA2B,EAArB+Q,EAAMyB,QAAQkX,KAAQ,OAAA1pB,OAA2B,EAArB+Q,EAAMyB,QAAQkX,KAAQ,OAE5Fre,OAAQ,CACNxF,OAAQkL,EAAMyB,QAAQkX,KACtBzY,gBAAiBF,EAAMG,QAAQ+Y,UAAUT,MAE3CU,KAAM,CACJvhB,MAAO,OACPohB,UAAWhZ,EAAMyB,QAAQkX,MAE3BS,OAAQ,CACNJ,UAAgC,EAArBhZ,EAAMyB,QAAQkX,QAuCSS,QACnB,kBASpBhB,EApJiB,CAAS3iB,aCLvBggB,WAAgB9b,eAAK,kBAAMtJ,EAAAmD,EAAA,GAAAnF,KAAAgC,EAAAuC,KAAA,cAC3B+iB,GAAkBhc,eAAK,kBAAMtJ,EAAAmD,EAAA,GAAAnF,KAAAgC,EAAAuC,KAAA,aA+DpBymB,GA7DF,SAAAznB,GAEX,SAAAynB,EAAYxnB,GAAM,IAAAC,EAWb,OAXaC,YAAAC,KAAAqnB,IAEdvnB,EAAAG,YAAAD,KAAAE,YAAAmnB,GAAAlnB,KAAAH,KAAMH,KAaVsE,eAAiB,WACdtI,eAAemoB,QACflkB,EAAKuB,SAAS,CAACwG,gBAAiBpI,iBAd/BK,EAAKM,MAAQ,CACTyH,gBAAiBpI,cACjBjF,WAAY,EACZ6F,SAAS,GACTC,SAAS,GACTwH,aAAcjL,IAAAC,cAAA,YACdyD,UAAU,EACVf,aAAa,GAChBM,EA4CJ,OAzDUiB,YAAAsmB,EAAAznB,GAeVoB,YAAAqmB,EAAA,EAAAlqB,IAAA,WAAA8D,MAAA,SASQO,GACPxB,KAAKqB,SAAQI,YAAA,GAAGD,EAAEE,OAAOC,KAAOH,EAAEE,OAAOT,UAC1C,CAAA9D,IAAA,SAAA8D,MAAA,WAMC,OAAKjB,KAAKI,MAAMyH,gBAQhBhL,IAAAC,cAAA,WAEMD,IAAAC,cAAC+L,WAAQ,CAACC,SAAUjM,IAAAC,cAAA,OAAKiB,UAAU,aAC7BlB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,4EAA4EnjB,UAAW,SAAA7C,GAAK,OAAIhD,IAAAC,cAAC2mB,GAAkB5jB,IAAWimB,OAAK,IAC/IjpB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,8EAA8EnjB,UAAW,SAAA7C,GAAK,OAAIhD,IAAAC,cAAC6mB,GAAoB9jB,IAAWimB,OAAK,MAXrJjpB,IAAAC,cAAC+E,IAAQ,CAAC7E,GAAI,aAmBzB,CAAAG,IAAA,oBAAA8D,MAAA,gBAKAomB,EAzDU,CAAS5jB,aCyDP6jB,WA5DK,SAAA1nB,GAElB,SAAA0nB,EAAYznB,GAAM,IAAAC,EAKf,OALeC,YAAAC,KAAAsnB,IAEhBxnB,EAAAG,YAAAD,KAAAE,YAAAonB,GAAAnnB,KAAAH,KAAMH,KACDO,MAAQ,GAEZN,EAkDF,OAzDiBiB,YAAAumB,EAAA1nB,GASjBoB,YAAAsmB,EAAA,EAAAnqB,IAAA,WAAA8D,MAAA,SAGQO,GACPxB,KAAKqB,SAAQI,YAAA,GAAGD,EAAEE,OAAOC,KAAOH,EAAEE,OAAOT,UAC1C,CAAA9D,IAAA,SAAA8D,MAAA,WAMC,OAEEpE,IAAAC,cAAA,OAAKiB,UAAU,aAGflB,IAAAC,cAACyS,KAAI,CAACC,WAAS,EAACC,QAAS,EAAG1R,UAAU,eAClClB,IAAAC,cAACyS,KAAI,CAAC3S,MAAI,EAAC8S,GAAI,IAEX7S,IAAAC,cAACwF,IAAK,CAACvE,UAAU,gBACTlB,IAAAC,cAAC4J,IAAM,CAAC3I,UAAU,cACFlB,IAAAC,cAAA,KAAGiB,UAAU,4BAA2B,aAIxDlB,IAAAC,cAAC2F,IAAU,CAACE,QAAQ,KAAKD,UAAU,KAAK3E,UAAU,UAAS,4BAG3DlB,IAAAC,cAACyS,KAAI,CAAC3S,MAAI,EAAC8S,GAAI,EAAG3R,UAAU,aAC5BlB,IAAAC,cAAA,OAAKiB,UAAU,YAAYwE,IAAI,wBAAwBC,IAAI,mBAE3D3F,IAAAC,cAAC2F,IAAU,CAACE,QAAQ,QAAQD,UAAU,MAAM,oJAG5C7F,IAAAC,cAAA,WACAD,IAAAC,cAACwG,IAAM,CAAC5E,KAAK,SAASiE,QAAQ,YAAY5E,UAAU,cAAc2E,UAAW3F,IAAMC,GAAI,UAAYuG,MAAM,WAAU,sBAatI+jB,EAzDiB,CAAS7jB,cCoBd8jB,GAlBA,WAEX,OACQ1qB,IAAAC,cAAC0qB,IAAa,KACV3qB,IAAAC,cAAC2qB,IAAM,KACC5qB,IAAAC,cAAC8oB,IAAK,CAACE,OAAK,EAACD,KAAK,IAAInjB,UAAW/C,IACjC9C,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,SAASnjB,UAAW/C,IAChC9C,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,kBAAkBnjB,UAAW0jB,KACzCvpB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,QAAQnjB,UAAWqhB,KAC/BlnB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,WAAWnjB,UAAW2kB,KAClCxqB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,kBAAkBnjB,UAAW4kB,KACzCzqB,IAAAC,cAAC8oB,IAAK,CAACC,KAAK,IAAInjB,UAAWyjB,QCgCpCuB,WAjDN,SAAA9nB,GAAA,SAAA8nB,IAAA,OAAA3nB,YAAAC,KAAA0nB,GAAAznB,YAAAD,KAAAE,YAAAwnB,GAAAC,MAAA3nB,KAAA4nB,YA8CN,OA9CM7mB,YAAA2mB,EAAA9nB,GAAAoB,YAAA0mB,EAAA,EAAAvqB,IAAA,aAAA8D,MAAA,WAMHpF,eAAe0F,QAAQ,aAFJ,KAmBtB,CAAApE,IAAA,cAAA8D,MAAA,WAICqM,OAAOua,SAASC,WACjB,CAAA3qB,IAAA,SAAA8D,MAAA,WAOC,OAAQpE,IAAAC,cAAAD,IAAAgB,SAAA,KACEhB,IAAAC,cAAA,WACUD,IAAAC,cAACyqB,GAAM,UAK5B,CAAApqB,IAAA,oBAAA8D,MAAA,WAGCjB,KAAK+nB,iBACNL,EA9CM,CAASjkB,cCOEuB,QACW,cAA7BsI,OAAOua,SAASG,UAEe,UAA7B1a,OAAOua,SAASG,UAEhB1a,OAAOua,SAASG,SAAS/b,MACvB,kECXNgc,IAASC,OAAOrrB,IAAAC,cAAC4qB,GAAG,MAAKlX,SAASC,eAAe,SD0H3C,kBAAmB0X,WACrBA,UAAUC,cAAcC,MAAMhsB,KAAK,SAAAisB,GACjCA,EAAaC,gDEnInBlqB,EAAAC,EAAAC,EAAA,sBAAAS,IAAAX,EAAAC,EAAAC,EAAA,sBAAAugB,IAGQ,IAAM9f,EAAgB,sDACjB8f,EAAe,oFCJ5BzgB,EAAAC,EAAAC,EAAA,sBAAAnC,IAAA,IAAAqC,EAAAJ,EAAA,IAAAmqB,EAAAnqB,EAAA,IAGO,SAASjC,EAAQsC,GACpB,IAAMgB,EAAUD,cAEZ+N,EAAQ,GAIZ,OAHI9N,IACA8N,EAAQ9N,EAAQ8N,OAEb,IAAI5O,QAAQ,SAACC,EAASC,GACzBZ,QAAQC,IAAIa,IAAcN,EAAK,IAAI8O,GACnCzO,MAAMC,IAAcN,EAAK,IAAI8O,GAC5BnR,KAAK,SAAC+C,GAAQ,OAAKA,EAASC,SAC5BhD,KAAK,SAACiD,GACHT,EAAQS,KAEXC,MAAM,SAAC/C,GACLsC,EAAOtC","file":"static/js/main.22e6ada0.chunk.js","sourcesContent":["import React, { Component, useEffect, useState } from 'react';\nimport {GetData} from '../../../services/GetData';\nimport {Link} from 'react-router-dom';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Fade from '@material-ui/core/Fade';\nimport { LinearProgress } from '@material-ui/core';\n\nconst GradoMaterias = ({id_docente, id_grados, id_grupo}) => {\n\n const [lista_asignaturas, setAsignaturas] = useState([]);\n const [periodo, setPeriodo] = useState(null);\n const [loading, setLoading] = useState(false);\n\n\n useEffect(() => {\n const datosperiodo = () => {\n let p = JSON.parse(sessionStorage.getItem('periodo'));\n setPeriodo(p);\n \n return true;\n }\n datosperiodo();\n }, [])\n\n useEffect(() => {\n \n if (periodo != null)\n listar_materias();\n }, [periodo]);\n \n \n const listar_materias = () => {\n\n let link_ind = \"#\";\n\n if (periodo.estado_periodo){\n if (periodo.estado_periodo === \"1\")\n link_ind = `/home/indicadores`;\n else\n link_ind = `/home/calificacionesresumen`; //en el caso de que el periodo cerro puede ver el resumen de la notas de esa asignatura \n }\n \n if (periodo.nivelaciones === \"1\")\n link_ind = `/home/nivelaciones`;\n\n if (!id_docente || !id_grados || !id_grupo)\n return; \n \n setLoading(true);\n \n GetData('asignaciones/asignaturasdocente/' + id_docente + \"/\" + id_grados + \"/\" + id_grupo + \"/\" + periodo.nivelaciones, null).then ((result) =>{\n let responseJSON = result;\n \n if (responseJSON.error === false){\n let lasigna = responseJSON.asignaturas.map( \n item => \n \n \n {item.nombre_asignatura}{' '}\n \n {item.porcentaje_notas}\n \n \n }\n />\n );\n\n setAsignaturas(lasigna);\n setLoading(false); \n \n }else{\n console.log(\"Error al cargar las aginaciones\");\n }\n })\n return true;\n } \n\n return ( \n <>\n { loading &&\n \n }\n \n \n );\n}\n \nexport default GradoMaterias;\n\n/*\n\nclass GradoMaterias extends Component {\n\n constructor(props){\n \n let periodo = {\n id_periodo : 0,\n estado_periodo : \"0\",\n nivelaciones : \"0\",\n fecha_cierre: null,\n fecha_cierre_niv: null,\n\n }\n\n periodo = JSON.parse(sessionStorage.getItem('periodo'));\n \n\n super(props);\n this.state = {\n id_docente: props.id_docente,\n id_grado: props.id_grados,\n id_grupo: props.id_grupo,\n lista_asignaturas: \"\",\n periodo: periodo,\n loading: false\n }\n this.listar_materias = this.listar_materias.bind(this);\n }\n\n listar_materias(){\n \n let link_ind = \"#\";\n\n \n if (this.state.periodo.estado_periodo){\n if (this.state.periodo.estado_periodo === \"1\")\n link_ind = `/home/indicadores`;\n }\n\n if (this.state.periodo.nivelaciones === \"1\")\n link_ind = `/home/nivelaciones`;\n\n if (!this.state.id_docente || !this.state.id_grado || !this.state.id_grupo)\n return; \n\n this.setState({loading: true});\n\n GetData('asignaciones/asignaturasdocente/' + this.state.id_docente + \"/\" + this.state.id_grado + \"/\" + this.state.id_grupo + \"/\" + this.state.periodo.nivelaciones, this.state).then ((result) =>{\n let responseJSON = result;\n\n if (responseJSON.error === false){\n let lasigna = responseJSON.asignaturas.map( \n item => \n \n \n \n \n \n );\n this.setState({lista_asignaturas: lasigna, loading: false});\n \n }else{\n console.log(\"Error al cargar las aginaciones\");\n }\n })\n } \n\n render() {\n \n let mensaje_loading = \"\";\n\n if(this.state.loading)\n mensaje_loading = \"Espere....\";\n\n return (\n \n );\n }\n\n componentDidMount() {\n this.setState({loading: true}); \n this.listar_materias();\n \n } \n \n}\n\nexport default GradoMaterias;\n*/","import {URL_SERVICIOS} from './UrlWebServis';\r\n\r\nexport function PostData(type, userData){ \r\n\r\n return new Promise((resolve, reject) => {\r\n fetch(URL_SERVICIOS+type,{\r\n method: 'POST',\r\n body: JSON.stringify(userData)\r\n })\r\n .then((response) => response.json())\r\n .then((responseJson) => {\r\n resolve(responseJson);\r\n })\r\n .catch((error) => {\r\n console.log(\"Error \" + error);\r\n userData.error_login = true;\r\n reject(error);\r\n \r\n })\r\n }) \r\n}","export function Usuario(){ \r\n let usuario = null;\r\n if (sessionStorage.getItem('userData'))\r\n usuario = JSON.parse(sessionStorage.getItem('userData'));\r\n return usuario;\r\n \r\n}","import React, { Component } from 'react';\nimport {PostData} from '../../services/PostData'\nimport './Login.css';\nimport {Redirect} from 'react-router-dom';\nimport Button from '@material-ui/core/Button';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport FormControl from '@material-ui/core/FormControl';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Paper from '@material-ui/core/Paper';\nimport Typography from '@material-ui/core/Typography';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport LoadingScreen from 'react-loading-screen'\nimport { TextField } from '@material-ui/core';\n\nclass Login extends Component {\n\n constructor(props){\n super(props);\n this.state = {\n username:'',\n password:'',\n redirect: false,\n error_login: false,\n changepassword: false,\n loading: false,\n loadingscr: true,\n botonenablet: false\n }\n this.login = this.login.bind(this);\n this.onChange = this.onChange.bind(this);\n }\n\n login(event){\n event.preventDefault();\n if (this.state.username && this.state.password){\n this.setState({error_login: false, botonenablet: true, loading: true});\n PostData('login', this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n let changepwl = responseJSON.changepassword === 'N' ? true : false;\n this.setState({changepassword: changepwl})\n sessionStorage.setItem('userData',JSON.stringify(responseJSON));\n this.setState({redirect: true, botonenablet: false, loading:false});\n }else{\n console.log(\"Error login\");\n this.setState({error_login: true, loading:false, botonenablet:false});\n \n }\n })\n \n }\n\n }\n\n onChange(e){\n this.setState({[e.target.name]: e.target.value})\n }\n\n\n\n render() {\n \n let message_error =
;\n\n\n if (this.state.error_login)\n message_error = * Error - Datos de ingreso no válidos, por favor verifique\n\n if (this.state.redirect){\n if (this.state.changepassword){\n return ()\n }else{\n\n return ()\n } \n \n }\n if (sessionStorage.getItem(\"userData\")){\n if (this.state.changepassword)\n return ()\n else \n return ()\n }\n\n \n const styles = theme => ({\n /*main: {\n width: 'auto',\n display: 'block', // Fix IE 11 issue.\n marginLeft: theme.spacing.unit * 3,\n marginRight: theme.spacing.unit * 3,\n [theme.breakpoints.up(400 + theme.spacing.unit * 3 * 2)]: {\n width: 400,\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n },*/\n paper: {\n marginTop: theme.spacing.unit * 8,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n padding: `${theme.spacing.unit * 2}px ${theme.spacing.unit * 3}px ${theme.spacing.unit * 3}px`,\n },\n avatar: {\n margin: theme.spacing.unit,\n backgroundColor: theme.palette.secondary.main,\n },\n form: {\n width: '100%', // Fix IE 11 issue.\n marginTop: theme.spacing.unit,\n }\n });\n\n return (\n <>\n \n\n
\n \n \n\n \n\n \n \n \n \"logo\"\n\n \n Ingreso al sistema\n \n \n Candelaria\n \n {message_error}\n
\n \n {/* Correo electrónico */}\n {/* */}\n \n \n \n {/* Contraseña\n */}\n \n \n\n \n Ingresar\n \n \n
\n
\n \"logo\"\n
\n \n
\n \n\n );\n }\n\n componentDidMount(){\n \n this.setState({loadingscr: false})\n }\n}\n\nexport default Login;\n","import React, { Component } from 'react';\r\nimport './NavBar.css';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport MenuIcon from '@material-ui/icons/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport List from '@material-ui/core/List';\r\nimport Divider from '@material-ui/core/Divider';\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 AccountCircle from '@material-ui/icons/AccountCircle';\r\nimport {Link} from 'react-router-dom';\r\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\r\nimport {VersionApp} from '../../../services/VersionApp'\r\nimport { Avatar } from '@material-ui/core';\r\n\r\nclass NavBar extends Component {\r\n\r\n\r\n \r\n constructor(props){\r\n\r\n let versionApp = VersionApp();\r\n \r\n super(props);\r\n this.state = {\r\n id_usuario: props.datosusuario.id_usuario,\r\n nombre_usuario: props.datosusuario.nombre_usuario,\r\n id_docente: props.datosusuario.id_docente,\r\n loading: false,\r\n anchorEl: null,\r\n mobileMoreAnchorEl: null,\r\n openMenu: false,\r\n versionApp: versionApp\r\n \r\n }\r\n this.handleProfileMenuOpen = this.handleProfileMenuOpen.bind(this);\r\n this.cerrar_session = this.cerrar_session.bind(this);\r\n this.toggleDrawer = this.toggleDrawer.bind(this);\r\n this.abrir_perfil = this.abrir_perfil.bind(this);\r\n }\r\n\r\n handleProfileMenuOpen = event => {\r\n this.setState({ anchorEl: event.currentTarget });\r\n };\r\n \r\n handleMenuClose = () => {\r\n this.setState({ anchorEl: null });\r\n this.handleMobileMenuClose();\r\n };\r\n \r\n cerrar_session = () => {\r\n this.handleMenuClose();\r\n this.props.cerrarsession();\r\n\r\n }\r\n abrir_perfil = () => {\r\n //console.log(\"Redireccionando\")\r\n this.handleMenuClose();\r\n // this.props.abrir_perfil_usuario();\r\n } \r\n\r\n handleMobileMenuClose = () => {\r\n this.setState({ mobileMoreAnchorEl: null });\r\n };\r\n \r\n handleToggle = () => this.setState({openMenu: !this.state.openMenu});\r\n\r\n toggleDrawer = (side, open) => () => {\r\n console.log(\"Abriendo \" + open );\r\n this.setState({\r\n [side]: open,\r\n });\r\n };\r\n\r\n render() {\r\n\r\n const { anchorEl } = this.state;\r\n const isMenuOpen = Boolean(anchorEl);\r\n\r\n\r\n const renderMenu = (\r\n \r\n \r\n perm_identity Perfil de Usuario\r\n \r\n \r\n exit_to_app Salir\r\n \r\n \r\n );\r\n const drawerWidth = 240;\r\n const styles = {\r\n list: {\r\n width: 450,\r\n },\r\n fullList: {\r\n width: 'auto',\r\n },\r\n drawer: {\r\n width: drawerWidth,\r\n flexShrink: 0,\r\n },\r\n drawerHeader: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '0 8px',\r\n justifyContent: 'flex-end',\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 \r\n \"logo\"\r\n \r\n \r\n CNotas v.1.{this.state.versionApp}\r\n \r\n \r\n \r\n {this.state.nombre_usuario}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {renderMenu}\r\n \r\n \r\n
\r\n \r\n \r\n {this.state.openMenu === true ? : }\r\n \r\n Menú Principal\r\n
\r\n \r\n \r\n this.setState({openMenu:false}) }>\r\n home\r\n \r\n \r\n this.setState({openMenu:false}) }>\r\n check_circle_outline\r\n \r\n \r\n {/* \r\n calendar_today\r\n \r\n */}\r\n \r\n {/* \r\n this.setState({openMenu:false}) }>\r\n assignment_turned_in\r\n \r\n */}\r\n {/*\r\n \r\n insert_chart_outlined\r\n \r\n \r\n */}\r\n \r\n exit_to_app\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 NavBar;","export function VersionApp(){ \r\n let verionapp = null;\r\n if (sessionStorage.getItem('versionapp'))\r\n verionapp = JSON.parse(sessionStorage.getItem('versionapp'));\r\n return verionapp;\r\n \r\n}","import React, { Component } from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport {Link} from 'react-router-dom';\r\nclass BTNConsolidado extends Component {\r\n constructor(props){\r\n\r\n \r\n\r\n super(props);\r\n this.state = {\r\n es_director: props.dgr,\r\n id_docente: props.id_docente,\r\n id_grado: props.id_grados,\r\n id_grupo: props.id_grupo \r\n }\r\n }\r\n\r\n render() {\r\n\r\n let botondirector = null;\r\n\r\n if (this.state.es_director === \"1\"){\r\n botondirector = <>\r\n \r\n }\r\n\r\n return (\r\n <>\r\n {botondirector}\r\n \r\n );\r\n }\r\n}\r\n\r\n\r\nexport default BTNConsolidado; ","import React, { Component } from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport {Link} from 'react-router-dom';\r\nclass BTNObservador extends Component {\r\n constructor(props){\r\n\r\n \r\n\r\n super(props);\r\n this.state = {\r\n es_director: props.dgr,\r\n id_docente: props.id_docente,\r\n id_grado: props.id_grados,\r\n id_grupo: props.id_grupo,\r\n id_periodo: props.id_periodo, \r\n }\r\n }\r\n\r\n render() {\r\n\r\n let botondirector = null;\r\n\r\n if (this.state.es_director === \"1\"){\r\n botondirector = <>\r\n \r\n }\r\n\r\n return (\r\n <>\r\n {botondirector}\r\n \r\n );\r\n }\r\n}\r\n\r\n\r\nexport default BTNObservador; ","import React, { Component, lazy, Suspense } from 'react';\nimport './Grados.css';\nimport {GetData} from '../../../services/GetData';\n//import GradoMaterias from '../GradoMaterias/GradoMaterias';\nimport {Usuario} from '../../../services/Usuario';\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Fade from '@material-ui/core/Fade';\n\nimport LoadingScreen from 'react-loading-screen'\nimport BTNObservador from '../BTNObservador/BTNObservador';\nimport BTNConsolidado from './BTNConsolidado';\nimport { Button, Icon, IconButton, Tooltip } from '@material-ui/core';\nimport BallotIcon from '@material-ui/icons/Ballot';\n\nimport {Link} from 'react-router-dom';\n\n\n\nconst GradoMaterias = lazy(() => import(\"../GradoMaterias/GradoMaterias\"));\n\nclass Grados extends Component {\n\n constructor(props){\n super(props);\n \n this.state = {\n usuario_session : Usuario(),\n lista_grados:
,\n id_periodo: props.id_periodo,\n loading: true,\n loadingfade: false\n }\n this.listar_grados = this.listar_grados.bind(this);\n }\n\n boton_obervador(dirg){\n \n if (dirg !== 0){\n return \n }\n }\n\n\n\n listar_grados(){\n \n if (!this.state.usuario_session.id_docente)\n return; \n\n\n let id_docente = this.state.usuario_session.id_docente;\n GetData('asignaciones/gradosdocente/' + id_docente, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n \n let lasigna = responseJSON.grados.map(\n (item, key) => \n timeline\n }\n title={`${item.nombre_grado} ${item.num_grupo}`}\n />\n \n \n \n Cargando ...}>\n \n \n \n \n
\n {/* */}\n \n \n \n \n \n \n \n \n\n \n
\n
\n );\n \n this.setState({lista_grados: lasigna}, () =>{\n // this.setState({loading: false});\n \n //this.timerHandle = setTimeout(() => this.setState({ loading: false }), 3500); \n \n setTimeout(\n function() {\n this.setState({loading: false})\n }\n .bind(this),\n 2000\n );\n\n });\n \n }else{\n console.log(\"Error al cargar las aginaciones\");\n }\n })\n } \n\n onChange(e){\n this.setState({[e.target.name]: e.target.value})\n }\n\n render() {\n \n // let checked = false;\n\n return (\n \n
\n
\n
\n \n
\n \n
\n \n {this.state.lista_grados}\n \n \n
\n\n \n
\n \n\n );\n }\n\n componentDidMount() {\n this.setState({loadingfade:true})\n this.listar_grados(); \n } \n \n\n}\n\nexport default Grados;\n","import React, { Component } from 'react';\nimport {Button, Modal, Form} from 'react-bootstrap';\nimport {PostData} from '../../services/PostData';\n\nclass NuevaActividad extends Component {\n\n constructor(props, context) {\n super(props, context);\n\n this.onChange = this.onChange.bind(this); \n this.handleShow = this.handleShow.bind(this);\n this.handleClose = this.handleClose.bind(this);\n this.guardar_actividad = this.guardar_actividad.bind(this);\n let f = new Date();\n let mes = (f.getMonth() +1)\n\n let fechactual = f.getFullYear() + \"-\" + (String(mes).length === 1? '0' + mes: mes ) + \"-\" + f.getDate();\n\n this.state = {\n accion: props.accion,\n id_grado: props.idGrado,\n id_grupo: props.idGrupo,\n id_actividades: props.id_actividades,\n nombre_actividad: props.nombre_actividad,\n fechahora_act: props.fechahora_act ? props.fechahora_act : fechactual,\n id_indicador: props.id_indicador, \n cod_indicador: props.cod_ind,\n des_indicador: props.desc_ind,\n estado_periodo: props.estadoperiodo,\n lista_indicadores: ,\n error_fecha: false,\n show: false,\n };\n \n }\n\n guardar_actividad(){\n if (this.state.nombre_actividad && this.state.fechahora_act){\n\n // let hoy = new Date();\n // let fechaActividad = new Date(this.state.fechahora_act);\n \n // if (hoy >= fechaActividad ) {\n // console.log(\"Fecha no valida\");\n // this.setState({error_fecha: true});\n // return;\n // }\n\n PostData('actividades/save', this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){ \n this.props.listarindicador();\n this.handleClose();\n }else{\n console.log(\"Error No se pudo guardar\");\n }\n\n })\n }\n\n\n } \n\n onChange(e){ \n console.log(e.target.name);\n this.setState({\n [e.target.name]: e.target.value\n });\n } \n\n handleClose() {\n this.setState({ show: false });\n }\n\n handleShow() {\n this.setState({ show: true });\n }\n\n \n render() {\n\n let numeral = \"#\";\n\n let boton = \n\n if (this.state.accion === \"edit\"){\n boton = \n edit \n }\n\n let msgerrorfecha = \"\";\n if (this.state.error_fecha){\n msgerrorfecha = \"* La fecha no puede ser menor a la fecha actual \"; \n }\n\n return (\n <>\n \n {boton}\n\n \n \n Crear Nueva Actividad\n \n \n \n
\n {msgerrorfecha} \n \n Titulo Actividad\n \n \n\n \n Fecha\n \n \n \n
\n\n
\n \n \n \n \n
\n \n );\n }\n\n componentDidMount() {\n \n \n } \n}\n\nexport default NuevaActividad;\n","import React, { Component } from 'react';\nimport './Actividades.css';\nimport {GetData} from '../../services/GetData';\nimport Button from '@material-ui/core/Button';\nimport {Link} from 'react-router-dom';\nimport NuevaActividad from '../NuevaActividad/NuevaActividad'\nimport Moment from 'moment';\n\nimport { Avatar } from '@material-ui/core';\nimport Paper from '@material-ui/core/Paper';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport { withStyles } from '@material-ui/core/styles';\nimport Table from '@material-ui/core/Table';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableRow from '@material-ui/core/TableRow';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport {Usuario} from '../../services/Usuario';\n\nclass Actividades extends Component {\n\n constructor(props){\n super(props);\n this.state = {\n usuario_session: Usuario(),\n id_asignatura: props.match.params.idAsignatura,\n id_grado: props.match.params.idGrado, \n id_grupo: props.match.params.idGrupo,\n id_indicador: props.match.params.IdIndicador,\n lista_indicadores: ,\n cod_indicador: \"\",\n descripcion_indic: \"\",\n num_periodo: 0,\n periodo_actual: 0,\n fecha_cierre: null,\n periodo_abierto: true,\n vernotas: false\n }\n\n this.listar_indicadores = this.listar_indicadores.bind(this);\n this.periodo_actual = this.periodo_actual.bind(this);\n this.indicador_actual = this.indicador_actual.bind(this);\n }\n\n\n onChange(e){\n this.setState({[e.target.name]: e.target.value})\n }\n\n indicador_actual(){\n GetData('indicadores/buscarid/'+this.state.id_indicador, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n let indicador = responseJSON.indicador; \n this.setState({\n id_asignatura : indicador.id_asigantura,\n id_grado : indicador.cod_grados,\n cod_indicador: indicador.codigo_indic,\n desc_indicador: indicador.descripcion_indic,\n });\n }\n }); \n }\n\n periodo_actual(){\n GetData('periodos/actual/', this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){ \n let fecha_cierre = responseJSON.fecha_cierre;\n let periodo = responseJSON.periodo;\n this.setState({periodo_actual: periodo, num_periodo: periodo, fecha_cierre: fecha_cierre});\n \n }\n });\n }\n\n formato_fecha(fecha){\n if (fecha !== \"0000-00-00\")\n return Moment(fecha).format('DD/MMM/YYYY');\n else\n return \"Sin Fecha\"; \n }\n\n func_borrar_actividad(id_actividades){\n let res = window.confirm(\"¿Esta seguro de borrar la actividad?\");\n if (res){\n GetData('actividades/delete/' + id_actividades + '/' + this.state.usuario_session.token, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n this.listar_indicadores();\n return;\n }\n });\n }\n }\n\n func_boton_borrar_actividad(item){\n if (item.nnotas === \"0\"){\n let numeral = \"#\";\n return this.func_borrar_actividad(item.id_actividades)}>\n \n delete\n \n \n }\n }\n\n listar_indicadores(){\n\n const StyledTableCell = withStyles(theme => ({\n head: {\n backgroundColor: theme.palette.common.black,\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n },\n }))(TableCell);\n\n const StyledTableRow = withStyles(theme => ({\n root: {\n '&:nth-of-type(odd)': {\n backgroundColor: theme.palette.background.default,\n },\n },\n }))(TableRow); \n\n GetData('actividades/lista/' + this.state.id_indicador + '/' + this.state.id_grado + '/' + this.state.id_grupo + '/' + this.state.num_periodo, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){ \n \n let listaindi = responseJSON.actividades.map(\n item => \n {this.formato_fecha(item.fechahora_act)}\n {item.nombre_actividad}\n \n \n \n \n assignment_turned_in \n \n \n\n {this.func_boton_borrar_actividad(item)} \n \n );\n\n let vernotas = 0; \n if (Object.keys(responseJSON.actividades).length > 0) {\n vernotas = true;\n }\n \n this.setState({lista_indicadores: listaindi, vernotas: vernotas});\n \n }else{\n console.log(\"Error al cargar las aginaciones\");\n }\n })\n }\n\n render() {\n \n const StyledTableCell = withStyles(theme => ({\n head: {\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n },\n }))(TableCell); \n \n let BotonVerNotas = \"\";\n if (this.state.vernotas)\n BotonVerNotas = ;\n \n return (\n \n
\n \n\n \n \n \n\n \n \n check_circle_outline\n \n \n\n \n Actividades del Indicador {this.state.cod_indicador} \n \n \n
Lista de actividades del Indicador:
\n

{this.state.cod_indicador} - {this.state.desc_indicador} - Período: {this.state.num_periodo}

\n \n \n \n \n Fecha\n Nombre actividad\n Acción\n \n \n\n \n \n {this.state.lista_indicadores}\n \n \n
\n \n\n \n {BotonVerNotas}\n \n
\n
\n
\n\n\n
\n \n\n );\n }\n componentDidMount() {\n this.listar_indicadores();\n this.periodo_actual();\n this.indicador_actual();\n } \n}\n\nexport default Actividades;\n","import React, { Component } from 'react';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport {PostData} from '../../services/PostData';\r\nimport LinearProgress from '@material-ui/core/LinearProgress';\r\nimport { Tooltip } from '@material-ui/core';\r\n\r\n\r\nclass InputNotaActividad extends Component {\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n index: props.index,\r\n notaalumno: props.nota,\r\n guardado: false,\r\n editactivo: false,\r\n error: false,\r\n max_nota: 5,\r\n urimg: '/images/save_exito.png'\r\n }\r\n this.handleKeyUp = this.handleKeyUp.bind(this);\r\n this.guardar_nota = this.guardar_nota.bind(this);\r\n this.resetSave = this.resetSave.bind(this);\r\n \r\n }\r\n\r\n func_round(value, precision) {\r\n var multiplier = Math.pow(10, precision || 0);\r\n return Math.round(value * multiplier) / multiplier;\r\n }\r\n\r\n handleKeyUp(e) {\r\n console.log(e.key);\r\n \r\n \r\n if (e.key === \"Enter\"){\r\n \r\n \r\n if(isNaN(e.target.value)){\r\n console.log(\"No es un numero\")\r\n this.setState({error: true});\r\n return;\r\n }\r\n\r\n \r\n \r\n let notaing = parseFloat(e.target.value);\r\n \r\n if (notaing > this.state.max_nota ){\r\n console.log(\"La nota debe ser menor o igual a \" + this.state.max_nota);\r\n this.props.error_nota_mayor();\r\n this.setState({error: true});\r\n return;\r\n }\r\n \r\n this.setState({id_matricula: e.target.id});\r\n \r\n \r\n this.guardar_nota(notaing); \r\n \r\n }else{\r\n this.setState({guardado: false});\r\n }\r\n }\r\n\r\n guardar_nota(notaing){ \r\n let datosenvio = {\r\n id_matricula : this.props.id_matricula,\r\n id_indicador : this.props.id_indicador,\r\n id_asignatura: this.props.id_asignatura,\r\n id_grado : this.props.id_grado,\r\n id_grupo : this.props.id_grupo,\r\n id_periodo: this.props.id_periodo,\r\n nota_alumno: notaing\r\n } \r\n \r\n if (!notaing){\r\n this.setState({error: true});\r\n return;\r\n }\r\n\r\n this.setState({editactivo: true})\r\n\r\n PostData('calificaciones/guadarnota/', datosenvio).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){ \r\n this.props.tab_control(this.props.id_matricula); \r\n this.setState({guardado: true, error: false, editactivo: false}); \r\n\r\n // return true;\r\n }else{\r\n \r\n this.setState({guardado: false, error: true, editactivo: false});\r\n console.log(\"Error al guardar la nota\");\r\n // return false\r\n }\r\n }) \r\n }\r\n\r\n deleteNota = () => {\r\n let datosenvio = {\r\n id_matricula : this.props.id_matricula,\r\n id_indicador : this.props.id_indicador,\r\n id_asignatura: this.props.id_asignatura,\r\n id_grado : this.props.id_grado,\r\n id_grupo : this.props.id_grupo,\r\n id_periodo: this.props.id_periodo,\r\n } \r\n PostData('calificaciones/deletenota/', datosenvio).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){ \r\n console.log(responseJSON)\r\n //this.props.tab_control(this.props.id_matricula); \r\n if (parseInt(responseJSON.proceso) === 1){\r\n console.log(\"Proceso bien el eliminar \", responseJSON.proceso )\r\n this.setState({guardado: false, error: false, notadelete: false, notaalumno: ''}); \r\n this.props.onChangeNotaDelete(this.props.id_matricula,'');\r\n document.getElementById(String(this.props.id_matricula)).value = \"\";\r\n }\r\n \r\n \r\n // return true;\r\n }else{\r\n \r\n this.setState({guardado: false, error: true, notadelete: true});\r\n console.log(\"Error al guardar la nota\");\r\n // return false\r\n }\r\n }) \r\n}\r\n\r\n\r\n resetSave(e){\r\n \r\n console.log(\"Recibiendo el foco\"); \r\n this.setState({guardado: false});\r\n \r\n }\r\n\r\n convertirnumero(numero){\r\n if (numero !== \"\"){\r\n return parseFloat(numero).toFixed(1)\r\n }\r\n }\r\n \r\n\r\n render() {\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n { this[`ref${this.props.index}`] = el; }} \r\n inputProps={{\r\n maxLength: 3,\r\n style: { textAlign: 'center' }\r\n }}\r\n name={this.props.id_matricula} \r\n id={this.props.id_matricula} \r\n autoFocus={false}\r\n disabled={this.state.editactivo}\r\n className=\"quitarpading stiloimput nota-actividad\" \r\n defaultValue={this.convertirnumero(this.state.notaalumno)} \r\n onBlur={this.resetSave}\r\n onKeyUp={this.handleKeyUp} \r\n onChange={this.props.onChangeNota}\r\n onFocus={this.props.handleFocus}\r\n />\r\n\r\n \"img\" \r\n \r\n
\r\n
\r\n \r\n this.deleteNota() }\r\n style={{visibility: this.state.notaalumno != \"\" || this.state.guardado ? 'visible' : 'hidden' }}>\r\n delete_forever\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n );\r\n }\r\n componentDidMount() {\r\n // this.setState({open: false}); \r\n \r\n } \r\n}\r\n\r\nexport default InputNotaActividad;","import React, { Component } from 'react';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport {PostData} from '../../services/PostData';\r\nimport LinearProgress from '@material-ui/core/LinearProgress';\r\nimport { Tooltip } from '@material-ui/core';\r\n\r\n\r\nclass InputNotaLetra extends Component {\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n index: props.index,\r\n notaalumno: props.nota,\r\n guardado: false,\r\n editactivo: false,\r\n error: false,\r\n max_nota: 5,\r\n urimg: '/images/save_exito.png'\r\n }\r\n this.handleKeyUp = this.handleKeyUp.bind(this);\r\n this.guardar_nota = this.guardar_nota.bind(this);\r\n this.deleteNota = this.deleteNota.bind(this);\r\n this.resetSave = this.resetSave.bind(this);\r\n \r\n }\r\n\r\n func_round(value, precision) {\r\n var multiplier = Math.pow(10, precision || 0);\r\n return Math.round(value * multiplier) / multiplier;\r\n }\r\n\r\n handleKeyUp(e) {\r\n console.log(e.key);\r\n \r\n \r\n if (e.key === \"Enter\"){\r\n \r\n \r\n\r\n \r\n \r\n let notaing = e.target.value;\r\n \r\n if (notaing !== \"S\" && notaing !== \"A\" && notaing !== \"B\"){\r\n this.props.error_nota_mayor();\r\n this.setState({error: true});\r\n return;\r\n }\r\n \r\n this.setState({id_matricula: e.target.id});\r\n \r\n \r\n this.guardar_nota(notaing); \r\n \r\n }else{\r\n this.setState({guardado: false});\r\n }\r\n }\r\n\r\n guardar_nota(notaing){ \r\n let datosenvio = {\r\n id_matricula : this.props.id_matricula,\r\n id_indicador : this.props.id_indicador,\r\n id_asignatura: this.props.id_asignatura,\r\n id_grado : this.props.id_grado,\r\n id_grupo : this.props.id_grupo,\r\n id_periodo: this.props.id_periodo,\r\n nota_alumno: notaing\r\n } \r\n \r\n if (!notaing){\r\n this.setState({error: true});\r\n return;\r\n }\r\n\r\n this.setState({editactivo: true})\r\n\r\n PostData('calificaciones/guadarnota/', datosenvio).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){ \r\n this.props.tab_control(this.props.id_matricula); \r\n this.setState({guardado: true, error: false, editactivo: false}); \r\n\r\n // return true;\r\n }else{\r\n \r\n this.setState({guardado: false, error: true, editactivo: false});\r\n \r\n // return false\r\n }\r\n }) \r\n }\r\n\r\n deleteNota = () => {\r\n let datosenvio = {\r\n id_matricula : this.props.id_matricula,\r\n id_indicador : this.props.id_indicador,\r\n id_asignatura: this.props.id_asignatura,\r\n id_grado : this.props.id_grado,\r\n id_grupo : this.props.id_grupo,\r\n id_periodo: this.props.id_periodo,\r\n } \r\n PostData('calificaciones/deletenota/', datosenvio).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){ \r\n console.log(responseJSON)\r\n //this.props.tab_control(this.props.id_matricula); \r\n if (parseInt(responseJSON.proceso) === 1){\r\n console.log(\"Proceso bien el eliminar \", responseJSON.proceso )\r\n this.setState({guardado: false, error: false, notadelete: false, notaalumno: ''}); \r\n this.props.onChangeNotaDelete(this.props.id_matricula,'');\r\n document.getElementById(String(this.props.id_matricula)).value = \"\";\r\n }\r\n \r\n \r\n // return true;\r\n }else{\r\n \r\n this.setState({guardado: false, error: true, notadelete: true});\r\n console.log(\"Error al guardar la nota\");\r\n // return false\r\n }\r\n }) \r\n}\r\n\r\n resetSave(e){\r\n \r\n \r\n this.setState({guardado: false});\r\n \r\n }\r\n\r\n\r\n render() {\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n { this[`ref${this.props.index}`] = el; }} \r\n inputProps={{\r\n maxLength: 1,\r\n style: { textAlign: 'center' }\r\n }}\r\n name={this.props.id_matricula} \r\n id={this.props.id_matricula} \r\n autoFocus={false}\r\n disabled={this.state.editactivo}\r\n className=\"quitarpading stiloimput nota-letra\" \r\n defaultValue={this.state.notaalumno} \r\n onBlur={this.resetSave}\r\n \r\n onKeyUp={this.handleKeyUp} \r\n onChange={this.props.onChangeNota}\r\n onFocus={this.props.handleFocus}\r\n autoComplete=\"off\"\r\n />\r\n \"img\" \r\n \r\n
\r\n
\r\n \r\n this.deleteNota() }\r\n style={{visibility: this.state.notaalumno != \"\" || this.state.guardado ? 'visible' : 'hidden' }}>\r\n delete_forever\r\n \r\n \r\n
\r\n
\r\n \r\n );\r\n }\r\n componentDidMount() {\r\n // this.setState({open: false}); \r\n \r\n } \r\n}\r\n\r\nexport default InputNotaLetra;","export function SesPeriodo(){ \r\n let periodo = null;\r\n if (sessionStorage.getItem('periodo'))\r\n periodo = JSON.parse(sessionStorage.getItem('periodo'));\r\n return periodo;\r\n \r\n}","import React, { Component } from 'react';\nimport './Calificaciones.css';\nimport Button from '@material-ui/core/Button';\nimport {GetData} from '../../services/GetData';\nimport {PostData} from '../../services/PostData';\n\nimport {Link} from 'react-router-dom';\nimport Alert from 'react-bootstrap/Alert'\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport {Usuario} from '../../services/Usuario';\nimport InputNotaActividad from '../Utilitarios/InputNotaActividad';\nimport LoadingScreen from 'react-loading-screen'\nimport toast, { Toaster } from 'react-hot-toast';\nimport InputNotaLetra from '../Utilitarios/InputNotaLetra';\nimport { SesPeriodo } from '../../services/SesPeriodo';\n\n\nclass Calificaciones extends Component {\n \n\n\n constructor(props){\n super(props);\n this.state = {\n usuario_session: Usuario(),\n periodo_session: SesPeriodo(),\n id_grado: props.match.params.idGrado,\n id_grupo: props.match.params.idGrupo,\n id_asignatura: props.match.params.idAsignatura,\n //id_actividades: props.match.params.idActividad,\n id_indicador: props.match.params.idIndicador,\n lista_alumnos: ,\n num_periodo: 0,\n nota_alumno: 0,\n id_matricula: 0,\n list_notas: {},\n guardado: {},\n listaindex : {},\n min_ganada: 0,\n max_nota: 5.0,\n nom_grado: \"\",\n nombre_asing: \"\",\n tipo_nota: \"N\",\n errorvalidardoc: false,\n loading: true,\n showAlertError: false\n }\n this.listar_alumnos = this.listar_alumnos.bind(this); \n this.periodo_actual = this.periodo_actual.bind(this);\n this.func_ingresarNota = this.func_ingresarNota.bind(this);\n this.onChangeNota = this.onChangeNota.bind(this);\n this.onChangeNotaDelete = this.onChangeNotaDelete.bind(this);\n this.handleClose = this.handleClose.bind(this);\n this.guardar_nota = this.guardar_nota.bind(this);\n this.handleKeyUp = this.handleKeyUp.bind(this);\n this.progreso_guardado = this.progreso_guardado.bind(this);\n this.updateValue = this.updateValue.bind(this);\n this.tab_control = this.tab_control.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.info_grado = this.info_grado.bind(this);\n this.info_asigantura = this.info_asigantura.bind(this);\n this.error_nota_mayor = this.error_nota_mayor.bind(this);\n this.indicador_actual = this.indicador_actual.bind(this);\n this.error_nota_mayor_letra = this.error_nota_mayor_letra.bind(this);\n }\n\n\n onChange(e){\n this.setState({[e.target.name]: e.target.value})\n }\n\n onChangeNota(e){\n const list_notas = this.state.list_notas;\n list_notas[e.target.name] = e.target.value;\n this.setState({ list_notas }); \n } \n\n onChangeNotaDelete(name){\n console.log(\"cambiando texto : \", name)\n const list_notas = this.state.list_notas;\n list_notas[name] = '';\n this.setState({ list_notas }); \n } \n\n func_ingresarNota(id_matricula, nota){\n const list_notas = this.state.list_notas;\n list_notas[id_matricula] = nota\n this.setState({ list_notas });\n return true; \n } \n\n error_nota_mayor() {\n //alertify.error('La nota no debe superar a ' + this.state.max_nota);\n this.setState({showAlertError: true});\n toast.error('La nota no es válida debe ser S, A o B ')\n }\n\n error_nota_mayor_letra() {\n //alertify.error('La nota no debe superar a ' + this.state.max_nota);\n this.setState({showAlertError: true});\n toast.error('La nota no debe superar a ' + this.state.max_nota)\n }\n\n handleFocus(event) {\n event.target.select();\n }\n\n handleKeyUp(e) {\n console.log(e.key);\n \n\n if (e.key === \"Enter\"){\n\n \n if(isNaN(e.target.value)){\n console.log(\"No es un numero\")\n return;\n }\n \n let notaing = parseFloat(e.target.value);\n \n if (notaing > this.state.max_nota ){\n // console.log(\"La nota debe ser menor o igual a \" + this.state.max_nota);\n \n return;\n } \n \n this.setState({id_matricula: e.target.id});\n \n \n this.guardar_nota(e.target.id); \n }\n }\n\n updateValue(e) {\n const list_notas = this.state.list_notas;\n list_notas[e.target.name] = e.target.value;\n \n this.setState({ list_notas });\n } \n\n progreso_guardado(id_matricula, estado){\n const guardado = this.state.guardado;\n guardado[`prog_${id_matricula}`] = estado;\n this.setState({ guardado });\n }\n\n tab_control(id_matricula){\n let listaindex = this.state.listaindex;\n let conteo = Object.keys(listaindex).length;\n\n Object.keys(listaindex).forEach(function(key) {\n let nums = parseInt(key) + 1;\n \n if (id_matricula === listaindex[key]){\n /** validar que no se pase el key */\n let indice = listaindex[nums];\n \n if (nums < conteo) {\n document.getElementById(String(indice)).focus();\n }\n \n return;\n }\n \n\n \n });\n return;\n }\n\n guardar_nota(id_matricula){ \n //console.log(\"Guardar Nota por fin\");\n let notav = this.state.list_notas[id_matricula];\n let datosenvio = {\n id_matricula : id_matricula,\n id_indicador : this.state.id_indicador,\n id_asignatura: this.state.id_asignatura,\n id_grado : this.state.id_grado,\n id_grupo : this.state.id_grupo,\n nota_alumno: notav\n } \n \n PostData('calificaciones/guadarnota/', datosenvio).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){ \n this.tab_control(id_matricula);\n /// prog_${item.id_matricula}\n this.progreso_guardado(id_matricula, true);\n return true;\n }else{\n console.log(\"Error al guardar la nota\");\n return false\n }\n }) \n }\n\n periodo_actual(){\n GetData('periodos/actual/', this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n let periodo = responseJSON.periodo; \n this.setState({num_periodo: periodo});\n }\n });\n \n }\n\n info_grado(){\n \n GetData('grados/infogrado/' + this.state.id_grado, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n\n let min_ganada = responseJSON.min_ganada; \n let max_nota = responseJSON.max_nota; \n let nom_grado = responseJSON.nom_grado; \n this.setState({\n min_ganada: min_ganada,\n max_nota: max_nota,\n nom_grado: nom_grado\n });\n }\n }); \n }\n\n indicador_actual(){\n GetData('indicadores/buscarid/'+this.state.id_indicador, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n let indicador = responseJSON.indicador; \n this.setState({\n id_asignatura : indicador.id_asigantura,\n id_grado : indicador.cod_grados,\n cod_indicador: indicador.codigo_indic,\n desc_indicador: indicador.descripcion_indic,\n desc_alto: indicador.descripcion_alto,\n desc_basico: indicador.descripcion_basico,\n });\n }\n }); \n }\n\n info_asigantura(){\n let id_docente = this.state.usuario_session.id_docente;\n GetData('asignaturas/infoasignatura/' + this.state.id_asignatura + \"/\" + id_docente, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n\n let nombre_asing = responseJSON.asignatura; \n let tipo_nota = responseJSON.tipo_nota;\n this.setState({\n tipo_nota: tipo_nota,\n nombre_asing: nombre_asing\n }, () =>{\n //si no hay errores en la verificación del docente y la asignatura se cargan los alumnos\n this.listar_alumnos(); \n });\n }else{\n this.setState({errorvalidardoc: true})\n \n }\n }); \n\n \n }\n\n handleClose = (event, reason) => {\n this.setState({showAlertError: false})\n };\n\n focusInput = (id) => this[`ref${id}`].current.focus();\n\n listar_alumnos(){\n\n PostData('calificaciones/alumnos/', this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n\n let guardado = this.state.guardado;\n let list1_notas = this.state.list_notas;\n let listaindex = this.state.listaindex;\n Object.keys(responseJSON.alumnos).forEach(function(key) {\n \n let id_matricula = responseJSON.alumnos[key].id_matricula;\n let notav = responseJSON.alumnos[key].notav;\n \n listaindex[key] = id_matricula;\n\n if (!notav)\n notav = \"\";\n \n list1_notas[id_matricula] = notav;\n \n\n //this.func_ingresarNota(id_matricula, notav)\n\n\n\n guardado[`prog_${id_matricula}`] = false;\n\n });\n let listaindi;\n\n if (this.state.tipo_nota === \"N\" && parseInt(this.state.id_grado) >= 5) {\n listaindi = responseJSON.alumnos.map(\n (item, index) =>\n {index+1}\n {item.nombres_apellidos_al}\n \n
\n \n \n \n
\n \n \n );\n }else{\n listaindi = responseJSON.alumnos.map(\n (item, index) =>\n {item.id_matricula}\n {item.nombres_apellidos_al}\n \n \n \n \n \n \n );\n\n }\n\n\n this.setState({ lista_alumnos : listaindi }, () => {\n this.setState({loading: false});\n })\n \n }else{\n console.log(\"Error al cargar las aginaciones\");\n }\n })\n }\n\n render() {\n\n let mensajeerrordocente = \"\";\n \n\n\n if (this.state.errorvalidardoc === true){\n mensajeerrordocente = \n Oh snap! Error de valicación!\n La asignatura no es válida para el Docente actual, de clic en el botón regresar he inténtelo nuevamente \n \n }\n\n let enunciado = \"Nota: Las notas se guardan al presionar ENTER, se usa el Punto(.) para los decimales, digite notas con un decimal, ejemplo (3.0) \";\n if (this.state.tipo_nota !== \"N\" || parseInt(this.state.id_grado) < 5) \n enunciado = \"Nota: Las notas se guardan al presionar ENTER, sólo puede usar las letras S, A o B para el ingreso de las notas.\";\n\n return (\n \n
\n
\n\n \n\n
\n
\n \n Ingreso de calificaciones, {this.state.nombre_asing} - Grado: {this.state.nom_grado} - 0{this.state.id_grupo}, Período: {this.state.num_periodo} \n
\n
\n
\n {this.state.id_grado >= 5 ? (\n <>\n Indicador: {this.state.cod_indicador} - {this.state.desc_indicador}\n \n ) : (\n <>\n Indicador: {this.state.cod_indicador}
\n S: {this.state.desc_indicador}
\n A: {this.state.desc_alto}
\n B: {this.state.desc_basico}\n \n )}\n
\n\n
\n {enunciado}\n
\n
Ingreso de Calificaciones
\n \n {mensajeerrordocente}\n \n\n \n \n \n \n \n \n \n \n \n {this.state.lista_alumnos}\n \n
NombreNota
\n\n \n \n \n\n
\n
\n\n \n\n
\n \n\n );\n }\n\n componentDidUpdate(prevProps, prevState) {\n // this[`ref${5}`].handleFocus();\n }\n componentDidMount() {\n this.periodo_actual();\n this.info_grado();\n this.info_asigantura();\n this.indicador_actual();\n \n } \n}\n\nexport default Calificaciones;\n","import React, { Component } from 'react';\n\nimport './CalificacionesIndicador.css';\nimport Button from '@material-ui/core/Button';\nimport {GetData} from '../../services/GetData';\nimport {PostData} from '../../services/PostData';\n\nimport {Link} from 'react-router-dom';\nimport {Usuario} from '../../services/Usuario';\n\n\nclass CalificacionesIndicador extends Component {\n \n\n\n\n constructor(props){\n super(props);\n this.state = {\n usuario_session: Usuario(),\n id_grado: props.match.params.idGrado,\n id_grupo: props.match.params.idGrupo,\n id_asignatura: props.match.params.idAsignatura,\n id_actividades: props.match.params.idActividad,\n id_indicador: props.match.params.idIndicador,\n nombre_asing: null,\n nom_grado: null,\n lista_alumnos: ,\n titulos_tabla: ,\n num_periodo: 0, \n nota_alumno: 0,\n id_matricula: 0,\n list_notas: {},\n guardado: {},\n listaindex : {},\n\n }\n this.listar_alumnos = this.listar_alumnos.bind(this); \n this.periodo_actual = this.periodo_actual.bind(this);\n this.func_ingresarNota = this.func_ingresarNota.bind(this);\n this.onChangeNota = this.onChangeNota.bind(this);\n this.guardar_nota = this.guardar_nota.bind(this);\n this.handleKeyUp = this.handleKeyUp.bind(this);\n this.progreso_guardado = this.progreso_guardado.bind(this);\n this.updateValue = this.updateValue.bind(this);\n this.tab_control = this.tab_control.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.promedio = this.promedio.bind(this);\n this.info_grado = this.info_grado.bind(this);\n this.info_asigantura = this.info_asigantura.bind(this);\n }\n\n\n onChange(e){\n this.setState({[e.target.name]: e.target.value})\n }\n\n onChangeNota(e){\n console.log(e.target);\n const list_notas = this.state.list_notas;\n list_notas[e.target.name] = e.target.value;\n this.setState({ list_notas }, () => {console.log(this.state.list_notas);}); \n } \n\n info_asigantura(){\n let id_docente = this.state.usuario_session.id_docente;\n GetData('asignaturas/infoasignatura/' + this.state.id_asignatura + \"/\" + id_docente, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n\n let nombre_asing = responseJSON.asignatura; \n\n this.setState({\n nombre_asing: nombre_asing\n });\n }else{\n this.setState({errorvalidardoc: true})\n \n }\n }); \n\n \n }\n\n info_grado(){\n \n GetData('grados/infogrado/' + this.state.id_grado, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n\n let nom_grado = responseJSON.nom_grado; \n this.setState({\n nom_grado: nom_grado\n });\n }\n }); \n } \n\n func_ingresarNota(id_matricula, nota){\n const list_notas = this.state.list_notas;\n list_notas[id_matricula] = nota\n this.setState({ list_notas });\n return true; \n } \n\n handleFocus(event) {\n event.target.select();\n }\n\n handleKeyUp(e) {\n //console.log(e.key);\n \n if (e.key === \"Enter\"){\n //let id = 15;\n //this[`ref${id}`].current.handleFocus();\n \n this.setState({id_matricula: e.target.id});\n this.guardar_nota(e.target.id); \n }\n }\n\n updateValue(e) {\n\n const list_notas = this.state.list_notas;\n list_notas[e.target.name] = e.target.value;\n \n this.setState({ list_notas });\n } \n\n progreso_guardado(id_matricula, estado){\n const guardado = this.state.guardado;\n guardado[`prog_${id_matricula}`] = estado;\n this.setState({ guardado });\n }\n\n tab_control(id_matricula){\n console.log(\"Procesando matriculas\");\n let listaindex = this.state.listaindex;\n\n Object.keys(listaindex).forEach(function(key) {\n let nums = parseInt(key) + 1;\n console.log(listaindex.length + \" \" + nums) ;\n \n if (id_matricula === listaindex[key]){\n /** validar que no se pase el key */\n let indice = listaindex[nums];\n\n document.getElementById(String(indice)).focus();\n return;\n }\n \n\n \n });\n return;\n }\n\n guardar_nota(id_matricula){ \n let notav = this.state.list_notas[id_matricula];\n let datosenvio = {\n id_matricula : id_matricula,\n id_actividades : this.state.id_actividades,\n nota_alumno: notav\n }\n \n // this.progreso_guardado(id_matricula, true);\n \n /*\n if (this.state.list_notas.length <= (key + 1)) {\n this.refs[indice].focus();\n } \n */\n\n \n \n PostData('calificaciones/guadarnota/', datosenvio).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){ \n console.log(\"nota guardada \");\n // this.progreso_guardado(id_matricula, false);\n this.tab_control(id_matricula);\n return true;\n }else{\n console.log(\"Error al guardar la nota\");\n return false\n }\n }) \n }\n\n periodo_actual(){\n GetData('periodos/actual/', this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n let periodo = responseJSON.periodo; \n this.setState({num_periodo: periodo});\n }\n });\n \n }\n\n focusInput = (id) => this[`ref${id}`].current.focus();\n\n formato_numero(numero, colname){\n if (colname !== \"nombres_apellidos_al\" && colname !== \"id_matricula\"){\n if (numero !== null)\n return parseFloat(numero).toFixed(1);\n else \n return parseFloat(0).toFixed(1);\n }else\n return numero;\n \n }\n\n promedio(notas, columas){\n \n let suma = 0;\n let numnotas = 0;\n let indice = 0;\n Object.keys(notas).forEach(function(key) {\n \n if (indice > 1){\n \n if (notas[key] !== null){\n suma += parseFloat(notas[key]);\n numnotas++;\n } \n }\n \n indice++;\n \n });\n \n let promedio = 0\n if (suma > 0)\n promedio = (suma / numnotas);\n else\n promedio = 0;\n\n return parseFloat(promedio).toFixed(1);\n \n }\n\n listar_alumnos(){\n\n GetData('actividades/listaalumnosporlogro/' + this.state.id_indicador + \"/\" + this.state.id_grado + \"/\" + this.state.id_grupo, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n \n\n // se contruye las columnas de con los nombres de los campos para poder armar la tabla\n let objetos = Object.keys(responseJSON.alumnos[0]);\n let columas = [];\n let num_notas = 1;\n let sum_camp_nota = 100 - (objetos.length - 2) * 10;\n Object.keys(objetos).forEach(function(key) {\n let nombrecampo = \"\";\n let anchocol = \"\";\n switch (key){\n case '0':\n nombrecampo = \"Código\";\n anchocol = \"5%\";\n break;\n case '1':\n nombrecampo = \"Nombre del Alumno\";\n anchocol = sum_camp_nota + \"%\";\n break;\n default:\n nombrecampo = \"Nota \" + num_notas;\n anchocol = \"8%\";\n num_notas++;\n break;\n }\n\n let campos = { header: nombrecampo, name: objetos[key], size: anchocol };\n columas.push(campos);\n\n });\n \n \n\n let colheader = objetos.length -1; \n const renderData = (data, cols) =>\n data.map((row, key) =>{ return [\n \n {cols.map(col =>\n {this.formato_numero(row[col.name], col.name)}\n )}\n {this.promedio(data[key], columas)}\n \n ]\n }\n\n );\n\n\n\n let listaindi = renderData(responseJSON.alumnos, columas);\n\n let campos = { header: \"Prom\", name: \"promedio\", size: \"8%\" };\n columas.push(campos); \n\n let titulostabla = columas.map(\n (item, key) =>{item.header});\n\n this.setState({ lista_alumnos : listaindi, titulostabla: titulostabla })\n \n }else{\n console.log(\"Error al cargar las aginaciones\");\n }\n })\n }\n\n render() {\n \n \n return (\n \n
\n
\n\n
\n
\n
Ingreso de calificaciones, {this.state.nombre_asing} Grado: {this.state.nom_grado} - {this.state.id_grupo}, Período: {this.state.num_periodo}
\n
\n
\n
Lista de Alumnos
\n \n \n \n \n \n {this.state.titulostabla}\n \n \n \n {this.state.lista_alumnos}\n \n
\n\n \n\n
\n
\n\n
\n \n\n );\n }\n\n componentDidUpdate(prevProps, prevState) {\n // this[`ref${5}`].handleFocus();\n }\n componentDidMount() {\n this.info_grado();\n this.info_asigantura();\n this.periodo_actual();\n this.listar_alumnos(); \n } \n}\n\nexport default CalificacionesIndicador;\n","import React, { Component } from 'react';\r\nimport {PostData} from '../../services/PostData';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Button from '@material-ui/core/Button';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { Avatar } from '@material-ui/core';\r\nimport { Usuario } from '../../services/Usuario';\r\n\r\nclass ModalIndicador extends Component {\r\n\r\n constructor(props, context) {\r\n super(props, context);\r\n\r\n this.onChange = this.onChange.bind(this); \r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.guardar_indicador = this.guardar_indicador.bind(this);\r\n let usuariosession = Usuario();\r\n\r\n this.state = {\r\n index: props.index, \r\n accion: props.accion,\r\n id_asigantura: props.id_asignatura,\r\n id_grado: props.id_grado,\r\n id_indicador: props.id_indicador,\r\n codigo_indic: props.codigo_indic,\r\n descripcion_indic: props.descripcion_indic,\r\n id_periodo: props.id_periodo,\r\n num_periodo: props.num_periodo,\r\n id_docente: usuariosession.id_docente,\r\n id_usuario: usuariosession.id_usuario,\r\n token: usuariosession.token,\r\n open: false,\r\n show: false,\r\n disabled: false,\r\n loading: false\r\n };\r\n \r\n }\r\n\r\n guardar_indicador(){\r\n if (this.state.id_indicador && this.state.descripcion_indic){\r\n this.setState({disabled: true, loading: true}) \r\n \r\n // PostData('indicadores/save', this.state).then ((result) =>{\r\n PostData('indicadores/guardarindicadordocente', this.state).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){ \r\n this.setState({disabled: false, loading: false}); \r\n this.props.listar_indicadores_sub();\r\n \r\n this.handleClose();\r\n }else{\r\n this.setState({disabled: false}) \r\n console.log(\"Error No se pudo guardar\");\r\n }\r\n\r\n })\r\n }\r\n\r\n\r\n } \r\n\r\n onChange(e){ \r\n this.setState({\r\n [e.target.name]: e.target.value\r\n });\r\n } \r\n\r\n handleClose() {\r\n this.setState({ show: false, open: false });\r\n }\r\n\r\n handleShow(m) {\r\n console.log(\"clic abrir \" + this.state.id_indicador); \r\n this.setState({ show: true, open: true });\r\n }\r\n\r\n \r\n render() {\r\n\r\n let visibleboton = true;\r\n /*\r\n if (this.state.id_periodo >= this.state.num_periodo || this.state.id_periodo === \"0\")\r\n visibleboton = true;\r\n*/\r\n if (this.props.cant_notas > 0 && this.props.id_periodo === this.props.num_periodo) \r\n visibleboton = false;\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 done_all\r\n \r\n \r\n Modificar Indicadores\r\n \r\n \r\n \r\n \r\n La descripción del indicador solo puede contener un máximo de 250 caracteres y solo puede tener un máximo de 4 indicadores por periodo.\r\n

\r\n
\r\n \r\n \r\n\r\n \r\n Periodo: \r\n \r\n -\r\n Periodo 1\r\n Periodo 2\r\n Periodo 3\r\n Periodo 4\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 componentDidMount() {\r\n \r\n \r\n } \r\n}\r\n\r\nexport default ModalIndicador;\r\n","import React, { Component } from 'react';\r\nimport {Redirect} from 'react-router-dom';\r\nimport Button from '@material-ui/core/Button';\r\nimport {Usuario} from '../../services/Usuario';\r\nimport {GetData} from '../../services/GetData';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableRow from '@material-ui/core/TableRow';\r\n\r\nimport { Avatar } from '@material-ui/core';\r\nimport {Link} from 'react-router-dom';\r\n\r\n\r\n\r\nimport ModalIndicador from './ModalIndicador';\r\nclass ModificarIndicadores extends Component {\r\n\r\n \r\n constructor(props){\r\n super(props);\r\n \r\n let usuariosession = Usuario();\r\n let id_usuario = null;\r\n let token = null;\r\n let id_docente = null; \r\n\r\n if (usuariosession){\r\n id_usuario = usuariosession.id_usuario;\r\n token = usuariosession.token;\r\n id_docente = usuariosession.id_docente;\r\n }\r\n\r\n this.state = {\r\n id_usuario: id_usuario,\r\n id_docente: id_docente,\r\n token: token, \r\n id_asignatura: props.match.params.idAsignatura,\r\n id_grado: props.match.params.idGrado,\r\n id_grupo: props.match.params.idGrupo,\r\n num_periodo: 0,\r\n nombre_asing: '',\r\n lista_indicadores: Cargando ...,\r\n indicadoredoc : null,\r\n openloading: false\r\n }\r\n this.info_grado = this.info_grado.bind(this);\r\n this.listar_indicadores = this.listar_indicadores.bind(this);\r\n this.info_asigantura = this.info_asigantura.bind(this);\r\n this.showloagin = this.showloagin.bind(this);\r\n this.handleChange = this.handleChange.bind(this);\r\n this.listar_indicadores_sub= this.listar_indicadores_sub.bind(this)\r\n }\r\n\r\n showloagin(estado){\r\n this.setState({\r\n openloading: estado\r\n })\r\n } \r\n\r\n onChange(e){\r\n this.setState({[e.target.name]: e.target.value})\r\n }\r\n\r\n handleChange(e) { \r\n const indicadoredoc = this.state.indicadoredoc;\r\n indicadoredoc[e.target.name] = e.target.value;\r\n this.setState({ indicadoredoc }); \r\n }\r\n\r\n periodo_actual(){\r\n GetData('periodos/actual/', this.state).then ((result) =>{ \r\n let responseJSON = result;\r\n \r\n if (responseJSON.error === false){\r\n let periodo = responseJSON.periodo; \r\n \r\n \r\n \r\n this.setState({num_periodo: periodo});\r\n }\r\n });\r\n }\r\n\r\n info_grado(){\r\n \r\n GetData('grados/infogrado/' + this.state.id_grado, this.state).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){\r\n \r\n let min_ganada = responseJSON.min_ganada; \r\n let max_nota = responseJSON.max_nota; \r\n let nom_grado = responseJSON.nom_grado; \r\n let nivel_ac = responseJSON.nivel;\r\n this.setState({\r\n min_ganada: min_ganada,\r\n max_nota: max_nota,\r\n nom_grado: nom_grado,\r\n nivel_ac: nivel_ac\r\n }, () => {\r\n this.listar_indicadores();\r\n });\r\n }\r\n }); \r\n } \r\n\r\n info_asigantura(){\r\n let id_docente = this.state.id_docente;\r\n \r\n GetData('asignaturas/infoasignatura/' + this.state.id_asignatura + \"/\" + id_docente, this.state).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){\r\n \r\n let nombre_asing = responseJSON.asignatura; \r\n \r\n this.setState({\r\n nombre_asing: nombre_asing\r\n });\r\n \r\n }else{\r\n this.setState({errorvalidardoc: true})\r\n \r\n }\r\n }); \r\n return true; \r\n \r\n }\r\n\r\n listar_indicadores_sub(){\r\n this.listar_indicadores();\r\n }\r\n \r\n\r\n listar_indicadores(){\r\n \r\n const StyledTableCell = withStyles(theme => ({\r\n head: {\r\n backgroundColor: theme.palette.common.black,\r\n color: theme.palette.common.white,\r\n },\r\n body: {\r\n fontSize: 14,\r\n },\r\n }))(TableCell);\r\n \r\n const StyledTableRow = withStyles(theme => ({\r\n root: {\r\n '&:nth-of-type(odd)': {\r\n backgroundColor: theme.palette.background.default,\r\n },\r\n },\r\n }))(TableRow);\r\n\r\n GetData('indicadores/listaindicadoresgra2/' + this.state.id_grado + '/' + this.state.id_asignatura + '/' + this.state.id_docente, this.state).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){\r\n let listaindi = null;\r\n \r\n this.setState({\r\n indicadoredoc: responseJSON.indicadores\r\n }, () => {\r\n listaindi = this.state.indicadoredoc.map(\r\n (item, index) => \r\n {item.codigo_indic}\r\n \r\n {this.state.id_grado < 5 ? (\r\n <>\r\n \r\n {item.descripcion_indic && (\r\n <>\r\n S: {item.descripcion_indic}
\r\n \r\n )}\r\n\r\n {item.descripcion_alto && (\r\n <>\r\n A: {item.descripcion_alto}
\r\n \r\n )}\r\n {item.descripcion_basico && (\r\n <>\r\n B: {item.descripcion_basico}
\r\n \r\n )}\r\n \r\n ) : (\r\n {item.descripcion_indic}\r\n )}\r\n
\r\n \r\n {item.id_periodo} \r\n \r\n \r\n this.listar_indicadores_sub()}\r\n cant_notas = {item.cant}\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 this.setState({lista_indicadores: listaindi, loading: false});\r\n \r\n }else{\r\n console.log(\"Error al cargar las aginaciones\");\r\n }\r\n })\r\n return true; \r\n }\r\n\r\n render() {\r\n\r\n if (!this.state.id_usuario){\r\n return ()\r\n } \r\n\r\n const StyledTableCell = withStyles(theme => ({\r\n head: {\r\n color: theme.palette.common.white,\r\n },\r\n body: {\r\n fontSize: 14,\r\n },\r\n }))(TableCell);\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 assignment_turned_in\r\n \r\n \r\n\r\n \r\n Indicadores para ({this.state.nom_grado} - {this.state.id_grupo}) - {this.state.nombre_asing} del año {this.state.anio_actual} \r\n \r\n\r\n \r\n infoDe clic en el icono del lápiz para modificar el indicador deseado. Recuerde que no se puede utilizar indicadores de periodos pasados.\r\n Los indicadores del periodo actual que ya tienen notas ingresadas no se pueden modificar.\r\n \r\n\r\n \r\n \r\n \r\n Código\r\n Concepto\r\n Periodo\r\n Acción\r\n \r\n \r\n\r\n \r\n \r\n {this.state.lista_indicadores}\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 componentDidMount() {\r\n this.setState({loading: true}); \r\n this.periodo_actual();\r\n this.info_asigantura();\r\n this.info_grado();\r\n \r\n } \r\n\r\n}\r\n\r\n\r\nexport default ModificarIndicadores;","import React, { Component } from 'react';\nimport './CalificacionesPeriodo.css';\nimport Button from '@material-ui/core/Button';\nimport {GetData} from '../../services/GetData';\nimport {PostData} from '../../services/PostData';\n\nimport {Link} from 'react-router-dom';\nimport Alert from 'react-bootstrap/Alert'\nimport LoadingScreen from 'react-loading-screen'\n\n\nclass CalificacionesPeriodo extends Component {\n \n\n\n\n constructor(props){\n super(props);\n this.state = {\n id_grado: props.match.params.idGrado,\n id_grupo: props.match.params.idGrupo,\n id_asignatura: props.match.params.idAsignatura,\n id_actividades: props.match.params.idActividad,\n id_indicador: props.match.params.idIndicador,\n nom_grado: null,\n lista_alumnos: null,\n titulos_tabla: null,\n titulos_tabla2: null,\n num_periodo: 0,\n nota_alumno: 0,\n id_matricula: 0,\n list_notas: {},\n guardado: {},\n listaindex : {},\n ConfPorcenNotas: [20, 80],\n procentaje_ptl: 0, //% plataforma\n calificacionPTF: false,\n errorvalidarExF: false,\n loading: true\n\n }\n this.listar_alumnos = this.listar_alumnos.bind(this); \n this.periodo_actual = this.periodo_actual.bind(this);\n this.func_ingresarNota = this.func_ingresarNota.bind(this);\n this.onChangeNota = this.onChangeNota.bind(this);\n this.guardar_nota = this.guardar_nota.bind(this);\n this.handleKeyUp = this.handleKeyUp.bind(this);\n this.progreso_guardado = this.progreso_guardado.bind(this);\n this.updateValue = this.updateValue.bind(this);\n this.tab_control = this.tab_control.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.promedio = this.promedio.bind(this);\n this.procentaje_nota = this.procentaje_nota.bind(this);\n this.procentajeExa = this.procentajeExa.bind(this);\n this.info_grado = this.info_grado.bind(this)\n this.resumen_notas_nomal = this.resumen_notas_nomal.bind(this);\n this.func_acceso_plataforma = this.func_acceso_plataforma.bind(this);\n this.func_round = this.func_round.bind(this);\n }\n\n\n onChange(e){\n this.setState({[e.target.name]: e.target.value})\n }\n\n onChangeNota(e){\n const list_notas = this.state.list_notas;\n list_notas[e.target.name] = e.target.value;\n this.setState({ list_notas }); \n } \n\n func_ingresarNota(id_matricula, nota){\n const list_notas = this.state.list_notas;\n list_notas[id_matricula] = nota\n this.setState({ list_notas });\n return true; \n } \n\n handleFocus(event) {\n event.target.select();\n }\n\n handleKeyUp(e) {\n //console.log(e.key);\n \n if (e.key === \"Enter\"){\n \n this.setState({id_matricula: e.target.id});\n this.guardar_nota(e.target.id); \n }\n }\n\n updateValue(e) {\n\n const list_notas = this.state.list_notas;\n list_notas[e.target.name] = e.target.value;\n \n this.setState({ list_notas });\n } \n\n progreso_guardado(id_matricula, estado){\n const guardado = this.state.guardado;\n guardado[`prog_${id_matricula}`] = estado;\n this.setState({ guardado });\n }\n\n tab_control(id_matricula){\n \n let listaindex = this.state.listaindex;\n\n Object.keys(listaindex).forEach(function(key) {\n let nums = parseInt(key) + 1;\n \n if (id_matricula === listaindex[key]){\n /** validar que no se pase el key */\n let indice = listaindex[nums];\n\n document.getElementById(String(indice)).focus();\n return;\n }\n \n\n \n });\n return;\n }\n\n guardar_nota(id_matricula){ \n let notav = this.state.list_notas[id_matricula];\n let datosenvio = {\n id_matricula : id_matricula,\n id_actividades : this.state.id_actividades,\n nota_alumno: notav\n }\n \n \n PostData('calificaciones/guadarnota/', datosenvio).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){ \n \n // this.progreso_guardado(id_matricula, false);\n this.tab_control(id_matricula);\n return true;\n }else{\n console.log(\"Error al guardar la nota\");\n return false\n }\n }) \n }\n\n periodo_actual(){\n GetData('periodos/actual/', this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n let periodo = responseJSON.periodo; \n this.setState({num_periodo: periodo});\n }\n });\n \n }\n\n info_grado(){\n \n GetData('grados/infogrado/' + this.state.id_grado, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n\n let nom_grado = responseJSON.nom_grado; \n this.setState({\n nom_grado: nom_grado\n });\n }\n }); \n } \n\n focusInput = (id) => this[`ref${id}`].current.focus();\n\n promedio(notas, columas){\n \n let suma = 0;\n let numnotas = 0;\n let indice = 0;\n let porc_not = 0;\n let PorcentaConf = this.state.ConfPorcenNotas;\n\n // console.log(\"Promedio.....\");\n // console.log(notas['nombres_apellidos_al']);\n \n\n Object.keys(notas).forEach(function(key) {\n \n\n if (indice > 1){\n if (notas[key] !== null && key !== 'EXF' ){\n let nota = parseFloat(notas[key]);\n let exf = parseFloat(notas['EXF']);\n let nota1 = (exf * (PorcentaConf[0] / 100));\n let nota2 = (nota * (PorcentaConf[1] / 100));\n\n porc_not = parseFloat(nota1) + parseFloat(nota2);\n suma += porc_not;\n \n numnotas++;\n } \n }\n \n indice++;\n \n });\n let promedioN = 0;\n if (suma > 0)\n promedioN = (suma / numnotas);\n\n \n promedioN = this.func_round(promedioN,1);\n \n return parseFloat(promedioN).toFixed(1);\n \n} \n\n promedio_pft(notas, columas){\n \n let suma = 0;\n let numnotas = 0;\n let indice = 0;\n let porc_not = 0;\n let PorcentaConf = this.state.ConfPorcenNotas;\n //console.log(\"---------------------------------------\");\n //console.log(PorcentaConf[0] + \", \" + PorcentaConf[1] + \", \" + PorcentaConf[2]); \n\n \n // console.log(\"Promedio.....\");\n // console.log(notas['nombres_apellidos_al']);\n Object.keys(notas).forEach(function(key) {\n \n if (indice > 1){\n if (notas[key] !== null && key !== 'EXF' && key !== 'PTL' ){\n let nota = parseFloat(notas[key]);\n let exf = parseFloat(notas['EXF']);\n let npt = parseFloat(notas['PTL']);\n let nota1 = (exf * (PorcentaConf[0] / 100)); //examen\n let nota2 = (npt * (PorcentaConf[1] / 100)); //plataforma\n let nota3 = (nota * (PorcentaConf[2] / 100)); //promedio actividade\n \n /*nota1 = this.func_round(nota1,1);\n nota2 = this.func_round(nota2,1);\n nota3 = this.func_round(nota3,1);*/\n\n porc_not = parseFloat(nota1) + parseFloat(nota2) + parseFloat(nota3);\n //let prom_d = this.func_round(porc_not,1);\n\n //console.log(notas['nombres_apellidos_al'] + \" - \" + nota1 + \" \" + nota2 + \" \" + nota3 + \" \" + prom_d);\n\n suma += porc_not;\n \n numnotas++;\n } \n }\n \n indice++;\n \n });\n\n let promedioN = 0;\n if (suma > 0)\n promedioN = (suma / numnotas);\n \n promedioN = this.func_round(promedioN,1); \n\n return parseFloat(promedioN).toFixed(1);;\n \n }\n\n func_acceso_plataforma(){\n GetData('calificacionesplataforma/habilitadoplaforma/' + this.state.id_grado + \"/\" + this.state.id_asignatura, this.state).then ((result) =>{\n let responseJSON = result;\n \n if (responseJSON.error === false){\n if (responseJSON.habilitado){\n this.setState({calificacionPTF: true, procentaje_ptl: responseJSON.porcentaje}, () =>{\n this.listar_alumnos(); \n });\n return true;\n }else\n this.listar_alumnos(); \n }else{\n return false;\n }\n\n });\n } \n\n procentaje_nota(datos, cols){\n let retorno = [];\n \n Object.keys(cols).forEach(function(key) {\n let caption = cols[key].name\n\n switch (key){\n case '0':\n retorno.push({datos[caption]})\n break;\n case '1': \n retorno.push({datos[caption]})\n break;\n default: \n switch (caption){\n case \"EXF\":\n let notaE = 0; \n if (datos[caption] !== null)\n notaE = datos[caption];\n\n retorno.push({parseFloat(notaE).toFixed(1)});\n break;\n case \"PTL\":\n let notaP = 0; \n if (datos[caption] !== null)\n notaP = datos[caption];\n \n retorno.push({parseFloat(notaP).toFixed(1)});\n break; \n default:\n\n let notap = 0;\n let nexam = 0; \n\n if (datos[caption] !== null)\n notap = datos[caption];\n\n if (datos['EXF'] !== null)\n nexam = datos['EXF']; \n\n let promedio = (parseFloat(notap) * 0.8) + (parseFloat(nexam) * 0.2);\n \n let multiplier = Math.pow(10, 1 || 0);\n promedio = Math.round(promedio * multiplier) / multiplier;\n retorno.push(<>{parseFloat(notap).toFixed(1)}\n {parseFloat(notap * 0.8).toFixed(1)}\n {parseFloat(nexam * 0.2).toFixed(1)}\n {parseFloat(promedio).toFixed(1)});\n }\n \n \n }\n });\n return retorno;\n }\n\nfunc_round(value, precision) {\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(value * multiplier) / multiplier;\n}\n\n procentaje_nota_pft(datos, cols){\n let retorno = [];\n let porc_plf = this.state.procentaje_ptl / 100;\n\n Object.keys(cols).forEach(function(key) {\n let caption = cols[key].name\n\n \n switch (key){\n case '0':\n retorno.push({datos[caption]})\n break;\n case '1': \n retorno.push({datos[caption]})\n break;\n default: \n switch (caption){\n case \"EXF\":\n //let prom = func_round(datos[caption],1);\n let nota = 0; \n if (datos[caption] !== null)\n nota = datos[caption];\n\n retorno.push({parseFloat(nota).toFixed(1)});\n break;\n case \"PTL\":\n let nota2 = 0; \n if (datos[caption] !== null)\n nota2 = datos[caption]; \n\n retorno.push({parseFloat(nota2).toFixed(1)});\n break; \n default:\n \n let notap = 0;\n let nexam = 0;\n let nptl = 0;\n\n if (datos[caption] !== null)\n notap = datos[caption];\n\n if (datos['EXF'] !== null)\n nexam = datos['EXF']; \n \n if (datos['PTL'] !== null)\n nptl = datos['PTL']; \n\n let promedio = (parseFloat(notap) * 0.6) + (parseFloat(nexam) * 0.2) + (parseFloat(nptl) * porc_plf)\n \n \n promedio = this.func_round(promedio,1);\n\n retorno.push(<>{parseFloat(notap).toFixed(1)}\n {(parseFloat(notap) * 0.6).toFixed(1)}\n {(parseFloat(nexam) * 0.2).toFixed(1)}\n {(parseFloat(nptl) * porc_plf).toFixed(1)}\n {parseFloat(promedio).toFixed(1)});\n }\n \n \n }\n }.bind(this));\n\n\n return retorno;\n }\n\n procentajeExa(nota){\n let def = 0;\n def = parseFloat(nota) * 0.2;\n return parseFloat(def).toFixed(1);\n} \n\n//no incluye la calificacion por plataforma\nresumen_notas_nomal(responseJSON){\n // se contruye las columnas de con los nombres de los campos para poder armar la tabla\n\n\n let porcenT = [\"Prom\", \"80%\", \"20%\", \"100%\"];\n \n if (!responseJSON.alumnos[0].EXF){\n this.setState({errorvalidarExF: true});\n return;\n }\n\n let objetos = Object.keys(responseJSON.alumnos[0]);\n let columas = [];\n let columasHeader2 = [];\n \n let sum_camp_nota = 100 - (13 - 8 - ((objetos.length - 4) * 32));\n let cont_colum = 0;\n let colt_columtotal = 0;\n Object.keys(objetos).forEach(function(key) {\n let nombrecampo = \"\";\n let anchocol = \"\";\n switch (key){\n case '0':\n nombrecampo = \"Código\";\n anchocol = \"5%\";\n break;\n case '1':\n nombrecampo = \"Nombre del Alumno\";\n anchocol = sum_camp_nota + \"%\";\n break;\n case '2':\n nombrecampo = objetos[key];\n anchocol = \"8%\";\n cont_colum++;\n break; \n default:\n nombrecampo = objetos[key];\n anchocol = \"32%\";\n cont_colum++;\n break;\n }\n colt_columtotal++;\n\n let campos = { header: nombrecampo, name: objetos[key], size: anchocol };\n columas.push(campos);\n \n \n\n });\n \n cont_colum = (colt_columtotal + (cont_colum - 1) * 4) - (cont_colum-1);\n\n let xy = 0;\n for(let x = 0; x 2 && x < (cont_colum) ){\n \n let campos = { header: porcenT[xy], name: porcenT[xy], size: \"8%\" };\n xy++;\n if (xy>3)\n xy = 0;\n\n columasHeader2.push(campos); \n }\n }\n \n const renderData = (data, cols) =>\n data.map((row, key) =>{this.procentaje_nota(row, cols)}{this.promedio(data[key], columas)}); \n\n\n\n let listaindi = renderData(responseJSON.alumnos, columas);\n\n let campos = { header: \"Prom\", name: \"promedio\", size: \"8%\" };\n columas.push(campos); \n\n let titulostabla = columas.map(\n (item, key) => 2 && key < colt_columtotal ? 'text-center': null} rowSpan={key <= 2 || key > (colt_columtotal - 1) ? '2': null} colSpan={key > 2 && key < colt_columtotal ? '4': '0'} width={item.size}>{item.header});\n\n let titulostabla2 = columasHeader2.map(\n (item, key) =>{item.header}); \n\n this.setState({ lista_alumnos : listaindi, titulostabla: titulostabla, titulos_tabla2: titulostabla2 })\n}\n\nresumen_notas_pft(responseJSON){\n let porc_plf = this.state.procentaje_ptl;\n let porcenT = [\"Prom\", \"60%\", porc_plf + \"%\", \"20%\", \"100%\"];\n \n if (!responseJSON.alumnos[0].EXF){\n this.setState({errorvalidarExF: true});\n return;\n }\n\n let objetos = Object.keys(responseJSON.alumnos[0]);\n let columas = [];\n let columasHeader2 = [];\n \n let sum_camp_nota = 100 - (13 - 8 - ((objetos.length - 4) * 32));\n let cont_colum = 0;\n let colt_columtotal = 0;\n Object.keys(objetos).forEach(function(key) {\n let nombrecampo = \"\";\n let anchocol = \"\";\n switch (key){\n case '0':\n nombrecampo = \"Código\";\n anchocol = \"5%\";\n break;\n case '1':\n nombrecampo = \"Nombre del Alumno\";\n anchocol = sum_camp_nota + \"%\";\n break;\n case '2':\n nombrecampo = objetos[key];\n anchocol = \"8%\";\n cont_colum++;\n break; \n default:\n nombrecampo = objetos[key];\n anchocol = \"32%\";\n cont_colum++;\n break;\n }\n colt_columtotal++;\n\n let campos = { header: nombrecampo, name: objetos[key], size: anchocol };\n columas.push(campos);\n \n\n });\n \n cont_colum = (colt_columtotal + (cont_colum - 2) * 5) - (cont_colum- 2);\n \n let xy = 0;\n for(let x = 0; x 3 && x < (cont_colum) ){\n \n let campos = { header: porcenT[xy], name: porcenT[xy], size: \"8%\" };\n xy++;\n if (xy>4)\n xy = 0;\n\n columasHeader2.push(campos); \n \n }\n }\n \n \n\n const renderData = (data, cols) =>\n data.map((row, key) =>{this.procentaje_nota_pft(row, cols)}{this.promedio_pft(data[key], columas)}); \n\n \n let listaindi = renderData(responseJSON.alumnos, columas);\n \n\n let campos = { header: \"Prom\", name: \"promedio\", size: \"8%\" };\n columas.push(campos); \n\n let titulostabla = columas.map(\n (item, key) => 3 && key < colt_columtotal ? 'text-center': null} rowSpan={key <= 3 || key > (colt_columtotal - 1) ? '2': null} colSpan={key > 3 && key < colt_columtotal ? '5': '0'} width={item.size}>{item.header});\n\n let titulostabla2 = columasHeader2.map(\n (item, key) =>{item.header}); \n\n this.setState({ lista_alumnos : listaindi, titulostabla: titulostabla, titulos_tabla2: titulostabla2 });\n\n}\n\nlistar_alumnos(){\n \n GetData('calificaciones/califiperiodo/' + this.state.id_grado + \"/\" + this.state.id_grupo + \"/\" + this.state.id_asignatura, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n \n if (!this.state.calificacionPTF)\n this.resumen_notas_nomal(responseJSON);\n else{\n this.setState({ConfPorcenNotas: [20, this.state.procentaje_ptl, 60]}, () => {\n this.resumen_notas_pft(responseJSON);\n }); \n \n }\n \n this.setState({loading: false})\n \n }else{\n console.log(\"Error al cargar las calificaciones\");\n }\n })\n }\n\n render() {\n \n \n let mensajeerror = \"\";\n if (this.state.errorvalidarExF === true){\n mensajeerror = \n Error! \n No se pueden mostrar las notas hasta que ingrese las notas del examen final \n \n }\n\n let mensajeinformativo =
\n info\n EXF: Calificación Examen Final \n PTL: Calificación Plataforma \n PROM: Promedio de las actividades
\n\n if (!this.state.calificacionPTF){\n mensajeinformativo =
infoEXF: Calificación Examen Final
\n }\n return (\n \n \n
\n\n \n\n
\n
\n \n Calificaciones del \n Período: {this.state.num_periodo}, \n Grado: {this.state.nom_grado} - {this.state.id_grupo} \n
\n
\n \n {mensajeinformativo} \n\n
Lista de Alumnos
\n \n {mensajeerror}\n \n \n {this.state.titulostabla}\n {this.state.titulos_tabla2}\n \n {this.state.lista_alumnos}\n
\n\n \n\n
\n
\n\n \n\n
\n \n\n );\n }\n\n componentDidUpdate(prevProps, prevState) {\n // this[`ref${5}`].handleFocus();\n }\n componentDidMount() { \n this.periodo_actual();\n this.info_grado();\n this.func_acceso_plataforma(); \n } \n}\n\nexport default CalificacionesPeriodo;\n","import React, { Component } from 'react';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport {PostData} from '../../services/PostData';\r\nimport LinearProgress from '@material-ui/core/LinearProgress';\r\n\r\nclass InputNotaFinalP extends Component {\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n index: props.index,\r\n notaalumno: props.nota,\r\n guardado: false,\r\n editactivo: false,\r\n error: false,\r\n urimg: '/images/save_exito.png'\r\n }\r\n this.handleKeyUp = this.handleKeyUp.bind(this);\r\n this.guardar_nota = this.guardar_nota.bind(this);\r\n this.resetSave = this.resetSave.bind(this);\r\n \r\n }\r\n\r\n func_round(value, precision) {\r\n var multiplier = Math.pow(10, precision || 0);\r\n return Math.round(value * multiplier) / multiplier;\r\n }\r\n\r\n\r\n func_validarnota(nota){\r\n switch(nota){\r\n case 'A':\r\n return true;\r\n case 'D':\r\n return true;\r\n case 'E':\r\n return true;\r\n default:\r\n return false;\r\n\r\n }\r\n }\r\n\r\n handleKeyUp(e) {\r\n //console.log(e.key);\r\n \r\n \r\n if (e.key === \"Enter\"){\r\n \r\n let notaing = e.target.value;\r\n\r\n if (notaing === 'A' || notaing === 'D' || notaing === 'E'){\r\n this.setState({id_matricula: e.target.id}); \r\n this.guardar_nota(notaing); \r\n }else{\r\n this.setState({guardado: false});\r\n return;\r\n }\r\n \r\n \r\n \r\n }else{\r\n this.setState({guardado: false});\r\n }\r\n }\r\n\r\n keyPress(e){\r\n e.keyCode = 0;\r\n } \r\n\r\n guardar_nota(notaing){ \r\n \r\n let datosenvio = {\r\n id_matricula : this.props.id_matricula,\r\n id_grado: this.props.id_grado,\r\n id_grupo: this.props.id_grupo,\r\n id_asignatura: this.props.id_asignatura, \r\n nota_alumno: notaing\r\n } \r\n \r\n if (!notaing){\r\n this.setState({error: true});\r\n return;\r\n }\r\n\r\n\r\n if (this.func_validarnota(notaing) === false){\r\n this.setState({guardado: false, error: true});\r\n return;\r\n } \r\n\r\n this.setState({editactivo: true})\r\n\r\n PostData('notafinalperiodo/guadarnota/', datosenvio).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){ \r\n this.props.tab_control(this.props.id_matricula); \r\n this.setState({guardado: true, error: false, editactivo: false}); \r\n\r\n // return true;\r\n }else{\r\n \r\n this.setState({guardado: false, error: true, editactivo: false});\r\n console.log(\"Error al guardar la nota\");\r\n // return false\r\n }\r\n }) \r\n }\r\n\r\n resetSave(e){\r\n \r\n console.log(\"Recibiendo el foco\"); \r\n this.setState({guardado: false});\r\n \r\n }\r\n\r\n convertirnumero(numero){\r\n if (numero !== \"\"){\r\n return parseFloat(numero).toFixed(1)\r\n }\r\n }\r\n \r\n\r\n render() {\r\n\r\n return (\r\n <>\r\n { this[`ref${this.props.index}`] = el; }} \r\n name={this.props.id_matricula} \r\n id={this.props.id_matricula} \r\n disabled={this.state.editactivo}\r\n autoFocus={false}\r\n className=\"quitarpading stiloimput\" \r\n defaultValue={this.state.notaalumno} \r\n onBlur={this.resetSave}\r\n onKeyDown={this.keyPress}\r\n onKeyUp={this.handleKeyUp} \r\n onChange={this.props.onChangeNota}\r\n onFocus={this.props.handleFocus}\r\n />\r\n \"img\" \r\n \r\n \r\n );\r\n }\r\n componentDidMount() {\r\n // this.setState({open: false}); \r\n \r\n } \r\n}\r\n\r\nexport default InputNotaFinalP;","import React, { Component } from 'react';\nimport './NotaFinalPeriodo.css'; \nimport Button from '@material-ui/core/Button';\nimport {GetData} from '../../services/GetData';\nimport {PostData} from '../../services/PostData';\n\nimport {Link} from 'react-router-dom';\nimport Alert from 'react-bootstrap/Alert'\n\n\nimport {Usuario} from '../../services/Usuario';\nimport LoadingScreen from 'react-loading-screen'\nimport InputNotaFinalP from '../Utilitarios/InputNotaFinalP';\n\nclass NotaFinalPeriodo extends Component {\n \n\n\n constructor(props){\n super(props);\n this.state = {\n usuario_session: Usuario(),\n id_grado: props.match.params.idGrado,\n id_grupo: props.match.params.idGrupo,\n id_asignatura: props.match.params.idAsignatura,\n lista_alumnos: ,\n num_periodo: 0,\n nota_alumno: 0,\n id_matricula: 0,\n list_notas: {},\n guardado: {},\n listaindex : {},\n min_ganada: 0,\n max_nota: 0,\n nom_grado: \"\",\n nombre_asing: \"\",\n errorvalidardoc: false,\n loading: true\n\n }\n this.listar_alumnos = this.listar_alumnos.bind(this); \n this.periodo_actual = this.periodo_actual.bind(this);\n this.func_ingresarNota = this.func_ingresarNota.bind(this);\n this.onChangeNota = this.onChangeNota.bind(this);\n this.guardar_nota = this.guardar_nota.bind(this);\n this.handleKeyUp = this.handleKeyUp.bind(this);\n this.progreso_guardado = this.progreso_guardado.bind(this);\n this.updateValue = this.updateValue.bind(this);\n this.tab_control = this.tab_control.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.info_grado = this.info_grado.bind(this);\n this.info_asigantura = this.info_asigantura.bind(this);\n }\n\n\n onChange(e){\n this.setState({[e.target.name]: e.target.value})\n }\n\n func_validarnota(nota){\n switch(nota){\n case 'A':\n return true;\n case 'B':\n return true;\n case 'E':\n return true;\n case 'S':\n return true;\n case 'I':\n return true;\n case 'D':\n return true;\n case 'N':\n return true;\n default:\n return false;\n\n }\n}\n\n\n onChangeNota(e){\n \n let notaing = \"\";\n \n \n console.log(\"Entro\")\n notaing = e.target.value;\n const list_notas = this.state.list_notas;\n list_notas[e.target.name] = notaing;\n this.setState({ list_notas }); \n\n \n \n\n \n } \n\n func_ingresarNota(id_matricula, nota){\n const list_notas = this.state.list_notas;\n list_notas[id_matricula] = nota\n this.setState({ list_notas });\n return true; \n } \n\n handleFocus(event) {\n event.target.select();\n }\n\n func_valoracion(NF){\n switch (NF){\n case \"A\":\n return true;\n case \"B\":\n return true;\n case \"E\":\n return true;\n case \"S\":\n return true;\n case \"I\":\n return true;\n case \"D\":\n return true;\n case \"N\":\n return true;\n default:\n return false;\n }\n\n }\n\n handleKeyUp(e) {\n //console.log(e.key);\n\n if (e.key === \"Enter\"){\n\n \n if(!this.func_valoracion(e.target.value)){\n console.log(\"No es una valoración válida\");\n e.target.value = \"\";\n return;\n }\n \n this.setState({id_matricula: e.target.id});\n this.guardar_nota(e.target.id); \n }\n }\n\n updateValue(e) {\n const list_notas = this.state.list_notas;\n list_notas[e.target.name] = e.target.value;\n \n this.setState({ list_notas });\n } \n\n progreso_guardado(id_matricula, estado){\n const guardado = this.state.guardado;\n guardado[`prog_${id_matricula}`] = estado;\n this.setState({ guardado });\n }\n\n tab_control(id_matricula){\n let listaindex = this.state.listaindex;\n let conteo = Object.keys(listaindex).length;\n\n Object.keys(listaindex).forEach(function(key) {\n let nums = parseInt(key) + 1;\n \n if (id_matricula === listaindex[key]){\n /** validar que no se pase el key */\n let indice = listaindex[nums];\n \n if (nums < conteo) {\n document.getElementById(String(indice)).focus();\n }\n \n return;\n }\n \n\n \n });\n return;\n }\n\n guardar_nota(id_matricula){ \n let notav = this.state.list_notas[id_matricula];\n let datosenvio = {\n id_matricula : id_matricula,\n id_grado: this.state.id_grado,\n id_grupo: this.state.id_grupo,\n id_asignatura: this.state.id_asignatura, \n nota_alumno: notav\n } \n \n PostData('notafinalperiodo/guadarnota/', datosenvio).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){ \n this.tab_control(id_matricula);\n return true;\n }else{\n console.log(\"Error al guardar la nota\");\n return false\n }\n }) \n }\n\n periodo_actual(){\n GetData('periodos/actual/', this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n let periodo = responseJSON.periodo; \n this.setState({num_periodo: periodo});\n }\n });\n \n }\n\n info_grado(){\n \n GetData('grados/infogrado/' + this.state.id_grado, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n\n let min_ganada = responseJSON.min_ganada; \n let max_nota = responseJSON.max_nota; \n let nom_grado = responseJSON.nom_grado; \n this.setState({\n min_ganada: min_ganada,\n max_nota: max_nota,\n nom_grado: nom_grado\n });\n }\n }); \n }\n\n info_asigantura(){\n let id_docente = this.state.usuario_session.id_docente;\n GetData('asignaturas/infoasignatura/' + this.state.id_asignatura + \"/\" + id_docente, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n\n let nombre_asing = responseJSON.asignatura; \n\n this.setState({\n nombre_asing: nombre_asing\n }, () =>{\n //si no hay errores en la verificación del docente y la asignatura se cargan los alumnos\n this.listar_alumnos(); \n });\n }else{\n this.setState({errorvalidardoc: true})\n \n }\n }); \n\n \n }\n\n focusInput = (id) => this[`ref${id}`].current.focus();\n\n listar_alumnos(){\n\n PostData('notafinalperiodo/alumnos/', this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n\n let guardado = this.state.guardado;\n let list1_notas = this.state.list_notas;\n let listaindex = this.state.listaindex;\n Object.keys(responseJSON.alumnos).forEach(function(key) {\n \n let id_matricula = responseJSON.alumnos[key].id_matricula;\n let notav = responseJSON.alumnos[key].notav;\n \n listaindex[key] = id_matricula;\n\n if (!notav)\n notav = \"\";\n \n list1_notas[id_matricula] = notav;\n \n\n //this.func_ingresarNota(id_matricula, notav)\n\n\n\n guardado[`prog_${id_matricula}`] = true;\n\n });\n\n let listaindi = responseJSON.alumnos.map(\n (item, index) =>\n {item.id_matricula}\n {item.nombres_apellidos_al}\n \n \n { this[`ref${index}`] = el; }}\n name={item.id_matricula} \n id_matricula = {item.id_matricula}\n id_grado = {this.state.id_grado}\n id_grupo = {this.state.id_grupo}\n id_asignatura={this.state.id_asignatura} \n id={item.id_matricula} \n nota={this.state.list_notas[item.id_matricula]}\n onChangeNota={this.onChangeNota}\n handleFocus={this.handleFocus}\n tab_control={this.tab_control}\n />\n\n \n \n \n \n );\n\n this.setState({ lista_alumnos : listaindi }, () => {\n this.setState({loading: false });\n })\n \n }else{\n console.log(\"Error al cargar las aginaciones\");\n }\n })\n }\n\n render() {\n\n let mensajeerrordocente = \"\";\n if (this.state.errorvalidardoc === true){\n mensajeerrordocente = \n Oh snap! Error de valicación!\n La asignatura no es válida para el Docente actual, de clic en el botón regresar he inténtelo nuevamente \n \n }\n\n return (\n \n
\n
\n\n \n\n
\n
\n \n Calificaciones Nota Final, \n Grado: {this.state.nom_grado} - 0{this.state.id_grupo} \n Período: {this.state.num_periodo} \n\n \n
\n
\n
\n Nota: Las notas se guardan al presionar ENTER, El rango de notas que puede ingresar es: (A, B, E, S, I, D, N) \n
\n
Lista de Alumnos
\n \n {mensajeerrordocente}\n\n \n \n \n \n \n \n \n \n \n {this.state.lista_alumnos}\n \n
CódigoNombreNota
\n\n \n\n
\n
\n\n \n\n
\n \n\n );\n }\n\n componentDidMount() {\n this.periodo_actual();\n this.info_grado();\n this.info_asigantura();\n \n } \n}\n\nexport default NotaFinalPeriodo;\n","import React, { Component } from 'react';\r\nimport {GetData} from '../../services/GetData';\r\nimport {URL_INFORMES} from '../../services/UrlWebServis';\r\n\r\nimport Button from '@material-ui/core/Button';\r\nimport {Link} from 'react-router-dom';\r\n\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport Select from '@material-ui/core/Select';\r\nimport { Grid, LinearProgress } from '@material-ui/core';\r\nimport { Usuario } from '../../services/Usuario';\r\n\r\n\r\n\r\n\r\nclass Consolidado extends Component {\r\n\r\n constructor(props){\r\n \r\n super(props);\r\n this.state = {\r\n id_grado: props.match.params.idGrado, \r\n id_grupo: props.match.params.idGrupo,\r\n usuario_session: Usuario(),\r\n id_periodo: 0,\r\n nom_grado: null,\r\n nombre_alumno: null,\r\n promedio_gen: 0,\r\n lista_materias: null,\r\n lista_informe_alumno: null,\r\n lista_periodos: null,\r\n loading: true\r\n } \r\n \r\n \r\n this.fun_info_alumno = this.fun_info_alumno.bind(this);\r\n this.info_grado = this.info_grado.bind(this);\r\n this.lista_alumnos_grado = this.lista_alumnos_grado.bind(this);\r\n this.periodo_actual = this.periodo_actual.bind(this);\r\n this.celdas_tabla = this.celdas_tabla.bind(this);\r\n this.formato_celda = this.formato_celda.bind(this);\r\n this.listar_periodos = this.listar_periodos.bind(this);\r\n\r\n }\r\n\r\n info_grado(){\r\n \r\n GetData('grados/infogrado/' + this.state.id_grado, this.state).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){\r\n\r\n let nom_grado = responseJSON.nom_grado; \r\n this.setState({\r\n nom_grado: nom_grado\r\n });\r\n }\r\n }); \r\n } \r\n\r\n fun_info_alumno(){\r\n\r\n GetData('matriculas/datosmatricula/' + this.state.id_matricula, this.state).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){\r\n let datos_alumno = responseJSON.matricula[0]; \r\n \r\n this.setState({\r\n nombre_alumno : datos_alumno.nombres_apellidos_al\r\n }, () => {\r\n // this.lista_materias();\r\n });\r\n }\r\n }); \r\n }\r\n\r\n periodo_actual(){\r\n GetData('periodos/actual/', this.state).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){\r\n let periodo = responseJSON.periodo; \r\n this.setState({id_periodo: periodo}, () => {\r\n this.listar_periodos();\r\n this.lista_alumnos_grado();\r\n \r\n });\r\n }\r\n });\r\n \r\n}\r\n\r\n listado_materias(materias){\r\n return materias.map(\r\n (item, index) =><>{index}\r\n );\r\n }\r\n\r\n formato_celda(key, valor){\r\n \r\n if (parseInt(this.state.id_grado) >= 5){\r\n if (key > 1){\r\n if (/^[A-Za-z]$/.test(valor))\r\n return valor;\r\n else\r\n return parseFloat(valor).toFixed(1);\r\n }else\r\n return valor; \r\n }else\r\n return valor; \r\n} \r\n\r\n \r\n\r\n celdas_tabla(fila){\r\n let retorno = [];\r\n \r\n Object.keys(fila).forEach(function(key) {\r\n let caption = fila[key];\r\n \r\n let clase = \"\";\r\n\r\n if (key !== \"1\"){\r\n clase = \"text-center fontTabla \";\r\n }else{\r\n clase = \"text-left fontTabla \";\r\n }\r\n\r\n if (parseInt(this.state.id_grado) >= 5){\r\n if (parseInt(key) > 1){\r\n if (parseFloat(caption) < 3)\r\n clase += \"nota_perdida\";\r\n }\r\n }\r\n \r\n /* if (parseInt(key) > 1 && ){\r\n clase += \"nota_perdida\";\r\n }*/\r\n\r\n retorno.push({this.formato_celda(key, caption)});\r\n\r\n }.bind(this))\r\n \r\n \r\n return retorno;\r\n }\r\n listar_alumnos_notas(datos){\r\n return datos.map(\r\n (item, index) =><>{this.celdas_tabla(item)}\r\n );\r\n }\r\n\r\n lista_alumnos_grado(){\r\n\r\n\r\n \r\n let id_grado = this.state.id_grado;\r\n let id_grupo = this.state.id_grupo; \r\n let url = 'informespdf/consolidadperiodo/';\r\n const token = this.state.usuario_session.token;\r\n const id_usuario = this.state.usuario_session.id_usuario;\r\n \r\n this.setState({loading: true});\r\n\r\n if (this.state.id_grado < 5)\r\n url = 'informespdf/consolidadperiodoletra/';\r\n\r\n GetData(url + id_grado + '/' + id_grupo + '/' + this.state.id_periodo + \"/\"+id_usuario+\"/\"+token, this.state).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){\r\n \r\n let datos = responseJSON.datos;\r\n let materias = responseJSON.materias;\r\n let columnaPro = Prom\r\n\r\n if (this.state.id_grado < 5)\r\n columnaPro = \"\"; \r\n \r\n let header = \r\n \r\n \r\n \r\n \r\n {this.listado_materias(materias)}\r\n {columnaPro}\r\n \r\n \r\n \r\n {this.listar_alumnos_notas(datos)}\r\n \r\n
CódigoNombre del estudiante
\r\n\r\n let retorno = [];\r\n Object.keys(materias).forEach(function(key) {\r\n retorno.push(<>({key}) {materias[key]} \r\n );\r\n });\r\n \r\n \r\n \r\n this.setState({lista_alumnos_grado: header, lista_materias: retorno, loading: false})\r\n }\r\n \r\n });\r\n\r\n \r\n }\r\n\r\n listar_periodos(){\r\n let periodos_list = [];\r\n\r\n for (let i = 1; i <= this.state.id_periodo; i++)\r\n periodos_list.push(i);\r\n\r\n const lista = periodos_list.map((item, index) =>Periodo {item});\r\n\r\n this.setState({lista_periodos: lista})\r\n\r\n }\r\n\r\n cambiar_periodo = (e) => {\r\n this.setState({id_periodo: e.target.value}, () =>{\r\n this.lista_alumnos_grado();\r\n });\r\n \r\n }\r\n \r\n render() {\r\n let numeral = \"#\";\r\n let botonreturn = null;\r\n if (this.state.impresion === \"1\"){\r\n botonreturn = \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 Grado: {this.state.nom_grado} - 0{this.state.id_grupo} \r\n \r\n \r\n Período: \r\n \r\n \r\n \r\n { this.state.lista_periodos }\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 {this.state.lista_materias}\r\n
\r\n {this.state.lista_alumnos_grado} \r\n
\r\n \r\n {botonreturn}\r\n
\r\n
\r\n \r\n\r\n );\r\n }\r\n\r\n componentDidMount() {\r\n this.info_grado();\r\n this.periodo_actual();\r\n \r\n \r\n\r\n } \r\n\r\n}\r\n\r\nexport default Consolidado;\r\n","import React, { Component } from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport {GetData} from '../../services/GetData';\r\n\r\n\r\nimport {Link} from 'react-router-dom';\r\n\r\nimport LoadingScreen from 'react-loading-screen'\r\nimport { FormControl, LinearProgress, MenuItem, Select } from '@material-ui/core';\r\n\r\n\r\nclass Calificacionesfinalp extends Component {\r\n \r\n\r\n\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n id_grado: props.match.params.idGrado,\r\n id_grupo: props.match.params.idGrupo,\r\n id_asignatura: props.match.params.idAsignatura,\r\n id_actividades: props.match.params.idActividad,\r\n id_indicador: props.match.params.idIndicador,\r\n nom_grado: null,\r\n lista_alumnos: null,\r\n titulos_tabla: null,\r\n titulos_tabla2: null,\r\n num_periodo: 0,\r\n nota_alumno: 0,\r\n id_matricula: 0,\r\n list_notas: {},\r\n guardado: {},\r\n listaindex : {},\r\n ConfPorcenNotas: [20, 80],\r\n procentaje_ptl: 0, //% plataforma\r\n calificacionPTF: false,\r\n errorvalidarExF: false,\r\n loading: true,\r\n loading_bar: false\r\n\r\n }\r\n this.listar_alumnos = this.listar_alumnos.bind(this); \r\n this.periodo_actual = this.periodo_actual.bind(this);\r\n this.info_grado = this.info_grado.bind(this)\r\n this.resumen_notas_nomal = this.resumen_notas_nomal.bind(this);\r\n this.listar_periodos = this.listar_periodos.bind(this);\r\n\r\n }\r\n\r\n\r\n\r\n periodo_actual(){\r\n GetData('periodos/actual/', this.state).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){\r\n let periodo = responseJSON.periodo; \r\n this.setState({num_periodo: periodo}, ()=> {\r\n this.listar_periodos()\r\n });\r\n }\r\n });\r\n \r\n }\r\n\r\n info_grado(){\r\n \r\n GetData('grados/infogrado/' + this.state.id_grado, this.state).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){\r\n\r\n let nom_grado = responseJSON.nom_grado; \r\n this.setState({\r\n nom_grado: nom_grado\r\n });\r\n }\r\n }); \r\n } \r\n\r\n \r\n\r\n \r\ndatos_columna(datos, cols){\r\n let retorno = [];\r\n Object.keys(datos).forEach(function(key) {\r\n let datocelda = datos[key];\r\n let nota = datocelda;\r\n let center = \"\";\r\n if (key > 1){\r\n nota = parseFloat(datocelda).toFixed(1);\r\n center = \"center\";\r\n }\r\n retorno.push({nota});\r\n })\r\n return retorno;\r\n}\r\n\r\nanchocolumna(key, total){\r\n \r\n\r\n let an = total - 3;\r\n let w = an * 10;\r\n let anca = 100 - w - 20; \r\n\r\n if (key === 0)\r\n return \"10%\";\r\n\r\n if (key === 1)\r\n return anca + \"%\";\r\n\r\n if (key > 1 && key < total)\r\n return \"10%\";\r\n \r\n if (key === (total-1)){\r\n return \"10%\";\r\n } \r\n \r\n}\r\n\r\nresumen_notas_nomal(columnas, datostabla){\r\n // se contruye las columnas de con los nombres de los campos para poder armar la tabla\r\n\r\n\r\n let objetos = Object.keys(columnas);\r\n let totalcol = objetos.length;\r\n\r\n\r\n let titulostabla = columnas.map(\r\n (item, key) =>{item});\r\n \r\n \r\n const renderData = datostabla.map((alumno, key) =>\r\n {\r\n this.datos_columna(alumno, key)\r\n }); \r\n\r\n\r\n\r\n let listaindi = renderData; //renderData(datostabla, colt_columtotal); \r\n\r\n this.setState({ lista_alumnos : listaindi, titulostabla: titulostabla })\r\n}\r\n\r\n\r\nlistar_alumnos(){\r\n this.setState({loading_bar: true})\r\n GetData('calificaciones/tablanotasindicador/' + this.state.id_grado + \"/\" + this.state.id_grupo + \"/\" + this.state.id_asignatura + \"/\" + this.state.num_periodo, this.state).then ((result) =>{\r\n let responseJSON = result;\r\n //console.log(responseJSON);\r\n if (responseJSON.error === false){\r\n \r\n\r\n this.resumen_notas_nomal(responseJSON.titulotbl,responseJSON.tabla);\r\n \r\n \r\n this.setState({loading: false, loading_bar: false})\r\n \r\n }else{\r\n console.log(\"Error al cargar las calificaciones\");\r\n }\r\n })\r\n }\r\n\r\n\r\n cambiar_periodo = (e) => {\r\n this.setState({num_periodo: e.target.value}, () =>{\r\n this.listar_alumnos();\r\n });\r\n \r\n }\r\n\r\n listar_periodos(){\r\n let periodos_list = [];\r\n \r\n for (let i = 1; i <= this.state.num_periodo; i++)\r\n periodos_list.push(i);\r\n \r\n const lista = periodos_list.map((item, index) =>Periodo {item});\r\n \r\n this.setState({lista_periodos: lista})\r\n \r\n } \r\n\r\n render() {\r\n \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
\r\n \r\n Calificaciones del \r\n Período: \r\n \r\n \r\n \r\n \r\n { this.state.lista_periodos }\r\n \r\n \r\n \r\n Grado: {this.state.nom_grado} - {this.state.id_grupo} \r\n
\r\n
\r\n \r\n \r\n\r\n
Lista de Alumnos
\r\n \r\n \r\n \r\n \r\n {this.state.titulostabla}\r\n {this.state.titulos_tabla2}\r\n \r\n {this.state.lista_alumnos}\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 componentDidUpdate(prevProps, prevState) {\r\n // this[`ref${5}`].handleFocus();\r\n }\r\n componentDidMount() { \r\n this.periodo_actual();\r\n this.info_grado();\r\n this.listar_alumnos(); \r\n } \r\n}\r\n\r\nexport default Calificacionesfinalp;\r\n","import React, { Component } from 'react';\nimport {Redirect} from 'react-router-dom';\nimport './Indicadores.css';\nimport Button from '@material-ui/core/Button';\nimport {GetData} from '../../services/GetData';\n\nimport {Link} from 'react-router-dom';\nimport Alert from 'react-bootstrap/Alert'\nimport Paper from '@material-ui/core/Paper';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport { withStyles } from '@material-ui/core/styles';\nimport Table from '@material-ui/core/Table';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableRow from '@material-ui/core/TableRow';\n\nimport Tooltip from '@material-ui/core/Tooltip';\nimport { Avatar} from '@material-ui/core';\nimport {Usuario} from '../../services/Usuario';\nimport LoadingScreen from 'react-loading-screen'\nimport Moment from 'moment';\nimport 'moment/locale/es';\n\nclass Indicadores extends Component {\n\n\n\n \n constructor(props){\n super(props);\n \n let usuariosession = Usuario();\n let id_usuario = null;\n let token = null;\n let id_docente = null;\n\n if (usuariosession){\n id_usuario = usuariosession.id_usuario;\n token = usuariosession.token;\n id_docente = usuariosession.id_docente;\n }\n\n this.state = {\n id_usuario: id_usuario,\n id_docente: id_docente,\n token: token, \n id_asignatura: props.match.params.idAsignatura,\n id_grado: props.match.params.idGrado,\n id_grupo: props.match.params.idGrupo,\n lista_indicadores: Cargando ...,\n nombre_asing: null,\n nom_grado: null,\n num_periodo: 0,\n periodo_abierto: false,\n anio_actual: 0,\n nivel_ac: 1,\n fecha_cierre_p: null,\n fecha_exam_f: null,\n btn_exam_f: false,\n btn_acceso_pl: false,\n loading: false,\n tipo_nota: \"N\",\n lista_periodos: null,\n btnAsitenciaEnabled: false,\n }\n this.listar_indicadores = this.listar_indicadores.bind(this);\n this.periodo_actual = this.periodo_actual.bind(this);\n this.info_asigantura = this.info_asigantura.bind(this);\n this.func_acceso_plataforma = this.func_acceso_plataforma.bind(this);\n this.info_grado = this.info_grado.bind(this);\n this.existen_nota_final_periodo = this.existen_nota_final_periodo.bind(this);\n \n }\n\n\n onChange(e){\n this.setState({[e.target.name]: e.target.value})\n }\n\n func_acceso_plataforma(){\n GetData('calificacionesplataforma/habilitadoplaforma/' + this.state.id_grado + \"/\" + this.state.id_asignatura, this.state).then ((result) =>{\n let responseJSON = result;\n \n if (responseJSON.error === false){\n if (responseJSON.habilitado)\n this.setState({btn_acceso_pl: true})\n else\n this.setState({btn_acceso_pl: false})\n }else{\n this.setState({btn_acceso_pl: false})\n }\n \n });\n }\n\n info_grado(){\n \n GetData('grados/infogrado/' + this.state.id_grado, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n \n let min_ganada = responseJSON.min_ganada; \n let max_nota = responseJSON.max_nota; \n let nom_grado = responseJSON.nom_grado; \n let nivel_ac = responseJSON.nivel;\n this.setState({\n min_ganada: min_ganada,\n max_nota: max_nota,\n nom_grado: nom_grado,\n nivel_ac: nivel_ac\n }, () => {\n // this.listar_indicadores();\n });\n }\n }); \n } \n\n periodo_actual(){\n GetData('periodos/actual/', this.state).then ((result) =>{ \n let responseJSON = result;\n \n if (responseJSON.error === false){\n let periodo = responseJSON.periodo; \n let anio_actual = responseJSON.anio_actual;\n let fecha_cierre_p = responseJSON.fecha_cierre;\n let fecha_exam_f = responseJSON.fecha_examenf;\n let btn_exam_f = false;\n let fechaExamen = Moment(fecha_exam_f).format('YYYY-MM-DD');\n let hoy = Moment().format('YYYY-MM-DD');;\n \n \n if (hoy <= fecha_cierre_p) \n this.setState({ periodo_abierto: true}); \n \n if (hoy >= fechaExamen) { \n btn_exam_f = true;\n } \n this.setState({num_periodo: periodo, anio_actual: anio_actual, fecha_cierre_p: fecha_cierre_p, fecha_exam_f: fecha_exam_f, btn_exam_f: btn_exam_f}, () => {\n this.existen_nota_final_periodo();\n this.listar_indicadores();\n });\n }\n });\n }\n\n existen_nota_final_periodo(){\n\n GetData('indicadores/existenotaperiodo/' + this.state.id_grado + \"/\" + this.state.id_grupo + \"/\" + this.state.id_asignatura + \"/\" + this.state.num_periodo, this.state).then ((result) =>{ \n let responseJSON = result;\n if (responseJSON.error === false){\n let canti_nota_f = responseJSON.cantidad; \n if (canti_nota_f > 0)\n this.setState({btnAsitenciaEnabled: true})\n }\n });\n\n\n }\n\n info_asigantura(){\n let id_docente = this.state.id_docente;\n\n GetData('asignaturas/infoasignatura/' + this.state.id_asignatura + \"/\" + id_docente, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n\n let nombre_asing = responseJSON.asignatura; \n\n this.setState({\n tipo_nota: responseJSON.tipo_nota,\n nombre_asing: nombre_asing\n });\n \n }else{\n this.setState({errorvalidardoc: true})\n \n }\n }); \n return true; \n \n }\n\n listar_indicadores(){\n \n const StyledTableCell = withStyles(theme => ({\n head: {\n backgroundColor: theme.palette.common.black,\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n },\n }))(TableCell);\n\n const StyledTableRow = withStyles(theme => ({\n root: {\n '&:nth-of-type(odd)': {\n backgroundColor: theme.palette.background.default,\n },\n },\n }))(TableRow); \n\n GetData('indicadores/docenteasingaturav3/' + this.state.id_grado + '/' + this.state.id_grupo + '/' + this.state.id_asignatura + '/' + this.state.id_docente + '/' + this.state.num_periodo, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n let listaindi = null;\n \n\n //if (parseInt(this.state.nivel_ac) > 2){\n listaindi = responseJSON.indicadores.map(\n item => \n {item.codigo_indic}\n \n {this.state.id_grado < 5 ? (\n <>\n \n {item.descripcion_indic && (\n <>\n S: {item.descripcion_indic}
\n \n )}\n\n {item.descripcion_alto && (\n <>\n A: {item.descripcion_alto}
\n \n )}\n {item.descripcion_basico && (\n <>\n B: {item.descripcion_basico}
\n \n )}\n \n ) : (\n {item.descripcion_indic}\n )}\n
\n {item.cant > 0 ? item.cant : '' }\n \n \n \n \n assignment\n \n \n \n \n
\n );\n /* \n }else{\n listaindi = responseJSON.indicadores.map(\n item => \n {item.codigo_indic}\n {item.descripcion_indic}\n \n \n \n assignment\n \n \n \n \n \n ); \n } */\n\n \n this.setState({lista_indicadores: listaindi}, () => {\n this.setState({loading: false})\n });\n \n }else{\n console.log(\"Error al cargar las aginaciones\");\n }\n })\n return true; \n }\n\n\n\n render() {\n\n if (!this.state.id_usuario){\n return ()\n } \n \n const StyledTableCell = withStyles(theme => ({\n head: {\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n },\n }))(TableCell);\n\n \n let mensajeceroindicadores = \"\";\n if (this.state.lista_indicadores.length === 0){\n mensajeceroindicadores = \n No hay logros establecidos, de clic en el botón Modificar para establecer los indicadores del periodo actual. \n \n }\n \n let botonExamenF = null;\n let botonNotaFinal = null;\n let botonAccesoPl = null;\n let nivel_ac = parseInt(this.state.nivel_ac);\n\n /* if (nivel_ac === 1){\n botonNotaFinal = \n \n }\n */\n \n\n let botonCalificaiones = null;\n // if (nivel_ac > 1 && this.state.tipo_nota === \"N\"){\n botonCalificaiones = \n//}\n let mensaje_info = null;\n //if (nivel_ac > 2){\n mensaje_info = infoPara seleccionar un identificador de clic en el icono \n assignment\n , Para modificar los indicadores del los periodos de clic en el botón Indicadores \n //}\n\n\n return (\n \n
\n
\n\n \n\n \n \n \n\n \n \n assignment_turned_in\n \n \n\n \n Indicadores para ({this.state.nom_grado} - {this.state.id_grupo}) - {this.state.nombre_asing} del Período {this.state.num_periodo} del año {this.state.anio_actual} \n \n \n {mensajeceroindicadores}\n {mensaje_info}\n\n \n \n \n Código\n Concepto\n Notas\n Acción\n \n \n\n \n \n {this.state.lista_indicadores}\n \n \n
\n \n\n \n {this.state.btnAsitenciaEnabled && \n \n }\n {botonNotaFinal}\n {botonExamenF}\n {botonAccesoPl}\n {botonCalificaiones}\n \n \n\n
\n
\n
\n\n \n \n \n\n
\n \n\n );\n }\n componentDidMount() {\n \n this.setState({loading: true}); \n this.info_asigantura();\n this.info_grado();\n this.periodo_actual();\n this.func_acceso_plataforma();\n \n } \n}\n\nexport default Indicadores;\n","import React, { Component } from 'react';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport {PostData} from '../../services/PostData';\r\nimport LinearProgress from '@material-ui/core/LinearProgress';\r\n\r\nclass InputNotaExamen extends Component {\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n index: props.index,\r\n id_matricula: props.id_matricula,\r\n nota_alumno: props.nota,\r\n id_grado: props.id_grado,\r\n id_grupo: props.id_grupo,\r\n id_asignatura: props.id_asignatura,\r\n guardado: false,\r\n editactivo: false,\r\n error: false,\r\n urimg: '/images/save_exito.png'\r\n }\r\n this.handleKeyUp = this.handleKeyUp.bind(this);\r\n this.guardar_nota = this.guardar_nota.bind(this);\r\n this.resetSave = this.resetSave.bind(this);\r\n \r\n }\r\n\r\n func_round(value, precision) {\r\n var multiplier = Math.pow(10, precision || 0);\r\n return Math.round(value * multiplier) / multiplier;\r\n }\r\n\r\n handleKeyUp(e) {\r\n //console.log(e.key);\r\n \r\n \r\n if (e.key === \"Enter\"){\r\n \r\n \r\n if(isNaN(e.target.value)){\r\n console.log(\"No es un numero\")\r\n return;\r\n }\r\n\r\n \r\n \r\n let notaing = parseFloat(e.target.value);\r\n \r\n if (notaing > this.state.max_nota ){\r\n console.log(\"La nota debe ser menor o igual a \" + this.state.max_nota);\r\n return;\r\n }\r\n \r\n this.setState({id_matricula: e.target.id});\r\n \r\n \r\n this.guardar_nota(notaing); \r\n \r\n }else{\r\n this.setState({guardado: false});\r\n }\r\n }\r\n\r\n guardar_nota(notaing){ \r\n\r\n if (!notaing){\r\n this.setState({error: true});\r\n return;\r\n }\r\n\r\n let datosenvio = {\r\n id_matricula : this.state.id_matricula,\r\n id_grado : this.state.id_grado,\r\n id_grupo : this.state.id_grupo,\r\n id_asignatura: this.state.id_asignatura,\r\n nota_alumno: notaing\r\n }\r\n\r\n this.setState({editactivo: true})\r\n\r\n PostData('examenfinal/guadarnota/', datosenvio).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){ \r\n this.props.tab_control(this.props.id_matricula); \r\n this.setState({guardado: true, error: false, editactivo: false}); \r\n\r\n // return true;\r\n }else{\r\n \r\n this.setState({guardado: false, error: true, editactivo: false});\r\n console.log(\"Error al guardar la nota\");\r\n // return false\r\n }\r\n }) \r\n }\r\n\r\n resetSave(e){\r\n \r\n console.log(\"Recibiendo el foco\"); \r\n this.setState({guardado: false});\r\n \r\n }\r\n\r\n convertirnumero(numero){\r\n if (numero !== \"\"){\r\n return parseFloat(numero).toFixed(1)\r\n }\r\n }\r\n \r\n\r\n render() {\r\n\r\n return (\r\n <>\r\n { this[`ref${this.props.index}`] = el; }} \r\n inputProps={{\r\n maxLength: 3,\r\n }} \r\n name={this.props.id_matricula} \r\n id={this.props.id_matricula} \r\n autoFocus={false}\r\n disabled={this.state.editactivo}\r\n className=\"quitarpading stiloimput\" \r\n defaultValue={this.convertirnumero(this.state.nota_alumno)} \r\n onBlur={this.resetSave}\r\n onKeyUp={this.handleKeyUp} \r\n onChange={this.props.onChangeNota}\r\n onFocus={this.props.handleFocus}\r\n />\r\n \"img\" \r\n \r\n \r\n );\r\n }\r\n componentDidMount() {\r\n // this.setState({open: false}); \r\n \r\n } \r\n}\r\n\r\nexport default InputNotaExamen;","import React, { Component } from 'react';\nimport './ExamenFinal.css'; \nimport Button from '@material-ui/core/Button';\nimport {GetData} from '../../services/GetData';\nimport {PostData} from '../../services/PostData';\n\nimport {Link} from 'react-router-dom';\nimport Alert from 'react-bootstrap/Alert'\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport {Usuario} from '../../services/Usuario';\nimport LoadingScreen from 'react-loading-screen'\nimport InputNotaExamen from '../Utilitarios/InputNotaExamen';\n\nclass ExamenFinal extends Component {\n \n\n\n constructor(props){\n super(props);\n this.state = {\n usuario_session: Usuario(),\n id_grado: props.match.params.idGrado,\n id_grupo: props.match.params.idGrupo,\n id_asignatura: props.match.params.idAsignatura,\n lista_alumnos: ,\n num_periodo: 0,\n nota_alumno: 0,\n id_matricula: 0,\n list_notas: {},\n guardado: {},\n listaindex : {},\n min_ganada: 0,\n max_nota: 0,\n nom_grado: \"\",\n nombre_asing: \"\",\n errorvalidardoc: false,\n loading: true\n }\n this.listar_alumnos = this.listar_alumnos.bind(this); \n this.periodo_actual = this.periodo_actual.bind(this);\n this.func_ingresarNota = this.func_ingresarNota.bind(this);\n this.onChangeNota = this.onChangeNota.bind(this);\n this.guardar_nota = this.guardar_nota.bind(this);\n this.handleKeyUp = this.handleKeyUp.bind(this);\n this.progreso_guardado = this.progreso_guardado.bind(this);\n this.updateValue = this.updateValue.bind(this);\n this.tab_control = this.tab_control.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.info_grado = this.info_grado.bind(this);\n this.info_asigantura = this.info_asigantura.bind(this);\n }\n\n\n onChange(e){\n this.setState({[e.target.name]: e.target.value})\n }\n\n onChangeNota(e){\n\n const list_notas = this.state.list_notas;\n list_notas[e.target.name] = e.target.value;\n this.setState({ list_notas }); \n } \n\n func_ingresarNota(id_matricula, nota){\n const list_notas = this.state.list_notas;\n list_notas[id_matricula] = nota\n this.setState({ list_notas });\n return true; \n } \n\n handleFocus(event) {\n event.target.select();\n }\n\n handleKeyUp(e) {\n //console.log(e.key);\n \n\n if (e.key === \"Enter\"){\n\n \n if(isNaN(e.target.value)){\n console.log(\"No es un numero\")\n return;\n }\n \n let notaing = parseFloat(e.target.value);\n\n if (notaing > this.state.max_nota ){\n console.log(\"La nota debe ser menor o igual a \" + this.state.max_nota);\n return;\n }\n \n this.setState({id_matricula: e.target.id});\n this.guardar_nota(e.target.id); \n }\n }\n\n updateValue(e) {\n const list_notas = this.state.list_notas;\n list_notas[e.target.name] = e.target.value;\n \n this.setState({ list_notas });\n } \n\n progreso_guardado(id_matricula, estado){\n const guardado = this.state.guardado;\n guardado[`prog_${id_matricula}`] = estado;\n this.setState({ guardado });\n }\n\n tab_control(id_matricula){\n let listaindex = this.state.listaindex;\n let conteo = Object.keys(listaindex).length;\n\n Object.keys(listaindex).forEach(function(key) {\n let nums = parseInt(key) + 1;\n \n if (id_matricula === listaindex[key]){\n /** validar que no se pase el key */\n let indice = listaindex[nums];\n \n if (nums < conteo) {\n document.getElementById(String(indice)).focus();\n }\n \n return;\n }\n \n\n \n });\n return;\n }\n\n guardar_nota(id_matricula){ \n let notav = this.state.list_notas[id_matricula];\n let datosenvio = {\n id_matricula : id_matricula,\n id_grado: this.state.id_grado,\n id_grupo: this.state.id_grupo,\n id_asignatura: this.state.id_asignatura, \n nota_alumno: notav\n } \n \n PostData('examenfinal/guadarnota/', datosenvio).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){ \n this.tab_control(id_matricula);\n return true;\n }else{\n console.log(\"Error al guardar la nota\");\n return false\n }\n }) \n }\n\n periodo_actual(){\n GetData('periodos/actual/', this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n let periodo = responseJSON.periodo; \n this.setState({num_periodo: periodo});\n }\n });\n \n }\n\n info_grado(){\n \n GetData('grados/infogrado/' + this.state.id_grado, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n\n let min_ganada = responseJSON.min_ganada; \n let max_nota = responseJSON.max_nota; \n let nom_grado = responseJSON.nom_grado; \n this.setState({\n min_ganada: min_ganada,\n max_nota: max_nota,\n nom_grado: nom_grado\n });\n }\n }); \n }\n\n info_asigantura(){\n let id_docente = this.state.usuario_session.id_docente;\n GetData('asignaturas/infoasignatura/' + this.state.id_asignatura + \"/\" + id_docente, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n\n let nombre_asing = responseJSON.asignatura; \n\n this.setState({\n nombre_asing: nombre_asing\n }, () =>{\n //si no hay errores en la verificación del docente y la asignatura se cargan los alumnos\n this.listar_alumnos(); \n });\n }else{\n this.setState({errorvalidardoc: true})\n \n }\n }); \n\n \n }\n\n focusInput = (id) => this[`ref${id}`].current.focus();\n\n listar_alumnos(){\n\n PostData('examenfinal/alumnos/', this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n\n let guardado = this.state.guardado;\n let list1_notas = this.state.list_notas;\n let listaindex = this.state.listaindex;\n Object.keys(responseJSON.alumnos).forEach(function(key) {\n \n let id_matricula = responseJSON.alumnos[key].id_matricula;\n let notav = responseJSON.alumnos[key].notav;\n \n listaindex[key] = id_matricula;\n\n if (!notav)\n notav = \"\";\n \n list1_notas[id_matricula] = notav;\n \n\n //this.func_ingresarNota(id_matricula, notav)\n\n\n\n guardado[`prog_${id_matricula}`] = true;\n\n });\n\n let listaindi = responseJSON.alumnos.map(\n (item, index) =>\n {item.id_matricula}\n {item.nombres_apellidos_al}\n \n\n { this[`ref${index}`] = el; }}\n name={item.id_matricula} \n id_matricula = {item.id_matricula}\n id_grado = {this.state.id_grado}\n id_grupo = {this.state.id_grupo}\n id_asignatura = {this.state.id_asignatura}\n id={item.id_matricula} \n nota={this.state.list_notas[item.id_matricula]}\n onChangeNota={this.onChangeNota}\n handleFocus={this.handleFocus}\n tab_control={this.tab_control}\n onKeyUp={this.handleKeyUp} \n />\n \n \n \n \n );\n\n \n this.setState({ lista_alumnos : listaindi, loading: false })\n \n }else{\n console.log(\"Error al cargar las aginaciones\");\n }\n })\n }\n\n render() {\n\n let mensajeerrordocente = \"\";\n if (this.state.errorvalidardoc === true){\n mensajeerrordocente = \n Oh snap! Error de valicación!\n La asignatura no es válida para el Docente actual, de clic en el botón regresar he inténtelo nuevamente \n \n }\n\n return (\n \n
\n
\n\n \n\n
\n
\n \n \n Calificaciones Examén Final, {this.state.nombre_asing} - Grado: {this.state.nom_grado} - 0{this.state.id_grupo}, Período: {this.state.num_periodo} \n \n
\n
\n
\n Nota: Las notas se guardan al presionar ENTER, se usa el Punto(.) para los decimales, digite notas con un decimal, ejemplo (3.0) \n
\n
Lista de Alumnos
\n \n {mensajeerrordocente}\n\n \n \n \n \n \n \n \n \n \n {this.state.lista_alumnos}\n \n
CódigoNombreNota
\n\n \n\n
\n
\n \n \n\n
\n \n\n );\n }\n\n componentDidMount() {\n this.periodo_actual();\n this.info_grado();\n this.info_asigantura();\n \n } \n}\n\nexport default ExamenFinal;\n","import React from 'react';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport { Avatar } from '@material-ui/core';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Grid from '@material-ui/core/Grid';\r\n\r\nconst BarInfoPeriodo = ({bar_info_periodo, periodo, fechacierre, dias_faltantes, nivelacion}) => (\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n info\r\n \r\n \r\n\r\n \r\n \r\n Perido actual: {periodo} {parseInt(nivelacion) === 1 ? '(Nivelación)' : ''} Fecha de Cierre: {fechacierre} ( {dias_faltantes})\r\n \r\n \r\n \"loading\" \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n);\r\n\r\nexport default BarInfoPeriodo;","import React, { Component } from 'react';\r\nimport {GetData} from '../../services/GetData';\r\n\r\nimport Button from '@material-ui/core/Button';\r\nimport {Link} from 'react-router-dom';\r\n\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport { LinearProgress } from '@material-ui/core';\r\n\r\n\r\nclass ConsolidadoResumen extends Component {\r\n\r\n constructor(props){\r\n \r\n super(props);\r\n this.state = {\r\n id_grado: props.match.params.idGrado, \r\n id_grupo: props.match.params.idGrupo,\r\n id_periodo: 0,\r\n nom_grado: null,\r\n nombre_alumno: null,\r\n promedio_gen: 0,\r\n lista_materias: null,\r\n lista_informe_alumno: null,\r\n lista_periodos: null,\r\n loading: true\r\n } \r\n \r\n \r\n this.fun_info_alumno = this.fun_info_alumno.bind(this);\r\n this.info_grado = this.info_grado.bind(this);\r\n this.lista_alumnos_grado = this.lista_alumnos_grado.bind(this);\r\n this.periodo_actual = this.periodo_actual.bind(this);\r\n this.celdas_tabla = this.celdas_tabla.bind(this);\r\n this.formato_celda = this.formato_celda.bind(this);\r\n this.listar_periodos = this.listar_periodos.bind(this);\r\n\r\n }\r\n\r\n info_grado(){\r\n \r\n GetData('grados/infogrado/' + this.state.id_grado, this.state).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){\r\n\r\n let nom_grado = responseJSON.nom_grado; \r\n this.setState({\r\n nom_grado: nom_grado\r\n });\r\n }\r\n }); \r\n } \r\n\r\n fun_info_alumno(){\r\n\r\n GetData('matriculas/datosmatricula/' + this.state.id_matricula, this.state).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){\r\n let datos_alumno = responseJSON.matricula[0]; \r\n \r\n this.setState({\r\n nombre_alumno : datos_alumno.nombres_apellidos_al\r\n }, () => {\r\n // this.lista_materias();\r\n });\r\n }\r\n }); \r\n }\r\n\r\n periodo_actual(){\r\n GetData('periodos/actual/', this.state).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){\r\n let periodo = responseJSON.periodo; \r\n this.setState({id_periodo: periodo}, () => {\r\n this.listar_periodos();\r\n this.lista_alumnos_grado();\r\n \r\n });\r\n }\r\n });\r\n \r\n}\r\n\r\n listado_materias(materias){\r\n return materias.map(\r\n (item, index) =><>{index}\r\n );\r\n }\r\n\r\n formato_celda(key, valor){\r\n \r\n if (parseInt(this.state.id_grado) >= 5){\r\n if (key > 1)\r\n return valor; //parseFloat(valor).toFixed(1);\r\n else\r\n return valor; \r\n }else\r\n return valor; \r\n} \r\n\r\n lista_celda(key, campos, id_grado){\r\n let retorno = [];\r\n Object.keys(campos).forEach(function(key) {\r\n let clase = \"\";\r\n if (parseFloat(campos[key]) < 3 && id_grado >= 5)\r\n clase = \"nota_perdida_c\";\r\n\r\n retorno.push(
{campos[key]}
);\r\n });\r\n return retorno;\r\n }\r\n\r\n celdas_tabla(fila){\r\n let retorno = [];\r\n \r\n Object.keys(fila).forEach(function(key) {\r\n const numfila = Object.keys(fila).length;\r\n let caption = fila[key]\r\n \r\n let clase = \"\";\r\n\r\n if (key !== \"1\"){\r\n clase = \"text-center fontTabla \";\r\n }else{\r\n clase = \"text-left fontTabla \";\r\n }\r\n\r\n if (parseInt(this.state.id_grado) >= 5){\r\n if (key > 1){\r\n // if (parseFloat(caption) < 3)\r\n // clase += \"nota_perdida\";\r\n }\r\n }\r\n \r\n \r\n if (parseInt(this.state.id_grado) >= 5){\r\n if (parseInt(key) <= 1)\r\n retorno.push({this.formato_celda(key, caption)});\r\n else {\r\n if (key < (numfila - 1) ){\r\n retorno.push({this.lista_celda(key, caption, parseInt(this.state.id_grado))});\r\n }else{ \r\n if (parseFloat(caption) < 3)\r\n clase += \"nota_perdida\";\r\n retorno.push({this.formato_celda(key, caption)});\r\n }\r\n } \r\n }else{\r\n if (parseInt(key) <= 1)\r\n retorno.push({this.formato_celda(key, caption)});\r\n else {\r\n if (key < (numfila - 1) ){\r\n retorno.push({this.lista_celda(key, caption, parseInt(this.state.id_grado))});\r\n }else{ \r\n retorno.push(-);\r\n }\r\n } \r\n }\r\n\r\n\r\n }.bind(this))\r\n \r\n \r\n return retorno;\r\n }\r\n listar_alumnos_notas(datos){\r\n return datos.map(\r\n (item, index) =><>{this.celdas_tabla(item)}\r\n );\r\n }\r\n\r\n lista_alumnos_grado(){\r\n\r\n\r\n \r\n let id_grado = this.state.id_grado;\r\n let id_grupo = this.state.id_grupo; \r\n let url = 'informespdf/consolidadresumen/';\r\n this.setState({loading: true});\r\n\r\n if (id_grado < 5)\r\n url = 'informespdf/consolidadresumenletra/';\r\n\r\n GetData(url + id_grado + '/' + id_grupo + '/', this.state).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){\r\n \r\n let datos = responseJSON.datos;\r\n let materias = responseJSON.materias;\r\n let columnaPro = Prom\r\n\r\n if (this.state.id_grado < 5)\r\n columnaPro = \"\"; \r\n \r\n let header = \r\n \r\n \r\n \r\n \r\n \r\n {this.listado_materias(materias)}\r\n {columnaPro}\r\n \r\n \r\n \r\n {this.listar_alumnos_notas(datos)}\r\n \r\n
CódigoNombre del estudiantePer
\r\n\r\n let retorno = [];\r\n Object.keys(materias).forEach(function(key) {\r\n retorno.push(<>({key}) {materias[key]} \r\n );\r\n });\r\n \r\n \r\n \r\n this.setState({lista_alumnos_grado: header, lista_materias: retorno, loading: false})\r\n }\r\n \r\n });\r\n\r\n \r\n }\r\n\r\n listar_periodos(){\r\n let periodos_list = [];\r\n\r\n for (let i = 1; i <= this.state.id_periodo; i++)\r\n periodos_list.push(i);\r\n\r\n const lista = periodos_list.map((item, index) =>Periodo {item});\r\n\r\n this.setState({lista_periodos: lista})\r\n\r\n }\r\n\r\n cambiar_periodo = (e) => {\r\n this.setState({id_periodo: e.target.value}, () =>{\r\n this.lista_alumnos_grado();\r\n });\r\n \r\n }\r\n \r\n render() {\r\n \r\n let botonreturn = null;\r\n if (this.state.impresion === \"1\"){\r\n botonreturn = \r\n }\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n Consolodidado Final, {this.state.nombre_asing} - \r\n Grado: {this.state.nom_grado} - 0{this.state.id_grupo}, \r\n Período: {this.state.id_periodo}\r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n {this.state.lista_materias}\r\n
\r\n {this.state.lista_alumnos_grado} \r\n
\r\n \r\n {botonreturn}\r\n
\r\n
\r\n \r\n\r\n );\r\n }\r\n\r\n componentDidMount() {\r\n this.info_grado();\r\n this.periodo_actual();\r\n \r\n \r\n\r\n } \r\n\r\n}\r\n\r\nexport default ConsolidadoResumen;\r\n","import React, { Component } from 'react';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport {PostData} from '../../services/PostData';\r\nimport LinearProgress from '@material-ui/core/LinearProgress';\r\n\r\n\r\nclass InputNotaNivelacion extends Component {\r\n \r\n \r\n constructor(props){\r\n \r\n super(props);\r\n this.state = {\r\n index: props.index,\r\n notaalumno: props.nota,\r\n guardado: false,\r\n editactivo: false,\r\n error: false,\r\n max_nota: 5,\r\n urimg: '/images/save_exito.png'\r\n }\r\n this.handleKeyUp = this.handleKeyUp.bind(this);\r\n this.guardar_nota = this.guardar_nota.bind(this);\r\n this.resetSave = this.resetSave.bind(this);\r\n \r\n }\r\n\r\n func_round(value, precision) {\r\n var multiplier = Math.pow(10, precision || 0);\r\n return Math.round(value * multiplier) / multiplier;\r\n }\r\n\r\n handleKeyUp(e) {\r\n console.log(e.key);\r\n \r\n \r\n if (e.key === \"Enter\"){\r\n \r\n \r\n if(isNaN(e.target.value)){\r\n console.log(\"No es un numero\")\r\n this.setState({error: true});\r\n return;\r\n }\r\n\r\n \r\n \r\n let notaing = parseFloat(e.target.value);\r\n \r\n if (notaing > 3 ){\r\n console.log(\"La nota debe ser menor o igual a \" + this.state.max_nota);\r\n this.props.error_nota_mayor();\r\n this.setState({error: true});\r\n return;\r\n }\r\n \r\n this.setState({id_matricula: e.target.id});\r\n \r\n \r\n this.guardar_nota(notaing); \r\n \r\n }else{\r\n this.setState({guardado: false});\r\n }\r\n }\r\n\r\n guardar_nota(notaing){ \r\n let datosenvio = {\r\n id_matricula : this.props.id_matricula,\r\n id_asignatura : this.props.id_asignatura,\r\n id_periodo : this.props.id_periodo,\r\n nota_alumno: notaing\r\n } \r\n \r\n if (!notaing){\r\n this.setState({error: true});\r\n return;\r\n }\r\n\r\n this.setState({editactivo: true})\r\n\r\n PostData('calificaciones/guadarnivelacion/', datosenvio).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){ \r\n this.props.tab_control(this.props.id_matricula); \r\n this.setState({guardado: true, error: false, editactivo: false}); \r\n\r\n // return true;\r\n }else{\r\n \r\n this.setState({guardado: false, error: true, editactivo: false});\r\n console.log(\"Error al guardar la nota\");\r\n // return false\r\n }\r\n }) \r\n }\r\n\r\n resetSave(e){\r\n \r\n console.log(\"Recibiendo el foco\"); \r\n this.setState({guardado: false});\r\n \r\n }\r\n\r\n convertirnumero(numero){\r\n \r\n if (numero !== \"\"){\r\n return parseFloat(numero).toFixed(1)\r\n }\r\n }\r\n \r\n\r\n render() {\r\n\r\n return (\r\n <>\r\n { this[`ref${this.props.index}`] = el; }} \r\n inputProps={{\r\n maxLength: 3,\r\n }}\r\n name={this.props.id_matricula} \r\n id={this.props.id_matricula} \r\n autoFocus={false}\r\n disabled={this.state.editactivo}\r\n className=\"quitarpading stiloimput\" \r\n defaultValue={this.convertirnumero(this.state.notaalumno)} \r\n \r\n onBlur={this.resetSave}\r\n onKeyUp={this.handleKeyUp} \r\n onChange={this.props.onChangeNota}\r\n onFocus={this.props.handleFocus}\r\n />\r\n \"img\" \r\n \r\n \r\n );\r\n }\r\n componentDidMount() {\r\n // this.setState({open: false}); \r\n \r\n } \r\n}\r\n\r\nexport default InputNotaNivelacion;","import React, { Component } from 'react';\nimport './Nivelaciones.css';\nimport Button from '@material-ui/core/Button';\nimport {GetData} from '../../services/GetData';\nimport {PostData} from '../../services/PostData';\n\nimport {Link} from 'react-router-dom';\nimport Alert from 'react-bootstrap/Alert'\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport {Usuario} from '../../services/Usuario';\n\nimport LoadingScreen from 'react-loading-screen'\nimport toast, { Toaster } from 'react-hot-toast';\nimport InputNotaNivelacion from '../Utilitarios/InputNotaNivelacion';\n\nclass Nivelaciones extends Component {\n \n\n\n constructor(props){\n super(props);\n this.state = {\n usuario_session: Usuario(),\n id_grado: props.match.params.idGrado,\n id_grupo: props.match.params.idGrupo,\n id_asignatura: props.match.params.idAsignatura,\n lista_alumnos: ,\n num_periodo: 0,\n nota_alumno: 0,\n id_matricula: 0,\n list_notas: {},\n guardado: {},\n listaindex : {},\n min_ganada: 0,\n max_nota: 3.0,\n nom_grado: \"\",\n nombre_asing: \"\",\n errorvalidardoc: false,\n loading: true,\n showAlertError: false\n }\n this.listar_alumnos = this.listar_alumnos.bind(this); \n this.periodo_actual = this.periodo_actual.bind(this);\n this.func_ingresarNota = this.func_ingresarNota.bind(this);\n this.onChangeNota = this.onChangeNota.bind(this);\n this.handleClose = this.handleClose.bind(this);\n this.guardar_nota = this.guardar_nota.bind(this);\n this.handleKeyUp = this.handleKeyUp.bind(this);\n this.progreso_guardado = this.progreso_guardado.bind(this);\n this.updateValue = this.updateValue.bind(this);\n this.tab_control = this.tab_control.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.info_grado = this.info_grado.bind(this);\n this.info_asigantura = this.info_asigantura.bind(this);\n this.error_nota_mayor = this.error_nota_mayor.bind(this);\n }\n\n\n onChange(e){\n this.setState({[e.target.name]: e.target.value})\n }\n\n onChangeNota(e){\n const list_notas = this.state.list_notas;\n list_notas[e.target.name] = e.target.value;\n this.setState({ list_notas }); \n } \n\n func_ingresarNota(id_matricula, nota){\n const list_notas = this.state.list_notas;\n list_notas[id_matricula] = nota\n this.setState({ list_notas });\n return true; \n } \n\n error_nota_mayor() {\n //alertify.error('La nota no debe superar a ' + this.state.max_nota);\n this.setState({showAlertError: true});\n toast.error('La nota no debe superar a ' + this.state.max_nota)\n }\n\n handleFocus(event) {\n event.target.select();\n }\n\n handleKeyUp(e) {\n console.log(e.key);\n \n\n if (e.key === \"Enter\"){\n\n \n if(isNaN(e.target.value)){\n console.log(\"No es un numero\")\n return;\n }\n \n let notaing = parseFloat(e.target.value);\n console.log(notaing + \">\" + this.state.max_nota) \n if (notaing > this.state.max_nota ){\n // console.log(\"La nota debe ser menor o igual a \" + this.state.max_nota);\n \n return;\n } \n \n this.setState({id_matricula: e.target.id});\n console.log(e);\n \n this.guardar_nota(e.target.id); \n }\n }\n\n updateValue(e) {\n const list_notas = this.state.list_notas;\n list_notas[e.target.name] = e.target.value;\n \n this.setState({ list_notas });\n } \n\n progreso_guardado(id_matricula, estado){\n const guardado = this.state.guardado;\n guardado[`prog_${id_matricula}`] = estado;\n this.setState({ guardado });\n }\n\n tab_control(id_matricula){\n let listaindex = this.state.listaindex;\n let conteo = Object.keys(listaindex).length;\n\n Object.keys(listaindex).forEach(function(key) {\n let nums = parseInt(key) + 1;\n \n if (id_matricula === listaindex[key]){\n /** validar que no se pase el key */\n let indice = listaindex[nums];\n \n if (nums < conteo) {\n document.getElementById(String(indice)).focus();\n }\n \n return;\n }\n \n\n \n });\n return;\n }\n\n guardar_nota(id_matricula){ \n console.log(\"Guardar Nota por fin\");\n let notav = this.state.list_notas[id_matricula];\n let datosenvio = {\n id_matricula : id_matricula,\n id_asignatura : this.state.id_asignatura,\n id_periodo : this.state.num_periodo,\n nota_alumno: notav\n } \n \n PostData('calificaciones/guadarnivelacion/', datosenvio).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){ \n this.tab_control(id_matricula);\n /// prog_${item.id_matricula}\n this.progreso_guardado(id_matricula, true);\n return true;\n }else{\n console.log(\"Error al guardar la nota\");\n return false\n }\n }) \n }\n\n periodo_actual(){\n GetData('periodos/actual/', this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n let periodo = responseJSON.periodo; \n this.setState({num_periodo: periodo});\n }\n });\n \n }\n\n info_grado(){\n \n GetData('grados/infogrado/' + this.state.id_grado, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n\n let min_ganada = responseJSON.min_ganada; \n let max_nota = responseJSON.max_nota; \n let nom_grado = responseJSON.nom_grado; \n this.setState({\n min_ganada: min_ganada,\n max_nota: max_nota,\n nom_grado: nom_grado\n });\n }\n }); \n }\n\n info_asigantura(){\n let id_docente = this.state.usuario_session.id_docente;\n GetData('asignaturas/infoasignatura/' + this.state.id_asignatura + \"/\" + id_docente, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n\n let nombre_asing = responseJSON.asignatura; \n\n this.setState({\n nombre_asing: nombre_asing\n }, () =>{\n //si no hay errores en la verificación del docente y la asignatura se cargan los alumnos\n this.listar_alumnos(); \n });\n }else{\n this.setState({errorvalidardoc: true})\n \n }\n }); \n\n \n }\n\n handleClose = (event, reason) => {\n this.setState({showAlertError: false})\n };\n\n focusInput = (id) => this[`ref${id}`].current.focus();\n\n listar_alumnos(){\n\n PostData('calificaciones/alumnosnivelacion/', this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n\n let guardado = this.state.guardado;\n let list1_notas = this.state.list_notas;\n let listaindex = this.state.listaindex;\n Object.keys(responseJSON.alumnos).forEach(function(key) {\n \n let id_matricula = responseJSON.alumnos[key].id_matricula;\n let notav = responseJSON.alumnos[key].nivelacion;\n \n \n listaindex[key] = id_matricula;\n \n // if (!notav)\n // notav = \"\";\n \n \n list1_notas[id_matricula] = notav;\n \n\n //this.func_ingresarNota(id_matricula, notav)\n\n\n\n guardado[`prog_${id_matricula}`] = false;\n\n });\n\n console.log(list1_notas)\n\n let listaindi = responseJSON.alumnos.map(\n (item, index) =>\n {item.id_matricula}\n {item.nombres_apellidos_al}\n {item.nota_fn}\n \n \n \n \n \n \n );\n\n this.setState({ lista_alumnos : listaindi }, () => {\n this.setState({loading: false});\n })\n \n }else{\n console.log(\"Error al cargar las aginaciones\");\n }\n })\n }\n\n render() {\n\n let mensajeerrordocente = \"\";\n \n\n\n if (this.state.errorvalidardoc === true){\n mensajeerrordocente = \n Oh snap! Error de valicación!\n La asignatura no es válida para el Docente actual, de clic en el botón regresar he inténtelo nuevamente \n \n }\n\n \n\n return (\n \n
\n
\n\n \n\n
\n
\n \n Ingreso de Nivelaciones, {this.state.nombre_asing} - Grado: {this.state.nom_grado} - 0{this.state.id_grupo}, Período: {this.state.num_periodo} \n
\n
\n
\n Nota: Las notas se guardan al presionar ENTER, se usa el Punto(.) para los decimales, digite notas con un decimal, ejemplo (3.0) \n
\n
Lista de Alumnos
\n \n {mensajeerrordocente}\n \n\n \n \n \n \n \n \n \n \n \n \n {this.state.lista_alumnos}\n \n
CódigoNombreNotaNivelación
\n\n \n \n \n\n
\n
\n\n \n\n
\n \n\n );\n }\n\n componentDidUpdate(prevProps, prevState) {\n // this[`ref${5}`].handleFocus();\n }\n componentDidMount() {\n this.periodo_actual();\n this.info_grado();\n this.info_asigantura();\n \n } \n}\n\nexport default Nivelaciones;\n","import React, { Component } from 'react';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport {PostData} from '../../services/PostData';\r\nimport LinearProgress from '@material-ui/core/LinearProgress';\r\n\r\n\r\nclass InputNotaAsistencia extends Component {\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n index: props.index,\r\n notaalumno: props.nota,\r\n guardado: false,\r\n editactivo: false,\r\n error: false,\r\n max_nota: 5,\r\n urimg: '/images/save_exito.png'\r\n }\r\n this.handleKeyUp = this.handleKeyUp.bind(this);\r\n this.guardar_nota = this.guardar_nota.bind(this);\r\n this.resetSave = this.resetSave.bind(this);\r\n \r\n }\r\n\r\n handleKeyUp(e) {\r\n console.log(e.key);\r\n \r\n \r\n if (e.key === \"Enter\"){\r\n \r\n \r\n\r\n \r\n \r\n let notaing = e.target.value;\r\n \r\n if (isNaN(notaing)){\r\n console.log(\"La nota no es válida debe ser A, D o E \");\r\n this.props.error_nota_no_valida();\r\n this.setState({error: true});\r\n return;\r\n }\r\n \r\n this.setState({id_matricula: e.target.id});\r\n \r\n \r\n this.guardar_nota(notaing); \r\n \r\n }else{\r\n this.setState({guardado: false});\r\n }\r\n }\r\n\r\n guardar_nota(notaing){ \r\n let datosenvio = {\r\n id_matricula : this.props.id_matricula,\r\n id_grado: this.props.id_grado,\r\n id_grupo: this.props.id_grupo,\r\n id_asignatura: this.props.id_asignatura, \r\n id_periodo: this.props.id_periodo, \r\n asistencia: notaing\r\n } \r\n \r\n if (!notaing){\r\n this.setState({error: true});\r\n return;\r\n }\r\n\r\n this.setState({editactivo: true})\r\n\r\n PostData('calificaciones/guadarasistencia/', datosenvio).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){ \r\n this.props.tab_control(this.props.id_matricula); \r\n this.setState({guardado: true, error: false, editactivo: false}); \r\n\r\n // return true;\r\n }else{\r\n \r\n this.setState({guardado: false, error: true, editactivo: false});\r\n \r\n // return false\r\n }\r\n }) \r\n }\r\n\r\n resetSave(e){\r\n \r\n \r\n this.setState({guardado: false});\r\n \r\n }\r\n\r\n\r\n render() {\r\n\r\n return (\r\n <>\r\n { this[`ref${this.props.index}`] = el; }} \r\n inputProps={{\r\n maxLength: 2,\r\n style: { textAlign: 'center' }\r\n }}\r\n name={this.props.id_matricula} \r\n id={this.props.id_matricula} \r\n autoFocus={false}\r\n disabled={this.state.editactivo}\r\n className=\"quitarpading stiloimput\" \r\n defaultValue={this.state.notaalumno} \r\n onBlur={this.resetSave}\r\n \r\n onKeyUp={this.handleKeyUp} \r\n onChange={this.props.onChangeNota}\r\n onFocus={this.props.handleFocus}\r\n />\r\n \"img\" \r\n \r\n \r\n );\r\n }\r\n componentDidMount() {\r\n // this.setState({open: false}); \r\n \r\n } \r\n}\r\n\r\nexport default InputNotaAsistencia;","import React, { Component } from 'react';\nimport './Calificaciones.css';\nimport Button from '@material-ui/core/Button';\nimport {GetData} from '../../services/GetData';\nimport {PostData} from '../../services/PostData';\n\nimport {Link} from 'react-router-dom';\nimport Alert from 'react-bootstrap/Alert'\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport {Usuario} from '../../services/Usuario';\nimport InputNotaActividad from '../Utilitarios/InputNotaActividad';\nimport LoadingScreen from 'react-loading-screen'\nimport toast, { Toaster } from 'react-hot-toast';\nimport InputNotaLetra from '../Utilitarios/InputNotaLetra';\nimport { SesPeriodo } from '../../services/SesPeriodo';\nimport InputNotaAsistencia from '../Utilitarios/InputNotaAsistencia';\n\nclass Asistencias extends Component {\n \n\n\n constructor(props){\n super(props);\n this.state = {\n usuario_session: Usuario(),\n periodo_session: SesPeriodo(),\n id_grado: props.match.params.idGrado,\n id_grupo: props.match.params.idGrupo,\n id_asignatura: props.match.params.idAsignatura,\n //id_actividades: props.match.params.idActividad,\n id_indicador: props.match.params.idIndicador,\n lista_alumnos: ,\n num_periodo: 0,\n nota_alumno: 0,\n id_matricula: 0,\n list_notas: {},\n guardado: {},\n listaindex : {},\n min_ganada: 0,\n max_nota: 5.0,\n nom_grado: \"\",\n nombre_asing: \"\",\n tipo_nota: \"N\",\n errorvalidardoc: false,\n loading: true,\n showAlertError: false\n }\n this.listar_alumnos = this.listar_alumnos.bind(this); \n this.periodo_actual = this.periodo_actual.bind(this);\n this.func_ingresarNota = this.func_ingresarNota.bind(this);\n this.onChangeNota = this.onChangeNota.bind(this);\n this.handleClose = this.handleClose.bind(this);\n this.guardar_nota = this.guardar_nota.bind(this);\n this.handleKeyUp = this.handleKeyUp.bind(this);\n this.progreso_guardado = this.progreso_guardado.bind(this);\n this.updateValue = this.updateValue.bind(this);\n this.tab_control = this.tab_control.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.info_grado = this.info_grado.bind(this);\n this.info_asigantura = this.info_asigantura.bind(this);\n this.error_nota_no_valida = this.error_nota_no_valida.bind(this);\n \n }\n\n\n onChange(e){\n this.setState({[e.target.name]: e.target.value})\n }\n\n onChangeNota(e){\n const list_notas = this.state.list_notas;\n list_notas[e.target.name] = e.target.value;\n this.setState({ list_notas }); \n } \n\n func_ingresarNota(id_matricula, nota){\n const list_notas = this.state.list_notas;\n list_notas[id_matricula] = nota\n this.setState({ list_notas });\n return true; \n } \n\n error_nota_no_valida() {\n //alertify.error('La nota no debe superar a ' + this.state.max_nota);\n this.setState({showAlertError: true});\n toast.error('El valor ingresado debe ser un número ')\n }\n\n handleFocus(event) {\n event.target.select();\n }\n\n handleKeyUp(e) {\n console.log(e.key);\n \n\n if (e.key === \"Enter\"){\n\n \n if(isNaN(e.target.value)){\n console.log(\"No es un numero\")\n return;\n }\n \n let notaing = parseFloat(e.target.value);\n \n if (notaing > this.state.max_nota ){\n // console.log(\"La nota debe ser menor o igual a \" + this.state.max_nota);\n \n return;\n } \n \n this.setState({id_matricula: e.target.id});\n \n \n this.guardar_nota(e.target.id); \n }\n }\n\n updateValue(e) {\n const list_notas = this.state.list_notas;\n list_notas[e.target.name] = e.target.value;\n \n this.setState({ list_notas });\n } \n\n progreso_guardado(id_matricula, estado){\n const guardado = this.state.guardado;\n guardado[`prog_${id_matricula}`] = estado;\n this.setState({ guardado });\n }\n\n tab_control(id_matricula){\n let listaindex = this.state.listaindex;\n let conteo = Object.keys(listaindex).length;\n\n Object.keys(listaindex).forEach(function(key) {\n let nums = parseInt(key) + 1;\n \n if (id_matricula === listaindex[key]){\n /** validar que no se pase el key */\n let indice = listaindex[nums];\n \n if (nums < conteo) {\n document.getElementById(String(indice)).focus();\n }\n \n return;\n }\n \n\n \n });\n return;\n }\n\n guardar_nota(id_matricula){ \n //console.log(\"Guardar Nota por fin\");\n let notav = this.state.list_notas[id_matricula];\n let datosenvio = {\n id_matricula : id_matricula,\n id_indicador : this.state.id_indicador,\n id_asignatura: this.state.id_asignatura,\n id_grado : this.state.id_grado,\n id_grupo : this.state.id_grupo,\n nota_alumno: notav\n } \n \n PostData('calificaciones/guadarnota/', datosenvio).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){ \n this.tab_control(id_matricula);\n /// prog_${item.id_matricula}\n this.progreso_guardado(id_matricula, true);\n return true;\n }else{\n console.log(\"Error al guardar la nota\");\n return false\n }\n }) \n }\n\n periodo_actual(){\n GetData('periodos/actual/', this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n let periodo = responseJSON.periodo; \n this.setState({num_periodo: periodo});\n }\n });\n \n }\n\n info_grado(){\n \n GetData('grados/infogrado/' + this.state.id_grado, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n\n let min_ganada = responseJSON.min_ganada; \n let max_nota = responseJSON.max_nota; \n let nom_grado = responseJSON.nom_grado; \n this.setState({\n min_ganada: min_ganada,\n max_nota: max_nota,\n nom_grado: nom_grado\n });\n }\n }); \n }\n \n info_asigantura(){\n let id_docente = this.state.usuario_session.id_docente;\n GetData('asignaturas/infoasignatura/' + this.state.id_asignatura + \"/\" + id_docente, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n\n let nombre_asing = responseJSON.asignatura; \n let tipo_nota = responseJSON.tipo_nota;\n this.setState({\n tipo_nota: tipo_nota,\n nombre_asing: nombre_asing\n }, () =>{\n //si no hay errores en la verificación del docente y la asignatura se cargan los alumnos\n this.listar_alumnos(); \n });\n }else{\n this.setState({errorvalidardoc: true})\n \n }\n }); \n\n \n }\n\n handleClose = (event, reason) => {\n this.setState({showAlertError: false})\n };\n\n focusInput = (id) => this[`ref${id}`].current.focus();\n\n listar_alumnos(){\n\n PostData('calificaciones/alumnosasistencia/', this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n\n let guardado = this.state.guardado;\n let list1_notas = this.state.list_notas;\n let listaindex = this.state.listaindex;\n Object.keys(responseJSON.alumnos).forEach(function(key) {\n \n let id_matricula = responseJSON.alumnos[key].id_matricula;\n let notav = responseJSON.alumnos[key].notav;\n \n listaindex[key] = id_matricula;\n\n if (!notav)\n notav = \"\";\n \n list1_notas[id_matricula] = notav;\n \n\n //this.func_ingresarNota(id_matricula, notav)\n\n\n\n guardado[`prog_${id_matricula}`] = false;\n\n });\n let listaindi;\n\n listaindi = responseJSON.alumnos.map(\n (item, index) =>\n {item.id_matricula}\n {item.nombres_apellidos_al}\n \n \n \n \n \n \n );\n\n \n\n\n this.setState({ lista_alumnos : listaindi }, () => {\n this.setState({loading: false});\n })\n \n }else{\n console.log(\"Error al cargar las aginaciones\");\n }\n })\n }\n\n render() {\n\n let mensajeerrordocente = \"\";\n \n\n\n if (this.state.errorvalidardoc === true){\n mensajeerrordocente = \n Oh snap! Error de valicación!\n La asignatura no es válida para el Docente actual, de clic en el botón regresar he inténtelo nuevamente \n \n }\n\n let enunciado = \"Nota: La asistencia se guarda al presionar ENTER \";\n\n return (\n \n
\n
\n\n \n\n
\n
\n \n Ingreso de asistencia, {this.state.nombre_asing} - Grado: {this.state.nom_grado} - 0{this.state.id_grupo}, Período: {this.state.num_periodo} \n
\n
\n
\n {enunciado}\n
\n
Lista de Alumnos
\n \n {mensajeerrordocente}\n \n\n \n \n \n \n \n \n \n \n \n {this.state.lista_alumnos}\n \n
NombreNota
\n\n \n \n \n\n
\n
\n\n \n\n
\n \n\n );\n }\n\n componentDidUpdate(prevProps, prevState) {\n // this[`ref${5}`].handleFocus();\n }\n componentDidMount() {\n this.periodo_actual();\n this.info_grado();\n this.info_asigantura();\n \n \n } \n}\n\nexport default Asistencias;\n","import React, { Component } from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport {GetData} from '../../services/GetData';\r\n\r\n\r\nimport {Link} from 'react-router-dom';\r\n\r\nimport LoadingScreen from 'react-loading-screen'\r\nimport { FormControl, LinearProgress, MenuItem, Select } from '@material-ui/core';\r\n\r\n\r\nclass CalificacionesResumen extends Component {\r\n \r\n\r\n\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n id_grado: props.match.params.idGrado,\r\n id_grupo: props.match.params.idGrupo,\r\n id_asignatura: props.match.params.idAsignatura,\r\n id_actividades: props.match.params.idActividad,\r\n id_indicador: props.match.params.idIndicador,\r\n nom_grado: null,\r\n lista_alumnos: null,\r\n titulos_tabla: null,\r\n titulos_tabla2: null,\r\n num_periodo: 0,\r\n nota_alumno: 0,\r\n id_matricula: 0,\r\n list_notas: {},\r\n guardado: {},\r\n listaindex : {},\r\n ConfPorcenNotas: [20, 80],\r\n procentaje_ptl: 0, //% plataforma\r\n calificacionPTF: false,\r\n errorvalidarExF: false,\r\n loading: true,\r\n loading_bar: false\r\n\r\n }\r\n this.listar_alumnos = this.listar_alumnos.bind(this); \r\n this.periodo_actual = this.periodo_actual.bind(this);\r\n this.info_grado = this.info_grado.bind(this)\r\n this.resumen_notas_nomal = this.resumen_notas_nomal.bind(this);\r\n this.listar_periodos = this.listar_periodos.bind(this);\r\n\r\n }\r\n\r\n\r\n\r\n periodo_actual(){\r\n GetData('periodos/actual/', this.state).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){\r\n let periodo = responseJSON.periodo; \r\n this.setState({num_periodo: periodo}, ()=> {\r\n this.listar_periodos()\r\n });\r\n }\r\n });\r\n \r\n }\r\n\r\n info_grado(){\r\n \r\n GetData('grados/infogrado/' + this.state.id_grado, this.state).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){\r\n\r\n let nom_grado = responseJSON.nom_grado; \r\n this.setState({\r\n nom_grado: nom_grado\r\n });\r\n }\r\n }); \r\n } \r\n\r\n \r\n\r\n \r\ndatos_columna(datos, cols){\r\n let retorno = [];\r\n Object.keys(datos).forEach(function(key) {\r\n let datocelda = datos[key];\r\n let nota = datocelda;\r\n let center = \"\";\r\n if (key > 1){\r\n nota = parseFloat(datocelda).toFixed(1);\r\n center = \"center\";\r\n }\r\n retorno.push({nota});\r\n })\r\n return retorno;\r\n}\r\n\r\nanchocolumna(key, total){\r\n \r\n\r\n let an = total - 3;\r\n let w = an * 10;\r\n let anca = 100 - w - 20; \r\n\r\n if (key === 0)\r\n return \"10%\";\r\n\r\n if (key === 1)\r\n return anca + \"%\";\r\n\r\n if (key > 1 && key < total)\r\n return \"10%\";\r\n \r\n if (key === (total-1)){\r\n return \"10%\";\r\n } \r\n \r\n}\r\n\r\nresumen_notas_nomal(columnas, datostabla){\r\n // se contruye las columnas de con los nombres de los campos para poder armar la tabla\r\n\r\n\r\n let objetos = Object.keys(columnas);\r\n let totalcol = objetos.length;\r\n\r\n\r\n let titulostabla = columnas.map(\r\n (item, key) =>{item});\r\n \r\n \r\n const renderData = datostabla.map((alumno, key) =>\r\n {\r\n this.datos_columna(alumno, key)\r\n }); \r\n\r\n\r\n\r\n let listaindi = renderData; //renderData(datostabla, colt_columtotal); \r\n\r\n this.setState({ lista_alumnos : listaindi, titulostabla: titulostabla })\r\n}\r\n\r\n\r\nlistar_alumnos(){\r\n this.setState({loading_bar: true})\r\n GetData('calificaciones/tablanotasindicador/' + this.state.id_grado + \"/\" + this.state.id_grupo + \"/\" + this.state.id_asignatura + \"/\" + this.state.num_periodo, this.state).then ((result) =>{\r\n let responseJSON = result;\r\n //console.log(responseJSON);\r\n if (responseJSON.error === false){\r\n \r\n\r\n this.resumen_notas_nomal(responseJSON.titulotbl,responseJSON.tabla);\r\n \r\n \r\n this.setState({loading: false, loading_bar: false})\r\n \r\n }else{\r\n console.log(\"Error al cargar las calificaciones\");\r\n }\r\n })\r\n }\r\n\r\n\r\n cambiar_periodo = (e) => {\r\n this.setState({num_periodo: e.target.value}, () =>{\r\n this.listar_alumnos();\r\n });\r\n \r\n }\r\n\r\n listar_periodos(){\r\n let periodos_list = [];\r\n \r\n for (let i = 1; i <= this.state.num_periodo; i++)\r\n periodos_list.push(i);\r\n \r\n const lista = periodos_list.map((item, index) =>Periodo {item});\r\n \r\n this.setState({lista_periodos: lista})\r\n \r\n } \r\n\r\n render() {\r\n \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
\r\n \r\n Calificaciones del \r\n Período: \r\n \r\n \r\n \r\n \r\n { this.state.lista_periodos }\r\n \r\n \r\n \r\n Grado: {this.state.nom_grado} - {this.state.id_grupo} \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n\r\n
Lista de Alumnos
\r\n \r\n \r\n \r\n \r\n {this.state.titulostabla}\r\n {this.state.titulos_tabla2}\r\n \r\n {this.state.lista_alumnos}\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 componentDidUpdate(prevProps, prevState) {\r\n // this[`ref${5}`].handleFocus();\r\n }\r\n componentDidMount() { \r\n this.periodo_actual();\r\n this.info_grado();\r\n this.listar_alumnos(); \r\n } \r\n}\r\n\r\nexport default CalificacionesResumen;\r\n","import React from 'react';\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { Usuario } from \"./Usuario\";\r\n\r\nexport function AuthPeriodo({ children }) {\r\n let usuario = Usuario();\r\n \r\n console.log(\"estado\", usuario) \r\n if (usuario.periodo_es === \"0\") {\r\n return ()\r\n } else {\r\n return children;\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { Usuario } from \"./Usuario\";\r\n\r\nexport function AuthNivelacion({ children }) {\r\n let usuario = Usuario();\r\n \r\n \r\n if (usuario.nivel_es === \"0\") {\r\n return ()\r\n } else {\r\n return children;\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport {GetData} from '../../services/GetData';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport List from '@material-ui/core/List';\r\nimport Divider from '@material-ui/core/Divider';\r\n\r\nimport {Link} from 'react-router-dom';\r\n\r\nimport LoadingScreen from 'react-loading-screen'\r\nimport { AppBar, FormControl, IconButton, LinearProgress, Dialog, ListItem, ListItemText, MenuItem, Select, Toolbar, Typography, DialogContent } from '@material-ui/core';\r\nimport { Usuario } from '../../services/Usuario';\r\n\r\n\r\n\r\n\r\nclass CalificacionesPromedioPeriodo extends Component {\r\n \r\n\r\n constructor(props){\r\n super(props);\r\n let id_grado = null;\r\n let id_grupo = null;\r\n let id_gradogrupo = null;\r\n let id_asignatura = null;\r\n\r\n if (props.match.params.idGrado){\r\n id_grado = props.match.params.idGrado;\r\n id_grupo = props.match.params.idGrupo;\r\n id_asignatura = props.match.params.idAsignatura;\r\n id_gradogrupo = id_grado + \"-\" + id_grupo;\r\n } \r\n\r\n this.state = {\r\n usuario_session : Usuario(),\r\n id_grado: id_grado,\r\n id_grupo: id_grupo,\r\n id_gradogrupo: id_gradogrupo,\r\n id_asignatura: id_asignatura,\r\n nom_grado: null, \r\n lista_alumnos: null,\r\n lista_grados: null,\r\n lista_asignaturas: null,\r\n titulos_tabla: null,\r\n titulos_tabla2: null,\r\n num_periodo: 0,\r\n nota_alumno: 0,\r\n id_matricula: 0,\r\n list_notas: {},\r\n guardado: {},\r\n listaindex : {},\r\n ConfPorcenNotas: [20, 80],\r\n procentaje_ptl: 0, //% plataforma\r\n calificacionPTF: false,\r\n errorvalidarExF: false,\r\n loading: true,\r\n loading_bar: false,\r\n openImprimir: false,\r\n url_pdf : \"\"\r\n\r\n }\r\n this.listar_alumnos = this.listar_alumnos.bind(this); \r\n this.periodo_actual = this.periodo_actual.bind(this);\r\n this.info_grado = this.info_grado.bind(this)\r\n this.resumen_notas_nomal = this.resumen_notas_nomal.bind(this);\r\n this.listar_periodos = this.listar_periodos.bind(this);\r\n this.lista_asignaturas_doc = this.lista_asignaturas_doc.bind(this);\r\n this.listar_notas_asignatura = this.listar_notas_asignatura.bind(this);\r\n this.handleCloseImprimir = this.handleCloseImprimir.bind(this);\r\n this.handleClickOpenImprimir = this.handleClickOpenImprimir.bind(this);\r\n \r\n \r\n }\r\n\r\n\r\n lista_grados_doc(){\r\n let id_docente = this.state.usuario_session.id_docente;\r\n GetData('asignaciones/gradosdocente/' + id_docente, this.state).then ((result) =>{\r\n let responseJSON = result;\r\n let gradogrupo;\r\n let lgrados = responseJSON.grados;\r\n\r\n if (this.state.id_grado !== null)\r\n gradogrupo = this.state.id_grado + \"-\" + this.state.id_grupo;\r\n else{\r\n gradogrupo = lgrados[0].id_grados + \"-\" + lgrados[0].id_grupo; \r\n this.setState({\r\n id_grado: lgrados[0].id_grado,\r\n id_grupo: lgrados[0].id_grupo,\r\n id_gradogrupo: gradogrupo,\r\n })\r\n }\r\n\r\n const lista = responseJSON.grados.map((item, index) =>{item.nombre_grado} - {item.id_grupo}); \r\n this.setState({lista_grados: lista, id_gradogrupo: gradogrupo}, () => {\r\n this.lista_asignaturas_doc();\r\n })\r\n\r\n });\r\n }\r\n\r\n cargar_asignaturas = (e) => {\r\n this.setState({id_gradogrupo: e.target.value}, () =>{\r\n this.lista_asignaturas_doc();\r\n });\r\n \r\n}\r\n\r\n lista_asignaturas_doc(){\r\n let id_docente = this.state.usuario_session.id_docente;\r\n let gradogrupo = this.state.id_gradogrupo;\r\n let partgradogrupo = gradogrupo.split(\"-\");\r\n let id_grado = partgradogrupo[0];\r\n let id_grupo = partgradogrupo[1];\r\n\r\n GetData('asignaciones/asignaturasdocente/' + id_docente + \"/\" + id_grado + \"/\" + id_grupo + \"/0\", this.state).then ((result) =>{\r\n let responseJSON = result;\r\n let gradogrupo = this.state.id_grado + \"-\" + this.state.id_grupo;\r\n let id_asignatura = responseJSON.asignaturas[0].id_asignatura;\r\n const lista = responseJSON.asignaturas.map((item, index) =>{item.nombre_asignatura}); \r\n this.setState({lista_asignaturas: lista, id_asignatura: id_asignatura}, () => {\r\n this.listar_alumnos();\r\n })\r\n\r\n });\r\n }\r\n\r\n listar_notas_asignatura = (e) => {\r\n this.setState({id_asignatura: e.target.value}, () =>{\r\n if (this.state.id_grado !== null)\r\n this.listar_alumnos();\r\n });\r\n }\r\n\r\n\r\n\r\n periodo_actual(){\r\n GetData('periodos/actual/', this.state).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){\r\n let periodo = responseJSON.periodo; \r\n this.setState({num_periodo: periodo}, ()=> {\r\n this.listar_periodos()\r\n // this.listar_alumnos();\r\n });\r\n }\r\n });\r\n \r\n }\r\n\r\n info_grado(){\r\n \r\n GetData('grados/infogrado/' + this.state.id_grado, this.state).then ((result) =>{\r\n let responseJSON = result;\r\n if (responseJSON.error === false){\r\n\r\n let nom_grado = responseJSON.nom_grado; \r\n this.setState({\r\n nom_grado: nom_grado\r\n });\r\n }\r\n }); \r\n } \r\n\r\n\r\n \r\ndatos_columna(datos, cols){\r\n let retorno = [];\r\n \r\n Object.keys(datos).forEach(function(key) {\r\n \r\n \r\n\r\n let datocelda = datos[key];\r\n let nota = datocelda;\r\n let center = \"\";\r\n \r\n if (key === \"periodo1\" || key === \"periodo2\" || key === \"periodo3\" || key === \"periodo4\" || key === \"promedio\"){\r\n \r\n console.log(datos['id_matricula'])\r\n if (!isNaN(parseFloat(datocelda)) && isFinite(datocelda))\r\n nota = parseFloat(datocelda).toFixed(1);\r\n center = \"center\";\r\n }\r\n retorno.push({nota});\r\n })\r\n return retorno;\r\n}\r\n\r\nanchocolumna(key, total){\r\n \r\n\r\n let an = total - 3;\r\n let w = an * 10;\r\n let anca = 100 - w - 20; \r\n\r\n if (key === 0)\r\n return \"10%\";\r\n\r\n if (key === 1)\r\n return anca + \"%\";\r\n\r\n if (key > 1 && key < total)\r\n return \"10%\";\r\n \r\n if (key === (total-1)){\r\n return \"10%\";\r\n } \r\n \r\n}\r\n\r\nresumen_notas_nomal(datostabla){\r\n // se contruye las columnas de con los nombres de los campos para poder armar la tabla\r\n\r\n \r\n let index = 0;\r\n //datostabla.forEach(function(alumno){ \r\n let alumno = datostabla[0]; \r\n let columnas = [];\r\n let columna;\r\n Object.keys(alumno).forEach(key => { \r\n columna = \"\";\r\n switch (key){\r\n case \"id_matricula\":\r\n columna = \"ID\";\r\n break;\r\n case \"nombres_apellidos_al\":\r\n columna = \"Nombre del Alumno\";\r\n break;\r\n case \"periodo1\":\r\n columna = \"Periodo 1\";\r\n break;\r\n case \"periodo2\":\r\n columna = \"Periodo 2\";\r\n break;\r\n case \"periodo3\":\r\n columna = \"Periodo 3\";\r\n break;\r\n case \"periodo4\":\r\n columna = \"Periodo 4\";\r\n break;\r\n case \"promedio\":\r\n columna = \"Promedio\";\r\n break;\r\n\r\n }\r\n columnas.push(columna);\r\n }); \r\n //})\r\n\r\n\r\n \r\n let objetos = Object.keys(columnas);\r\n let totalcol = objetos.length;\r\n\r\n\r\n let titulostabla = columnas.map(\r\n (item, key) =>{item});\r\n \r\n \r\n const renderData = datostabla.map((alumno, key) =>\r\n {\r\n this.datos_columna(alumno, key)\r\n }); \r\n\r\n\r\n\r\n let listaindi = renderData; //renderData(datostabla, colt_columtotal); \r\n\r\n this.setState({ lista_alumnos : listaindi, titulostabla: titulostabla })\r\n \r\n}\r\n\r\n\r\nlistar_alumnos(){\r\n this.setState({loading_bar: true})\r\n let gradogrupo = this.state.id_gradogrupo;\r\n let partgradogrupo = gradogrupo.split(\"-\");\r\n let id_grado = partgradogrupo[0];\r\n let id_grupo = partgradogrupo[1];\r\n\r\n let url = 'calificaciones/listbbnotasperiodo/';\r\n let urlpdf = 'promedio_notas_asig';\r\n if (id_grado < 5){\r\n url = 'calificaciones/listbbnotasletrasperiodo/';\r\n urlpdf = 'promedio_notas_asiglt'\r\n }\r\n\r\n this.setState({url_pdf: `http://inscandelaria.com/api_res_cand/printer/${urlpdf}.php?grado=${id_grado}&grupo=${id_grupo}&asig=${this.state.id_asignatura}&id_periodo=${this.state.num_periodo}&token=${this.state.usuario_session.token}`})\r\n GetData(url + id_grado + \"/\" + id_grupo + \"/\" + this.state.id_asignatura + \"/\" + this.state.num_periodo, this.state).then ((result) =>{\r\n let responseJSON = result;\r\n //console.log(responseJSON);\r\n if (responseJSON.error === false){\r\n \r\n\r\n this.resumen_notas_nomal(responseJSON.lista);\r\n \r\n \r\n this.setState({loading: false, loading_bar: false})\r\n \r\n }else{\r\n console.log(\"Error al cargar las calificaciones\");\r\n }\r\n })\r\n }\r\n\r\n\r\n cambiar_periodo = (e) => {\r\n this.setState({num_periodo: e.target.value}, () =>{\r\n if (this.state.id_grado !== null)\r\n this.listar_alumnos();\r\n });\r\n \r\n }\r\n\r\n listar_periodos(){\r\n let periodos_list = [];\r\n \r\n for (let i = 1; i <= this.state.num_periodo; i++)\r\n periodos_list.push(i);\r\n \r\n const lista = periodos_list.map((item, index) =>Periodo {item});\r\n \r\n this.setState({lista_periodos: lista})\r\n \r\n } \r\n\r\n\r\n handleClickOpenImprimir = () => {\r\n console.log(\"Abrir ventana\")\r\n this.setState({openImprimir: true})\r\n };\r\n\r\n handleCloseImprimir = () => {\r\n console.log(\"Cerrar ventana\")\r\n this.setState({openImprimir: false})\r\n };\r\n\r\n\r\n render() {\r\n \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
\r\n \r\n Calificaciones del \r\n Grado: \r\n \r\n \r\n \r\n \r\n { this.state.lista_grados }\r\n \r\n \r\n\r\n\r\n Asignatura: \r\n \r\n \r\n \r\n \r\n { this.state.lista_asignaturas }\r\n \r\n \r\n\r\n \r\n {/* */}\r\n \r\n
\r\n
\r\n \r\n \r\n\r\n
Consolidado por Períodos
\r\n \r\n \r\n \r\n \r\n {this.state.titulostabla}\r\n {this.state.titulos_tabla2}\r\n \r\n {this.state.lista_alumnos}\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 Imprimir Listado\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 componentDidUpdate(prevProps, prevState) {\r\n // this[`ref${5}`].handleFocus();\r\n }\r\n componentDidMount() { \r\n this.periodo_actual();\r\n this.info_grado();\r\n this.lista_grados_doc();\r\n } \r\n}\r\n\r\nexport default CalificacionesPromedioPeriodo;\r\n","import React, { Component, lazy, Suspense } from 'react';\nimport {Route} from 'react-router-dom';\nimport './Home.css';\nimport {GetData} from '../../services/GetData'\nimport {Usuario} from '../../services/Usuario'\nimport {Redirect} from 'react-router-dom';\nimport GradoMaterias from './GradoMaterias/GradoMaterias';\nimport NavBar from './NavBar/NavBar';\nimport Grados from './Grados/Grados';\n//import Indicadores from '../Indicadores/Indicadores';\nimport Actividades from '../Actividades/Actividades';\nimport Calificaciones from '../Calificaciones/Calificaciones';\nimport CalificacionesIndicador from '../CalificacionesIndicador/CalificacionesIndicador';\nimport ModificarIndicadores from '../ModificarIndicadores/ModificarIndicadores'\nimport CalificacionesPeriodo from '../CalificacionesPeriodo/CalificacionesPeriodo';\nimport NotaFinalPeriodo from '../NotaFinalPeriodo/NotaFinalPeriodo';\nimport Consolidado from '../Consolidado/Consolidado';\nimport Calificacionesfinalp from '../Calificacionesfinalp/Calificacionesfinalp';\nimport Indicadores from '../Indicadores/Indicadores';\nimport ExamenFinal from '../ExamenFinal/ExamenFinal';\nimport IdleTimer from 'react-idle-timer'\nimport BarInfoPeriodo from './BarInfoPeriodo';\nimport Moment from 'moment';\nimport 'moment/locale/es';\nimport ConsolidadoResumen from '../Consolidado/ConsolidadoResumen';\nimport Nivelaciones from '../Nivelaciones/Nivelaciones';\nimport Asistencias from '../Calificaciones/Asistencias';\nimport CalificacionesResumen from '../Calificacionesfinalp/CalificacionesResumen';\nimport { AuthPeriodo } from '../../services/AuthPeriodo';\nimport { AuthNivelacion } from '../../services/AuthNivelacion';\nimport CalificacionesPromedioPeriodo from '../Calificaciones/CalificacionesPromedioPeriodo';\nimport Modal from '@material-ui/core/Modal';\nimport { Box, Button, Dialog, DialogActions, DialogContent, DialogTitle, Table, TableBody, TableCell, TableHead, TableRow, withStyles } from '@material-ui/core';\n\n\n\n\n\n\nconst CalificacionesPeriodoAnterior = lazy(() => import(\"../CalificacionesPeriodoAnterior/CalificacionesPeriodoAnterior\"))\nconst AccesoPlataforma = lazy(() => import(\"../AccesoPlataforma/AccesoPlataforma\"));\nconst ListadoAlumnos = lazy(() => import(\"../ListadoAlumnos/ListadoAlumnos\"));\nconst ObservadorAlumno = lazy(() => import(\"../ObservadorAlumno/ObservadorAlumno\"));\n\nconst InformeAlumno = lazy(() => import(\"../InformeAlumno/InformeAlumno\"));\nconst PerfilUsaurio = lazy(() => import(\"../PerfilUsuario/PerfilUsuario\"));\nconst InformeAlumnobc = lazy(() => import(\"../InformeAlumnobc/InformeAlumnobc\"));\nconst ActividadesDocente = lazy(() => import(\"../ActividadesDocente/ActividadesDocente\"));\nconst AsignaturasDocente = lazy(() => import(\"../AsignaturasDocente/AsignaturasDocente\"));\nconst NotaFinalPeriodoAnterior = lazy(() => import(\"../NotaFinalPeriodoAnterior/NotaFinalPeriodoAnterior\"));\n\n\nclass Home extends Component {\n\n\n\n constructor(props){\n\n \n \n super(props);\n this.state = {\n usuario_session: Usuario(),\n id_docente: 0,\n username:'',\n password:'',\n lista_grados:
,\n redirect: false,\n usuarios_inactivo: false,\n error_login: false,\n periodo_actual : null,\n anio_actual : null,\n fecha_cierre_p : null,\n fecha_examenf_p : null,\n fecha_cierre_niv : null,\n estado_periodo: 0,\n nivelaciones: 0,\n dias_faltantes_cierre: \"\",\n bar_info_periodo: false,\n ListaStudents: [],\n openModal: false\n }\n this.listar_grados = this.listar_grados.bind(this);\n this.cerrar_session = this.cerrar_session.bind(this); \n this.idleTimer = null\n this.onAction = this._onAction.bind(this)\n this.onActive = this._onActive.bind(this)\n this.onIdle = this._onIdle.bind(this);\n this.obtener_periodo_actual = this.obtener_periodo_actual.bind(this)\n this.datos_nivelaciones = this.datos_nivelaciones.bind(this)\n this.dias_faltantes = this.dias_faltantes.bind(this);\n this.dias_faltantes_nivel = this.dias_faltantes_nivel.bind(this);\n this.guardar_datos_storage = this.guardar_datos_storage.bind(this);\n this.handleModalClose = this.handleModalClose.bind(this);\n \n }\n\n cerrar_session = () => {\n sessionStorage.clear();\n this.setState({usuario_session: Usuario()});\n }\n\n\n _onAction(e) {\n // console.log('el usuario hizo algo', e)\n }\n \n _onActive(e) {\n // console.log('user esta active', e)\n // console.log('time restante', this.idleTimer.getRemainingTime())\n }\n \n _onIdle(e) {\n //console.log('el usuario está inactivo', e)\n // console.log('activo por última vez', this.idleTimer.getLastActiveTime());\n sessionStorage.clear();\n this.setState({usuarios_inactivo: true});\n }\n //Obtiene la informacion si el periodo de nivelacion esta abierto y la fecha de cierre\n datos_nivelaciones(){\n GetData('periodos/nivelaciones/', this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n\n this.setState({\n fecha_cierre_niv : responseJSON.fecha_cierre,\n nivelaciones: responseJSON.estado\n }, ()=>{\n this.guardar_datos_storage();\n if (parseInt(this.state.nivelaciones) > 0)\n this.dias_faltantes_nivel();\n else{\n this.setState({\n dias_faltantes_cierre: \"Período Cerrado\",\n bar_info_periodo: true\n }) \n } \n })\n }\n });\n }\n\n listado_estudiantes_cumple(){\n GetData('matriculas/alumnoscumpleanios/'+this.state.usuario_session.id_docente, this.state).then ((result) =>{\n let responseJSON = result; \n if (responseJSON.error === false){\n const alumnos = result.alumnos || [];\n console.log(alumnos.length)\n if (alumnos.length > 0){\n console.log(\"abriendo modal\")\n this.setState({\n ListaStudents : responseJSON.alumnos,\n openModal: true\n })\n } \n }\n });\n }\n\n handleModalClose = () => {\n this.setState({openModal:false})\n };\n\n guardar_datos_storage(){\n \n\n let datos = {\n fecha_cierre: this.state.fecha_cierre_p,\n fecha_cierre_niv: this.state.fecha_cierre_niv,\n estado_periodo : this.state.estado_periodo,\n nivelaciones : this.state.nivelaciones,\n id_periodo : this.state.periodo_actual\n } \n \n sessionStorage.setItem('periodo',JSON.stringify(datos));\n this.listar_grados();\n }\n\n obtener_periodo_actual(){\n \n GetData('periodos/actual/', this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n \n this.setState({\n periodo_actual : responseJSON.periodo,\n anio_actual : responseJSON.anio_actual,\n fecha_cierre_p : responseJSON.fecha_cierre,\n fecha_examenf_p : responseJSON.fecha_examenf,\n estado_periodo: responseJSON.estado\n }, () => {\n if (parseInt(this.state.estado_periodo) === 1){ \n this.dias_faltantes();\n this.guardar_datos_storage()\n }else\n this.datos_nivelaciones(); \n })\n }\n });\n }\n\n dias_faltantes(){\n\n let tiempo_restante = Moment(this.state.fecha_cierre_p + \" 23:59:00\", \"YYYY-MM-DD hh:mm\").endOf('hour').diff(); //optiene un valor positivo si hay horas de diferencia \n \n console.log(tiempo_restante)\n\n if (tiempo_restante > 0) {\n this.setState({\n dias_faltantes_cierre: Moment(this.state.fecha_cierre_p + \" 23:59:00\", \"YYYYMMDD\").endOf('day').fromNow(),\n bar_info_periodo: true\n })\n \n return;\n }else{ \n this.setState({\n dias_faltantes_cierre: \"Período Cerrado\",\n bar_info_periodo: true\n }) \n \n return; \n } \n \n }\n\n dias_faltantes_nivel(){\n let hoy = Moment().format('YYYY-MM-DD');\n \n if (this.state.fecha_cierre_niv >= hoy) {\n this.setState({\n fecha_cierre_p: this.state.fecha_cierre_niv,\n dias_faltantes_cierre: Moment(this.state.fecha_cierre_niv, \"YYYYMMDD\").endOf('day').fromNow(),\n bar_info_periodo: true\n })\n \n return;\n }else{ \n this.setState({\n dias_faltantes_cierre: \"Período Cerrado\",\n bar_info_periodo: true\n }) \n \n return; \n } \n }\n\n formato_fecha(fecha){\n if (fecha !== \"0000-00-00\")\n return Moment(fecha).format('DD/MMM/YYYY');\n else\n return \"Sin Fecha\"; \n }\n\n\n listar_grados(){\n\n console.log(\"listar_grados\")\n \n if (!this.state.usuario_session)\n return; \n\n let id_docente = this.state.usuario_session.id_docente;\n GetData('asignaciones/gradosdocente/' + id_docente, this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n let lasigna = responseJSON.grados.map(\n item =>
\n
\n {item.nombre_grado} {item.num_grupo}\n
\n
\n \n
\n
);\n \n this.setState({lista_grados: lasigna});\n \n }else{\n console.log(\"Error al cargar las aginaciones\");\n }\n })\n } \n\n onChange(e){\n this.setState({[e.target.name]: e.target.value})\n }\n\n render() {\n \n const StyledTableCell = withStyles((theme) => ({\n head: {\n backgroundColor: theme.palette.common.black,\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n padding: '4px', // puedes ajustar el valor del padding aquí\n },\n }))(TableCell);\n\n if (!this.state.usuario_session) {\n return ()\n }\n\n if (this.state.usuarios_inactivo){\n return ()\n }\n\n return (\n \n \n\n
\n \n \n { this.idleTimer = ref }}\n element={document}\n onActive={this.onActive}\n onIdle={this.onIdle}\n onAction={this.onAction}\n debounce={250}\n timeout={1000 * 60 * 10} />\n\n
}>\n \n } />\n \n } exact />\n } exact /> \n \n \n \n \n \n \n \n \n \n \n \n \n \n } exact />\n } exact />\n \n } exact />\n } exact />\n } exact />\n } exact />\n } exact />\n } exact /> \n \n } exact /> \n \n \n \n \n \n \n \n \n \n
\n \n \n \n Cumpleaños de hoy \n \n \n \n \n \n Nombres\n Edad\n Grado\n \n \n \n {this.state.ListaStudents.map((student) => (\n \n {student.nombres_apellidos_al}\n {student.edad}\n {student.nombre_grado} - {student.id_grupo}\n \n ))}\n \n
\n \n
\n \n \n \n \n
\n
\n \n\n );\n }\n\n componentDidMount() {\n \n this.obtener_periodo_actual()\n this.listado_estudiantes_cumple();\n } \n\n}\n\nexport default Home;\n","import React, { Component } from 'react';\nimport './NotFound.css';\n\n\nclass NotFound extends Component {\n\n constructor(props){\n \n\n }\n\n\n onChange(e){\n this.setState({[e.target.name]: e.target.value})\n }\n\n render() {\n \n \n\n return (\n \n
\n

Not Found

\n
\n \n\n );\n }\n}\n\nexport default NotFound;\n","import React, { Component } from 'react';\nimport {PostData} from '../../services/PostData'\nimport './CambioPassword.css';\nimport {Redirect} from 'react-router-dom';\nimport Avatar from '@material-ui/core/Avatar';\nimport Button from '@material-ui/core/Button';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport FormControl from '@material-ui/core/FormControl';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Paper from '@material-ui/core/Paper';\nimport Typography from '@material-ui/core/Typography';\nimport {Usuario} from '../../services/Usuario'\n\nclass CambioPassword extends Component {\n\n constructor(props){\n super(props);\n \n let usuariosession = Usuario();\n let id_usuario = null;\n let token = null;\n if (usuariosession){\n id_usuario = usuariosession.id_usuario;\n token = usuariosession.token;\n }\n \n\n this.state = {\n id_usuario: id_usuario,\n password:'',\n password_r:'',\n token: token,\n redirect: false,\n error_login: false\n }\n this.cambiarpass = this.cambiarpass.bind(this);\n this.onChange = this.onChange.bind(this);\n }\n\n cambiarpass(event){\n event.preventDefault();\n if (this.state.password && this.state.password_r){\n if (this.state.password !== this.state.password_r){\n alert(\"Las contraseñas no coinciden verifique\");\n return;\n }\n \n PostData('login/cambiarpassword', this.state).then ((result) =>{\n let responseJSON = result;\n\n\n if (responseJSON.error === false){\n\n this.setState({redirect: true});\n \n }else{\n console.log(\"Error al cambiar el password\"); \n }\n })\n \n }\n\n }\n\n onChange(e){\n this.setState({[e.target.name]: e.target.value})\n }\n\n render() {\n \n let message_error =
;\n\n if (this.state.error_login)\n message_error = * Error - Datos de ingreso no válidos, por favor verifique\n\n \n if (this.state.redirect){\n return ()\n }\n \n if (!this.state.id_usuario){\n return ()\n }\n\n const styles = theme => ({\n main: {\n width: 'auto',\n display: 'block', // Fix IE 11 issue.\n marginLeft: theme.spacing.unit * 3,\n marginRight: theme.spacing.unit * 3,\n [theme.breakpoints.up(400 + theme.spacing.unit * 3 * 2)]: {\n width: 400,\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n },\n paper: {\n marginTop: theme.spacing.unit * 8,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n padding: `${theme.spacing.unit * 2}px ${theme.spacing.unit * 3}px ${theme.spacing.unit * 3}px`,\n },\n avatar: {\n margin: theme.spacing.unit,\n backgroundColor: theme.palette.secondary.main,\n },\n form: {\n width: '100%', // Fix IE 11 issue.\n marginTop: theme.spacing.unit,\n },\n submit: {\n marginTop: theme.spacing.unit * 3,\n },\n });\n\n return (\n\n\n
\n \n \n \n \n \n info\n \n \n \n \n Cambio de Contraseña\n \n {message_error}\n
\n
Es necesario que cambie su contraseña por seguridad.
\n
\n
\n \n Nueva Contraseña\n \n \n \n Confirmar Contraseña\n \n \n\n \n Guardar\n \n \n
\n
\n \n\n );\n }\n}\n\nexport default CambioPassword;\n","import React, { Component, lazy, Suspense } from 'react';\r\nimport {Route} from 'react-router-dom';\r\nimport './Printer.css';\r\nimport {Usuario} from '../../services/Usuario'\r\nimport {Redirect} from 'react-router-dom';\r\n\r\n\r\n//import Indicadores from '../Indicadores/Indicadores';\r\n\r\nconst InformeAlumno = lazy(() => import(\"../InformeAlumno/InformeAlumno\"));\r\nconst InformeAlumnobc = lazy(() => import(\"../InformeAlumnobc/InformeAlumnobc\"));\r\n\r\nclass Printer extends Component {\r\n\r\n constructor(props){\r\n \r\n super(props);\r\n this.state = {\r\n usuario_session: Usuario(),\r\n id_docente: 0,\r\n username:'',\r\n password:'',\r\n lista_grados:
,\r\n redirect: false,\r\n error_login: false\r\n }\r\n\r\n }\r\n\r\n cerrar_session = () => {\r\n sessionStorage.clear();\r\n this.setState({usuario_session: Usuario()});\r\n }\r\n\r\n \r\n\r\n onChange(e){\r\n this.setState({[e.target.name]: e.target.value})\r\n }\r\n\r\n render() {\r\n \r\n \r\n\r\n if (!this.state.usuario_session) {\r\n return ()\r\n }\r\n\r\n return (\r\n \r\n \r\n\r\n
\r\n \r\n
}>\r\n } exact /> \r\n } exact /> \r\n \r\n \r\n\r\n \r\n \r\n\r\n );\r\n }\r\n\r\n componentDidMount() {\r\n \r\n \r\n } \r\n\r\n}\r\n\r\nexport default Printer;\r\n","import React, { Component } from 'react';\nimport './PaginaInactivo.css';\nimport Grid from '@material-ui/core/Grid';\nimport Paper from '@material-ui/core/Paper';\nimport Button from '@material-ui/core/Button';\nimport { Avatar } from '@material-ui/core';\nimport Typography from '@material-ui/core/Typography';\nimport {Link} from 'react-router-dom';\n\nclass PaginaInactivo extends Component {\n\n constructor(props){\n\n super(props);\n this.state = {\n\n }\n\n }\n\n\n onChange(e){\n this.setState({[e.target.name]: e.target.value})\n }\n\n render() {\n \n \n\n return (\n \n
\n \n \n \n \n\n \n \n \n av_timer\n \n \n \n Cerrrado por inactividad\n \n \n \"tiempoagotado\" \n \n \n La plataforma se cierra automáticamente cuando se supera el tiempo de inactividad de 10 minutos, de clic en ingresa para iniciar nueva mente.\n \n
\n \n\n\n
\n\n
\n\n
\n\n
\n \n\n );\n }\n}\n\nexport default PaginaInactivo;\n","import React from 'react';\r\nimport {BrowserRouter, Route, Switch} from 'react-router-dom';\r\nimport Login from './components/Login/Login';\r\nimport Home from './components/Home/Home';\r\n//import Welcome from './components/Welcome/Welcome';\r\n//import DatosInstitucion from './components/DatosInstitucion/DatosInstitucion';\r\nimport NotFound from './components/NotFound/NotFound';\r\nimport CambioPassword from './components/CambioPassword/CambioPassword';\r\nimport Printer from './components/Printer/Printer';\r\nimport PaginaInactivo from './components/PaginaInactivo/PaginaInactivo';\r\n\r\nconst Routes = () => {\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\nexport default Routes;","import React, { Component } from 'react';\nimport Routes from './routes';\nimport './App.css';\nimport {GetData} from './services/GetData'\n\nclass App extends Component {\n\n verion_app(){\n \n const versionapp = 5;\n\n sessionStorage.setItem('versionapp',versionapp);\n/*\n GetData('app/', this.state).then ((result) =>{\n let responseJSON = result;\n if (responseJSON.error === false){\n \n let num_version = responseJSON.num_version;\n let fecha_version = responseJSON.fecha_version;\n\n if (versionapp !== parseInt(num_version)){\n this.clear_cache();\n }else{\n console.log(\"Actualizado versión....\" + versionapp + \" (\" + fecha_version + \")\");\n }\n }\n }); \n*/\n }\n\n clear_cache(){\n //window.parent.caches.delete(\"call\");\n window.location.reload();\n }\n\n render() {\n\n \n\n\n return (<> \n
\n \n \n
\n );\n \n }\n\n componentDidMount(){\n this.verion_app();\n }\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport 'bootstrap/dist/css/bootstrap.min.css';\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","/* export const URL_SERVICIOS = \"http://inscandelaria.com/api_res_prado/index.php/\";\r\nexport const URL_INFORMES = \"http://inscandelaria.com/api_res_prado/printer/\"; */\r\n\r\n export const URL_SERVICIOS = \"http://inscandelaria.com/api_res_smartin/index.php/\";\r\nexport const URL_INFORMES = \"http://inscandelaria.com/api_res_smartin/printer/\"; \r\n\r\n//export const URL_SERVICIOS = \"https://inscandelaria.com/api_res_cand/index.php/\";\r\n//export const URL_INFORMES = \"https://inscandelaria.com/api_res_cand/printer/\";\r\n\r\n//export const URL_SERVICIOS = \"http://pruebas.colesper.com/api_res/index.php/\";\r\n//export const URL_SERVICIOS = \"http://127.0.0.1/cnotas/api_res/index.php/\";\r\n//export const URL_SERVICIOS = \"http://127.0.0.1/api_res/index.php/\";\r\n//export const URL_INFORMES = \"http://127.0.0.1/api_res/printer/\";\r\n\r\n\r\n","import {URL_SERVICIOS} from './UrlWebServis';\r\nimport { Usuario } from './Usuario';\r\n\r\nexport function GetData(type){ \r\n const usuario = Usuario();\r\n\r\n let token = \"\";\r\n if (usuario)\r\n token = usuario.token;\r\n\r\n return new Promise((resolve, reject) => { \r\n console.log(URL_SERVICIOS+type+'/'+token)\r\n fetch(URL_SERVICIOS+type+'/'+token) \r\n .then((response) => response.json())\r\n .then((responseJson) => {\r\n resolve(responseJson);\r\n })\r\n .catch((error) => {\r\n reject(error);\r\n })\r\n }) \r\n}"],"sourceRoot":""}