Unverified Commit bcbbee8c authored by Xiaomeng Zhao's avatar Xiaomeng Zhao Committed by GitHub
Browse files

Merge pull request #2622 from myhloli/dev

Dev
parents 3cc3f754 ced5a7b4
This source diff could not be displayed because it is too large. You can view the blob instead.
body,html, #root {
width: 100%;
height: 100vh;
background: white;
}
.logo {
height: 6em;
padding: 1.5em;
will-change: filter;
transition: filter 300ms;
}
.logo:hover {
filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.react:hover {
filter: drop-shadow(0 0 2em #61dafbaa);
}
@keyframes logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
@media (prefers-reduced-motion: no-preference) {
a:nth-of-type(2) .logo {
animation: logo-spin infinite 20s linear;
}
}
.card {
padding: 2em;
}
.read-the-docs {
color: #888;
}
import { Home } from "./pages/home";
import "./App.css";
import QueryProvider from "./context/query-provider";
function App() {
return (
<QueryProvider>
<Home />
</QueryProvider>
);
}
export default App;
import axios from "./http";
import { message } from "antd";
import { ExtractTaskType } from "@/types/extract-task-type";
import { getLocale } from "@/utils/locale";
export interface PdfExtractTaskReq {
fileKey: string;
fileName: string;
taskType: ExtractTaskType;
isOcr?: boolean;
}
export interface SubmitRes {
filename: string;
url: string;
id: string;
}
export const handleErrorMsg = (res: any) => {
const isCN = getLocale() === "zh-CN";
const msg = isCN ? res?.data?.error?.msg : res?.data?.error?.msgZh;
message.error(msg);
return { data: null, error: res.data?.error };
};
export const postExtractTask = (
params: PdfExtractTaskReq
): Promise<SubmitRes | null> => {
return axios
.post<SubmitRes>(`/api/v2/extract/task/submit`, params)
.then((res) => {
if (!res?.data?.error) {
return res.data.data;
} else {
handleErrorMsg(res);
return null;
}
});
};
export const postReUploadExtractTask = (
id: string
): Promise<SubmitRes | null> => {
return axios
.put<SubmitRes>(`/api/v2/extract/task/submit`, {
id: Number(id),
})
.then((res) => {
if (!res?.data?.error) {
return res.data.data;
} else {
handleErrorMsg(res);
return null;
}
});
};
export interface TaskIdProgress {
state: "running" | "done" | "pending" | "failed" | "unknown";
markdownUrl: string[] | [];
fullMdLink: string;
content: string[] | [];
url: string;
fileName: string;
thumb: string;
type: ExtractTaskType | "unknown";
isTemplate?: boolean;
fileInfo?: {
pages: number;
width: number;
height: number;
};
}
export const getExtractTaskIdProgress = async (
jobID: string | number
): Promise<TaskIdProgress | null> => {
return axios
.get<TaskIdProgress>(`/api/v2/extract/task/progress?id=${jobID}`)
.then((res) => {
if (res?.data?.error) {
handleErrorMsg(res);
}
return res.data.data;
});
};
export interface TaskIdResItem {
queues: number;
rank: number;
id?: number;
url: string;
fileName?: string;
fullMdLink?: string;
type: ExtractTaskType | "unknown";
state: "running" | "done" | "pending" | "failed" | "unknown";
markdownUrl: string[];
file_key?: string;
}
export type TaskIdRes = TaskIdResItem[];
// Get ongoing tasks
export const getPdfExtractQueue = async (): Promise<TaskIdRes | null> => {
return axios.get<TaskIdRes>(`/api/v2/extract/taskQueue`).then((res) => {
if (!res?.data?.error) {
return res.data.data;
} else {
handleErrorMsg(res);
return null;
}
});
};
interface TaskHistoryResponse {
list: TaskItem[];
total: number;
pageNo: number;
pageSize: number;
}
interface TaskItem {
fileName: string;
id: string;
type: string;
thumb: string;
state: string; // 提取状态
}
export const getExtractorHistory = ({
pageNo,
pageSize,
}: {
pageNo?: number;
pageSize?: number;
}): Promise<TaskHistoryResponse | null> => {
return axios
.get<TaskHistoryResponse>(
`/api/v2/extract/list?pageNo=${pageNo || 1}&pageSize=${pageSize || 10}`
)
.then((res) => {
if (!res?.data?.error) {
return res.data.data;
} else {
handleErrorMsg(res);
return null;
}
});
};
export const deleteExtractJob = (jobId: string) => {
return axios.delete(`/api/v2/extract/task/${jobId}`);
};
interface UploadResponse {
file_key: string;
url: string;
}
export const localUpload = (file: File) => {
const formData = new FormData();
formData.append("file", file);
return axios.post<UploadResponse>("/api/v2/analysis/upload_pdf", formData, {
headers: {
"Content-Type": "multipart/form-data",
},
});
};
export interface UpdateMarkdownRequest {
file_key: string;
data: {
[pageNumber: string]: string;
};
}
export interface UpdateMarkdownResponse {
success: boolean;
message?: string;
}
export const updateMarkdownContent = async (
params: UpdateMarkdownRequest
): Promise<UpdateMarkdownResponse | null> => {
return axios
.put<UpdateMarkdownResponse>("/api/v2/extract/markdown", params)
.then((res) => {
if (!res?.data?.error) {
return res.data.data;
} else {
handleErrorMsg(res);
return null;
}
});
};
import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from "axios";
import Cookies from "js-cookie";
import { message } from "antd";
interface ApiResponse<T> {
code: number;
msg: string;
data: T;
}
interface ErrorResponse {
code: number;
msg: string;
msgZh: string;
}
export interface ProcessedResponse<T> {
data: T;
error: null | Pick<ErrorResponse, "msg" | "msgZh">;
}
interface CustomAxiosInstance
extends Omit<AxiosInstance, "get" | "post" | "put" | "delete"> {
get<T, R = AxiosResponse<ProcessedResponse<T>>>(
url: string,
config?: AxiosRequestConfig
): Promise<R>;
post<T, R = AxiosResponse<ProcessedResponse<T>>>(
url: string,
data?: unknown,
config?: AxiosRequestConfig
): Promise<R>;
put<T, R = AxiosResponse<ProcessedResponse<T>>>(
url: string,
data?: unknown,
config?: AxiosRequestConfig
): Promise<R>;
delete<T, R = AxiosResponse<ProcessedResponse<T>>>(
url: string,
config?: AxiosRequestConfig
): Promise<R>;
}
const instance: CustomAxiosInstance = axios.create({
baseURL: "",
timeout: 10000,
headers: {
"Content-Type": "application/json",
},
});
const processResponse = <T>(
response: AxiosResponse<ApiResponse<T>>
): ProcessedResponse<T> => {
if (response.data.code === 200) {
return {
data: response.data.data,
error: null,
};
} else {
return {
data: response.data.data || ({} as T),
error: {
msg: response.data.msg,
msgZh: (response.data as unknown as ErrorResponse).msgZh,
},
};
}
};
instance.interceptors.request.use(
(config) => {
return config;
},
(error) => {
return Promise.reject(error);
}
);
instance.interceptors.response.use(
<T>(
response: AxiosResponse<ApiResponse<T>>
): AxiosResponse<ProcessedResponse<T>> => {
return { ...response, data: processResponse(response) };
},
(error) => {
message.error(error?.response?.data?.msg || "Error");
return Promise.reject(error);
}
);
export default instance;
import http from "./http";
import { UploadFile } from "antd/es/upload/interface";
import { stringify } from "qs";
import { localUpload } from "./extract";
interface IUploadRes {
downloadUrl: string;
headers: any;
key: string;
previewUrl: string;
putUrl: string;
}
/**
* 获取上传链接的接口
* openRead 是否返回公开链接
*/
export const uploadUrl = (
fileName: string,
openRead: boolean,
fileType = ""
): Promise<IUploadRes> =>
http
.post<IUploadRes>(
`/datasets/api/v2/file?${stringify({ fileName, openRead, fileType })}`
)
.then((res) => res.data.data);
export interface IFile extends UploadFile {
url?: string;
thumbUrl?: string;
objectKey?: string;
}
// 获取 阿里云上传链接
export const uploadToOss = async (
file: IFile,
openRead: boolean,
fileType = ""
): Promise<any> => {
const { downloadUrl, previewUrl, key, putUrl, headers } = await uploadUrl(
file.name,
openRead,
fileType
);
file.url = downloadUrl;
file.thumbUrl = previewUrl;
file.objectKey = key;
// 上传文件
await http.put(putUrl, file, { headers: { ...headers } });
return {
downloadUrl,
objectKey: key,
thumbUrl: previewUrl,
url: downloadUrl,
};
};
interface IUploadOptions {
openRead: boolean;
fileType: string;
uploadType?: "local" | "oss";
}
// 可覆盖 antd customUpload 的上传逻辑
export const customUploadToOss = async (
options: any,
otherUploadOptions: IUploadOptions
) => {
const { openRead, fileType, uploadType = "local" } = otherUploadOptions;
const uploadFile = async () => {
switch (uploadType) {
case "oss":
return await uploadToOss(options.file, openRead, fileType)
.then((res) => {
options?.onSuccess({ ...res, ...options.file });
return res;
})
.catch((error) => {
options?.onError(error);
return {};
});
case "local":
return await localUpload(options.file);
default:
throw new Error(`Unsupported upload type: ${uploadType}`);
}
};
try {
const res = await uploadFile();
options?.onSuccess({ ...res, ...options.file });
} catch (error) {
options?.onError(error);
}
};
<svg width="18" height="19" viewBox="0 0 18 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.0209 9.135C10.1032 8.83545 9.9271 8.52588 9.62755 8.44355C9.328 8.36123 9.01842 8.53733 8.93608 8.83688L7.97929 12.3179C7.89696 12.6175 8.07305 12.9271 8.3726 13.0094C8.67215 13.0917 8.98173 12.9156 9.06406 12.6161L10.0209 9.135Z" fill="#0D53DE"/>
<path d="M7.05842 8.57835C7.28023 8.79585 7.28373 9.15199 7.06623 9.3738L5.86173 10.6022L6.98588 11.8832C7.19079 12.1167 7.16762 12.4721 6.93412 12.677C6.70062 12.8819 6.34522 12.8587 6.14031 12.6252L4.67194 10.952C4.47781 10.7308 4.48703 10.3973 4.69309 10.1872L6.26296 8.58616C6.48046 8.36434 6.8366 8.36084 7.05842 8.57835Z" fill="#0D53DE"/>
<path d="M10.9323 9.3467C10.7148 9.12489 10.7183 8.76875 10.9401 8.55125C11.1619 8.33375 11.5181 8.33724 11.7356 8.55906L13.3054 10.1601C13.5115 10.3702 13.5207 10.7037 13.3266 10.9249L11.8582 12.5981C11.6533 12.8316 11.2979 12.8548 11.0644 12.6499C10.8309 12.445 10.8077 12.0896 11.0127 11.8561L12.1368 10.5751L10.9323 9.3467Z" fill="#0D53DE"/>
<path d="M2.25 3.5C2.25 3.08579 2.58579 2.75 3 2.75H15C15.4142 2.75 15.75 3.08579 15.75 3.5V15.5C15.75 15.9142 15.4142 16.25 15 16.25H3C2.58579 16.25 2.25 15.9142 2.25 15.5V3.5ZM14.25 4.25H3.75V5.20796H14.25V4.25ZM14.25 6.70796H3.75V14.75H14.25V6.70796Z" fill="#0D53DE"/>
</svg>
<svg width="18" height="19" viewBox="0 0 18 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.0209 9.135C10.1032 8.83545 9.9271 8.52588 9.62755 8.44355C9.328 8.36123 9.01842 8.53733 8.93608 8.83688L7.97929 12.3179C7.89696 12.6175 8.07305 12.9271 8.3726 13.0094C8.67215 13.0917 8.98173 12.9156 9.06406 12.6161L10.0209 9.135Z" fill="#121316" fill-opacity="0.8"/>
<path d="M7.05842 8.57835C7.28023 8.79585 7.28373 9.15199 7.06623 9.3738L5.86173 10.6022L6.98588 11.8832C7.19079 12.1167 7.16762 12.4721 6.93412 12.677C6.70062 12.8819 6.34522 12.8587 6.14031 12.6252L4.67194 10.952C4.47781 10.7308 4.48703 10.3973 4.69309 10.1872L6.26296 8.58616C6.48046 8.36434 6.8366 8.36084 7.05842 8.57835Z" fill="#121316" fill-opacity="0.8"/>
<path d="M10.9323 9.3467C10.7148 9.12489 10.7183 8.76875 10.9401 8.55125C11.1619 8.33375 11.5181 8.33724 11.7356 8.55906L13.3054 10.1601C13.5115 10.3702 13.5207 10.7037 13.3266 10.9249L11.8582 12.5981C11.6533 12.8316 11.2979 12.8548 11.0644 12.6499C10.8309 12.445 10.8077 12.0896 11.0127 11.8561L12.1368 10.5751L10.9323 9.3467Z" fill="#121316" fill-opacity="0.8"/>
<path d="M2.25 3.5C2.25 3.08579 2.58579 2.75 3 2.75H15C15.4142 2.75 15.75 3.08579 15.75 3.5V15.5C15.75 15.9142 15.4142 16.25 15 16.25H3C2.58579 16.25 2.25 15.9142 2.25 15.5V3.5ZM14.25 4.25H3.75V5.20796H14.25V4.25ZM14.25 6.70796H3.75V14.75H14.25V6.70796Z" fill="#121316" fill-opacity="0.8"/>
</svg>
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.00078 1.80054C5.02566 1.80054 1.80078 5.10534 1.80078 9.1827C1.80078 12.4443 3.8643 15.2113 6.72486 16.1869C7.08486 16.256 7.20078 16.0263 7.20078 15.8319V14.4581C5.19846 14.9045 4.78086 13.5869 4.78086 13.5869C4.45326 12.733 3.98166 12.5069 3.98166 12.5069C3.3279 12.0483 4.03062 12.0584 4.03062 12.0584C4.7535 12.1102 5.13438 12.8194 5.13438 12.8194C5.7759 13.9477 6.81846 13.6222 7.22958 13.4329C7.29366 12.9562 7.48086 12.6301 7.6875 12.445C6.08766 12.2578 4.40646 11.6257 4.40646 8.79822C4.40646 7.99038 4.68798 7.33302 5.14806 6.81606C5.0739 6.62958 4.82694 5.87862 5.21862 4.86126C5.21862 4.86126 5.82342 4.66398 7.19862 5.6187C7.78537 5.4549 8.3916 5.37134 9.00078 5.3703C9.61062 5.37174 10.2176 5.45526 10.8051 5.6187C12.1789 4.66398 12.7829 4.8627 12.7829 4.8627C13.1739 5.87862 12.9269 6.6303 12.8535 6.81678C13.3157 7.33302 13.5944 7.9911 13.5944 8.79822C13.5944 11.6329 11.9103 12.2571 10.3069 12.4393C10.5639 12.6682 10.8008 13.1175 10.8008 13.8073V15.8333C10.8008 16.0285 10.916 16.2589 11.281 16.1869C14.1416 15.2098 16.2008 12.4429 16.2008 9.1827C16.2008 5.10534 12.9773 1.80054 9.00078 1.80054Z" fill="url(#paint0_linear_2118_5951)"/>
<defs>
<linearGradient id="paint0_linear_2118_5951" x1="-10" y1="11.5" x2="43.4144" y2="32.5121" gradientUnits="userSpaceOnUse">
<stop stop-color="#38A0FF"/>
<stop offset="0.489661" stop-color="#0D53DE"/>
<stop offset="1" stop-color="#5246FF"/>
</linearGradient>
</defs>
</svg>
<svg width="18" height="19" viewBox="0 0 18 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.55 8.75V5.9375L11.1983 2.75H10.8259H3.75V16.25H12.75" stroke="#0D53DE" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M10.5 2.75V6.5H14.25" stroke="#0D53DE" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M7.96382 10.336C7.76177 10.336 7.66401 10.3686 7.55972 10.4338C7.46196 10.4989 7.42285 10.6358 7.42285 10.7987V14.038C7.42285 14.1358 7.45544 14.2401 7.52062 14.3378C7.58579 14.403 7.69008 14.4747 7.85302 14.4747C8.02248 14.4747 8.12024 14.4095 8.18542 14.3378C8.25059 14.2727 8.28318 14.1684 8.28318 14.038V13.0343H8.78504C9.68448 13.0343 10.1863 12.565 10.1863 11.6656C10.1863 11.2289 10.0495 10.8639 9.82135 10.6619C9.58672 10.4272 9.25432 10.3295 8.78504 10.3295L7.96382 10.336ZM9.33905 11.6721C9.33905 11.8742 9.30646 12.0371 9.20217 12.1088C9.137 12.174 8.96754 12.2457 8.76549 12.2457H8.26363V11.1442H8.76549C8.96754 11.1442 9.09789 11.1768 9.20217 11.281C9.30646 11.3397 9.33905 11.4766 9.33905 11.6721ZM13.2171 10.9421C13.0802 10.7401 12.8847 10.6097 12.6826 10.4729C12.448 10.4077 12.1807 10.336 11.8809 10.336H10.9098C10.7729 10.336 10.6426 10.336 10.5448 10.4729C10.5122 10.538 10.4796 10.6423 10.4796 10.7727V14.0119C10.4796 14.1488 10.5122 14.2466 10.5448 14.3118C10.6426 14.4486 10.7794 14.4486 10.9098 14.4486H11.9135C12.2133 14.4486 12.448 14.3835 12.6826 14.2792C12.8847 14.1814 13.0867 14.0119 13.2171 13.8099C13.3539 13.6079 13.4517 13.4058 13.5169 13.1386C13.582 12.9039 13.6146 12.6367 13.6146 12.3695C13.6146 12.1023 13.582 11.835 13.5169 11.6004C13.4452 11.3723 13.3474 11.1377 13.2171 10.9421ZM12.5457 13.3471C12.4089 13.5492 12.2133 13.647 11.9461 13.647H11.3465V11.1377H11.7832C12.1156 11.1377 12.3828 11.2354 12.5197 11.4375C12.6891 11.6395 12.7543 11.9719 12.7543 12.376C12.7804 12.8127 12.6826 13.1125 12.5457 13.3471ZM16.0913 10.336H14.4163C14.2794 10.336 14.1491 10.3686 14.0839 10.4338C13.9861 10.4989 13.947 10.6358 13.947 10.7662V14.0445C13.947 14.1423 13.9796 14.2466 14.0448 14.3118C14.11 14.4095 14.2143 14.4486 14.3772 14.4486C14.5141 14.4486 14.6444 14.416 14.7096 14.3118C14.7422 14.2466 14.8074 14.1749 14.8074 14.0119V12.6758H15.9414C16.1435 12.6758 16.3064 12.5781 16.3455 12.4086C16.3781 12.2717 16.3781 12.174 16.3455 12.1414C16.3129 12.0762 16.2478 11.8742 15.9414 11.8742H14.7748V11.1051H16.0457C16.1826 11.1051 16.2804 11.0725 16.3455 11.0399C16.4107 11.0073 16.4824 10.903 16.4824 10.7075C16.5215 10.5054 16.3586 10.336 16.0913 10.336Z" fill="#0D53DE"/>
</svg>
<svg width="18" height="19" viewBox="0 0 18 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.55 8.75V5.9375L11.1983 2.75H10.8259H3.75V16.25H12.75" stroke="#121316" stroke-opacity="0.8" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M10.5 2.75V6.5H14.25" stroke="#121316" stroke-opacity="0.8" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M7.96382 10.336C7.76177 10.336 7.66401 10.3686 7.55972 10.4338C7.46196 10.4989 7.42285 10.6358 7.42285 10.7987V14.038C7.42285 14.1358 7.45544 14.2401 7.52062 14.3378C7.58579 14.403 7.69008 14.4747 7.85302 14.4747C8.02248 14.4747 8.12024 14.4095 8.18542 14.3378C8.25059 14.2727 8.28318 14.1684 8.28318 14.038V13.0343H8.78504C9.68448 13.0343 10.1863 12.565 10.1863 11.6656C10.1863 11.2289 10.0495 10.8639 9.82135 10.6619C9.58672 10.4272 9.25432 10.3295 8.78504 10.3295L7.96382 10.336ZM9.33905 11.6721C9.33905 11.8742 9.30646 12.0371 9.20217 12.1088C9.137 12.174 8.96754 12.2457 8.76549 12.2457H8.26363V11.1442H8.76549C8.96754 11.1442 9.09789 11.1768 9.20217 11.281C9.30646 11.3397 9.33905 11.4766 9.33905 11.6721ZM13.2171 10.9421C13.0802 10.7401 12.8847 10.6097 12.6826 10.4729C12.448 10.4077 12.1807 10.336 11.8809 10.336H10.9098C10.7729 10.336 10.6426 10.336 10.5448 10.4729C10.5122 10.538 10.4796 10.6423 10.4796 10.7727V14.0119C10.4796 14.1488 10.5122 14.2466 10.5448 14.3118C10.6426 14.4486 10.7794 14.4486 10.9098 14.4486H11.9135C12.2133 14.4486 12.448 14.3835 12.6826 14.2792C12.8847 14.1814 13.0867 14.0119 13.2171 13.8099C13.3539 13.6079 13.4517 13.4058 13.5169 13.1386C13.582 12.9039 13.6146 12.6367 13.6146 12.3695C13.6146 12.1023 13.582 11.835 13.5169 11.6004C13.4452 11.3723 13.3474 11.1377 13.2171 10.9421ZM12.5457 13.3471C12.4089 13.5492 12.2133 13.647 11.9461 13.647H11.3465V11.1377H11.7832C12.1156 11.1377 12.3828 11.2354 12.5197 11.4375C12.6891 11.6395 12.7543 11.9719 12.7543 12.376C12.7804 12.8127 12.6826 13.1125 12.5457 13.3471ZM16.0913 10.336H14.4163C14.2794 10.336 14.1491 10.3686 14.0839 10.4338C13.9861 10.4989 13.947 10.6358 13.947 10.7662V14.0445C13.947 14.1423 13.9796 14.2466 14.0448 14.3118C14.11 14.4095 14.2143 14.4486 14.3772 14.4486C14.5141 14.4486 14.6444 14.416 14.7096 14.3118C14.7422 14.2466 14.8074 14.1749 14.8074 14.0119V12.6758H15.9414C16.1435 12.6758 16.3064 12.5781 16.3455 12.4086C16.3781 12.2717 16.3781 12.174 16.3455 12.1414C16.3129 12.0762 16.2478 11.8742 15.9414 11.8742H14.7748V11.1051H16.0457C16.1826 11.1051 16.2804 11.0725 16.3455 11.0399C16.4107 11.0073 16.4824 10.903 16.4824 10.7075C16.5215 10.5054 16.3586 10.336 16.0913 10.336Z" fill="#121316" fill-opacity="0.8" />
</svg>
<svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.16667 11.1667C3.53486 11.1667 3.83333 11.4652 3.83333 11.8334V13.1667H13.1667V11.8334C13.1667 11.4652 13.4651 11.1667 13.8333 11.1667C14.2015 11.1667 14.5 11.4652 14.5 11.8334V13.8334C14.5 14.2016 14.2015 14.5001 13.8333 14.5001H3.16667C2.79848 14.5001 2.5 14.2016 2.5 13.8334V11.8334C2.5 11.4652 2.79848 11.1667 3.16667 11.1667Z" fill="white"/>
<path d="M11.0524 6.66189C11.3127 6.92224 11.7348 6.92224 11.9952 6.66189C12.2555 6.40154 12.2555 5.97943 11.9952 5.71908L8.97147 2.69538C8.84644 2.57036 8.67687 2.50012 8.50006 2.50012C8.32325 2.50012 8.15368 2.57036 8.02866 2.69539L5.00499 5.71909C4.74464 5.97944 4.74464 6.40155 5.00499 6.6619C5.26535 6.92224 5.68746 6.92224 5.9478 6.66189L7.83301 4.77667L7.83301 10.5001C7.83301 10.8682 8.13148 11.1667 8.49967 11.1667C8.86786 11.1667 9.16634 10.8682 9.16634 10.5001L9.16634 4.77588L11.0524 6.66189Z" fill="white"/>
</svg>
<svg width="56" height="57" viewBox="0 0 56 57" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="upload">
<path id="Union" fill-rule="evenodd" clip-rule="evenodd" d="M29.75 47.7505V37.2505H36.75L28 26.7505L19.25 37.2505H26.25V47.7505H16.625C12.9057 47.6408 9.81575 46.3557 7.35525 43.8952C4.89475 41.4347 3.60967 38.3448 3.5 34.6255C3.5735 31.1978 4.69467 28.2905 6.8635 25.9035C9.03233 23.5165 11.7938 22.1037 15.148 21.665C15.8048 18.4928 17.3087 15.9407 19.6595 14.0087C22.0103 12.0767 24.7905 11.074 28 11.0005C31.2083 11.074 33.9885 12.0767 36.3405 14.0087C38.6925 15.9407 40.1963 18.4928 40.852 21.665C44.2062 22.1025 46.9677 23.5153 49.1365 25.9035C51.3053 28.2917 52.4265 31.199 52.5 34.6255C52.3903 38.3448 51.1053 41.4347 48.6448 43.8952C46.1843 46.3557 43.0943 47.6408 39.375 47.7505H29.75Z" fill="url(#paint0_linear_3498_1415)"/>
</g>
<defs>
<linearGradient id="paint0_linear_3498_1415" x1="-16.2123" y1="21.4363" x2="50.2795" y2="54.8555" gradientUnits="userSpaceOnUse">
<stop stop-color="#0D53DE"/>
<stop offset="1" stop-color="#5246FF"/>
</linearGradient>
</defs>
</svg>
<svg width="329" height="183" viewBox="0 0 329 183" fill="none" xmlns="http://www.w3.org/2000/svg">
<g filter="url(#filter0_b_4102_962)">
<rect width="329" height="183" rx="12" fill="white" fill-opacity="0.1"/>
</g>
<defs>
<filter id="filter0_b_4102_962" x="-60" y="-60" width="449" height="303" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feGaussianBlur in="BackgroundImageFix" stdDeviation="30"/>
<feComposite in2="SourceAlpha" operator="in" result="effect1_backgroundBlur_4102_962"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_backgroundBlur_4102_962" result="shape"/>
</filter>
</defs>
</svg>
<svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="Frame">
<path id="Vector" d="M13.3333 14.4998H2.66667C2.29847 14.4998 2 14.2013 2 13.8331V3.16642C2 2.79823 2.29847 2.49976 2.66667 2.49976H13.3333C13.7015 2.49976 14 2.79823 14 3.16642V13.8331C14 14.2013 13.7015 14.4998 13.3333 14.4998Z" stroke="#464A53" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
<path id="Vector_2" fill-rule="evenodd" clip-rule="evenodd" d="M1.99935 3.16642C1.99935 2.79823 2.29782 2.49976 2.66602 2.49976H6.66602V7.16642H1.99935V3.16642Z" stroke="#464A53" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
<path id="Vector_3" d="M8.33268 8.83325L11.666 12.1666M11.666 12.1666V9.83325M11.666 12.1666H9.33268" stroke="#464A53" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
</g>
</svg>
<svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="Frame 1312319628">
<g id="Rectangle 1921711962" filter="url(#filter0_b_4039_7755)">
<rect x="3.19922" y="3.24231" width="8.23496" height="8.239" rx="1.1" fill="#2860F6"/>
</g>
<g id="Rectangle 1921711971" filter="url(#filter1_b_4039_7755)">
<rect x="3.19922" y="12.6031" width="8.23496" height="8.239" rx="1.1" fill="#B5CAFF"/>
</g>
<g id="Rectangle 1921711970" filter="url(#filter2_b_4039_7755)">
<rect x="12.5664" y="3.24231" width="8.23496" height="8.239" rx="1.1" fill="#B5CAFF"/>
</g>
<g id="Rectangle 1921711972" filter="url(#filter3_b_4039_7755)">
<rect x="12.5625" y="12.6031" width="8.23496" height="8.239" rx="1.1" fill="#2860F6"/>
</g>
<circle id="Ellipse 2411" cx="7.31563" cy="7.36213" r="1.925" stroke="white" stroke-width="0.88"/>
<rect id="Rectangle 1921711960" x="14.7578" y="5.43713" width="3.85" height="3.85" stroke="white" stroke-width="0.88" stroke-linejoin="round"/>
<path id="Vector 465" d="M5.39453 18.3557L7.3275 15.0885L9.24453 18.3557H5.39453Z" stroke="white" stroke-width="0.88" stroke-linejoin="round"/>
<path id="Vector 466" d="M17.8989 14.837L15.459 16.8077L17.8989 18.6089" stroke="white" stroke-width="0.88" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<filter id="filter0_b_4039_7755" x="-0.100781" y="-0.0576901" width="14.8344" height="14.839" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feGaussianBlur in="BackgroundImageFix" stdDeviation="1.65"/>
<feComposite in2="SourceAlpha" operator="in" result="effect1_backgroundBlur_4039_7755"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_backgroundBlur_4039_7755" result="shape"/>
</filter>
<filter id="filter1_b_4039_7755" x="-0.100781" y="9.30315" width="14.8344" height="14.839" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feGaussianBlur in="BackgroundImageFix" stdDeviation="1.65"/>
<feComposite in2="SourceAlpha" operator="in" result="effect1_backgroundBlur_4039_7755"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_backgroundBlur_4039_7755" result="shape"/>
</filter>
<filter id="filter2_b_4039_7755" x="9.26641" y="-0.0576901" width="14.8344" height="14.839" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feGaussianBlur in="BackgroundImageFix" stdDeviation="1.65"/>
<feComposite in2="SourceAlpha" operator="in" result="effect1_backgroundBlur_4039_7755"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_backgroundBlur_4039_7755" result="shape"/>
</filter>
<filter id="filter3_b_4039_7755" x="9.2625" y="9.30315" width="14.8344" height="14.839" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feGaussianBlur in="BackgroundImageFix" stdDeviation="1.65"/>
<feComposite in2="SourceAlpha" operator="in" result="effect1_backgroundBlur_4039_7755"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_backgroundBlur_4039_7755" result="shape"/>
</filter>
</defs>
</svg>
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="Frame" clip-path="url(#clip0_4039_8350)">
<path id="Vector" fill-rule="evenodd" clip-rule="evenodd" d="M8.00065 1.33325C4.31875 1.33325 1.33398 4.31802 1.33398 7.99992C1.33398 11.6818 4.31875 14.6666 8.00065 14.6666V1.33325Z" stroke="#464A53" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
<path id="Vector_2" d="M8 1.33325C11.6819 1.33325 14.6667 4.31802 14.6667 7.99992C14.6667 11.6818 11.6819 14.6666 8 14.6666V1.33325Z" fill="#464A53" stroke="#464A53" stroke-width="1.33333" stroke-linejoin="round"/>
<path id="Vector_3" d="M8 12H3" stroke="#464A53" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
<path id="Vector_4" d="M7.99935 9.33325H1.66602" stroke="#464A53" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
<path id="Vector_5" d="M7.99935 6.66675H1.66602" stroke="#464A53" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
<path id="Vector_6" d="M8 4H3" stroke="#464A53" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_4039_8350">
<rect width="16" height="16" fill="white"/>
</clipPath>
</defs>
</svg>
<svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="Frame 1312319626">
<path id="Rectangle 1921711969" d="M3.95117 4.24598V19.839C3.95117 20.7286 4.67232 21.4497 5.5619 21.4497H16.2474H18.9742C19.5673 21.4497 20.048 20.9689 20.048 20.3759V10.9972V7.55964C20.048 7.25299 19.9169 6.96097 19.6878 6.7572L15.3576 2.90663C15.1611 2.73182 14.9071 2.63525 14.6441 2.63525H14.4974H5.5619C4.67232 2.63525 3.95117 3.3564 3.95117 4.24598Z" fill="#B5CAFF"/>
<path id="Vector 472" d="M10.3729 8.37168L11.916 6.82861L13.4567 8.36934" stroke="white" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/>
<path id="Vector 473" d="M11.915 6.83003L11.9181 11.2821" stroke="white" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/>
<rect id="Rectangle 1921711970" x="3.95117" y="13.3008" width="16.0969" height="8.14922" rx="1.2" fill="#2860F6"/>
<g id="PDF">
<path d="M6.25977 15.125H7.79671C8.13393 15.125 8.41495 15.1553 8.63976 15.2158C8.8689 15.272 9.05047 15.3628 9.1845 15.4882C9.32284 15.6092 9.42012 15.767 9.47632 15.9616C9.53685 16.1518 9.56711 16.3831 9.56711 16.6555C9.56711 16.9494 9.53469 17.198 9.46984 17.4012C9.40499 17.6001 9.30123 17.7622 9.15856 17.8876C9.01589 18.013 8.83215 18.1038 8.60733 18.16C8.38252 18.2119 8.11231 18.2378 7.79671 18.2378H7.24548V19.6256H6.25977V15.125ZM7.66701 17.4466C7.83562 17.4466 7.97613 17.4358 8.08853 17.4142C8.20094 17.3883 8.29173 17.345 8.3609 17.2845C8.4344 17.224 8.48628 17.1462 8.51654 17.051C8.54681 16.9516 8.56194 16.8262 8.56194 16.6749C8.56194 16.5322 8.54681 16.4112 8.51654 16.3118C8.48628 16.2123 8.4344 16.1323 8.3609 16.0718C8.29173 16.0113 8.19878 15.968 8.08205 15.9421C7.96964 15.9162 7.8313 15.9032 7.66701 15.9032H7.24548V17.4466H7.66701Z" fill="white"/>
<path d="M11.9133 15.125C12.2419 15.125 12.5402 15.1553 12.8082 15.2158C13.0806 15.272 13.3119 15.3822 13.5021 15.5465C13.6967 15.7108 13.8458 15.9399 13.9496 16.2339C14.0534 16.5279 14.1052 16.9084 14.1052 17.3753C14.1052 17.8119 14.0534 18.1751 13.9496 18.4648C13.8458 18.7501 13.6967 18.9792 13.5021 19.1522C13.3119 19.3251 13.0806 19.4483 12.8082 19.5218C12.5402 19.591 12.2419 19.6256 11.9133 19.6256H10.3699V15.125H11.9133ZM11.8614 18.7825C12.069 18.7825 12.2484 18.7609 12.3997 18.7177C12.5553 18.6745 12.6829 18.5988 12.7823 18.4907C12.8861 18.3826 12.9617 18.2378 13.0093 18.0562C13.0612 17.8746 13.0871 17.6477 13.0871 17.3753C13.0871 17.0856 13.0612 16.85 13.0093 16.6684C12.9574 16.4825 12.8796 16.3377 12.7758 16.2339C12.6764 16.1259 12.5488 16.0524 12.3932 16.0134C12.2419 15.9745 12.0646 15.9551 11.8614 15.9551H11.3556V18.7825H11.8614Z" fill="white"/>
<path d="M15.9787 15.981V17.0251H17.6129V17.8746H15.9787V19.6256H14.993V15.125H17.7426V15.981H15.9787Z" fill="white"/>
</g>
</g>
</svg>
<svg width="22" height="23" viewBox="0 0 22 23" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="Group 1312318746">
<g id="Group 1312318745">
<rect id="Rectangle 1921711269" x="4.82227" y="5.80212" width="12.3568" height="12.3568" rx="2.64789" fill="#C3C5C6"/>
<rect id="Rectangle 1921711270" x="7.4707" y="3.92639" width="7.06105" height="3.53052" rx="1.76526" fill="#808286"/>
<path id="Vector 16" d="M7.4707 10.9873H11.8839" stroke="#808286" stroke-width="1.32395" stroke-linecap="round"/>
<path id="Vector 17" d="M7.4707 14.5181H10.1186" stroke="#808286" stroke-width="1.32395" stroke-linecap="round"/>
</g>
</g>
</svg>
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="Frame" clip-path="url(#clip0_4039_8343)">
<path id="Vector" fill-rule="evenodd" clip-rule="evenodd" d="M8.00065 1.33325C4.31875 1.33325 1.33398 4.31802 1.33398 7.99992C1.33398 11.6818 4.31875 14.6666 8.00065 14.6666V1.33325Z" stroke="#464A53" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
<path id="Vector_2" d="M8 1.33325C11.6819 1.33325 14.6667 4.31802 14.6667 7.99992C14.6667 11.6818 11.6819 14.6666 8 14.6666V1.33325Z" stroke="#464A53" stroke-width="1.33333" stroke-linejoin="round"/>
<path id="Vector_3" d="M8 12H3" stroke="#464A53" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
<path id="Vector_4" d="M7.99935 9.33325H1.66602" stroke="#464A53" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
<path id="Vector_5" d="M7.99935 6.66675H1.66602" stroke="#464A53" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
<path id="Vector_6" d="M8 4H3" stroke="#464A53" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_4039_8343">
<rect width="16" height="16" fill="white"/>
</clipPath>
</defs>
</svg>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment