diff --git a/components/admin/appBar.js b/components/admin/appBar.js
index b680a60..28c3965 100644
--- a/components/admin/appBar.js
+++ b/components/admin/appBar.js
@@ -158,7 +158,41 @@ function AppBarAdmin(props) {
};
-
+ async function logout(){
+ try{
+ const url = process.env.HTTP_URL + "/api/login/logout";
+ const response = await fetch(url, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ })
+ // get response
+ const data_response = await response.json()
+ console.log(data_response, "ini data response")
+ // console.log(data, "ini data dari cek dokter")
+ if (response.status === 200) {
+ // create toast
+ Router.push('/')
+ return true
+ } else if (response.status === 400) {
+ Router.push('/')
+ return false
+ } else {
+ // create toast
+ Router.push('/')
+ return false
+ }
+
+ }catch (err){
+ Router.push('/')
+ console.log(err)
+ }
+ }
+
const renderMenu = (
Profile
- My account
+ {
+ logout()
+ handleMenuClose()
+ }
+ }>Logout
);
@@ -188,8 +227,8 @@ function AppBarAdmin(props) {
return (
-
+ >
)
}
diff --git a/components/admin/dialogEditPasien.js b/components/admin/dialogEditPasien.js
new file mode 100644
index 0000000..16fefc2
--- /dev/null
+++ b/components/admin/dialogEditPasien.js
@@ -0,0 +1,658 @@
+import { useRef, useState, forwardRef, useEffect } from 'react'
+import Router from 'next/router';
+import PropTypes from 'prop-types';
+import Button from '@mui/material/Button';
+import { styled } from '@mui/material/styles';
+import Dialog from '@mui/material/Dialog';
+import DialogTitle from '@mui/material/DialogTitle';
+import DialogContent from '@mui/material/DialogContent';
+import DialogActions from '@mui/material/DialogActions';
+import IconButton from '@mui/material/IconButton';
+import CloseIcon from '@mui/icons-material/Close';
+import TextField from '@mui/material/TextField';
+import Box from '@mui/material/Box';
+
+// this is for number format
+import NumberFormat from 'react-number-format';
+
+import moment from "moment"; //for converting date and time
+
+// select
+import InputLabel from '@mui/material/InputLabel';
+import MenuItem from '@mui/material/MenuItem';
+import FormControl from '@mui/material/FormControl';
+import Select from '@mui/material/Select';
+import Divider from '@mui/material/Divider';
+
+// ini untuk date time picker
+import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';
+import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
+import { DatePicker } from '@mui/x-date-pickers/DatePicker';
+
+// sweet alert
+import Swal from 'sweetalert2'
+import withReactContent from 'sweetalert2-react-content'
+const MySwal = withReactContent(Swal)
+
+// ini untuk number
+const NumberFormatCustom = forwardRef(function NumberFormatCustom(props, ref) {
+ const { onChange, ...other } = props;
+
+ return (
+ {
+ onChange({
+ target: {
+ name: props.name,
+ value: values.value,
+ },
+ });
+ }}
+ // thousandSeparator
+ isNumericString
+ // prefix="08"
+ />
+ );
+});
+
+const NumberFormatCustomNIK = forwardRef(function NumberFormatCustom(props, ref) {
+ const { onChange, ...other } = props;
+
+ return (
+ {
+ onChange({
+ target: {
+ name: props.name,
+ value: values.value,
+ },
+ });
+ }}
+ // thousandSeparator
+ isNumericString
+ // prefix="08"
+ />
+ );
+});
+
+
+const BootstrapDialog = styled(Dialog)(({ theme }) => ({
+ '& .MuiDialogContent-root': {
+ padding: theme.spacing(2),
+ },
+ '& .MuiDialogActions-root': {
+ padding: theme.spacing(1),
+ },
+}));
+
+const BootstrapDialogTitle = (props) => {
+ const { children, onClose, ...other } = props;
+
+ return (
+
+ {children}
+ {onClose ? (
+ theme.palette.grey[500],
+ }}
+ >
+
+
+ ) : null}
+
+ );
+};
+
+BootstrapDialogTitle.propTypes = {
+ children: PropTypes.node,
+ onClose: PropTypes.func.isRequired,
+};
+
+function DialogEditPasien(props) {
+ // console.log(props, "sini dialog edit pasien");
+
+ // create new let no and remove index 0 and 1 from props.dataPasien.no_telp
+ // let no =
+ // const ini_nik = props.openit ? props.dataPasien.nik : '';
+
+ const [datanya, setData] = useState({});
+ const nikInputRef = useRef();
+ const no_telpInputRef = useRef();
+ useEffect(() => {
+ setData(props.dataPasienPeriksa);
+ },[props.dataPasienPeriksa])
+
+
+ const updatePasien = async (e) => {
+ e.preventDefault();
+ // let no_telpBaru = "08" + datanya.no_telp
+ if (datanya.nik.length < 16) {
+ props.toastnya('NIK harus 16 digit', false)
+ // focus to nik
+ nikInputRef.current.focus();
+ } else if (datanya.no_telp.length < 11) {
+ props.toastnya('No Telpon minimal harus 11 digit', false)
+ // focus to nik
+ no_telpInputRef.current.focus();
+ }else if(datanya.no_telp[0] != "0" && datanya.no_telp[0] != "8"){
+ props.toastnya('No Telpon harus diawali dengan 08 atau 0', false)
+ // focus to nik
+ no_telpInputRef.current.focus();
+ }
+
+ else{
+ // props.toastnya('HEHEHEH LAMANYA', true)
+ props.setClose(datanya,true)
+ props.sweetalertnya(true);
+ await MySwal.fire({
+ title: 'Yakin ?',
+ text: `Detail pasien dengan nik ${datanya.nik} akan diedit`,
+ icon: 'info',
+ showCancelButton: true,
+ confirmButtonColor: '#3085d6',
+ cancelButtonColor: '#d33',
+ confirmButtonText: 'Ya, edit!'
+ }).then(async (result) => {
+ if (result.value) {
+ props.backdropnya(true);
+
+ // await 4 second
+ // await new Promise(resolve => setTimeout(resolve, 4000));
+ await confirm_update_data();
+ }else{
+ props.setOpenAgain()
+
+ }
+ })
+ props.backdropnya(false);
+ props.sweetalertnya(false);
+ }
+ }
+
+ async function confirm_update_data(){
+ try{
+ const url = process.env.HTTP_URL + "/api/admin/pasien?nik=" + datanya.nik;
+ const response = await fetch(url, {
+ method: 'PUT',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ body: JSON.stringify(datanya)
+ })
+
+ const data = await response.json();
+ if(response.status == 200){
+ props.toastnya('Data pasien berhasil diupdate', true)
+ Router.replace(Router.asPath);
+ }else{
+ props.toastnya('Terjadi kesalahan, coba lagi', false)
+ props.setOpenAgain()
+ }
+ }catch(err){
+ console.log(err)
+ props.toastnya('Terjadi kesalahan, coba lagi', false)
+ props.setOpenAgain()
+
+ }
+ }
+
+ // console.log(datanya, "ini data yang di edit");
+
+ return (
+ <>
+
+ {
+ props.setClose()
+ }
+ }
+ aria-labelledby="customized-dialog-title"
+ open={props.openit}
+ fullWidth={true}
+ component="form"
+ onSubmit={
+ updatePasien
+ }
+ >
+ {
+ props.setClose()
+ }
+ }>
+ Data Pasien
+
+
+ {
+ setData({
+ ...datanya,
+ nik: e.target.value,
+ })
+ }
+ }
+ id="nikTextField"
+ label="NIK"
+ placeholder="Masukkan NIK"
+ sx={{ width: "85%", boxShadow: 10 }}
+ InputProps={{
+ inputComponent: NumberFormatCustomNIK,
+ inputProps: {
+ maxLength: 16,
+ minLength: 16,
+ }
+ }}
+ />
+
+ <>
+ {
+ setData({
+ ...datanya,
+ nama: e.target.value,
+ })
+ }
+ }
+ id="namaEditTextField"
+ label="Nama"
+ placeholder="Masukkan Nama"
+ sx={{ width: "85%", boxShadow: 10 }}
+ />
+
+
+ Jenis Kelamin
+ {
+ setData({
+ ...datanya,
+ jenis_kelamin: e.target.value,
+ })
+ }
+ }
+ >
+
+ None
+
+ Laki-Laki
+ Perempuan
+
+
+
+
+
+ {
+ console.log(newValue);
+ setData({
+ ...datanya,
+ tgl_lahir: moment(newValue).format('YYYY-MM-DD'),
+ })
+ }}
+ renderInput={(params) => }
+ />
+
+
+
+ {
+ setData({
+ ...datanya,
+ alamat: e.target.value,
+ })
+ }
+ }
+ id="alamatTextFieldEdit"
+ label="Alamat"
+ placeholder="Masukkan Alamat"
+ sx={{ width: "85%", boxShadow: 10 }}
+ />
+ >
+ <>
+
+ {
+ setData({
+ ...datanya,
+ pekerjaan: e.target.value,
+ })
+ }
+ }
+ id="pekerjaanTextFieldEdit"
+ label="Pekerjaan"
+ placeholder="Masukkan Pekerjaan"
+ sx={{ width: "85%", boxShadow: 10 }}
+ />
+
+
+ Golongan Darah
+ {
+ setData({
+ ...datanya,
+ golongan_darah: e.target.value,
+ })
+ }
+ }
+ >
+
+ None
+
+ O+
+ O-
+ A+
+ A-
+ B+
+ B-
+ AB+
+ AB-
+
+
+
+
+ Pendidikan
+ {
+ setData({
+ ...datanya,
+ pendidikan: e.target.value,
+ })
+ }
+ }
+ >
+
+ None
+
+ Tiada
+ SD
+ SMP
+ SMA
+ Perguruan Tinggi
+
+
+
+ {
+ setData({
+ ...datanya,
+ no_telp: e.target.value,
+ })
+ }
+ }
+ id="NoTelpTextField"
+ label="No Telpon"
+ placeholder="Masukkan No Telpon"
+ sx={{ width: "85%", boxShadow: 10 }}
+ InputProps={{
+ inputComponent: NumberFormatCustom,
+ inputProps: {
+ maxLength: 13,
+ minLength: 11,
+ }
+ }}
+ />
+
+
+ Status Pernikahan
+ {
+ setData({
+ ...datanya,
+ status_pernikahan: e.target.value,
+ })
+ }
+ }
+ >
+
+ None
+
+ Bujang
+ Telah Menikah
+ Duda
+ Janda
+
+
+
+ {
+ setData({
+ ...datanya,
+ nama_orang_tua_wali: e.target.value,
+ })
+ }
+ }
+ id="namaOrangTuaWaliTextField"
+ label="Nama Orang Tua / Wali"
+ placeholder="Masukkan Nama Orang Tua / Wali"
+ sx={{ width: "85%", boxShadow: 10 }}
+ />
+
+ {
+ setData({
+ ...datanya,
+ nama_pasangan: e.target.value,
+ })
+ }
+ }
+ id="namaPasanganTextField"
+ label="Nama Pasangan"
+ placeholder="Masukkan Nama Pasangan"
+ sx={{ width: "85%", boxShadow: 10 }}
+ />
+
+
+ >
+
+
+
+
+ Save changes
+
+
+
+ >
+ )
+
+}
+
+export default DialogEditPasien;
\ No newline at end of file
diff --git a/components/admin/dialogLihatJadwalPasien.js b/components/admin/dialogLihatJadwalPasien.js
new file mode 100644
index 0000000..ad9120e
--- /dev/null
+++ b/components/admin/dialogLihatJadwalPasien.js
@@ -0,0 +1,1116 @@
+import { useState, forwardRef, useEffect, useRef } from 'react';
+import { styled } from '@mui/material/styles';
+import Button from '@mui/material/Button';
+import Dialog from '@mui/material/Dialog';
+import AppBar from '@mui/material/AppBar';
+import Toolbar from '@mui/material/Toolbar';
+import IconButton from '@mui/material/IconButton';
+import Typography from '@mui/material/Typography';
+import CloseIcon from '@mui/icons-material/Close';
+import Slide from '@mui/material/Slide';
+import Grid from '@mui/material/Grid';
+import Card from '@mui/material/Card';
+import Box from '@mui/system/Box';
+import TextField from '@mui/material/TextField';
+import HelpOutlineIcon from '@mui/icons-material/HelpOutline';
+import CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline';
+import ModeEditIcon from '@mui/icons-material/ModeEdit';
+import InfoIcon from '@mui/icons-material/Info';
+
+// select
+import InputLabel from '@mui/material/InputLabel';
+import MenuItem from '@mui/material/MenuItem';
+import FormControl from '@mui/material/FormControl';
+import Select from '@mui/material/Select';
+
+// ini untuk date time picker
+import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';
+import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
+import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';
+
+import moment from "moment"; //for converting date and time
+
+import { formatInTimeZone } from 'date-fns-tz' // format timezone
+
+// for table
+import Paper from '@mui/material/Paper';
+import Table from '@mui/material/Table';
+import TableBody from '@mui/material/TableBody';
+import TableCell, { tableCellClasses } from '@mui/material/TableCell';
+import TableContainer from '@mui/material/TableContainer';
+import TableHead from '@mui/material/TableHead';
+import TableRow from '@mui/material/TableRow';
+
+const StyledTableCell = styled(TableCell)(({ theme }) => ({
+ [`&.${tableCellClasses.head}`]: {
+ backgroundColor: theme.palette.primary.main,
+ color: theme.palette.common.white,
+ }
+}));
+
+// sweet alert
+import Swal from 'sweetalert2'
+import withReactContent from 'sweetalert2-react-content'
+const MySwal = withReactContent(Swal)
+
+const Transition = forwardRef(function Transition(props, ref) {
+ return ;
+});
+
+
+import DialogTitle from '@mui/material/DialogTitle';
+import DialogContent from '@mui/material/DialogContent';
+import DialogActions from '@mui/material/DialogActions';
+import Divider from '@mui/material/Divider';
+import OutlinedInput from '@mui/material/OutlinedInput';
+import Chip from '@mui/material/Chip';
+import Checkbox from '@mui/material/Checkbox';
+import ListItemText from '@mui/material/ListItemText';
+
+// for dialog
+const BootstrapDialog = styled(Dialog)(({ theme }) => ({
+ '& .MuiDialogContent-root': {
+ padding: theme.spacing(2),
+ },
+ '& .MuiDialogActions-root': {
+ padding: theme.spacing(1),
+ },
+}));
+
+const CustomDisableInput = styled(TextField)(() => ({
+ ".MuiInputBase-input.Mui-disabled": {
+ WebkitTextFillColor: "#000",
+ color: "#000"
+ },
+ // change the mui textfield border color
+ ".MuiOutlinedInput-root.Mui-disabled .MuiOutlinedInput-notchedOutline": {
+ borderColor: "#339AFF"
+ },
+ // change the label color
+ ".MuiInputLabel-root.Mui-disabled": {
+ color: "#339AFF"
+ }
+}));
+
+const PenjumlahanObat = (props) => {
+ let datanya = props.listObat;
+ let component = [];
+ for (let i = 0; i < datanya.length; i++) {
+ component.push(
+
+
+
+ )
+
+ }
+
+ return (
+ <>
+ {component}
+ >
+ )
+}
+
+const BootstrapDialogTitle = (props) => {
+ const { children, onClose, ...other } = props;
+
+ return (
+
+ {children}
+ {onClose ? (
+ theme.palette.grey[500],
+ }}
+ >
+
+
+ ) : null}
+
+ );
+};
+
+// ini untuk select
+const ITEM_HEIGHT = 48;
+const ITEM_PADDING_TOP = 8;
+const MenuProps = {
+ PaperProps: {
+ style: {
+ maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,
+ width: 250,
+ },
+
+ },
+};
+
+function DialogLihatJadwalPasien(props) {
+ // console.log(props, "ini props di jadwal")
+ const [dataJadwal, setDataJadwal] = useState([])
+ const [dataPasien, setDataPasien] = useState({})
+
+ const [dokterList, setDokterList] = useState([]);
+ const [jam_periksa, setJamPeriksa] = useState('');
+ const tanggal_periksaInputRef = useRef();
+ const [tanggal_periksa, setTanggalPeriksa] = useState('');
+ const [dokter, setDokter] = useState('');
+
+ useEffect(() => {
+ if (props.dataJadwal.length > 0) {
+ setDataJadwal(props.dataJadwal)
+ }else{
+ setDataJadwal([])
+ }
+ }, [props.dataJadwal])
+
+ useEffect(() => {
+ if (props.openit == true) {
+ setDataPasien(props.dataPasien)
+ }
+ }, [props.dataPasien, props.openit])
+
+ // for dokter select
+ async function cekDoktor(tanggal,stat) {
+ setDokter("")
+ setDokterEdit("")
+ // console.log(tanggal)
+ // create let day and get the day from tanggal. example : Thu Apr 28 2022 03:36:00 GMT+0800 (Central Indonesia Time) , output : "Kamis"
+ let day = new Date(tanggal).getDay();
+ switch (day) {
+ case 0:
+ day = "Minggu";
+ break;
+ case 1:
+ day = "Senin";
+ break;
+ case 2:
+ day = "Selasa";
+ break;
+ case 3:
+ day = "Rabu";
+ break;
+ case 4:
+ day = "Kamis";
+ break;
+ case 5:
+ day = "Jumat";
+ break;
+ case 6:
+ day = "Sabtu";
+ break;
+
+ }
+ // console.log(day, "ini day")
+ // create let clock and get the hour,minute,second from tanggal. output example : "12:00:00"
+ let hour = new Date(tanggal).getHours(); // if hour is less than 10, then add 0 before hour
+ hour = hour < 10 ? "0" + hour : hour;
+ let minute = new Date(tanggal).getMinutes(); // if minute is less than 10, then add 0 before minute
+ minute = minute < 10 ? "0" + minute : minute;
+ let second = new Date(tanggal).getSeconds(); // if second is less than 10, then add 0 before second
+ second = second < 10 ? "0" + second : second;
+ let clock = hour + ":" + minute + ":" + second;
+ if(stat == "edit"){
+ setJamPeriksaEdit(clock)
+ }else{
+ setJamPeriksa(clock)
+ }
+
+ // console.log(clock, "ini clock")
+
+ try {
+ let urlnya = process.env.HTTP_URL + "/api/admin/cek_jadwal?hari=" + day + "&jam=" + clock;
+ const response = await fetch(urlnya, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ }
+ })
+ // get response
+ const data = await response.json()
+ console.log(data, "ini data")
+ if(stat == "edit"){
+ setDokterListEdit(data.data)
+ }else{
+ setDokterList(data.data)
+ }
+
+ } catch (err) {
+ console.log(err)
+ props.toastnya("Terjadi kesalahan saat mengambil data dokter", false)
+ }
+
+ }
+
+ const beforeAddJadwal = async (e) => {
+ e.preventDefault()
+ if (tanggal_periksa == '') {
+ toast.error('Tanggal periksa harus diisi')
+ // focus to nik
+ tanggal_periksaInputRef.current.focus();
+ } else {
+ const formattedDate = moment(tanggal_periksa).format('YYYY-MM-DD');
+ const data = {
+ id_pasien: dataPasien.nik,
+ tanggal_periksa: formattedDate,
+ jam_periksa: jam_periksa,
+ id_dokter: dokter
+ }
+ props.sweetalertnya(true);
+ props.setClose(null, true)
+ await MySwal.fire({
+ title: 'Yakin ?',
+ text: `Tambah Jadwal Baru Pada Pasien NIK : ${dataPasien.nik}`,
+ icon: 'info',
+ showCancelButton: true,
+ confirmButtonColor: '#3085d6',
+ cancelButtonColor: '#d33',
+ confirmButtonText: 'Ya, tambah!'
+ }).then(async (result) => {
+ if (result.value) {
+ props.backdropnya(true);
+
+ // await 4 second
+ // await new Promise(resolve => setTimeout(resolve, 4000));
+ await confirm_tambah_jadwal(data);
+
+ }
+ else {
+ props.setOpenAgain()
+
+ }
+ })
+ props.backdropnya(false);
+ props.sweetalertnya(false);
+ }
+
+ }
+
+ async function confirm_tambah_jadwal(data) {
+ // console.log(data, "ini data dari client")
+ const datanya = data
+ try {
+ const url = process.env.HTTP_URL + "/api/admin/jadwal_pasien";
+ const response = await fetch(url, {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ body: JSON.stringify(datanya)
+ })
+
+ const data = await response.json();
+ // console.log(data, "sini datanya")
+ if (response.status == 200) {
+ props.toastnya('Data Jadwal Baru Berhasil Ditambahkan', true)
+ setTanggalPeriksa('')
+ setDokterList([])
+ setJamPeriksa('')
+ setDokter('')
+ setDataJadwal(data.data)
+ // Router.replace(Router.asPath);
+ props.updateJadwalTable()
+ props.setOpenAgain()
+ } else {
+ props.toastnya('Terjadi kesalahan, coba lagi', false)
+ props.setOpenAgain()
+ }
+ } catch (err) {
+ console.log(err)
+ props.toastnya('Terjadi kesalahan, coba lagi', false)
+ props.setOpenAgain()
+
+ }
+ }
+
+ // ini untuk dialog detail rekam medis
+ const [openDialog, setOpenDialog] = useState(false);
+ const [dataRekamMedis, setDataRekamMedis] = useState(null);
+ const [selectedTindakan, setSelectedTindakan] = useState([]);
+ const [selectedObat, setSelectedObat] = useState([]);
+ const [listObat, setListObat] = useState([]);
+
+ const cek_tindakan = async (data) => {
+ // console.log(data, "ini data tindakan");
+ try {
+ let tindakan_array = [];
+ for (let i = 0; i < data.length; i++) {
+ let url = process.env.HTTP_URL + "/api/dokter/tindakan?id=" + data[i];
+ const response = await fetch(url, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ })
+
+ const data_tindakan = await response.json();
+ // console.log(data_tindakan, "ini data tindakan");
+ if (response.status === 200) {
+ // tindakan_array.push();
+ let ini_tindakan = data_tindakan.data.nama_tindakan;
+ tindakan_array.push(ini_tindakan);
+ }
+
+ }
+ setSelectedTindakan(tindakan_array);
+ // console.log(tindakan_array, "ini tindakan array");
+
+
+ } catch (err) {
+ console.log(err)
+ }
+ }
+
+ const cek_obat = async (data) => {
+ try {
+ let list_obat = [];
+ let selected_obat = [];
+ for (let i = 0; i < data.length; i++) {
+ let url = process.env.HTTP_URL + "/api/dokter/cek_obat?id=" + data[i].id;
+ const response = await fetch(url, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ })
+
+ const data_obat = await response.json();
+ // console.log(data_obat, "ini data obat");
+ if (response.status === 200) {
+ // tindakan_array.push();
+ let nama_obat = data_obat.data.nama_obat;
+ list_obat.push({
+ nama_obat: nama_obat,
+ jumlah: data[i].jumlah,
+ });
+ selected_obat.push(nama_obat);
+
+ }
+
+ }
+ setListObat(list_obat);
+ setSelectedObat(selected_obat);
+
+ } catch (err) {
+ console.log(err)
+ }
+ }
+
+ async function preview_rekam_medis(data) {
+ let datanya = data
+ try {
+ setDataRekamMedis(datanya)
+ // console.log(dataRekamMedis, "ini data rekam medis")
+ } catch (err) {
+
+ }
+ // console.log(data, "ini data rekam medis di luar")
+ setOpenDialog(true);
+ }
+
+ // ini untuk dialog edit
+ const [openDialogEdit, setOpenDialogEdit] = useState(false);
+ const [idRekamMedisEdit, setIdRekamMedisEdit] = useState(null);
+
+ const[minTime , setMinTime] = useState(new Date());
+ const [dokterListEdit, setDokterListEdit] = useState([]);
+ const [jam_periksaEdit, setJamPeriksaEdit] = useState('');
+ const tanggal_periksaInputRefEdit = useRef();
+ const [tanggal_periksaEdit, setTanggalPeriksaEdit] = useState(null);
+ const [dokterEdit, setDokterEdit] = useState('');
+
+ const beforeEditJadwal = async (e) => {
+ e.preventDefault()
+ if (tanggal_periksaEdit == '') {
+ toast.error('Tanggal periksa harus diisi')
+ // focus to nik
+ tanggal_periksaInputRefEdit.current.focus();
+ } else {
+ const formattedDate = moment(tanggal_periksaEdit).format('YYYY-MM-DD');
+ const data = {
+ id_pasien: dataPasien.nik,
+ tanggal_periksa: formattedDate,
+ jam_periksa: jam_periksaEdit,
+ id_dokter: dokterEdit
+ }
+ // console.log(data , "ini data edit jadwal")
+ setOpenDialogEdit(false)
+ props.sweetalertnya(true);
+ props.setClose(null, true)
+ await MySwal.fire({
+ title: 'Yakin ?',
+ text: `Edit Jadwal `,
+ icon: 'info',
+ showCancelButton: true,
+ confirmButtonColor: '#3085d6',
+ cancelButtonColor: '#d33',
+ confirmButtonText: 'Ya, edit!'
+ }).then(async (result) => {
+ if (result.value) {
+ props.backdropnya(true);
+
+ // await 4 second
+ // await new Promise(resolve => setTimeout(resolve, 4000));
+ await confirm_edit_jadwal(data,idRekamMedisEdit);
+
+ }
+ else {
+ props.setOpenAgain()
+ await new Promise(resolve => setTimeout(resolve, 500));
+ setOpenDialogEdit(true)
+
+ }
+ })
+ props.backdropnya(false);
+ props.sweetalertnya(false);
+ }
+ }
+
+ async function confirm_edit_jadwal(datanya,id){
+ let datanyanya = datanya
+ let idnya = id
+ // try{
+ const url = process.env.HTTP_URL + "/api/admin/jadwal_pasien?id=" + idnya;
+ const response = await fetch(url, {
+ method: 'PUT',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ body: JSON.stringify(datanyanya)
+ })
+
+ const data = await response.json();
+ console.log(data, "sini datanya sudah edit")
+ if (response.status == 200) {
+ props.toastnya('Data Jadwal Baru Berhasil Diubah', true)
+ setTanggalPeriksa('')
+ setDokterList([])
+ setJamPeriksa('')
+ setDokter('')
+ setDataJadwal(data.data)
+ // Router.replace(Router.asPath);
+ props.updateJadwalTable()
+ props.setOpenAgain()
+ } else {
+ props.toastnya('Terjadi kesalahan, coba lagi', false)
+ props.setOpenAgain()
+ }
+ // }catch(err){
+ // console.log(err)
+ // props.toastnya('Terjadi kesalahan, coba lagi', false)
+ // props.setOpenAgain()
+ // }
+ }
+
+ return (
+ <>
+ {
+ setOpenDialog(false)
+ }
+ }
+ aria-labelledby="customized-dialog-title"
+ open={openDialog}
+ fullWidth={true}
+ >
+ {
+ setOpenDialog(false)
+ }
+ }>
+ Detail Rekam Medis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ (selectedTindakan.length > 0)
+ ?
+
+ Tindakan
+ }
+ renderValue={(selected) => (
+
+ {selected.map((value) => (
+
+ ))}
+
+ )}
+ MenuProps={MenuProps}
+ >
+ {selectedTindakan.map((name) => (
+
+ -1} />
+
+
+ ))}
+
+
+ :
+ Tiada Tindakan
+ }
+
+
+
+ {
+ (selectedTindakan.length > 0)
+ ?
+ <>
+
+ Obat
+ }
+ renderValue={(selected) => (
+
+ {selected.map((value) => (
+
+ ))}
+
+ )}
+ MenuProps={MenuProps}
+ >
+ {selectedObat.map((name) => (
+
+ -1} />
+
+
+ ))}
+
+
+
+
+ >
+ :
+ Tiada Tindakan
+ }
+
+
+ {
+ setOpenDialog(false)
+ }
+
+ } variant="outlined">
+ Tutup
+
+
+
+
+ {
+ // setOpenDialogEdit(false)
+ // }
+ // }
+ aria-labelledby="customized-dialog-title"
+ open={openDialogEdit}
+ component="form"
+ onSubmit={beforeEditJadwal}
+ >
+ {
+ setOpenDialogEdit(false)
+ }
+ }>
+ Edit Data {
+ idRekamMedisEdit
+ }
+
+
+
+
+ }
+ label="Tanggal Pemeriksaan"
+ value={tanggal_periksaEdit}
+ onChange={(newValue) => {
+ cekDoktor(newValue,"edit")
+ setTanggalPeriksaEdit(newValue);
+ // if newValue > today then set the minTime to null else set the minTime to today
+ if (newValue > new Date()) {
+ setMinTime(null)
+ }else{
+ setMinTime(new Date())
+ }
+ }}
+ />
+
+
+
+
+ Dokter
+ setDokterEdit(e.target.value)}
+ >
+
+
+ {
+ (dokterListEdit.length == 0) ? "Tiada Jadwal Dokter" : "-Pilih Dokter"
+ }
+
+
+ {
+ (dokterListEdit.length > 0) ?
+ dokterListEdit.map((dokter, index) => {
+ return (
+ {dokter.tb_dokter.nama} / {dokter.tb_dokter.spesialis}
+ )
+ }) :
+ null
+ }
+
+
+
+
+
+ Simpan Perubahan
+
+
+
+
+ {
+ // console.log("clicked")
+ // props.setClose()
+ // }
+ // }
+ TransitionComponent={Transition}
+ >
+
+
+ {
+ // console.log("clicked")
+ setTanggalPeriksa('')
+ setDokterList([])
+ setJamPeriksa('')
+ setDokter('')
+ props.setClose()
+ }
+ }
+ aria-label="close"
+ >
+
+
+
+ Jadwal Pasien {dataPasien.nama}
+
+ {
+ setTanggalPeriksa('')
+ setDokterList([])
+ setJamPeriksa('')
+ setDokter('')
+ props.setClose()
+ }
+ }
+ >
+ Close
+
+
+
+
+
+
+
+ Jadwal Baru
+
+
+
+
+ }
+ label="Tanggal Pemeriksaan"
+ value={tanggal_periksa || null}
+ onChange={(newValue) => {
+ cekDoktor(newValue,"tambah")
+ setTanggalPeriksa(newValue);
+ console.log(newValue)
+ }}
+ />
+
+
+
+
+ Dokter
+ setDokter(e.target.value)}
+ >
+
+
+ {
+ (dokterList.length == 0) ? "Tiada Jadwal Dokter" : "-Pilih Dokter"
+ }
+
+
+ {
+ (dokterList.length > 0) ?
+ dokterList.map((dokter, index) => {
+ return (
+ {dokter.tb_dokter.nama} / {dokter.tb_dokter.spesialis}
+ )
+ }) :
+ null
+ }
+
+
+
+
+
+ Tambah
+
+
+
+
+
+
+ List Jadwal
+
+
+
+
+
+ Pendaftaran
+ Waktu Periksa
+ Dokter
+ Status
+ Aksi
+
+
+
+ {
+ (dataJadwal.length > 0)
+ ?
+
+ dataJadwal.map((jadwal, index) => {
+ return (
+
+
+ {
+ formatInTimeZone(new Date(jadwal.createdAt), 'Asia/Kuala_Lumpur', 'yyyy-MM-dd | HH:mm:ss')
+
+ // "sini dulu"
+ }
+
+
+ {
+ jadwal.tanggal_periksa + " | " + jadwal.jam_periksa
+ }
+
+
+ {
+ jadwal.tb_dokter.nama
+ // "sini nama"
+ }
+
+
+ {
+ (jadwal.diagnosa == '' || jadwal.diagnosa == null)
+ ?
+ <>
+
+
+
+ >
+ :
+ <>
+ {
+ //
+ // console.log("ini cek")
+ }
+ }
+ >
+
+
+ >
+ }
+
+
+ {
+ (jadwal.diagnosa == '' || jadwal.diagnosa == null)
+ ?
+ <>
+ {
+ setTanggalPeriksaEdit(null)
+ setDokterEdit("")
+ setOpenDialogEdit(true)
+ // setIdRekamMedisEdit(null)
+ setIdRekamMedisEdit(jadwal.id_rekam_medis)
+
+ }
+ }
+ >
+
+
+ >
+ :
+ <>
+ {
+ //
+ // setDataRekamMedis(jadwal)
+ const tindakan = JSON.parse(jadwal.tindakan)
+
+ if (tindakan.length > 0) {
+ await cek_tindakan(tindakan);
+ }
+ const obat = JSON.parse(jadwal.obat);
+ if (obat.length > 0) {
+ await cek_obat(obat);
+ }
+ // setOpenDialog(true)
+
+ preview_rekam_medis(jadwal)
+ // console.log("ini cek")
+ // console.log(dataRekamMedis, "ini data rekam medis")
+ }
+ }
+ >
+
+
+ >
+ }
+
+
+ )
+ })
+ :
+
+
+ Tiada Data Jadwal
+
+
+ }
+
+
+
+
+
+
+
+
+
+ >
+ );
+}
+
+export default DialogLihatJadwalPasien;
\ No newline at end of file
diff --git a/components/admin/tabelDokter.js b/components/admin/tabelDokter.js
new file mode 100644
index 0000000..47df314
--- /dev/null
+++ b/components/admin/tabelDokter.js
@@ -0,0 +1,601 @@
+import { useState, useRef, forwardRef } from 'react';
+// import { useTheme } from '@mui/material';
+import { useTheme } from '@mui/system';
+import { useMediaQuery } from '@mui/material';
+// for table
+import TableCell, { tableCellClasses } from '@mui/material/TableCell';
+import TableRow from '@mui/material/TableRow';
+
+// button icon
+import IconButton from '@mui/material/IconButton';
+import ModeEditIcon from '@mui/icons-material/ModeEdit';
+import DisabledByDefaultIcon from '@mui/icons-material/DisabledByDefault';
+import EventAvailableIcon from '@mui/icons-material/EventAvailable';
+
+// for dialog box
+import { styled } from '@mui/material/styles';
+import Box from '@mui/material/Box';
+import Dialog from '@mui/material/Dialog';
+import DialogTitle from '@mui/material/DialogTitle';
+import DialogContent from '@mui/material/DialogContent';
+import DialogActions from '@mui/material/DialogActions';
+import CloseIcon from '@mui/icons-material/Close';
+import Button from '@mui/material/Button';
+import TextField from '@mui/material/TextField';
+import FormControl from '@mui/material/FormControl';
+import InputLabel from '@mui/material/InputLabel';
+import Select from '@mui/material/Select';
+import MenuItem from '@mui/material/MenuItem';
+
+
+// this is for number format
+import NumberFormat from 'react-number-format';
+
+// this is for circular progress
+import CircularProgress from '@mui/material/CircularProgress';
+
+// for edit jadwal dialog
+import DialogContentText from '@mui/material/DialogContentText';
+
+// for table
+import Paper from '@mui/material/Paper';
+import Table from '@mui/material/Table';
+import TableBody from '@mui/material/TableBody';
+import TableContainer from '@mui/material/TableContainer';
+import TableHead from '@mui/material/TableHead';
+const StyledTableCell = styled(TableCell)(({ theme }) => ({
+ [`&.${tableCellClasses.head}`]: {
+ backgroundColor: theme.palette.primary.main,
+ color: theme.palette.common.white,
+ }
+}));
+
+// this for dialog jadwal
+import AppBar from '@mui/material/AppBar';
+import Toolbar from '@mui/material/Toolbar';
+import Slide from '@mui/material/Slide';
+import Grid from '@mui/material/Grid';
+import Typography from '@mui/material/Typography';
+import TabelJadwalDokter from './tabelJadwalDokter';
+const Transition = forwardRef(function Transition(props, ref) { // for modal history
+ return ;
+});
+
+
+// ini untuk number
+const NumberFormatCustom = forwardRef(function NumberFormatCustom(props, ref) {
+ const { onChange, ...other } = props;
+
+ return (
+ {
+ onChange({
+ target: {
+ name: props.name,
+ value: values.value,
+ },
+ });
+ }}
+ // thousandSeparator
+ isNumericString
+ prefix="08"
+ />
+ );
+});
+
+const NumberFormatCustomNIK = forwardRef(function NumberFormatCustom(props, ref) {
+ const { onChange, ...other } = props;
+
+ return (
+ {
+ onChange({
+ target: {
+ name: props.name,
+ value: values.value,
+ },
+ });
+ }}
+ // thousandSeparator
+ isNumericString
+ // prefix="08"
+ />
+ );
+});
+
+
+const BootstrapDialog = styled(Dialog)(({ theme }) => ({ // for modal edit
+ '& .MuiDialogContent-root': {
+ padding: theme.spacing(2),
+ },
+ '& .MuiDialogActions-root': {
+ padding: theme.spacing(1),
+ },
+}))
+
+const BootstrapDialogTitle = (props) => { // for modal edit
+ const { children, onClose, ...other } = props;
+
+ return (
+
+ {children}
+ {onClose ? (
+ theme.palette.grey[500],
+ }}
+ >
+
+
+ ) : null}
+
+ );
+};
+
+
+
+function TabelDokterAll(props) {
+ // console.log(props.dataDokterAll, "ini di bagian tabel all");
+ const url = process.env.HTTP_URL + "/api/admin/dokter"; // ini url
+
+ const namaInputRef = useRef();
+ const [nik, setNik] = useState('');
+ const [nama, setNama] = useState('');
+ const [alamat, setAlamat] = useState('');
+ const noTelpInputRef = useRef();
+ const [noTelp, setNoTelp] = useState('');
+ const [spesialis, setSpesialis] = useState('');
+
+
+ // for dialog box
+ const [dataDokterEdit, setDataDokterEdit] = useState({});
+ const [headerDialog, setHeaderDialog] = useState('');
+ const [openModalEdit, setOpenModalEdit] = useState(false);
+ const [isGet, setIsGet] = useState(false);
+ const handleClickOpenModalEdit = () => {
+
+ setOpenModalEdit(true);
+ };
+ const handleCloseModalEdit = (event, reason) => {
+ if (reason && reason == "backdropClick")
+ return;
+ setOpenModalEdit(false);
+ };
+
+ // for dialog jadwal
+ const [dataJadwal, setDataJadwal] = useState([]);
+ const [openJadwalModal, setOpenJadwalModal] = useState(false);
+ const handleCloseModalJadwal = () => {
+ setBukaJadwal(false)
+ setOpenJadwalModal(false);
+ setHariTambahEdit('');
+ setJamMulaiTambahEdit(null);
+ setJamSelesaiTambahEdit(null);
+
+ };
+ const handleClickOpenModalJadwal = async (id) => {
+ setIsLoadingDataJadwal
+ console.log(id)
+ setNik(id);
+ setOpenJadwalModal(true);
+ // await 3 sec
+ // await new Promise(resolve => setTimeout(resolve, 3000));
+ await cekJadwal(id);
+
+ // setOpenEditJadwal(true);
+ };
+
+ // Edit Jadwal Dialog
+ const harinya = ["Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"];
+ const [openEditJadwal, setOpenEditJadwal] = useState(false);
+ const theme = useTheme();
+ const fullScreen = useMediaQuery(theme.breakpoints.down('md'));
+ const [isLoadingDataJadwal, setIsLoadingDataJadwal] = useState(false);
+ const [bukaJadwal, setBukaJadwal] = useState(false);
+ const [hariTambahEdit, setHariTambahEdit] = useState('');
+ const [jamMulaiTambahEdit, setJamMulaiTambahEdit] = useState(null);
+ const [jamSelesaiTambahEdit, setJamSelesaiTambahEdit] = useState(null);
+
+ const handleClickOpenEditJadwal = () => {
+ setOpenEditJadwal(true);
+ };
+
+ const handleCloseEditJadwal = () => {
+ setOpenEditJadwal(false);
+ };
+
+ async function edit_dokter(id) {
+ setIsGet(false);
+ try {
+ const urlnya = `${url}?nik=${id}`;
+ const response = await fetch(urlnya, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ }
+ })
+ // get response
+ const data = await response.json()
+ // console.log(data.data, "ini data dokter");
+
+ // props.toastnya("Berhasil mengambil data dokter");
+ if (response.status === 200) {
+ let theData = data.data
+ // console.log(theData, "ini data dokter");
+ setDataDokterEdit(theData);
+ setHeaderDialog(theData.nama)
+ setNik(theData.nik);
+ setNama(theData.nama);
+ setAlamat(theData.alamat);
+ setNoTelp(theData.no_telp);
+ setSpesialis(theData.spesialis);
+ setIsGet(true);
+ setOpenModalEdit(true);
+ } else {
+ props.toastnya("Data dokter tidak ditemukan");
+ }
+ } catch (error) {
+ props.toastnya("Terjadi kesalahan");
+ }
+ handleClickOpenModalEdit();
+ }
+
+ const beforeEditDokter = async () => {
+
+ if (nama == dataDokterEdit.nama && alamat == dataDokterEdit.alamat && noTelp == dataDokterEdit.no_telp && spesialis == dataDokterEdit.spesialis) {
+ props.toastnya("Tidak ada perubahan");
+ } else {
+ let datanya = {
+ nama,
+ alamat,
+ no_telp: noTelp,
+ spesialis
+ }
+ handleCloseModalEdit()
+ await props.editDokter(nik, datanya);
+
+ }
+
+
+
+ // console.log(nik, nama, alamat, noTelp, spesialis, dataDokterEdit, "ini data dokter");
+
+ }
+
+ async function cekJadwal(id) {
+ try {
+ let urlnya = `${url}?nik=${id}&detail=jadwal`;
+ const response = await fetch(urlnya, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ }
+ })
+ // get response
+ const data = await response.json()
+ // console.log(data.data, "ini data dokter");
+ setDataJadwal(data.data);
+ // console.log(dataJadwal, "ini data jadwal");
+
+ } catch (error) {
+ console.log(error)
+ }
+ }
+
+
+
+ return (
+ <>
+
+
+ {"Use Google's location service?"}
+
+
+
+ Let Google help apps determine location. This means sending anonymous
+ location data to Google, even when no apps are running.
+
+
+
+
+ Disagree
+
+
+ Agree
+
+
+
+
+
+
+
+
+
+
+
+ Jadwal Dokter NIK {nik}
+
+
+
+
+
+
+
+
+
+ {
+ isLoadingDataJadwal ?
+
+ :
+
+
+
+
+ Hari
+ Jam Masuk
+ Jam Keluar
+ Aksi
+
+
+
+ {
+ props.toastnya(message, stat)
+ }
+ }
+
+ closeJadwal={handleCloseModalJadwal}
+ backdropnya={
+ (stat) => {
+ props.backdropnya(stat)
+ }
+ }
+ sweetAlertLoadingnya={
+ (stat) => {
+ props.sweetAlertLoadingnya(stat)
+ }
+ }
+ openback={
+ async (nik, hari, jam_mulai, jam_selesai,stat) => {
+ // await 500 milisec
+ await new Promise(resolve => setTimeout(resolve, 500));
+ handleClickOpenModalJadwal(nik)
+ setHariTambahEdit(hari)
+ setJamMulaiTambahEdit(jam_mulai)
+ setJamSelesaiTambahEdit(jam_selesai)
+ if(stat){
+ setBukaJadwal(true)
+ }else{
+ setBukaJadwal(false)
+ }
+
+ }
+ }
+ bukaJadwal={
+ bukaJadwal
+ }
+ jam_mulainya={jamMulaiTambahEdit}
+ jam_selesainya={jamSelesaiTambahEdit}
+ hari_nya={hariTambahEdit}
+ />
+
+
+
+
+ }
+
+
+ Close Jadwal
+
+
+
+
+
+
+
+
+
+ {
+ e.preventDefault();
+ // await handleCloseModalEdit()
+ beforeEditDokter()
+ }
+ }
+ >
+
+ Edit Detail {isGet ? headerDialog : null}
+
+
+
+ {
+ isGet ?
+ <>
+ setNik(e.target.value)}
+ InputProps={{
+ inputComponent: NumberFormatCustomNIK,
+ inputProps: {
+ maxLength: 16,
+ minLength: 16,
+ }
+ }}
+ value={nik}
+ name="nik"
+
+ />
+
+ setNama(e.target.value)}
+ required
+ id="namaTextField"
+ label="Nama"
+ placeholder="Masukkan Nama"
+ sx={{ width: "85%", boxShadow: 10 }}
+ />
+
+ setAlamat(e.target.value)}
+ required
+ id="alamatTextField"
+ label="Alamat"
+ placeholder="Masukkan Alamat"
+ sx={{ width: "85%", boxShadow: 10 }}
+ />
+
+ setNoTelp(e.target.value)}
+ id="NoTelpTextField"
+ label="No Telpon"
+ placeholder="Masukkan No Telpon"
+ sx={{ width: "85%", boxShadow: 10 }}
+ InputProps={{
+ inputComponent: NumberFormatCustom,
+ inputProps: {
+ maxLength: 13,
+ minLength: 11,
+ }
+ }}
+ value={noTelp}
+ name="jumlah"
+ />
+
+
+ Spesialis
+ { setSpesialis(e.target.value) }
+ }
+ >
+
+ None
+
+ Spesialis 1
+ Spesialis 2
+ Spesialis 3
+
+
+
+ >
+ :
+ <>
+
+
+
+ >
+ }
+
+
+
+
+
+
+
+
+ {
+ isGet ?
+ <>
+
+
+
+ Simpan Perubahan
+
+
+ >
+ : <>>
+ }
+
+
+
+
+ {props.dataDokterAll.map((row, index) => (
+
+
+ {row.nik}
+
+ {row.nama}
+ {row.spesialis}
+ {row.no_telp}
+ {row.status}
+
+ edit_dokter(row.nik)}>
+
+
+ { handleClickOpenModalJadwal(row.nik) }
+ }>
+
+
+
+
+
+
+
+ ))}
+ >
+ )
+}
+
+export default TabelDokterAll;
\ No newline at end of file
diff --git a/components/admin/tabelJadwalDokter.js b/components/admin/tabelJadwalDokter.js
new file mode 100644
index 0000000..8f26f69
--- /dev/null
+++ b/components/admin/tabelJadwalDokter.js
@@ -0,0 +1,310 @@
+import { useState, useEffect, useRef } from 'react';
+import TableCell from '@mui/material/TableCell';
+import TableRow from '@mui/material/TableRow';
+
+// button icon
+import IconButton from '@mui/material/IconButton';
+import ModeEditIcon from '@mui/icons-material/ModeEdit';
+import DisabledByDefaultIcon from '@mui/icons-material/DisabledByDefault';
+
+// for dialog
+import PropTypes from 'prop-types';
+import Button from '@mui/material/Button';
+import { styled } from '@mui/material/styles';
+import Dialog from '@mui/material/Dialog';
+import DialogTitle from '@mui/material/DialogTitle';
+import DialogContent from '@mui/material/DialogContent';
+import DialogActions from '@mui/material/DialogActions';
+import CloseIcon from '@mui/icons-material/Close';
+// import Typography from '@mui/material/Typography';
+
+import FormControl from '@mui/material/FormControl';
+import TextField from '@mui/material/TextField';
+import Box from '@mui/material/Box';
+
+// for time select
+import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';
+import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
+import { TimePicker } from '@mui/x-date-pickers/TimePicker';
+
+// sweet alert
+import Swal from 'sweetalert2'
+import withReactContent from 'sweetalert2-react-content'
+const MySwal = withReactContent(Swal)
+
+
+
+const BootstrapDialog = styled(Dialog)(({ theme }) => ({
+ '& .MuiDialogContent-root': {
+ padding: theme.spacing(2),
+ },
+ '& .MuiDialogActions-root': {
+ padding: theme.spacing(1),
+ },
+}));
+
+const BootstrapDialogTitle = (props) => {
+ const { children, onClose, ...other } = props;
+
+ return (
+
+ {children}
+ {onClose ? (
+ theme.palette.grey[500],
+ }}
+ >
+
+
+ ) : null}
+
+ );
+};
+
+BootstrapDialogTitle.propTypes = {
+ children: PropTypes.node,
+ onClose: PropTypes.func.isRequired,
+};
+
+function TabelJadwalDokter(props) {
+ // console.log(props, "ini props di dalam jadwal")
+ const [nik, setNik] = useState('');
+ // const [bukaJadwal , setBukaJadwal] = useState(false);
+ const [openDialog, setOpenDialog] = useState(false);
+
+ useEffect(() => {
+ setNik(props.niknya)
+
+ }, [props.niknya]);
+ async function inbukajadwal() {
+ await new Promise(resolve => setTimeout(resolve, 500));
+ setOpenDialog(true)
+ }
+
+ useEffect(() => {
+ if (props.bukaJadwal) {
+ inbukajadwal()
+ }
+ }, [props.bukaJadwal])
+
+
+
+
+ const [hari, setHari] = useState('');
+
+ // for time select
+ const jamMulaiInputRef = useRef();
+ const jamSelesaiInputRef = useRef();
+ const [jamMulai, setJamMulai] = useState(null);
+ const [jamSelesai, setJamSelesai] = useState(null);
+
+ useEffect(() => {
+ setHari(props.hari_nya)
+ setJamMulai(props.jam_mulainya)
+ setJamSelesai(props.jam_selesainya)
+ }, [props.hari_nya, props.jam_mulainya, props.jam_selesainya])
+
+
+ const tambahJadwal = async (e) => {
+ e.preventDefault();
+ if (jamMulai == null) {
+ props.toastnya("Jam Mulai Harus Terisi")
+ // focus jam mulai
+ jamMulaiInputRef.current.focus();
+ } else if (jamSelesai == null) {
+ props.toastnya("Jam Selesai Harus Terisi")
+ // focus jam selesai
+ jamSelesaiInputRef.current.focus();
+ } else if (jamMulai > jamSelesai) {
+ props.toastnya("Jam Mulai Harus Lebih Kecil Dari Jam Selesai")
+ // focus jam selesai
+ jamSelesaiInputRef.current.focus();
+ } else {
+ let jam_mulai_converted = jamMulai.toLocaleTimeString('en-US', { hour12: false, hour: "numeric", minute: "numeric" });
+ let jam_selesai_converted = jamSelesai.toLocaleTimeString('en-US', { hour12: false, hour: "numeric", minute: "numeric" });
+ console.log(jam_mulai_converted, jam_selesai_converted, hari, nik, "ini data yang akan dikirim")
+
+ let data = {
+ jam_mulai: jam_mulai_converted,
+ jam_selesai: jam_selesai_converted,
+ hari: hari,
+ id_dokter: nik
+ }
+ props.closeJadwal()
+ props.sweetAlertLoadingnya(true)
+
+ await MySwal.fire({
+ title: 'Yakin ?',
+ text: `Jadwal Pada Hari ${hari} akan ditambahkan ke dokter dengan nik ${nik}`,
+ icon: 'info',
+ showCancelButton: true,
+ confirmButtonColor: '#3085d6',
+ cancelButtonColor: '#d33',
+ confirmButtonText: 'Ya, tambahkan!'
+ }).then(async (result) => {
+ if (result.value) {
+ props.backdropnya(true);
+
+ try {
+ const url = process.env.HTTP_URL + "/api/admin/jadwal_dokter";
+ const response = await fetch(url, {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ body: JSON.stringify(
+ data
+ )
+ })
+
+ const json = await response.json();
+
+ if(response.status === 200){
+ props.toastnya(json.message,true)
+ await props.openback(nik, "", null, null, false)
+ }else{
+ props.toastnya(json.message,false)
+ await props.openback(nik, hari, jamMulai, jamSelesai, true)
+ }
+ } catch {
+ await props.openback(nik, hari, jamMulai, jamSelesai, true)
+ props.toastnya("Terjadi Kesalahan, Coba Lagi Nanti",false)
+ }
+
+ // await props.openback(nik, "", null, null, false)
+ } else {
+ await props.openback(nik, hari, jamMulai, jamSelesai, true)
+
+ }
+
+ })
+ props.backdropnya(false);
+ props.sweetAlertLoadingnya(false);
+
+
+ // props.closeJadwal()
+ }
+ }
+
+ let component = []
+
+ for (let i = 0; i < props.harinya.length; i++) {
+ // clear component
+
+ let componentnya = [
+
+ {props.harinya[i]}
+ -
+ -
+
+ {
+ setHari(props.harinya[i])
+ setOpenDialog(true)
+ }
+ }>
+
+
+
+
+ ]
+
+ for (let j = 0; j < props.dataJadwal.length; j++) {
+ if (props.dataJadwal[j].hari == props.harinya[i]) {
+ // clear componentnya
+ componentnya = [
+ {props.harinya[i]}
+ {props.dataJadwal[j].jam_mulai}
+ {props.dataJadwal[j].jam_selesai}
+
+
+
+
+
+
+
+
+ ]
+ // push jam mulai dan jam selesai
+ break;
+ }
+ }
+
+ // push componentnya to component
+ component.push(componentnya)
+
+
+ }
+ // console.log(component, "ini component")
+
+ return (
+ <>
+
+ {
+ setOpenDialog(false)
+ setJamMulai(null)
+ setJamSelesai(null)
+ }
+ }>
+ Jadwal Hari {hari}
+
+
+
+
+ {
+ setJamMulai(newValue);
+ }}
+ renderInput={(params) => }
+ />
+
+
+
+
+
+ {
+ setJamSelesai(newValue);
+ }}
+ renderInput={(params) => }
+ />
+
+
+
+
+
+ Tambah
+
+
+
+
+ {component}
+ >
+ )
+
+}
+
+export default TabelJadwalDokter
\ No newline at end of file
diff --git a/components/before_login/appBar.js b/components/before_login/appBar.js
index f811228..82c00b1 100644
--- a/components/before_login/appBar.js
+++ b/components/before_login/appBar.js
@@ -39,7 +39,7 @@ const ResponsiveAppBarIndex = () => {
-
+
diff --git a/components/before_login/body.js b/components/before_login/body.js
index 2edb457..cd4ef03 100644
--- a/components/before_login/body.js
+++ b/components/before_login/body.js
@@ -26,7 +26,7 @@ import TableRow from '@mui/material/TableRow';
import Backdrop from '@mui/material/Backdrop';
import CircularProgress from '@mui/material/CircularProgress';
-import { ToastContainer ,toast , Zoom , Bounce } from 'react-toastify'
+import { ToastContainer, toast, Zoom, Bounce } from 'react-toastify'
import 'react-toastify/dist/ReactToastify.css';
// sweet alert
@@ -65,16 +65,17 @@ const StyledTableCell = styled(TableCell)(({ theme }) => ({
// });
export default function GridIndex(props) {
- const [cekError, setCekError] = useState(props.errornya);
+ // console.log(props)
+ const [errornya , setError] = useState(props.errornya)
- if(cekError == true){
- MySwal.fire({
+ if (errornya == true) {
+ MySwal.fire({
title: `Error `,
html: "Anda Harus Login Terlebih Dahulu",
icon: 'error',
showConfirmButton: false,
})
- setCekError(false)
+ setError(false)
}
const usernameInputRef = useRef();
const passwordInputRef = useRef();
@@ -94,44 +95,49 @@ export default function GridIndex(props) {
const password = passwordInputRef.current.value;
setBackdrop(true);
// try {
- let http_server = process.env.HTTP_URL+"/api/login?username="+username+"&password="+md5(password)+"&role="+role;
- // console.log(http_server);
- const response = await fetch(http_server, {
- method: 'GET',
- headers: {
- 'Content-Type': 'application/json',
- 'allow-cors-origin': '*',
- 'crossDomain': true,
- }
- });
- const data = await response.json();
- // console.log(response);
- if(response.status == 200){
- console.log(data);
- toast.success("Login Success")
- // pause 2 seconds
+ let http_server = process.env.HTTP_URL + "/api/login?username=" + username + "&password=" + md5(password) + "&role=" + role;
+ // console.log(http_server);
+ const response = await fetch(http_server, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ }
+ });
+ const data = await response.json();
+ // console.log(response);
+ if (response.status == 200) {
+ console.log(data);
+ toast.success("Login Success")
+ // pause 2 seconds
- setTimeout( async function(){
- // put data to local storage
-
- await localStorage.setItem('user_data', JSON.stringify(data));
- // localStorage.removeItem('user_data');
- document.cookie = data;
-
+ setTimeout(async function () {
+ // // put data to local storage
-
-
+ // await localStorage.setItem('user_data', JSON.stringify(data));
+ // // localStorage.removeItem('user_data');
+ // document.cookie = data;
+ if (role == 'Admin') {
// redirect to dashboard
await router.replace('/admin');
- }, 2000);
- }else if(response.status == 400){
- // console.log(data);
- toast.warning(data.message);
- // focus on username input
- usernameInputRef.current.focus();
- }else{
- toast.error("Server Error");
- }
+ }else if (role == 'Dokter') {
+ // redirect to dashboard
+ await router.replace('/dokter');
+ }
+
+
+
+
+ }, 2000);
+ } else if (response.status == 400) {
+ // console.log(data);
+ toast.warning(data.message);
+ // focus on username input
+ usernameInputRef.current.focus();
+ } else {
+ toast.error("Server Error");
+ }
// } catch (error) {
// console.log(error)
// }
@@ -142,7 +148,7 @@ export default function GridIndex(props) {
// const classes = useStyles();
return (
-
+
theme.zIndex.drawer + 1 }}>
@@ -158,44 +164,50 @@ export default function GridIndex(props) {
paddingBottom: "10px",
backgroundColor: "silver",
}}>Jadwal Praktek Hari :
-
+
-
-
- Dessert (100g serving)
- Calories
-
+
+ Nama
+ Spesialis
+ Jam Mulai
+ Jam Selesai
- {rows.map((row) => (
-
-
- {row.name}
-
- {row.calories}
-
-
- ))}
+ {
+ props.jadwal_dokter.map((jadwal, index) => {
+ return (
+
+ {jadwal.tb_dokter.nama}
+ {jadwal.tb_dokter.spesialis}
+ {jadwal.jam_mulai}
+ {jadwal.jam_selesai}
+
+ )
+ })
+ }
-
+ {/*
Cetak
-
+ */}
diff --git a/components/dokter/appBar.js b/components/dokter/appBar.js
index a9b6a85..d17666f 100644
--- a/components/dokter/appBar.js
+++ b/components/dokter/appBar.js
@@ -1,5 +1,5 @@
import * as React from 'react';
-// import { styled, useTheme } from '@mui/material/styles';
+import Router from 'next/router';
import { styled, useTheme, alpha } from '@mui/material/styles';
import MuiDrawer from '@mui/material/Drawer';
import MuiAppBar from '@mui/material/AppBar';
@@ -19,6 +19,7 @@ import ListItemText from '@mui/material/ListItemText';
import HomeIcon from '@mui/icons-material/Home';
import InboxIcon from '@mui/icons-material/MoveToInbox';
import MailIcon from '@mui/icons-material/Mail';
+import MedicationIcon from '@mui/icons-material/Medication';
// coba
import Box from '@mui/material/Box';
@@ -26,6 +27,23 @@ import AccountCircle from '@mui/icons-material/AccountCircle';
import MenuItem from '@mui/material/MenuItem';
import Menu from '@mui/material/Menu';
+const listmenu = [
+ {
+ name: 'Home',
+ name2: 'Halaman Utama',
+ icon: ,
+ router: '/dokter',
+ },
+ {
+ name: 'Rekam Medis',
+ name2: 'Halaman Rekam Medis',
+ icon: ,
+ router: '/dokter/rekam-medis',
+ },
+
+]
+
+
@@ -96,7 +114,7 @@ const Drawer = styled(MuiDrawer, { shouldForwardProp: (prop) => prop !== 'open'
}),
);
-function AppBarDokter() {
+function AppBarDokter(props) {
const theme = useTheme();
const [open, setOpen] = React.useState(false);
const handleDrawerOpen = () => {
@@ -119,7 +137,7 @@ function AppBarDokter() {
setAnchorEl(null);
};
-
+
const renderMenu = (
Profile
- My account
+ {
+ logout()
+ handleMenuClose()
+ }
+ }
+ >Logout
);
-
+ function handleMenuRoute(menu) {
+ // console.log(menu + " sini menunya di appbar")
+ Router.push(menu)
+ }
+ async function logout() {
+ try {
+ const url = process.env.HTTP_URL + "/api/login/logout";
+ const response = await fetch(url, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ })
+ // get response
+ const data_response = await response.json()
+ console.log(data_response, "ini data response")
+ // console.log(data, "ini data dari cek dokter")
+ if (response.status === 200) {
+ // create toast
+ Router.push('/')
+ return true
+ } else if (response.status === 400) {
+ Router.push('/')
+ return false
+ } else {
+ // create toast
+ Router.push('/')
+ return false
+ }
+
+ } catch (err) {
+ Router.push('/')
+ console.log(err)
+ }
+ }
return (
-
-
-
+
+
+
+
+
+
+
+ {/* check the listmenu name if same as props.menu then load the listmenu.name2 */}
+ {
+ listmenu.map((listmenu, index) => {
+ if (listmenu.name === props.menu) {
+ return listmenu.name2
+ }
+ })
+ }
+
+
+
+
+
-
+
-
- Mini variant drawer
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ {renderMenu}
- {renderMenu}
-
Rekam Medis
{theme.direction === 'rtl' ? : }
-
+
-
-
-
-
-
-
- {['All mail', 'Trash', 'Spam'].map((text, index) => (
-
- (
+ props.handleMenuRoute(menu.router)}
+ onClick={(!props.backdrop && !props.sweetalertload && props.menu) ? () => handleMenuRoute(menu.router) : null}
+ // disableElevation
+ // disableRipple
sx={{
- minWidth: 0,
- mr: open ? 3 : 'auto',
- justifyContent: 'center',
+ minHeight: 48,
+ justifyContent: open ? 'initial' : 'center',
+ px: 2.5,
+ backgroundColor: (props.menu == menu.name) ? theme.palette.primary.main : null, // ini
+ color: (props.menu == menu.name) ? "white" : "grey", // ini
+ '&:hover': {
+ background: (props.menu == menu.name) ? theme.palette.primary.main : null, // ini
+ },
+ cursor: (props.backdrop || props.sweetalertload) ? 'default' : "pointer",
+ // cursor: "alias",
}}
>
- {index % 2 === 0 ? : }
-
-
-
- ))}
-
+
+ {
+ menu.icon
+ }
+
+
+
+ ))
+ }
+
+
-
-
+
+
)
diff --git a/components/dokter/selectedObat.js b/components/dokter/selectedObat.js
new file mode 100644
index 0000000..aa6a8d4
--- /dev/null
+++ b/components/dokter/selectedObat.js
@@ -0,0 +1,127 @@
+import {forwardRef} from 'react'
+import { Divider } from "@mui/material"
+import TextField from '@mui/material/TextField';
+import Box from '@mui/material/Box';
+
+// this is for number format
+import NumberFormat from 'react-number-format';
+
+const NumberFormatCustom = forwardRef(function NumberFormatCustom(props, ref) {
+ const { onChange, ...other } = props;
+
+ return (
+ {
+ onChange({
+ target: {
+ name: props.name,
+ value: values.value,
+ },
+ });
+ }}
+ // thousandSeparator
+ isNumericString
+ // prefix="08"
+ />
+ );
+});
+
+
+function RekamMedisSelectedObat(props) {
+ const url = process.env.HTTP_URL + "/api/dokter";
+ async function cek_obat(jumlah ,id){
+ try{
+ let urlnya= url + "/cek_obat?id="+id;
+ const response = await fetch(urlnya, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ })
+
+ const data = await response.json();
+ let jumlahnya = data.data.jumlah;
+ let hitung = jumlahnya - jumlah;
+
+ if(response.status == 200){
+ if(hitung >= 0){
+ return true;
+ }else{
+ props.errornya("Jumlah Obat Tidak Mencukupi");
+ return false;
+ }
+ }else{
+ return false;
+ }
+ }catch(error){
+ console.log(error);
+ return false;
+ }
+ }
+
+ if (props.obat.length == 0) {
+ return (
+
+
+
+
Tidak ada obat yang dipilih
+
+
+ )
+ } else {
+
+ let data = []
+ for (let i = 0; i < props.obat.length; i++) {
+ // push to data id = props.obat[i].split('-')[0] and jumlah = null
+ data.push({
+ id: props.obat[i].split('-')[0],
+ jumlah: null
+ })
+ }
+
+ let divider =
+ let box =
+ let component = []
+ component.push(divider)
+ component.push(box)
+ for (let i = 0; i < props.obat.length; i++) {
+ component.push(
+
+ {
+ data[i].jumlah = e.target.value
+ cek_obat(e.target.value, props.obat[i].split("-")[0])
+
+ props.datanya(data)
+ }}
+ InputProps={{
+ inputComponent: NumberFormatCustom,
+ inputProps: {
+ maxLength: 3,
+ minLength: 1,
+ }
+ }}
+ />
+
+
+ )
+ }
+
+ return (
+ <>
+ {component}
+ >
+ )
+ }
+}
+
+export default RekamMedisSelectedObat
\ No newline at end of file
diff --git a/components/dokter/tabelJadwalDokter.js b/components/dokter/tabelJadwalDokter.js
new file mode 100644
index 0000000..e092139
--- /dev/null
+++ b/components/dokter/tabelJadwalDokter.js
@@ -0,0 +1,82 @@
+import TableCell from '@mui/material/TableCell';
+import TableRow from '@mui/material/TableRow';
+
+// button icon
+import IconButton from '@mui/material/IconButton';
+import ModeEditIcon from '@mui/icons-material/ModeEdit';
+import DisabledByDefaultIcon from '@mui/icons-material/DisabledByDefault';
+// import EventAvailableIcon from '@mui/icons-material/EventAvailable';
+
+function TabelJadwalDokter(props) {
+
+ let component = []
+
+ for (let i = 0; i < props.harinya.length; i++) {
+ // clear component
+
+ let componentnya = [
+
+ {props.harinya[i]}
+ -
+ -
+
+ {
+ props.add(props.harinya[i])
+ }
+ }>
+
+
+
+
+ ]
+
+ for (let j = 0; j < props.dataJadwal.length; j++) {
+ if (props.dataJadwal[j].hari == props.harinya[i]) {
+ // clear componentnya
+ componentnya = [
+ {props.harinya[i]}
+ {props.dataJadwal[j].jam_mulai}
+ {props.dataJadwal[j].jam_selesai}
+
+ {
+ props.edit(props.harinya[i], props.dataJadwal[j].jam_mulai, props.dataJadwal[j].jam_selesai)
+ }
+ }
+ >
+
+
+ {
+ props.delete(props.harinya[i])
+ }
+ }
+ >
+
+
+
+ ]
+ // push jam mulai dan jam selesai
+ break;
+ }
+ }
+
+ // push componentnya to component
+ component.push(componentnya)
+
+
+ }
+ // console.log(component, "ini component")
+
+ return (
+ <>
+ {component}
+ >
+ )
+
+}
+
+export default TabelJadwalDokter
\ No newline at end of file
diff --git a/components/dokter/tableJadwalRekamMedis.js b/components/dokter/tableJadwalRekamMedis.js
new file mode 100644
index 0000000..d76fc1e
--- /dev/null
+++ b/components/dokter/tableJadwalRekamMedis.js
@@ -0,0 +1,565 @@
+import Router from 'next/router';
+import { useState } from 'react';
+import TableCell from '@mui/material/TableCell';
+import TableRow from '@mui/material/TableRow';
+
+// button icon
+import IconButton from '@mui/material/IconButton';
+// import EventAvailableIcon from '@mui/icons-material/EventAvailable';
+import QuestionAnswerIcon from '@mui/icons-material/QuestionAnswer';
+import HelpOutlineIcon from '@mui/icons-material/HelpOutline';
+import CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline';
+import InfoIcon from '@mui/icons-material/Info';
+
+// for dialog
+import Button from '@mui/material/Button';
+import { styled } from '@mui/material/styles';
+import Dialog from '@mui/material/Dialog';
+import DialogTitle from '@mui/material/DialogTitle';
+import DialogContent from '@mui/material/DialogContent';
+import DialogActions from '@mui/material/DialogActions';
+import CloseIcon from '@mui/icons-material/Close';
+import TextField from '@mui/material/TextField';
+import Box from '@mui/material/Box';
+
+import { formatInTimeZone } from 'date-fns-tz' // format timezone
+
+// for tindakan select
+import OutlinedInput from '@mui/material/OutlinedInput';
+import InputLabel from '@mui/material/InputLabel';
+import MenuItem from '@mui/material/MenuItem';
+import FormControl from '@mui/material/FormControl';
+import ListItemText from '@mui/material/ListItemText';
+import Select from '@mui/material/Select';
+import Checkbox from '@mui/material/Checkbox';
+import Chip from '@mui/material/Chip';
+import Divider from '@mui/material/Divider';
+
+// for dialog
+const BootstrapDialog = styled(Dialog)(({ theme }) => ({
+ '& .MuiDialogContent-root': {
+ padding: theme.spacing(2),
+ },
+ '& .MuiDialogActions-root': {
+ padding: theme.spacing(1),
+ },
+}));
+
+const CustomDisableInput = styled(TextField)(() => ({
+ ".MuiInputBase-input.Mui-disabled": {
+ WebkitTextFillColor: "#000",
+ color: "#000"
+ },
+ // change the mui textfield border color
+ ".MuiOutlinedInput-root.Mui-disabled .MuiOutlinedInput-notchedOutline": {
+ borderColor: "#339AFF"
+ },
+ // change the label color
+ ".MuiInputLabel-root.Mui-disabled": {
+ color: "#339AFF"
+ }
+}));
+
+const BootstrapDialogTitle = (props) => {
+ const { children, onClose, ...other } = props;
+
+ return (
+
+ {children}
+ {onClose ? (
+ theme.palette.grey[500],
+ }}
+ >
+
+
+ ) : null}
+
+ );
+};
+
+// ini untuk select
+const ITEM_HEIGHT = 48;
+const ITEM_PADDING_TOP = 8;
+const MenuProps = {
+ PaperProps: {
+ style: {
+ maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,
+ width: 250,
+ },
+
+ },
+};
+
+const PenjumlahanObat = (props) => {
+ let datanya = props.listObat;
+ let component = [];
+ for (let i = 0; i < datanya.length; i++) {
+ component.push(
+
+
+
+ )
+
+ }
+
+ return (
+ <>
+ {component}
+ >
+ )
+}
+
+function Umur(props) {
+
+ let umur = props.tgl_lahir;
+ let tahun = new Date().getFullYear();
+ let tahun_lahir = umur.substr(0, 4);
+ let umur_ini = tahun - tahun_lahir;
+
+
+
+ return (
+ <>
+ {umur_ini}
+ >
+ )
+}
+
+function TabelJadwalRekamMedis(props) {
+ let component = [];
+
+ const [openDialog, setOpenDialog] = useState(false);
+ const [dataRekamMedis, setDataRekamMedis] = useState(null);
+ const [selectedTindakan, setSelectedTindakan] = useState([]);
+ const [selectedObat, setSelectedObat] = useState([]);
+ const [listObat, setListObat] = useState([]);
+
+ const preview_rekam_medis = async (id_rekam_medis) => {
+ props.backdropnya(true)
+ setDataRekamMedis(null)
+ setSelectedTindakan([])
+ setSelectedObat([])
+ try {
+ const url = process.env.HTTP_URL + "/api/dokter/cek_data_rekam_medis?id=" + id_rekam_medis + "&id_dokter=" + props.user;
+ const response = await fetch(url, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ })
+ const data = await response.json();
+ if (response.status === 200) {
+ setDataRekamMedis(data.data);
+ const tindakan = JSON.parse(data.data.tindakan);
+ if (tindakan.length > 0) {
+ await cek_tindakan(tindakan);
+ }
+ const obat = JSON.parse(data.data.obat);
+ if (obat.length > 0) {
+ await cek_obat(obat);
+ }
+
+ // setSelectedTindakan(tindakan);
+ // console.log(tindakan, "ini tindakan");
+
+
+ setOpenDialog(true);
+ } else {
+ props.errornya(data.message);
+ }
+ } catch (err) {
+ console.log(err)
+ props.errornya("Terjadi kesalahan saat mengambil data rekam medis")
+ }
+ props.backdropnya(false)
+ }
+
+ const cek_tindakan = async (data) => {
+ // console.log(data, "ini data tindakan");
+ try {
+ let tindakan_array = [];
+ for (let i = 0; i < data.length; i++) {
+ let url = process.env.HTTP_URL + "/api/dokter/tindakan?id=" + data[i];
+ const response = await fetch(url, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ })
+
+ const data_tindakan = await response.json();
+ // console.log(data_tindakan, "ini data tindakan");
+ if (response.status === 200) {
+ // tindakan_array.push();
+ let ini_tindakan = data_tindakan.data.nama_tindakan;
+ tindakan_array.push(ini_tindakan);
+ }
+
+ }
+ setSelectedTindakan(tindakan_array);
+ console.log(tindakan_array, "ini tindakan array");
+
+
+ } catch (err) {
+ console.log(err)
+ }
+ }
+
+ const cek_obat = async (data) => {
+ try {
+ let list_obat = [];
+ let selected_obat = [];
+ for (let i = 0; i < data.length; i++) {
+ let url = process.env.HTTP_URL + "/api/dokter/cek_obat?id=" + data[i].id;
+ const response = await fetch(url, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ })
+
+ const data_obat = await response.json();
+ console.log(data_obat, "ini data obat");
+ if (response.status === 200) {
+ // tindakan_array.push();
+ let nama_obat = data_obat.data.nama_obat;
+ list_obat.push({
+ nama_obat: nama_obat,
+ jumlah: data[i].jumlah,
+ });
+ selected_obat.push(nama_obat);
+
+ }
+
+ }
+ setListObat(list_obat);
+ setSelectedObat(selected_obat);
+
+ } catch (err) {
+ console.log(err)
+ }
+ }
+
+
+
+
+ if (props.data.length == 0) {
+ component = (
+
+
+ Tiada Data
+
+
+ )
+ } else {
+ for (let i = 0; i < props.data.length; i++) {
+ let ii = 0;
+ ii = i + 1;
+ component.push(
+
+ {ii}
+ {props.data[i].tb_pasien.nik}
+ {props.data[i].tb_pasien.nama}
+ {props.data[i].tanggal_periksa} | {props.data[i].jam_periksa}
+
+ {props.data[i].tb_pasien.golongan_darah}
+
+ {
+ (props.data[i].diagnosa == '' || props.data[i].diagnosa == null) ?
+ <>
+
+
+
+ > :
+ <>
+ {
+ preview_rekam_medis(props.data[i].id_rekam_medis)
+ }
+ }
+ >
+
+
+ >
+ }
+
+
+ {
+ (props.data[i].diagnosa == '' || props.data[i].diagnosa == null) ?
+ <>
+ {
+ Router.push('/dokter/rekam-medis/data?id=' + props.data[i].id_rekam_medis)
+ }
+ }
+ >
+
+
+ > :
+ <>
+ {
+ preview_rekam_medis(props.data[i].id_rekam_medis)
+ }
+ }>
+
+
+ >
+ }
+
+
+
+ )
+ }
+ }
+
+ return (
+ <>
+ {
+ setOpenDialog(false)
+ }
+ }
+ aria-labelledby="customized-dialog-title"
+ open={openDialog}
+ fullWidth={true}
+ >
+ {
+ setOpenDialog(false)
+ }
+ }>
+ Detail Rekam Medis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ (selectedTindakan.length > 0)
+ ?
+
+ Tindakan
+ }
+ renderValue={(selected) => (
+
+ {selected.map((value) => (
+
+ ))}
+
+ )}
+ MenuProps={MenuProps}
+ >
+ {selectedTindakan.map((name) => (
+
+ -1} />
+
+
+ ))}
+
+
+ :
+ Tiada Tindakan
+ }
+
+
+
+ {
+ (selectedTindakan.length > 0)
+ ?
+ <>
+
+ Obat
+ }
+ renderValue={(selected) => (
+
+ {selected.map((value) => (
+
+ ))}
+
+ )}
+ MenuProps={MenuProps}
+ >
+ {selectedObat.map((name) => (
+
+ -1} />
+
+
+ ))}
+
+
+
+
+ >
+ :
+ Tiada Tindakan
+ }
+
+
+ {
+ setOpenDialog(false)
+ }
+
+ } variant="outlined">
+ Tutup
+
+
+
+ {component}
+ >
+ )
+
+}
+
+export default TabelJadwalRekamMedis
\ No newline at end of file
diff --git a/function/all_function.js b/function/all_function.js
index 0a30910..370178b 100644
--- a/function/all_function.js
+++ b/function/all_function.js
@@ -79,5 +79,211 @@ module.exports = {
} catch (error) {
return false
}
+ },
+ dokter_all : async function() {
+ try {
+ let http_server = process.env.HTTP_URL+"/api/admin/dokter";
+ // console.log(http_server);
+ const response = await fetch(http_server, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ }
+ });
+ const data = await response.json();
+ // console.log(response , "ini response");
+ if(response.status == 200){
+ // console.log(data , "ini data");
+ return data.data;
+ }else{
+ return false;
+ }
+ } catch (error) {
+ return false
+ }
+ },
+ pasien_all : async function() {
+ try {
+ let http_server = process.env.HTTP_URL+"/api/admin/pasien";
+ // console.log(http_server);
+ const response = await fetch(http_server, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ }
+ });
+ const data = await response.json();
+ // console.log(response , "ini response");
+ if(response.status == 200){
+ // console.log(data , "ini data");
+ return data.data;
+ }else{
+ return false;
+ }
+ } catch (error) {
+ return false
+ }
+ },
+ jadwal_dokter_today : async function(){
+ try {
+ // return hari_ini
+ let http_server = process.env.HTTP_URL+"/api/admin/jadwal_dokter";
+ // console.log(http_server);
+ const response = await fetch(http_server, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ }
+ });
+ const data = await response.json();
+ // console.log(response , "ini response");
+ if(response.status == 200){
+ // console.log(data , "ini data");
+ return data.data;
+ }else{
+ return false;
+ }
+ } catch (error) {
+ return false
+ }
+ },
+ jadwal_pasien_today : async function(){
+ try {
+ // return hari_ini
+ let http_server = process.env.HTTP_URL+"/api/admin/jadwal_pasien";
+ // console.log(http_server);
+ const response = await fetch(http_server, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ }
+ });
+ const data = await response.json();
+ // console.log(response , "ini response");
+ if(response.status == 200){
+ // console.log(data , "ini data");
+ return data.data;
+ }else{
+ return false;
+ }
+ } catch (error) {
+ return false
+ }
+ },
+ jadwal_dokter_today_home : async function(){
+ try {
+ // return hari_ini
+ let http_server = process.env.HTTP_URL+"/api/login/jadwal_dokter";
+ // console.log(http_server);
+ const response = await fetch(http_server, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ }
+ });
+ const data = await response.json();
+ // console.log(response , "ini response");
+ if(response.status == 200){
+ // console.log(data , "ini data");
+ return data.data;
+ }else{
+ return false;
+ }
+ } catch (error) {
+ return false
+ }
+ },
+ get_jadwal_dokter : async function(id){
+ try {
+ // return hari_ini
+ let http_server = process.env.HTTP_URL+"/api/dokter/jadwal_dokter?id="+id;
+ // console.log(http_server);
+ const response = await fetch(http_server, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ }
+ });
+ const data = await response.json();
+ // console.log(response , "ini response");
+ if(response.status == 200){
+ // console.log(data , "ini data");
+ return data.data;
+ }else{
+ return false;
+ }
+ } catch (error) {
+ return false
+ }
+ },
+ jadwal_ini_hari : async function(id){
+ try {
+ // return hari_ini
+ let http_server = process.env.HTTP_URL+"/api/dokter/jadwal_ini_hari?id="+id;
+ // console.log(http_server);
+ const response = await fetch(http_server, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ }
+ });
+ const data = await response.json();
+ // console.log(response , "ini response");
+ if(response.status == 200){
+ // console.log(data , "ini data");
+ return data.data;
+ }else{
+ return false;
+ }
+ } catch (error) {
+ return false
+ }
+ },
+ cek_data_rekam_medis : async function(id,id_dokter){
+ try {
+ // return hari_ini
+ let http_server = process.env.HTTP_URL+"/api/dokter/cek_data_rekam_medis?id="+id+"&id_dokter="+id_dokter;
+ // console.log(http_server);
+ const response = await fetch(http_server, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ }
+ });
+ const data = await response.json();
+ // console.log(response , "ini response");
+ if(response.status == 200){
+ // console.log(data , "ini data");
+ return data.data;
+ }else{
+ return false;
+ }
+ } catch (error) {
+ return false
+ }
}
}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 39126cd..0354b5b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,8 +1,6868 @@
{
"name": "rekam_medis",
"version": "0.1.0",
- "lockfileVersion": 1,
+ "lockfileVersion": 2,
"requires": true,
+ "packages": {
+ "": {
+ "name": "rekam_medis",
+ "version": "0.1.0",
+ "dependencies": {
+ "@babel/core": "^7.17.9",
+ "@emotion/react": "^11.9.0",
+ "@emotion/styled": "^11.8.1",
+ "@mui/icons-material": "^5.6.2",
+ "@mui/material": "^5.6.2",
+ "@mui/x-date-pickers": "^5.0.0-alpha.1",
+ "cors": "^2.8.5",
+ "date-fns": "^2.28.0",
+ "date-fns-tz": "^1.3.4",
+ "dotenv": "^16.0.0",
+ "express": "^4.17.3",
+ "express-basic-auth": "^1.2.1",
+ "express-form-data": "^2.0.18",
+ "iron-session": "^6.1.3",
+ "md5": "^2.3.0",
+ "moment": "^2.29.3",
+ "mysql2": "^2.3.3",
+ "next": "12.1.5",
+ "nextjs-progressbar": "0.0.14",
+ "nodemon": "^2.0.15",
+ "prop-types": "^15.8.1",
+ "react": "18.0.0",
+ "react-dom": "18.0.0",
+ "react-number-format": "^4.9.3",
+ "react-toastify": "^8.2.0",
+ "sequelize": "^6.19.0",
+ "sweetalert2": "^11.4.9",
+ "sweetalert2-react-content": "^5.0.0",
+ "typescript": "^4.6.3",
+ "underscore": "^1.13.3",
+ "webpack": "^5.72.0"
+ },
+ "devDependencies": {
+ "eslint": "8.13.0",
+ "eslint-config-next": "12.1.5"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz",
+ "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==",
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
+ "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
+ "dependencies": {
+ "@babel/highlight": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.17.7",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz",
+ "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz",
+ "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==",
+ "dependencies": {
+ "@ampproject/remapping": "^2.1.0",
+ "@babel/code-frame": "^7.16.7",
+ "@babel/generator": "^7.17.9",
+ "@babel/helper-compilation-targets": "^7.17.7",
+ "@babel/helper-module-transforms": "^7.17.7",
+ "@babel/helpers": "^7.17.9",
+ "@babel/parser": "^7.17.9",
+ "@babel/template": "^7.16.7",
+ "@babel/traverse": "^7.17.9",
+ "@babel/types": "^7.17.0",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.1",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/core/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@babel/core/node_modules/json5": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
+ "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@babel/core/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz",
+ "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==",
+ "dependencies": {
+ "@babel/types": "^7.17.0",
+ "jsesc": "^2.5.1",
+ "source-map": "^0.5.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.17.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz",
+ "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==",
+ "dependencies": {
+ "@babel/compat-data": "^7.17.7",
+ "@babel/helper-validator-option": "^7.16.7",
+ "browserslist": "^4.17.5",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz",
+ "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==",
+ "dependencies": {
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz",
+ "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==",
+ "dependencies": {
+ "@babel/template": "^7.16.7",
+ "@babel/types": "^7.17.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz",
+ "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==",
+ "dependencies": {
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz",
+ "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==",
+ "dependencies": {
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.17.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz",
+ "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==",
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.16.7",
+ "@babel/helper-module-imports": "^7.16.7",
+ "@babel/helper-simple-access": "^7.17.7",
+ "@babel/helper-split-export-declaration": "^7.16.7",
+ "@babel/helper-validator-identifier": "^7.16.7",
+ "@babel/template": "^7.16.7",
+ "@babel/traverse": "^7.17.3",
+ "@babel/types": "^7.17.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz",
+ "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.17.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz",
+ "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==",
+ "dependencies": {
+ "@babel/types": "^7.17.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz",
+ "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==",
+ "dependencies": {
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
+ "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz",
+ "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz",
+ "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==",
+ "dependencies": {
+ "@babel/template": "^7.16.7",
+ "@babel/traverse": "^7.17.9",
+ "@babel/types": "^7.17.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz",
+ "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.16.7",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+ },
+ "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz",
+ "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==",
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz",
+ "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz",
+ "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==",
+ "dependencies": {
+ "regenerator-runtime": "^0.13.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/runtime-corejs3": {
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz",
+ "integrity": "sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw==",
+ "dev": true,
+ "dependencies": {
+ "core-js-pure": "^3.20.2",
+ "regenerator-runtime": "^0.13.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz",
+ "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==",
+ "dependencies": {
+ "@babel/code-frame": "^7.16.7",
+ "@babel/parser": "^7.16.7",
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz",
+ "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==",
+ "dependencies": {
+ "@babel/code-frame": "^7.16.7",
+ "@babel/generator": "^7.17.9",
+ "@babel/helper-environment-visitor": "^7.16.7",
+ "@babel/helper-function-name": "^7.17.9",
+ "@babel/helper-hoist-variables": "^7.16.7",
+ "@babel/helper-split-export-declaration": "^7.16.7",
+ "@babel/parser": "^7.17.9",
+ "@babel/types": "^7.17.0",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/@babel/types": {
+ "version": "7.17.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz",
+ "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.16.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@date-io/core": {
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.13.1.tgz",
+ "integrity": "sha512-pVI9nfkf2qClb2Cxdq0Q4zJhdawMG4ybWZUVGifT78FDwzRMX2SwXBb55s5NRJk0HcIicDuxktmCtemZqMH1Zg=="
+ },
+ "node_modules/@date-io/date-fns": {
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/@date-io/date-fns/-/date-fns-2.13.1.tgz",
+ "integrity": "sha512-8fmfwjiLMpFLD+t4NBwDx0eblWnNcgt4NgfT/uiiQTGI81fnPu9tpBMYdAcuWxaV7LLpXgzLBx1SYWAMDVUDQQ==",
+ "dependencies": {
+ "@date-io/core": "^2.13.1"
+ },
+ "peerDependencies": {
+ "date-fns": "^2.0.0"
+ },
+ "peerDependenciesMeta": {
+ "date-fns": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@date-io/dayjs": {
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/@date-io/dayjs/-/dayjs-2.13.1.tgz",
+ "integrity": "sha512-5bL4WWWmlI4uGZVScANhHJV7Mjp93ec2gNeUHDqqLaMZhp51S0NgD25oqj/k0LqBn1cdU2MvzNpk/ObMmVv5cQ==",
+ "dependencies": {
+ "@date-io/core": "^2.13.1"
+ },
+ "peerDependencies": {
+ "dayjs": "^1.8.17"
+ },
+ "peerDependenciesMeta": {
+ "dayjs": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@date-io/luxon": {
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/@date-io/luxon/-/luxon-2.13.1.tgz",
+ "integrity": "sha512-yG+uM7lXfwLyKKEwjvP8oZ7qblpmfl9gxQYae55ifbwiTs0CoCTkYkxEaQHGkYtTqGTzLqcb0O9Pzx6vgWg+yg==",
+ "dependencies": {
+ "@date-io/core": "^2.13.1"
+ },
+ "peerDependencies": {
+ "luxon": "^1.21.3 || ^2.x"
+ },
+ "peerDependenciesMeta": {
+ "luxon": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@date-io/moment": {
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/@date-io/moment/-/moment-2.13.1.tgz",
+ "integrity": "sha512-XX1X/Tlvl3TdqQy2j0ZUtEJV6Rl8tOyc5WOS3ki52He28Uzme4Ro/JuPWTMBDH63weSWIZDlbR7zBgp3ZA2y1A==",
+ "dependencies": {
+ "@date-io/core": "^2.13.1"
+ },
+ "peerDependencies": {
+ "moment": "^2.24.0"
+ },
+ "peerDependenciesMeta": {
+ "moment": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@emotion/babel-plugin": {
+ "version": "11.9.2",
+ "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.9.2.tgz",
+ "integrity": "sha512-Pr/7HGH6H6yKgnVFNEj2MVlreu3ADqftqjqwUvDy/OJzKFgxKeTQ+eeUf20FOTuHVkDON2iNa25rAXVYtWJCjw==",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.12.13",
+ "@babel/plugin-syntax-jsx": "^7.12.13",
+ "@babel/runtime": "^7.13.10",
+ "@emotion/hash": "^0.8.0",
+ "@emotion/memoize": "^0.7.5",
+ "@emotion/serialize": "^1.0.2",
+ "babel-plugin-macros": "^2.6.1",
+ "convert-source-map": "^1.5.0",
+ "escape-string-regexp": "^4.0.0",
+ "find-root": "^1.1.0",
+ "source-map": "^0.5.7",
+ "stylis": "4.0.13"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@emotion/cache": {
+ "version": "11.7.1",
+ "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.7.1.tgz",
+ "integrity": "sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==",
+ "dependencies": {
+ "@emotion/memoize": "^0.7.4",
+ "@emotion/sheet": "^1.1.0",
+ "@emotion/utils": "^1.0.0",
+ "@emotion/weak-memoize": "^0.2.5",
+ "stylis": "4.0.13"
+ }
+ },
+ "node_modules/@emotion/hash": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz",
+ "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow=="
+ },
+ "node_modules/@emotion/is-prop-valid": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.2.tgz",
+ "integrity": "sha512-3QnhqeL+WW88YjYbQL5gUIkthuMw7a0NGbZ7wfFVk2kg/CK5w8w5FFa0RzWjyY1+sujN0NWbtSHH6OJmWHtJpQ==",
+ "dependencies": {
+ "@emotion/memoize": "^0.7.4"
+ }
+ },
+ "node_modules/@emotion/memoize": {
+ "version": "0.7.5",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz",
+ "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ=="
+ },
+ "node_modules/@emotion/react": {
+ "version": "11.9.0",
+ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.9.0.tgz",
+ "integrity": "sha512-lBVSF5d0ceKtfKCDQJveNAtkC7ayxpVlgOohLgXqRwqWr9bOf4TZAFFyIcNngnV6xK6X4x2ZeXq7vliHkoVkxQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@emotion/babel-plugin": "^11.7.1",
+ "@emotion/cache": "^11.7.1",
+ "@emotion/serialize": "^1.0.3",
+ "@emotion/utils": "^1.1.0",
+ "@emotion/weak-memoize": "^0.2.5",
+ "hoist-non-react-statics": "^3.3.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0",
+ "react": ">=16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ },
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@emotion/serialize": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.3.tgz",
+ "integrity": "sha512-2mSSvgLfyV3q+iVh3YWgNlUc2a9ZlDU7DjuP5MjK3AXRR0dYigCrP99aeFtaB2L/hjfEZdSThn5dsZ0ufqbvsA==",
+ "dependencies": {
+ "@emotion/hash": "^0.8.0",
+ "@emotion/memoize": "^0.7.4",
+ "@emotion/unitless": "^0.7.5",
+ "@emotion/utils": "^1.0.0",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@emotion/sheet": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.1.0.tgz",
+ "integrity": "sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g=="
+ },
+ "node_modules/@emotion/styled": {
+ "version": "11.8.1",
+ "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.8.1.tgz",
+ "integrity": "sha512-OghEVAYBZMpEquHZwuelXcRjRJQOVayvbmNR0zr174NHdmMgrNkLC6TljKC5h9lZLkN5WGrdUcrKlOJ4phhoTQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@emotion/babel-plugin": "^11.7.1",
+ "@emotion/is-prop-valid": "^1.1.2",
+ "@emotion/serialize": "^1.0.2",
+ "@emotion/utils": "^1.1.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0",
+ "@emotion/react": "^11.0.0-rc.0",
+ "react": ">=16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ },
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@emotion/unitless": {
+ "version": "0.7.5",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
+ "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
+ },
+ "node_modules/@emotion/utils": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.1.0.tgz",
+ "integrity": "sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ=="
+ },
+ "node_modules/@emotion/weak-memoize": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz",
+ "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA=="
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz",
+ "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.3.1",
+ "globals": "^13.9.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.0.4",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@hapi/b64": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-5.0.0.tgz",
+ "integrity": "sha512-ngu0tSEmrezoiIaNGG6rRvKOUkUuDdf4XTPnONHGYfSGRmDqPZX5oJL6HAdKTo1UQHECbdB4OzhWrfgVppjHUw==",
+ "dependencies": {
+ "@hapi/hoek": "9.x.x"
+ }
+ },
+ "node_modules/@hapi/boom": {
+ "version": "9.1.4",
+ "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.4.tgz",
+ "integrity": "sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==",
+ "dependencies": {
+ "@hapi/hoek": "9.x.x"
+ }
+ },
+ "node_modules/@hapi/bourne": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz",
+ "integrity": "sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q=="
+ },
+ "node_modules/@hapi/cryptiles": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-5.1.0.tgz",
+ "integrity": "sha512-fo9+d1Ba5/FIoMySfMqPBR/7Pa29J2RsiPrl7bkwo5W5o+AN1dAYQRi4SPrPwwVxVGKjgLOEWrsvt1BonJSfLA==",
+ "dependencies": {
+ "@hapi/boom": "9.x.x"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@hapi/hoek": {
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz",
+ "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw=="
+ },
+ "node_modules/@hapi/iron": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@hapi/iron/-/iron-6.0.0.tgz",
+ "integrity": "sha512-zvGvWDufiTGpTJPG1Y/McN8UqWBu0k/xs/7l++HVU535NLHXsHhy54cfEMdW7EjwKfbBfM9Xy25FmTiobb7Hvw==",
+ "dependencies": {
+ "@hapi/b64": "5.x.x",
+ "@hapi/boom": "9.x.x",
+ "@hapi/bourne": "2.x.x",
+ "@hapi/cryptiles": "5.x.x",
+ "@hapi/hoek": "9.x.x"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.9.5",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz",
+ "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==",
+ "dev": true,
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^1.2.1",
+ "debug": "^4.1.1",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@humanwhocodes/config-array/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
+ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
+ "dev": true
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz",
+ "integrity": "sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.11",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz",
+ "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg=="
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
+ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.0.3",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
+ }
+ },
+ "node_modules/@mui/base": {
+ "version": "5.0.0-alpha.77",
+ "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.77.tgz",
+ "integrity": "sha512-Zqm3qlczGViD3lJSYo8ZnQLHJ3PwGYftbDfVuh2Rq5OD88F7H6oDILlqknzty59NDkeSVO2qlymYmHOY1nLodg==",
+ "dependencies": {
+ "@babel/runtime": "^7.17.2",
+ "@emotion/is-prop-valid": "^1.1.2",
+ "@mui/types": "^7.1.3",
+ "@mui/utils": "^5.6.1",
+ "@popperjs/core": "^2.11.5",
+ "clsx": "^1.1.1",
+ "prop-types": "^15.7.2",
+ "react-is": "^17.0.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui"
+ },
+ "peerDependencies": {
+ "@types/react": "^17.0.0 || ^18.0.0",
+ "react": "^17.0.0 || ^18.0.0",
+ "react-dom": "^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/base/node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
+ },
+ "node_modules/@mui/icons-material": {
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.6.2.tgz",
+ "integrity": "sha512-9QdI7axKuBAyaGz4mtdi7Uy1j73/thqFmEuxpJHxNC7O8ADEK1Da3t2veK2tgmsXsUlAHcAG63gg+GvWWeQNqQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.17.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui"
+ },
+ "peerDependencies": {
+ "@mui/material": "^5.0.0",
+ "@types/react": "^17.0.0 || ^18.0.0",
+ "react": "^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/material": {
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.6.2.tgz",
+ "integrity": "sha512-bwMvroBrMgUTwUh/BcjhtcJwEw9uH4chV3+ZSj6RckOJtMj8U4yEeD7S4NgHE8Ioj5eObKFzHpih/cTD1sDRpg==",
+ "dependencies": {
+ "@babel/runtime": "^7.17.2",
+ "@mui/base": "5.0.0-alpha.77",
+ "@mui/system": "^5.6.2",
+ "@mui/types": "^7.1.3",
+ "@mui/utils": "^5.6.1",
+ "@types/react-transition-group": "^4.4.4",
+ "clsx": "^1.1.1",
+ "csstype": "^3.0.11",
+ "hoist-non-react-statics": "^3.3.2",
+ "prop-types": "^15.7.2",
+ "react-is": "^17.0.2",
+ "react-transition-group": "^4.4.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.5.0",
+ "@emotion/styled": "^11.3.0",
+ "@types/react": "^17.0.0 || ^18.0.0",
+ "react": "^17.0.0 || ^18.0.0",
+ "react-dom": "^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/react": {
+ "optional": true
+ },
+ "@emotion/styled": {
+ "optional": true
+ },
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/material/node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
+ },
+ "node_modules/@mui/private-theming": {
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.6.2.tgz",
+ "integrity": "sha512-IbrSfFXfiZdyhRMC2bgGTFtb16RBQ5mccmjeh3MtAERWuepiCK7gkW5D9WhEsfTu6iez+TEjeUKSgmMHlsM2mg==",
+ "dependencies": {
+ "@babel/runtime": "^7.17.2",
+ "@mui/utils": "^5.6.1",
+ "prop-types": "^15.7.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui"
+ },
+ "peerDependencies": {
+ "@types/react": "^17.0.0 || ^18.0.0",
+ "react": "^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/styled-engine": {
+ "version": "5.6.1",
+ "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.6.1.tgz",
+ "integrity": "sha512-jEhH6TBY8jc9S8yVncXmoTYTbATjEu44RMFXj6sIYfKr5NArVwTwRo3JexLL0t3BOAiYM4xsFLgfKEIvB9SAeQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.17.2",
+ "@emotion/cache": "^11.7.1",
+ "prop-types": "^15.7.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.4.1",
+ "@emotion/styled": "^11.3.0",
+ "react": "^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/react": {
+ "optional": true
+ },
+ "@emotion/styled": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/system": {
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.6.2.tgz",
+ "integrity": "sha512-Wg9TRbvavSwEYk6UdpnoDx+CqJfaAN7AzlmwEx7DtGmx0snFVBST8FVb1Ev1vXosxEnq6/fe7ZDRobFVewvEPQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.17.2",
+ "@mui/private-theming": "^5.6.2",
+ "@mui/styled-engine": "^5.6.1",
+ "@mui/types": "^7.1.3",
+ "@mui/utils": "^5.6.1",
+ "clsx": "^1.1.1",
+ "csstype": "^3.0.11",
+ "prop-types": "^15.7.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.5.0",
+ "@emotion/styled": "^11.3.0",
+ "@types/react": "^17.0.0 || ^18.0.0",
+ "react": "^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/react": {
+ "optional": true
+ },
+ "@emotion/styled": {
+ "optional": true
+ },
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/types": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.1.3.tgz",
+ "integrity": "sha512-DDF0UhMBo4Uezlk+6QxrlDbchF79XG6Zs0zIewlR4c0Dt6GKVFfUtzPtHCH1tTbcSlq/L2bGEdiaoHBJ9Y1gSA==",
+ "peerDependencies": {
+ "@types/react": "*"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/utils": {
+ "version": "5.6.1",
+ "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.6.1.tgz",
+ "integrity": "sha512-CPrzrkiBusCZBLWu0Sg5MJvR3fKJyK3gKecLVX012LULyqg2U64Oz04BKhfkbtBrPBbSQxM+DWW9B1c9hmV9nQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.17.2",
+ "@types/prop-types": "^15.7.4",
+ "@types/react-is": "^16.7.1 || ^17.0.0",
+ "prop-types": "^15.7.2",
+ "react-is": "^17.0.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui"
+ },
+ "peerDependencies": {
+ "react": "^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@mui/utils/node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
+ },
+ "node_modules/@mui/x-date-pickers": {
+ "version": "5.0.0-alpha.1",
+ "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-5.0.0-alpha.1.tgz",
+ "integrity": "sha512-dLPkRiIn2Gr0momblxiOnIwrxn4SijVix+8e08mwAGWhiWcmWep1O9XTRDpZsjB0kjHYCf+kZjlRX4dxnj2acg==",
+ "dependencies": {
+ "@date-io/date-fns": "^2.11.0",
+ "@date-io/dayjs": "^2.11.0",
+ "@date-io/luxon": "^2.11.1",
+ "@date-io/moment": "^2.11.0",
+ "@mui/utils": "^5.6.0",
+ "clsx": "^1.1.1",
+ "prop-types": "^15.7.2",
+ "react-transition-group": "^4.4.2",
+ "rifm": "^0.12.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui"
+ },
+ "peerDependencies": {
+ "@mui/material": "^5.2.3",
+ "@mui/system": "^5.2.3",
+ "date-fns": "^2.25.0",
+ "dayjs": "^1.10.7",
+ "luxon": "^1.28.0 || ^2.0.0",
+ "moment": "^2.29.1",
+ "react": "^17.0.2 || ^18.0.0",
+ "react-dom": "^17.0.2 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "date-fns": {
+ "optional": true
+ },
+ "dayjs": {
+ "optional": true
+ },
+ "luxon": {
+ "optional": true
+ },
+ "moment": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@next/env": {
+ "version": "12.1.5",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.5.tgz",
+ "integrity": "sha512-+34yUJslfJi7Lyx6ELuN8nWcOzi27izfYnZIC1Dqv7kmmfiBVxgzR3BXhlvEMTKC2IRJhXVs2FkMY+buQe3k7Q=="
+ },
+ "node_modules/@next/eslint-plugin-next": {
+ "version": "12.1.5",
+ "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.1.5.tgz",
+ "integrity": "sha512-Cnb8ERC5bNKBFrnMH6203sp/b0Y78QRx1XsFu+86oBtDBmQmOFoHu7teQjHm69ER73XKK3aGaeoLiXacHoUFsg==",
+ "dev": true,
+ "dependencies": {
+ "glob": "7.1.7"
+ }
+ },
+ "node_modules/@next/eslint-plugin-next/node_modules/glob": {
+ "version": "7.1.7",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+ "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@next/swc-android-arm-eabi": {
+ "version": "12.1.5",
+ "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.5.tgz",
+ "integrity": "sha512-SKnGTdYcoN04Y2DvE0/Y7/MjkA+ltsmbuH/y/hR7Ob7tsj+8ZdOYuk+YvW1B8dY20nDPHP58XgDTSm2nA8BzzA==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-android-arm64": {
+ "version": "12.1.5",
+ "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.5.tgz",
+ "integrity": "sha512-YXiqgQ/9Rxg1dXp6brXbeQM1JDx9SwUY/36JiE+36FXqYEmDYbxld9qkX6GEzkc5rbwJ+RCitargnzEtwGW0mw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-darwin-arm64": {
+ "version": "12.1.5",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.5.tgz",
+ "integrity": "sha512-y8mhldb/WFZ6lFeowkGfi0cO/lBdiBqDk4T4LZLvCpoQp4Or/NzUN6P5NzBQZ5/b4oUHM/wQICEM+1wKA4qIVw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-darwin-x64": {
+ "version": "12.1.5",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.5.tgz",
+ "integrity": "sha512-wqJ3X7WQdTwSGi0kIDEmzw34QHISRIQ5uvC+VXmsIlCPFcMA+zM5723uh8NfuKGquDMiEMS31a83QgkuHMYbwQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm-gnueabihf": {
+ "version": "12.1.5",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.5.tgz",
+ "integrity": "sha512-WnhdM5duONMvt2CncAl+9pim0wBxDS2lHoo7ub/o/i1bRbs11UTzosKzEXVaTDCUkCX2c32lIDi1WcN2ZPkcdw==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-gnu": {
+ "version": "12.1.5",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.5.tgz",
+ "integrity": "sha512-Jq2H68yQ4bLUhR/XQnbw3LDW0GMQn355qx6rU36BthDLeGue7YV7MqNPa8GKvrpPocEMW77nWx/1yI6w6J07gw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-musl": {
+ "version": "12.1.5",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.5.tgz",
+ "integrity": "sha512-KgPjwdbhDqXI7ghNN8V/WAiLquc9Ebe8KBrNNEL0NQr+yd9CyKJ6KqjayVkmX+hbHzbyvbui/5wh/p3CZQ9xcQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-gnu": {
+ "version": "12.1.5",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.5.tgz",
+ "integrity": "sha512-O2ErUTvCJ6DkNTSr9pbu1n3tcqykqE/ebty1rwClzIYdOgpB3T2MfEPP+K7GhUR87wmN/hlihO9ch7qpVFDGKw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-musl": {
+ "version": "12.1.5",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.5.tgz",
+ "integrity": "sha512-1eIlZmlO/VRjxxzUBcVosf54AFU3ltAzHi+BJA+9U/lPxCYIsT+R4uO3QksRzRjKWhVQMRjEnlXyyq5SKJm7BA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-arm64-msvc": {
+ "version": "12.1.5",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.5.tgz",
+ "integrity": "sha512-oromsfokbEuVb0CBLLE7R9qX3KGXucZpsojLpzUh1QJjuy1QkrPJncwr8xmWQnwgtQ6ecMWXgXPB+qtvizT9Tw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-ia32-msvc": {
+ "version": "12.1.5",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.5.tgz",
+ "integrity": "sha512-a/51L5KzBpeZSW9LbekMo3I3Cwul+V+QKwbEIMA+Qwb2qrlcn1L9h3lt8cHqNTFt2y72ce6aTwDTw1lyi5oIRA==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-x64-msvc": {
+ "version": "12.1.5",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.5.tgz",
+ "integrity": "sha512-/SoXW1Ntpmpw3AXAzfDRaQidnd8kbZ2oSni8u5z0yw6t4RwJvmdZy1eOaAADRThWKV+2oU90++LSnXJIwBRWYQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@popperjs/core": {
+ "version": "2.11.5",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz",
+ "integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
+ "node_modules/@rushstack/eslint-patch": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.0.8.tgz",
+ "integrity": "sha512-ZK5v4bJwgXldAUA8r3q9YKfCwOqoHTK/ZqRjSeRXQrBXWouoPnS4MQtgC4AXGiiBuUu5wxrRgTlv0ktmM4P1Aw==",
+ "dev": true
+ },
+ "node_modules/@sindresorhus/is": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
+ "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@szmarczak/http-timer": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
+ "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
+ "dependencies": {
+ "defer-to-connect": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@types/body-parser": {
+ "version": "1.19.2",
+ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
+ "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==",
+ "dependencies": {
+ "@types/connect": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/connect": {
+ "version": "3.4.35",
+ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
+ "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/cookie": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz",
+ "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g=="
+ },
+ "node_modules/@types/debug": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz",
+ "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==",
+ "dependencies": {
+ "@types/ms": "*"
+ }
+ },
+ "node_modules/@types/eslint": {
+ "version": "8.4.1",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz",
+ "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==",
+ "dependencies": {
+ "@types/estree": "*",
+ "@types/json-schema": "*"
+ }
+ },
+ "node_modules/@types/eslint-scope": {
+ "version": "3.7.3",
+ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz",
+ "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==",
+ "dependencies": {
+ "@types/eslint": "*",
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "0.0.51",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz",
+ "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ=="
+ },
+ "node_modules/@types/express": {
+ "version": "4.17.13",
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz",
+ "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==",
+ "dependencies": {
+ "@types/body-parser": "*",
+ "@types/express-serve-static-core": "^4.17.18",
+ "@types/qs": "*",
+ "@types/serve-static": "*"
+ }
+ },
+ "node_modules/@types/express-serve-static-core": {
+ "version": "4.17.28",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz",
+ "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==",
+ "dependencies": {
+ "@types/node": "*",
+ "@types/qs": "*",
+ "@types/range-parser": "*"
+ }
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.11",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
+ "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ=="
+ },
+ "node_modules/@types/json5": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
+ "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
+ "dev": true
+ },
+ "node_modules/@types/mime": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
+ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
+ },
+ "node_modules/@types/ms": {
+ "version": "0.7.31",
+ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz",
+ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA=="
+ },
+ "node_modules/@types/node": {
+ "version": "17.0.25",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.25.tgz",
+ "integrity": "sha512-wANk6fBrUwdpY4isjWrKTufkrXdu1D2YHCot2fD/DfWxF5sMrVSA+KN7ydckvaTCh0HiqX9IVl0L5/ZoXg5M7w=="
+ },
+ "node_modules/@types/parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
+ },
+ "node_modules/@types/prop-types": {
+ "version": "15.7.5",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
+ },
+ "node_modules/@types/qs": {
+ "version": "6.9.7",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
+ "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
+ },
+ "node_modules/@types/range-parser": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz",
+ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw=="
+ },
+ "node_modules/@types/react": {
+ "version": "18.0.6",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.6.tgz",
+ "integrity": "sha512-bPqwzJRzKtfI0mVYr5R+1o9BOE8UEXefwc1LwcBtfnaAn6OoqMhLa/91VA8aeWfDPJt1kHvYKI8RHcQybZLHHA==",
+ "dependencies": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/react-is": {
+ "version": "17.0.3",
+ "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz",
+ "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==",
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
+ "node_modules/@types/react-transition-group": {
+ "version": "4.4.4",
+ "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz",
+ "integrity": "sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug==",
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
+ "node_modules/@types/scheduler": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
+ },
+ "node_modules/@types/serve-static": {
+ "version": "1.13.10",
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz",
+ "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==",
+ "dependencies": {
+ "@types/mime": "^1",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/validator": {
+ "version": "13.7.2",
+ "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.2.tgz",
+ "integrity": "sha512-KFcchQ3h0OPQgFirBRPZr5F/sVjxZsOrQHedj3zi8AH3Zv/hOLx2OLR4hxR5HcfoU+33n69ZuOfzthKVdMoTiw=="
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "5.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.10.1.tgz",
+ "integrity": "sha512-GReo3tjNBwR5RnRO0K2wDIDN31cM3MmDtgyQ85oAxAmC5K3j/g85IjP+cDfcqDsDDBf1HNKQAD0WqOYL8jXqUA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "5.10.1",
+ "@typescript-eslint/types": "5.10.1",
+ "@typescript-eslint/typescript-estree": "5.10.1",
+ "debug": "^4.3.2"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/parser/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/parser/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "5.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.10.1.tgz",
+ "integrity": "sha512-Lyvi559Gvpn94k7+ElXNMEnXu/iundV5uFmCUNnftbFrUbAJ1WBoaGgkbOBm07jVZa682oaBU37ao/NGGX4ZDg==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.10.1",
+ "@typescript-eslint/visitor-keys": "5.10.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "5.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.10.1.tgz",
+ "integrity": "sha512-ZvxQ2QMy49bIIBpTqFiOenucqUyjTQ0WNLhBM6X1fh1NNlYAC6Kxsx8bRTY3jdYsYg44a0Z/uEgQkohbR0H87Q==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "5.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.1.tgz",
+ "integrity": "sha512-PwIGnH7jIueXv4opcwEbVGDATjGPO1dx9RkUl5LlHDSe+FXxPwFL5W/qYd5/NHr7f6lo/vvTrAzd0KlQtRusJQ==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.10.1",
+ "@typescript-eslint/visitor-keys": "5.10.1",
+ "debug": "^4.3.2",
+ "globby": "^11.0.4",
+ "is-glob": "^4.0.3",
+ "semver": "^7.3.5",
+ "tsutils": "^3.21.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
+ "version": "7.3.7",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+ "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "5.10.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.1.tgz",
+ "integrity": "sha512-NjQ0Xinhy9IL979tpoTRuLKxMc0zJC7QVSdeerXs2/QvOy2yRkzX5dRb10X5woNUdJgU8G3nYRDlI33sq1K4YQ==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.10.1",
+ "eslint-visitor-keys": "^3.0.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@webassemblyjs/ast": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
+ "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==",
+ "dependencies": {
+ "@webassemblyjs/helper-numbers": "1.11.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.1"
+ }
+ },
+ "node_modules/@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz",
+ "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ=="
+ },
+ "node_modules/@webassemblyjs/helper-api-error": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz",
+ "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg=="
+ },
+ "node_modules/@webassemblyjs/helper-buffer": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz",
+ "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA=="
+ },
+ "node_modules/@webassemblyjs/helper-numbers": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz",
+ "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==",
+ "dependencies": {
+ "@webassemblyjs/floating-point-hex-parser": "1.11.1",
+ "@webassemblyjs/helper-api-error": "1.11.1",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz",
+ "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q=="
+ },
+ "node_modules/@webassemblyjs/helper-wasm-section": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz",
+ "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.1",
+ "@webassemblyjs/helper-buffer": "1.11.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
+ "@webassemblyjs/wasm-gen": "1.11.1"
+ }
+ },
+ "node_modules/@webassemblyjs/ieee754": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz",
+ "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==",
+ "dependencies": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "node_modules/@webassemblyjs/leb128": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz",
+ "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==",
+ "dependencies": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/utf8": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz",
+ "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ=="
+ },
+ "node_modules/@webassemblyjs/wasm-edit": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz",
+ "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.1",
+ "@webassemblyjs/helper-buffer": "1.11.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
+ "@webassemblyjs/helper-wasm-section": "1.11.1",
+ "@webassemblyjs/wasm-gen": "1.11.1",
+ "@webassemblyjs/wasm-opt": "1.11.1",
+ "@webassemblyjs/wasm-parser": "1.11.1",
+ "@webassemblyjs/wast-printer": "1.11.1"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-gen": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz",
+ "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
+ "@webassemblyjs/ieee754": "1.11.1",
+ "@webassemblyjs/leb128": "1.11.1",
+ "@webassemblyjs/utf8": "1.11.1"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-opt": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz",
+ "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.1",
+ "@webassemblyjs/helper-buffer": "1.11.1",
+ "@webassemblyjs/wasm-gen": "1.11.1",
+ "@webassemblyjs/wasm-parser": "1.11.1"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-parser": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz",
+ "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.1",
+ "@webassemblyjs/helper-api-error": "1.11.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
+ "@webassemblyjs/ieee754": "1.11.1",
+ "@webassemblyjs/leb128": "1.11.1",
+ "@webassemblyjs/utf8": "1.11.1"
+ }
+ },
+ "node_modules/@webassemblyjs/wast-printer": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz",
+ "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.1",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA=="
+ },
+ "node_modules/@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="
+ },
+ "node_modules/abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.7.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
+ "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-import-assertions": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
+ "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
+ "peerDependencies": {
+ "acorn": "^8"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
+ "node_modules/ansi-align": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
+ "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
+ "dependencies": {
+ "string-width": "^4.1.0"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
+ "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/aria-query": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz",
+ "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.10.2",
+ "@babel/runtime-corejs3": "^7.10.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
+ },
+ "node_modules/array-includes": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz",
+ "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1",
+ "get-intrinsic": "^1.1.1",
+ "is-string": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/array.prototype.flat": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz",
+ "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.2",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flatmap": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz",
+ "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.2",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/ast-types-flow": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
+ "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=",
+ "dev": true
+ },
+ "node_modules/at-least-node": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/axe-core": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz",
+ "integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/axobject-query": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
+ "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==",
+ "dev": true
+ },
+ "node_modules/babel-plugin-macros": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz",
+ "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "cosmiconfig": "^6.0.0",
+ "resolve": "^1.12.0"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ },
+ "node_modules/basic-auth": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
+ "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
+ "dependencies": {
+ "safe-buffer": "5.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/basic-auth/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/body-parser": {
+ "version": "1.19.2",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz",
+ "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "http-errors": "1.8.1",
+ "iconv-lite": "0.4.24",
+ "on-finished": "~2.3.0",
+ "qs": "6.9.7",
+ "raw-body": "2.4.3",
+ "type-is": "~1.6.18"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/boxen": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz",
+ "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==",
+ "dependencies": {
+ "ansi-align": "^3.0.0",
+ "camelcase": "^6.2.0",
+ "chalk": "^4.1.0",
+ "cli-boxes": "^2.2.1",
+ "string-width": "^4.2.2",
+ "type-fest": "^0.20.2",
+ "widest-line": "^3.1.0",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.20.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz",
+ "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ }
+ ],
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001317",
+ "electron-to-chromium": "^1.4.84",
+ "escalade": "^3.1.1",
+ "node-releases": "^2.0.2",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/cacheable-request": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
+ "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
+ "dependencies": {
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^3.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^4.1.0",
+ "responselike": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cacheable-request/node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cacheable-request/node_modules/lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001332",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz",
+ "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ }
+ ]
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/chalk/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/chalk/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/charenc": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
+ "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chrome-trace-event": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
+ "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/ci-info": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="
+ },
+ "node_modules/cli-boxes": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
+ "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/clone-response": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
+ "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
+ "dependencies": {
+ "mimic-response": "^1.0.0"
+ }
+ },
+ "node_modules/clsx": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz",
+ "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+ },
+ "node_modules/configstore": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
+ "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
+ "dependencies": {
+ "dot-prop": "^5.2.0",
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^3.0.0",
+ "unique-string": "^2.0.0",
+ "write-file-atomic": "^3.0.0",
+ "xdg-basedir": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/connect-multiparty": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/connect-multiparty/-/connect-multiparty-2.2.0.tgz",
+ "integrity": "sha512-zKcpA7cuXGEhuw9Pz7JmVCFmp85jzGLGm/iiagXTwyEAJp4ypLPtRS/V4IGuGb9KjjrgHBs6P/gDCpZHnFzksA==",
+ "dependencies": {
+ "http-errors": "~1.7.0",
+ "multiparty": "~4.2.1",
+ "on-finished": "~2.3.0",
+ "qs": "~6.5.2",
+ "type-is": "~1.6.16"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/connect-multiparty/node_modules/http-errors": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
+ "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
+ "dependencies": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.1.1",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/connect-multiparty/node_modules/qs": {
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
+ "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/connect-multiparty/node_modules/setprototypeof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
+ },
+ "node_modules/connect-multiparty/node_modules/toidentifier": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/convert-source-map": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
+ "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
+ "dependencies": {
+ "safe-buffer": "~5.1.1"
+ }
+ },
+ "node_modules/convert-source-map/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/cookie": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
+ "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
+ },
+ "node_modules/core-js-pure": {
+ "version": "3.22.2",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.2.tgz",
+ "integrity": "sha512-Lb+/XT4WC4PaCWWtZpNPaXmjiNDUe5CJuUtbkMrIM1kb1T/jJoAIp+bkVP/r5lHzMr+ZAAF8XHp7+my6Ol0ysQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/cosmiconfig": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
+ "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
+ "dependencies": {
+ "@types/parse-json": "^4.0.0",
+ "import-fresh": "^3.1.0",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0",
+ "yaml": "^1.7.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/crypt": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
+ "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/crypto-random-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
+ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz",
+ "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw=="
+ },
+ "node_modules/damerau-levenshtein": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
+ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
+ "dev": true
+ },
+ "node_modules/date-fns": {
+ "version": "2.28.0",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz",
+ "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==",
+ "engines": {
+ "node": ">=0.11"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/date-fns"
+ }
+ },
+ "node_modules/date-fns-tz": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-1.3.4.tgz",
+ "integrity": "sha512-O47vEyz85F2ax/ZdhMBJo187RivZGjH6V0cPjPzpm/yi6YffJg4upD/8ibezO11ezZwP3QYlBHh/t4JhRNx0Ow==",
+ "peerDependencies": {
+ "date-fns": ">=2.0.0"
+ }
+ },
+ "node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/decompress-response": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
+ "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
+ "dependencies": {
+ "mimic-response": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/defer-to-connect": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
+ "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ=="
+ },
+ "node_modules/define-properties": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
+ "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
+ "dev": true,
+ "dependencies": {
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/denque": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz",
+ "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==",
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/dom-helpers": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+ "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
+ "dependencies": {
+ "@babel/runtime": "^7.8.7",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/dot-prop": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
+ "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+ "dependencies": {
+ "is-obj": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dotenv": {
+ "version": "16.0.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.0.tgz",
+ "integrity": "sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/dottie": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz",
+ "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg=="
+ },
+ "node_modules/duplexer3": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
+ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI="
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.118",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.118.tgz",
+ "integrity": "sha512-maZIKjnYDvF7Fs35nvVcyr44UcKNwybr93Oba2n3HkKDFAtk0svERkLN/HyczJDS3Fo4wU9th9fUQd09ZLtj1w=="
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+ },
+ "node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.9.3",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz",
+ "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==",
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/es-abstract": {
+ "version": "1.19.5",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz",
+ "integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.1.1",
+ "get-symbol-description": "^1.0.0",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.3",
+ "is-callable": "^1.2.4",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "is-string": "^1.0.7",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.12.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.2",
+ "string.prototype.trimend": "^1.0.4",
+ "string.prototype.trimstart": "^1.0.4",
+ "unbox-primitive": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
+ "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ=="
+ },
+ "node_modules/es-shim-unscopables": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
+ "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
+ "dev": true,
+ "dependencies": {
+ "has": "^1.0.3"
+ }
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-goat": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz",
+ "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.13.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.13.0.tgz",
+ "integrity": "sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ==",
+ "dev": true,
+ "dependencies": {
+ "@eslint/eslintrc": "^1.2.1",
+ "@humanwhocodes/config-array": "^0.9.2",
+ "ajv": "^6.10.0",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.1.1",
+ "eslint-utils": "^3.0.0",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.3.1",
+ "esquery": "^1.4.0",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "functional-red-black-tree": "^1.0.1",
+ "glob-parent": "^6.0.1",
+ "globals": "^13.6.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.0.4",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.1",
+ "regexpp": "^3.2.0",
+ "strip-ansi": "^6.0.1",
+ "strip-json-comments": "^3.1.0",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-config-next": {
+ "version": "12.1.5",
+ "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.1.5.tgz",
+ "integrity": "sha512-P+DCt5ti63KhC0qNLzrAmPcwRGq8pYqgcf/NNr1E+WjCrMkWdCAXkIANTquo+kcO1adR2k1lTo5GCrNUtKy4hQ==",
+ "dev": true,
+ "dependencies": {
+ "@next/eslint-plugin-next": "12.1.5",
+ "@rushstack/eslint-patch": "1.0.8",
+ "@typescript-eslint/parser": "5.10.1",
+ "eslint-import-resolver-node": "0.3.4",
+ "eslint-import-resolver-typescript": "2.4.0",
+ "eslint-plugin-import": "2.25.2",
+ "eslint-plugin-jsx-a11y": "6.5.1",
+ "eslint-plugin-react": "7.29.1",
+ "eslint-plugin-react-hooks": "4.3.0"
+ },
+ "peerDependencies": {
+ "eslint": "^7.23.0 || ^8.0.0",
+ "next": ">=10.2.0",
+ "typescript": ">=3.3.1"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-import-resolver-node": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz",
+ "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^2.6.9",
+ "resolve": "^1.13.1"
+ }
+ },
+ "node_modules/eslint-import-resolver-typescript": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.4.0.tgz",
+ "integrity": "sha512-useJKURidCcldRLCNKWemr1fFQL1SzB3G4a0li6lFGvlc5xGe1hY343bvG07cbpCzPuM/lK19FIJB3XGFSkplA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "glob": "^7.1.6",
+ "is-glob": "^4.0.1",
+ "resolve": "^1.17.0",
+ "tsconfig-paths": "^3.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "*",
+ "eslint-plugin-import": "*"
+ }
+ },
+ "node_modules/eslint-import-resolver-typescript/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-import-resolver-typescript/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/eslint-module-utils": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz",
+ "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.2.7",
+ "find-up": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/eslint-plugin-import": {
+ "version": "2.25.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.2.tgz",
+ "integrity": "sha512-qCwQr9TYfoBHOFcVGKY9C9unq05uOxxdklmBXLVvcwo68y5Hta6/GzCZEMx2zQiu0woKNEER0LE7ZgaOfBU14g==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.4",
+ "array.prototype.flat": "^1.2.5",
+ "debug": "^2.6.9",
+ "doctrine": "^2.1.0",
+ "eslint-import-resolver-node": "^0.3.6",
+ "eslint-module-utils": "^2.7.0",
+ "has": "^1.0.3",
+ "is-core-module": "^2.7.0",
+ "is-glob": "^4.0.3",
+ "minimatch": "^3.0.4",
+ "object.values": "^1.1.5",
+ "resolve": "^1.20.0",
+ "tsconfig-paths": "^3.11.0"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/eslint-import-resolver-node": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz",
+ "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.2.7",
+ "resolve": "^1.20.0"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/eslint-import-resolver-node/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/eslint-plugin-jsx-a11y": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz",
+ "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.16.3",
+ "aria-query": "^4.2.2",
+ "array-includes": "^3.1.4",
+ "ast-types-flow": "^0.0.7",
+ "axe-core": "^4.3.5",
+ "axobject-query": "^2.2.0",
+ "damerau-levenshtein": "^1.0.7",
+ "emoji-regex": "^9.2.2",
+ "has": "^1.0.3",
+ "jsx-ast-utils": "^3.2.1",
+ "language-tags": "^1.0.5",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "node_modules/eslint-plugin-react": {
+ "version": "7.29.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.1.tgz",
+ "integrity": "sha512-WtzRpHMhsOX05ZrkyaaqmLl2uXGqmYooCfBxftJKlkYdsltiufGgfU7uuoHwR2lBam2Kh/EIVID4aU9e3kbCMA==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.4",
+ "array.prototype.flatmap": "^1.2.5",
+ "doctrine": "^2.1.0",
+ "estraverse": "^5.3.0",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.5",
+ "object.fromentries": "^2.0.5",
+ "object.hasown": "^1.1.0",
+ "object.values": "^1.1.5",
+ "prop-types": "^15.8.1",
+ "resolve": "^2.0.0-next.3",
+ "semver": "^6.3.0",
+ "string.prototype.matchall": "^4.0.6"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz",
+ "integrity": "sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/resolve": {
+ "version": "2.0.0-next.3",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz",
+ "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.2.0",
+ "path-parse": "^1.0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
+ "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/eslint-utils": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
+ "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^2.0.0"
+ },
+ "engines": {
+ "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ },
+ "peerDependencies": {
+ "eslint": ">=5"
+ }
+ },
+ "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
+ "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/eslint/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint/node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/eslint/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/eslint/node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.3.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz",
+ "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.7.0",
+ "acorn-jsx": "^5.3.1",
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
+ "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
+ "node_modules/express": {
+ "version": "4.17.3",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz",
+ "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==",
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.19.2",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.4.2",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "~1.1.2",
+ "fresh": "0.5.2",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.9.7",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.17.2",
+ "serve-static": "1.14.2",
+ "setprototypeof": "1.2.0",
+ "statuses": "~1.5.0",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/express-basic-auth": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/express-basic-auth/-/express-basic-auth-1.2.1.tgz",
+ "integrity": "sha512-L6YQ1wQ/mNjVLAmK3AG1RK6VkokA1BIY6wmiH304Xtt/cLTps40EusZsU1Uop+v9lTDPxdtzbFmdXfFO3KEnwA==",
+ "dependencies": {
+ "basic-auth": "^2.0.1"
+ }
+ },
+ "node_modules/express-form-data": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/express-form-data/-/express-form-data-2.0.18.tgz",
+ "integrity": "sha512-UU6bHSqEdUeuhoIKFLF2ABXlCB5iM/AdRVmgdI1GsXc6S9Pnk4yD7S8B7pMFfAlUtIEWLpYW7AFsf4szEZxkeA==",
+ "dependencies": {
+ "connect-multiparty": "^2.2.0",
+ "fs-extra": "^9.1.0"
+ },
+ "engines": {
+ "node": ">=5.0.0"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ },
+ "node_modules/fast-glob": {
+ "version": "3.2.11",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
+ "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "node_modules/fastq": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+ "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+ "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.3",
+ "statuses": "~1.5.0",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/find-root": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+ "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
+ },
+ "node_modules/find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
+ "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.1.0",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz",
+ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==",
+ "dev": true
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "node_modules/functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
+ },
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/generate-function": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
+ "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
+ "dependencies": {
+ "is-property": "^1.0.2"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
+ "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
+ "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/glob-to-regexp": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
+ },
+ "node_modules/global-dirs": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz",
+ "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==",
+ "dependencies": {
+ "ini": "2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globals": {
+ "version": "13.13.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz",
+ "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/got": {
+ "version": "9.6.0",
+ "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
+ "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
+ "dependencies": {
+ "@sindresorhus/is": "^0.14.0",
+ "@szmarczak/http-timer": "^1.1.2",
+ "cacheable-request": "^6.0.0",
+ "decompress-response": "^3.3.0",
+ "duplexer3": "^0.1.4",
+ "get-stream": "^4.1.0",
+ "lowercase-keys": "^1.0.1",
+ "mimic-response": "^1.0.1",
+ "p-cancelable": "^1.0.0",
+ "to-readable-stream": "^1.0.0",
+ "url-parse-lax": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
+ },
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/has-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+ "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-yarn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz",
+ "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "dependencies": {
+ "react-is": "^16.7.0"
+ }
+ },
+ "node_modules/http-cache-semantics": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
+ "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ=="
+ },
+ "node_modules/http-errors": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
+ "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "dependencies": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
+ "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/ignore-by-default": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
+ "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk="
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/import-lazy": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
+ "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflection": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.2.tgz",
+ "integrity": "sha512-cmZlljCRTBFouT8UzMzrGcVEvkv6D/wBdcdKG7J1QH5cXjtU75Dm+P27v9EKu/Y43UYyCJd1WC4zLebRrC8NBw==",
+ "engines": [
+ "node >= 0.4.0"
+ ]
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "node_modules/ini": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
+ "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/internal-slot": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
+ "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.0",
+ "has": "^1.0.3",
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/iron-session": {
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/iron-session/-/iron-session-6.1.3.tgz",
+ "integrity": "sha512-o5ErwzAtTBKPtxo4nDmxOZAjK4Stku//5sFM0vac3/Px34530gTwnXoa8zwsC4/koqCtKY0yC0KF/1K+ZMGuHA==",
+ "dependencies": {
+ "@hapi/iron": "^6.0.0",
+ "@types/cookie": "^0.5.1",
+ "@types/express": "^4.17.13",
+ "@types/node": "^16.11.7",
+ "cookie": "^0.5.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "express": ">=4",
+ "next": ">=10"
+ },
+ "peerDependenciesMeta": {
+ "express": {
+ "optional": true
+ },
+ "next": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/iron-session/node_modules/@types/node": {
+ "version": "16.11.28",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.28.tgz",
+ "integrity": "sha512-l/y1ZZpWqevemVQmk0Q1TPohlJTul7u9ysq3bw6xlRDO8z+98JBI6gp4JS0OK8YkWUdYxnJU35H4vOzuiOFIag=="
+ },
+ "node_modules/iron-session/node_modules/cookie": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
+ },
+ "node_modules/is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "dev": true,
+ "dependencies": {
+ "has-bigints": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
+ "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-ci": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+ "dependencies": {
+ "ci-info": "^2.0.0"
+ },
+ "bin": {
+ "is-ci": "bin.js"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
+ "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
+ "dependencies": {
+ "has": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-installed-globally": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
+ "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==",
+ "dependencies": {
+ "global-dirs": "^3.0.0",
+ "is-path-inside": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-npm": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz",
+ "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-property": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
+ "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ="
+ },
+ "node_modules/is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+ },
+ "node_modules/is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-yarn-global": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz",
+ "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw=="
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "node_modules/jest-worker": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/jest-worker/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-worker/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
+ "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg="
+ },
+ "node_modules/json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "dev": true
+ },
+ "node_modules/json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/jsx-ast-utils": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz",
+ "integrity": "sha512-HDAyJ4MNQBboGpUnHAVUNJs6X0lh058s6FuixsFGP7MgJYpD6Vasd6nzSG5iIfXu1zAYlHJ/zsOKNlrenTUBnw==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.4",
+ "object.assign": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
+ "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
+ "dependencies": {
+ "json-buffer": "3.0.0"
+ }
+ },
+ "node_modules/language-subtag-registry": {
+ "version": "0.3.21",
+ "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz",
+ "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==",
+ "dev": true
+ },
+ "node_modules/language-tags": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz",
+ "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=",
+ "dev": true,
+ "dependencies": {
+ "language-subtag-registry": "~0.3.2"
+ }
+ },
+ "node_modules/latest-version": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz",
+ "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==",
+ "dependencies": {
+ "package-json": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
+ },
+ "node_modules/loader-runner": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
+ "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
+ "engines": {
+ "node": ">=6.11.5"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "node_modules/long": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
+ "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
+ },
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "node_modules/lowercase-keys": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
+ "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/md5": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
+ "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
+ "dependencies": {
+ "charenc": "0.0.2",
+ "crypt": "0.0.2",
+ "is-buffer": "~1.1.6"
+ }
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
+ },
+ "node_modules/moment": {
+ "version": "2.29.3",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz",
+ "integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/moment-timezone": {
+ "version": "0.5.34",
+ "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz",
+ "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==",
+ "dependencies": {
+ "moment": ">= 2.9.0"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "node_modules/multiparty": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-4.2.3.tgz",
+ "integrity": "sha512-Ak6EUJZuhGS8hJ3c2fY6UW5MbkGUPMBEGd13djUzoY/BHqV/gTuFWtC6IuVA7A2+v3yjBS6c4or50xhzTQZImQ==",
+ "dependencies": {
+ "http-errors": "~1.8.1",
+ "safe-buffer": "5.2.1",
+ "uid-safe": "2.1.5"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/mysql2": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-2.3.3.tgz",
+ "integrity": "sha512-wxJUev6LgMSgACDkb/InIFxDprRa6T95+VEoR+xPvtngtccNH2dGjEB/fVZ8yg1gWv1510c9CvXuJHi5zUm0ZA==",
+ "dependencies": {
+ "denque": "^2.0.1",
+ "generate-function": "^2.3.1",
+ "iconv-lite": "^0.6.3",
+ "long": "^4.0.0",
+ "lru-cache": "^6.0.0",
+ "named-placeholders": "^1.1.2",
+ "seq-queue": "^0.0.5",
+ "sqlstring": "^2.3.2"
+ },
+ "engines": {
+ "node": ">= 8.0"
+ }
+ },
+ "node_modules/mysql2/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mysql2/node_modules/sqlstring": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz",
+ "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/named-placeholders": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz",
+ "integrity": "sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA==",
+ "dependencies": {
+ "lru-cache": "^4.1.3"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/named-placeholders/node_modules/lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "dependencies": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "node_modules/named-placeholders/node_modules/yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz",
+ "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
+ },
+ "node_modules/next": {
+ "version": "12.1.5",
+ "resolved": "https://registry.npmjs.org/next/-/next-12.1.5.tgz",
+ "integrity": "sha512-YGHDpyfgCfnT5GZObsKepmRnne7Kzp7nGrac07dikhutWQug7hHg85/+sPJ4ZW5Q2pDkb+n0FnmLkmd44htIJQ==",
+ "dependencies": {
+ "@next/env": "12.1.5",
+ "caniuse-lite": "^1.0.30001283",
+ "postcss": "8.4.5",
+ "styled-jsx": "5.0.1"
+ },
+ "bin": {
+ "next": "dist/bin/next"
+ },
+ "engines": {
+ "node": ">=12.22.0"
+ },
+ "optionalDependencies": {
+ "@next/swc-android-arm-eabi": "12.1.5",
+ "@next/swc-android-arm64": "12.1.5",
+ "@next/swc-darwin-arm64": "12.1.5",
+ "@next/swc-darwin-x64": "12.1.5",
+ "@next/swc-linux-arm-gnueabihf": "12.1.5",
+ "@next/swc-linux-arm64-gnu": "12.1.5",
+ "@next/swc-linux-arm64-musl": "12.1.5",
+ "@next/swc-linux-x64-gnu": "12.1.5",
+ "@next/swc-linux-x64-musl": "12.1.5",
+ "@next/swc-win32-arm64-msvc": "12.1.5",
+ "@next/swc-win32-ia32-msvc": "12.1.5",
+ "@next/swc-win32-x64-msvc": "12.1.5"
+ },
+ "peerDependencies": {
+ "fibers": ">= 3.1.0",
+ "node-sass": "^6.0.0 || ^7.0.0",
+ "react": "^17.0.2 || ^18.0.0-0",
+ "react-dom": "^17.0.2 || ^18.0.0-0",
+ "sass": "^1.3.0"
+ },
+ "peerDependenciesMeta": {
+ "fibers": {
+ "optional": true
+ },
+ "node-sass": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/nextjs-progressbar": {
+ "version": "0.0.14",
+ "resolved": "https://registry.npmjs.org/nextjs-progressbar/-/nextjs-progressbar-0.0.14.tgz",
+ "integrity": "sha512-AXYXHDN6M52AwFnGqH/vlwyo0gbC9zM7QS/4ryOTI0RUqfze5FJl8uSrxKJMzK6hGFdDeQXcZoWsLGXeCVtTwg==",
+ "dependencies": {
+ "nprogress": "^0.2.0",
+ "prop-types": "^15.7.2"
+ },
+ "peerDependencies": {
+ "next": ">= 6.0.0",
+ "react": ">= 16.0.0"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz",
+ "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw=="
+ },
+ "node_modules/nodemon": {
+ "version": "2.0.15",
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz",
+ "integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "chokidar": "^3.5.2",
+ "debug": "^3.2.7",
+ "ignore-by-default": "^1.0.1",
+ "minimatch": "^3.0.4",
+ "pstree.remy": "^1.1.8",
+ "semver": "^5.7.1",
+ "supports-color": "^5.5.0",
+ "touch": "^3.1.0",
+ "undefsafe": "^2.0.5",
+ "update-notifier": "^5.1.0"
+ },
+ "bin": {
+ "nodemon": "bin/nodemon.js"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/nodemon"
+ }
+ },
+ "node_modules/nodemon/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/nodemon/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "node_modules/nopt": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
+ "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
+ "dependencies": {
+ "abbrev": "1"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-url": {
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
+ "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/nprogress": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz",
+ "integrity": "sha1-y480xTIT2JVyP8urkH6UIq28r7E="
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
+ "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
+ "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "has-symbols": "^1.0.1",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.entries": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz",
+ "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.fromentries": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz",
+ "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.hasown": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz",
+ "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.values": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz",
+ "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
+ "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+ "dev": true,
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/p-cancelable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
+ "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/package-json": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz",
+ "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==",
+ "dependencies": {
+ "got": "^9.6.0",
+ "registry-auth-token": "^4.0.0",
+ "registry-url": "^5.0.0",
+ "semver": "^6.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/package-json/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+ },
+ "node_modules/path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pg-connection-string": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz",
+ "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ=="
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.5",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz",
+ "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==",
+ "dependencies": {
+ "nanoid": "^3.1.30",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prepend-http": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
+ "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/prop-types": {
+ "version": "15.8.1",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+ "dependencies": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
+ }
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
+ },
+ "node_modules/pstree.remy": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
+ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w=="
+ },
+ "node_modules/pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pupa": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
+ "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==",
+ "dependencies": {
+ "escape-goat": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.9.7",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz",
+ "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==",
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/random-bytes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
+ "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "dependencies": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz",
+ "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "1.8.1",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "dependencies": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "bin": {
+ "rc": "cli.js"
+ }
+ },
+ "node_modules/rc/node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
+ },
+ "node_modules/react": {
+ "version": "18.0.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.0.0.tgz",
+ "integrity": "sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "18.0.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.0.0.tgz",
+ "integrity": "sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==",
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.21.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0"
+ }
+ },
+ "node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ },
+ "node_modules/react-number-format": {
+ "version": "4.9.3",
+ "resolved": "https://registry.npmjs.org/react-number-format/-/react-number-format-4.9.3.tgz",
+ "integrity": "sha512-am1A1xYAbENuKJ+zpM7V+B1oRTSeOHYltqVKExznIVFweBzhLmOBmyb1DfIKjHo90E0bo1p3nzVJ2NgS5xh+sQ==",
+ "dependencies": {
+ "prop-types": "^15.7.2"
+ },
+ "peerDependencies": {
+ "react": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/react-toastify": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-8.2.0.tgz",
+ "integrity": "sha512-Pg2Ju7NngAamarFvLwqrFomJ57u/Ay6i6zfLurt/qPynWkAkOthu6vxfqYpJCyNhHRhR4hu7+bySSeWWJu6PAg==",
+ "dependencies": {
+ "clsx": "^1.1.1"
+ },
+ "peerDependencies": {
+ "react": ">=16",
+ "react-dom": ">=16"
+ }
+ },
+ "node_modules/react-transition-group": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz",
+ "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==",
+ "dependencies": {
+ "@babel/runtime": "^7.5.5",
+ "dom-helpers": "^5.0.1",
+ "loose-envify": "^1.4.0",
+ "prop-types": "^15.6.2"
+ },
+ "peerDependencies": {
+ "react": ">=16.6.0",
+ "react-dom": ">=16.6.0"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.13.9",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
+ "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
+ "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "functions-have-names": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/regexpp": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
+ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ }
+ },
+ "node_modules/registry-auth-token": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz",
+ "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==",
+ "dependencies": {
+ "rc": "^1.2.8"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/registry-url": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz",
+ "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==",
+ "dependencies": {
+ "rc": "^1.2.8"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
+ "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
+ "dependencies": {
+ "is-core-module": "^2.8.1",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/responselike": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
+ "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
+ "dependencies": {
+ "lowercase-keys": "^1.0.0"
+ }
+ },
+ "node_modules/retry-as-promised": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-5.0.0.tgz",
+ "integrity": "sha512-6S+5LvtTl2ggBumk04hBo/4Uf6fRJUwIgunGZ7CYEBCeufGFW1Pu6ucUf/UskHeWOIsUcLOGLFXPig5tR5V1nA=="
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rifm": {
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/rifm/-/rifm-0.12.1.tgz",
+ "integrity": "sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg==",
+ "peerDependencies": {
+ "react": ">=16.8"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "node_modules/scheduler": {
+ "version": "0.21.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz",
+ "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "node_modules/schema-utils": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+ "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+ "dependencies": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/semver-diff": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz",
+ "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
+ "dependencies": {
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/semver-diff/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/send": {
+ "version": "0.17.2",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz",
+ "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==",
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "destroy": "~1.0.4",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "1.8.1",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "~2.3.0",
+ "range-parser": "~1.2.1",
+ "statuses": "~1.5.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "node_modules/seq-queue": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz",
+ "integrity": "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4="
+ },
+ "node_modules/sequelize": {
+ "version": "6.19.0",
+ "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.19.0.tgz",
+ "integrity": "sha512-B3oGIdpYBERDjRDm74h7Ky67f6ZLcmBXOA7HscYObiOSo4pD7VBc9mtm44wNV7unc0uk8I1d30nbZBTQCE377A==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/sequelize"
+ }
+ ],
+ "dependencies": {
+ "@types/debug": "^4.1.7",
+ "@types/validator": "^13.7.1",
+ "debug": "^4.3.3",
+ "dottie": "^2.0.2",
+ "inflection": "^1.13.2",
+ "lodash": "^4.17.21",
+ "moment": "^2.29.1",
+ "moment-timezone": "^0.5.34",
+ "pg-connection-string": "^2.5.0",
+ "retry-as-promised": "^5.0.0",
+ "semver": "^7.3.5",
+ "sequelize-pool": "^7.1.0",
+ "toposort-class": "^1.0.1",
+ "uuid": "^8.3.2",
+ "validator": "^13.7.0",
+ "wkx": "^0.5.0"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ibm_db": {
+ "optional": true
+ },
+ "mariadb": {
+ "optional": true
+ },
+ "mysql2": {
+ "optional": true
+ },
+ "pg": {
+ "optional": true
+ },
+ "pg-hstore": {
+ "optional": true
+ },
+ "snowflake-sdk": {
+ "optional": true
+ },
+ "sqlite3": {
+ "optional": true
+ },
+ "tedious": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/sequelize-pool": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz",
+ "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/sequelize/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/sequelize/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/sequelize/node_modules/semver": {
+ "version": "7.3.7",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+ "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/serialize-javascript": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
+ "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "node_modules/serve-static": {
+ "version": "1.14.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz",
+ "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==",
+ "dependencies": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.17.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/source-map-support/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string.prototype.matchall": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz",
+ "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1",
+ "get-intrinsic": "^1.1.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.3",
+ "regexp.prototype.flags": "^1.4.1",
+ "side-channel": "^1.0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
+ "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
+ "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/styled-jsx": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.1.tgz",
+ "integrity": "sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw==",
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ },
+ "babel-plugin-macros": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/stylis": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz",
+ "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag=="
+ },
+ "node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/sweetalert2": {
+ "version": "11.4.9",
+ "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.4.9.tgz",
+ "integrity": "sha512-DAQGODShPfz9cwxDIUuXZuavlq1kOR2uypXa4DxG9YxlIbcCSlbm7BEnXwP/GK9+wI+whvj5iePEByq3RbIoNg==",
+ "funding": {
+ "type": "individual",
+ "url": "https://sweetalert2.github.io/#donations"
+ }
+ },
+ "node_modules/sweetalert2-react-content": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/sweetalert2-react-content/-/sweetalert2-react-content-5.0.0.tgz",
+ "integrity": "sha512-j0R0+CN7DkgZIdRqU33NIdazleleyjJp1k3KmunnVYU+MLFsuhiOkV/jc7DfkvY3lhPqmg8OTe2n4/9/KMo4vA==",
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0",
+ "sweetalert2": "^11.0.0"
+ }
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.12.1",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz",
+ "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==",
+ "dependencies": {
+ "acorn": "^8.5.0",
+ "commander": "^2.20.0",
+ "source-map": "~0.7.2",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/terser-webpack-plugin": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz",
+ "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==",
+ "dependencies": {
+ "jest-worker": "^27.4.5",
+ "schema-utils": "^3.1.1",
+ "serialize-javascript": "^6.0.0",
+ "source-map": "^0.6.1",
+ "terser": "^5.7.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.1.0"
+ },
+ "peerDependenciesMeta": {
+ "@swc/core": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ },
+ "uglify-js": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/terser-webpack-plugin/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/terser/node_modules/source-map": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/to-readable-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
+ "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/toposort-class": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz",
+ "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg="
+ },
+ "node_modules/touch": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
+ "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
+ "dependencies": {
+ "nopt": "~1.0.10"
+ },
+ "bin": {
+ "nodetouch": "bin/nodetouch.js"
+ }
+ },
+ "node_modules/tsconfig-paths": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz",
+ "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/json5": "^0.0.29",
+ "json5": "^1.0.1",
+ "minimist": "^1.2.6",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ },
+ "node_modules/tsutils": {
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
+ "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^1.8.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "peerDependencies": {
+ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
+ }
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "dependencies": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "4.6.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz",
+ "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=4.2.0"
+ }
+ },
+ "node_modules/uid-safe": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
+ "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
+ "dependencies": {
+ "random-bytes": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/unbox-primitive": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
+ "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has-bigints": "^1.0.1",
+ "has-symbols": "^1.0.2",
+ "which-boxed-primitive": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/undefsafe": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
+ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA=="
+ },
+ "node_modules/underscore": {
+ "version": "1.13.3",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.3.tgz",
+ "integrity": "sha512-QvjkYpiD+dJJraRA8+dGAU4i7aBbb2s0S3jA45TFOvg2VgqvdCDd/3N6CqA8gluk1W91GLoXg5enMUx560QzuA=="
+ },
+ "node_modules/unique-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
+ "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
+ "dependencies": {
+ "crypto-random-string": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/update-notifier": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz",
+ "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==",
+ "dependencies": {
+ "boxen": "^5.0.0",
+ "chalk": "^4.1.0",
+ "configstore": "^5.0.1",
+ "has-yarn": "^2.1.0",
+ "import-lazy": "^2.1.0",
+ "is-ci": "^2.0.0",
+ "is-installed-globally": "^0.4.0",
+ "is-npm": "^5.0.0",
+ "is-yarn-global": "^0.3.0",
+ "latest-version": "^5.1.0",
+ "pupa": "^2.1.1",
+ "semver": "^7.3.4",
+ "semver-diff": "^3.1.1",
+ "xdg-basedir": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/yeoman/update-notifier?sponsor=1"
+ }
+ },
+ "node_modules/update-notifier/node_modules/semver": {
+ "version": "7.3.7",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+ "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/url-parse-lax": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
+ "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
+ "dependencies": {
+ "prepend-http": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/v8-compile-cache": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
+ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
+ "dev": true
+ },
+ "node_modules/validator": {
+ "version": "13.7.0",
+ "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz",
+ "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/watchpack": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz",
+ "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==",
+ "dependencies": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack": {
+ "version": "5.72.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz",
+ "integrity": "sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==",
+ "dependencies": {
+ "@types/eslint-scope": "^3.7.3",
+ "@types/estree": "^0.0.51",
+ "@webassemblyjs/ast": "1.11.1",
+ "@webassemblyjs/wasm-edit": "1.11.1",
+ "@webassemblyjs/wasm-parser": "1.11.1",
+ "acorn": "^8.4.1",
+ "acorn-import-assertions": "^1.7.6",
+ "browserslist": "^4.14.5",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^5.9.2",
+ "es-module-lexer": "^0.9.0",
+ "eslint-scope": "5.1.1",
+ "events": "^3.2.0",
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.2.9",
+ "json-parse-better-errors": "^1.0.2",
+ "loader-runner": "^4.2.0",
+ "mime-types": "^2.1.27",
+ "neo-async": "^2.6.2",
+ "schema-utils": "^3.1.0",
+ "tapable": "^2.1.1",
+ "terser-webpack-plugin": "^5.1.3",
+ "watchpack": "^2.3.1",
+ "webpack-sources": "^3.2.3"
+ },
+ "bin": {
+ "webpack": "bin/webpack.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependenciesMeta": {
+ "webpack-cli": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-sources": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack/node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/webpack/node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "dev": true,
+ "dependencies": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/widest-line": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
+ "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
+ "dependencies": {
+ "string-width": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wkx": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz",
+ "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ },
+ "node_modules/write-file-atomic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ }
+ },
+ "node_modules/xdg-basedir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
+ "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "node_modules/yaml": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+ "engines": {
+ "node": ">= 6"
+ }
+ }
+ },
"dependencies": {
"@ampproject/remapping": {
"version": "2.1.2",
@@ -701,7 +7561,8 @@
"@mui/types": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/@mui/types/-/types-7.1.3.tgz",
- "integrity": "sha512-DDF0UhMBo4Uezlk+6QxrlDbchF79XG6Zs0zIewlR4c0Dt6GKVFfUtzPtHCH1tTbcSlq/L2bGEdiaoHBJ9Y1gSA=="
+ "integrity": "sha512-DDF0UhMBo4Uezlk+6QxrlDbchF79XG6Zs0zIewlR4c0Dt6GKVFfUtzPtHCH1tTbcSlq/L2bGEdiaoHBJ9Y1gSA==",
+ "requires": {}
},
"@mui/utils": {
"version": "5.6.1",
@@ -1314,13 +8175,15 @@
"acorn-import-assertions": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
- "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw=="
+ "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
+ "requires": {}
},
"acorn-jsx": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"ajv": {
"version": "6.12.6",
@@ -1336,7 +8199,8 @@
"ajv-keywords": {
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
- "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ=="
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "requires": {}
},
"ansi-align": {
"version": "3.0.1",
@@ -1866,6 +8730,12 @@
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz",
"integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw=="
},
+ "date-fns-tz": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-1.3.4.tgz",
+ "integrity": "sha512-O47vEyz85F2ax/ZdhMBJo187RivZGjH6V0cPjPzpm/yi6YffJg4upD/8ibezO11ezZwP3QYlBHh/t4JhRNx0Ow==",
+ "requires": {}
+ },
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -2390,7 +9260,8 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz",
"integrity": "sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"eslint-scope": {
"version": "7.1.1",
@@ -4144,7 +11015,8 @@
"rifm": {
"version": "0.12.1",
"resolved": "https://registry.npmjs.org/rifm/-/rifm-0.12.1.tgz",
- "integrity": "sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg=="
+ "integrity": "sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg==",
+ "requires": {}
},
"rimraf": {
"version": "3.0.2",
@@ -4455,7 +11327,8 @@
"styled-jsx": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.1.tgz",
- "integrity": "sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw=="
+ "integrity": "sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw==",
+ "requires": {}
},
"stylis": {
"version": "4.0.13",
@@ -4483,7 +11356,8 @@
"sweetalert2-react-content": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/sweetalert2-react-content/-/sweetalert2-react-content-5.0.0.tgz",
- "integrity": "sha512-j0R0+CN7DkgZIdRqU33NIdazleleyjJp1k3KmunnVYU+MLFsuhiOkV/jc7DfkvY3lhPqmg8OTe2n4/9/KMo4vA=="
+ "integrity": "sha512-j0R0+CN7DkgZIdRqU33NIdazleleyjJp1k3KmunnVYU+MLFsuhiOkV/jc7DfkvY3lhPqmg8OTe2n4/9/KMo4vA==",
+ "requires": {}
},
"tapable": {
"version": "2.2.1",
@@ -4657,6 +11531,11 @@
"resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
"integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA=="
},
+ "underscore": {
+ "version": "1.13.3",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.3.tgz",
+ "integrity": "sha512-QvjkYpiD+dJJraRA8+dGAU4i7aBbb2s0S3jA45TFOvg2VgqvdCDd/3N6CqA8gluk1W91GLoXg5enMUx560QzuA=="
+ },
"unique-string": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
diff --git a/package.json b/package.json
index b736636..f94c424 100644
--- a/package.json
+++ b/package.json
@@ -17,12 +17,14 @@
"@mui/x-date-pickers": "^5.0.0-alpha.1",
"cors": "^2.8.5",
"date-fns": "^2.28.0",
+ "date-fns-tz": "^1.3.4",
"dotenv": "^16.0.0",
"express": "^4.17.3",
"express-basic-auth": "^1.2.1",
"express-form-data": "^2.0.18",
"iron-session": "^6.1.3",
"md5": "^2.3.0",
+ "moment": "^2.29.3",
"mysql2": "^2.3.3",
"next": "12.1.5",
"nextjs-progressbar": "0.0.14",
@@ -36,6 +38,7 @@
"sweetalert2": "^11.4.9",
"sweetalert2-react-content": "^5.0.0",
"typescript": "^4.6.3",
+ "underscore": "^1.13.3",
"webpack": "^5.72.0"
},
"devDependencies": {
diff --git a/pages/admin/data-dokter.js b/pages/admin/data-dokter.js
index ac92c57..91666a4 100644
--- a/pages/admin/data-dokter.js
+++ b/pages/admin/data-dokter.js
@@ -1,10 +1,11 @@
-import * as React from 'react';
+import { useRef, useState, forwardRef } from 'react';
+import Router from 'next/router';
import { styled } from '@mui/material/styles';
import Box from '@mui/material/Box';
import CssBaseline from '@mui/material/CssBaseline';
// import Paper from '@mui/material/Paper';
import Grid from '@mui/material/Grid';
-
+import Divider from '@mui/material/Divider';
import Card from '@mui/material/Card';
import Button from '@mui/material/Button';
import TextField from '@mui/material/TextField';
@@ -27,18 +28,64 @@ import TableRow from '@mui/material/TableRow';
import AppBarAdmin from '../../components/admin/appBar';
-function createData(name, calories, fat, carbs, protein) {
- return { name, calories, fat, carbs, protein };
-}
+// backdrop
+import Backdrop from '@mui/material/Backdrop';
+import CircularProgress from '@mui/material/CircularProgress';
-const rows = [
- createData('Frozen yoghurt', 159, 6.0, 24, 4.0),
- createData('Ice cream sandwich', 237, 9.0, 37, 4.3),
- createData('Eclair', 262, 16.0, 24, 6.0),
- createData('Cupcake', 305, 3.7, 67, 4.3),
- createData('Gingerbread', 356, 16.0, 49, 3.9),
+// toast
+import { ToastContainer, toast, Zoom, Bounce } from 'react-toastify'
+import 'react-toastify/dist/ReactToastify.css';
+
+// sweet alert
+import Swal from 'sweetalert2'
+import withReactContent from 'sweetalert2-react-content'
+const MySwal = withReactContent(Swal)
+
+// this for check session
+let all_function = require('../../function/all_function.js')
+import { withIronSessionSsr } from "iron-session/next";
+
+// for time select
+import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';
+import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
+import { TimePicker } from '@mui/x-date-pickers/TimePicker';
+
+// this is for number format
+import NumberFormat from 'react-number-format';
+
+
+
+import TabelDokterAll from '../../components/admin/tabelDokter'
+
+// for select jadwal
+import OutlinedInput from '@mui/material/OutlinedInput';
+import ListItemText from '@mui/material/ListItemText';
+import Checkbox from '@mui/material/Checkbox';
+import Chip from '@mui/material/Chip';
+import { Edit } from '@mui/icons-material';
+const ITEM_HEIGHT = 48;
+const ITEM_PADDING_TOP = 8;
+const MenuProps = {
+ PaperProps: {
+ style: {
+ maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,
+ width: 250,
+ },
+ },
+};
+const hari = [
+ 'Senin',
+ 'Selasa',
+ 'Rabu',
+ 'Kamis',
+ 'Jumat',
+ 'Sabtu',
+ 'Minggu',
];
+
+
+
const StyledTableCell = styled(TableCell)(({ theme }) => ({
[`&.${tableCellClasses.head}`]: {
backgroundColor: theme.palette.primary.main,
@@ -57,23 +104,289 @@ const DrawerHeader = styled('div')(({ theme }) => ({
...theme.mixins.toolbar,
}));
-function DataDokterPage() {
- const [age, setAge] = React.useState('');
-
- const handleChange = (event) => {
- setAge(event.target.value);
- };
+// ini untuk number
+const NumberFormatCustom = forwardRef(function NumberFormatCustom(props, ref) {
+ const { onChange, ...other } = props;
return (
-
+
{
+ onChange({
+ target: {
+ name: props.name,
+ value: values.value,
+ },
+ });
+ }}
+ // thousandSeparator
+ isNumericString
+ prefix="08"
+ />
+ );
+});
+
+const NumberFormatCustomNIK = forwardRef(function NumberFormatCustom(props, ref) {
+ const { onChange, ...other } = props;
+
+ return (
+ {
+ onChange({
+ target: {
+ name: props.name,
+ value: values.value,
+ },
+ });
+ }}
+ // thousandSeparator
+ isNumericString
+ // prefix="08"
+ />
+ );
+});
+
+
+
+
+function DataDokterPage(props) {
+ const url = process.env.HTTP_URL + "/api/admin/dokter"; // ini url
+
+ // for loading table
+ const [dataDokterAll, setDataDokterAll] = useState();
+ const [awal, setAwal] = useState(false);
+
+ const [backdrop, setBackdrop] = useState(false); //this is for backdrop
+ const [sweetAlertLoading, setSweetAlertLoading] = useState(false); //this is for sweet alert loading
+ const nikInputRef = useRef();
+ const [nik, setNik] = useState('');
+ const namaInputRef = useRef();
+ const alamatInputRef = useRef();
+ const noTelpInputRef = useRef();
+ const [noTelp, setNoTelp] = useState('');
+ const [spesialis, setSpesialis] = useState('');
+
+ // for select jadwal
+ const [jadwal, setJadwal] = useState([]);
+
+ // for time select
+ const jamMulaiInputRef = useRef();
+ const jamSelesaiInputRef = useRef();
+ const [jamMulai, setJamMulai] = useState(null);
+ const [jamSelesai, setJamSelesai] = useState(null);
+
+
+
+ // before add dokter
+ const beforeTambahDokter = async (e) => {
+ e.preventDefault();
+ const nama = namaInputRef.current.value;
+ const alamat = alamatInputRef.current.value;
+ let no_telp = "08" + noTelp
+ console.log(no_telp.length);
+ if (nik.length < 16) {
+ toast.error('NIK harus 16 digit')
+ // focus to nik
+ nikInputRef.current.focus();
+ } else if (no_telp.length < 11) {
+ toast.error('No Telpon minimal harus 11 digit')
+ // focus to nik
+ noTelpInputRef.current.focus();
+ }
+ else if (jamMulai == null) {
+ toast.error('Jam harus diisi')
+ // focus to jam mulai
+ jamMulaiInputRef.current.focus();
+ } else if (jamSelesai == null) {
+ toast.error('Jam harus diisi')
+ // focus to jam mulai
+ jamSelesaiInputRef.current.focus();
+ } else if (jamMulai >= jamSelesai) {
+ toast.error('Jam mulai harus lebih kecil dari jam selesai')
+ // focus to jam mulai
+ jamSelesaiInputRef.current.focus();
+ } else {
+ console.log(nik, nama, alamat, noTelp, spesialis, jamMulai, jamSelesai, jadwal, "sini adalah datanya dokter");
+ setSweetAlertLoading(true);
+ await MySwal.fire({
+ title: 'Yakin ?',
+ text: `Dokter ${nama} akan ditambahkan`,
+ icon: 'info',
+ showCancelButton: true,
+ confirmButtonColor: '#3085d6',
+ cancelButtonColor: '#d33',
+ confirmButtonText: 'Ya, tambahkan!'
+ }).then(async (result) => {
+ if (result.value) {
+ setBackdrop(true);
+ // await 4 second
+ // await new Promise(resolve => setTimeout(resolve, 4000));
+ // create a new let jam_mulai_converted , and jam_selesai_converted, and only get the time. etc 08:00:00
+ let jam_mulai_converted = jamMulai.toLocaleTimeString('en-US', { hour12: false, hour: "numeric", minute: "numeric" });
+ let jam_selesai_converted = jamSelesai.toLocaleTimeString('en-US', { hour12: false, hour: "numeric", minute: "numeric" });
+
+ let data = {
+ nik,
+ nama,
+ alamat,
+ no_telp,
+ spesialis,
+ jam_mulai: jam_mulai_converted,
+ jam_selesai: jam_selesai_converted,
+ jadwal
+ }
+
+ // console.log(data.data)
+ let response = await tambah_dokter(data);
+ // co
+ if (!response) {
+ // await 1 second
+ await new Promise(resolve => setTimeout(resolve, 500));
+ setAwal(true);
+ nikInputRef.current.focus();
+ } else {
+ // clear input
+ setAwal(false);
+ setNik("");
+ setNoTelp("");
+ setSpesialis("");
+ setJamMulai(null);
+ setJamSelesai(null);
+ setJadwal([]);
+ namaInputRef.current.value = "";
+ alamatInputRef.current.value = "";
+ Router.replace(Router.asPath);
+ }
+
+ }
+ })
+ setBackdrop(false);
+ setSweetAlertLoading(false);
+ }
+
+
+ }
+
+ // add dokter
+ async function tambah_dokter(datanya) {
+ // console.log(datanya, "ini datanya");
+ try {
+ // console.log(url)
+ const response = await fetch(url, {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ body: JSON.stringify(
+ datanya
+ )
+ })
+ // get response
+ const data = await response.json()
+ // console.log(data, "ini data dari cek dokter")
+ if (response.status === 200) {
+ // create toast
+
+ toast.success(data.message)
+ return true
+ } else if (response.status === 400) {
+ setDataDokterAll(data.data)
+
+ return false
+ } else {
+ // create toast
+
+ toast.error(data.message)
+ return false
+ }
+ } catch (err) {
+ toast.error("Terjadi kesalahan pada server")
+ return false
+ }
+ }
+
+ // before edit dokter
+ const beforeEditDokter = async (nik, datanya) => {
+ // console.log(datanya, "ini datanya");
+ // console.log(nik, "ini nik");
+ // create sweet alert
+ setSweetAlertLoading(true);
+ await MySwal.fire({
+ title: 'Yakin ?',
+ text: `Dokter dengan NIK ${nik} akan diubah`,
+ icon: 'info',
+ showCancelButton: true,
+ confirmButtonColor: '#3085d6',
+ cancelButtonColor: '#d33',
+ confirmButtonText: 'Ya, ubah!'
+ }).then(async (result) => {
+ if (result.value) {
+ setBackdrop(true);
+ // await 4 second
+ await edit_data_dokter(nik, datanya);
+ }
+ })
+
+ setBackdrop(false);
+ setSweetAlertLoading(false);
+ }
+
+ // edit dokter
+ async function edit_data_dokter(nik, datanya) {
+ console.log(nik, datanya, "ini nik dan datanya");
+ // await 4 sec
+ try {
+ let urlnya = `${url}?nik=${nik}&detail=datanya`;
+ const response = await fetch(urlnya, {
+ method: 'PUT',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+
+ },
+ body: JSON.stringify(
+ datanya
+ )
+ })
+
+ // get response
+ const data = await response.json()
+ console.log(data, "ini data dari cek dokter")
+ if (response.status === 200) {
+ // create toast
+ toast.success(data.message)
+ setAwal(false);
+ Router.replace(Router.asPath);
+ } else {
+ toast.error(data.message)
+ }
+ } catch (error) {
+ toast.error("Terjadi kesalahan pada server")
+ }
+ }
+
+ return (
+ <>
+
+ theme.zIndex.drawer + 1 }}>
-
-
+
+
-
+
Tambah Dokter
setNik(e.target.value)}
+ InputProps={{
+ inputComponent: NumberFormatCustomNIK,
+ inputProps: {
+ maxLength: 16,
+ minLength: 16,
+ }
+ }}
+ value={nik}
+ name="nik"
+
+ />
+
+
setNoTelp(e.target.value)}
id="NoTelpTextField"
label="No Telpon"
placeholder="Masukkan No Telpon"
sx={{ width: "85%", boxShadow: 10 }}
+ InputProps={{
+ inputComponent: NumberFormatCustom,
+ inputProps: {
+ maxLength: 13,
+ minLength: 11,
+ }
+ }}
+ value={noTelp}
+ name="jumlah"
/>
Spesialis
{ setSpesialis(e.target.value) }
+ }
>
-
+
None
- Ten
- Twenty
- Thirty
+ Spesialis 1
+ Spesialis 2
+ Spesialis 3
-
+
-
+
+ Jadwal Hari
+ {
+ const {
+ target: { value },
+ } = e;
+ setJadwal(
+ // On autofill we get a stringified value.
+ typeof value === 'string' ? value.split(',') : value,
+ );
+ }
+ }
+ input={ }
+ renderValue={(selected) => (
+
+ {selected.map((value) => (
+
+ ))}
+
+ )}
+ MenuProps={MenuProps}
+ >
+ {hari.map((name) => (
+
+ -1} />
+
+
+ ))}
+
+
-
+
+
+ {
+ setJamMulai(newValue);
+ }}
+ renderInput={(params) => }
+ />
+
+
+
+
+
+ {
+ setJamSelesai(newValue);
+ }}
+ renderInput={(params) => }
+ />
+
+
- Tambah
+ Tambah
@@ -164,40 +565,59 @@ function DataDokterPage() {
padding: "15px",
}}>
- Dessert (100g serving)
- Calories
- Fat (g)
- Carbs (g)
- Protein (g)
+ NIK
+ Nama
+ Spesialis
+ Telepon
+ Status
+ Aksi
- {rows.map((row) => (
-
-
- {row.name}
-
- {row.calories}
- {row.fat}
- {row.carbs}
- {row.protein}
-
- ))}
+ {
+ if (stat) {
+ toast.success(pesan)
+ } else {
+ toast.error(pesan)
+ }
+
+ }
+ }
+ setAwal={
+ (data) => {
+ setAwal(data)
+ }
+ }
+ editDokter={beforeEditDokter}
+ backdropnya={
+ (stat) => {
+ setBackdrop(stat)
+ }
+ }
+ sweetAlertLoadingnya={
+ (stat)=>{
+ setSweetAlertLoading(stat)
+ }
+ }
+ />
-
+ {/*
Cetak
-
+ */}
@@ -205,8 +625,56 @@ function DataDokterPage() {
-
+ >
);
}
+export const getServerSideProps = withIronSessionSsr(
+ async function getServerSideProps({ req }) {
+ const user = req.session.user;
+ console.log(user, "sini di server side props");
+ // console.log(req.query)
+ if (!user) {
+ return {
+ redirect: {
+ destination: '/?error=true',
+ permanent: false,
+ }
+ };
+ }
+
+
+ let cek_user = await all_function.cek_user(user.username, user.password, user.role)
+ console.log(cek_user, "cek user")
+
+ if (cek_user !== true) {
+ return {
+ redirect: {
+ destination: '/?error=true',
+ permanent: false,
+ }
+ };
+ }
+
+ let all_dokter = await all_function.dokter_all();
+ console.log(all_dokter, "ini all dokter");
+
+ return {
+ props: {
+ user: req.session.user,
+ dokter: all_dokter
+ },
+ // revalidate: 10
+ };
+ },
+ {
+ cookieName: "myapp_cookiename",
+ password: "complex_password_at_least_32_characters_long",
+ // secure: true should be used in production (HTTPS) but can't be used in development (HTTP)
+ cookieOptions: {
+ secure: process.env.NODE_ENV === "production",
+ },
+ },
+);
+
export default DataDokterPage;
diff --git a/pages/admin/data-obat.js b/pages/admin/data-obat.js
index a0a5804..31d848e 100644
--- a/pages/admin/data-obat.js
+++ b/pages/admin/data-obat.js
@@ -74,13 +74,6 @@ import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';
import KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp';
-
-
-
-
-
-
-
const Transition = forwardRef(function Transition(props, ref) { // for modal history
return ;
});
@@ -932,6 +925,14 @@ export const getServerSideProps = withIronSessionSsr(
const user = req.session.user;
console.log(user, "sini di server side props");
// console.log(req.query)
+ if (!user) {
+ return {
+ redirect: {
+ destination: '/?error=true',
+ permanent: false,
+ }
+ };
+ }
let cek_user = await all_function.cek_user(user.username, user.password, user.role)
console.log(cek_user, "cek user")
diff --git a/pages/admin/data-pasien.js b/pages/admin/data-pasien.js
index c8d05ae..28ab040 100644
--- a/pages/admin/data-pasien.js
+++ b/pages/admin/data-pasien.js
@@ -1,8 +1,9 @@
-import * as React from 'react';
+import { useRef, useState, forwardRef, useEffect } from 'react';
+import Router from 'next/router';
import { styled } from '@mui/material/styles';
import Box from '@mui/material/Box';
import CssBaseline from '@mui/material/CssBaseline';
-// import Paper from '@mui/material/Paper';
+import Paper from '@mui/material/Paper';
import Grid from '@mui/material/Grid';
import Card from '@mui/material/Card';
@@ -25,20 +26,46 @@ import TableHead from '@mui/material/TableHead';
import TableRow from '@mui/material/TableRow';
// import Paper from '@mui/material/Paper';
+// backdrop
+import Backdrop from '@mui/material/Backdrop';
+import CircularProgress from '@mui/material/CircularProgress';
+
+// toast
+import { ToastContainer, toast, Zoom, Bounce } from 'react-toastify'
+import 'react-toastify/dist/ReactToastify.css';
+
+// sweet alert
+import Swal from 'sweetalert2'
+import withReactContent from 'sweetalert2-react-content'
+const MySwal = withReactContent(Swal)
+
+// this is for number format
+import NumberFormat from 'react-number-format';
import AppBarAdmin from '../../components/admin/appBar';
-function createData(name, calories, fat, carbs, protein) {
- return { name, calories, fat, carbs, protein };
-}
+// ini untuk date time picker
+import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';
+import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
+import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';
+import { DatePicker } from '@mui/x-date-pickers/DatePicker';
+
+import moment from "moment"; //for converting date and time
+
+// button icon
+import IconButton from '@mui/material/IconButton';
+import ModeEditIcon from '@mui/icons-material/ModeEdit';
+import DisabledByDefaultIcon from '@mui/icons-material/DisabledByDefault';
+import EventAvailableIcon from '@mui/icons-material/EventAvailable';
+
+// this for check session
+let all_function = require('../../function/all_function.js')
+import { withIronSessionSsr } from "iron-session/next";
+
+import DialogEditPasien from '../../components/admin/dialogEditPasien';
+import DialogLihatJadwalPasien from '../../components/admin/dialogLihatJadwalPasien';
+
-const rows = [
- createData('Frozen yoghurt', 159, 6.0, 24, 4.0),
- createData('Ice cream sandwich', 237, 9.0, 37, 4.3),
- createData('Eclair', 262, 16.0, 24, 6.0),
- createData('Cupcake', 305, 3.7, 67, 4.3),
- createData('Gingerbread', 356, 16.0, 49, 3.9),
-];
const StyledTableCell = styled(TableCell)(({ theme }) => ({
[`&.${tableCellClasses.head}`]: {
@@ -58,23 +85,568 @@ const DrawerHeader = styled('div')(({ theme }) => ({
...theme.mixins.toolbar,
}));
-function DataPasienPage() {
- const [age, setAge] = React.useState('');
-
- const handleChange = (event) => {
- setAge(event.target.value);
- };
+// ini untuk number
+const NumberFormatCustom = forwardRef(function NumberFormatCustom(props, ref) {
+ const { onChange, ...other } = props;
return (
-
+
{
+ onChange({
+ target: {
+ name: props.name,
+ value: values.value,
+ },
+ });
+ }}
+ // thousandSeparator
+ isNumericString
+ prefix="08"
+ />
+ );
+});
+
+const NumberFormatCustomNIK = forwardRef(function NumberFormatCustom(props, ref) {
+ const { onChange, ...other } = props;
+
+ return (
+ {
+ onChange({
+ target: {
+ name: props.name,
+ value: values.value,
+ },
+ });
+ }}
+ // thousandSeparator
+ isNumericString
+ // prefix="08"
+ />
+ );
+});
+
+let today_date = new Date();
+let days = ['Minggu', 'Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu'];
+let hari_ininya = days[today_date.getDay()];
+
+function DataPasienPage(props) {
+ // console.log(props, "ini jadwal pasien")
+ const [awal, setAwal] = useState(false);
+ const [backdrop, setBackdrop] = useState(false); //this is for backdrop
+ const [sweetAlertLoading, setSweetAlertLoading] = useState(false); //this is for sweet alert loading
+
+ const [hari_ini, setHariIni] = useState(hari_ininya);
+
+ const url = process.env.HTTP_URL + "/api/admin/pasien";
+
+ // ini untuk list tabel
+ const [dataPasienAll, setDataPasienAll] = useState([]);
+ const [jadwalPasien, setJadwalPasien] = useState([]);
+
+ useState(() => {
+ setJadwalPasien(props.jadwal_pasien)
+ })
+
+
+ const nikInputRef = useRef();
+ const [nik, setNik] = useState('');
+ const [nama, setNama] = useState('');
+ const [alamat, setAlamat] = useState('');
+ const no_telpInputRef = useRef();
+ const [no_telp, setNoTelp] = useState('');
+ const [tanggal_lahir, setTanggalLahir] = useState('');
+ const [jenis_kelamin, setJenisKelamin] = useState('');
+ const [pekerjaan, setPekerjaan] = useState('');
+ const [status_pernikahan, setStatusPernikahan] = useState('');
+ const [golongan_darah, setGolonganDarah] = useState('');
+ const [pendidikan, setPendidikan] = useState('');
+ const [nama_orang_tua_wali, setNamaOrangTuaWali] = useState('');
+ const [nama_pasangan, setNamaPasangan] = useState('');
+
+ const tanggal_periksaInputRef = useRef();
+ const [tanggal_periksa, setTanggalPeriksa] = useState('');
+ const [jam_periksa, setJamPeriksa] = useState('');
+ const [dokterList, setDokterList] = useState([]);
+ const [dokter, setDokter] = useState('');
+
+ function Umur(props) {
+ let today = new Date();
+ let birthDate = new Date(props.tanggal_lahir);
+ let age = today.getFullYear() - birthDate.getFullYear();
+ let m = today.getMonth() - birthDate.getMonth();
+ if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
+ age = age - 1;
+ }
+ return (
+ <>
+ {age}
+ >
+ );
+ }
+
+ // for dokter select
+ async function cekDoktor(tanggal) {
+ setDokter("")
+ console.log(tanggal)
+ // create let day and get the day from tanggal. example : Thu Apr 28 2022 03:36:00 GMT+0800 (Central Indonesia Time) , output : "Kamis"
+ let day = new Date(tanggal).getDay();
+ switch (day) {
+ case 0:
+ day = "Minggu";
+ break;
+ case 1:
+ day = "Senin";
+ break;
+ case 2:
+ day = "Selasa";
+ break;
+ case 3:
+ day = "Rabu";
+ break;
+ case 4:
+ day = "Kamis";
+ break;
+ case 5:
+ day = "Jumat";
+ break;
+ case 6:
+ day = "Sabtu";
+ break;
+
+ }
+ // console.log(day, "ini day")
+ // create let clock and get the hour,minute,second from tanggal. output example : "12:00:00"
+ let hour = new Date(tanggal).getHours(); // if hour is less than 10, then add 0 before hour
+ hour = hour < 10 ? "0" + hour : hour;
+ let minute = new Date(tanggal).getMinutes(); // if minute is less than 10, then add 0 before minute
+ minute = minute < 10 ? "0" + minute : minute;
+ let second = new Date(tanggal).getSeconds(); // if second is less than 10, then add 0 before second
+ second = second < 10 ? "0" + second : second;
+ let clock = hour + ":" + minute + ":" + second;
+ setJamPeriksa(clock)
+ // console.log(clock, "ini clock")
+
+ try {
+ let urlnya = process.env.HTTP_URL + "/api/admin/cek_jadwal?hari=" + day + "&jam=" + clock;
+ const response = await fetch(urlnya, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ }
+ })
+ // get response
+ const data = await response.json()
+ console.log(data, "ini data")
+ setDokterList(data.data)
+ } catch (err) {
+ console.log(err)
+ }
+
+ }
+
+ // before add pasien
+ async function beforeAddPasien(e) {
+ e.preventDefault();
+ // console.log("sini before add pasien")
+ let no_telpBaru = "08" + no_telp
+ if (nik.length < 16) {
+ toast.error('NIK harus 16 digit')
+ // focus to nik
+ nikInputRef.current.focus();
+ } else if (no_telpBaru.length < 11) {
+ toast.error('No Telpon minimal harus 11 digit')
+ // focus to nik
+ no_telpInputRef.current.focus();
+ } else if (tanggal_periksa == '') {
+ toast.error('Tanggal periksa harus diisi')
+ // focus to nik
+ tanggal_periksaInputRef.current.focus();
+ } else {
+ setSweetAlertLoading(true);
+ await MySwal.fire({
+ title: 'Yakin ?',
+ text: `Dokter ${nama} akan ditambahkan`,
+ icon: 'info',
+ showCancelButton: true,
+ confirmButtonColor: '#3085d6',
+ cancelButtonColor: '#d33',
+ confirmButtonText: 'Ya, tambahkan!'
+ }).then(async (result) => {
+ if (result.value) {
+ setBackdrop(true);
+
+ let tgl_lahir_baru = moment(tanggal_lahir).format('YYYY-MM-DD');
+
+ let data = {
+ nik,
+ nama,
+ jenis_kelamin,
+ tgl_lahir: tgl_lahir_baru,
+ alamat,
+ pekerjaan,
+ golongan_darah,
+ pendidikan,
+ no_telp: no_telpBaru,
+ status_pernikahan,
+ nama_orang_tua_wali,
+ nama_pasangan,
+ }
+ // console.log(tanggal_periksa, "ini sebelum add")
+ // create let tanggal_baru and get the date from tanggal. example : Thu Apr 28 2022 03:36:00 GMT+0800 (Central Indonesia Time) , output : "28-04-2022"
+ let formattedDate = moment(tanggal_periksa).format('YYYY-MM-DD');
+ // console.log(formattedDate, "ini tanggal baru")
+
+ let data_periksa = {
+ tanggal_periksa: formattedDate,
+ id_dokter: dokter,
+ jam_periksa
+ }
+
+ // console.log(data.data)
+ let response = await tambah_pasien(data, data_periksa);
+ if (!response) {
+ // await 1 second
+ await new Promise(resolve => setTimeout(resolve, 500));
+ setAwal(true);
+ nikInputRef.current.focus();
+ } else {
+ // clear input
+ setAwal(false);
+ setNik('');
+ setNama('');
+ setJenisKelamin('');
+ setTanggalLahir('');
+ setAlamat('');
+ setPekerjaan('');
+ setGolonganDarah('');
+ setPendidikan('');
+ setNoTelp('');
+ setStatusPernikahan('');
+ setNamaOrangTuaWali('');
+ setNamaPasangan('');
+ setTanggalPeriksa('');
+ setDokter('');
+ setJamPeriksa('');
+ setDokterList([]);
+ Router.replace(Router.asPath);
+ }
+
+ }
+ })
+ setBackdrop(false);
+ setSweetAlertLoading(false);
+ }
+ }
+
+ // tambah pasien
+ async function tambah_pasien(data, data_periksa) {
+ // await 4 second
+ // await new Promise(resolve => setTimeout(resolve, 4000));
+ // console.log(data, data_periksa, "ini data pasien")
+
+ // create new var data_combine and add datadata_periksa to data_periksa
+ let data_combine = {
+ ...data,
+ ...data_periksa
+ }
+ console.log(data_combine, "ini data combine")
+
+ try {
+ const response = await fetch(url, {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ body: JSON.stringify(data_combine)
+ })
+ // get response
+ const data_response = await response.json()
+ console.log(data_response, "ini data response")
+ // console.log(data, "ini data dari cek dokter")
+ if (response.status === 200) {
+ // create toast
+
+ toast.success(data_response.message)
+ return true
+ } else if (response.status === 400) {
+ toast.error(data_response.message)
+ setDataPasienAll(data_response.data)
+ return false
+ } else {
+ // create toast
+
+ toast.error("Terjadi kesalahan")
+ return false
+ }
+ } catch (err) {
+ toast.error(err)
+ console.log(err)
+ return false
+ }
+ }
+
+ const cariInputRef = useRef();
+
+ // cari pasien
+ const cariDataPasien = async (e) => {
+ e.preventDefault();
+ const inputan = cariInputRef.current.value;
+ setBackdrop(true);
+ try {
+ const urlnya = url + "?cariannya=" + inputan;
+ const response = await fetch(urlnya, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ }
+ })
+
+ const data = await response.json()
+ console.log(data, "ini datanya")
+ console.log(response.status, "ini responsenya")
+ if (response.status == 200) {
+ setAwal(true);
+ setDataPasienAll(data.data)
+ }
+
+ } catch (err) {
+ console.log(err)
+ toast.error("Terjadi kesalahan")
+ }
+ setBackdrop(false);
+ }
+
+ // ini untuk dialog edit jadwal
+ const [openDialogEdit, setOpenDialogEdit] = useState(false);
+ // const [dataEditPasien, setDataEditPasien] = useState();
+ const [dataPasienPeriksa, setDataPasienPeriksa] = useState({
+ nik: '',
+ nama: '',
+ jenis_kelamin: '',
+ tgl_lahir: '',
+ alamat: '',
+ pekerjaan: '',
+ golongan_darah: '',
+ pendidikan: '',
+ no_telp: '',
+ status_pernikahan: '',
+ nama_orang_tua_wali: '',
+ nama_pasangan: '',
+ })
+ // const [nikEdit, setNikEdit] = useState('');
+
+
+ // ini untuk dialog jadwal
+ const [openDialogJadwal, setOpenDialogJadwal] = useState(false);
+ const [nikPasienJadwal, setNikPasienJadwal] = useState('');
+ const [dataJadwalPasien, setDataJadwalPasien] = useState([])
+ const lihatJadwal = async (id) => {
+ setDataPasienPeriksa({
+ nik: '',
+ nama: '',
+ jenis_kelamin: '',
+ tgl_lahir: '',
+ alamat: '',
+ pekerjaan: '',
+ golongan_darah: '',
+ pendidikan: '',
+ no_telp: '',
+ status_pernikahan: '',
+ nama_orang_tua_wali: '',
+ nama_pasangan: '',
+ })
+ setNikPasienJadwal(id)
+ setDataJadwalPasien([]);
+ setBackdrop(true);
+ // await 4 sec
+ // await new Promise(resolve => setTimeout(resolve, 4000));
+ // setOpenDialogJadwal(true);
+ try {
+ const response = await fetch(url + "?id=" + id + "&jadwal=jadwal", {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ }
+ })
+ const data = await response.json()
+ console.log(data, "ini data pasien")
+ if (response.status === 200) {
+ setDataJadwalPasien(data.data)
+ setOpenDialogJadwal(true)
+ } else {
+ toast.error("Terjadi kesalahan")
+ }
+ } catch (err) {
+ console.log(err)
+ toast.error("Terjadi kesalahan")
+ }
+
+ setBackdrop(false);
+ }
+
+ async function updateJadwalTable() {
+ setBackdrop(true);
+ // try {
+ const urlnya = process.env.HTTP_URL + "/api/admin/jadwal_pasien";
+ const response = await fetch(urlnya, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ }
+ })
+ const data = await response.json()
+ console.log(data, "ini data pasien")
+
+ if (response.status === 200) {
+ setJadwalPasien(data.data)
+ // setOpenDialogJadwal(true)
+ } else {
+ toast.error("Terjadi kesalahan")
+ }
+ // } catch (err) {
+ // console.log(err)
+ // toast.error("Terjadi kesalahan")
+ // }
+
+ setBackdrop(false);
+ }
+
+ return (
+ <>
+
+ theme.zIndex.drawer + 1 }}>
+ {
+ if (stat) {
+ toast.success(message)
+ } else {
+ toast.error(message)
+ }
+ }
+ }
+ backdropnya={(status) => setBackdrop(status)}
+ sweetalertnya={(status) => setSweetAlertLoading(status)}
+ setClose={
+ (data = null, stat = false) => {
+ if (stat) {
+ setDataPasienPeriksa(data)
+ setOpenDialogEdit(false);
+ } else {
+ setOpenDialogEdit(false);
+ // setIdPasienEdit(null);
+ // setDataEditPasien(null);
+ setDataPasienPeriksa({
+ nik: '',
+ nama: '',
+ jenis_kelamin: '',
+ tgl_lahir: '',
+ alamat: '',
+ pekerjaan: '',
+ golongan_darah: '',
+ pendidikan: '',
+ no_telp: '',
+ status_pernikahan: '',
+ nama_orang_tua_wali: '',
+ nama_pasangan: '',
+ })
+ }
+
+ }
+ }
+ setOpenAgain={
+ () => {
+
+ setOpenDialogEdit(true);
+ }
+ }
+
+ />
+ {
+ if (stat) {
+ toast.success(message)
+ } else {
+ toast.error(message)
+ }
+ }
+ }
+ setClose={
+ (data = null, stat = false) => {
+ if (stat) {
+ setOpenDialogJadwal(false);
+ } else {
+ setOpenDialogJadwal(false);
+ setNikPasienJadwal('');
+ setDataJadwalPasien([]);
+ setDataPasienPeriksa({
+ nik: '',
+ nama: '',
+ jenis_kelamin: '',
+ tgl_lahir: '',
+ alamat: '',
+ pekerjaan: '',
+ golongan_darah: '',
+ pendidikan: '',
+ no_telp: '',
+ status_pernikahan: '',
+ nama_orang_tua_wali: '',
+ nama_pasangan: '',
+ })
+ }
+ }
+ }
+ backdropnya={(status) => setBackdrop(status)}
+ sweetalertnya={(status) => setSweetAlertLoading(status)}
+ setOpenAgain={
+ () => {
+
+ setOpenDialogJadwal(true);
+ }
+ }
+ updateJadwalTable={
+ () => {
+ updateJadwalTable()
+ }
+ }
+ />
+
-
+
-
+
Pasien Baru
setNik(e.target.value)}
id="nikTextField"
label="NIK"
placeholder="Masukkan NIK"
sx={{ width: "85%", boxShadow: 10 }}
+ InputProps={{
+ inputComponent: NumberFormatCustomNIK,
+ inputProps: {
+ maxLength: 16,
+ minLength: 16,
+ }
+ }}
/>
setNama(e.target.value)}
id="namaTextField"
label="Nama"
placeholder="Masukkan Nama"
sx={{ width: "85%", boxShadow: 10 }}
/>
+
+ Jenis Kelamin
+ setJenisKelamin(e.target.value)}
+ >
+
+ None
+
+ Laki-Laki
+ Perempuan
+
+
+
+
+
+ {
+ setTanggalLahir(newValue)
+ }}
+ renderInput={(params) => }
+ />
+
+
+
setAlamat(e.target.value)}
id="alamatTextField"
label="Alamat"
placeholder="Masukkan Alamat"
@@ -106,129 +727,537 @@ function DataPasienPage() {
/>
setPekerjaan(e.target.value)}
+ id="pekerjaanTextField"
+ label="Pekerjaan"
+ placeholder="Masukkan Pekerjaan"
+ sx={{ width: "85%", boxShadow: 10 }}
+ />
+
+
+ Golongan Darah
+ setGolonganDarah(e.target.value)}
+ >
+
+ None
+
+ O+
+ O-
+ A+
+ A-
+ B+
+ B-
+ AB+
+ AB-
+
+
+
+
+ Pendidikan
+ setPendidikan(e.target.value)}
+ >
+
+ None
+
+ Tiada
+ SD
+ SMP
+ SMA
+ Perguruan Tinggi
+
+
+
+ setNoTelp(e.target.value)}
id="NoTelpTextField"
label="No Telpon"
placeholder="Masukkan No Telpon"
sx={{ width: "85%", boxShadow: 10 }}
+ InputProps={{
+ inputComponent: NumberFormatCustom,
+ inputProps: {
+ maxLength: 13,
+ minLength: 11,
+ }
+ }}
/>
- Jenis Kelamin
+ Status Pernikahan
setStatusPernikahan(e.target.value)}
>
-
+
None
- Ten
- Twenty
- Thirty
+ Bujang
+ Telah Menikah
+ Duda
+ Janda
+
+ setNamaOrangTuaWali(e.target.value)}
+ id="namaOrangTuaWaliTextField"
+ label="Nama Orang Tua / Wali"
+ placeholder="Masukkan Nama Orang Tua / Wali"
+ sx={{ width: "85%", boxShadow: 10 }}
+ />
+
+ setNamaPasangan(e.target.value)}
+ id="namaPasanganTextField"
+ label="Nama Pasangan"
+ placeholder="Masukkan Nama Pasangan"
+ sx={{ width: "85%", boxShadow: 10 }}
+ />
-
-
-
- Dokter
-
-
- None
-
- Ten
- Twenty
- Thirty
-
+
+
+ }
+ label="Tanggal Pemeriksaan"
+ value={tanggal_periksa || null}
+ onChange={(newValue) => {
+ cekDoktor(newValue)
+ setTanggalPeriksa(newValue);
+ }}
+ />
+
-
+
+ Dokter
+ setDokter(e.target.value)}
+ >
+
+
+ {
+ (dokterList.length == 0) ? "Tiada Jadwal Dokter" : "-Pilih Dokter"
+ }
+
+
+ {
+ (dokterList.length > 0) ?
+ dokterList.map((dokter, index) => {
+ return (
+ {dokter.tb_dokter.nama} / {dokter.tb_dokter.spesialis}
+ )
+ }) :
+ null
+ }
+
+
+
- Tambah
+ Tambah
-
- List Pasien
-
-
+
+ List Pasien
+
+
+
+
+ {
+ if (e.target.value == "") {
+ setDataPasienAll(props.pasien)
+ }
+ }
+ }
+ />
+
+
+ Cari
+
+
+
+
+
+
-
-
- Dessert (100g serving)
- Calories
- Fat (g)
- Carbs (g)
- Protein (g)
-
-
-
- {rows.map((row) => (
-
-
- {row.name}
-
- {row.calories}
- {row.fat}
- {row.carbs}
- {row.protein}
+
+
+
+ NIK
+ Nama
+ Umur
+ Golongan Darah
+ Aksi
- ))}
-
-
-
-
-
- Cetak
-
-
-
+
+
+ {
+ !awal ?
+ // loop props.pasien and render table row
+ props.pasien.map((pasien, index) => {
+ return (
+
+ {pasien.nik}
+ {pasien.nama}
+ {pasien.tgl_lahir}
+ {pasien.golongan_darah}
+
+ {
+ setOpenDialogEdit(true)
+ setDataPasienPeriksa(pasien)
+ }
+ }
+ title="Edit Data Pasien"
+ >
+
+
+ {
+ lihatJadwal(pasien.nik)
+ setDataPasienPeriksa(pasien)
+ }
+ }
+ title="Lihat Jadwal Pasien"
+ >
+
+
+
+
+ )
+ })
+ :
+ (dataPasienAll.length > 0)
+ ?
+ // loop dataPasienAll and render table row
+ dataPasienAll.map((pasien, index) => {
+ return (
+
+ {pasien.nik}
+ {pasien.nama}
+ {pasien.tgl_lahir}
+ {pasien.golongan_darah}
+
+ {
+ setOpenDialogEdit(true)
+ setDataPasienPeriksa(pasien)
+ }
+ }
+ title="Edit Data Pasien"
+ >
+
+
+ {
+ lihatJadwal(pasien.nik)
+ }
+ }
+ title="Lihat Jadwal Pasien"
+ >
+
+
+
+
+ )
+ })
+ :
+
+ Tiada Data
+
+
+ }
+
+
+
+
+ {/*
+ Cetak
+
+ */}
+
+
+
+
+
+ Jadwal Dokter Hari {hari_ini}
+
+
+
+
+
+ Nama
+ Spesialis
+ Jam Mulai
+ Jam Selesai
+
+
+
+ {
+ (props.jadwal_dokter.length > 0)
+ ?
+ props.jadwal_dokter.map((jadwal, index) => {
+ return (
+
+ {jadwal.tb_dokter.nama}
+ {jadwal.tb_dokter.spesialis}
+ {jadwal.jam_mulai}
+ {jadwal.jam_selesai}
+
+ )
+ })
+ :
+
+
+ Tiada Jadwal Dokter
+
+
+ }
+
+
+
+
+ {/*
+ Cetak
+
+ */}
+
+
+
+
+
+ Jadwal Pasien Hari {hari_ini}
+
+
+
+
+
+ Jam Periksa
+ Doktor
+ NIK
+ Nama
+ Umur
+ Golongan Darah
+ Status
+
+
+
+ {
+ (jadwalPasien.length > 0)
+ ?
+ jadwalPasien.map((jadwal, index) => {
+ return (
+
+
+ {
+ jadwal.jam_periksa
+ }
+
+
+ {
+ jadwal.tb_dokter.nama
+ }
+
+ {jadwal.id_pasien}
+ {jadwal.tb_pasien.nama}
+
+
+
+ {jadwal.tb_pasien.golongan_darah}
+
+ {
+ (jadwal.diagnosa == "" || jadwal.diagnosa == null) ? "Belum Diperiksa" : "Sudah Diperiksa"
+ }
+
+
+ )
+ })
+ :
+
+
+ Tiada Jadwal Pasien
+
+
+ }
+
+
+
+
+ {/*
+ Cetak
+
+ */}
+
+
-
+ >
);
}
+export const getServerSideProps = withIronSessionSsr(
+ async function getServerSideProps({ req }) {
+ const user = req.session.user;
+ console.log(user, "sini di server side props");
+ // console.log(req.query)
+ if (!user) {
+ return {
+ redirect: {
+ destination: '/?error=true',
+ permanent: false,
+ }
+ };
+ }
+
+ let cek_user = await all_function.cek_user(user.username, user.password, user.role)
+ console.log(cek_user, "cek user")
+
+ if (cek_user !== true) {
+ return {
+ redirect: {
+ destination: '/?error=true',
+ permanent: false,
+ }
+ };
+ }
+
+ let all_pasien = await all_function.pasien_all();
+ let jadwal_dokter_today = await all_function.jadwal_dokter_today();
+ let jadwal_pasien_today = await all_function.jadwal_pasien_today();
+ // console.log(all_pasien, "ini all pasien");
+ // console.log(jadwal_today, "ini jadwal today");
+
+ return {
+ props: {
+ user: req.session.user,
+ pasien: all_pasien,
+ jadwal_dokter: jadwal_dokter_today,
+ jadwal_pasien: jadwal_pasien_today,
+ },
+ // revalidate: 10
+ };
+ },
+ {
+ cookieName: "myapp_cookiename",
+ password: "complex_password_at_least_32_characters_long",
+ // secure: true should be used in production (HTTPS) but can't be used in development (HTTP)
+ cookieOptions: {
+ secure: process.env.NODE_ENV === "production",
+ },
+ },
+);
+
export default DataPasienPage;
diff --git a/pages/admin/data-tindakan.js b/pages/admin/data-tindakan.js
index 87fdd82..c111672 100644
--- a/pages/admin/data-tindakan.js
+++ b/pages/admin/data-tindakan.js
@@ -325,6 +325,14 @@ function TindakanPage(props) {
export const getServerSideProps = withIronSessionSsr(
async function getServerSideProps({ req }) {
const user = req.session.user;
+ if (!user) {
+ return {
+ redirect: {
+ destination: '/?error=true',
+ permanent: false,
+ }
+ };
+ }
console.log(user, "sini di server side props");
// console.log(req.query)
diff --git a/pages/admin/index.js b/pages/admin/index.js
index 046a7e5..25aca57 100644
--- a/pages/admin/index.js
+++ b/pages/admin/index.js
@@ -1,4 +1,4 @@
-import { useState } from "react";
+import { useState } from "react";
import { styled } from '@mui/material/styles';
import Box from '@mui/material/Box';
import CssBaseline from '@mui/material/CssBaseline';
@@ -65,7 +65,7 @@ function AdminIndexPage() {
// }
// }
// cek_user()
-
+
return (
{/*
*/}
@@ -199,8 +199,42 @@ function AdminIndexPage() {
export const getServerSideProps = withIronSessionSsr(
async function getServerSideProps({ req }) {
const user = req.session.user;
+ if (!user) {
+ return {
+ redirect: {
+ destination: '/?error=true',
+ permanent: false,
+ }
+ };
+ }
console.log(user, "sini di server side props");
- // console.log(req.query)
+ console.log(user.role , "ini rolenya")
+
+ if (user.role != "Admin") {
+ try {
+ console.log("jalankannya ini di admin")
+ const url = process.env.HTTP_URL + "/api/login/logout";
+ await fetch(url, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ })
+
+ } catch (err) {
+
+ }
+
+ return {
+ redirect: {
+ destination: '/?error=true',
+ permanent: false,
+ }
+ };
+ }
let cek_user = await all_function.cek_user(user.username, user.password, user.role)
console.log(cek_user, "cek user")
diff --git a/pages/dokter/index.js b/pages/dokter/index.js
index 489a902..2a02c60 100644
--- a/pages/dokter/index.js
+++ b/pages/dokter/index.js
@@ -1,16 +1,11 @@
-import * as React from 'react';
+import { useState, useRef } from 'react';
+import Router from 'next/router';
import { styled } from '@mui/material/styles';
import Box from '@mui/material/Box';
import CssBaseline from '@mui/material/CssBaseline';
import Grid from '@mui/material/Grid';
import Card from '@mui/material/Card';
-import Button from '@mui/material/Button';
-import TextField from '@mui/material/TextField';
-import InputLabel from '@mui/material/InputLabel';
-import MenuItem from '@mui/material/MenuItem';
-import FormControl from '@mui/material/FormControl';
-import Select from '@mui/material/Select';
import Table from '@mui/material/Table';
import TableBody from '@mui/material/TableBody';
@@ -20,24 +15,97 @@ import TableHead from '@mui/material/TableHead';
import TableRow from '@mui/material/TableRow';
import Typography from '@mui/material/Typography';
-// clock picker
+// backdrop
+import Backdrop from '@mui/material/Backdrop';
+import CircularProgress from '@mui/material/CircularProgress';
+
+// toast
+import { ToastContainer, toast, Zoom, Bounce } from 'react-toastify'
+import 'react-toastify/dist/ReactToastify.css';
+
+// sweet alert
+import Swal from 'sweetalert2'
+import withReactContent from 'sweetalert2-react-content'
+const MySwal = withReactContent(Swal)
+
+// this for check session
+let all_function = require('../../function/all_function.js')
+import { withIronSessionSsr } from "iron-session/next";
+
+// for add dialog
+import PropTypes from 'prop-types';
+import Button from '@mui/material/Button';
+import Dialog from '@mui/material/Dialog';
+import DialogTitle from '@mui/material/DialogTitle';
+import DialogContent from '@mui/material/DialogContent';
+import DialogActions from '@mui/material/DialogActions';
+import IconButton from '@mui/material/IconButton';
+import CloseIcon from '@mui/icons-material/Close';
+
+// for time select
import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
-import { MobileTimePicker } from '@mui/x-date-pickers/MobileTimePicker';
+import { TimePicker } from '@mui/x-date-pickers/TimePicker';
+import TextField from '@mui/material/TextField';
+import FormControl from '@mui/material/FormControl';
+
+import moment from "moment"; //for converting date and time
+
import AppBarDokter from '../../components/dokter/appBar';
-function createData(name, calories, fat, carbs, protein) {
- return { name, calories, fat, carbs, protein };
-}
+import TabelJadwalDokter from '../../components/dokter/tabelJadwalDokter';
+
+
+// for add dialog
+const BootstrapDialog = styled(Dialog)(({ theme }) => ({
+ '& .MuiDialogContent-root': {
+ padding: theme.spacing(2),
+ },
+ '& .MuiDialogActions-root': {
+ padding: theme.spacing(1),
+ },
+}));
+
+const BootstrapDialogTitle = (props) => {
+ const { children, onClose, ...other } = props;
+
+ return (
+
+ {children}
+ {onClose ? (
+ theme.palette.grey[500],
+ }}
+ >
+
+
+ ) : null}
+
+ );
+};
+
+BootstrapDialogTitle.propTypes = {
+ children: PropTypes.node,
+ onClose: PropTypes.func.isRequired,
+};
+
+const mingguan = [
+ "Senin",
+ "Selasa",
+ "Rabu",
+ "Kamis",
+ "Jumat",
+ "Sabtu",
+ "Minggu"
+]
-const rows = [
- createData('Frozen yoghurt', 159, 6.0, 24, 4.0),
- createData('Ice cream sandwich', 237, 9.0, 37, 4.3),
- createData('Eclair', 262, 16.0, 24, 6.0),
- createData('Cupcake', 305, 3.7, 67, 4.3),
- createData('Gingerbread', 356, 16.0, 49, 3.9),
-];
const StyledTableCell = styled(TableCell)(({ theme }) => ({
[`&.${tableCellClasses.head}`]: {
@@ -59,89 +127,337 @@ const DrawerHeader = styled('div')(({ theme }) => ({
...theme.mixins.toolbar,
}));
-export default function DokterIndexPage() {
+function DokterIndexPage(props) {
+ // console.log(props)
+ const url = process.env.HTTP_URL + "/api/dokter"; // ini url
- const [age, setAge] = React.useState('');
+ const [backdrop, setBackdrop] = useState(false); //this is for backdrop
+ const [sweetAlertLoading, setSweetAlertLoading] = useState(false); //this is for sweet alert loading
- const handleChange = (event) => {
- setAge(event.target.value);
- };
+ const [openAddDialog, setOpenAddDialog] = useState(false);
- // clock picker
- const [value, setValue] = React.useState(null);
+ const [titleDialog, setTitleDialog] = useState('');
+ const [jam_mulai, setJamMulai] = useState(null);
+ const [jam_selesai, setJamSelesai] = useState(null);
+ const jam_mulaiInputRef = useRef(null);
+ const jam_selesaiInputRef = useRef(null);
+ const [hari, setHari] = useState('');
+ const [idnya, setIdnya] = useState('');
+ const [dataEdit, setDataEdit] = useState(null);
+
+ // open add dialog
+ async function before_add_jadwal(hari) {
+ setTitleDialog(`Tambah Jadwal Hari ${hari}`);
+ setHari(hari);
+ setJamMulai(null);
+ setJamSelesai(null);
+ setIdnya('tambah');
+ setOpenAddDialog(true);
+ }
+
+ // before tambah jadwal with dialog and time checker
+ async function tambah_jadwal(stat) {
+ // console.log(jam_mulai, jam_selesai, hari, "ini cek data tambah")
+ if (jam_mulai == null) {
+ jam_mulaiInputRef.current.focus();
+ toast.error("Jam mulai harus diisi")
+ return false;
+ } else if (jam_selesai == null) {
+ jam_selesaiInputRef.current.focus();
+ toast.error("Jam selesai harus diisi")
+ return false;
+ } else if (jam_mulai >= jam_selesai) {
+ jam_mulaiInputRef.current.focus();
+ toast.error("Jam mulai harus lebih kecil dari jam selesai")
+ return false;
+ } else {
+ setOpenAddDialog(false);
+ setSweetAlertLoading(true);
+ if (stat == 'tambah') {
+ console.log(jam_mulai, jam_selesai, hari, "ini jalankan data tambah")
+
+ await MySwal.fire({
+ title: 'Yakin ?',
+ text: `Jadwal Baru Pada Hari ${hari} Akan Ditambahkan`,
+ icon: 'info',
+ showCancelButton: true,
+ confirmButtonColor: '#3085d6',
+ cancelButtonColor: '#d33',
+ confirmButtonText: 'Ya, tambah!'
+ }).then(async (result) => {
+ if (result.value) {
+ setBackdrop(true);
+ // await 4 second
+ // await new Promise(resolve => setTimeout(resolve, 4000));
+ // await edit_data_dokter(nik,datanya);
+ // clear hari ,jam_mulai,jam_selesai
+ await confirm_tambah_jadwal(hari, jam_mulai, jam_selesai);
+ setHari('');
+ setJamMulai(null);
+ setJamSelesai(null);
+ } else {
+ setOpenAddDialog(true);
+ }
+ })
+ } else if (stat == 'edit') {
+ if (dataEdit.jam_mulai == jam_mulai && dataEdit.jam_selesai == jam_selesai) {
+ toast.error("Jadwal tidak berubah")
+ // open dialog
+ setOpenAddDialog(true);
+ // focus to jam_mulai
+ jam_mulaiInputRef.current.focus();
+ return false;
+ }
+
+ await MySwal.fire({
+ title: 'Yakin ?',
+ text: `Jadwal Pada Hari ${hari} Akan Diedit`,
+ icon: 'info',
+ showCancelButton: true,
+ confirmButtonColor: '#3085d6',
+ cancelButtonColor: '#d33',
+ confirmButtonText: 'Ya, edit!'
+ }).then(async (result) => {
+ if (result.value) {
+ setBackdrop(true);
+ // await 4 second
+ // await new Promise(resolve => setTimeout(resolve, 4000));
+ console.log(hari, "ini hari")
+ await confirm_edit_jadwal(hari, jam_mulai, jam_selesai);
+
+ setHari('');
+ setJamMulai(null);
+ setJamSelesai(null);
+ } else {
+ setOpenAddDialog(true);
+ }
+ })
+ }
+
+ setBackdrop(false);
+ setSweetAlertLoading(false);
+ }
+ }
+
+ // confirm tambah jadwal
+ async function confirm_tambah_jadwal(hari, jam_mulai, jam_selesai) {
+ try {
+ // moment format jam_mulai to only hour and minute
+ jam_mulai = moment(jam_mulai).format("HH:mm");
+ jam_selesai = moment(jam_selesai).format("HH:mm");
+ // console.log(url)
+ const urlnya = url + "/jadwal_dokter";
+ const response = await fetch(urlnya, {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ body: JSON.stringify(
+ {
+ hari,
+ jam_mulai,
+ jam_selesai,
+ nik: props.user
+ }
+ )
+ })
+ // get response
+ const data = await response.json()
+ console.log(data, "ini data tambah jadwal")
+ if (response.status === 200) {
+ // create toast
+
+ toast.success(data.message)
+ Router.replace(Router.asPath);
+ return true
+ } else if (response.status === 400) {
+
+ toast.success(data.message)
+ return false
+ } else {
+ // create toast
+
+ toast.error(data.message)
+ return false
+ }
+ } catch (err) {
+ toast.error("Terjadi kesalahan pada server")
+ return false
+ }
+ }
+
+ // confirm edit jadwal
+ async function confirm_edit_jadwal(hari, jam_mulai, jam_selesai) {
+ try {
+ // moment format jam_mulai to only hour and minute
+ jam_mulai = moment(jam_mulai).format("HH:mm");
+ jam_selesai = moment(jam_selesai).format("HH:mm");
+ // console.log(url)
+ const urlnya = url + "/jadwal_dokter?id=" + props.user;
+ const response = await fetch(urlnya, {
+ method: 'PUT',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ body: JSON.stringify(
+ {
+ hari,
+ jam_mulai,
+ jam_selesai
+ }
+ )
+ })
+ // get response
+ const data = await response.json()
+ console.log(data, "ini data edit jadwal")
+ if (response.status === 200) {
+ // create toast
+
+ toast.success(data.message)
+ Router.replace(Router.asPath);
+ return true
+ } else if (response.status === 400) {
+
+ toast.success(data.message)
+ return false
+ } else {
+ // create toast
+
+ toast.error(data.message)
+ return false
+ }
+ } catch (err) {
+ toast.error("Terjadi kesalahan pada server")
+ return false
+ }
+ }
+
+ // confirm hapus jadwal
+ async function confirm_hapus_jadwal(hari) {
+ try {
+ // moment format jam_mulai to only hour and minute
+ // console.log(url)
+ const urlnya = url + "/jadwal_dokter?id=" + props.user;
+ const response = await fetch(urlnya, {
+ method: 'DELETE',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ body: JSON.stringify(
+ {
+ hari
+ }
+ )
+ })
+ // get response
+ const data = await response.json()
+ console.log(data, "ini data hapus jadwal")
+ if (response.status === 200) {
+ // create toast
+
+ toast.success(data.message)
+ Router.replace(Router.asPath);
+ return true
+ } else if (response.status === 400) {
+
+ toast.success(data.message)
+ return false
+ } else {
+ // create toast
+
+ toast.error(data.message)
+ return false
+ }
+ } catch (err) {
+ toast.error("Terjadi kesalahan pada server")
+ return false
+ }
+ }
return (
-
+ <>
+
{
+ if (reason && reason == "backdropClick")
+ return;
+ setOpenAddDialog(false)
+ }
+ }
+ aria-labelledby="customized-dialog-title"
+ open={openAddDialog}
+ fullWidth={true}
+ >
+ {
+ if (reason && reason == "backdropClick")
+ return;
+ setOpenAddDialog(false)
+ }
+ }>
+ {titleDialog}
+
+
+
+
+ {
+ setJamMulai(newValue);
+ }}
+ renderInput={(params) => }
+ />
+
+
+
+
+
+ {
+ setJamSelesai(newValue);
+ }}
+ renderInput={(params) => }
+ />
+
+
+
+
+ {
+ tambah_jadwal(idnya)
+ }
+ } variant="outlined" >
+ {idnya === 'tambah' ? 'Tambah Jadwal' : 'Edit Jadwal'}
+
+
+
+
+
+
+
theme.zIndex.drawer + 1 }}>
-
+
-
-
- Tambah Jadwal
-
-
- Hari
-
-
- None
-
- Ten
- Twenty
- Thirty
-
-
-
-
-
- {
- setValue(newValue);
- }}
- renderInput={(params) => }
- />
-
-
-
-
-
- {
- setValue(newValue);
- }}
- renderInput={(params) => }
- />
-
-
-
-
-
- Tambah
-
-
-
-
+
List Tindakan
+ }}>List Jadwal
- Dessert (100g serving)
- Calories
- Fat (g)
- Carbs (g)
- Protein (g)
+ Hari
+ Jam Mulai
+ Jam Selesai
+ Aksi
- {rows.map((row) => (
-
-
- {row.name}
-
- {row.calories}
- {row.fat}
- {row.carbs}
- {row.protein}
-
- ))}
+ {
+ // console.log(hari,jam_mulai,jam_selesai, "ini data add nya")
+ before_add_jadwal(hari)
+ }
+ }
+ edit={
+ (hari, jam_mulai, jam_selesai) => {
+ setTitleDialog("Edit Jadwal Hari " + hari)
+
+ //get hours and minutes
+ let jamMulaiGetHours = jam_mulai[0] + jam_mulai[1]
+ let jamMulaiGetMinutes = jam_mulai[3] + jam_mulai[4]
+
+ // convert to GMT String
+ let jam_mulai_baru = new Date()
+ jam_mulai_baru.setHours(jamMulaiGetHours)
+ jam_mulai_baru.setMinutes(jamMulaiGetMinutes)
+ jam_mulai_baru.setSeconds(0)
+ jam_mulai_baru.toString()
+
+ // get hours and minutes
+ let jamSelesaiGetHours = jam_selesai[0] + jam_selesai[1]
+ let jamSelesaiGetMinutes = jam_selesai[3] + jam_selesai[4]
+
+ // convert to GMT String
+ let jam_selesai_baru = new Date()
+ jam_selesai_baru.setHours(jamSelesaiGetHours)
+ jam_selesai_baru.setMinutes(jamSelesaiGetMinutes)
+ jam_selesai_baru.setSeconds(0)
+ jam_selesai_baru.toString()
+
+ setDataEdit(
+ {
+ jam_mulai: jam_mulai_baru,
+ jam_selesai: jam_selesai_baru,
+ }
+ )
+
+ setHari(hari)
+ setJamMulai(jam_mulai_baru)
+ setJamSelesai(jam_selesai_baru)
+ setIdnya("edit")
+ setOpenAddDialog(true);
+ }
+ }
+ delete={
+ (hari) => {
+ // create sweetalert
+ MySwal.fire({
+ title: 'Yakin?',
+ text: "Jadwal Hari " + hari + " Akan dihapus",
+ icon: 'warning',
+ showCancelButton: true,
+ confirmButtonColor: '#3085d6',
+ cancelButtonColor: '#d33',
+ confirmButtonText: 'Ya, Hapus!'
+ }).then((result) => {
+ if (result.value) {
+ // console.log(hari, "ini data delete nya")
+ confirm_hapus_jadwal(hari)
+ }
+ })
+ }
+ }
+ />
-
-
- Cetak
-
-
+
-
+ >
);
}
+
+
+export const getServerSideProps = withIronSessionSsr(
+ async function getServerSideProps({ req }) {
+ const user = req.session.user;
+ console.log(user, "sini di server side props");
+ // console.log(req.query)
+ if (!user) {
+ return {
+ redirect: {
+ destination: '/?error=true',
+ permanent: false,
+ }
+ };
+ }
+
+ if (user.role != "Dokter") {
+ try {
+ console.log("jalankannya ini di dokter")
+ const url = process.env.HTTP_URL + "/api/login/logout";
+ await fetch(url, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ })
+
+ } catch (err) {
+
+ }
+
+ return {
+ redirect: {
+ destination: '/?error=true',
+ permanent: false,
+ }
+ };
+ }
+
+ let cek_user = await all_function.cek_user(user.username, user.password, user.role)
+ console.log(cek_user, "cek user")
+
+ if (cek_user !== true) {
+ return {
+ redirect: {
+ destination: '/?error=true',
+ permanent: false,
+ }
+ };
+ }
+
+ const data_jadwal = await all_function.get_jadwal_dokter(user.nik)
+ console.log(data_jadwal, "ini data jadwal")
+ return {
+ props: {
+ user: user.nik,
+ data_jadwal: data_jadwal,
+ },
+ // revalidate: 10
+ };
+ },
+ {
+ cookieName: "myapp_cookiename",
+ password: "complex_password_at_least_32_characters_long",
+ // secure: true should be used in production (HTTPS) but can't be used in development (HTTP)
+ cookieOptions: {
+ secure: process.env.NODE_ENV === "production",
+ },
+ },
+);
+
+export default DokterIndexPage;
\ No newline at end of file
diff --git a/pages/dokter/rekam-medis/data.js b/pages/dokter/rekam-medis/data.js
index a0116b3..d65ffc6 100644
--- a/pages/dokter/rekam-medis/data.js
+++ b/pages/dokter/rekam-medis/data.js
@@ -1,5 +1,5 @@
-import { useRouter } from 'next/router'
-import * as React from 'react';
+import Router from 'next/router'
+import { useState, useRef } from 'react';
import { styled } from '@mui/material/styles';
import Typography from '@mui/material/Typography';
import Box from '@mui/material/Box';
@@ -9,12 +9,51 @@ import Grid from '@mui/material/Grid';
import Card from '@mui/material/Card';
import Button from '@mui/material/Button';
import TextField from '@mui/material/TextField';
+import FormHelperText from '@mui/material/FormHelperText';
+
+// backdrop
+import Backdrop from '@mui/material/Backdrop';
+import CircularProgress from '@mui/material/CircularProgress';
+
+// toast
+import { ToastContainer, toast, Zoom, Bounce } from 'react-toastify'
+import 'react-toastify/dist/ReactToastify.css';
+
+// sweet alert
+import Swal from 'sweetalert2'
+import withReactContent from 'sweetalert2-react-content'
+const MySwal = withReactContent(Swal)
+
+// this for check session
+let all_function = require('../../../function/all_function.js')
+import { withIronSessionSsr } from "iron-session/next";
+
+import { formatInTimeZone } from 'date-fns-tz' // format timezone
+
+// for tindakan select
+import OutlinedInput from '@mui/material/OutlinedInput';
import InputLabel from '@mui/material/InputLabel';
import MenuItem from '@mui/material/MenuItem';
import FormControl from '@mui/material/FormControl';
+import ListItemText from '@mui/material/ListItemText';
import Select from '@mui/material/Select';
+import Checkbox from '@mui/material/Checkbox';
+import Chip from '@mui/material/Chip';
+
+const ITEM_HEIGHT = 48;
+const ITEM_PADDING_TOP = 8;
+const MenuProps = {
+ PaperProps: {
+ style: {
+ maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,
+ width: 250,
+ },
+ },
+};
+
import AppBarDokter from '../../../components/dokter/appBar';
+import RekamMedisSelectedObat from '../../../components/dokter/selectedObat';
const DrawerHeader = styled('div')(({ theme }) => ({
display: 'flex',
@@ -25,22 +64,134 @@ const DrawerHeader = styled('div')(({ theme }) => ({
...theme.mixins.toolbar,
}));
-const Post = () => {
- const router = useRouter() // ini untuk get query dari url
-
-
+const DataRekamMedisPage = (props) => {
+ // console.log(props)
+ const [backdrop, setBackdrop] = useState(false); //this is for backdrop
+ const [sweetAlertLoading, setSweetAlertLoading] = useState(false); //this is for sweet alert loading
+
+ const keluhanInputRef = useRef(null);
+ const diagnosaInputRef = useRef(null);
+ const keterangannInputRef = useRef(null);
+
+
+ const dataPasien = props.data_rekam_medis.tb_pasien;
+ const tindakan_all = props.tindakan_all;
+ const [tindakan_selected, setTindakanSelected] = useState([]);
+ const [tindakan_selected_id, setTindakanSelectedId] = useState([]);
+ const obat_all = props.obat_all;
+ const [obat_selected, setObatSelected] = useState([]);
+ const [obat_selected_id, setObatSelectedId] = useState([]);
+
+ const [data_obat, setDataObat] = useState([]);
+
+ async function add_rekam_medis(e) {
+ e.preventDefault();
+ const id_rekam_medis = props.data_rekam_medis.id_rekam_medis;
+ const keluhan = keluhanInputRef.current.value;
+ const diagnosa = diagnosaInputRef.current.value;
+ const keterangan = keterangannInputRef.current.value;
+ const tindakan = tindakan_selected_id;
+ const obat = data_obat;
+ console.log(obat)
+
+ let cek_error = false
+
+ if(obat.length > 0) {
+ //loop obat using for and check in jumlah if null
+ for(let i = 0; i < obat.length; i++) {
+ if(obat[i].jumlah == null) {
+ cek_error = true
+ break;
+ }
+ }
+
+ if(cek_error) {
+ toast.error('Jumlah obat tidak boleh kosong')
+ return ;
+ }
+ }
+
+ setSweetAlertLoading(true);
+ await MySwal.fire({
+ title: 'Yakin ?',
+ text: `Rekam medis pasien ${props.data_rekam_medis.tb_pasien.nama} akan disimpan`,
+ icon: 'info',
+ showCancelButton: true,
+ confirmButtonColor: '#3085d6',
+ cancelButtonColor: '#d33',
+ confirmButtonText: 'Ya, simpan!'
+ }).then(async (result) => {
+ if (result.value) {
+ setBackdrop(true);
+
+
+
+ // await 4 sec
+ // await new Promise(resolve => setTimeout(resolve, 4000));
+ let data_all = {
+ keluhan,
+ diagnosa,
+ keterangan,
+ tindakan,
+ obat,
+ }
+
+ await confirm_add_rekam_medis(id_rekam_medis, data_all)
+
+ }
+ })
+ setBackdrop(false);
+ setSweetAlertLoading(false);
+
+ }
+
+ async function confirm_add_rekam_medis(id_rekam_medis, data_all) {
+ try {
+ let url = process.env.HTTP_URL + "/api/dokter/rekam_medis_update?id_rekam_medis=" + id_rekam_medis + "&id_dokter=" + props.user;
+ let data = await fetch(url, {
+ method: 'PUT',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ body: JSON.stringify(data_all)
+ })
+ // let data_json = await data.json();
+ // console.log(data, "ini data dari cek dokter")
+ if (data.status === 200) {
+ // create toast
+ toast.success('Rekam medis berhasil disimpan')
+ Router.push('/')
+ return true
+ }else{
+ toast.error('Rekam medis gagal disimpan')
+ return false
+ }
+ }catch(err) {
+ toast.error('Rekam medis gagal disimpan')
+ return false
+ }
+ }
+
+
return (
-
-
+ <>
+
+ theme.zIndex.drawer + 1 }}>
+
-
-
+
+
-
+
-
+
{
backgroundColor: "silver",
}}>Tambah Jadwal
+
+
{
/>
{
sx={{ width: "90%", boxShadow: 10 }}
/>
-
- Tambah
-
+
+
-
+
+
{
paddingTop: "10px",
paddingBottom: "10px",
backgroundColor: "silver",
- }}> List Tindakan
-
-
-
- Cetak
-
+ }}> Daftar Tindakan
+
+ Tindakan
+ {
+ setTindakanSelected(event.target.value);
+ let data_selected = event.target.value
+ let datanya = []
+ for (let i = 0; i < data_selected.length; i++) {
+ datanya.push(data_selected[i].split('-')[0])
+ }
+ setTindakanSelectedId(datanya)
+ }
+ }
+ input={ }
+ renderValue={(selected) => (
+
+ {selected.map((value) => (
+
+ ))}
+
+ )}
+ MenuProps={MenuProps}
+ >
+ {tindakan_all.map((name) => (
+
+ -1} />
+
+
+ ))}
+
+ Kosongkan Jika Tiada Tindakan
+
+
+
+ Daftar Obat
+
+ Obat
+ {
+ setObatSelected(event.target.value);
+ let data_selected = event.target.value
+ let datanya = []
+ let data_obat = []
+ for (let i = 0; i < data_selected.length; i++) {
+ datanya.push(data_selected[i].split('-')[0])
+ // push to data_obat id:data_selected[i].split('-')[0] and jumlah:null
+ data_obat.push({ id_obat: data_selected[i].split('-')[0], jumlah: null })
+ }
+ setObatSelectedId(datanya)
+ setDataObat(data_obat)
+
+ }
+ }
+ input={ }
+ renderValue={(selected) => (
+
+ {selected.map((value) => (
+
+ ))}
+
+ )}
+ MenuProps={MenuProps}
+ >
+ {obat_all.map((name) => (
+
+ -1} />
+
+
+ ))}
+
+ Kosongkan Jika Tiada Obat
+
+
+ {
+ console.log(data)
+ setDataObat(data)
+ }
+ }
+ errornya={
+ (message) => {
+ toast.error(message)
+ }
+ }
+ />
+
+
+
+
+ Simpan
+
+
-
-
+
+ >
);
}
-// ini untuk get query dari url
-Post.getInitialProps = async ({ query }) => {
- // console.log(query)
- return {query }
-}
+// // ini untuk get query dari url
+// DataRekamMedisPage.getInitialProps = async ({ query }) => {
+// // console.log(query)
+// return {query }
+// }
-export default Post
\ No newline at end of file
+export const getServerSideProps = withIronSessionSsr(
+ async function getServerSideProps({ req }) {
+ const user = req.session.user;
+ // console.log(user, "sini di server side props");
+ // console.log(req.query)
+ if (!user) {
+ return {
+ redirect: {
+ destination: '/?error=true',
+ permanent: false,
+ }
+ };
+ }
+ if (user.role != "Dokter") {
+ try {
+ const url = process.env.HTTP_URL + "/api/login/logout";
+ await fetch(url, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ })
+ } catch (err) {
+
+ }
+
+ return {
+ redirect: {
+ destination: '/?error=true',
+ permanent: false,
+ }
+ };
+ }
+
+ let cek_user = await all_function.cek_user(user.username, user.password, user.role)
+ // console.log(cek_user, "cek user")
+
+ if (cek_user !== true) {
+ return {
+ redirect: {
+ destination: '/?error=true',
+ permanent: false,
+ }
+ };
+ }
+
+ const id = req.query.id;
+ if (!id) {
+ return {
+ redirect: {
+ destination: '/dokter/rekam-medis',
+ permanent: false,
+ }
+ };
+ }
+ console.log(id, "ini idnya")
+ const cek_data_rekam_medis = await all_function.cek_data_rekam_medis(id, user.nik)
+
+ // if(ce)
+ if(!cek_data_rekam_medis){
+ return {
+ redirect: {
+ destination: '/dokter/rekam-medis',
+ permanent: false,
+ }
+ };
+ }
+
+ if(cek_data_rekam_medis.diagnosa != null && cek_data_rekam_medis.diagnosa != '' && cek_data_rekam_medis.keluhan != null && cek_data_rekam_medis.keluhan != ''){
+ return {
+ redirect: {
+ destination: '/dokter/rekam-medis',
+ permanent: false,
+ }
+ };
+ }
+
+ const tindakan_all = await all_function.tindakan_all()
+ const obat_all = await all_function.obat_all()
+
+
+
+ return {
+ props: {
+ user: user.nik,
+ data_rekam_medis: cek_data_rekam_medis,
+ tindakan_all: tindakan_all,
+ obat_all: obat_all,
+ },
+ // revalidate: 10
+ };
+ },
+ {
+ cookieName: "myapp_cookiename",
+ password: "complex_password_at_least_32_characters_long",
+ // secure: true should be used in production (HTTPS) but can't be used in development (HTTP)
+ cookieOptions: {
+ secure: process.env.NODE_ENV === "production",
+ },
+ },
+);
+
+export default DataRekamMedisPage
\ No newline at end of file
diff --git a/pages/dokter/rekam-medis/index.js b/pages/dokter/rekam-medis/index.js
index c744ec0..f075aae 100644
--- a/pages/dokter/rekam-medis/index.js
+++ b/pages/dokter/rekam-medis/index.js
@@ -1,4 +1,4 @@
-import * as React from 'react';
+import { useState, useRef } from 'react';
import { styled } from '@mui/material/styles';
import Box from '@mui/material/Box';
import CssBaseline from '@mui/material/CssBaseline';
@@ -17,21 +17,36 @@ import TableHead from '@mui/material/TableHead';
import TableRow from '@mui/material/TableRow';
import Typography from '@mui/material/Typography';
+// backdrop
+import Backdrop from '@mui/material/Backdrop';
+import CircularProgress from '@mui/material/CircularProgress';
+// toast
+import { ToastContainer, toast, Zoom, Bounce } from 'react-toastify'
+import 'react-toastify/dist/ReactToastify.css';
+
+// sweet alert
+import Swal from 'sweetalert2'
+import withReactContent from 'sweetalert2-react-content'
+const MySwal = withReactContent(Swal)
+
+// this for check session
+let all_function = require('../../../function/all_function.js')
+import { withIronSessionSsr } from "iron-session/next";
import AppBarDokter from '../../../components/dokter/appBar';
+import TabelJadwalRekamMedis from '../../../components/dokter/tableJadwalRekamMedis';
+
+let date = new Date();
+let year = date.getFullYear();
+let month = date.getMonth() + 1;
+let day = date.getDate();
+month = month < 10 ? '0' + month : month;
+day = day < 10 ? '0' + day : day;
+let today_date = year + '-' + month + '-' + day;
+
-function createData(name, calories, fat, carbs, protein) {
- return { name, calories, fat, carbs, protein };
-}
-const rows = [
- createData('Frozen yoghurt', 159, 6.0, 24, 4.0),
- createData('Ice cream sandwich', 237, 9.0, 37, 4.3),
- createData('Eclair', 262, 16.0, 24, 6.0),
- createData('Cupcake', 305, 3.7, 67, 4.3),
- createData('Gingerbread', 356, 16.0, 49, 3.9),
-];
const StyledTableCell = styled(TableCell)(({ theme }) => ({
[`&.${tableCellClasses.head}`]: {
@@ -53,19 +68,70 @@ const DrawerHeader = styled('div')(({ theme }) => ({
...theme.mixins.toolbar,
}));
-export default function RekamMedisPage() {
+function RekamMedisPage(props) {
+ console.log(props, "ini propsnya")
+ const [backdrop, setBackdrop] = useState(false); //this is for backdrop
+ const [sweetAlertLoading, setSweetAlertLoading] = useState(false); //this is for sweet alert loading
+
+ const [tanggal, setTanggal] = useState(today_date);
+
+ const headerAwal = " Tanggal : " + tanggal
+ const [header, setHeader] = useState(headerAwal);
+
+ const dataAwal = (props.jadwal_ini_hari)
+
+ const [data, setData] = useState(dataAwal);
+
+ const inputanInputRef = useRef(null);
+
+ const cariData = async (e) => {
+ e.preventDefault();
+ const inputan = inputanInputRef.current.value;
+ const inputan_lower = inputan.toLowerCase();
+
+ try {
+ const url = process.env.HTTP_URL + "/api/dokter/cari_rekam_medis?data=" + inputan_lower + "&data2=" + inputan_lower + "&id_dokter=" + props.user;
+ const response = await fetch(url, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ })
+
+ const data = await response.json();
+ // console.log(data, "ini data cari data")
+ if (response.status === 200) {
+ setHeader(" Pencarian : " + inputan);
+ setData(data.data);
+ } else {
+ toast.error("Data tidak ditemukan")
+ }
+ } catch (err) {
+ toast.error("Terjadi kesalahan saat mengambil data")
+ }
+
+
+ }
return (
-
+ <>
+
+
theme.zIndex.drawer + 1 }}>
-
+
-
+
Rekam Medis
-
+ }}>Rekam Medis {header}
+
{
+ if (inputanInputRef.current.value === "") {
+ setHeader(headerAwal);
+ setData(dataAwal);
+ }
+ }
+ }
/>
- Cari
+ Cari
@@ -96,33 +172,38 @@ export default function RekamMedisPage() {
padding: "15px",
}}>
- Dessert (100g serving)
- Calories
- Fat (g)
- Carbs (g)
- Protein (g)
+ No
+ NIK
+ Nama
+ Waktu Periksa
+ Umur
+ Golongan Darah
+ Status
+ Aksi
- {rows.map((row) => (
-
-
- {row.name}
-
- {row.calories}
- {row.fat}
- {row.carbs}
- {row.protein}
-
- ))}
+ {
+ toast.error(message)
+ }
+ }
+ user={props.user}
+ backdropnya={
+ (status) => {
+ setBackdrop(status)
+ }
+ }
+ />
@@ -137,6 +218,82 @@ export default function RekamMedisPage() {
-
+ >
);
}
+
+
+export const getServerSideProps = withIronSessionSsr(
+ async function getServerSideProps({ req }) {
+ const user = req.session.user;
+ // console.log(user, "sini di server side props");
+ // console.log(req.query)
+ if (!user) {
+ return {
+ redirect: {
+ destination: '/?error=true',
+ permanent: false,
+ }
+ };
+ }
+ if (user.role != "Dokter") {
+ try {
+ const url = process.env.HTTP_URL + "/api/login/logout";
+ await fetch(url, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'allow-cors-origin': '*',
+ 'crossDomain': true,
+ 'Authorization': 'Basic ' + btoa(`${process.env.ADMIN_AUTH}:${process.env.ADMIN_PASSWORD}`)
+ },
+ })
+ } catch (err) {
+
+ }
+
+ return {
+ redirect: {
+ destination: '/?error=true',
+ permanent: false,
+ }
+ };
+ }
+
+ let cek_user = await all_function.cek_user(user.username, user.password, user.role)
+ // console.log(cek_user, "cek user")
+
+ if (cek_user !== true) {
+ return {
+ redirect: {
+ destination: '/?error=true',
+ permanent: false,
+ }
+ };
+ }
+
+ let jadwal_ini_hari = await all_function.jadwal_ini_hari(user.nik)
+ // const tindakan_all = await all_function.tindakan_all()
+ // const obat_all = await all_function.obat_all()
+ // console.log(user.nik, "ini niknya")
+ return {
+ props: {
+ user: user.nik,
+ jadwal_ini_hari: jadwal_ini_hari,
+ // tindakan_all: tindakan_all,
+ // obat_all: obat_all,
+ },
+ // revalidate: 10
+ };
+ },
+ {
+ cookieName: "myapp_cookiename",
+ password: "complex_password_at_least_32_characters_long",
+ // secure: true should be used in production (HTTPS) but can't be used in development (HTTP)
+ cookieOptions: {
+ secure: process.env.NODE_ENV === "production",
+ },
+ },
+);
+
+export default RekamMedisPage;
diff --git a/pages/index.js b/pages/index.js
index a976297..4ea5418 100644
--- a/pages/index.js
+++ b/pages/index.js
@@ -1,25 +1,70 @@
+// import Router from 'next/router'
+import { useRouter } from 'next/router'
+import { useEffect , useState } from 'react';
+
+
import ResponsiveAppBarIndex from "../components/before_login/appBar"
import GridIndex from "../components/before_login/body"
+let all_function = require('../function/all_function.js')
+
function Home(props) {
- // console.log(props, "sini di home");
+ // const router = useRouter();
+ // // const error = !props.query.error ? false : true
+ console.log(props)
+
+
+ // useEffect(() => {
+ // if(!router.isReady) return;
+ // const query = router.query;
+ // }, [router.isReady, router.query]);
+
+
+ // let cekError;
+ // if(router.query.error){
+ // cekError = true
+ // }else{
+ // cekError = false
+ // }
+
return (
)
}
-export async function getServerSideProps({req}) {
- // console.log(req.query.error)
- // if
- return {
- props: {
- error: (req.query.error == 'true') ? true : false,
- }
- }
+// export async function getServerSideProps({req}) {
+// // console.log(req.query.error)
+// // if
+// return {
+// props: {
+// error: (req.query.error == 'true') ? true : false,
+// }
+// }
+// }
+
+// export async function getStaticProps() {
+// let jadwal_dokter_today = await all_function.jadwal_dokter_today_home();
+// return {
+// props: {
+// jadwal_dokter_today: jadwal_dokter_today,
+// },
+// revalidate: 10,
+// }
+// }
+
+
+// ini untuk get query dari url
+Home.getInitialProps = async ({ query }) => {
+ // console.log(query)
+ let jadwal_dokter_today = await all_function.jadwal_dokter_today_home();
+ // const hehe = "ini dia"
+
+ return {query, jadwal_dokter_today : jadwal_dokter_today }
}
export default Home
\ No newline at end of file
diff --git a/public/logo.png b/public/logo.png
new file mode 100644
index 0000000..219d360
Binary files /dev/null and b/public/logo.png differ
diff --git a/public/logo1.png b/public/logo1.png
new file mode 100644
index 0000000..8c06e82
Binary files /dev/null and b/public/logo1.png differ
diff --git a/server/database/index.js b/server/database/index.js
index 7817f58..bd7508e 100644
--- a/server/database/index.js
+++ b/server/database/index.js
@@ -3,13 +3,14 @@ const Sequelize = require('sequelize');
const sequelize = new Sequelize(dbConfig.DB, dbConfig.USER, dbConfig.PASSWORD, {
host: dbConfig.HOST,
dialect: dbConfig.dialect,
- operatorsAliases: false,
+ operatorsAliases: 0,
pool: {
max: dbConfig.pool.max,
min: dbConfig.pool.min,
acquire: dbConfig.pool.acquire,
idle: dbConfig.pool.idle
- }
+ },
+ timezone: '+08:00'
})
const db = {}
db.Sequelize = Sequelize
@@ -23,6 +24,7 @@ db.dokter = require('./model/dokter.model.js')(sequelize, Sequelize)
db.pasien = require('./model/pasien.model.js')(sequelize, Sequelize)
db.tindakan = require('./model/tindakan.model.js')(sequelize, Sequelize)
db.rekam_medis = require('./model/rekam_medis.model.js')(sequelize, Sequelize)
+db.jadwal_dokter = require('./model/jadwal_dokter.model.js')(sequelize, Sequelize)
// create one to one relations between admin and login
db.admin.hasOne(db.login, {foreignKey: {name: 'id_admin', allowNull: true}}, {onDelete: 'CASCADE' , hooks: true , onUpdate: 'CASCADE'})
@@ -33,12 +35,16 @@ db.dokter.hasOne(db.login, {foreignKey: {name: 'id_dokter', allowNull: true}}, {
db.login.belongsTo(db.dokter, {foreignKey: {name: 'id_dokter', allowNull: true}}, {onDelete: 'CASCADE' , hooks: true , onUpdate: 'CASCADE'})
// create one to many relations between pasien and rekam_medis
-db.pasien.hasMany(db.rekam_medis, {foreignKey: {name: 'id_pasien', allowNull: false}}, {onDelete: 'CASCADE' , hooks: true , onUpdate: 'CASCADE'})
-db.rekam_medis.belongsTo(db.pasien, {foreignKey: {name: 'id_pasien', allowNull: false}}, {onDelete: 'CASCADE' , hooks: true , onUpdate: 'CASCADE'})
+db.pasien.hasMany(db.rekam_medis, {foreignKey: {name: 'id_pasien', allowNull: true}}, {onDelete: 'CASCADE' , hooks: true , onUpdate: 'CASCADE'})
+db.rekam_medis.belongsTo(db.pasien, {foreignKey: {name: 'id_pasien', allowNull: true}}, {onDelete: 'CASCADE' , hooks: true , onUpdate: 'CASCADE'})
// create one to many relations between dokter and rekam_medis
-db.dokter.hasMany(db.rekam_medis, {foreignKey: {name: 'id_dokter', allowNull: false}}, {onDelete: 'CASCADE' , hooks: true , onUpdate: 'CASCADE'})
-db.rekam_medis.belongsTo(db.dokter, {foreignKey: {name: 'id_dokter', allowNull: false}}, {onDelete: 'CASCADE' , hooks: true , onUpdate: 'CASCADE'})
+db.dokter.hasMany(db.rekam_medis, {foreignKey: {name: 'id_dokter', allowNull: true}}, {onDelete: 'CASCADE' , hooks: true , onUpdate: 'CASCADE'})
+db.rekam_medis.belongsTo(db.dokter, {foreignKey: {name: 'id_dokter', allowNull: true}}, {onDelete: 'CASCADE' , hooks: true , onUpdate: 'CASCADE'})
+
+// create one to many relations between dokter and jadwal_dokter
+db.dokter.hasMany(db.jadwal_dokter, {foreignKey: {name: 'id_dokter', allowNull: false}}, {onDelete: 'CASCADE' , hooks: true , onUpdate: 'CASCADE'})
+db.jadwal_dokter.belongsTo(db.dokter, {foreignKey: {name: 'id_dokter', allowNull: false}}, {onDelete: 'CASCADE' , hooks: true , onUpdate: 'CASCADE'})
module.exports = db
diff --git a/server/database/model/dokter.model.js b/server/database/model/dokter.model.js
index 37f1365..567a164 100644
--- a/server/database/model/dokter.model.js
+++ b/server/database/model/dokter.model.js
@@ -22,8 +22,9 @@ module.exports = (sequelize, Sequelize) => {
type: Sequelize.STRING,
allowNull: false
},
- jam_kerja:{
- type: Sequelize.TEXT('long'),
+ status : {
+ type: Sequelize.STRING,
+ allowNull: false
}
},{
freezeTableName: true,
diff --git a/server/database/model/jadwal_dokter.model.js b/server/database/model/jadwal_dokter.model.js
new file mode 100644
index 0000000..609e3ba
--- /dev/null
+++ b/server/database/model/jadwal_dokter.model.js
@@ -0,0 +1,27 @@
+module.exports = (sequelize, Sequelize) => {
+ const jadwal_dokter = sequelize.define('tb_jadwal_dokter', {
+ id_jadwal: {
+ type: Sequelize.INTEGER,
+ primaryKey: true,
+ autoIncrement: true
+ },
+ hari : {
+ type: Sequelize.STRING,
+ allowNull: false
+ },
+ jam_mulai : {
+ type: Sequelize.STRING,
+ allowNull: false
+ },
+ jam_selesai : {
+ type: Sequelize.STRING,
+ allowNull: false
+ }
+ }, {
+ timestamps: false,
+ freezeTableName: true,
+ tableName: 'tb_jadwal_dokter'
+ })
+
+ return jadwal_dokter
+}
\ No newline at end of file
diff --git a/server/database/model/pasien.model.js b/server/database/model/pasien.model.js
index 16aa198..0fbfbd4 100644
--- a/server/database/model/pasien.model.js
+++ b/server/database/model/pasien.model.js
@@ -15,7 +15,7 @@ module.exports = (sequelize, Sequelize) => {
allowNull: false
},
tgl_lahir:{
- type: Sequelize.DATE,
+ type: Sequelize.DATEONLY,
allowNull: false
},
alamat:{
diff --git a/server/database/model/rekam_medis.model.js b/server/database/model/rekam_medis.model.js
index c13669e..b3fddc4 100644
--- a/server/database/model/rekam_medis.model.js
+++ b/server/database/model/rekam_medis.model.js
@@ -6,29 +6,38 @@ module.exports = (sequelize, Sequelize) => {
primaryKey: true,
autoIncrement: true
},
- tanggal_perikas:{
- type: Sequelize.DATE,
+ tanggal_periksa:{
+ type: Sequelize.DATEONLY,
+ allowNull: false
+ },
+ jam_periksa:{
+ type: Sequelize.TIME,
allowNull: false
},
diagnosa:{
type: Sequelize.TEXT("tiny"),
- allowNull: false
+ allowNull: true,
+ defaultValue: null
},
keluhan:{
type: Sequelize.TEXT("tiny"),
- allowNull: false
+ allowNull: true,
+ defaultValue: null
},
keterangan:{
type: Sequelize.TEXT("tiny"),
- allowNull: false
+ allowNull: true,
+ defaultValue: null
},
tindakan:{
type: Sequelize.TEXT("tiny"),
- allowNull: false
+ allowNull: true,
+ defaultValue: null
},
obat : {
type: Sequelize.TEXT("tiny"),
- allowNull: false
+ allowNull: true,
+ defaultValue: null
}
},{
freezeTableName: true,
diff --git a/server/index.js b/server/index.js
index 9d5a155..124eb5e 100644
--- a/server/index.js
+++ b/server/index.js
@@ -46,10 +46,12 @@ app.prepare().then(() => {
// import routes
const login_router = require('./routes/login_router');
const admin_router = require('./routes/admin_router');
+ const dokter_router = require('./routes/dokter_router');
// use routes
server.use('/api/login', login_router);
server.use('/api/admin', admin_router);
+ server.use('/api/dokter', dokter_router);
diff --git a/server/routes/admin_router.js b/server/routes/admin_router.js
index 98efdb8..3846567 100644
--- a/server/routes/admin_router.js
+++ b/server/routes/admin_router.js
@@ -1,14 +1,20 @@
const express = require('express');
const router = express.Router()
const db = require('../database/index.js')
-const tb_admin = db.admin
+const md5 = require('md5');
+// const tb_admin = db.admin
const tb_dokter = db.dokter
-// const tb_login = db.login
+const tb_login = db.login
+const tb_pasien = db.pasien
const tb_tindakan = db.tindakan
const tb_obat = db.obat
+const tb_jadwal_dokter = db.jadwal_dokter
+const tb_rekam_medis = db.rekam_medis
const Op = db.Sequelize.Op
-const app = require('express')()
+var _ = require('underscore');
+
+// const app = require('express')()
const basicAuth = require('express-basic-auth')
const basicAuthMiddleware = basicAuth({
@@ -150,7 +156,7 @@ router.get('/obat', basicAuthMiddleware, async (req, res) => {
obat = JSON.parse(obat.dataValues.history)
- res.status(200).send({ status: true, data: obat})
+ res.status(200).send({ status: true, data: obat })
} else {
// console.log("ambil all obat")
let obat = await tb_obat.findAll()
@@ -207,5 +213,523 @@ router.put('/obat', basicAuthMiddleware, async (req, res) => {
})
+// create /dokter post request
+router.post('/dokter', basicAuthMiddleware, async (req, res) => {
+ console.log("sini untuk dokter post")
+ try {
+ const nik = req.body.nik
+ let cek_dokter = await tb_dokter.findOne({
+ where: {
+ nik: nik
+ }
+ })
+
+ if (cek_dokter) {
+ return res.status(400).send({ status: false, message: `Dokter dengan NIK ${nik} sudah ada`, data: [cek_dokter.dataValues] })
+ }
+
+
+ // create dokter
+ const new_dokter = await tb_dokter.create({
+ nik: nik,
+ nama: req.body.nama,
+ alamat: req.body.alamat,
+ no_telp: req.body.no_telp,
+ status: "Aktif",
+ spesialis: req.body.spesialis,
+ })
+
+ await tb_login.create({
+ username: nik,
+ password: md5(nik),
+ role: "dokter",
+ id_dokter: nik
+ })
+
+ const jadwals = req.body.jadwal
+ // console.log(jadwal)
+ // loop the jadwal
+ for (let jadwal of jadwals) {
+ // console.log(jadwal)
+ await tb_jadwal_dokter.create({
+ id_dokter: nik,
+ hari: jadwal,
+ jam_mulai: req.body.jam_mulai,
+ jam_selesai: req.body.jam_selesai
+ })
+ }
+
+
+ res.status(200).send({ status: true, message: `Dokter ${req.body.nama} berhasil ditambahkan` })
+
+ } catch (err) {
+ console.log(err)
+ res.status(500).send({ status: false, message: "internal server error" })
+ }
+})
+
+
+// create /dokter get request
+router.get('/dokter', basicAuthMiddleware, async (req, res) => {
+ console.log("sini untuk dokter get")
+ try {
+ let nik = req.query.nik
+ // if id is not null
+ if (nik) {
+ let dokter = await tb_dokter.findOne({
+ where: {
+ nik: nik
+ }
+ })
+
+ if (!dokter) {
+ return res.status(400).send({ status: false, message: `Dokter dengan NIK ${nik} tidak ditemukan` })
+ }
+
+ let data
+ if (req.query.detail == "jadwal") {
+ data = await tb_jadwal_dokter.findAll({
+ where: {
+ id_dokter: nik
+ }
+ })
+
+ } else {
+ data = dokter.dataValues
+ }
+
+ res.status(200).send({ status: true, data: data })
+ } else {
+ // console.log("ambil all dokter")
+ let dokter = await tb_dokter.findAll()
+ res.status(200).send({ status: true, data: dokter })
+ }
+
+ } catch (err) {
+ console.log(err)
+ res.status(500).send({ status: false, message: "internal server error" })
+ }
+})
+
+
+// create /dokter put request
+router.put('/dokter', basicAuthMiddleware, async (req, res) => {
+ console.log("sini untuk dokter put")
+ try {
+ const nik = req.query.nik
+ const detail = req.query.detail
+ let dokter = await tb_dokter.findOne({
+ where: {
+ nik: nik
+ }
+ })
+
+ if (!dokter) {
+ return res.status(400).send({ status: false, message: `Dokter dengan NIK ${nik} tidak ditemukan` })
+ }
+
+ if (!detail || detail != "datanya") {
+ return res.status(400).send({ status: false, message: `Detail Tidak Diketahui` })
+ }
+
+ let message
+ if (detail == 'datanya') {
+ await dokter.update({
+ nama: req.body.nama,
+ alamat: req.body.alamat,
+ no_telp: req.body.no_telp,
+ spesialis: req.body.spesialis,
+ })
+ message = `Detail Dokter dengan ${nik} berhasil diedit`
+ }
+
+
+ res.status(200).send({ status: true, message: message })
+
+ } catch (err) {
+ console.log(err)
+ res.status(500).send({ status: false, message: "internal server error" })
+ }
+})
+
+// create /cek_jadwal get request
+router.get('/cek_jadwal', basicAuthMiddleware, async (req, res) => {
+ console.log("sini untuk cek_jadwal get")
+ try {
+ const hari = req.query.hari
+ const jam = req.query.jam
+
+ if (!hari || !jam) {
+ return res.status(400).send({ status: false, message: `Hari dan Jam tidak diketahui` })
+ }
+
+ let jadwal = await tb_jadwal_dokter.findAll({
+ where: {
+ hari: hari,
+ jam_mulai: {
+ [Op.lte]: jam
+ },
+ jam_selesai: {
+ [Op.gte]: jam
+ }
+ },
+ include: {
+ model: tb_dokter,
+ attributes: ['nama', 'spesialis']
+ }
+ })
+ console.log(hari)
+ console.log(jam)
+ // cek if jadwal is empty
+ if (jadwal.length == 0) {
+ return res.status(400).send({ status: false, message: `Tidak ada jadwal pada hari ${hari} pada jam ${jam}`, data: [] })
+ }
+
+ console.log(jadwal, "ini jadwalnya")
+
+
+ res.status(200).send({ status: true, data: jadwal })
+
+ } catch (err) {
+ console.log(err)
+ res.status(500).send({ status: false, message: "internal server error" })
+ }
+})
+
+// create /pasien post request
+router.post('/pasien', basicAuthMiddleware, async (req, res) => {
+ console.log("sini untuk pasien post")
+ try {
+ const nik = req.body.nik
+ const nama = req.body.nama
+ const jenis_kelamin = req.body.jenis_kelamin
+ const tgl_lahir = req.body.tgl_lahir
+ const alamat = req.body.alamat
+ const pekerjaan = req.body.pekerjaan
+ const golongan_darah = req.body.golongan_darah
+ const pendidikan = req.body.pendidikan
+ const no_telp = req.body.no_telp
+ const status_pernikahan = req.body.status_pernikahan
+ const nama_orang_tua_wali = req.body.nama_orang_tua_wali
+ const nama_pasangan = req.body.nama_pasangan
+
+ if (!nik || !nama || !jenis_kelamin || !tgl_lahir || !alamat || !pekerjaan || !golongan_darah || !pendidikan || !no_telp || !status_pernikahan || !nama_orang_tua_wali || !nama_pasangan) {
+ return res.status(400).send({ status: false, message: `Data tidak lengkap` })
+ }
+
+ let pasien = await tb_pasien.findOne({
+ where: {
+ nik: nik
+ }
+ })
+
+ if (pasien) {
+ return res.status(400).send({ status: false, message: `Pasien dengan NIK ${nik} sudah terdaftar`, data: [pasien.dataValues] })
+ }
+
+ let tanggal_periksa = req.body.tanggal_periksa
+ let id_dokter = req.body.id_dokter
+ let jam_periksa = req.body.jam_periksa
+
+ let data_all = req.body
+ let data_pasien, data_jadwal
+ // remove tanggal_periksa, id_dokter, jam_periksa from req.body
+ data_pasien = _.omit(data_all, ['tanggal_periksa', 'id_dokter', 'jam_periksa'])
+ data_jadwal = _.omit(data_all, ['nik', 'nama', 'jenis_kelamin', 'tgl_lahir', 'alamat', 'pekerjaan', 'golongan_darah', 'pendidikan', 'no_telp', 'status_pernikahan', 'nama_orang_tua_wali', 'nama_pasangan'])
+
+
+ let new_pasien = await tb_pasien.create(data_pasien)
+ // add pasien nik to data_jadwal
+ data_jadwal.id_pasien = new_pasien.nik
+
+ await tb_rekam_medis.create(data_jadwal)
+ // console.log(data_pasien, "ini data pasien")
+ // console.log(data_jadwal, "ini data jadwal")
+
+ res.status(200).send({ status: true, message: `Pasien dengan NIK ${nik} berhasil ditambahkan\nDan tanggal pemeriksaan berhasil ditambahkan` })
+ } catch (err) {
+ console.log(err)
+ res.status(500).send({ status: false, message: "internal server error" })
+ }
+
+})
+
+// create /pasien get request
+router.get('/pasien', basicAuthMiddleware, async (req, res) => {
+ console.log("sini untuk pasien get")
+ try {
+ const cariannya = req.query.cariannya
+ const jadwal = req.query.jadwal
+ let response
+ if(jadwal && jadwal =="jadwal"){
+ const id = req.query.id
+ if(!id){
+ return res.status(400).send({ status: false, message: `id tidak diketahui` })
+ }
+ let cek_pasien = await tb_pasien.findOne({
+ where: {
+ nik: id
+ }
+ })
+ if(!cek_pasien){
+ return res.status(400).send({ status: false, message: `Pasien dengan id ${id} tidak ditemukan` })
+ }
+
+ response = await tb_rekam_medis.findAll({
+ where: {
+ id_pasien: id
+ },
+ include: [
+ {
+ model: tb_dokter,
+ },
+ {
+ model: tb_pasien,
+ }
+ ]
+ })
+
+
+ }
+ else if (cariannya) {
+ response = await tb_pasien.findAll({
+ where: {
+ //
+ [Op.or]: [
+ {
+ nama: {
+ [Op.or]: [
+ { [Op.like]: '%' + cariannya + '%' },
+ ]
+ }
+ },
+ {
+ nik:{
+ [Op.or]: [
+ { [Op.like]: '%' + cariannya + '%' },
+ ]
+ }
+ }
+ ]
+ }
+ })
+ } else {
+ response = await tb_pasien.findAll()
+ }
+
+
+ res.status(200).send({ status: true, data: response })
+
+ } catch (err) {
+ console.log(err)
+ res.status(500).send({ status: false, message: "internal server error" })
+ }
+})
+
+// create /pasien put request
+router.put('/pasien', basicAuthMiddleware, async (req, res) => {
+ console.log("sini untuk pasien put")
+ try {
+ const nik = req.query.nik
+
+ if (!nik || !req.body.nama || !req.body.jenis_kelamin || !req.body.tgl_lahir || !req.body.alamat || !req.body.pekerjaan || !req.body.golongan_darah || !req.body.pendidikan || !req.body.no_telp || !req.body.status_pernikahan || !req.body.nama_orang_tua_wali || !req.body.nama_pasangan) {
+ return res.status(400).send({ status: false, message: `Data tidak lengkap` })
+ }
+
+ let pasien = await tb_pasien.findOne({
+ where: {
+ nik: nik
+ }
+ })
+
+ if (!pasien) {
+ return res.status(400).send({ status: false, message: `Pasien dengan NIK ${nik} tidak terdaftar` })
+ }
+
+ let datanya = req.body
+ // remove nik from datanya
+ datanya = _.omit(datanya, ['nik'])
+ // console.log(datanya, "ini data yang akan di update")
+ await tb_pasien.update(datanya, {
+ where: {
+ nik: nik
+ }
+ })
+
+ res.status(200).send({ status: true, message: `Data pasien dengan NIK ${nik} berhasil diubah` })
+ } catch (err) {
+ console.log(err)
+ res.status(500).send({ status: false, message: "internal server error" })
+ }
+})
+
+// create /jadwal_dokter get request
+router.get('/jadwal_dokter', basicAuthMiddleware, async (req, res) => {
+ console.log("sini untuk jadwal get")
+ try {
+ let today_date = new Date();
+ let days = ['Minggu', 'Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu'];
+ let hari_ini = days[today_date.getDay()];
+ let all_jadwal = await tb_jadwal_dokter.findAll({
+ where: {
+ hari: hari_ini
+ },
+ include: {
+ model: tb_dokter,
+ attributes: ['nama', 'spesialis']
+ }
+ })
+
+ res.status(200).send({ status: true, data: all_jadwal })
+
+ } catch (err) {
+ console.log(err)
+ res.status(500).send({ status: false, message: "internal server error" })
+ }
+})
+
+// create /jadwal_dokter post request
+router.post('/jadwal_dokter', basicAuthMiddleware, async (req, res) => {
+ try{
+ const data_jadwal = req.body
+ if(!data_jadwal.id_dokter || !data_jadwal.hari || !data_jadwal.jam_mulai || !data_jadwal.jam_selesai){
+ return res.status(400).send({ status: false, message: `Data tidak lengkap` })
+ }
+ let cek_dokter = await tb_dokter.findOne({
+ where: {
+ nik: data_jadwal.id_dokter
+ }
+ })
+ if(!cek_dokter){
+ return res.status(400).send({ status: false, message: `Dokter dengan id ${data_jadwal.id_dokter} tidak ditemukan` })
+ }
+ await tb_jadwal_dokter.create(data_jadwal)
+ res.status(200).send({ status: true, message: `Jadwal dokter dengan id ${data_jadwal.id_dokter} berhasil ditambahkan` })
+ }catch(err){
+ console.log(err)
+ res.status(500).send({ status: false, message: "internal server error" })
+ }
+})
+
+// create /jadwal_pasien get request
+router.get('/jadwal_pasien', basicAuthMiddleware, async (req, res) => {
+ console.log("sini untuk jadwal get")
+ try {
+ let today_date = new Date();
+ let dd = today_date.getDate();
+ let mm = today_date.getMonth() + 1;
+ let yyyy = today_date.getFullYear();
+ dd = dd < 10 ? '0' + dd : dd;
+ mm = mm < 10 ? '0' + mm : mm;
+ let today_date_format = yyyy + '-' + mm + '-' + dd;
+ let all_jadwal = await tb_rekam_medis.findAll({
+ where: {
+ tanggal_periksa: today_date_format
+ },
+ include: [
+ {
+ model: tb_dokter,
+ // attributes: ['nama', 'spesialis']
+ },
+ {
+ model: tb_pasien,
+ // attributes: ['nama', 'nik', 'tgl_lahir', 'golongan_darah']
+ }
+ ],
+ // attributes: ['tanggal_periksa', 'jam_periksa', "id_pasien"]
+ })
+
+ // calculate age
+
+ res.status(200).send({ status: true, data: all_jadwal })
+
+ } catch (err) {
+ console.log(err)
+ res.status(500).send({ status: false, message: "internal server error" })
+ }
+})
+
+// create /jadwal_pasien post request
+router.post('/jadwal_pasien', basicAuthMiddleware, async (req, res) => {
+ try {
+ const data = req.body
+ // console.log(data, "ini datanya")
+ if(!data.id_pasien && !data.tanggal_periksa && !data.jam_periksa && !data.id_dokter){
+ return res.status(400).send({ status: false, message: `Data tidak lengkap` })
+ }
+ // calculate age
+ await tb_rekam_medis.create(data)
+
+ let response = await tb_rekam_medis.findAll({
+ where: {
+ id_pasien : data.id_pasien
+ },
+ include: [
+ {
+ model: tb_pasien,
+ },
+ {
+ model: tb_dokter,
+ }
+ ]
+ })
+
+ res.status(200).send({ status: true, data: response })
+
+ } catch (err) {
+ console.log(err)
+ res.status(500).send({ status: false, message: "internal server error" })
+ }
+})
+
+// create /jadwal_pasien put request
+router.put('/jadwal_pasien', basicAuthMiddleware, async (req, res) => {
+ try {
+ const id_rekam_medis = req.query.id
+
+ if (!id_rekam_medis || !req.body.id_pasien || !req.body.tanggal_periksa || !req.body.jam_periksa || !req.body.id_dokter) {
+ return res.status(400).send({ status: false, message: `Data tidak lengkap` })
+ }
+
+ let pasien = await tb_rekam_medis.findOne({
+ where: {
+ id_rekam_medis: id_rekam_medis
+ }
+ })
+
+ if (!pasien) {
+ return res.status(400).send({ status: false, message: `Data dengan id ${id_rekam_medis} tidak ada` })
+ }
+
+ let datanya = req.body
+ // remove id_pasien from datanya
+ datanya = _.omit(datanya, ['id_pasien'])
+ // console.log(datanya, "ini data yang akan di update")
+ await tb_rekam_medis.update(datanya, {
+ where: {
+ id_rekam_medis: id_rekam_medis
+ }
+ })
+
+ let response = await tb_rekam_medis.findAll({
+ where: {
+ id_pasien : req.body.id_pasien
+ },
+ include: [
+ {
+ model: tb_pasien,
+ },
+ {
+ model: tb_dokter,
+ }
+ ]
+ })
+
+ res.status(200).send({ status: true, message: `Data pasien dengan id ${id_rekam_medis} berhasil diubah` ,data : response})
+ } catch (err) {
+ console.log(err)
+ res.status(500).send({ status: false, message: "internal server error" })
+ }
+})
module.exports = router
\ No newline at end of file
diff --git a/server/routes/dokter_router.js b/server/routes/dokter_router.js
new file mode 100644
index 0000000..07167f9
--- /dev/null
+++ b/server/routes/dokter_router.js
@@ -0,0 +1,374 @@
+const express = require('express');
+const router = express.Router()
+const db = require('../database/index.js')
+const md5 = require('md5');
+// const tb_admin = db.admin
+const tb_dokter = db.dokter
+const tb_login = db.login
+const tb_pasien = db.pasien
+const tb_tindakan = db.tindakan
+const tb_obat = db.obat
+const tb_jadwal_dokter = db.jadwal_dokter
+const tb_rekam_medis = db.rekam_medis
+const Op = db.Sequelize.Op
+var _ = require('underscore');
+
+const basicAuth = require('express-basic-auth');
+const { obat } = require('../database/index.js');
+
+const basicAuthMiddleware = basicAuth({
+ users: { 'kicapkaran_admin': 'karan456_admin' },
+ challenge: true,
+ unauthorizedResponse: getUnauthenticatedResponse
+
+})
+
+function getUnauthenticatedResponse(req) {
+ const { user } = req.auth?.user ?? {}
+ return user ? `invalid credentials for user '${user}'` : 'no credentials provided';
+}
+
+router.get('/', basicAuthMiddleware, async (req, res) => {
+ res.send({ status: true, message: 'connected to dokter' })
+})
+
+// create /jadwal_dokter get request
+router.get('/jadwal_dokter', basicAuthMiddleware, async (req, res) => {
+ try {
+ id = req.query.id
+
+ if (!id) {
+ return res.status(400).send({ status: false, message: 'id tidak boleh kosong' })
+ }
+
+ const response = await tb_jadwal_dokter.findAll({
+ where: {
+ id_dokter: id
+ }
+ })
+
+ res.send({ status: true, data: response })
+ } catch (error) {
+ res.send({ status: false, message: 'error' })
+ }
+})
+
+// create /jadwal_dokter post request
+router.post('/jadwal_dokter', basicAuthMiddleware, async (req, res) => {
+ try {
+ id = req.body.nik
+ hari = req.body.hari
+ jam_mulai = req.body.jam_mulai
+ jam_selesai = req.body.jam_selesai
+
+ if (!id || !hari || !jam_mulai || !jam_selesai) {
+ return res.status(400).send({ status: false, message: 'id, hari, jam_mulai, jam_selesai tidak boleh kosong' })
+ }
+
+ const cek_jadwal = await tb_jadwal_dokter.findOne({
+ where: {
+ id_dokter: id,
+ hari: hari
+ }
+ })
+
+ if (cek_jadwal) {
+ return res.status(400).send({ status: false, message: 'Jadwal sudah ada' })
+ }
+
+
+
+ const response = await tb_jadwal_dokter.create({
+ id_dokter: id,
+ hari: hari,
+ jam_mulai: jam_mulai,
+ jam_selesai: jam_selesai
+ })
+
+ res.send({ status: true, message: "Jadwal pada hari " + hari + " telah ditambahkan" })
+ } catch (error) {
+ res.send({ status: false, message: 'error' })
+ }
+})
+
+// create /jadwal_dokter put request
+router.put('/jadwal_dokter', basicAuthMiddleware, async (req, res) => {
+ try {
+ id = req.query.id
+ hari = req.body.hari
+ jam_mulai = req.body.jam_mulai
+ jam_selesai = req.body.jam_selesai
+
+ if (!id || !hari || !jam_mulai || !jam_selesai) {
+ return res.status(400).send({ status: false, message: 'id, hari, jam_mulai, jam_selesai tidak boleh kosong' })
+ }
+
+ const cek_data = await tb_jadwal_dokter.findOne({
+ where: {
+ id_dokter: id,
+ hari: hari
+ }
+ })
+
+ if (!cek_data) {
+ return res.status(400).send({ status: false, message: 'Jadwal tidak ditemukan' })
+ }
+
+ await tb_jadwal_dokter.update({
+ id_dokter: id,
+ hari: hari,
+ jam_mulai: jam_mulai,
+ jam_selesai: jam_selesai
+ }, {
+ where: {
+ hari: hari,
+ }
+ })
+ // console.log(id , hari, jam_mulai, jam_selesai, "ini id hari jam_mulai jam_selesai")
+
+ res.send({ status: true, message: `Jadwal pada hari ${hari} telah diubah` })
+ } catch (error) {
+ res.send({ status: false, message: 'error' })
+ }
+})
+
+// create /jadwal_dokter delete request
+router.delete('/jadwal_dokter', basicAuthMiddleware, async (req, res) => {
+ try {
+ id = req.query.id
+ hari = req.body.hari
+
+ if (!id || !hari) {
+ return res.status(400).send({ status: false, message: 'id, hari tidak boleh kosong' })
+ }
+
+ const cek_data = await tb_jadwal_dokter.findOne({
+ where: {
+ id_dokter: id,
+ hari: hari
+ }
+ })
+
+ if (!cek_data) {
+ return res.status(400).send({ status: false, message: 'Jadwal tidak ditemukan' })
+ }
+
+ await tb_jadwal_dokter.destroy({
+ where: {
+ id_dokter: id,
+ hari: hari,
+ }
+ })
+
+ res.send({ status: true, message: `Jadwal pada hari ${hari} telah dihapus` })
+ } catch (error) {
+ res.send({ status: false, message: 'error' })
+ }
+})
+
+// create /jadwal_ini_hari get request
+router.get('/jadwal_ini_hari', basicAuthMiddleware, async (req, res) => {
+ try {
+ id = req.query.id
+ let today_date = new Date();
+ let dd = today_date.getDate();
+ let mm = today_date.getMonth() + 1;
+ let yyyy = today_date.getFullYear();
+ dd = dd < 10 ? '0' + dd : dd;
+ mm = mm < 10 ? '0' + mm : mm;
+ let today_date_format = yyyy + '-' + mm + '-' + dd;
+
+ if (!id) {
+ return res.status(400).send({ status: false, message: 'id tidak boleh kosong' })
+ }
+ // console.log(today_date_format , "ini today_date_format");
+ const response = await tb_rekam_medis.findAll({
+ where: {
+ id_dokter: id,
+ tanggal_periksa: today_date_format
+ },
+ include: [
+ {
+ model: tb_pasien,
+ }
+ ]
+ })
+ // console.log(response , "ini response");
+
+ // res.send({ status: true, data: "ini rekam medis" })
+ res.send({ status: true, data: response })
+ } catch (error) {
+ res.send({ status: false, message: 'error' })
+ }
+})
+
+// create /cek_data_rekam_medis get request
+router.get('/cek_data_rekam_medis', basicAuthMiddleware, async (req, res) => {
+ try {
+ id = req.query.id
+ id_dokter = req.query.id_dokter
+ if (!id) {
+ return res.status(400).send({ status: false, message: 'id tidak boleh kosong' })
+ }
+ if (!id_dokter) {
+ return res.status(400).send({ status: false, message: 'id_dokter tidak boleh kosong' })
+ }
+
+ const response = await tb_rekam_medis.findOne({
+ where: {
+ id_rekam_medis: id,
+ id_dokter: id_dokter
+ },
+ include: [
+ {
+ model: tb_pasien,
+ },
+ {
+ model: tb_dokter,
+ }
+ ]
+ })
+
+ res.send({ status: true, data: response })
+ } catch (error) {
+ res.status(500).send({ status: false, message: 'error' })
+ }
+})
+
+// create /cek_obat get request
+router.get('/cek_obat', basicAuthMiddleware, async (req, res) => {
+ try {
+ id = req.query.id
+ if (!id) {
+ return res.status(400).send({ status: false, message: 'id tidak boleh kosong' })
+ }
+
+ const response = await tb_obat.findOne({
+ where: {
+ id_obat: id
+ }
+ })
+
+ res.send({ status: true, data: response })
+ } catch (error) {
+ res.status(500).send({ status: false, message: 'error' })
+ }
+})
+
+// create /rekam_medis_update put request
+router.put('/rekam_medis_update', basicAuthMiddleware, async (req, res) => {
+ try {
+ let id = req.query.id_rekam_medis
+ let id_dokter = req.query.id_dokter
+ let keluhan = req.body.keluhan
+ let diagnosa = req.body.diagnosa
+ let keterangan = req.body.keterangan
+ let obat = req.body.obat
+ let tindakan = req.body.tindakan
+
+ if (!id) {
+ return res.status(400).send({ status: false, message: 'id tidak boleh kosong' })
+ }
+ if (!id_dokter) {
+ return res.status(400).send({ status: false, message: 'id_dokter tidak boleh kosong' })
+ }
+
+ if (!keluhan && !diagnosa && !keterangan && !obat && !tindakan) {
+ return res.status(400).send({ status: false, message: 'keluhan, diagnosa, keterangan, obat, tindakan tidak boleh kosong' })
+ }
+
+ await tb_rekam_medis.update(
+ {
+ keluhan: keluhan,
+ diagnosa: diagnosa,
+ keterangan: keterangan,
+ obat: JSON.stringify(obat),
+ tindakan: JSON.stringify(tindakan)
+ },
+ {
+ where: {
+ id_rekam_medis: id,
+ id_dokter: id_dokter
+ }
+ }
+ )
+
+ res.status(200).send({ status: true, message: 'data berhasil diupdate' })
+
+ } catch (error) {
+ console.log(error);
+ res.status(500).send({ status: false, message: 'error' })
+ }
+})
+
+// create /cari_rekam_medis get request
+router.get('/cari_rekam_medis', basicAuthMiddleware, async (req, res) => {
+ try {
+ data1 = req.query.data
+ data2 = req.query.data2
+ id_dokter = req.query.id_dokter
+ if (!data1 && !data2 && !id_dokter) {
+ return res.status(400).send({ status: false, message: 'data tidak boleh kosong' })
+ }
+
+ const response = await tb_rekam_medis.findAll({
+ where: {
+ id_dokter: id_dokter,
+ },
+ include: [
+ {
+ model: tb_pasien,
+ where: {
+ [Op.or]: [
+ {
+ nama: {
+ [Op.or]: [
+ { [Op.like]: '%' + data1 + '%' },
+ { [Op.like]: '%' + data2 + '%' }
+ ]
+ }
+ },
+ {
+ nik:{
+ [Op.or]: [
+ { [Op.like]: '%' + data1 + '%' },
+ { [Op.like]: '%' + data2 + '%' }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ })
+
+ res.status(200).send({ status: true, data: response })
+ } catch (error) {
+ console.log(error);
+ res.status(500).send({ status: false, message: 'error' })
+ }
+})
+
+// create /tindakan get request
+router.get('/tindakan', basicAuthMiddleware, async (req, res) => {
+ try {
+ id = req.query.id
+ if (!id) {
+ return res.status(400).send({ status: false, message: 'id tidak boleh kosong' })
+ }
+
+ const response = await tb_tindakan.findOne({
+ where: {
+ id_tindakan: id
+ }
+ })
+
+ // console.log(response, " ini tindakannya");
+ res.send({ status: true, data: response })
+ } catch (error) {
+ console.log(error);
+ res.status(500).send({ status: false, message: 'error' })
+ }
+})
+
+module.exports = router
\ No newline at end of file
diff --git a/server/routes/login_router.js b/server/routes/login_router.js
index 1d8e233..b8950ea 100644
--- a/server/routes/login_router.js
+++ b/server/routes/login_router.js
@@ -5,6 +5,7 @@ const db = require('../database/index.js')
const tb_admin = db.admin
const tb_dokter = db.dokter
const tb_login = db.login
+const tb_jadwal_dokter = db.jadwal_dokter
const Op = db.Sequelize.Op
var ironSession = require("iron-session/express").ironSession;
@@ -116,4 +117,39 @@ router.get('/', session, async (req, res) => {
}
})
+// create /logout get request
+router.get('/logout', session, async (req, res) => {
+ try {
+ // console.log(req.session.user);
+ req.session.destroy();
+ res.send({ status: true, message: "logout success" })
+ } catch (error) {
+ res.status(500).send({ status: false, message: error.message })
+ }
+})
+
+// create /jadwal_dokter get request
+router.get('/jadwal_dokter', async (req, res) => {
+ console.log("sini untuk jadwal get")
+ try {
+ let today_date = new Date();
+ let days = ['Minggu', 'Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu'];
+ let hari_ini = days[today_date.getDay()];
+ let all_jadwal = await tb_jadwal_dokter.findAll({
+ where: {
+ hari: hari_ini
+ },
+ include: {
+ model: tb_dokter,
+ attributes: ['nama', 'spesialis']
+ }
+ })
+
+ res.status(200).send({ status: true, data: all_jadwal })
+
+ } catch (err) {
+ console.log(err)
+ res.status(500).send({ status: false, message: "internal server error" })
+ }
+})
module.exports = router
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index 2185ec9..7586f1c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,6 +2,167 @@
# yarn lockfile v1
+"@ampproject/remapping@^2.1.0":
+ "integrity" "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg=="
+ "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz"
+ "version" "2.1.2"
+ dependencies:
+ "@jridgewell/trace-mapping" "^0.3.0"
+
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7":
+ "integrity" "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg=="
+ "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz"
+ "version" "7.16.7"
+ dependencies:
+ "@babel/highlight" "^7.16.7"
+
+"@babel/compat-data@^7.17.7":
+ "integrity" "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ=="
+ "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz"
+ "version" "7.17.7"
+
+"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.17.9":
+ "integrity" "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw=="
+ "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz"
+ "version" "7.17.9"
+ dependencies:
+ "@ampproject/remapping" "^2.1.0"
+ "@babel/code-frame" "^7.16.7"
+ "@babel/generator" "^7.17.9"
+ "@babel/helper-compilation-targets" "^7.17.7"
+ "@babel/helper-module-transforms" "^7.17.7"
+ "@babel/helpers" "^7.17.9"
+ "@babel/parser" "^7.17.9"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.17.9"
+ "@babel/types" "^7.17.0"
+ "convert-source-map" "^1.7.0"
+ "debug" "^4.1.0"
+ "gensync" "^1.0.0-beta.2"
+ "json5" "^2.2.1"
+ "semver" "^6.3.0"
+
+"@babel/generator@^7.17.9":
+ "integrity" "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ=="
+ "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz"
+ "version" "7.17.9"
+ dependencies:
+ "@babel/types" "^7.17.0"
+ "jsesc" "^2.5.1"
+ "source-map" "^0.5.0"
+
+"@babel/helper-compilation-targets@^7.17.7":
+ "integrity" "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w=="
+ "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz"
+ "version" "7.17.7"
+ dependencies:
+ "@babel/compat-data" "^7.17.7"
+ "@babel/helper-validator-option" "^7.16.7"
+ "browserslist" "^4.17.5"
+ "semver" "^6.3.0"
+
+"@babel/helper-environment-visitor@^7.16.7":
+ "integrity" "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag=="
+ "resolved" "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz"
+ "version" "7.16.7"
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-function-name@^7.17.9":
+ "integrity" "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg=="
+ "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz"
+ "version" "7.17.9"
+ dependencies:
+ "@babel/template" "^7.16.7"
+ "@babel/types" "^7.17.0"
+
+"@babel/helper-hoist-variables@^7.16.7":
+ "integrity" "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg=="
+ "resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz"
+ "version" "7.16.7"
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7":
+ "integrity" "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg=="
+ "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz"
+ "version" "7.16.7"
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-module-transforms@^7.17.7":
+ "integrity" "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw=="
+ "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz"
+ "version" "7.17.7"
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/helper-simple-access" "^7.17.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ "@babel/helper-validator-identifier" "^7.16.7"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.17.3"
+ "@babel/types" "^7.17.0"
+
+"@babel/helper-plugin-utils@^7.16.7":
+ "integrity" "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA=="
+ "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz"
+ "version" "7.16.7"
+
+"@babel/helper-simple-access@^7.17.7":
+ "integrity" "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA=="
+ "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz"
+ "version" "7.17.7"
+ dependencies:
+ "@babel/types" "^7.17.0"
+
+"@babel/helper-split-export-declaration@^7.16.7":
+ "integrity" "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw=="
+ "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz"
+ "version" "7.16.7"
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-validator-identifier@^7.16.7":
+ "integrity" "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw=="
+ "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz"
+ "version" "7.16.7"
+
+"@babel/helper-validator-option@^7.16.7":
+ "integrity" "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ=="
+ "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz"
+ "version" "7.16.7"
+
+"@babel/helpers@^7.17.9":
+ "integrity" "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q=="
+ "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz"
+ "version" "7.17.9"
+ dependencies:
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.17.9"
+ "@babel/types" "^7.17.0"
+
+"@babel/highlight@^7.16.7":
+ "integrity" "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg=="
+ "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz"
+ "version" "7.17.9"
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.16.7"
+ "chalk" "^2.0.0"
+ "js-tokens" "^4.0.0"
+
+"@babel/parser@^7.16.7", "@babel/parser@^7.17.9":
+ "integrity" "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg=="
+ "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz"
+ "version" "7.17.9"
+
+"@babel/plugin-syntax-jsx@^7.12.13":
+ "integrity" "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q=="
+ "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz"
+ "version" "7.16.7"
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
"@babel/runtime-corejs3@^7.10.2":
"integrity" "sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw=="
"resolved" "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz"
@@ -10,13 +171,180 @@
"core-js-pure" "^3.20.2"
"regenerator-runtime" "^0.13.4"
-"@babel/runtime@^7.10.2", "@babel/runtime@^7.16.3":
+"@babel/runtime@^7.10.2", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.7":
"integrity" "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg=="
"resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz"
"version" "7.17.9"
dependencies:
"regenerator-runtime" "^0.13.4"
+"@babel/template@^7.16.7":
+ "integrity" "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w=="
+ "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz"
+ "version" "7.16.7"
+ dependencies:
+ "@babel/code-frame" "^7.16.7"
+ "@babel/parser" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
+"@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9":
+ "integrity" "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw=="
+ "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz"
+ "version" "7.17.9"
+ dependencies:
+ "@babel/code-frame" "^7.16.7"
+ "@babel/generator" "^7.17.9"
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-function-name" "^7.17.9"
+ "@babel/helper-hoist-variables" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ "@babel/parser" "^7.17.9"
+ "@babel/types" "^7.17.0"
+ "debug" "^4.1.0"
+ "globals" "^11.1.0"
+
+"@babel/types@^7.16.7", "@babel/types@^7.17.0":
+ "integrity" "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw=="
+ "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz"
+ "version" "7.17.0"
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.16.7"
+ "to-fast-properties" "^2.0.0"
+
+"@date-io/core@^2.13.1":
+ "integrity" "sha512-pVI9nfkf2qClb2Cxdq0Q4zJhdawMG4ybWZUVGifT78FDwzRMX2SwXBb55s5NRJk0HcIicDuxktmCtemZqMH1Zg=="
+ "resolved" "https://registry.npmjs.org/@date-io/core/-/core-2.13.1.tgz"
+ "version" "2.13.1"
+
+"@date-io/date-fns@^2.11.0":
+ "integrity" "sha512-8fmfwjiLMpFLD+t4NBwDx0eblWnNcgt4NgfT/uiiQTGI81fnPu9tpBMYdAcuWxaV7LLpXgzLBx1SYWAMDVUDQQ=="
+ "resolved" "https://registry.npmjs.org/@date-io/date-fns/-/date-fns-2.13.1.tgz"
+ "version" "2.13.1"
+ dependencies:
+ "@date-io/core" "^2.13.1"
+
+"@date-io/dayjs@^2.11.0":
+ "integrity" "sha512-5bL4WWWmlI4uGZVScANhHJV7Mjp93ec2gNeUHDqqLaMZhp51S0NgD25oqj/k0LqBn1cdU2MvzNpk/ObMmVv5cQ=="
+ "resolved" "https://registry.npmjs.org/@date-io/dayjs/-/dayjs-2.13.1.tgz"
+ "version" "2.13.1"
+ dependencies:
+ "@date-io/core" "^2.13.1"
+
+"@date-io/luxon@^2.11.1":
+ "integrity" "sha512-yG+uM7lXfwLyKKEwjvP8oZ7qblpmfl9gxQYae55ifbwiTs0CoCTkYkxEaQHGkYtTqGTzLqcb0O9Pzx6vgWg+yg=="
+ "resolved" "https://registry.npmjs.org/@date-io/luxon/-/luxon-2.13.1.tgz"
+ "version" "2.13.1"
+ dependencies:
+ "@date-io/core" "^2.13.1"
+
+"@date-io/moment@^2.11.0":
+ "integrity" "sha512-XX1X/Tlvl3TdqQy2j0ZUtEJV6Rl8tOyc5WOS3ki52He28Uzme4Ro/JuPWTMBDH63weSWIZDlbR7zBgp3ZA2y1A=="
+ "resolved" "https://registry.npmjs.org/@date-io/moment/-/moment-2.13.1.tgz"
+ "version" "2.13.1"
+ dependencies:
+ "@date-io/core" "^2.13.1"
+
+"@emotion/babel-plugin@^11.7.1":
+ "integrity" "sha512-Pr/7HGH6H6yKgnVFNEj2MVlreu3ADqftqjqwUvDy/OJzKFgxKeTQ+eeUf20FOTuHVkDON2iNa25rAXVYtWJCjw=="
+ "resolved" "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.9.2.tgz"
+ "version" "11.9.2"
+ dependencies:
+ "@babel/helper-module-imports" "^7.12.13"
+ "@babel/plugin-syntax-jsx" "^7.12.13"
+ "@babel/runtime" "^7.13.10"
+ "@emotion/hash" "^0.8.0"
+ "@emotion/memoize" "^0.7.5"
+ "@emotion/serialize" "^1.0.2"
+ "babel-plugin-macros" "^2.6.1"
+ "convert-source-map" "^1.5.0"
+ "escape-string-regexp" "^4.0.0"
+ "find-root" "^1.1.0"
+ "source-map" "^0.5.7"
+ "stylis" "4.0.13"
+
+"@emotion/cache@^11.7.1":
+ "integrity" "sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A=="
+ "resolved" "https://registry.npmjs.org/@emotion/cache/-/cache-11.7.1.tgz"
+ "version" "11.7.1"
+ dependencies:
+ "@emotion/memoize" "^0.7.4"
+ "@emotion/sheet" "^1.1.0"
+ "@emotion/utils" "^1.0.0"
+ "@emotion/weak-memoize" "^0.2.5"
+ "stylis" "4.0.13"
+
+"@emotion/hash@^0.8.0":
+ "integrity" "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow=="
+ "resolved" "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz"
+ "version" "0.8.0"
+
+"@emotion/is-prop-valid@^1.1.2":
+ "integrity" "sha512-3QnhqeL+WW88YjYbQL5gUIkthuMw7a0NGbZ7wfFVk2kg/CK5w8w5FFa0RzWjyY1+sujN0NWbtSHH6OJmWHtJpQ=="
+ "resolved" "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.2.tgz"
+ "version" "1.1.2"
+ dependencies:
+ "@emotion/memoize" "^0.7.4"
+
+"@emotion/memoize@^0.7.4", "@emotion/memoize@^0.7.5":
+ "integrity" "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ=="
+ "resolved" "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz"
+ "version" "0.7.5"
+
+"@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0", "@emotion/react@^11.9.0":
+ "integrity" "sha512-lBVSF5d0ceKtfKCDQJveNAtkC7ayxpVlgOohLgXqRwqWr9bOf4TZAFFyIcNngnV6xK6X4x2ZeXq7vliHkoVkxQ=="
+ "resolved" "https://registry.npmjs.org/@emotion/react/-/react-11.9.0.tgz"
+ "version" "11.9.0"
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@emotion/babel-plugin" "^11.7.1"
+ "@emotion/cache" "^11.7.1"
+ "@emotion/serialize" "^1.0.3"
+ "@emotion/utils" "^1.1.0"
+ "@emotion/weak-memoize" "^0.2.5"
+ "hoist-non-react-statics" "^3.3.1"
+
+"@emotion/serialize@^1.0.2", "@emotion/serialize@^1.0.3":
+ "integrity" "sha512-2mSSvgLfyV3q+iVh3YWgNlUc2a9ZlDU7DjuP5MjK3AXRR0dYigCrP99aeFtaB2L/hjfEZdSThn5dsZ0ufqbvsA=="
+ "resolved" "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.3.tgz"
+ "version" "1.0.3"
+ dependencies:
+ "@emotion/hash" "^0.8.0"
+ "@emotion/memoize" "^0.7.4"
+ "@emotion/unitless" "^0.7.5"
+ "@emotion/utils" "^1.0.0"
+ "csstype" "^3.0.2"
+
+"@emotion/sheet@^1.1.0":
+ "integrity" "sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g=="
+ "resolved" "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.1.0.tgz"
+ "version" "1.1.0"
+
+"@emotion/styled@^11.3.0", "@emotion/styled@^11.8.1":
+ "integrity" "sha512-OghEVAYBZMpEquHZwuelXcRjRJQOVayvbmNR0zr174NHdmMgrNkLC6TljKC5h9lZLkN5WGrdUcrKlOJ4phhoTQ=="
+ "resolved" "https://registry.npmjs.org/@emotion/styled/-/styled-11.8.1.tgz"
+ "version" "11.8.1"
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@emotion/babel-plugin" "^11.7.1"
+ "@emotion/is-prop-valid" "^1.1.2"
+ "@emotion/serialize" "^1.0.2"
+ "@emotion/utils" "^1.1.0"
+
+"@emotion/unitless@^0.7.5":
+ "integrity" "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
+ "resolved" "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz"
+ "version" "0.7.5"
+
+"@emotion/utils@^1.0.0", "@emotion/utils@^1.1.0":
+ "integrity" "sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ=="
+ "resolved" "https://registry.npmjs.org/@emotion/utils/-/utils-1.1.0.tgz"
+ "version" "1.1.0"
+
+"@emotion/weak-memoize@^0.2.5":
+ "integrity" "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA=="
+ "resolved" "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz"
+ "version" "0.2.5"
+
"@eslint/eslintrc@^1.2.1":
"integrity" "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ=="
"resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz"
@@ -32,6 +360,48 @@
"minimatch" "^3.0.4"
"strip-json-comments" "^3.1.1"
+"@hapi/b64@5.x.x":
+ "integrity" "sha512-ngu0tSEmrezoiIaNGG6rRvKOUkUuDdf4XTPnONHGYfSGRmDqPZX5oJL6HAdKTo1UQHECbdB4OzhWrfgVppjHUw=="
+ "resolved" "https://registry.npmjs.org/@hapi/b64/-/b64-5.0.0.tgz"
+ "version" "5.0.0"
+ dependencies:
+ "@hapi/hoek" "9.x.x"
+
+"@hapi/boom@9.x.x":
+ "integrity" "sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw=="
+ "resolved" "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.4.tgz"
+ "version" "9.1.4"
+ dependencies:
+ "@hapi/hoek" "9.x.x"
+
+"@hapi/bourne@2.x.x":
+ "integrity" "sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q=="
+ "resolved" "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz"
+ "version" "2.1.0"
+
+"@hapi/cryptiles@5.x.x":
+ "integrity" "sha512-fo9+d1Ba5/FIoMySfMqPBR/7Pa29J2RsiPrl7bkwo5W5o+AN1dAYQRi4SPrPwwVxVGKjgLOEWrsvt1BonJSfLA=="
+ "resolved" "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-5.1.0.tgz"
+ "version" "5.1.0"
+ dependencies:
+ "@hapi/boom" "9.x.x"
+
+"@hapi/hoek@9.x.x":
+ "integrity" "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw=="
+ "resolved" "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz"
+ "version" "9.2.1"
+
+"@hapi/iron@^6.0.0":
+ "integrity" "sha512-zvGvWDufiTGpTJPG1Y/McN8UqWBu0k/xs/7l++HVU535NLHXsHhy54cfEMdW7EjwKfbBfM9Xy25FmTiobb7Hvw=="
+ "resolved" "https://registry.npmjs.org/@hapi/iron/-/iron-6.0.0.tgz"
+ "version" "6.0.0"
+ dependencies:
+ "@hapi/b64" "5.x.x"
+ "@hapi/boom" "9.x.x"
+ "@hapi/bourne" "2.x.x"
+ "@hapi/cryptiles" "5.x.x"
+ "@hapi/hoek" "9.x.x"
+
"@humanwhocodes/config-array@^0.9.2":
"integrity" "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw=="
"resolved" "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz"
@@ -46,6 +416,126 @@
"resolved" "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz"
"version" "1.2.1"
+"@jridgewell/resolve-uri@^3.0.3":
+ "integrity" "sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw=="
+ "resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz"
+ "version" "3.0.6"
+
+"@jridgewell/sourcemap-codec@^1.4.10":
+ "integrity" "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg=="
+ "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz"
+ "version" "1.4.11"
+
+"@jridgewell/trace-mapping@^0.3.0":
+ "integrity" "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ=="
+ "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz"
+ "version" "0.3.9"
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.0.3"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+
+"@mui/base@5.0.0-alpha.77":
+ "integrity" "sha512-Zqm3qlczGViD3lJSYo8ZnQLHJ3PwGYftbDfVuh2Rq5OD88F7H6oDILlqknzty59NDkeSVO2qlymYmHOY1nLodg=="
+ "resolved" "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.77.tgz"
+ "version" "5.0.0-alpha.77"
+ dependencies:
+ "@babel/runtime" "^7.17.2"
+ "@emotion/is-prop-valid" "^1.1.2"
+ "@mui/types" "^7.1.3"
+ "@mui/utils" "^5.6.1"
+ "@popperjs/core" "^2.11.5"
+ "clsx" "^1.1.1"
+ "prop-types" "^15.7.2"
+ "react-is" "^17.0.2"
+
+"@mui/icons-material@^5.6.2":
+ "integrity" "sha512-9QdI7axKuBAyaGz4mtdi7Uy1j73/thqFmEuxpJHxNC7O8ADEK1Da3t2veK2tgmsXsUlAHcAG63gg+GvWWeQNqQ=="
+ "resolved" "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.6.2.tgz"
+ "version" "5.6.2"
+ dependencies:
+ "@babel/runtime" "^7.17.2"
+
+"@mui/material@^5.0.0", "@mui/material@^5.2.3", "@mui/material@^5.6.2":
+ "integrity" "sha512-bwMvroBrMgUTwUh/BcjhtcJwEw9uH4chV3+ZSj6RckOJtMj8U4yEeD7S4NgHE8Ioj5eObKFzHpih/cTD1sDRpg=="
+ "resolved" "https://registry.npmjs.org/@mui/material/-/material-5.6.2.tgz"
+ "version" "5.6.2"
+ dependencies:
+ "@babel/runtime" "^7.17.2"
+ "@mui/base" "5.0.0-alpha.77"
+ "@mui/system" "^5.6.2"
+ "@mui/types" "^7.1.3"
+ "@mui/utils" "^5.6.1"
+ "@types/react-transition-group" "^4.4.4"
+ "clsx" "^1.1.1"
+ "csstype" "^3.0.11"
+ "hoist-non-react-statics" "^3.3.2"
+ "prop-types" "^15.7.2"
+ "react-is" "^17.0.2"
+ "react-transition-group" "^4.4.2"
+
+"@mui/private-theming@^5.6.2":
+ "integrity" "sha512-IbrSfFXfiZdyhRMC2bgGTFtb16RBQ5mccmjeh3MtAERWuepiCK7gkW5D9WhEsfTu6iez+TEjeUKSgmMHlsM2mg=="
+ "resolved" "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.6.2.tgz"
+ "version" "5.6.2"
+ dependencies:
+ "@babel/runtime" "^7.17.2"
+ "@mui/utils" "^5.6.1"
+ "prop-types" "^15.7.2"
+
+"@mui/styled-engine@^5.6.1":
+ "integrity" "sha512-jEhH6TBY8jc9S8yVncXmoTYTbATjEu44RMFXj6sIYfKr5NArVwTwRo3JexLL0t3BOAiYM4xsFLgfKEIvB9SAeQ=="
+ "resolved" "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.6.1.tgz"
+ "version" "5.6.1"
+ dependencies:
+ "@babel/runtime" "^7.17.2"
+ "@emotion/cache" "^11.7.1"
+ "prop-types" "^15.7.2"
+
+"@mui/system@^5.2.3", "@mui/system@^5.6.2":
+ "integrity" "sha512-Wg9TRbvavSwEYk6UdpnoDx+CqJfaAN7AzlmwEx7DtGmx0snFVBST8FVb1Ev1vXosxEnq6/fe7ZDRobFVewvEPQ=="
+ "resolved" "https://registry.npmjs.org/@mui/system/-/system-5.6.2.tgz"
+ "version" "5.6.2"
+ dependencies:
+ "@babel/runtime" "^7.17.2"
+ "@mui/private-theming" "^5.6.2"
+ "@mui/styled-engine" "^5.6.1"
+ "@mui/types" "^7.1.3"
+ "@mui/utils" "^5.6.1"
+ "clsx" "^1.1.1"
+ "csstype" "^3.0.11"
+ "prop-types" "^15.7.2"
+
+"@mui/types@^7.1.3":
+ "integrity" "sha512-DDF0UhMBo4Uezlk+6QxrlDbchF79XG6Zs0zIewlR4c0Dt6GKVFfUtzPtHCH1tTbcSlq/L2bGEdiaoHBJ9Y1gSA=="
+ "resolved" "https://registry.npmjs.org/@mui/types/-/types-7.1.3.tgz"
+ "version" "7.1.3"
+
+"@mui/utils@^5.6.0", "@mui/utils@^5.6.1":
+ "integrity" "sha512-CPrzrkiBusCZBLWu0Sg5MJvR3fKJyK3gKecLVX012LULyqg2U64Oz04BKhfkbtBrPBbSQxM+DWW9B1c9hmV9nQ=="
+ "resolved" "https://registry.npmjs.org/@mui/utils/-/utils-5.6.1.tgz"
+ "version" "5.6.1"
+ dependencies:
+ "@babel/runtime" "^7.17.2"
+ "@types/prop-types" "^15.7.4"
+ "@types/react-is" "^16.7.1 || ^17.0.0"
+ "prop-types" "^15.7.2"
+ "react-is" "^17.0.2"
+
+"@mui/x-date-pickers@^5.0.0-alpha.1":
+ "integrity" "sha512-dLPkRiIn2Gr0momblxiOnIwrxn4SijVix+8e08mwAGWhiWcmWep1O9XTRDpZsjB0kjHYCf+kZjlRX4dxnj2acg=="
+ "resolved" "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-5.0.0-alpha.1.tgz"
+ "version" "5.0.0-alpha.1"
+ dependencies:
+ "@date-io/date-fns" "^2.11.0"
+ "@date-io/dayjs" "^2.11.0"
+ "@date-io/luxon" "^2.11.1"
+ "@date-io/moment" "^2.11.0"
+ "@mui/utils" "^5.6.0"
+ "clsx" "^1.1.1"
+ "prop-types" "^15.7.2"
+ "react-transition-group" "^4.4.2"
+ "rifm" "^0.12.1"
+
"@next/env@12.1.5":
"integrity" "sha512-+34yUJslfJi7Lyx6ELuN8nWcOzi27izfYnZIC1Dqv7kmmfiBVxgzR3BXhlvEMTKC2IRJhXVs2FkMY+buQe3k7Q=="
"resolved" "https://registry.npmjs.org/@next/env/-/env-12.1.5.tgz"
@@ -84,6 +574,11 @@
"@nodelib/fs.scandir" "2.1.5"
"fastq" "^1.6.0"
+"@popperjs/core@^2.11.5":
+ "integrity" "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw=="
+ "resolved" "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz"
+ "version" "2.11.5"
+
"@rushstack/eslint-patch@1.0.8":
"integrity" "sha512-ZK5v4bJwgXldAUA8r3q9YKfCwOqoHTK/ZqRjSeRXQrBXWouoPnS4MQtgC4AXGiiBuUu5wxrRgTlv0ktmM4P1Aw=="
"resolved" "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.0.8.tgz"
@@ -101,11 +596,164 @@
dependencies:
"defer-to-connect" "^1.0.1"
+"@types/body-parser@*":
+ "integrity" "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g=="
+ "resolved" "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz"
+ "version" "1.19.2"
+ dependencies:
+ "@types/connect" "*"
+ "@types/node" "*"
+
+"@types/connect@*":
+ "integrity" "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ=="
+ "resolved" "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz"
+ "version" "3.4.35"
+ dependencies:
+ "@types/node" "*"
+
+"@types/cookie@^0.5.1":
+ "integrity" "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g=="
+ "resolved" "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz"
+ "version" "0.5.1"
+
+"@types/debug@^4.1.7":
+ "integrity" "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg=="
+ "resolved" "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz"
+ "version" "4.1.7"
+ dependencies:
+ "@types/ms" "*"
+
+"@types/eslint-scope@^3.7.3":
+ "integrity" "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g=="
+ "resolved" "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz"
+ "version" "3.7.3"
+ dependencies:
+ "@types/eslint" "*"
+ "@types/estree" "*"
+
+"@types/eslint@*":
+ "integrity" "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA=="
+ "resolved" "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz"
+ "version" "8.4.1"
+ dependencies:
+ "@types/estree" "*"
+ "@types/json-schema" "*"
+
+"@types/estree@*", "@types/estree@^0.0.51":
+ "integrity" "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ=="
+ "resolved" "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz"
+ "version" "0.0.51"
+
+"@types/express-serve-static-core@^4.17.18":
+ "integrity" "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig=="
+ "resolved" "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz"
+ "version" "4.17.28"
+ dependencies:
+ "@types/node" "*"
+ "@types/qs" "*"
+ "@types/range-parser" "*"
+
+"@types/express@^4.17.13":
+ "integrity" "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA=="
+ "resolved" "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz"
+ "version" "4.17.13"
+ dependencies:
+ "@types/body-parser" "*"
+ "@types/express-serve-static-core" "^4.17.18"
+ "@types/qs" "*"
+ "@types/serve-static" "*"
+
+"@types/json-schema@*", "@types/json-schema@^7.0.8":
+ "integrity" "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ=="
+ "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz"
+ "version" "7.0.11"
+
"@types/json5@^0.0.29":
"integrity" "sha1-7ihweulOEdK4J7y+UnC86n8+ce4="
"resolved" "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz"
"version" "0.0.29"
+"@types/mime@^1":
+ "integrity" "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
+ "resolved" "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz"
+ "version" "1.3.2"
+
+"@types/ms@*":
+ "integrity" "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA=="
+ "resolved" "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz"
+ "version" "0.7.31"
+
+"@types/node@*":
+ "integrity" "sha512-wANk6fBrUwdpY4isjWrKTufkrXdu1D2YHCot2fD/DfWxF5sMrVSA+KN7ydckvaTCh0HiqX9IVl0L5/ZoXg5M7w=="
+ "resolved" "https://registry.npmjs.org/@types/node/-/node-17.0.25.tgz"
+ "version" "17.0.25"
+
+"@types/node@^16.11.7":
+ "integrity" "sha512-l/y1ZZpWqevemVQmk0Q1TPohlJTul7u9ysq3bw6xlRDO8z+98JBI6gp4JS0OK8YkWUdYxnJU35H4vOzuiOFIag=="
+ "resolved" "https://registry.npmjs.org/@types/node/-/node-16.11.28.tgz"
+ "version" "16.11.28"
+
+"@types/parse-json@^4.0.0":
+ "integrity" "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
+ "resolved" "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz"
+ "version" "4.0.0"
+
+"@types/prop-types@*", "@types/prop-types@^15.7.4":
+ "integrity" "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
+ "resolved" "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz"
+ "version" "15.7.5"
+
+"@types/qs@*":
+ "integrity" "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
+ "resolved" "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz"
+ "version" "6.9.7"
+
+"@types/range-parser@*":
+ "integrity" "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw=="
+ "resolved" "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz"
+ "version" "1.2.4"
+
+"@types/react-is@^16.7.1 || ^17.0.0":
+ "integrity" "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw=="
+ "resolved" "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz"
+ "version" "17.0.3"
+ dependencies:
+ "@types/react" "*"
+
+"@types/react-transition-group@^4.4.4":
+ "integrity" "sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug=="
+ "resolved" "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz"
+ "version" "4.4.4"
+ dependencies:
+ "@types/react" "*"
+
+"@types/react@*", "@types/react@^17.0.0 || ^18.0.0":
+ "integrity" "sha512-bPqwzJRzKtfI0mVYr5R+1o9BOE8UEXefwc1LwcBtfnaAn6OoqMhLa/91VA8aeWfDPJt1kHvYKI8RHcQybZLHHA=="
+ "resolved" "https://registry.npmjs.org/@types/react/-/react-18.0.6.tgz"
+ "version" "18.0.6"
+ dependencies:
+ "@types/prop-types" "*"
+ "@types/scheduler" "*"
+ "csstype" "^3.0.2"
+
+"@types/scheduler@*":
+ "integrity" "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
+ "resolved" "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz"
+ "version" "0.16.2"
+
+"@types/serve-static@*":
+ "integrity" "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ=="
+ "resolved" "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz"
+ "version" "1.13.10"
+ dependencies:
+ "@types/mime" "^1"
+ "@types/node" "*"
+
+"@types/validator@^13.7.1":
+ "integrity" "sha512-KFcchQ3h0OPQgFirBRPZr5F/sVjxZsOrQHedj3zi8AH3Zv/hOLx2OLR4hxR5HcfoU+33n69ZuOfzthKVdMoTiw=="
+ "resolved" "https://registry.npmjs.org/@types/validator/-/validator-13.7.2.tgz"
+ "version" "13.7.2"
+
"@typescript-eslint/parser@5.10.1":
"integrity" "sha512-GReo3tjNBwR5RnRO0K2wDIDN31cM3MmDtgyQ85oAxAmC5K3j/g85IjP+cDfcqDsDDBf1HNKQAD0WqOYL8jXqUA=="
"resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.10.1.tgz"
@@ -150,6 +798,137 @@
"@typescript-eslint/types" "5.10.1"
"eslint-visitor-keys" "^3.0.0"
+"@webassemblyjs/ast@1.11.1":
+ "integrity" "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw=="
+ "resolved" "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz"
+ "version" "1.11.1"
+ dependencies:
+ "@webassemblyjs/helper-numbers" "1.11.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
+
+"@webassemblyjs/floating-point-hex-parser@1.11.1":
+ "integrity" "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ=="
+ "resolved" "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz"
+ "version" "1.11.1"
+
+"@webassemblyjs/helper-api-error@1.11.1":
+ "integrity" "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg=="
+ "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz"
+ "version" "1.11.1"
+
+"@webassemblyjs/helper-buffer@1.11.1":
+ "integrity" "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA=="
+ "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz"
+ "version" "1.11.1"
+
+"@webassemblyjs/helper-numbers@1.11.1":
+ "integrity" "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ=="
+ "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz"
+ "version" "1.11.1"
+ dependencies:
+ "@webassemblyjs/floating-point-hex-parser" "1.11.1"
+ "@webassemblyjs/helper-api-error" "1.11.1"
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/helper-wasm-bytecode@1.11.1":
+ "integrity" "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q=="
+ "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz"
+ "version" "1.11.1"
+
+"@webassemblyjs/helper-wasm-section@1.11.1":
+ "integrity" "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg=="
+ "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz"
+ "version" "1.11.1"
+ dependencies:
+ "@webassemblyjs/ast" "1.11.1"
+ "@webassemblyjs/helper-buffer" "1.11.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
+ "@webassemblyjs/wasm-gen" "1.11.1"
+
+"@webassemblyjs/ieee754@1.11.1":
+ "integrity" "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ=="
+ "resolved" "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz"
+ "version" "1.11.1"
+ dependencies:
+ "@xtuc/ieee754" "^1.2.0"
+
+"@webassemblyjs/leb128@1.11.1":
+ "integrity" "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw=="
+ "resolved" "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz"
+ "version" "1.11.1"
+ dependencies:
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/utf8@1.11.1":
+ "integrity" "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ=="
+ "resolved" "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz"
+ "version" "1.11.1"
+
+"@webassemblyjs/wasm-edit@1.11.1":
+ "integrity" "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA=="
+ "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz"
+ "version" "1.11.1"
+ dependencies:
+ "@webassemblyjs/ast" "1.11.1"
+ "@webassemblyjs/helper-buffer" "1.11.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
+ "@webassemblyjs/helper-wasm-section" "1.11.1"
+ "@webassemblyjs/wasm-gen" "1.11.1"
+ "@webassemblyjs/wasm-opt" "1.11.1"
+ "@webassemblyjs/wasm-parser" "1.11.1"
+ "@webassemblyjs/wast-printer" "1.11.1"
+
+"@webassemblyjs/wasm-gen@1.11.1":
+ "integrity" "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA=="
+ "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz"
+ "version" "1.11.1"
+ dependencies:
+ "@webassemblyjs/ast" "1.11.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
+ "@webassemblyjs/ieee754" "1.11.1"
+ "@webassemblyjs/leb128" "1.11.1"
+ "@webassemblyjs/utf8" "1.11.1"
+
+"@webassemblyjs/wasm-opt@1.11.1":
+ "integrity" "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw=="
+ "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz"
+ "version" "1.11.1"
+ dependencies:
+ "@webassemblyjs/ast" "1.11.1"
+ "@webassemblyjs/helper-buffer" "1.11.1"
+ "@webassemblyjs/wasm-gen" "1.11.1"
+ "@webassemblyjs/wasm-parser" "1.11.1"
+
+"@webassemblyjs/wasm-parser@1.11.1":
+ "integrity" "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA=="
+ "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz"
+ "version" "1.11.1"
+ dependencies:
+ "@webassemblyjs/ast" "1.11.1"
+ "@webassemblyjs/helper-api-error" "1.11.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
+ "@webassemblyjs/ieee754" "1.11.1"
+ "@webassemblyjs/leb128" "1.11.1"
+ "@webassemblyjs/utf8" "1.11.1"
+
+"@webassemblyjs/wast-printer@1.11.1":
+ "integrity" "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg=="
+ "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz"
+ "version" "1.11.1"
+ dependencies:
+ "@webassemblyjs/ast" "1.11.1"
+ "@xtuc/long" "4.2.2"
+
+"@xtuc/ieee754@^1.2.0":
+ "integrity" "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA=="
+ "resolved" "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz"
+ "version" "1.2.0"
+
+"@xtuc/long@4.2.2":
+ "integrity" "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="
+ "resolved" "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz"
+ "version" "4.2.2"
+
"abbrev@1":
"integrity" "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
"resolved" "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz"
@@ -163,17 +942,27 @@
"mime-types" "~2.1.34"
"negotiator" "0.6.3"
+"acorn-import-assertions@^1.7.6":
+ "integrity" "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw=="
+ "resolved" "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz"
+ "version" "1.8.0"
+
"acorn-jsx@^5.3.1":
"integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="
"resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
"version" "5.3.2"
-"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^8.7.0":
+"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^8", "acorn@^8.4.1", "acorn@^8.5.0", "acorn@^8.7.0":
"integrity" "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ=="
"resolved" "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz"
"version" "8.7.0"
-"ajv@^6.10.0", "ajv@^6.12.4":
+"ajv-keywords@^3.5.2":
+ "integrity" "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ=="
+ "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz"
+ "version" "3.5.2"
+
+"ajv@^6.10.0", "ajv@^6.12.4", "ajv@^6.12.5", "ajv@^6.9.1":
"integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="
"resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
"version" "6.12.6"
@@ -195,6 +984,13 @@
"resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"
"version" "5.0.1"
+"ansi-styles@^3.2.1":
+ "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="
+ "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz"
+ "version" "3.2.1"
+ dependencies:
+ "color-convert" "^1.9.0"
+
"ansi-styles@^4.0.0", "ansi-styles@^4.1.0":
"integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
"resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
@@ -284,11 +1080,27 @@
"resolved" "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz"
"version" "2.2.0"
+"babel-plugin-macros@^2.6.1":
+ "integrity" "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg=="
+ "resolved" "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz"
+ "version" "2.8.0"
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "cosmiconfig" "^6.0.0"
+ "resolve" "^1.12.0"
+
"balanced-match@^1.0.0":
"integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
"resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
"version" "1.0.2"
+"basic-auth@^2.0.1":
+ "integrity" "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg=="
+ "resolved" "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz"
+ "version" "2.0.1"
+ dependencies:
+ "safe-buffer" "5.1.2"
+
"binary-extensions@^2.0.0":
"integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
"resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz"
@@ -339,6 +1151,22 @@
dependencies:
"fill-range" "^7.0.1"
+"browserslist@^4.14.5", "browserslist@^4.17.5":
+ "integrity" "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA=="
+ "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz"
+ "version" "4.20.2"
+ dependencies:
+ "caniuse-lite" "^1.0.30001317"
+ "electron-to-chromium" "^1.4.84"
+ "escalade" "^3.1.1"
+ "node-releases" "^2.0.2"
+ "picocolors" "^1.0.0"
+
+"buffer-from@^1.0.0":
+ "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+ "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz"
+ "version" "1.1.2"
+
"bytes@3.1.2":
"integrity" "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
"resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz"
@@ -375,11 +1203,20 @@
"resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz"
"version" "6.3.0"
-"caniuse-lite@^1.0.30001283":
+"caniuse-lite@^1.0.30001283", "caniuse-lite@^1.0.30001317":
"integrity" "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw=="
"resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz"
"version" "1.0.30001332"
+"chalk@^2.0.0":
+ "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="
+ "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
+ "version" "2.4.2"
+ dependencies:
+ "ansi-styles" "^3.2.1"
+ "escape-string-regexp" "^1.0.5"
+ "supports-color" "^5.3.0"
+
"chalk@^4.0.0", "chalk@^4.1.0":
"integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="
"resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
@@ -388,6 +1225,11 @@
"ansi-styles" "^4.1.0"
"supports-color" "^7.1.0"
+"charenc@0.0.2":
+ "integrity" "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc="
+ "resolved" "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz"
+ "version" "0.0.2"
+
"chokidar@^3.5.2":
"integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw=="
"resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz"
@@ -403,6 +1245,11 @@
optionalDependencies:
"fsevents" "~2.3.2"
+"chrome-trace-event@^1.0.2":
+ "integrity" "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg=="
+ "resolved" "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz"
+ "version" "1.0.3"
+
"ci-info@^2.0.0":
"integrity" "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="
"resolved" "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz"
@@ -420,6 +1267,18 @@
dependencies:
"mimic-response" "^1.0.0"
+"clsx@^1.1.1":
+ "integrity" "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA=="
+ "resolved" "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz"
+ "version" "1.1.1"
+
+"color-convert@^1.9.0":
+ "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="
+ "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz"
+ "version" "1.9.3"
+ dependencies:
+ "color-name" "1.1.3"
+
"color-convert@^2.0.1":
"integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="
"resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
@@ -432,6 +1291,16 @@
"resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
"version" "1.1.4"
+"color-name@1.1.3":
+ "integrity" "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+ "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
+ "version" "1.1.3"
+
+"commander@^2.20.0":
+ "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz"
+ "version" "2.20.3"
+
"concat-map@0.0.1":
"integrity" "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
"resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
@@ -472,11 +1341,23 @@
"resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz"
"version" "1.0.4"
+"convert-source-map@^1.5.0", "convert-source-map@^1.7.0":
+ "integrity" "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA=="
+ "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz"
+ "version" "1.8.0"
+ dependencies:
+ "safe-buffer" "~5.1.1"
+
"cookie-signature@1.0.6":
"integrity" "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
"resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz"
"version" "1.0.6"
+"cookie@^0.5.0":
+ "integrity" "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
+ "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz"
+ "version" "0.5.0"
+
"cookie@0.4.2":
"integrity" "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA=="
"resolved" "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz"
@@ -495,6 +1376,17 @@
"object-assign" "^4"
"vary" "^1"
+"cosmiconfig@^6.0.0":
+ "integrity" "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg=="
+ "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz"
+ "version" "6.0.0"
+ dependencies:
+ "@types/parse-json" "^4.0.0"
+ "import-fresh" "^3.1.0"
+ "parse-json" "^5.0.0"
+ "path-type" "^4.0.0"
+ "yaml" "^1.7.2"
+
"cross-spawn@^7.0.2":
"integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w=="
"resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
@@ -504,17 +1396,37 @@
"shebang-command" "^2.0.0"
"which" "^2.0.1"
+"crypt@0.0.2":
+ "integrity" "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs="
+ "resolved" "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz"
+ "version" "0.0.2"
+
"crypto-random-string@^2.0.0":
"integrity" "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA=="
"resolved" "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz"
"version" "2.0.0"
+"csstype@^3.0.11", "csstype@^3.0.2":
+ "integrity" "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw=="
+ "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz"
+ "version" "3.0.11"
+
"damerau-levenshtein@^1.0.7":
"integrity" "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA=="
"resolved" "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz"
"version" "1.0.8"
-"debug@^2.6.9":
+"date-fns-tz@^1.3.4":
+ "integrity" "sha512-O47vEyz85F2ax/ZdhMBJo187RivZGjH6V0cPjPzpm/yi6YffJg4upD/8ibezO11ezZwP3QYlBHh/t4JhRNx0Ow=="
+ "resolved" "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-1.3.4.tgz"
+ "version" "1.3.4"
+
+"date-fns@^2.0.0", "date-fns@^2.25.0", "date-fns@^2.28.0", "date-fns@>=2.0.0":
+ "integrity" "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw=="
+ "resolved" "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz"
+ "version" "2.28.0"
+
+"debug@^2.6.9", "debug@2.6.9":
"integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="
"resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
"version" "2.6.9"
@@ -528,19 +1440,33 @@
dependencies:
"ms" "^2.1.1"
-"debug@^4.1.1", "debug@^4.3.2":
+"debug@^4.1.0":
"integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="
"resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
"version" "4.3.4"
dependencies:
"ms" "2.1.2"
-"debug@2.6.9":
- "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="
- "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
- "version" "2.6.9"
+"debug@^4.1.1":
+ "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="
+ "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
+ "version" "4.3.4"
dependencies:
- "ms" "2.0.0"
+ "ms" "2.1.2"
+
+"debug@^4.3.2":
+ "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="
+ "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
+ "version" "4.3.4"
+ dependencies:
+ "ms" "2.1.2"
+
+"debug@^4.3.3":
+ "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="
+ "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
+ "version" "4.3.4"
+ dependencies:
+ "ms" "2.1.2"
"decompress-response@^3.3.0":
"integrity" "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M="
@@ -572,6 +1498,11 @@
"has-property-descriptors" "^1.0.0"
"object-keys" "^1.1.1"
+"denque@^2.0.1":
+ "integrity" "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ=="
+ "resolved" "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz"
+ "version" "2.0.1"
+
"depd@~1.1.2":
"integrity" "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
"resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz"
@@ -603,6 +1534,14 @@
dependencies:
"esutils" "^2.0.2"
+"dom-helpers@^5.0.1":
+ "integrity" "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA=="
+ "resolved" "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz"
+ "version" "5.2.1"
+ dependencies:
+ "@babel/runtime" "^7.8.7"
+ "csstype" "^3.0.2"
+
"dot-prop@^5.2.0":
"integrity" "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q=="
"resolved" "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz"
@@ -615,6 +1554,11 @@
"resolved" "https://registry.npmjs.org/dotenv/-/dotenv-16.0.0.tgz"
"version" "16.0.0"
+"dottie@^2.0.2":
+ "integrity" "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg=="
+ "resolved" "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz"
+ "version" "2.0.2"
+
"duplexer3@^0.1.4":
"integrity" "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI="
"resolved" "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz"
@@ -625,6 +1569,11 @@
"resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
"version" "1.1.1"
+"electron-to-chromium@^1.4.84":
+ "integrity" "sha512-maZIKjnYDvF7Fs35nvVcyr44UcKNwybr93Oba2n3HkKDFAtk0svERkLN/HyczJDS3Fo4wU9th9fUQd09ZLtj1w=="
+ "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.118.tgz"
+ "version" "1.4.118"
+
"emoji-regex@^8.0.0":
"integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
"resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"
@@ -647,6 +1596,21 @@
dependencies:
"once" "^1.4.0"
+"enhanced-resolve@^5.9.2":
+ "integrity" "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow=="
+ "resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz"
+ "version" "5.9.3"
+ dependencies:
+ "graceful-fs" "^4.2.4"
+ "tapable" "^2.2.0"
+
+"error-ex@^1.3.1":
+ "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g=="
+ "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz"
+ "version" "1.3.2"
+ dependencies:
+ "is-arrayish" "^0.2.1"
+
"es-abstract@^1.19.1", "es-abstract@^1.19.2":
"integrity" "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA=="
"resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz"
@@ -673,6 +1637,11 @@
"string.prototype.trimstart" "^1.0.4"
"unbox-primitive" "^1.0.1"
+"es-module-lexer@^0.9.0":
+ "integrity" "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ=="
+ "resolved" "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz"
+ "version" "0.9.3"
+
"es-shim-unscopables@^1.0.0":
"integrity" "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w=="
"resolved" "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz"
@@ -689,6 +1658,11 @@
"is-date-object" "^1.0.1"
"is-symbol" "^1.0.2"
+"escalade@^3.1.1":
+ "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
+ "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz"
+ "version" "3.1.1"
+
"escape-goat@^2.0.0":
"integrity" "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q=="
"resolved" "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz"
@@ -699,6 +1673,11 @@
"resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz"
"version" "1.0.3"
+"escape-string-regexp@^1.0.5":
+ "integrity" "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+ "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
+ "version" "1.0.5"
+
"escape-string-regexp@^4.0.0":
"integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
"resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
@@ -824,6 +1803,14 @@
"esrecurse" "^4.3.0"
"estraverse" "^5.2.0"
+"eslint-scope@5.1.1":
+ "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw=="
+ "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz"
+ "version" "5.1.1"
+ dependencies:
+ "esrecurse" "^4.3.0"
+ "estraverse" "^4.1.1"
+
"eslint-utils@^3.0.0":
"integrity" "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA=="
"resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz"
@@ -905,6 +1892,11 @@
dependencies:
"estraverse" "^5.2.0"
+"estraverse@^4.1.1":
+ "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
+ "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz"
+ "version" "4.3.0"
+
"estraverse@^5.1.0", "estraverse@^5.2.0", "estraverse@^5.3.0":
"integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="
"resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
@@ -920,6 +1912,18 @@
"resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz"
"version" "1.8.1"
+"events@^3.2.0":
+ "integrity" "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="
+ "resolved" "https://registry.npmjs.org/events/-/events-3.3.0.tgz"
+ "version" "3.3.0"
+
+"express-basic-auth@^1.2.1":
+ "integrity" "sha512-L6YQ1wQ/mNjVLAmK3AG1RK6VkokA1BIY6wmiH304Xtt/cLTps40EusZsU1Uop+v9lTDPxdtzbFmdXfFO3KEnwA=="
+ "resolved" "https://registry.npmjs.org/express-basic-auth/-/express-basic-auth-1.2.1.tgz"
+ "version" "1.2.1"
+ dependencies:
+ "basic-auth" "^2.0.1"
+
"express-form-data@^2.0.18":
"integrity" "sha512-UU6bHSqEdUeuhoIKFLF2ABXlCB5iM/AdRVmgdI1GsXc6S9Pnk4yD7S8B7pMFfAlUtIEWLpYW7AFsf4szEZxkeA=="
"resolved" "https://registry.npmjs.org/express-form-data/-/express-form-data-2.0.18.tgz"
@@ -928,7 +1932,7 @@
"connect-multiparty" "^2.2.0"
"fs-extra" "^9.1.0"
-"express@^4.17.3":
+"express@^4.17.3", "express@>=4":
"integrity" "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg=="
"resolved" "https://registry.npmjs.org/express/-/express-4.17.3.tgz"
"version" "4.17.3"
@@ -1024,6 +2028,11 @@
"statuses" "~1.5.0"
"unpipe" "~1.0.0"
+"find-root@^1.1.0":
+ "integrity" "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
+ "resolved" "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz"
+ "version" "1.1.0"
+
"find-up@^2.1.0":
"integrity" "sha1-RdG35QbHF93UgndaK3eSCjwMV6c="
"resolved" "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz"
@@ -1084,6 +2093,18 @@
"resolved" "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz"
"version" "1.2.3"
+"generate-function@^2.3.1":
+ "integrity" "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ=="
+ "resolved" "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz"
+ "version" "2.3.1"
+ dependencies:
+ "is-property" "^1.0.2"
+
+"gensync@^1.0.0-beta.2":
+ "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
+ "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz"
+ "version" "1.0.0-beta.2"
+
"get-intrinsic@^1.0.2", "get-intrinsic@^1.1.0", "get-intrinsic@^1.1.1":
"integrity" "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q=="
"resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz"
@@ -1115,7 +2136,7 @@
"call-bind" "^1.0.2"
"get-intrinsic" "^1.1.1"
-"glob-parent@^5.1.2":
+"glob-parent@^5.1.2", "glob-parent@~5.1.2":
"integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="
"resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
"version" "5.1.2"
@@ -1129,12 +2150,10 @@
dependencies:
"is-glob" "^4.0.3"
-"glob-parent@~5.1.2":
- "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="
- "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
- "version" "5.1.2"
- dependencies:
- "is-glob" "^4.0.1"
+"glob-to-regexp@^0.4.1":
+ "integrity" "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
+ "resolved" "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz"
+ "version" "0.4.1"
"glob@^7.1.3", "glob@^7.1.6":
"integrity" "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q=="
@@ -1167,6 +2186,11 @@
dependencies:
"ini" "2.0.0"
+"globals@^11.1.0":
+ "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
+ "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz"
+ "version" "11.12.0"
+
"globals@^13.6.0", "globals@^13.9.0":
"integrity" "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A=="
"resolved" "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz"
@@ -1203,7 +2227,7 @@
"to-readable-stream" "^1.0.0"
"url-parse-lax" "^3.0.0"
-"graceful-fs@^4.1.2", "graceful-fs@^4.1.6", "graceful-fs@^4.2.0":
+"graceful-fs@^4.1.2", "graceful-fs@^4.1.6", "graceful-fs@^4.2.0", "graceful-fs@^4.2.4", "graceful-fs@^4.2.9":
"integrity" "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
"resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz"
"version" "4.2.10"
@@ -1254,6 +2278,13 @@
dependencies:
"function-bind" "^1.1.1"
+"hoist-non-react-statics@^3.3.1", "hoist-non-react-statics@^3.3.2":
+ "integrity" "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw=="
+ "resolved" "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz"
+ "version" "3.3.2"
+ dependencies:
+ "react-is" "^16.7.0"
+
"http-cache-semantics@^4.0.0":
"integrity" "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ=="
"resolved" "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz"
@@ -1281,6 +2312,13 @@
"statuses" ">= 1.5.0 < 2"
"toidentifier" "1.0.1"
+"iconv-lite@^0.6.3":
+ "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="
+ "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz"
+ "version" "0.6.3"
+ dependencies:
+ "safer-buffer" ">= 2.1.2 < 3.0.0"
+
"iconv-lite@0.4.24":
"integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="
"resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz"
@@ -1298,7 +2336,7 @@
"resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz"
"version" "5.2.0"
-"import-fresh@^3.0.0", "import-fresh@^3.2.1":
+"import-fresh@^3.0.0", "import-fresh@^3.1.0", "import-fresh@^3.2.1":
"integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw=="
"resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz"
"version" "3.3.0"
@@ -1316,6 +2354,11 @@
"resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"
"version" "0.1.4"
+"inflection@^1.13.2":
+ "integrity" "sha512-cmZlljCRTBFouT8UzMzrGcVEvkv6D/wBdcdKG7J1QH5cXjtU75Dm+P27v9EKu/Y43UYyCJd1WC4zLebRrC8NBw=="
+ "resolved" "https://registry.npmjs.org/inflection/-/inflection-1.13.2.tgz"
+ "version" "1.13.2"
+
"inflight@^1.0.4":
"integrity" "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk="
"resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
@@ -1353,6 +2396,22 @@
"resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
"version" "1.9.1"
+"iron-session@^6.1.3":
+ "integrity" "sha512-o5ErwzAtTBKPtxo4nDmxOZAjK4Stku//5sFM0vac3/Px34530gTwnXoa8zwsC4/koqCtKY0yC0KF/1K+ZMGuHA=="
+ "resolved" "https://registry.npmjs.org/iron-session/-/iron-session-6.1.3.tgz"
+ "version" "6.1.3"
+ dependencies:
+ "@hapi/iron" "^6.0.0"
+ "@types/cookie" "^0.5.1"
+ "@types/express" "^4.17.13"
+ "@types/node" "^16.11.7"
+ "cookie" "^0.5.0"
+
+"is-arrayish@^0.2.1":
+ "integrity" "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
+ "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz"
+ "version" "0.2.1"
+
"is-bigint@^1.0.1":
"integrity" "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg=="
"resolved" "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz"
@@ -1375,6 +2434,11 @@
"call-bind" "^1.0.2"
"has-tostringtag" "^1.0.0"
+"is-buffer@~1.1.6":
+ "integrity" "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+ "resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz"
+ "version" "1.1.6"
+
"is-callable@^1.1.4", "is-callable@^1.2.4":
"integrity" "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w=="
"resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz"
@@ -1458,6 +2522,11 @@
"resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz"
"version" "3.0.3"
+"is-property@^1.0.2":
+ "integrity" "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ="
+ "resolved" "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz"
+ "version" "1.0.2"
+
"is-regex@^1.1.4":
"integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg=="
"resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz"
@@ -1509,7 +2578,16 @@
"resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
"version" "2.0.0"
-"js-tokens@^3.0.0 || ^4.0.0":
+"jest-worker@^27.4.5":
+ "integrity" "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg=="
+ "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz"
+ "version" "27.5.1"
+ dependencies:
+ "@types/node" "*"
+ "merge-stream" "^2.0.0"
+ "supports-color" "^8.0.0"
+
+"js-tokens@^3.0.0 || ^4.0.0", "js-tokens@^4.0.0":
"integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
"resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
"version" "4.0.0"
@@ -1521,11 +2599,26 @@
dependencies:
"argparse" "^2.0.1"
+"jsesc@^2.5.1":
+ "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
+ "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz"
+ "version" "2.5.2"
+
"json-buffer@3.0.0":
"integrity" "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg="
"resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz"
"version" "3.0.0"
+"json-parse-better-errors@^1.0.2":
+ "integrity" "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
+ "resolved" "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz"
+ "version" "1.0.2"
+
+"json-parse-even-better-errors@^2.3.0":
+ "integrity" "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
+ "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz"
+ "version" "2.3.1"
+
"json-schema-traverse@^0.4.1":
"integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
"resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
@@ -1543,6 +2636,11 @@
dependencies:
"minimist" "^1.2.0"
+"json5@^2.2.1":
+ "integrity" "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA=="
+ "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz"
+ "version" "2.2.1"
+
"jsonfile@^6.0.1":
"integrity" "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ=="
"resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz"
@@ -1594,6 +2692,16 @@
"prelude-ls" "^1.2.1"
"type-check" "~0.4.0"
+"lines-and-columns@^1.1.6":
+ "integrity" "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
+ "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz"
+ "version" "1.2.4"
+
+"loader-runner@^4.2.0":
+ "integrity" "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg=="
+ "resolved" "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz"
+ "version" "4.3.0"
+
"locate-path@^2.0.0":
"integrity" "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4="
"resolved" "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz"
@@ -1607,6 +2715,16 @@
"resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz"
"version" "4.6.2"
+"lodash@^4.17.21":
+ "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
+ "version" "4.17.21"
+
+"long@^4.0.0":
+ "integrity" "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
+ "resolved" "https://registry.npmjs.org/long/-/long-4.0.0.tgz"
+ "version" "4.0.0"
+
"loose-envify@^1.1.0", "loose-envify@^1.4.0":
"integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="
"resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
@@ -1624,6 +2742,14 @@
"resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz"
"version" "2.0.0"
+"lru-cache@^4.1.3":
+ "integrity" "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g=="
+ "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz"
+ "version" "4.1.5"
+ dependencies:
+ "pseudomap" "^1.0.2"
+ "yallist" "^2.1.2"
+
"lru-cache@^6.0.0":
"integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="
"resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz"
@@ -1638,6 +2764,15 @@
dependencies:
"semver" "^6.0.0"
+"md5@^2.3.0":
+ "integrity" "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g=="
+ "resolved" "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz"
+ "version" "2.3.0"
+ dependencies:
+ "charenc" "0.0.2"
+ "crypt" "0.0.2"
+ "is-buffer" "~1.1.6"
+
"media-typer@0.3.0":
"integrity" "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
"resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz"
@@ -1648,6 +2783,11 @@
"resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz"
"version" "1.0.1"
+"merge-stream@^2.0.0":
+ "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
+ "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz"
+ "version" "2.0.0"
+
"merge2@^1.3.0", "merge2@^1.4.1":
"integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
"resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz"
@@ -1671,7 +2811,7 @@
"resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
"version" "1.52.0"
-"mime-types@~2.1.24", "mime-types@~2.1.34":
+"mime-types@^2.1.27", "mime-types@~2.1.24", "mime-types@~2.1.34":
"integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="
"resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
"version" "2.1.35"
@@ -1700,16 +2840,33 @@
"resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz"
"version" "1.2.6"
-"ms@^2.1.1", "ms@2.1.2":
- "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
- "version" "2.1.2"
+"moment-timezone@^0.5.34":
+ "integrity" "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg=="
+ "resolved" "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz"
+ "version" "0.5.34"
+ dependencies:
+ "moment" ">= 2.9.0"
+
+"moment@^2.24.0", "moment@^2.29.1", "moment@^2.29.3", "moment@>= 2.9.0":
+ "integrity" "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw=="
+ "resolved" "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz"
+ "version" "2.29.3"
+
+"ms@^2.1.1":
+ "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
+ "version" "2.1.3"
"ms@2.0.0":
"integrity" "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
"resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
"version" "2.0.0"
+"ms@2.1.2":
+ "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
+ "version" "2.1.2"
+
"ms@2.1.3":
"integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
"resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
@@ -1724,6 +2881,27 @@
"safe-buffer" "5.2.1"
"uid-safe" "2.1.5"
+"mysql2@^2.3.3":
+ "integrity" "sha512-wxJUev6LgMSgACDkb/InIFxDprRa6T95+VEoR+xPvtngtccNH2dGjEB/fVZ8yg1gWv1510c9CvXuJHi5zUm0ZA=="
+ "resolved" "https://registry.npmjs.org/mysql2/-/mysql2-2.3.3.tgz"
+ "version" "2.3.3"
+ dependencies:
+ "denque" "^2.0.1"
+ "generate-function" "^2.3.1"
+ "iconv-lite" "^0.6.3"
+ "long" "^4.0.0"
+ "lru-cache" "^6.0.0"
+ "named-placeholders" "^1.1.2"
+ "seq-queue" "^0.0.5"
+ "sqlstring" "^2.3.2"
+
+"named-placeholders@^1.1.2":
+ "integrity" "sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA=="
+ "resolved" "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz"
+ "version" "1.1.2"
+ dependencies:
+ "lru-cache" "^4.1.3"
+
"nanoid@^3.1.30":
"integrity" "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w=="
"resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz"
@@ -1739,7 +2917,12 @@
"resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz"
"version" "0.6.3"
-"next@>=10.2.0", "next@12.1.5":
+"neo-async@^2.6.2":
+ "integrity" "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
+ "resolved" "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz"
+ "version" "2.6.2"
+
+"next@>= 6.0.0", "next@>=10", "next@>=10.2.0", "next@12.1.5":
"integrity" "sha512-YGHDpyfgCfnT5GZObsKepmRnne7Kzp7nGrac07dikhutWQug7hHg85/+sPJ4ZW5Q2pDkb+n0FnmLkmd44htIJQ=="
"resolved" "https://registry.npmjs.org/next/-/next-12.1.5.tgz"
"version" "12.1.5"
@@ -1762,6 +2945,19 @@
"@next/swc-win32-ia32-msvc" "12.1.5"
"@next/swc-win32-x64-msvc" "12.1.5"
+"nextjs-progressbar@0.0.14":
+ "integrity" "sha512-AXYXHDN6M52AwFnGqH/vlwyo0gbC9zM7QS/4ryOTI0RUqfze5FJl8uSrxKJMzK6hGFdDeQXcZoWsLGXeCVtTwg=="
+ "resolved" "https://registry.npmjs.org/nextjs-progressbar/-/nextjs-progressbar-0.0.14.tgz"
+ "version" "0.0.14"
+ dependencies:
+ "nprogress" "^0.2.0"
+ "prop-types" "^15.7.2"
+
+"node-releases@^2.0.2":
+ "integrity" "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw=="
+ "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz"
+ "version" "2.0.3"
+
"nodemon@^2.0.15":
"integrity" "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA=="
"resolved" "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz"
@@ -1795,6 +2991,11 @@
"resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz"
"version" "4.5.1"
+"nprogress@^0.2.0":
+ "integrity" "sha1-y480xTIT2JVyP8urkH6UIq28r7E="
+ "resolved" "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz"
+ "version" "0.2.0"
+
"object-assign@^4", "object-assign@^4.1.1":
"integrity" "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
"resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
@@ -1922,6 +3123,16 @@
dependencies:
"callsites" "^3.0.0"
+"parse-json@^5.0.0":
+ "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="
+ "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz"
+ "version" "5.2.0"
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "error-ex" "^1.3.1"
+ "json-parse-even-better-errors" "^2.3.0"
+ "lines-and-columns" "^1.1.6"
+
"parseurl@~1.3.3":
"integrity" "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
"resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz"
@@ -1957,6 +3168,11 @@
"resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
"version" "4.0.0"
+"pg-connection-string@^2.5.0":
+ "integrity" "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ=="
+ "resolved" "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz"
+ "version" "2.5.0"
+
"picocolors@^1.0.0":
"integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
"resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz"
@@ -1986,7 +3202,7 @@
"resolved" "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz"
"version" "2.0.0"
-"prop-types@^15.8.1":
+"prop-types@^15.6.2", "prop-types@^15.7.2", "prop-types@^15.8.1":
"integrity" "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="
"resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz"
"version" "15.8.1"
@@ -2003,6 +3219,11 @@
"forwarded" "0.2.0"
"ipaddr.js" "1.9.1"
+"pseudomap@^1.0.2":
+ "integrity" "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
+ "resolved" "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz"
+ "version" "1.0.2"
+
"pstree.remy@^1.1.8":
"integrity" "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w=="
"resolved" "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz"
@@ -2048,6 +3269,13 @@
"resolved" "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz"
"version" "1.0.0"
+"randombytes@^2.1.0":
+ "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ=="
+ "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz"
+ "version" "2.1.0"
+ dependencies:
+ "safe-buffer" "^5.1.0"
+
"range-parser@~1.2.1":
"integrity" "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
"resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz"
@@ -2073,7 +3301,7 @@
"minimist" "^1.2.0"
"strip-json-comments" "~2.0.1"
-"react-dom@^17.0.2 || ^18.0.0-0", "react-dom@18.0.0":
+"react-dom@^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react-dom@^17.0.0 || ^18.0.0", "react-dom@^17.0.2 || ^18.0.0", "react-dom@^17.0.2 || ^18.0.0-0", "react-dom@^18.0.0", "react-dom@>=16", "react-dom@>=16.6.0", "react-dom@18.0.0":
"integrity" "sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw=="
"resolved" "https://registry.npmjs.org/react-dom/-/react-dom-18.0.0.tgz"
"version" "18.0.0"
@@ -2081,12 +3309,41 @@
"loose-envify" "^1.1.0"
"scheduler" "^0.21.0"
-"react-is@^16.13.1":
+"react-is@^16.13.1", "react-is@^16.7.0":
"integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
"resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
"version" "16.13.1"
-"react@^17.0.2 || ^18.0.0-0", "react@^18.0.0", "react@>= 16.8.0 || 17.x.x || ^18.0.0-0", "react@18.0.0":
+"react-is@^17.0.2":
+ "integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
+ "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz"
+ "version" "17.0.2"
+
+"react-number-format@^4.9.3":
+ "integrity" "sha512-am1A1xYAbENuKJ+zpM7V+B1oRTSeOHYltqVKExznIVFweBzhLmOBmyb1DfIKjHo90E0bo1p3nzVJ2NgS5xh+sQ=="
+ "resolved" "https://registry.npmjs.org/react-number-format/-/react-number-format-4.9.3.tgz"
+ "version" "4.9.3"
+ dependencies:
+ "prop-types" "^15.7.2"
+
+"react-toastify@^8.2.0":
+ "integrity" "sha512-Pg2Ju7NngAamarFvLwqrFomJ57u/Ay6i6zfLurt/qPynWkAkOthu6vxfqYpJCyNhHRhR4hu7+bySSeWWJu6PAg=="
+ "resolved" "https://registry.npmjs.org/react-toastify/-/react-toastify-8.2.0.tgz"
+ "version" "8.2.0"
+ dependencies:
+ "clsx" "^1.1.1"
+
+"react-transition-group@^4.4.2":
+ "integrity" "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg=="
+ "resolved" "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz"
+ "version" "4.4.2"
+ dependencies:
+ "@babel/runtime" "^7.5.5"
+ "dom-helpers" "^5.0.1"
+ "loose-envify" "^1.4.0"
+ "prop-types" "^15.6.2"
+
+"react@^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^17.0.0 || ^18.0.0", "react@^17.0.2 || ^18.0.0", "react@^17.0.2 || ^18.0.0-0", "react@^18.0.0", "react@>= 16.0.0", "react@>= 16.8.0 || 17.x.x || ^18.0.0-0", "react@>=16", "react@>=16.6.0", "react@>=16.8", "react@>=16.8.0", "react@18.0.0":
"integrity" "sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A=="
"resolved" "https://registry.npmjs.org/react/-/react-18.0.0.tgz"
"version" "18.0.0"
@@ -2138,7 +3395,7 @@
"resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
"version" "4.0.0"
-"resolve@^1.13.1", "resolve@^1.17.0", "resolve@^1.20.0":
+"resolve@^1.12.0", "resolve@^1.13.1", "resolve@^1.17.0", "resolve@^1.20.0":
"integrity" "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw=="
"resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz"
"version" "1.22.0"
@@ -2162,11 +3419,21 @@
dependencies:
"lowercase-keys" "^1.0.0"
+"retry-as-promised@^5.0.0":
+ "integrity" "sha512-6S+5LvtTl2ggBumk04hBo/4Uf6fRJUwIgunGZ7CYEBCeufGFW1Pu6ucUf/UskHeWOIsUcLOGLFXPig5tR5V1nA=="
+ "resolved" "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-5.0.0.tgz"
+ "version" "5.0.0"
+
"reusify@^1.0.4":
"integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
"resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz"
"version" "1.0.4"
+"rifm@^0.12.1":
+ "integrity" "sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg=="
+ "resolved" "https://registry.npmjs.org/rifm/-/rifm-0.12.1.tgz"
+ "version" "0.12.1"
+
"rimraf@^3.0.2":
"integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA=="
"resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz"
@@ -2181,12 +3448,22 @@
dependencies:
"queue-microtask" "^1.2.2"
-"safe-buffer@5.2.1":
+"safe-buffer@^5.1.0", "safe-buffer@5.2.1":
"integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
"resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
"version" "5.2.1"
-"safer-buffer@>= 2.1.2 < 3":
+"safe-buffer@~5.1.1":
+ "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
+ "version" "5.1.2"
+
+"safe-buffer@5.1.2":
+ "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
+ "version" "5.1.2"
+
+"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0":
"integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
"resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
"version" "2.1.2"
@@ -2198,6 +3475,15 @@
dependencies:
"loose-envify" "^1.1.0"
+"schema-utils@^3.1.0", "schema-utils@^3.1.1":
+ "integrity" "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw=="
+ "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz"
+ "version" "3.1.1"
+ dependencies:
+ "@types/json-schema" "^7.0.8"
+ "ajv" "^6.12.5"
+ "ajv-keywords" "^3.5.2"
+
"semver-diff@^3.1.1":
"integrity" "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg=="
"resolved" "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz"
@@ -2210,7 +3496,17 @@
"resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz"
"version" "5.7.1"
-"semver@^6.0.0", "semver@^6.2.0", "semver@^6.3.0":
+"semver@^6.0.0":
+ "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz"
+ "version" "6.3.0"
+
+"semver@^6.2.0":
+ "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz"
+ "version" "6.3.0"
+
+"semver@^6.3.0":
"integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
"resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz"
"version" "6.3.0"
@@ -2248,6 +3544,45 @@
"range-parser" "~1.2.1"
"statuses" "~1.5.0"
+"seq-queue@^0.0.5":
+ "integrity" "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4="
+ "resolved" "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz"
+ "version" "0.0.5"
+
+"sequelize-pool@^7.1.0":
+ "integrity" "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg=="
+ "resolved" "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz"
+ "version" "7.1.0"
+
+"sequelize@^6.19.0":
+ "integrity" "sha512-B3oGIdpYBERDjRDm74h7Ky67f6ZLcmBXOA7HscYObiOSo4pD7VBc9mtm44wNV7unc0uk8I1d30nbZBTQCE377A=="
+ "resolved" "https://registry.npmjs.org/sequelize/-/sequelize-6.19.0.tgz"
+ "version" "6.19.0"
+ dependencies:
+ "@types/debug" "^4.1.7"
+ "@types/validator" "^13.7.1"
+ "debug" "^4.3.3"
+ "dottie" "^2.0.2"
+ "inflection" "^1.13.2"
+ "lodash" "^4.17.21"
+ "moment" "^2.29.1"
+ "moment-timezone" "^0.5.34"
+ "pg-connection-string" "^2.5.0"
+ "retry-as-promised" "^5.0.0"
+ "semver" "^7.3.5"
+ "sequelize-pool" "^7.1.0"
+ "toposort-class" "^1.0.1"
+ "uuid" "^8.3.2"
+ "validator" "^13.7.0"
+ "wkx" "^0.5.0"
+
+"serialize-javascript@^6.0.0":
+ "integrity" "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag=="
+ "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz"
+ "version" "6.0.0"
+ dependencies:
+ "randombytes" "^2.1.0"
+
"serve-static@1.14.2":
"integrity" "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ=="
"resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz"
@@ -2304,6 +3639,39 @@
"resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz"
"version" "1.0.2"
+"source-map-support@~0.5.20":
+ "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="
+ "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz"
+ "version" "0.5.21"
+ dependencies:
+ "buffer-from" "^1.0.0"
+ "source-map" "^0.6.0"
+
+"source-map@^0.5.0", "source-map@^0.5.7":
+ "integrity" "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+ "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz"
+ "version" "0.5.7"
+
+"source-map@^0.6.0":
+ "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
+ "version" "0.6.1"
+
+"source-map@^0.6.1":
+ "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
+ "version" "0.6.1"
+
+"source-map@~0.7.2":
+ "integrity" "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ=="
+ "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz"
+ "version" "0.7.3"
+
+"sqlstring@^2.3.2":
+ "integrity" "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg=="
+ "resolved" "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz"
+ "version" "2.3.3"
+
"statuses@>= 1.5.0 < 2", "statuses@~1.5.0":
"integrity" "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
"resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz"
@@ -2360,7 +3728,12 @@
"resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz"
"version" "3.0.0"
-"strip-json-comments@^3.1.0", "strip-json-comments@^3.1.1":
+"strip-json-comments@^3.1.0":
+ "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="
+ "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
+ "version" "3.1.1"
+
+"strip-json-comments@^3.1.1":
"integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="
"resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
"version" "3.1.1"
@@ -2375,7 +3748,12 @@
"resolved" "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.1.tgz"
"version" "5.0.1"
-"supports-color@^5.5.0":
+"stylis@4.0.13":
+ "integrity" "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag=="
+ "resolved" "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz"
+ "version" "4.0.13"
+
+"supports-color@^5.3.0", "supports-color@^5.5.0":
"integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow=="
"resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz"
"version" "5.5.0"
@@ -2389,16 +3767,64 @@
dependencies:
"has-flag" "^4.0.0"
+"supports-color@^8.0.0":
+ "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="
+ "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz"
+ "version" "8.1.1"
+ dependencies:
+ "has-flag" "^4.0.0"
+
"supports-preserve-symlinks-flag@^1.0.0":
"integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
"resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
"version" "1.0.0"
+"sweetalert2-react-content@^5.0.0":
+ "integrity" "sha512-j0R0+CN7DkgZIdRqU33NIdazleleyjJp1k3KmunnVYU+MLFsuhiOkV/jc7DfkvY3lhPqmg8OTe2n4/9/KMo4vA=="
+ "resolved" "https://registry.npmjs.org/sweetalert2-react-content/-/sweetalert2-react-content-5.0.0.tgz"
+ "version" "5.0.0"
+
+"sweetalert2@^11.0.0", "sweetalert2@^11.4.9":
+ "integrity" "sha512-DAQGODShPfz9cwxDIUuXZuavlq1kOR2uypXa4DxG9YxlIbcCSlbm7BEnXwP/GK9+wI+whvj5iePEByq3RbIoNg=="
+ "resolved" "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.4.9.tgz"
+ "version" "11.4.9"
+
+"tapable@^2.1.1", "tapable@^2.2.0":
+ "integrity" "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ=="
+ "resolved" "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz"
+ "version" "2.2.1"
+
+"terser-webpack-plugin@^5.1.3":
+ "integrity" "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g=="
+ "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz"
+ "version" "5.3.1"
+ dependencies:
+ "jest-worker" "^27.4.5"
+ "schema-utils" "^3.1.1"
+ "serialize-javascript" "^6.0.0"
+ "source-map" "^0.6.1"
+ "terser" "^5.7.2"
+
+"terser@^5.7.2":
+ "integrity" "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ=="
+ "resolved" "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz"
+ "version" "5.12.1"
+ dependencies:
+ "acorn" "^8.5.0"
+ "commander" "^2.20.0"
+ "source-map" "~0.7.2"
+ "source-map-support" "~0.5.20"
+
"text-table@^0.2.0":
"integrity" "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ="
"resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz"
"version" "0.2.0"
+"to-fast-properties@^2.0.0":
+ "integrity" "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
+ "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz"
+ "version" "2.0.0"
+
"to-readable-stream@^1.0.0":
"integrity" "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q=="
"resolved" "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz"
@@ -2421,6 +3847,11 @@
"resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz"
"version" "1.0.1"
+"toposort-class@^1.0.1":
+ "integrity" "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg="
+ "resolved" "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz"
+ "version" "1.0.1"
+
"touch@^3.1.0":
"integrity" "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA=="
"resolved" "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz"
@@ -2504,6 +3935,11 @@
"resolved" "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz"
"version" "2.0.5"
+"underscore@^1.13.3":
+ "integrity" "sha512-QvjkYpiD+dJJraRA8+dGAU4i7aBbb2s0S3jA45TFOvg2VgqvdCDd/3N6CqA8gluk1W91GLoXg5enMUx560QzuA=="
+ "resolved" "https://registry.npmjs.org/underscore/-/underscore-1.13.3.tgz"
+ "version" "1.13.3"
+
"unique-string@^2.0.0":
"integrity" "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg=="
"resolved" "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz"
@@ -2560,16 +3996,69 @@
"resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz"
"version" "1.0.1"
+"uuid@^8.3.2":
+ "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
+ "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz"
+ "version" "8.3.2"
+
"v8-compile-cache@^2.0.3":
"integrity" "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA=="
"resolved" "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz"
"version" "2.3.0"
+"validator@^13.7.0":
+ "integrity" "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw=="
+ "resolved" "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz"
+ "version" "13.7.0"
+
"vary@^1", "vary@~1.1.2":
"integrity" "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
"resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz"
"version" "1.1.2"
+"watchpack@^2.3.1":
+ "integrity" "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA=="
+ "resolved" "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz"
+ "version" "2.3.1"
+ dependencies:
+ "glob-to-regexp" "^0.4.1"
+ "graceful-fs" "^4.1.2"
+
+"webpack-sources@^3.2.3":
+ "integrity" "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w=="
+ "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz"
+ "version" "3.2.3"
+
+"webpack@^5.1.0", "webpack@^5.72.0":
+ "integrity" "sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w=="
+ "resolved" "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz"
+ "version" "5.72.0"
+ dependencies:
+ "@types/eslint-scope" "^3.7.3"
+ "@types/estree" "^0.0.51"
+ "@webassemblyjs/ast" "1.11.1"
+ "@webassemblyjs/wasm-edit" "1.11.1"
+ "@webassemblyjs/wasm-parser" "1.11.1"
+ "acorn" "^8.4.1"
+ "acorn-import-assertions" "^1.7.6"
+ "browserslist" "^4.14.5"
+ "chrome-trace-event" "^1.0.2"
+ "enhanced-resolve" "^5.9.2"
+ "es-module-lexer" "^0.9.0"
+ "eslint-scope" "5.1.1"
+ "events" "^3.2.0"
+ "glob-to-regexp" "^0.4.1"
+ "graceful-fs" "^4.2.9"
+ "json-parse-better-errors" "^1.0.2"
+ "loader-runner" "^4.2.0"
+ "mime-types" "^2.1.27"
+ "neo-async" "^2.6.2"
+ "schema-utils" "^3.1.0"
+ "tapable" "^2.1.1"
+ "terser-webpack-plugin" "^5.1.3"
+ "watchpack" "^2.3.1"
+ "webpack-sources" "^3.2.3"
+
"which-boxed-primitive@^1.0.2":
"integrity" "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg=="
"resolved" "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz"
@@ -2595,6 +4084,13 @@
dependencies:
"string-width" "^4.0.0"
+"wkx@^0.5.0":
+ "integrity" "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg=="
+ "resolved" "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz"
+ "version" "0.5.0"
+ dependencies:
+ "@types/node" "*"
+
"word-wrap@^1.2.3":
"integrity" "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
"resolved" "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz"
@@ -2629,7 +4125,17 @@
"resolved" "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz"
"version" "4.0.0"
+"yallist@^2.1.2":
+ "integrity" "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
+ "resolved" "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz"
+ "version" "2.1.2"
+
"yallist@^4.0.0":
"integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
"resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
"version" "4.0.0"
+
+"yaml@^1.7.2":
+ "integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
+ "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz"
+ "version" "1.10.2"