@ottimis/ng2-file-upload
Version:
Angular file uploader
171 lines • 17.8 kB
JavaScript
export class FileType {
static getMimeClass(file) {
let mimeClass = "application";
if (file?.type && this.mime_psd.indexOf(file.type) !== -1) {
mimeClass = "image";
}
else if (file?.type?.match("image.*")) {
mimeClass = "image";
}
else if (file?.type?.match("video.*")) {
mimeClass = "video";
}
else if (file?.type?.match("audio.*")) {
mimeClass = "audio";
}
else if (file?.type === "application/pdf") {
mimeClass = "pdf";
}
else if (file?.type && this.mime_compress.indexOf(file.type) !== -1) {
mimeClass = "compress";
}
else if (file?.type && this.mime_doc.indexOf(file.type) !== -1) {
mimeClass = "doc";
}
else if (file?.type && this.mime_xsl.indexOf(file.type) !== -1) {
mimeClass = "xls";
}
else if (file?.type && this.mime_ppt.indexOf(file.type) !== -1) {
mimeClass = "ppt";
}
if (mimeClass === "application" && file?.name) {
mimeClass = this.fileTypeDetection(file.name);
}
return mimeClass;
}
static fileTypeDetection(inputFilename) {
const types = {
jpg: "image",
jpeg: "image",
tif: "image",
psd: "image",
bmp: "image",
png: "image",
nef: "image",
tiff: "image",
cr2: "image",
dwg: "image",
cdr: "image",
ai: "image",
indd: "image",
pin: "image",
cdp: "image",
skp: "image",
stp: "image",
"3dm": "image",
mp3: "audio",
wav: "audio",
wma: "audio",
mod: "audio",
m4a: "audio",
compress: "compress",
zip: "compress",
rar: "compress",
"7z": "compress",
lz: "compress",
z01: "compress",
bz2: "compress",
gz: "compress",
pdf: "pdf",
xls: "xls",
xlsx: "xls",
ods: "xls",
mp4: "video",
avi: "video",
wmv: "video",
mpg: "video",
mts: "video",
flv: "video",
"3gp": "video",
vob: "video",
m4v: "video",
mpeg: "video",
m2ts: "video",
mov: "video",
doc: "doc",
docx: "doc",
eps: "doc",
txt: "doc",
odt: "doc",
rtf: "doc",
ppt: "ppt",
pptx: "ppt",
pps: "ppt",
ppsx: "ppt",
odp: "ppt",
};
const chunks = inputFilename.split(".");
if (chunks.length < 2) {
return "application";
}
const extension = chunks[chunks.length - 1].toLowerCase();
if (types[extension] === undefined) {
return "application";
}
else {
return types[extension];
}
}
}
/* MS office */
// tslint:disable-next-line:variable-name
FileType.mime_doc = [
"application/msword",
"application/msword",
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"application/vnd.openxmlformats-officedocument.wordprocessingml.template",
"application/vnd.ms-word.document.macroEnabled.12",
"application/vnd.ms-word.template.macroEnabled.12",
];
// tslint:disable-next-line:variable-name
FileType.mime_xsl = [
"application/vnd.ms-excel",
"application/vnd.ms-excel",
"application/vnd.ms-excel",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"application/vnd.openxmlformats-officedocument.spreadsheetml.template",
"application/vnd.ms-excel.sheet.macroEnabled.12",
"application/vnd.ms-excel.template.macroEnabled.12",
"application/vnd.ms-excel.addin.macroEnabled.12",
"application/vnd.ms-excel.sheet.binary.macroEnabled.12",
];
// tslint:disable-next-line:variable-name
FileType.mime_ppt = [
"application/vnd.ms-powerpoint",
"application/vnd.ms-powerpoint",
"application/vnd.ms-powerpoint",
"application/vnd.ms-powerpoint",
"application/vnd.openxmlformats-officedocument.presentationml.presentation",
"application/vnd.openxmlformats-officedocument.presentationml.template",
"application/vnd.openxmlformats-officedocument.presentationml.slideshow",
"application/vnd.ms-powerpoint.addin.macroEnabled.12",
"application/vnd.ms-powerpoint.presentation.macroEnabled.12",
"application/vnd.ms-powerpoint.presentation.macroEnabled.12",
"application/vnd.ms-powerpoint.slideshow.macroEnabled.12",
];
/* PSD */
// tslint:disable-next-line:variable-name
FileType.mime_psd = [
"image/photoshop",
"image/x-photoshop",
"image/psd",
"application/photoshop",
"application/psd",
"zz-application/zz-winassoc-psd",
];
/* Compressed files */
// tslint:disable-next-line:variable-name
FileType.mime_compress = [
"application/x-gtar",
"application/x-gcompress",
"application/compress",
"application/x-tar",
"application/x-rar-compressed",
"application/octet-stream",
"application/x-zip-compressed",
"application/zip-compressed",
"application/x-7z-compressed",
"application/gzip",
"application/x-bzip2",
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZzItZmlsZS11cGxvYWQvZmlsZS11cGxvYWQvZmlsZS10eXBlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxRQUFRO0lBaUVuQixNQUFNLENBQUMsWUFBWSxDQUFDLElBQW9CO1FBQ3RDLElBQUksU0FBUyxHQUFHLGFBQWEsQ0FBQztRQUM5QixJQUFJLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3pELFNBQVMsR0FBRyxPQUFPLENBQUM7U0FDckI7YUFBTSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3ZDLFNBQVMsR0FBRyxPQUFPLENBQUM7U0FDckI7YUFBTSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3ZDLFNBQVMsR0FBRyxPQUFPLENBQUM7U0FDckI7YUFBTSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3ZDLFNBQVMsR0FBRyxPQUFPLENBQUM7U0FDckI7YUFBTSxJQUFJLElBQUksRUFBRSxJQUFJLEtBQUssaUJBQWlCLEVBQUU7WUFDM0MsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUNuQjthQUFNLElBQUksSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDckUsU0FBUyxHQUFHLFVBQVUsQ0FBQztTQUN4QjthQUFNLElBQUksSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8s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QW9CO0lBQ3BCLHlCQUF5QjtJQUN6QixzQkFBc0I7SUFDdEIsbUJBQW1CO0lBQ25CLDhCQUE4QjtJQUM5QiwwQkFBMEI7SUFDMUIsOEJBQThCO0lBQzlCLDRCQUE0QjtJQUM1Qiw2QkFBNkI7SUFDN0Isa0JBQWtCO0lBQ2xCLHFCQUFxQjtDQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsZUxpa2VPYmplY3QgfSBmcm9tIFwiLi4vaW5kZXhcIjtcblxuZXhwb3J0IGNsYXNzIEZpbGVUeXBlIHtcbiAgLyogIE1TIG9mZmljZSAgKi9cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgc3RhdGljIG1pbWVfZG9jOiBzdHJpbmdbXSA9IFtcbiAgICBcImFwcGxpY2F0aW9uL21zd29yZFwiLFxuICAgIFwiYXBwbGljYXRpb24vbXN3b3JkXCIsXG4gICAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudFwiLFxuICAgIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwudGVtcGxhdGVcIixcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13b3JkLmRvY3VtZW50Lm1hY3JvRW5hYmxlZC4xMlwiLFxuICAgIFwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmQudGVtcGxhdGUubWFjcm9FbmFibGVkLjEyXCIsXG4gIF07XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHN0YXRpYyBtaW1lX3hzbDogc3RyaW5nW10gPSBbXG4gICAgXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIixcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbFwiLFxuICAgIFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsXCIsXG4gICAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldFwiLFxuICAgIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGVtcGxhdGVcIixcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5tYWNyb0VuYWJsZWQuMTJcIixcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC50ZW1wbGF0ZS5tYWNyb0VuYWJsZWQuMTJcIixcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hZGRpbi5tYWNyb0VuYWJsZWQuMTJcIixcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5iaW5hcnkubWFjcm9FbmFibGVkLjEyXCIsXG4gIF07XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHN0YXRpYyBtaW1lX3BwdDogc3RyaW5nW10gPSBbXG4gICAgXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludFwiLFxuICAgIFwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnRcIixcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50XCIsXG4gICAgXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludFwiLFxuICAgIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvblwiLFxuICAgIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnRlbXBsYXRlXCIsXG4gICAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGVzaG93XCIsXG4gICAgXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5hZGRpbi5tYWNyb0VuYWJsZWQuMTJcIixcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnByZXNlbnRhdGlvbi5tYWNyb0VuYWJsZWQuMTJcIixcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnByZXNlbnRhdGlvbi5tYWNyb0VuYWJsZWQuMTJcIixcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnNsaWRlc2hvdy5tYWNyb0VuYWJsZWQuMTJcIixcbiAgXTtcblxuICAvKiBQU0QgKi9cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgc3RhdGljIG1pbWVfcHNkOiBzdHJpbmdbXSA9IFtcbiAgICBcImltYWdlL3Bob3Rvc2hvcFwiLFxuICAgIFwiaW1hZ2UveC1waG90b3Nob3BcIixcbiAgICBcImltYWdlL3BzZFwiLFxuICAgIFwiYXBwbGljYXRpb24vcGhvdG9zaG9wXCIsXG4gICAgXCJhcHBsaWNhdGlvbi9wc2RcIixcbiAgICBcInp6LWFwcGxpY2F0aW9uL3p6LXdpbmFzc29jLXBzZFwiLFxuICBdO1xuXG4gIC8qIENvbXByZXNzZWQgZmlsZXMgKi9cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgc3RhdGljIG1pbWVfY29tcHJlc3M6IHN0cmluZ1tdID0gW1xuICAgIFwiYXBwbGljYXRpb24veC1ndGFyXCIsXG4gICAgXCJhcHBsaWNhdGlvbi94LWdjb21wcmVzc1wiLFxuICAgIFwiYXBwbGljYXRpb24vY29tcHJlc3NcIixcbiAgICBcImFwcGxpY2F0aW9uL3gtdGFyXCIsXG4gICAgXCJhcHBsaWNhdGlvbi94LXJhci1jb21wcmVzc2VkXCIsXG4gICAgXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIixcbiAgICBcImFwcGxpY2F0aW9uL3gtemlwLWNvbXByZXNzZWRcIixcbiAgICBcImFwcGxpY2F0aW9uL3ppcC1jb21wcmVzc2VkXCIsXG4gICAgXCJhcHBsaWNhdGlvbi94LTd6LWNvbXByZXNzZWRcIixcbiAgICBcImFwcGxpY2F0aW9uL2d6aXBcIixcbiAgICBcImFwcGxpY2F0aW9uL3gtYnppcDJcIixcbiAgXTtcblxuICBzdGF0aWMgZ2V0TWltZUNsYXNzKGZpbGU6IEZpbGVMaWtlT2JqZWN0KTogc3RyaW5nIHtcbiAgICBsZXQgbWltZUNsYXNzID0gXCJhcHBsaWNhdGlvblwiO1xuICAgIGlmIChmaWxlPy50eXBlICYmIHRoaXMubWltZV9wc2QuaW5kZXhPZihmaWxlLnR5cGUpICE9PSAtMSkge1xuICAgICAgbWltZUNsYXNzID0gXCJpbWFnZVwiO1xuICAgIH0gZWxzZSBpZiAoZmlsZT8udHlwZT8ubWF0Y2goXCJpbWFnZS4qXCIpKSB7XG4gICAgICBtaW1lQ2xhc3MgPSBcImltYWdlXCI7XG4gICAgfSBlbHNlIGlmIChmaWxlPy50eXBlPy5tYXRjaChcInZpZGVvLipcIikpIHtcbiAgICAgIG1pbWVDbGFzcyA9IFwidmlkZW9cIjtcbiAgICB9IGVsc2UgaWYgKGZpbGU/LnR5cGU/Lm1hdGNoKFwiYXVkaW8uKlwiKSkge1xuICAgICAgbWltZUNsYXNzID0gXCJhdWRpb1wiO1xuICAgIH0gZWxzZSBpZiAoZmlsZT8udHlwZSA9PT0gXCJhcHBsaWNhdGlvbi9wZGZcIikge1xuICAgICAgbWltZUNsYXNzID0gXCJwZGZcIjtcbiAgICB9IGVsc2UgaWYgKGZpbGU/LnR5cGUgJiYgdGhpcy5taW1lX2NvbXByZXNzLmluZGV4T2YoZmlsZS50eXBlKSAhPT0gLTEpIHtcbiAgICAgIG1pbWVDbGFzcyA9IFwiY29tcHJlc3NcIjtcbiAgICB9IGVsc2UgaWYgKGZpbGU/LnR5cGUgJiYgdGhpcy5taW1lX2RvYy5pbmRleE9mKGZpbGUudHlwZSkgIT09IC0xKSB7XG4gICAgICBtaW1lQ2xhc3MgPSBcImRvY1wiO1xuICAgIH0gZWxzZSBpZiAoZmlsZT8udHlwZSAmJiB0aGlzLm1pbWVfeHNsLmluZGV4T2YoZmlsZS50eXBlKSAhPT0gLTEpIHtcbiAgICAgIG1pbWVDbGFzcyA9IFwieGxzXCI7XG4gICAgfSBlbHNlIGlmIChmaWxlPy50eXBlICYmIHRoaXMubWltZV9wcHQuaW5kZXhPZihmaWxlLnR5cGUpICE9PSAtMSkge1xuICAgICAgbWltZUNsYXNzID0gXCJwcHRcIjtcbiAgICB9XG4gICAgaWYgKG1pbWVDbGFzcyA9PT0gXCJhcHBsaWNhdGlvblwiICYmIGZpbGU/Lm5hbWUpIHtcbiAgICAgIG1pbWVDbGFzcyA9IHRoaXMuZmlsZVR5cGVEZXRlY3Rpb24oZmlsZS5uYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWltZUNsYXNzO1xuICB9XG5cbiAgc3RhdGljIGZpbGVUeXBlRGV0ZWN0aW9uKGlucHV0RmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdHlwZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICBqcGc6IFwiaW1hZ2VcIixcbiAgICAgIGpwZWc6IFwiaW1hZ2VcIixcbiAgICAgIHRpZjogXCJpbWFnZVwiLFxuICAgICAgcHNkOiBcImltYWdlXCIsXG4gICAgICBibXA6IFwiaW1hZ2VcIixcbiAgICAgIHBuZzogXCJpbWFnZVwiLFxuICAgICAgbmVmOiBcImltYWdlXCIsXG4gICAgICB0aWZmOiBcImltYWdlXCIsXG4gICAgICBjcjI6IFwiaW1hZ2VcIixcbiAgICAgIGR3ZzogXCJpbWFnZVwiLFxuICAgICAgY2RyOiBcImltYWdlXCIsXG4gICAgICBhaTogXCJpbWFnZVwiLFxuICAgICAgaW5kZDogXCJpbWFnZVwiLFxuICAgICAgcGluOiBcImltYWdlXCIsXG4gICAgICBjZHA6IFwiaW1hZ2VcIixcbiAgICAgIHNrcDogXCJpbWFnZVwiLFxuICAgICAgc3RwOiBcImltYWdlXCIsXG4gICAgICBcIjNkbVwiOiBcImltYWdlXCIsXG4gICAgICBtcDM6IFwiYXVkaW9cIixcbiAgICAgIHdhdjogXCJhdWRpb1wiLFxuICAgICAgd21hOiBcImF1ZGlvXCIsXG4gICAgICBtb2Q6IFwiYXVkaW9cIixcbiAgICAgIG00YTogXCJhdWRpb1wiLFxuICAgICAgY29tcHJlc3M6IFwiY29tcHJlc3NcIixcbiAgICAgIHppcDogXCJjb21wcmVzc1wiLFxuICAgICAgcmFyOiBcImNvbXByZXNzXCIsXG4gICAgICBcIjd6XCI6IFwiY29tcHJlc3NcIixcbiAgICAgIGx6OiBcImNvbXByZXNzXCIsXG4gICAgICB6MDE6IFwiY29tcHJlc3NcIixcbiAgICAgIGJ6MjogXCJjb21wcmVzc1wiLFxuICAgICAgZ3o6IFwiY29tcHJlc3NcIixcbiAgICAgIHBkZjogXCJwZGZcIixcbiAgICAgIHhsczogXCJ4bHNcIixcbiAgICAgIHhsc3g6IFwieGxzXCIsXG4gICAgICBvZHM6IFwieGxzXCIsXG4gICAgICBtcDQ6IFwidmlkZW9cIixcbiAgICAgIGF2aTogXCJ2aWRlb1wiLFxuICAgICAgd212OiBcInZpZGVvXCIsXG4gICAgICBtcGc6IFwidmlkZW9cIixcbiAgICAgIG10czogXCJ2aWRlb1wiLFxuICAgICAgZmx2OiBcInZpZGVvXCIsXG4gICAgICBcIjNncFwiOiBcInZpZGVvXCIsXG4gICAgICB2b2I6IFwidmlkZW9cIixcbiAgICAgIG00djogXCJ2aWRlb1wiLFxuICAgICAgbXBlZzogXCJ2aWRlb1wiLFxuICAgICAgbTJ0czogXCJ2aWRlb1wiLFxuICAgICAgbW92OiBcInZpZGVvXCIsXG4gICAgICBkb2M6IFwiZG9jXCIsXG4gICAgICBkb2N4OiBcImRvY1wiLFxuICAgICAgZXBzOiBcImRvY1wiLFxuICAgICAgdHh0OiBcImRvY1wiLFxuICAgICAgb2R0OiBcImRvY1wiLFxuICAgICAgcnRmOiBcImRvY1wiLFxuICAgICAgcHB0OiBcInBwdFwiLFxuICAgICAgcHB0eDogXCJwcHRcIixcbiAgICAgIHBwczogXCJwcHRcIixcbiAgICAgIHBwc3g6IFwicHB0XCIsXG4gICAgICBvZHA6IFwicHB0XCIsXG4gICAgfTtcblxuICAgIGNvbnN0IGNodW5rcyA9IGlucHV0RmlsZW5hbWUuc3BsaXQoXCIuXCIpO1xuICAgIGlmIChjaHVua3MubGVuZ3RoIDwgMikge1xuICAgICAgcmV0dXJuIFwiYXBwbGljYXRpb25cIjtcbiAgICB9XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gY2h1bmtzW2NodW5rcy5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmICh0eXBlc1tleHRlbnNpb25dID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBcImFwcGxpY2F0aW9uXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0eXBlc1tleHRlbnNpb25dO1xuICAgIH1cbiAgfVxufVxuIl19