{"version":3,"sources":["assets/images/LoginScreenLogo.png","config.js","theme.js","utils.js","components/CreateArtifact.js","actions.js","components/Hero.js","App.js","index.js"],"names":["module","exports","host","window","location","BASE_URL","colors","createMuiTheme","palette","primary","main","secondary","text","overrides","MuiTypography","root","color","useStyles","makeStyles","theme","appBar","backgroundColor","background","paper","toolbar","padding","flexWrap","toolbarLogo","width","toolbarLogoLink","marginRight","navLink","margin","spacing","heroContent","display","alignItems","justifyContent","flexDirection","height","heroHeader","fontFamily","marginTop","heroSubHeader","heroButtons","poweredBy","position","bottom","right","formContent","minHeight","stepperContainer","stepLinePosition","top","left","stepLine","borderColor","borderTopWidth","stepIcon","transform","stepLabel","fontSize","paddingTop","formContainer","paddingBottom","fieldsContainer","marginBottom","fieldItemOne","marginLeft","fieldItemTwo","paddingLeft","fieldWidth","uploadButtonWrapper","maxWidth","paddingRight","textAlign","backButton","progressBar","borderRadius","errorActions","isStringValid","stringValue","trim","length","startsWith","endsWith","formatBytes","bytes","decimals","k","dm","sizes","i","Math","floor","log","parseFloat","pow","toFixed","artifactTypes","optionsForArtifactType","value","artifactInformation","optionsForAppType","FieldsWithExplanation","props","classes","className","field","explanation","validateFileSize","selectedFile","size","steps","React","useState","activeStep","setActiveStep","artifactType","setArtifactType","artifactName","setArtifactName","deviceType","setDeviceType","destinationDirectory","setDestinationDirectory","file","setFile","script","setScript","appType","setAppType","isArtifactTypeValid","setArtifactTypeValidity","isArtifactNameValid","setArtifactNameValidity","isDeviceTypeValid","setDeviceTypeValidity","isDestinationDirectoryValid","setDestinationDirectoryValidity","isFileValid","setFileValidity","isScriptValid","setScriptValidity","uploadProgress","setUploadProgress","downloadProgress","setDownloadProgress","isResponseThrown","setResponseThrown","errorMessage","setErrorMessage","handleNext","includes","validateStepThree","submitForm","prevActiveStep","handleBack","handleReset","handleRetry","status","requestPayload","FormData","append","callback","a","preResponse","axios","url","method","data","headers","responseType","onUploadProgress","progressEvent","round","loaded","total","onDownloadProgress","response","message","createArtifact","error","URL","createObjectURL","Blob","link","document","createElement","href","setAttribute","body","appendChild","click","renderFormContent","TextField","helperText","label","onChange","event","target","onFocus","select","variant","map","item","index","MenuItem","key","Typography","FILE","SCRIPT","DEBIAN","ROOTFS","AIKAAN_OTA","AIKAAN_OTA_REBOOT","APK","Button","onClick","getElementById","hidden","id","persist","files","type","List","disablePadding","ListItem","ListItemText","name","renderStepThree","CssBaseline","Container","Stepper","alternativeLabel","connector","StepConnector","line","Step","StepLabel","StepIconProps","LinearProgress","button","Grid","container","direction","justify","disabled","AppBar","elevation","Toolbar","rel","alt","src","require","open","component","align","gutterBottom","scrollTo","scrollHeight","App","ThemeProvider","Hero","CreateArtifact","Component","ReactDOM","render"],"mappings":"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","file":"static/js/main.9fce3dce.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/LoginScreenLogo.87306e60.png\";","const HOST_DEV = `artifact.aikaan.io`;\nlet backendHost = ``;\nlet hostToConnect = ``;\n\nconst { host } = window.location;\n\nif (host === `localhost:3000`) {\n hostToConnect = HOST_DEV;\n} else {\n hostToConnect = host;\n}\n\nbackendHost = `https://${hostToConnect}`;\n\nexport const BASE_URL = backendHost;","import { createMuiTheme, makeStyles } from '@material-ui/core/styles';\n\nconst colors = {\n egyptianBlue: '#0A369D',\n uranianBlue: '#A5D8FF',\n charcoal: '#3C464D'\n};\n\nexport default createMuiTheme ({\n palette: {\n primary: {\n main: colors.egyptianBlue\n },\n secondary: {\n main: colors.uranianBlue\n },\n text: {\n main: colors.charcoal,\n },\n },\n overrides: {\n MuiTypography: {\n root: {\n color: colors.charcoal,\n },\n },\n },\n});\n\nexport const useStyles = makeStyles(theme => {\n return {\n appBar: {\n backgroundColor: `${theme.palette.background.paper} !important`,\n },\n toolbar: {\n padding: '14px 40px',\n flexWrap: 'wrap',\n },\n toolbarLogo: {\n width: '200px',\n },\n toolbarLogoLink: {\n marginRight: 'auto',\n },\n navLink: {\n margin: theme.spacing(1, 1.5),\n },\n heroContent: {\n background: `linear-gradient(180deg, #FFFFFF, ${theme.palette.secondary.main})`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexDirection: 'column',\n height: 'calc(100vh - 80px)',\n },\n heroHeader: {\n fontFamily: `'Roboto Slab', 'serif'`,\n color: theme.palette.primary.main,\n marginTop: '-1em',\n },\n heroSubHeader: {\n width: '474px',\n },\n heroButtons: {\n marginTop: theme.spacing(3),\n },\n poweredBy: {\n position: 'absolute',\n bottom: '0',\n right: '0',\n margin: theme.spacing(3),\n },\n formContent: {\n background: theme.palette.background.paper,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n flexDirection: 'column',\n minHeight: 'calc(100vh - 80px)',\n },\n stepperContainer: {\n width: '800px',\n padding: 0,\n margin: '120px 0px 60px',\n },\n stepLinePosition: {\n top: 10,\n left: 'calc(-50% + 40px)',\n right: 'calc(50% + 40px)',\n },\n stepLine: {\n color: colors.charcoal,\n borderColor: colors.charcoal,\n borderTopWidth: 2,\n },\n stepIcon: {\n transform: 'scale(2)',\n },\n stepLabel: {\n fontSize: '20px',\n color: theme.palette.text.main,\n paddingTop: '30px',\n },\n formContainer: {\n paddingBottom: '60px',\n },\n fieldsContainer: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'flex-start',\n marginBottom: '30px',\n '&:last-child': {\n marginBottom: '0px',\n },\n },\n fieldItemOne: {\n marginLeft: 'auto',\n },\n fieldItemTwo: {\n paddingLeft: '50px',\n width: '450px',\n marginBottom: 'auto',\n },\n fieldWidth: {\n width: '300px',\n },\n uploadButtonWrapper: {\n maxWidth: '450px',\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'row-reverse',\n '& .MuiTypography-root': {\n paddingRight: '10px',\n },\n '& .MuiListItem-root': {\n textAlign: 'right',\n paddingTop: 0,\n paddingBottom: 0,\n '& .MuiListItemText-multiline': {\n margin: 0,\n },\n },\n },\n backButton: {\n marginRight: theme.spacing(1),\n },\n progressBar: {\n width: '400px',\n height: '10px',\n borderRadius: '20px',\n marginBottom: '10px',\n },\n errorActions: {\n '& > *': {\n margin: theme.spacing(1),\n },\n },\n };\n});","export const isStringValid = stringValue => {\n if (stringValue.trim().length < 1 || stringValue.startsWith(' ') || stringValue.endsWith(' ')) {\n return false;\n } else {\n return true;\n }\n}\n\nexport const formatBytes = (bytes, decimals = 2) => {\n if (bytes === 0) return '0 Bytes';\n\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n}","import Button from '@material-ui/core/Button';\nimport Container from '@material-ui/core/Container';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport Grid from '@material-ui/core/Grid';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Step from '@material-ui/core/Step';\nimport StepConnector from '@material-ui/core/StepConnector';\nimport StepLabel from '@material-ui/core/StepLabel';\nimport Stepper from '@material-ui/core/Stepper';\nimport TextField from '@material-ui/core/TextField';\nimport Typography from '@material-ui/core/Typography';\nimport React, { Fragment } from 'react';\nimport { createArtifact } from '../actions';\nimport { useStyles } from '../theme';\nimport { formatBytes, isStringValid } from '../utils';\n\nconst artifactTypes = {\n FILE: 'file',\n SCRIPT: 'script',\n DEBIAN: 'debian',\n ROOTFS: 'root-fs',\n AIKAAN_OTA: 'Aikaan-OTA',\n AIKAAN_OTA_REBOOT: 'Aikaan-OTA-Reboot',\n APK: 'Apk',\n}\n\nconst optionsForArtifactType = [\n { text: 'File', value: artifactTypes.FILE },\n { text: 'Script', value: artifactTypes.SCRIPT },\n { text: 'Debian', value: artifactTypes.DEBIAN },\n { text: 'Rootfs', value: artifactTypes.ROOTFS },\n { text: 'Application', value: artifactTypes.AIKAAN_OTA },\n { text: 'Application with reboot', value: artifactTypes.AIKAAN_OTA_REBOOT },\n { text: 'APK', value: artifactTypes.APK },\n];\n\nconst artifactInformation = {\n [artifactTypes.FILE]: 'Push a config file or a package file or simple text file to the target device(s)',\n [artifactTypes.SCRIPT]: 'Push script to the target device(s) and execute the same',\n [artifactTypes.DEBIAN]: 'Installs a debian package on the target device(s)',\n [artifactTypes.ROOTFS]: 'Complete root file system to be installed on target device(s)',\n [artifactTypes.AIKAAN_OTA]: 'Push a package file and a script to the target and execute the script',\n [artifactTypes.AIKAAN_OTA_REBOOT]: 'Push a package file and a script to the target and execute the script and reboot the target device(s)',\n [artifactTypes.APK]: 'Installs an android APK on target device(s)',\n};\n\n//const FILE_SIZE_LIMIT = 104857600;\nconst FILE_SIZE_LIMIT = 262144000; //250 MB\n\nconst optionsForAppType = [\n { text: 'User application', value: 0 },\n { text: 'System application', value: 1 }\n];\n\nconst FieldsWithExplanation = props => {\n const classes = useStyles();\n\n return (\n
\n
\n {props.field}\n
\n
\n {props.explanation}\n
\n
\n );\n}\n\nconst validateFileSize = selectedFile => {\n if (!selectedFile) {\n return false;\n }\n if (selectedFile && selectedFile.size > FILE_SIZE_LIMIT) {\n return false;\n }\n return true;\n};\n\nexport default () => {\n const classes = useStyles();\n const steps = ['Select artifact type', 'Provide name and device type', 'Upload file'];\n\n const [activeStep, setActiveStep] = React.useState(0);\n const [artifactType, setArtifactType] = React.useState('');\n const [artifactName, setArtifactName] = React.useState('');\n const [deviceType, setDeviceType] = React.useState('');\n const [destinationDirectory, setDestinationDirectory] = React.useState('');\n const [file, setFile] = React.useState(null);\n const [script, setScript] = React.useState(null);\n const [appType, setAppType] = React.useState(0);\n\n const [isArtifactTypeValid, setArtifactTypeValidity] = React.useState(true);\n const [isArtifactNameValid, setArtifactNameValidity] = React.useState(true);\n const [isDeviceTypeValid, setDeviceTypeValidity] = React.useState(true);\n const [isDestinationDirectoryValid, setDestinationDirectoryValidity] = React.useState(true);\n const [isFileValid, setFileValidity] = React.useState(true);\n const [isScriptValid, setScriptValidity] = React.useState(true);\n\n const [uploadProgress, setUploadProgress] = React.useState(0);\n const [downloadProgress, setDownloadProgress] = React.useState(0);\n const [isResponseThrown, setResponseThrown] = React.useState(false);\n const [errorMessage, setErrorMessage] = React.useState('');\n\n const handleNext = () => {\n if (activeStep === 0) {\n if (!(artifactType.length > 0)) {\n setArtifactTypeValidity(false);\n return;\n }\n }\n if (activeStep === 1) {\n if (!isStringValid(artifactName) || artifactName.includes(' ')) {\n setArtifactNameValidity(false);\n return;\n }\n if (!isStringValid(deviceType)) {\n setDeviceTypeValidity(false);\n return;\n }\n }\n if (activeStep === 2) {\n if (!validateStepThree()) {\n return;\n } else {\n submitForm();\n }\n }\n setActiveStep(prevActiveStep => prevActiveStep + 1);\n };\n\n const handleBack = () => {\n setActiveStep(prevActiveStep => prevActiveStep - 1);\n };\n\n const handleReset = () => {\n setActiveStep(0);\n setArtifactType('');\n setArtifactName('');\n setDeviceType('');\n setDestinationDirectory('');\n setFile(null);\n setScript(null);\n setResponseThrown(false);\n setErrorMessage('');\n };\n\n const handleRetry = () => {\n setResponseThrown(false);\n setErrorMessage('');\n submitForm();\n }\n\n const validateStepThree = () => {\n let status = true;\n switch (artifactType) {\n case artifactTypes.FILE:\n if (!isStringValid(destinationDirectory)) {\n setDestinationDirectoryValidity(false);\n status = false;\n }\n if (!validateFileSize(file)) {\n setFileValidity(false);\n status = false;\n }\n break;\n\n case artifactTypes.SCRIPT:\n if (!validateFileSize(script)) {\n setScriptValidity(false);\n status = false;\n }\n break;\n\n case artifactTypes.DEBIAN:\n if (!validateFileSize(file)) {\n setFileValidity(false);\n status = false;\n }\n break;\n\n case artifactTypes.ROOTFS:\n if (!validateFileSize(file)) {\n setFileValidity(false);\n status = false;\n }\n break;\n\n case artifactTypes.AIKAAN_OTA:\n if (!isStringValid(destinationDirectory)) {\n setDestinationDirectoryValidity(false);\n status = false;\n }\n if (!validateFileSize(file)) {\n setFileValidity(false);\n status = false;\n }\n if (!validateFileSize(script)) {\n setScriptValidity(false);\n status = false;\n }\n break;\n\n case artifactTypes.AIKAAN_OTA_REBOOT:\n if (!isStringValid(destinationDirectory)) {\n setDestinationDirectoryValidity(false);\n status = false;\n }\n if (!validateFileSize(file)) {\n setFileValidity(false);\n status = false;\n }\n if (!validateFileSize(script)) {\n setScriptValidity(false);\n status = false;\n }\n break;\n\n case artifactTypes.APK:\n if (!validateFileSize(file)) {\n setFileValidity(false);\n status = false;\n }\n break;\n\n default:\n break;\n }\n return status;\n }\n\n const submitForm = () => {\n const requestPayload = new FormData();\n requestPayload.append('ArtifactType', artifactType);\n requestPayload.append('ArtifactName', artifactName);\n requestPayload.append('DeviceType', deviceType);\n\n switch (artifactType) {\n case artifactTypes.FILE:\n requestPayload.append('hasFile', true);\n requestPayload.append('hasShellScript', false);\n requestPayload.append('file', file);\n requestPayload.append('DestDir', destinationDirectory);\n break;\n\n case artifactTypes.SCRIPT:\n requestPayload.append('hasFile', false);\n requestPayload.append('hasShellScript', true);\n requestPayload.append('shellScript', script);\n break;\n\n case artifactTypes.DEBIAN:\n requestPayload.append('hasFile', true);\n requestPayload.append('hasShellScript', false);\n requestPayload.append('file', file);\n break;\n\n case artifactTypes.ROOTFS:\n requestPayload.append('hasFile', true);\n requestPayload.append('hasShellScript', false);\n requestPayload.append('file', file);\n break;\n\n case artifactTypes.AIKAAN_OTA:\n requestPayload.append('hasFile', true);\n requestPayload.append('file', file);\n requestPayload.append('hasShellScript', true);\n requestPayload.append('shellScript', script);\n requestPayload.append('DestDir', destinationDirectory);\n break;\n\n case artifactTypes.AIKAAN_OTA_REBOOT:\n requestPayload.append('hasFile', true);\n requestPayload.append('file', file);\n requestPayload.append('hasShellScript', true);\n requestPayload.append('shellScript', script);\n requestPayload.append('DestDir', destinationDirectory);\n break;\n\n case artifactTypes.APK:\n requestPayload.append('hasFile', true);\n requestPayload.append('file', file);\n requestPayload.append('hasShellScript', false);\n requestPayload.append('AppType', appType);\n break;\n\n default:\n break;\n }\n\n createArtifact(requestPayload, (preResponse, response, error) => {\n if (preResponse) {\n const { uploadProgress, downloadProgress } = preResponse;\n setUploadProgress(uploadProgress);\n setDownloadProgress(downloadProgress);\n }\n if (response) {\n setUploadProgress(0);\n setDownloadProgress(0);\n setResponseThrown(true);\n\n const url = window.URL.createObjectURL(new Blob([response.data]));\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute('download', `${artifactName}.mender`);\n document.body.appendChild(link);\n link.click();\n }\n if (error) {\n setUploadProgress(0);\n setDownloadProgress(0);\n setErrorMessage(error);\n }\n })();\n }\n\n const renderStepThree = () => {\n const { FILE, SCRIPT, DEBIAN, ROOTFS, AIKAAN_OTA, AIKAAN_OTA_REBOOT, APK } = artifactTypes;\n return (\n \n {(\n (artifactType === FILE)\n || (artifactType === AIKAAN_OTA)\n || (artifactType === AIKAAN_OTA_REBOOT)) &&\n setDestinationDirectory(event.target.value)}\n onFocus={() => setDestinationDirectoryValidity(true)}\n value={destinationDirectory}\n variant='outlined'\n />\n }\n explanation={\n \n Path to where the installation should happen on the device\n \n }\n />\n }\n {(\n (artifactType === FILE)\n || (artifactType === DEBIAN)\n || (artifactType === ROOTFS)\n || (artifactType === AIKAAN_OTA)\n || (artifactType === AIKAAN_OTA_REBOOT)\n || (artifactType === APK)) &&\n \n {\n document.getElementById('uploadFile').click();\n setFileValidity(true);\n }}\n variant='contained'\n >\n Upload file\n {\n event.persist();\n setFile(event.target.files[0])\n }}\n type='file'\n />\n \n {\n !isFileValid &&\n \n {`Please upload a file of size less than 250MB`}\n \n }\n {\n file &&\n \n \n \n \n \n }\n \n }\n explanation={\n \n {`Upload the file which needs to be included in the artifact [Size <= 250MB]`}\n \n }\n />\n }\n {(\n (artifactType === SCRIPT)\n || (artifactType === AIKAAN_OTA)\n || (artifactType === AIKAAN_OTA_REBOOT)) &&\n \n {\n document.getElementById('uploadScript').click();\n setScriptValidity(true);\n }}\n variant='contained'\n >\n Upload script\n {\n event.persist();\n setScript(event.target.files[0])\n }}\n type='file'\n />\n \n {\n !isScriptValid &&\n \n {`Please upload a script file of size less than 250MB`}\n \n }\n {\n script &&\n \n \n \n \n \n }\n \n }\n explanation={\n \n {`Upload the script that you wish to deploy and execute on your device [Size <= 250MB]`}\n \n }\n />\n }\n {\n artifactType === APK &&\n setAppType(event.target.value)}\n select\n value={appType}\n variant='outlined'\n >\n {optionsForAppType.map((item, index) => (\n {item.text}\n ))}\n \n }\n explanation={Select your application type}\n />\n }\n \n );\n }\n\n const renderFormContent = () => {\n switch (activeStep) {\n case 0:\n return (\n setArtifactType(event.target.value)}\n onFocus={() => setArtifactTypeValidity(true)}\n select\n value={artifactType}\n variant='outlined'\n >\n {optionsForArtifactType.map((item, index) => (\n {item.text}\n ))}\n \n }\n explanation={\n \n \n Select the type of artifact you want to create\n \n \n {artifactType && `${artifactInformation[artifactType]}`}\n \n \n }\n />\n );\n case 1:\n return (\n \n setArtifactName(event.target.value)}\n onFocus={() => setArtifactNameValidity(true)}\n value={artifactName}\n variant='outlined'\n />\n }\n explanation={Enter a name for the artifact}\n />\n setDeviceType(event.target.value)}\n onFocus={() => setDeviceTypeValidity(true)}\n value={deviceType}\n variant='outlined'\n />\n }\n explanation={Enter compatible device type of the artifact}\n />\n \n );\n case 2:\n return renderStepThree();\n default:\n return 'Unknown step';\n }\n }\n\n const renderStepContent = () => {\n if (uploadProgress) {\n return (\n
\n \n {uploadProgress}% uploaded\n
\n );\n } else if (downloadProgress) {\n return (\n
\n \n {downloadProgress}% downloaded\n
\n );\n } else if (isResponseThrown) {\n return (\n \n \n Do you want to create another artifact?\n \n \n \n );\n } else if (errorMessage) {\n return (\n \n \n Oops! An error has occured.\n \n \n {errorMessage}\n \n
\n \n \n
\n
\n );\n } else {\n return (\n \n \n {renderFormContent()}\n \n \n \n Back\n \n \n {activeStep === steps.length - 1 ? 'Submit' : 'Next'}\n \n \n \n );\n }\n }\n\n return (\n \n \n \n \n }\n >\n {steps.map((label, index) => (\n \n \n {label}\n \n \n ))}\n \n {renderStepContent()}\n \n \n );\n}\n","import axios from 'axios';\nimport { BASE_URL } from './config';\n\nexport const createArtifact = (requestPayload, callback) => async () => {\n let preResponse = {\n uploadProgress: 0,\n downloadProgress: 0\n };\n try {\n const response = await axios({\n url: `${BASE_URL}/api/create`,\n method: 'POST',\n data: requestPayload,\n headers: {\n 'Content-Type': 'multipart/form-data',\n 'Access-Control-Allow-Origin': '*'\n },\n responseType: 'blob',\n onUploadProgress: progressEvent => {\n preResponse = {\n uploadProgress: Math.round((progressEvent.loaded * 100) / progressEvent.total),\n downloadProgress: 0\n }\n callback(preResponse, null, null);\n },\n onDownloadProgress: progressEvent => {\n preResponse = {\n uploadProgress: 0,\n downloadProgress: Math.round((progressEvent.loaded * 100) / progressEvent.total)\n }\n callback(preResponse, null, null);\n }\n });\n callback(null, response, null);\n } catch (error) {\n callback(null, null, error.message);\n }\n}","import AppBar from '@material-ui/core/AppBar';\nimport Button from '@material-ui/core/Button';\nimport Container from '@material-ui/core/Container';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport Grid from '@material-ui/core/Grid';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Typography from '@material-ui/core/Typography';\nimport React, { Fragment } from 'react';\nimport { useStyles } from '../theme';\n\nexport default () => {\n const classes = useStyles();\n const forkLink = `https://gitlab.com/aikaanlabs-public/mender-artifact-generator`;\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n Artifact creation tool\n \n \n This tool is used to create artifacts for software updates on remote IoT edge devices.\n \n
\n \n \n window.scrollTo(0, document.body.scrollHeight)}\n >\n Get started\n \n \n \n
\n \n Powered by Mender\n \n
\n
\n );\n}\n","import { ThemeProvider } from '@material-ui/core';\nimport React, { Component } from 'react';\nimport CreateArtifact from './components/CreateArtifact';\nimport Hero from './components/Hero';\nimport theme from './theme';\n\nexport default class App extends Component {\n render() {\n return (\n \n \n \n \n );\n }\n}","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\n\nReactDOM.render(\n ,\n document.getElementById('root')\n);"],"sourceRoot":""}