zigholding_obsidian-notesyn.../main.js
2024-04-22 22:01:24 +08:00

187 lines
18 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// main.ts
var main_exports = {};
__export(main_exports, {
default: () => VaultExpoterPlugin
});
module.exports = __toCommonJS(main_exports);
var import_obsidian = require("obsidian");
var fs = require("fs");
var DEFAULT_SETTINGS = {
nameLocalGitProject: "LocalGitProject",
assetsLocalGitProject: "assets"
};
var cmd_export_readme = (plugin) => ({
id: "export_readme",
name: "Export readMe",
callback: async () => {
let nc = await plugin.app.plugins.getPlugin("note-chain");
let tfile = nc.chain.current_note;
await plugin.export_readme(
tfile,
null,
true,
plugin.settings.assetsLocalGitProject
);
}
});
var cmd_set_git_project = (plugin) => ({
id: "set_git_project",
name: "Set Git Project",
callback: async () => {
let nc = await plugin.app.plugins.getPlugin("note-chain");
let dir = await nc.chain.tp_prompt("\u8F93\u5165\u6587\u4EF6\u5939");
if (!dir || !fs.existsSync(dir)) {
return;
}
await nc.editor.set_frontmatter(
nc.chain.current_note,
plugin.settings.nameLocalGitProject,
dir
);
}
});
var commandBuilders = [
cmd_export_readme,
cmd_set_git_project
];
function addCommands(plugin) {
commandBuilders.forEach((c) => {
plugin.addCommand(c(plugin));
});
}
var VaultExpoterPlugin = class extends import_obsidian.Plugin {
async onload() {
await this.loadSettings();
this.app.vt = this;
this.fs = fs;
this.root = this.app.vault.adapter.basePath;
this.addSettingTab(new VExporterSettingTab(this.app, this));
addCommands(this);
}
onunload() {
}
async loadSettings() {
this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());
}
async saveSettings() {
await this.saveData(this.settings);
}
/**
* 附件 src 到 dst不在 vault 中,需要绝对路径
* overwrite复盖mtime新文件
*/
copy_file_by_path(src, dst, mode = "overwrite>mtime>pass") {
mode = mode.split(">")[0];
if (!fs.existsSync(src)) {
return;
}
if (fs.existsSync(dst)) {
if (mode === "overwrite") {
fs.unlinkSync(dst);
fs.copyFileSync(src, dst);
} else if (mode === "mtime") {
if (fs.statSync(dst).mtimeMs < fs.statSync(src).mtimeMs) {
fs.unlinkSync(dst);
fs.copyFileSync(src, dst);
}
}
} else {
fs.copyFileSync(src, dst);
}
}
abspath(tfile) {
if (tfile) {
return this.root + "/" + tfile.path;
} else {
return null;
}
}
copy_tfile(tfile, dst) {
if (tfile) {
let src = this.abspath(tfile);
src && this.copy_file_by_path(src, dst);
}
}
async export_readme(tfile, dst, as_readme = true, assets = "assets") {
let nc = this.app.plugins.getPlugin("note-chain");
if (!tfile) {
tfile = nc.chain.current_note;
}
if (!dst) {
dst = this.settings.nameLocalGitProject;
}
if (!dst.contains("/")) {
dst = nc.editor.get_frontmatter(tfile, dst);
}
if (!dst) {
dst = await nc.chain.tp_prompt("Path of LocalGitProject");
if (!dst) {
return;
}
}
dst = dst.replace(/\\/g, "/");
if (!fs.existsSync(dst)) {
console.log("No Dir:", dst);
}
console.log(dst);
let olinks = nc.chain.get_outlinks(tfile);
let tmp;
if (as_readme) {
tmp = dst + "/readMe.md";
} else {
tmp = dst + "/" + tfile.basename + ".md";
}
this.copy_tfile(tfile, tmp);
let adir = dst + "/" + assets;
if (!fs.existsSync(adir)) {
fs.mkdirSync(adir);
}
for (let f of olinks) {
if (!(f.extension === "md")) {
this.copy_tfile(f, adir + "/" + f.basename + "." + f.extension);
}
}
}
};
var VExporterSettingTab = class extends import_obsidian.PluginSettingTab {
constructor(app, plugin) {
super(app, plugin);
this.plugin = plugin;
}
display() {
const { containerEl } = this;
containerEl.empty();
new import_obsidian.Setting(containerEl).setName("LocalGitProject").setDesc("Metadata Name for Dir of Git Porject").addText((text) => text.setPlaceholder("Enter your field").setValue(this.plugin.settings.nameLocalGitProject).onChange(async (value) => {
this.plugin.settings.nameLocalGitProject = value;
await this.plugin.saveSettings();
}));
new import_obsidian.Setting(containerEl).setName("Folder For Assets").setDesc("Dir Name for Assets").addText((text) => text.setValue(this.plugin.settings.assetsLocalGitProject).onChange(async (value) => {
this.plugin.settings.assetsLocalGitProject = value;
await this.plugin.saveSettings();
}));
}
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibWFpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0ICogYXMgTW9kdWxlIGZyb20gJ21vZHVsZSc7XHJcbmltcG9ydCB7IEFwcCwgRWRpdG9yLCBNYXJrZG93blZpZXcsIE1vZGFsLCBOb3RpY2UsIFBsdWdpbiwgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZywgVEZpbGUgfSBmcm9tICdvYnNpZGlhbic7XHJcblxyXG4vLyBSZW1lbWJlciB0byByZW5hbWUgdGhlc2UgY2xhc3NlcyBhbmQgaW50ZXJmYWNlcyFcclxuXHJcbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcclxuXHJcbmludGVyZmFjZSBWRXhwb3J0ZXJTZXR0aW5ncyB7XHJcblx0bmFtZUxvY2FsR2l0UHJvamVjdDogc3RyaW5nO1xyXG5cdGFzc2V0c0xvY2FsR2l0UHJvamVjdDpzdHJpbmc7XHJcbn1cclxuXHJcbmNvbnN0IERFRkFVTFRfU0VUVElOR1M6IFZFeHBvcnRlclNldHRpbmdzID0ge1xyXG5cdG5hbWVMb2NhbEdpdFByb2plY3Q6ICdMb2NhbEdpdFByb2plY3QnLFxyXG5cdGFzc2V0c0xvY2FsR2l0UHJvamVjdDogJ2Fzc2V0cydcclxufVxyXG5cclxuY29uc3QgY21kX2V4cG9ydF9yZWFkbWUgPSAocGx1Z2luOlZhdWx0RXhwb3RlclBsdWdpbikgPT4gKHtcclxuXHRpZDogJ2V4cG9ydF9yZWFkbWUnLFxyXG5cdG5hbWU6ICdFeHBvcnQgcmVhZE1lJyxcclxuXHRjYWxsYmFjazogYXN5bmMgKCkgPT4ge1xyXG5cdFx0bGV0IG5jID0gYXdhaXQgcGx1Z2luLmFwcC5wbHVnaW5zLmdldFBsdWdpbignbm90ZS1jaGFpbicpO1xyXG5cdFx0bGV0IHRmaWxlID0gbmMuY2hhaW4uY3VycmVudF9ub3RlO1xyXG5cdFx0YXdhaXQgcGx1Z2luLmV4cG9ydF9yZWFkbWUoXHJcblx0XHRcdHRmaWxlLG51bGwsdHJ1ZSxwbHVnaW4uc2V0dGluZ3MuYXNzZXRzTG9jYWxHaXRQcm9qZWN0XHJcblx0XHQpO1xyXG5cdH1cclxufSk7XHJcblxyXG5jb25zdCBjbWRfc2V0X2dpdF9wcm9qZWN0ID0gKHBsdWdpbjpWYXVsdEV4cG90ZXJQbHVnaW4pID0+ICh7XHJcblx0aWQ6ICdzZXRfZ2l0X3Byb2plY3QnLFxyXG5cdG5hbWU6ICdTZXQgR2l0IFByb2plY3QnLFxyXG5cdGNhbGxiYWNrOiBhc3luYyAoKSA9PiB7XHJcblx0XHRsZXQgbmMgPSBhd2FpdCBwbHVnaW4uYXBwLnBsdWdpbnMuZ2V0UGx1Z2luKCdub3RlLWNoYWluJyk7XHJcblx0XHRsZXQgZGlyID0gYXdhaXQgbmMuY2hhaW4udHBfcHJvbXB0KCdcdThGOTNcdTUxNjVcdTY1ODdcdTRFRjZcdTU5MzknKTtcclxuXHRcdGlmKCFkaXIgfHwgIWZzLmV4aXN0c1N5bmMoZGlyKSl7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGF3YWl0IG5jLmVkaXRvci5zZXRfZnJvbnRtYXR0ZXIoXHJcblx0XHRcdG5jLmNoYWluLmN1cnJlbnRfbm90ZSxcclxuXHRcdFx0cGx1Z2luLnNldHRpbmdzLm5hbWVMb2NhbEdpdFByb2plY3QsXHJcblx0XHRcdGRpclxyXG5cdFx0KVxyXG5cdH1cclxufSk7XHJcblxyXG5jb25zdCBjb21tYW5kQnVpbGRlcnMgPSBbXHJcblx0Y21kX2V4cG9ydF9yZWFkbWUsXHJcblx0Y21kX3NldF9naXRfcHJvamVjdFxyXG5dO1xyXG5cclxuZnVuY3Rpb24gYWRkQ29tbWFuZHMocGx1Z2luOlZhdWx0RXhwb3RlclBsdWdpbikge1xyXG4gICAgY29tbWFuZEJ1aWxkZXJzLmZvckVhY2goKGMpID0+IHtcclxuICAgICAgICBwbHVnaW4uYWRkQ29tbWFuZChjKHBsdWdpbikpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZhdWx0RXhwb3RlclBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XHJcblx0c2V0dGluZ3M6IFZFeHBvcnRlclNldHRpbmdzO1xyXG5cdHJvb3QgOiBzdHJpbmc7XHJcblx0XHJcblx0YXN5bmMgb25sb2FkKCkge1xyXG5cdFx0YXdhaXQgdGhpcy5sb2FkU2V0dGluZ3MoKTtcclxuXHRcdHRoaXMuYXBwLnZ0ID0gdGhpcztcclxuXHRcdHRoaXMuZnMgPSBmcztcclxuXHRcdHRoaXMucm9vdCA9IHRoaXMuYXBwLnZhdWx0LmFkYXB0ZXIuYmFzZVBhdGg7XHJcblx0XHQvLyBUaGlzIGFkZHMgYSBzZXR0aW5ncyB0YWIgc28gdGhlIHVzZXIgY2FuIGNvbmZpZ3VyZSB2YXJpb3VzIGFzcGVjdHMgb2YgdGhlIHBsdWdpblxyXG5cdFx0dGhpcy5hZGRTZXR0aW5nVGFiKG5ldyBWRXhwb3J0ZXJTZXR0aW5nVGFiKHRoaXMuYXBwLCB0aGlzKSk7XHJcblxyXG5cdFx0YWRkQ29tbWFuZHModGhpcyk7XHJcblx0fVxyXG5cclxuXHRvbnVubG9hZCgpIHtcclxuXHJcblx0fVxyXG5cclxuXHRhc3luYyBsb2FkU2V0dGluZ3MoKSB7XHJcblx0XHR0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9TRVRUSU5HUywgYXdhaXQgdGhpcy5sb2FkRGF0YSgpKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIHNhdmVTZXR0aW5ncygpIHtcclxuXHRcdGF3YWl0IHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQqIFx1OTY0NFx1NEVGNiBzcmMgXHU1MjMwIGRzdFx1RkYwQ1x1NEUwRFx1NTcyOCB2YXVsdCBcdTRFMkRcdUZGMENcdTk3MDBcdTg5ODFcdTdFRERcdTVCRjlcdThERUZcdTVGODRcclxuXHQqIG92ZXJ3cml0ZVx1RkYwQ1x1NTkwRFx1NzZENlx1RkYxQm10aW1lXHVGRjBDXHU2NUIwXHU2NTg3XHU0RUY2XHVGRjFCXHJcblx0Ki9cclxuXHRjb3B5X2ZpbGVfYnlfcGF0aChzcmM6c3RyaW5nLCBkc3Q6c3RyaW5nLG1vZGU9J292ZXJ3cml0ZT5tdGltZT5wYXNzJykge1xyXG5cdFx0bW9kZSA9IG1vZGUuc3BsaXQoJz4nKVswXVxyXG5cdFx0aWYoIWZzLmV4aXN0c1N5bmMoc3JjKSl7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGlmKGZzLmV4aXN0c1N5bmMoZHN0KSl7XHJcblx0XHRcdGlmKG1vZGU9PT0nb3ZlcndyaXRlJyl7XHJcblx0XHRcdFx0ZnMudW5saW5rU3luYyhkc3QpO1xyXG5cdFx0XHRcdGZzLmNvcHlGaWxlU3luYyhzcmMsZHN0KTtcclxuXHRcdFx0fWVsc2UgaWYobW9kZT09PSdtdGltZScpe1xyXG5cdFx0XHRcdC8vIGRzdCBcdTY2RjRcdTY1QjBcdTY1RjZcdTk1RjRcdTVDMEZcdTRFOEUgc3JjXHJcblx0XHRcdFx0aWYoZnMuc3RhdFN5bmMoZHN0KS5tdGltZU1zPGZzLnN0YXRTeW5jKHNyYykubXRpbWVNcyl7XHJcblx0XHRcdFx0XHRmcy51bmxpbmtTeW5jKGRzdCk7XHJcblx0XHRcdFx0XHRmcy5jb3B5RmlsZVN5bmMoc3JjLGRzdCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9ZWxzZXtcclxuXHRcdFx0ZnMuY29weUZpbGVTeW5jKHNyYyxkc3QpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0YWJzcGF0aCh0ZmlsZTpURmlsZSl7XHJcblx0XHRpZih0ZmlsZSl7XHJcblx0XHRcdHJldHVybiB0aGlzLnJvb3QrJy8nK3RmaWxlLnBhdGg7XHJcblx0XHR9ZWxzZXtcclxuXHRcdFx0cmV0dXJuIG51bGw7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRjb3B5X3RmaWxlKHRmaWxlOlRGaWxlLCBkc3Q6c3RyaW5nKSB7XHJcblx0XHRpZih0ZmlsZSl7XHJcblx0XHRcdGxldCBzcmMgPSB0aGlzLmFic3BhdGgodGZpbGUpO1xyXG5cdFx0XHRzcmMgJiYgdGhpcy5jb3B5X2ZpbGVfYnlfcGF0aChzcmMsZHN0KTtcclxuXHRcdH1cclxuXHR9XHJcblx0XHJcblx0YXN5bmMgZXhwb3J0X3JlYWRtZSh0ZmlsZTpURmlsZSxkc3Q6c3RyaW5nfG51bGwsYXNfcmVhZG1lPXRydWUsYXNzZXRzPSdhc3NldHMnKXtcclxuXHRcdFxyXG5cdFx0bGV0IG5jID0gdGhpcy5hcHAucGx1Z2lucy5nZXRQbHVnaW4oJ25vdGUtY2hhaW4nKTtcclxuXHRcdGlmKCF0ZmlsZSl7dGZpbGUgPSBuYy5jaGFpbi5jdXJyZW50X25vdGU7fVxyXG5cdFx0XHJcblx0XHRpZighZHN0KXtcclxuXHRcdFx0ZHN0ID0gdGhpcy5zZXR0aW5ncy5uYW1lTG9jYWxHaXRQcm9qZWN0O1xyXG5cdFx0fVxyXG5cdFx0aWYoIWRzdC5jb250YWlucygnLycpKXtcclxuXHRcdFx0ZHN0ID0gbmMuZWRpdG9yLmdldF9mcm9udG1hdHRlcih0ZmlsZSxkc3QpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmKCFkc3Qpe1xyXG5cdFx0XHRkc3QgPSBhd2FpdCBuYy5jaGFpbi50cF9wcm9tcHQoJ1BhdGggb2YgTG9jYWxHaXRQcm9qZWN0Jyk7XHJcblx0XHRcdGlmKCFkc3Qpe3JldHVybjt9XHJcblx0XHR9XHJcblx0XHRkc3QgPSBkc3QucmVwbGFjZSgvXFxcXC9nLCcvJyk7XHJcblx0XHRpZighZnMuZXhpc3RzU3luYyhkc3QpKXtcclxuXHRcdFx0Y29uc29sZS5sb2coJ05vIERpcjonLGRzdCk7XHJcblx0XHR9XHJcblx0XHRjb25zb2xlLmxvZyhkc3QpO1xyXG5cdFx0bGV0IG9saW5rcyA9IG5jLmNoYWluLmdldF9vdXRsaW5rcyh0ZmlsZSk7XHJcblx0XHRcclxuXHRcdGxldCB0bXA7XHJcblx0XHRpZihhc19yZWFkbWUpe1xyXG5cdFx0XHR0bXAgPSBkc3QrJy8nKydyZWFkTWUubWQnO1xyXG5cdFx0fWVsc2V7XHJcblx0XHRcdHRtcCA9IGRzdCsnLycrdGZpbGUuYmFzZW5hbWUrJy5tZCc7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5jb3B5X3RmaWxlKHRmaWxlLHRtcCk7XHJcblxyXG5cdFx0bGV0IGFkaXIgPSBkc3QrJy8nK2Fzc2V0cztcclxuXHRcdGlmKCFmcy5leGlzdHNTeW5jKGFkaXIpKXtcclxuXHRcdFx0ZnMubWtkaXJTeW5jKGFkaXIpO1xyXG5cdFx0fVxyXG5cdFx0Zm9yKGxldCBmIG9mIG9saW5rcyl7XHJcblx0XHRcdGlmKCEoZi5leHRlbnNpb249PT0nbWQnKSl7XHJcblx0XHRcdFx0dGhpcy5jb3B5X3RmaWxlKGYsYWRpcisnLycrZi5iYXNlbmFtZSsnLicrZi5leHRlbnNpb24pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG5jbGFzcyBWRXhwb3J0ZXJTZXR0aW5nVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XHJcblx0cGx1Z2luOiBWYXVsdEV4cG90ZXJQbHVnaW47XHJcblxyXG5cdGNvbnN0cnVjdG9yKGFwcDogQXBwLCBwbHVnaW46IFZhdWx0RXhwb3RlclBsdWdpbikge1xyXG5cdFx0c3VwZXIoYXBwLCBwbHVnaW4pO1xyXG5cdFx0dGhpcy5wbHVnaW4gPSBwbHVnaW47XHJcblx0fVxyXG5cclxuXHRkaXNwbGF5KCk6IHZvaWQge1xyXG5cdFx0Y29uc3Qge2NvbnRhaW5lckVsfSA9IHRoaXM7XHJcblxyXG5cdFx0Y29udGFpbmVyRWwuZW1wdHkoKTtcclxuXHJcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuXHRcdFx0LnNldE5hbWUoJ0xvY2FsR2l0UHJvamVjdCcpXHJcblx0XHRcdC5zZXREZXNjKCdNZXRhZGF0YSBOYW1lIGZvciBEaXIgb2YgR2l0IFBvcmplY3QnKVxyXG5cdFx0XHQuYWRkVGV4dCh0ZXh0ID0+IHRleHRcclxuXHRcdFx0XHQuc2V0UGxhY2Vob2xkZXIoJ0VudGVyIHlvdXIgZmllbGQnKVxyXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5uYW1lTG9jYWxHaXRQcm9qZWN0KVxyXG5cdFx0XHRcdC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLm5hbWVMb2NhbEdpdFByb2plY3QgPSB2YWx1ZTtcclxuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG5cdFx0XHRcdH0pKTtcclxuXHRcdFxyXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcblx0XHRcdC5zZXROYW1lKCdGb2xkZXIgRm9yIEFzc2V0cycpXHJcblx0XHRcdC5zZXREZXNjKCdEaXIgTmFtZSBmb3IgQXNzZXRzJylcclxuXHRcdFx0LmFkZFRleHQodGV4dCA9PiB0ZXh0XHJcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmFzc2V0c0xvY2FsR2l0UHJvamVjdClcclxuXHRcdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5hc3NldHNMb2NhbEdpdFByb2plY3QgPSB2YWx1ZTtcclxuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG5cdFx0XHRcdH0pKTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRcclxuXHR9XHJcbn1cclxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBLHNCQUFtRztBQUluRyxJQUFNLEtBQUssUUFBUSxJQUFJO0FBT3ZCLElBQU0sbUJBQXNDO0FBQUEsRUFDM0MscUJBQXFCO0FBQUEsRUFDckIsdUJBQXVCO0FBQ3hCO0FBRUEsSUFBTSxvQkFBb0IsQ0FBQyxZQUErQjtBQUFBLEVBQ3pELElBQUk7QUFBQSxFQUNKLE1BQU07QUFBQSxFQUNOLFVBQVUsWUFBWTtBQUNyQixRQUFJLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxVQUFVLFlBQVk7QUFDeEQsUUFBSSxRQUFRLEdBQUcsTUFBTTtBQUNyQixVQUFNLE9BQU87QUFBQSxNQUNaO0FBQUEsTUFBTTtBQUFBLE1BQUs7QUFBQSxNQUFLLE9BQU8sU0FBUztBQUFBLElBQ2pDO0FBQUEsRUFDRDtBQUNEO0FBRUEs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