diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json index 868e9fc..310f857 100644 --- a/.obsidian/community-plugins.json +++ b/.obsidian/community-plugins.json @@ -1,5 +1,8 @@ [ "easy-typing-obsidian", "cm-editor-syntax-highlight-obsidian", - "markdown-prettifier" + "markdown-prettifier", + "obsidian42-brat", + "attachment-flow-plugin", + "remotely-save" ] \ No newline at end of file diff --git a/.obsidian/plugins/attachment-flow-plugin/main.js b/.obsidian/plugins/attachment-flow-plugin/main.js new file mode 100644 index 0000000..04a9c10 --- /dev/null +++ b/.obsidian/plugins/attachment-flow-plugin/main.js @@ -0,0 +1,1553 @@ +/* +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); +var __async = (__this, __arguments, generator) => { + return new Promise((resolve, reject) => { + var fulfilled = (value) => { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + }; + var rejected = (value) => { + try { + step(generator.throw(value)); + } catch (e) { + reject(e); + } + }; + var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); + step((generator = generator.apply(__this, __arguments)).next()); + }); +}; + +// src/main.ts +var main_exports = {}; +__export(main_exports, { + default: () => AttachFlowPlugin +}); +module.exports = __toCommonJS(main_exports); +var import_obsidian7 = require("obsidian"); + +// src/options/deleleAllAttachsInTheNote.ts +var import_obsidian4 = require("obsidian"); + +// src/util.ts +var import_obsidian = require("obsidian"); +var import_child_process = require("child_process"); +var import_fs = require("fs"); +var import_obsidian2 = require("obsidian"); +var DEBUG = false; +var SUCCESS_NOTICE_TIMEOUT = 1800; +var print = (message, ...optionalParams) => { + if (DEBUG) { + console.log(message, ...optionalParams); + } +}; +function setDebug(value) { + DEBUG = value; +} +var checkReferenceInfo = (target_file, currentMd) => { + const resolvedLinks = app.metadataCache.resolvedLinks; + let CurMDPath; + let result = { + state: 0, + mdPath: [] + }; + let refNum = 0; + for (const [mdFile, links] of Object.entries(resolvedLinks)) { + if (currentMd.path === mdFile) { + CurMDPath = currentMd.path; + result.mdPath.unshift(CurMDPath); + } + for (const [filePath, nr] of Object.entries(links)) { + if ((target_file == null ? void 0 : target_file.path) === filePath) { + refNum++; + if (nr > 1) { + result.state = 2 /* MORE */; + result.mdPath.push(mdFile); + return result; + } + result.mdPath.push(mdFile); + } + } + } + if (refNum > 1) { + result.state = 1 /* MUTIPLE */; + } else { + result.state = 0 /* ONCE */; + } + return result; +}; +var getFileByBaseName = (currentMd, FileBaseName) => { + const resolvedLinks = app.metadataCache.resolvedLinks; + for (const [mdFile, links] of Object.entries(resolvedLinks)) { + if (currentMd.path === mdFile) { + for (const [filePath, nr] of Object.entries(links)) { + if (filePath.includes(FileBaseName)) { + try { + const AttachFile = app.vault.getAbstractFileByPath(filePath); + if (AttachFile instanceof import_obsidian.TFile) { + return AttachFile; + } + } catch (error) { + new import_obsidian.Notice(` cannot get the image file`); + console.error(error); + } + } + } + } + } +}; +var PureClearAttachment = (file, target_type, plugin) => __async(void 0, null, function* () { + const deleteOption = plugin.settings.deleteOption; + const delFileFolder = onlyOneFileExists(file); + const fileFolder = getFileParentFolder(file); + let name = target_type == "img" ? "Image" : "File"; + try { + if (deleteOption === ".trash") { + yield app.vault.trash(file, false); + new import_obsidian.Notice(name + " moved to Obsidian Trash !", SUCCESS_NOTICE_TIMEOUT); + if (delFileFolder) { + yield app.vault.trash(fileFolder, false); + new import_obsidian.Notice("Attachment folder have been deleted!", 3e3); + } + } else if (deleteOption === "system-trash") { + yield app.vault.trash(file, true); + new import_obsidian.Notice(name + " moved to System Trash !", SUCCESS_NOTICE_TIMEOUT); + if (delFileFolder) { + yield app.vault.trash(fileFolder, true); + new import_obsidian.Notice("Attachment folder have been deleted!", 3e3); + } + } else if (deleteOption === "permanent") { + yield app.vault.delete(file); + new import_obsidian.Notice(name + " deleted Permanently !", SUCCESS_NOTICE_TIMEOUT); + if (delFileFolder) { + yield app.vault.delete(fileFolder, true); + new import_obsidian.Notice("Attachment folder have been deleted!", 3e3); + } + } + } catch (error) { + console.error(error); + new import_obsidian.Notice("Faild to delelte the " + name + "!", SUCCESS_NOTICE_TIMEOUT); + } +}); +var handlerDelFileNew = (FileBaseName, currentMd, plugin, target_type, target_pos, in_table, in_callout) => { + let logs; + let modal; + const target_file = getFileByBaseName(currentMd, FileBaseName); + const refInfo = checkReferenceInfo(target_file, currentMd); + let state = refInfo.state; + switch (state) { + case 0: + deleteCurTargetLink(FileBaseName, plugin, target_type, target_pos, in_table, in_callout); + PureClearAttachment(target_file, target_type, plugin); + break; + case 1: + case 2: + deleteCurTargetLink(FileBaseName, plugin, target_type, target_pos, in_table, in_callout); + logs = refInfo.mdPath; + new import_obsidian.Notice("As other references of current file exist, just deleted the current reference link without deleting the actual file.", 3500); + default: + break; + } +}; +var deleteCurTargetLink = (file_base_name, plugin, target_type, target_pos, in_table, in_callout) => { + file_base_name = file_base_name.startsWith("/") ? file_base_name.substring(1) : file_base_name; + const activeView = plugin.app.workspace.getActiveViewOfType(import_obsidian.MarkdownView); + const editor = activeView.editor; + const editorView = editor.cm; + let target_line = editorView.state.doc.lineAt(target_pos); + let line_text = target_line.text; + if (!in_table && !in_callout) { + let finds = findLinkInLine(file_base_name, line_text); + if (finds.length == 0) { + new import_obsidian.Notice("Fail to find the link-text, please delete it manually!", 0); + return; + } else if (finds.length != 1) { + new import_obsidian.Notice("Find multiple same Link in current line, please delete it manually!", 0); + return; + } else { + editor.replaceRange("", { line: target_line.number - 1, ch: finds[0][0] }, { line: target_line.number - 1, ch: finds[0][1] }); + return; + } + } + let startReg = { + "table": /^\s*\|/, + "callout": /^>/ + }; + let mode = in_table ? "table" : "callout"; + let finds_lines = []; + let finds_all = []; + for (let i = target_line.number; i <= editor.lineCount(); i++) { + let line_text2 = editor.getLine(i - 1); + if (!startReg[mode].test(line_text2)) + break; + print(`line_${i}_text:`, line_text2); + let finds = findLinkInLine(file_base_name, line_text2); + if (finds.length > 0) { + finds_lines.push(...new Array(finds.length).fill(i)); + finds_all.push(...finds); + } + } + for (let i = target_line.number - 1; i >= 1; i--) { + let line_text2 = editor.getLine(i - 1); + if (!startReg[mode].test(line_text2)) + break; + print(`line_${i}_text:`, line_text2); + let finds = findLinkInLine(file_base_name, line_text2); + if (finds.length > 0) { + finds_lines.push(...new Array(finds.length).fill(i)); + finds_all.push(...finds); + } + } + if (finds_all.length == 0) { + new import_obsidian.Notice(`Fail to find the link-text (for links in ${mode}), please delete it manually!`, 0); + return; + } else if (finds_all.length != 1) { + new import_obsidian.Notice(`Find multiple same Link in current ${mode}, please delete it manually!`, 0); + return; + } else { + editor.replaceRange("", { line: finds_lines[0] - 1, ch: finds_all[0][0] }, { line: finds_lines[0] - 1, ch: finds_all[0][1] }); + } + editor.focus(); +}; +var handlerCopyFile = (FileBaseName, currentMd, plugin) => __async(void 0, null, function* () { + const file = getFileByBaseName(currentMd, FileBaseName); + const basePath = file.vault.adapter.basePath; + const file_ab_path = basePath + "/" + file.path; + try { + copyFileToClipboardCMD(file_ab_path); + new import_obsidian.Notice("Copied to clipboard !", SUCCESS_NOTICE_TIMEOUT); + } catch (error) { + console.error(error); + new import_obsidian.Notice("Faild to copy the file !", SUCCESS_NOTICE_TIMEOUT); + } +}); +var handlerMoveFile = (FileBaseName, currentMd, plugin) => __async(void 0, null, function* () { + const target_file = getFileByBaseName(currentMd, FileBaseName); + new moveFileToFolderSuggester(plugin.app, target_file).open(); +}); +var getFileParentFolder = (file) => { + if (file instanceof import_obsidian.TFile) { + if (file.parent instanceof import_obsidian.TFolder) { + return file.parent; + } + } + return; +}; +var onlyOneFileExists = (file) => { + const fileFolder = getFileParentFolder(file); + return fileFolder.children.length === 1; +}; +function copyFileToClipboardCMD(filePath) { + if (!(0, import_fs.existsSync)(filePath)) { + console.error(`File ${filePath} does not exist`); + return; + } + const callback = (error, stdout, stderr) => { + if (error) { + new import_obsidian.Notice(`Error executing command: ${error.message}`, SUCCESS_NOTICE_TIMEOUT); + console.error(`Error executing command: ${error.message}`); + return; + } + }; + if (process.platform === "darwin") { + (0, import_child_process.execSync)(`open -R "${filePath}"`); + (0, import_child_process.execSync)(`osascript -e 'tell application "System Events" to keystroke "c" using command down'`); + (0, import_child_process.execSync)(`osascript -e 'tell application "System Events" to keystroke "w" using command down'`); + (0, import_child_process.execSync)(`open -a "Obsidian.app"`); + } else if (process.platform === "linux") { + } else if (process.platform === "win32") { + let safeFilePath = filePath.replace(/'/g, "''"); + (0, import_child_process.exec)(`powershell -command "Set-Clipboard -Path '${safeFilePath}'"`, callback); + } +} +var findLinkInLine = (file_name, line_text) => { + const file_name_mdlink = file_name.replace(/ /g, "%20"); + let regWikiLink = /\!\[\[[^\[\]]*?\]\]/g; + let regMdLink = /\!\[[^\[\]]*?\]\([^\s\)\(\[\]\{\}']*\)/g; + print("target_name (WIKI/MD):", file_name, file_name_mdlink); + let search_result = []; + if (line_text.includes(file_name)) { + while (true) { + let match = regWikiLink.exec(line_text); + if (!match) + break; + let matched_link = match[0]; + print("matched_link:", matched_link); + print("matched_link.includes(file_name)", matched_link.includes(file_name)); + if (matched_link.includes(file_name)) { + search_result.push([match.index, match.index + matched_link.length]); + } + } + } + if (line_text.includes(file_name_mdlink)) { + while (true) { + let match = regMdLink.exec(line_text); + if (!match) + break; + let matched_link = match[0]; + print("matched_link:", matched_link); + print("matched_link.includes(file_name_mdlink)", matched_link.includes(file_name_mdlink)); + if (matched_link.includes(file_name_mdlink)) { + search_result.push([match.index, match.index + matched_link.length]); + } + } + } + return search_result; +}; +var handlerRenameFile = (FileBaseName, currentMd, plugin) => { + const target_file = getFileByBaseName(currentMd, FileBaseName); + let path = target_file.path; + let name = target_file.name; + let target_folder = path.substring(0, path.length - name.length); + let file_type = name.split(".").pop(); + new RenameModal(plugin.app, target_folder, name.substring(0, name.length - file_type.length - 1), file_type, (result) => { + if (!result) + return; + if (result == path) + return; + app.vault.adapter.exists(result).then((exists) => { + if (exists) { + new import_obsidian.Notice(`Fail to rename for there alreay exist file ${result}`); + } else { + plugin.app.fileManager.renameFile(target_file, `${result}`); + } + }); + }).open(); +}; +var RenameModal = class extends import_obsidian2.Modal { + constructor(app2, folder, name, filetype, onSubmit) { + super(app2); + this.onSubmit = onSubmit; + this.folder = folder; + this.name = name; + this.filetype = filetype; + } + onOpen() { + const { contentEl } = this; + let setting = new import_obsidian2.Setting(contentEl).setName("Rename:").addText((text) => text.setValue(this.name).onChange((value) => { + this.result = `${this.folder}${value}.${this.filetype}`; + })); + setTimeout(() => { + let inputBox = setting.settingEl.querySelector('input[type="text"]'); + if (inputBox && inputBox.parentElement) { + let folder_indicator = document.createElement("label"); + folder_indicator.innerText = `${this.folder}`; + folder_indicator.style.marginRight = "4px"; + inputBox.parentElement.insertBefore(folder_indicator, inputBox); + let file_type_indicator = document.createElement("label"); + file_type_indicator.innerText = `.${this.filetype}`; + file_type_indicator.style.marginLeft = "4px"; + inputBox.after(file_type_indicator); + let parentEl = setting.settingEl.parentElement; + if (parentEl) { + parentEl.style.display = "flex"; + parentEl.style.justifyContent = "center"; + } + let inputElem = inputBox; + inputElem.select(); + } else { + console.error("\u65E0\u6CD5\u627E\u5230\u6587\u672C\u8F93\u5165\u6846"); + } + }, 0); + this.scope.register([], "Enter", (evt) => { + if (evt.isComposing) { + return; + } + this.close(); + this.onSubmit(this.result); + }); + } + onClose() { + let { contentEl } = this; + contentEl.empty(); + } +}; +var moveFileToFolderSuggester = class extends import_obsidian2.FuzzySuggestModal { + constructor(app2, file) { + super(app2); + this.folderList = this.getAllFolders(this.app.vault); + this.target_file = file; + } + getAllFolders(vault) { + const folders = /* @__PURE__ */ new Set(); + vault.getAllLoadedFiles().forEach((file) => { + if (file instanceof import_obsidian.TFolder) { + folders.add(file.path); + } + }); + return folders; + } + getItems() { + return Array.from(this.folderList).sort(); + } + getItemText(item) { + return item; + } + onChooseItem(item) { + return __async(this, null, function* () { + var _a; + if (((_a = this.target_file.parent) == null ? void 0 : _a.path) === item) { + new import_obsidian.Notice("The file is already in the folder!", 3e3); + return; + } + let choosed_folder = item.endsWith("/") ? item : item + "/"; + let new_path = choosed_folder + this.target_file.name; + print(new_path); + app.vault.adapter.exists(new_path).then((exists) => { + if (exists) { + new import_obsidian.Notice(`Fail to move for there alreay exist file ${new_path}`); + } else { + this.app.fileManager.renameFile(this.target_file, `${new_path}`); + } + }); + }); + } + renderSuggestion(item, el) { + el.innerText = item.item; + } +}; + +// src/utils/deleteFile.ts +var import_obsidian3 = require("obsidian"); +var SUCCESS_NOTICE_TIMEOUT2 = 1800; +var deleteFile = (file, plugin) => __async(void 0, null, function* () { + const deleteOption = plugin.settings.deleteOption; + try { + if (deleteOption === ".trash") { + yield app.vault.trash(file, false); + } else if (deleteOption === "system-trash") { + yield app.vault.trash(file, true); + } else if (deleteOption === "permanent") { + yield app.vault.delete(file); + } + } catch (error) { + console.error(error); + new import_obsidian3.Notice("Faild to delete the file/folder !", SUCCESS_NOTICE_TIMEOUT2); + } +}); + +// src/options/deleleAllAttachsInTheNote.ts +var deleteAllAttachs = (plugin) => __async(void 0, null, function* () { + const activeMd = app.workspace.getActiveFile(); + const resolvedLinks = app.metadataCache.resolvedLinks; + const attachsPaths = []; + for (const [mdFile, links] of Object.entries(resolvedLinks)) { + if ((activeMd == null ? void 0 : activeMd.path) === mdFile) { + let fileCount = 0; + let flag = false; + for (const [filePath, nr] of Object.entries(links)) { + if (filePath.match(/.*\.md$/m)) + continue; + if (isReferencedByOtherNotes(filePath, activeMd)) + continue; + attachsPaths.push(filePath); + try { + const AttachFile = app.vault.getAbstractFileByPath(filePath); + if (AttachFile instanceof import_obsidian4.TFile) { + deleteFile(AttachFile, plugin); + } + const parentFolder = getFileParentFolder(AttachFile); + if (!flag) { + fileCount = parentFolder.children.length; + flag = !flag; + } + fileCount = fileCount - 1; + if (!fileCount) { + yield deleteFile(parentFolder, plugin); + new import_obsidian4.Notice("All attachments and its parent folder deleted!", 3e3); + } + } catch (error) { + console.warn(error); + } + } + } + } +}); +var isReferencedByOtherNotes = (attachPath, currentMd) => { + const resolvedLinks = app.metadataCache.resolvedLinks; + let flag = false; + for (const [mdFile, links] of Object.entries(resolvedLinks)) { + if (mdFile !== currentMd.path) { + for (const [filePath, nr] of Object.entries(links)) { + if (filePath === attachPath) { + flag = true; + } + } + } + } + return flag; +}; +var getRefencedLinkCount = () => { + const activeMd = app.workspace.getActiveFile(); + const resolvedLinks = app.metadataCache.resolvedLinks; + const attachsPaths = []; + for (const [mdFile, links] of Object.entries(resolvedLinks)) { + if ((activeMd == null ? void 0 : activeMd.path) === mdFile) { + for (const [filePath, nr] of Object.entries(links)) { + if (filePath.match(/.*\.md$/m)) + continue; + if (isReferencedByOtherNotes(filePath, activeMd)) + continue; + attachsPaths.push(filePath); + } + } + } + return attachsPaths.length; +}; + +// src/config/addCommand-config.ts +var addCommand = (myPlugin) => { + myPlugin.addCommand({ + id: "clear-all-attachments-in-current-file", + name: "clear all attachments in current file", + callback: () => __async(void 0, null, function* () { + deleteAllAttachs(myPlugin); + }) + }); +}; + +// src/settings.ts +var import_obsidian5 = require("obsidian"); +var DEFAULT_SETTINGS = { + deleteOption: ".trash", + logsModal: true, + dragResize: true, + resizeInterval: 0, + clickView: false, + adaptiveRatio: 0.9, + moveFileMenu: false, + debug: false +}; +var AttachFlowSettingsTab = class extends import_obsidian5.PluginSettingTab { + constructor(app2, plugin) { + super(app2, plugin); + this.plugin = plugin; + } + display() { + const { containerEl } = this; + containerEl.empty(); + new import_obsidian5.Setting(containerEl).setName("Right-click menu for attachments").setHeading(); + new import_obsidian5.Setting(containerEl).setName("Deleted attachment destination").setDesc("Select where you want Attachments to be moved once they are deleted").addDropdown((dropdown) => { + dropdown.addOption("permanent", "Delete Permanently"); + dropdown.addOption(".trash", "Move to Obsidian Trash"); + dropdown.addOption("system-trash", "Move to System Trash"); + dropdown.setValue(this.plugin.settings.deleteOption); + dropdown.onChange((option) => { + this.plugin.settings.deleteOption = option; + this.plugin.saveSettings(); + }); + }); + new import_obsidian5.Setting(containerEl).setName("Move file to...").setDesc('Add a "Move to..." option to the right-click menu for attachments').addToggle((toggle) => { + toggle.setValue(this.plugin.settings.moveFileMenu).onChange((value) => __async(this, null, function* () { + this.plugin.settings.moveFileMenu = value; + yield this.plugin.saveSettings(); + })); + }); + new import_obsidian5.Setting(containerEl).setName("Click to view images").setHeading(); + new import_obsidian5.Setting(containerEl).setName("Click to view images").setDesc("Click the right half of the image to view the image in detail.").addToggle((toggle) => { + toggle.setValue(this.plugin.settings.clickView).onChange((value) => __async(this, null, function* () { + this.plugin.settings.clickView = value; + yield this.plugin.saveSettings(); + })); + }); + new import_obsidian5.Setting(containerEl).setName("Adaptive image display ratio based on window size").setDesc("When the image exceeds the window size, the image is displayed adaptively according to the window size.").addSlider((slider) => { + slider.setLimits(0.1, 1, 0.05); + slider.setValue(this.plugin.settings.adaptiveRatio); + slider.onChange((value) => __async(this, null, function* () { + this.plugin.settings.adaptiveRatio = value; + new import_obsidian5.Notice(`Adaptive ratio: ${value}`); + yield this.plugin.saveSettings(); + })); + slider.setDynamicTooltip(); + }); + new import_obsidian5.Setting(containerEl).setName("Drag to resize images").setHeading(); + new import_obsidian5.Setting(containerEl).setName("Drag to resize images").setDesc("Turn on to enable drag to resize images.").addToggle((toggle) => { + toggle.setValue(this.plugin.settings.dragResize).onChange((value) => __async(this, null, function* () { + this.plugin.settings.dragResize = value; + yield this.plugin.saveSettings(); + })); + }); + new import_obsidian5.Setting(containerEl).setName("Resize interval").setDesc("\u62D6\u62FD\u8C03\u8282\u6700\u5C0F\u523B\u5EA6\uFF08\u9ED8\u8BA4\u503C\u4E3A 0 \u5373\u4E0D\u5BF9\u9F50\u523B\u5EA6\uFF09").addText((text) => { + text.setValue(this.plugin.settings.resizeInterval.toString()).onChange((value) => __async(this, null, function* () { + if (value === "") { + this.plugin.settings.resizeInterval = 0; + yield this.plugin.saveSettings(); + } else if (/^\d+$/.test(value) && Number(value) >= 0) { + this.plugin.settings.resizeInterval = parseInt(value); + yield this.plugin.saveSettings(); + } else { + new import_obsidian5.Notice("\u8BF7\u8F93\u5165\u6B63\u6574\u6570"); + text.setValue(this.plugin.settings.resizeInterval.toString()); + } + })); + }); + new import_obsidian5.Setting(containerEl).setName("Debug").setHeading(); + new import_obsidian5.Setting(containerEl).setName("Debug mode").setDesc("Print debug information in console").addToggle((toggle) => { + toggle.setValue(this.plugin.settings.debug).onChange((value) => __async(this, null, function* () { + this.plugin.settings.debug = value; + setDebug(value); + yield this.plugin.saveSettings(); + })); + }); + } +}; + +// src/utils/handlerEvent.ts +var getMouseEventTarget = (event) => { + event.preventDefault(); + const target = event.target; + return target; +}; + +// src/modals/deletionPrompt.ts +var import_obsidian6 = require("obsidian"); +var DeleteAllLogsModal = class extends import_obsidian6.Modal { + constructor(note, myPlugin) { + super(app); + this.note = note; + this.myPlugin = myPlugin; + } + getLog() { + const referenceMessage = `Are you sure you want to delete "${this.note.basename}.md"? + +It will be moved to your ${this.myPlugin.settings.deleteOption}.`; + return referenceMessage; + } + showLogs() { + const logs = this.contentEl.createEl("div"); + logs.addClass("attachment-flow-log"); + logs.setText(this.getLog()); + } + onOpen() { + const { contentEl } = this; + const myModal = this; + const headerWrapper = contentEl.createEl("div"); + headerWrapper.addClass("attachment-flow-center-wrapper"); + this.showLogs(); + const referencedMessageWrapper = contentEl.createEl("span"); + referencedMessageWrapper.style.color = "red"; + const referencedMessage = `There are(is) currently [${getRefencedLinkCount()}] non-multi-referenced link(s) pointing to this note.`; + referencedMessageWrapper.append(referencedMessage); + const buttonWrapper = this.contentEl.createEl("div"); + buttonWrapper.addClass("attachment-flow-center-wrapper"); + const headerEl = headerWrapper.createEl("h1", { + text: "Delete the file and its all attachments - logs " + }); + headerEl.addClass("modal-title"); + this.showConfirmButton(buttonWrapper, myModal); + this.showCancelBtn(buttonWrapper, myModal); + } + showCancelBtn(buttonWrapper, myModal) { + const closeButton = buttonWrapper.createEl("button", { + text: "Cancel" + }); + closeButton.setAttribute("aria-label", "Cancel the operation"); + closeButton.addEventListener("click", () => { + myModal.close(); + }); + } + showConfirmButton(buttonWrapper, myModal) { + const removeLinkButton = buttonWrapper.createEl("button", { + text: "Confirm" + }); + removeLinkButton.setAttribute("aria-label", "Continue to delete current file and its all non-multi-referenced attachments"); + removeLinkButton.addClass("mod-warning"); + removeLinkButton.addEventListener("click", () => __async(this, null, function* () { + deleteFile(this.note, this.myPlugin); + deleteAllAttachs(this.myPlugin); + myModal.close(); + })); + } +}; + +// src/helpers.ts +var loadImageBlobTimeout = 3e3; +function withTimeout(ms, promise) { + const timeout = new Promise((resolve, reject) => { + const id = setTimeout(() => { + clearTimeout(id); + reject(`timed out after ${ms} ms`); + }, ms); + }); + return Promise.race([ + promise, + timeout + ]); +} +function loadImageBlob(imgSrc, retryCount = 0) { + return __async(this, null, function* () { + const loadImageBlobCore = () => { + return new Promise((resolve, reject) => { + const image = new Image(); + image.crossOrigin = "anonymous"; + image.onload = () => { + const canvas = document.createElement("canvas"); + canvas.width = image.width; + canvas.height = image.height; + const ctx = canvas.getContext("2d"); + ctx.drawImage(image, 0, 0); + canvas.toBlob((blob) => { + resolve(blob); + }); + }; + image.onerror = () => __async(this, null, function* () { + if (retryCount < 3) { + try { + yield fetch(image.src, { "mode": "no-cors" }); + const blob = yield loadImageBlob(`https://api.allorigins.win/raw?url=${encodeURIComponent(imgSrc)}`, retryCount + 1); + resolve(blob); + } catch (e) { + reject(); + } + } else { + reject(new Error("Unable to retrieve the image data after 3 retries.")); + } + }); + image.src = imgSrc; + }); + }; + return withTimeout(loadImageBlobTimeout, loadImageBlobCore()); + }); +} +function onElement(el, event, selector, listener, options) { + el.on(event, selector, listener, options); + return () => el.off(event, selector, listener, options); +} + +// src/main.ts +var AttachFlowPlugin = class extends import_obsidian7.Plugin { + constructor() { + super(...arguments); + this.updateImageLinkWithNewSize = (img, target_pos, newWidth, newHeight) => { + var _a; + const activeView = this.app.workspace.getActiveViewOfType(import_obsidian7.MarkdownView); + const inTable = img.closest("table") != null; + const inCallout = img.closest(".callout") != null; + const isExcalidraw = img.classList.contains("excalidraw-embedded-img"); + if (activeView) { + print("update new Width", newWidth); + let imageName = img.getAttribute("src"); + if (imageName == null ? void 0 : imageName.startsWith("http")) { + updateExternalLink(activeView, img, target_pos, newWidth, newHeight, inTable, inCallout); + } else if (isExcalidraw) { + let target_name = img.getAttribute("filesource"); + let draw_base_name = getExcalidrawBaseName(img); + img.style.maxWidth = "none"; + updateInternalLink(activeView, img, target_pos, draw_base_name, newWidth, newHeight, inTable, inCallout); + } else { + imageName = (_a = img.closest(".internal-embed")) == null ? void 0 : _a.getAttribute("src"); + updateInternalLink(activeView, img, target_pos, imageName, newWidth, newHeight, inTable, inCallout); + } + } + }; + this.addMenuExtendedSourceMode = (menu, FileBaseName, currentMd, target_type, target_pos, inTable, inCallout) => { + this.addMenuExtendedPreviewMode(menu, FileBaseName, currentMd); + menu.addItem((item) => item.setIcon("pencil").setTitle("Rename").onClick(() => __async(this, null, function* () { + try { + print("test rename"); + handlerRenameFile(FileBaseName, currentMd, this); + } catch (e) { + new import_obsidian7.Notice("Error, could not rename the file!"); + } + }))); + if (this.settings.moveFileMenu) { + menu.addItem((item) => item.setIcon("folder-tree").setTitle("Move file to...").onClick(() => __async(this, null, function* () { + try { + handlerMoveFile(FileBaseName, currentMd, this); + } catch (e) { + new import_obsidian7.Notice("Error, could not Move the file!"); + } + }))); + } + menu.addItem((item) => item.setIcon("trash-2").setTitle("Clear file and associated link").onClick(() => __async(this, null, function* () { + try { + handlerDelFileNew(FileBaseName, currentMd, this, target_type, target_pos, inTable, inCallout); + } catch (e) { + new import_obsidian7.Notice("Error, could not clear the file!"); + } + }))); + }; + this.addMenuExtendedPreviewMode = (menu, FileBaseName, currentMd) => { + const file = getFileByBaseName(currentMd, FileBaseName); + if (process.platform != "linux") { + menu.addItem((item) => item.setIcon("copy").setTitle("Copy file to clipboard").onClick(() => __async(this, null, function* () { + try { + handlerCopyFile(FileBaseName, currentMd, this); + } catch (e) { + new import_obsidian7.Notice("Error, could not copy the file!"); + } + }))); + } + menu.addItem((item) => item.setIcon("arrow-up-right").setTitle("Open in default app").onClick(() => this.app.openWithDefaultApp(file.path))); + menu.addItem((item) => item.setIcon("arrow-up-right").setTitle(import_obsidian7.Platform.isMacOS ? "Reveal in finder" : "Show in system explorer").onClick(() => { + this.app.showInFolder(file.path); + })); + menu.addItem((item) => item.setIcon("folder").setTitle("Reveal file in navigation").onClick(() => { + const abstractFilePath = this.app.vault.getAbstractFileByPath(file.path); + this.app.internalPlugins.getEnabledPluginById("file-explorer").revealInFolder(abstractFilePath); + })); + }; + this.addExternalImageMenuPreviewMode = (menu, img) => { + menu.addItem((item) => item.setIcon("copy").setTitle("Copy image to clipboard").onClick(() => __async(this, null, function* () { + try { + const blob = yield loadImageBlob(img.src); + yield navigator.clipboard.write([new ClipboardItem({ "image/png": blob })]); + new import_obsidian7.Notice("Image copied to clipboard"); + } catch (error) { + new import_obsidian7.Notice("Failed to copy image!"); + } + }))); + menu.addItem((item) => item.setIcon("link").setTitle("Copy image link").onClick(() => __async(this, null, function* () { + navigator.clipboard.writeText(img.src); + }))); + menu.addItem((item) => item.setIcon("link").setTitle("Copy markdown link").onClick(() => __async(this, null, function* () { + navigator.clipboard.writeText(`![](${img.src})`); + }))); + menu.addItem((item) => item.setIcon("external-link").setTitle("Open in external browser").onClick(() => __async(this, null, function* () { + window.open(img.src, "_blank"); + }))); + }; + this.addExternalImageMenuSourceMode = (menu, img, inTable, inCallout) => { + this.addExternalImageMenuPreviewMode(menu, img); + menu.addItem((item) => item.setIcon("trash-2").setTitle("Clear image link").onClick(() => { + var _a; + const editor = (_a = this.app.workspace.getActiveViewOfType(import_obsidian7.MarkdownView)) == null ? void 0 : _a.editor; + const editorView = editor.cm; + const target_pos = editorView.posAtDOM(img); + deleteCurTargetLink(img.src, this, "img", target_pos, inTable, inCallout); + })); + }; + } + onload() { + return __async(this, null, function* () { + console.log("AttachFlow plugin loaded..."); + this.edgeSize = 20; + this.addSettingTab(new AttachFlowSettingsTab(this.app, this)); + yield this.loadSettings(); + this.registerDocument(document); + app.workspace.on("window-open", (workspaceWindow, window2) => { + this.registerDocument(window2.document); + }); + this.registerEvent(this.app.workspace.on("file-menu", (menu, file) => { + if (file instanceof import_obsidian7.TFile) { + if (!file.path.endsWith(".md")) + return; + const addMenuItem = (item) => { + item.setTitle("Delete file and its attachments").setIcon("trash-2").setSection("danger"); + item.onClick(() => __async(this, null, function* () { + const modal = new DeleteAllLogsModal(file, this); + modal.open(); + })); + }; + menu.addItem(addMenuItem); + } + })); + addCommand(this); + this.registerDomEvent(document, "click", (evt) => __async(this, null, function* () { + if (!this.settings.clickView) + return; + const target = evt.target; + if (target.tagName !== "IMG") { + this.removeZoomedImage(); + return; + } + const rect = target.getBoundingClientRect(); + const imageCenter = rect.left + rect.width / 2; + if (evt.clientX <= imageCenter || document.getElementById("af-zoomed-image")) + return; + evt.preventDefault(); + const mask = createZoomMask(); + const { zoomedImage, originalWidth, originalHeight } = yield createZoomedImage(target.src, this.settings.adaptiveRatio); + const scaleDiv = createZoomScaleDiv(zoomedImage, originalWidth, originalHeight); + zoomedImage.addEventListener("wheel", (e) => handleZoomMouseWheel(e, zoomedImage, originalWidth, originalHeight, scaleDiv)); + zoomedImage.addEventListener("contextmenu", (e) => handleZoomContextMenu(e, zoomedImage, originalWidth, originalHeight, scaleDiv)); + zoomedImage.addEventListener("mousedown", (e) => handleZoomDragStart(e, zoomedImage)); + zoomedImage.addEventListener("dblclick", (e) => { + adaptivelyDisplayImage(zoomedImage, originalWidth, originalHeight, this.settings.adaptiveRatio); + updateZoomScaleDiv(scaleDiv, zoomedImage, originalWidth, originalHeight); + }); + })); + this.registerDomEvent(document, "keydown", (evt) => { + if (evt.key === "Escape") { + this.removeZoomedImage(); + } + }); + setDebug(this.settings.debug); + }); + } + onunload() { + console.log("AttachFlow plugin unloaded..."); + } + removeZoomedImage() { + if (document.getElementById("af-zoomed-image")) { + const zoomedImage = document.getElementById("af-zoomed-image"); + if (zoomedImage) + document.body.removeChild(zoomedImage); + const scaleDiv = document.getElementById("af-scale-div"); + if (scaleDiv) + document.body.removeChild(scaleDiv); + const mask = document.getElementById("af-mask"); + if (mask) + document.body.removeChild(mask); + } + } + registerDocument(document2) { + this.register(onElement(document2, "contextmenu", "img, iframe, video, div.file-embed-title, audio", this.onRightClickMenu.bind(this))); + this.register(onElement(document2, "mousedown", "img", (event) => { + var _a, _b; + if (!this.settings.dragResize) + return; + const currentMd = app.workspace.getActiveFile(); + if (currentMd.name.endsWith(".canvas")) + return; + const inPreview = ((_a = this.app.workspace.getActiveViewOfType(import_obsidian7.MarkdownView)) == null ? void 0 : _a.getMode()) == "preview"; + if (inPreview) + return; + if (event.button === 0) { + event.preventDefault(); + } + const img = event.target; + if (img.id == "af-zoomed-image") + return; + const editor = (_b = this.app.workspace.getActiveViewOfType(import_obsidian7.MarkdownView)) == null ? void 0 : _b.editor; + const editorView = editor.cm; + const target_pos = editorView.posAtDOM(img); + let target_line = editorView.state.doc.lineAt(target_pos); + const inTable = img.closest("table") != null; + const inCallout = img.closest(".callout") != null; + const isExcalidraw = img.classList.contains("excalidraw-embedded-img"); + print("InTable", inTable); + print("Target Element", img); + let preventEvent = function(event2) { + event2.preventDefault(); + event2.stopPropagation(); + }; + const rect = img.getBoundingClientRect(); + const x = event.clientX - rect.left; + const y = event.clientY - rect.top; + const edgeSize = this.edgeSize; + if (x < edgeSize || y < edgeSize || x > rect.width - edgeSize || y > rect.height - edgeSize) { + const startX = event.clientX; + const startY = event.clientY; + const startWidth = img.clientWidth; + const startHeight = img.clientHeight; + let lastUpdateX = startX; + let lastUpdateY = startY; + let lastUpdate = 1; + let updatedWidth = startWidth; + let lastMoveTime = Date.now(); + const onMouseMove = (event2) => { + img.addEventListener("click", preventEvent); + const currentX = event2.clientX; + lastUpdate = currentX - lastUpdateX == 0 ? lastUpdate : currentX - lastUpdateX; + let newWidth = startWidth + (currentX - startX); + const aspectRatio = startWidth / startHeight; + newWidth = Math.max(newWidth, 100); + let newHeight = newWidth / aspectRatio; + newWidth = Math.round(newWidth); + newHeight = Math.round(newHeight); + updatedWidth = newWidth; + if (img instanceof HTMLImageElement) { + img.classList.add("image-in-drag-resize"); + img.style.width = `${newWidth}px`; + } + const now = Date.now(); + if (now - lastMoveTime < 100) + return; + lastMoveTime = now; + this.updateImageLinkWithNewSize(img, target_pos, newWidth, newHeight); + lastUpdateX = event2.clientX; + lastUpdateY = event2.clientY; + }; + const allowOtherEvent = () => { + img.removeEventListener("click", preventEvent); + }; + const onMouseUp = (event2) => { + setTimeout(allowOtherEvent, 100); + event2.preventDefault(); + img.classList.remove("image-in-drag-resize", "image-ready-click-view"); + document2.removeEventListener("mousemove", onMouseMove); + document2.removeEventListener("mouseup", onMouseUp); + if (this.settings.resizeInterval > 1) { + let resize_interval = this.settings.resizeInterval; + let width_offset = lastUpdate > 0 ? resize_interval : 0; + if (updatedWidth % resize_interval != 0) { + updatedWidth = Math.floor(updatedWidth / resize_interval) * resize_interval + width_offset; + } + img.style.width = `${updatedWidth}px`; + this.updateImageLinkWithNewSize(img, target_pos, updatedWidth, 0); + } + }; + document2.addEventListener("mousemove", onMouseMove); + document2.addEventListener("mouseup", onMouseUp); + } + })); + this.register(onElement(document2, "mouseover", "img", (event) => { + var _a; + const currentMd = app.workspace.getActiveFile(); + if (currentMd.name.endsWith(".canvas")) + return; + const inPreview = ((_a = this.app.workspace.getActiveViewOfType(import_obsidian7.MarkdownView)) == null ? void 0 : _a.getMode()) == "preview"; + const img = event.target; + const edgeSize = this.edgeSize; + if (img.id == "af-zoomed-image") + return; + const isExcalidraw = img.classList.contains("excalidraw-embedded-img"); + let lastMove = 0; + const mouseOverHandler = (event2) => { + if (event2.buttons != 0) + return; + if (!this.settings.dragResize) + return; + const now = Date.now(); + if (now - lastMove < 100) + return; + lastMove = now; + const rect = img.getBoundingClientRect(); + const x = event2.clientX - rect.left; + const y = event2.clientY - rect.top; + if (x >= rect.width - edgeSize || x <= edgeSize || (y >= rect.height - edgeSize || y <= edgeSize)) { + if (this.settings.dragResize && !inPreview) { + img.classList.remove("image-ready-click-view"); + img.classList.add("image-ready-resize"); + } else if (inPreview && this.settings.clickView && x > rect.width / 2) { + img.classList.add("image-ready-click-view"); + img.classList.remove("image-ready-resize"); + } + } else if (x > rect.width / 2 && this.settings.clickView) { + img.classList.add("image-ready-click-view"); + img.classList.remove("image-ready-resize"); + } else { + img.classList.remove("image-ready-click-view", "image-ready-resize"); + } + }; + this.registerDomEvent(img, "mousemove", mouseOverHandler); + })); + this.register(onElement(document2, "mouseout", "img", (event) => { + var _a; + if (!this.settings.dragResize) + return; + const currentMd = app.workspace.getActiveFile(); + if (currentMd.name.endsWith(".canvas")) + return; + const inPreview = ((_a = this.app.workspace.getActiveViewOfType(import_obsidian7.MarkdownView)) == null ? void 0 : _a.getMode()) == "preview"; + if (event.buttons != 0) + return; + const img = event.target; + if (this.settings.clickView || this.settings.dragResize) { + img.classList.remove("image-ready-click-view", "image-ready-resize"); + } + })); + this.register(onElement(document2, "mousedown", "img", this.externalImageContextMenuCall.bind(this))); + } + loadSettings() { + return __async(this, null, function* () { + this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData()); + }); + } + saveSettings() { + return __async(this, null, function* () { + yield this.saveData(this.settings); + }); + } + registerEscapeButton(menu, document2 = activeDocument) { + menu.register(onElement(document2, "keydown", "*", (e) => { + if (e.key === "Escape") { + e.preventDefault(); + e.stopPropagation(); + menu.hide(); + } + })); + } + externalImageContextMenuCall(event) { + var _a, _b, _c; + const img = event.target; + const inTable = img.closest("table") != null; + const inCallout = img.closest(".callout") != null; + if (img.id == "af-zoomed-image") + return; + if (!img.src.startsWith("http")) + return; + if (event.button != 2) + return; + event.preventDefault(); + (_b = (_a = this.app.workspace.getActiveViewOfType(import_obsidian7.MarkdownView)) == null ? void 0 : _a.editor) == null ? void 0 : _b.blur(); + img.classList.remove("image-ready-click-view", "image-ready-resize"); + const menu = new import_obsidian7.Menu(); + const inPreview = ((_c = this.app.workspace.getActiveViewOfType(import_obsidian7.MarkdownView)) == null ? void 0 : _c.getMode()) == "preview"; + if (inPreview) { + this.addExternalImageMenuPreviewMode(menu, img); + } else { + this.addExternalImageMenuSourceMode(menu, img, inTable, inCallout); + } + this.registerEscapeButton(menu); + let offset = 0; + if (!inPreview && (inTable || inCallout)) + offset = -138; + menu.showAtPosition({ x: event.pageX, y: event.pageY + offset }); + this.app.workspace.trigger("AttachFlow:contextmenu", menu); + } + onRightClickMenu(event) { + var _a, _b, _c, _d, _e; + const target = getMouseEventTarget(event); + const curTargetType = target.localName; + if (target.id == "af-zoomed-image") + return; + const currentMd = app.workspace.getActiveFile(); + const inCanvas = currentMd.name.endsWith(".canvas"); + const SupportedTargetType = ["img", "iframe", "video", "div", "audio"]; + const menu = new import_obsidian7.Menu(); + if (!SupportedTargetType.includes(curTargetType)) + return; + const inTable = target.closest("table") != null; + const inCallout = target.closest(".callout") != null; + const inPreview = ((_a = this.app.workspace.getActiveViewOfType(import_obsidian7.MarkdownView)) == null ? void 0 : _a.getMode()) == "preview"; + const isExcalidraw = target.classList.contains("excalidraw-embedded-img"); + let target_name = target.getAttribute("src"); + if (target_name && target_name.startsWith("http")) + return; + if (inCanvas) { + if ((_b = target.parentElement) == null ? void 0 : _b.classList.contains("canvas-node-content")) + return; + let file_name = (_c = target.parentElement) == null ? void 0 : _c.getAttribute("src"); + return; + } + target.classList.remove("image-ready-click-view", "image-ready-resize"); + if (isExcalidraw) { + target_name = getExcalidrawBaseName(target); + target_name = target_name.replace(/^(\.\.\/)+/g, ""); + } else { + target_name = (_d = target.closest(".internal-embed")) == null ? void 0 : _d.getAttribute("src"); + target_name = target_name.replace(/^(\.\.\/)+/g, ""); + let pdf_match = target_name.match(/.*\.pdf/); + target_name = pdf_match ? pdf_match[0] : target_name; + if (curTargetType == "img" && pdf_match) + return; + } + if (inPreview) { + if (SupportedTargetType.includes(curTargetType)) { + this.addMenuExtendedPreviewMode(menu, target_name, currentMd); + } + } else { + const editor = (_e = this.app.workspace.getActiveViewOfType(import_obsidian7.MarkdownView)) == null ? void 0 : _e.editor; + const editorView = editor.cm; + const target_pos = editorView.posAtDOM(target); + let target_line = editorView.state.doc.lineAt(target_pos); + print("target line information: line-content, line-number(1-based), target.ch"); + print(target_line.text, target_line.number, target_pos - target_line.from); + if (SupportedTargetType.includes(curTargetType)) { + this.addMenuExtendedSourceMode(menu, target_name, currentMd, curTargetType, target_pos, inTable, inCallout); + } + } + this.registerEscapeButton(menu); + let offset = -163; + let linux_offset = -138; + offset = process.platform == "linux" ? linux_offset : offset; + if (this.settings.moveFileMenu) + offset -= 25; + if (inTable && !inPreview) { + menu.showAtPosition({ x: event.pageX, y: event.pageY + offset }); + } else { + menu.showAtPosition({ x: event.pageX, y: event.pageY }); + } + this.app.workspace.trigger("AttachFlow:contextmenu", menu); + } +}; +function updateInternalLink(activeView, target, target_pos, imageName, newWidth, newHeight, inTable, inCallout) { + const editor = activeView.editor; + const editorView = editor.cm; + let target_line = editorView.state.doc.lineAt(target_pos); + if (!inCallout && !inTable) { + let matched = matchLineWithInternalLink(target_line.text, imageName, newWidth, inTable); + if (matched.length == 1) { + editorView.dispatch({ + changes: { + from: target_line.from + matched[0].from_ch, + to: target_line.from + matched[0].to_ch, + insert: matched[0].new_link + } + }); + } else if (matched.length == 0) { + } else { + new import_obsidian7.Notice("Find multiple same image-link in line, please zoom manually!"); + } + return; + } + let startReg = { + "table": /^\s*\|/, + "callout": /^>/ + }; + let mode = inTable ? "table" : "callout"; + print("mode", mode); + const start_reg = startReg[mode]; + let start_line_number = target_line.number; + let matched_results = []; + let matched_lines = []; + for (let i = start_line_number; i <= editor.lineCount(); i++) { + let line = editorView.state.doc.line(i); + if (!start_reg.test(line.text)) + break; + let matched = matchLineWithInternalLink(line.text, imageName, newWidth, inTable); + matched_results.push(...matched); + matched_lines.push(...new Array(matched.length).fill(i)); + } + for (let i = start_line_number - 1; i >= 1; i--) { + let line = editorView.state.doc.line(i); + if (!start_reg.test(line.text)) + break; + let matched = matchLineWithInternalLink(line.text, imageName, newWidth, inTable); + matched_results.push(...matched); + matched_lines.push(...new Array(matched.length).fill(i)); + } + if (matched_results.length == 1) { + let target_line2 = editorView.state.doc.line(matched_lines[0]); + if (mode == "table") { + let old_text = target_line2.text; + let new_line_text = old_text.substring(0, matched_results[0].from_ch) + matched_results[0].new_link + old_text.substring(matched_results[0].to_ch); + editorView.dispatch({ + changes: { + from: target_line2.from, + to: target_line2.from + old_text.length, + insert: new_line_text + } + }); + } else { + editorView.dispatch({ + changes: { + from: target_line2.from + matched_results[0].from_ch, + to: target_line2.from + matched_results[0].to_ch, + insert: matched_results[0].new_link + } + }); + } + } else if (matched_results.length == 0) { + new import_obsidian7.Notice(`Fail to find current image-link in ${mode}, please zoom manually!`); + } else { + new import_obsidian7.Notice(`Find multiple same image-link in ${mode}, please zoom manually!`); + } + return; +} +function updateExternalLink(activeView, target, target_pos, newWidth, newHeight, inTable, inCallout) { + const editor = activeView.editor; + const editorView = editor.cm; + let target_line = editorView.state.doc.lineAt(target_pos); + const link = target.getAttribute("src"); + const altText = target.getAttribute("alt"); + if (!inCallout && !inTable) { + let matched = matchLineWithExternalLink(target_line.text, link, altText, newWidth, inTable); + if (matched.length == 1) { + editorView.dispatch({ + changes: { + from: target_line.from + matched[0].from_ch, + to: target_line.from + matched[0].to_ch, + insert: matched[0].new_link + } + }); + } else if (matched.length == 0) { + } else { + new import_obsidian7.Notice("Find multiple same image-link in line, please zoom manually!"); + } + return; + } + let startReg = { + "table": /^\s*\|/, + "callout": /^>/ + }; + let mode = inTable ? "table" : "callout"; + print("mode", mode); + const start_reg = startReg[mode]; + let start_line_number = target_line.number; + let matched_results = []; + let matched_lines = []; + for (let i = start_line_number; i <= editor.lineCount(); i++) { + let line = editorView.state.doc.line(i); + if (!start_reg.test(line.text)) + break; + let matched = matchLineWithExternalLink(line.text, link, altText, newWidth, inTable); + matched_results.push(...matched); + matched_lines.push(...new Array(matched.length).fill(i)); + } + for (let i = start_line_number - 1; i >= 1; i--) { + let line = editorView.state.doc.line(i); + if (!start_reg.test(line.text)) + break; + let matched = matchLineWithExternalLink(line.text, link, altText, newWidth, inTable); + matched_results.push(...matched); + matched_lines.push(...new Array(matched.length).fill(i)); + } + print(matched_results); + print(matched_lines); + if (matched_results.length == 1) { + let target_line2 = editorView.state.doc.line(matched_lines[0]); + if (mode == "table") { + let old_text = target_line2.text; + let new_line_text = old_text.substring(0, matched_results[0].from_ch) + matched_results[0].new_link + old_text.substring(matched_results[0].to_ch); + editorView.dispatch({ + changes: { + from: target_line2.from, + to: target_line2.from + old_text.length, + insert: new_line_text + } + }); + } else { + editorView.dispatch({ + changes: { + from: target_line2.from + matched_results[0].from_ch, + to: target_line2.from + matched_results[0].to_ch, + insert: matched_results[0].new_link + } + }); + } + } else if (matched_results.length == 0) { + new import_obsidian7.Notice(`Fail to find current image-link in ${mode}, please zoom manually!`); + } else { + new import_obsidian7.Notice(`Find multiple same image-link in ${mode}, please zoom manually!`); + } + return; +} +function matchLineWithInternalLink(line_text, target_name, new_width, intable) { + let regWikiLink = /\!\[\[[^\[\]]*?\]\]/g; + let regMdLink = /\!\[[^\[\]]*?\]\([^\s\)\(\[\]\{\}']*\)/g; + const target_name_mdlink = target_name.replace(/ /g, "%20"); + if (!line_text.includes(target_name) && !line_text.includes(target_name_mdlink)) + return []; + let result = []; + while (true) { + let wiki_match = regWikiLink.exec(line_text); + if (!wiki_match) + break; + const matched_link = wiki_match[0]; + if (matched_link.includes(target_name)) { + let normal_link = intable ? matched_link.replace(/\\\|/g, "|") : matched_link; + let link_match = normal_link.match(/!\[\[(.*?)(\||\]\])/); + let link_text = link_match ? link_match[1] : ""; + let alt_match = matched_link.match(/!\[\[.*?(\|(.*?))\]\]/); + let alt_text = alt_match ? alt_match[1] : ""; + let alt_text_list = alt_text.split("|"); + let alt_text_wo_size = ""; + let new_alt_text = ""; + for (let alt of alt_text_list) { + if (!/^\d+$/.test(alt) && !/^\s*$/.test(alt)) { + alt_text_wo_size = alt_text_wo_size + "|" + alt; + } + } + new_alt_text = new_width != 0 ? `${alt_text_wo_size}|${new_width}` : alt_text_wo_size; + new_alt_text = intable ? new_alt_text.replace(/\|/g, "\\|") : new_alt_text; + let newWikiLink = link_match ? `![[${link_text}${new_alt_text}]]` : `![[${target_name}${new_alt_text}]]`; + result.push({ + old_link: matched_link, + new_link: newWikiLink, + from_ch: wiki_match.index, + to_ch: wiki_match.index + matched_link.length + }); + } + } + while (true) { + let match = regMdLink.exec(line_text); + if (!match) + break; + const matched_link = match[0]; + if (matched_link.includes(target_name_mdlink)) { + let alt_text_match = matched_link.match(/\[.*?\]/g); + let alt_text = alt_text_match[0].substring(1, alt_text_match[0].length - 1); + let pure_alt = alt_text.replace(/\|\d+(\|\d+)?$/g, ""); + if (intable) { + pure_alt = alt_text.replace(/\\\|\d+(\|\d+)?$/g, ""); + } + let link_text = matched_link.substring(alt_text_match[0].length + 2, matched_link.length - 1); + let newMDLink = intable ? `![${pure_alt}\\|${new_width}](${link_text})` : `![${pure_alt}|${new_width}](${link_text})`; + if (/^\d*$/.test(alt_text)) { + newMDLink = `![${new_width}](${link_text})`; + } + result.push({ + old_link: matched_link, + new_link: newMDLink, + from_ch: match.index, + to_ch: match.index + matched_link.length + }); + } + } + print("Line Text: ", line_text); + print("MatchedInfo:", result); + return result; +} +function matchLineWithExternalLink(line_text, link, alt_text, new_width, intable) { + let result = []; + let regMdLink = /\!\[[^\[\]]*?\]\([^\s\)\(\[\]\{\}']*\)/g; + if (!line_text.includes(link)) + return []; + while (true) { + let match = regMdLink.exec(line_text); + if (!match) + break; + let matched_link = match[0]; + if (matched_link.includes(link)) { + let alt_text_match = matched_link.match(/\[.*?\]/g); + let alt_text2 = alt_text_match[0].substring(1, alt_text_match[0].length - 1); + let pure_alt = alt_text2.replace(/\|\d+(\|\d+)?$/g, ""); + if (intable) { + pure_alt = alt_text2.replace(/\\\|\d+(\|\d+)?$/g, ""); + } + if (/^\d*$/.test(alt_text2)) { + pure_alt = ""; + } + let link_text = matched_link.substring(alt_text_match[0].length + 2, matched_link.length - 1); + let newExternalLink = intable ? `![${pure_alt}\\|${new_width}](${link_text})` : `![${pure_alt}|${new_width}](${link_text})`; + result.push({ + old_link: matched_link, + new_link: newExternalLink, + from_ch: match.index, + to_ch: match.index + matched_link.length + }); + } + } + print("Line Text: ", line_text); + print("MatchedInfo:", result); + return result; +} +function createZoomMask() { + const mask = document.createElement("div"); + mask.id = "af-mask"; + mask.style.position = "fixed"; + mask.style.top = "0"; + mask.style.left = "0"; + mask.style.width = "100%"; + mask.style.height = "100%"; + mask.style.background = "rgba(0, 0, 0, 0.5)"; + mask.style.zIndex = "9998"; + document.body.appendChild(mask); + return mask; +} +function createZoomedImage(src, adaptive_ratio) { + return __async(this, null, function* () { + const zoomedImage = document.createElement("img"); + zoomedImage.id = "af-zoomed-image"; + zoomedImage.src = src; + zoomedImage.style.position = "fixed"; + zoomedImage.style.zIndex = "9999"; + zoomedImage.style.top = "50%"; + zoomedImage.style.left = "50%"; + zoomedImage.style.transform = "translate(-50%, -50%)"; + document.body.appendChild(zoomedImage); + let originalWidth = zoomedImage.naturalWidth; + let originalHeight = zoomedImage.naturalHeight; + adaptivelyDisplayImage(zoomedImage, originalWidth, originalHeight, adaptive_ratio); + return { + zoomedImage, + originalWidth, + originalHeight + }; + }); +} +function createZoomScaleDiv(zoomedImage, originalWidth, originalHeight) { + const scaleDiv = document.createElement("div"); + scaleDiv.id = "af-scale-div"; + scaleDiv.classList.add("af-scale-div"); + scaleDiv.style.zIndex = "10000"; + updateZoomScaleDiv(scaleDiv, zoomedImage, originalWidth, originalHeight); + document.body.appendChild(scaleDiv); + return scaleDiv; +} +function updateZoomScaleDiv(scaleDiv, zoomedImage, originalWidth, originalHeight) { + const width = zoomedImage.offsetWidth; + const height = zoomedImage.offsetHeight; + let scalePercent = width / originalWidth * 100; + scaleDiv.innerText = `${width}\xD7${height} (${scalePercent.toFixed(1)}%)`; +} +function handleZoomMouseWheel(e, zoomedImage, originalWidth, originalHeight, scaleDiv) { + e.preventDefault(); + const mouseX = e.clientX; + const mouseY = e.clientY; + const scale = e.deltaY > 0 ? 0.95 : 1.05; + const newWidth = scale * zoomedImage.offsetWidth; + const newHeight = scale * zoomedImage.offsetHeight; + const newLeft = mouseX - (mouseX - zoomedImage.offsetLeft) * scale; + const newTop = mouseY - (mouseY - zoomedImage.offsetTop) * scale; + zoomedImage.style.width = `${newWidth}px`; + zoomedImage.style.height = `${newHeight}px`; + zoomedImage.style.left = `${newLeft}px`; + zoomedImage.style.top = `${newTop}px`; + updateZoomScaleDiv(scaleDiv, zoomedImage, originalWidth, originalHeight); +} +function handleZoomContextMenu(e, zoomedImage, originalWidth, originalHeight, scaleDiv) { + e.preventDefault(); + zoomedImage.style.width = `${originalWidth}px`; + zoomedImage.style.height = `${originalHeight}px`; + zoomedImage.style.left = `50%`; + zoomedImage.style.top = `50%`; + updateZoomScaleDiv(scaleDiv, zoomedImage, originalWidth, originalHeight); +} +function adaptivelyDisplayImage(zoomedImage, originalWidth, originalHeight, adaptive_ratio) { + zoomedImage.style.left = `50%`; + zoomedImage.style.top = `50%`; + let screenRatio = adaptive_ratio; + let screenWidth = window.innerWidth; + let screenHeight = window.innerHeight; + if (originalWidth > screenWidth || originalHeight > screenHeight) { + if (originalWidth / screenWidth > originalHeight / screenHeight) { + zoomedImage.style.width = `${screenWidth * screenRatio}px`; + zoomedImage.style.height = "auto"; + } else { + zoomedImage.style.height = `${screenHeight * screenRatio}px`; + zoomedImage.style.width = "auto"; + } + } else { + zoomedImage.style.width = `${originalWidth}px`; + zoomedImage.style.height = `${originalHeight}px`; + } +} +function handleZoomDragStart(e, zoomedImage) { + e.preventDefault(); + let clickX = e.clientX; + let clickY = e.clientY; + const updatePosition = (moveEvt) => { + let moveX = moveEvt.clientX - clickX; + let moveY = moveEvt.clientY - clickY; + zoomedImage.style.left = `${zoomedImage.offsetLeft + moveX}px`; + zoomedImage.style.top = `${zoomedImage.offsetTop + moveY}px`; + clickX = moveEvt.clientX; + clickY = moveEvt.clientY; + }; + document.addEventListener("mousemove", updatePosition); + document.addEventListener("mouseup", function listener() { + document.removeEventListener("mousemove", updatePosition); + document.removeEventListener("mouseup", listener); + }, { once: true }); +} +function getExcalidrawBaseName(target) { + let target_name = target.getAttribute("filesource"); + let file_base_name = target_name; + if (file_base_name.includes("/")) { + let temp_arr = file_base_name.split("/"); + file_base_name = temp_arr[temp_arr.length - 1]; + } else if (file_base_name.includes("\\")) { + let temp_arr = file_base_name.split("\\"); + file_base_name = temp_arr[temp_arr.length - 1]; + } + file_base_name = file_base_name.endsWith(".md") ? file_base_name.substring(0, file_base_name.length - 3) : file_base_name; + return file_base_name; +} +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL21haW4udHMiLCAic3JjL29wdGlvbnMvZGVsZWxlQWxsQXR0YWNoc0luVGhlTm90ZS50cyIsICJzcmMvdXRpbC50cyIsICJzcmMvdXRpbHMvZGVsZXRlRmlsZS50cyIsICJzcmMvY29uZmlnL2FkZENvbW1hbmQtY29uZmlnLnRzIiwgInNyYy9zZXR0aW5ncy50cyIsICJzcmMvdXRpbHMvaGFuZGxlckV2ZW50LnRzIiwgInNyYy9tb2RhbHMvZGVsZXRpb25Qcm9tcHQudHMiLCAic3JjL2hlbHBlcnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IE1lbnUsIE1lbnVJdGVtLCBOb3RpY2UsIFBsdWdpbiwgVEZpbGUsIE1hcmtkb3duVmlldywgUGxhdGZvcm0sIEVkaXRvciB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgYWRkQ29tbWFuZCB9IGZyb20gXCIuL2NvbmZpZy9hZGRDb21tYW5kLWNvbmZpZ1wiO1xuaW1wb3J0IHsgQXR0YWNoRmxvd1NldHRpbmdzVGFiIH0gZnJvbSBcIi4vc2V0dGluZ3NcIjtcbmltcG9ydCB7IEF0dGFjaEZsb3dTZXR0aW5ncywgREVGQVVMVF9TRVRUSU5HUyB9IGZyb20gXCIuL3NldHRpbmdzXCI7XG5pbXBvcnQgKiBhcyBVdGlsIGZyb20gXCIuL3V0aWxcIjtcbmltcG9ydCB7IHByaW50LCBzZXREZWJ1ZywgZGVsZXRlQ3VyVGFyZ2V0TGluayB9IGZyb20gJy4vdXRpbCdcbmltcG9ydCB7IGdldE1vdXNlRXZlbnRUYXJnZXQgfSBmcm9tIFwiLi91dGlscy9oYW5kbGVyRXZlbnRcIjtcbmltcG9ydCB7IERlbGV0ZUFsbExvZ3NNb2RhbCB9IGZyb20gXCIuL21vZGFscy9kZWxldGlvblByb21wdFwiO1xuaW1wb3J0IHsgRWRpdG9yVmlldywga2V5bWFwLCBWaWV3VXBkYXRlIH0gZnJvbSAnQGNvZGVtaXJyb3Ivdmlldyc7XG5pbXBvcnQge1xuXHRFbGVjdHJvbldpbmRvdywgRmlsZVN5c3RlbUFkYXB0ZXJXaXRoSW50ZXJuYWxBcGksXG5cdGxvYWRJbWFnZUJsb2IsIEFwcFdpdGhEZXNrdG9wSW50ZXJuYWxBcGksIEVkaXRvckludGVybmFsQXBpLCBvbkVsZW1lbnRcbn0gZnJvbSBcIi4vaGVscGVyc1wiXG5cbmludGVyZmFjZSBNYXRjaGVkTGlua0luTGluZSB7XG5cdG9sZF9saW5rOiBzdHJpbmcsXG5cdG5ld19saW5rOiBzdHJpbmcsXG5cdGZyb21fY2g6IG51bWJlcixcblx0dG9fY2g6IG51bWJlclxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBdHRhY2hGbG93UGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcblx0c2V0dGluZ3M6IEF0dGFjaEZsb3dTZXR0aW5ncztcblx0ZWRnZVNpemU6IG51bWJlcjtcblxuXHRhc3luYyBvbmxvYWQoKSB7XG5cdFx0Y29uc29sZS5sb2coXCJBdHRhY2hGbG93IHBsdWdpbiBsb2FkZWQuLi5cIik7XG5cdFx0dGhpcy5lZGdlU2l6ZSA9IDIwO1xuXG5cdFx0dGhpcy5hZGRTZXR0aW5nVGFiKG5ldyBBdHRhY2hGbG93U2V0dGluZ3NUYWIodGhpcy5hcHAsIHRoaXMpKTtcblxuXHRcdGF3YWl0IHRoaXMubG9hZFNldHRpbmdzKCk7XG5cdFx0dGhpcy5yZWdpc3RlckRvY3VtZW50KGRvY3VtZW50KTtcblx0XHRhcHAud29ya3NwYWNlLm9uKFwid2luZG93LW9wZW5cIiwgKHdvcmtzcGFjZVdpbmRvdywgd2luZG93KSA9PiB7XG5cdFx0XHR0aGlzLnJlZ2lzdGVyRG9jdW1lbnQod2luZG93LmRvY3VtZW50KTtcblx0XHR9KTtcblx0XHQvLyBhZGQgY29udGV4dG1lbnUgb24gZmlsZSBjb250ZXh0XG5cdFx0dGhpcy5yZWdpc3RlckV2ZW50KFxuXHRcdFx0dGhpcy5hcHAud29ya3NwYWNlLm9uKFwiZmlsZS1tZW51XCIsIChtZW51LCBmaWxlKSA9PiB7XG5cdFx0XHRcdGlmIChmaWxlIGluc3RhbmNlb2YgVEZpbGUpIHtcblx0XHRcdFx0XHRpZiAoIWZpbGUucGF0aC5lbmRzV2l0aChcIi5tZFwiKSkgcmV0dXJuO1xuXHRcdFx0XHRcdGNvbnN0IGFkZE1lbnVJdGVtID0gKGl0ZW06IE1lbnVJdGVtKSA9PiB7XG5cdFx0XHRcdFx0XHRpdGVtLnNldFRpdGxlKFwiRGVsZXRlIGZpbGUgYW5kIGl0cyBhdHRhY2htZW50c1wiKVxuXHRcdFx0XHRcdFx0XHQuc2V0SWNvbihcInRyYXNoLTJcIilcblx0XHRcdFx0XHRcdFx0LnNldFNlY3Rpb24oXCJkYW5nZXJcIik7XG5cdFx0XHRcdFx0XHRpdGVtLm9uQ2xpY2soYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBtb2RhbCA9IG5ldyBEZWxldGVBbGxMb2dzTW9kYWwoZmlsZSwgdGhpcyk7XG5cdFx0XHRcdFx0XHRcdG1vZGFsLm9wZW4oKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0bWVudS5hZGRJdGVtKGFkZE1lbnVJdGVtKTtcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHQpO1xuXHRcdC8vIHJlZ2lzdGVyIGFsbCBjb21tYW5kcyBpbiBhZGRDb21tYW5kIGZ1bmN0aW9uXG5cdFx0YWRkQ29tbWFuZCh0aGlzKTtcblxuXHRcdC8vIFx1NEUzQlx1NTkwNFx1NzQwNlx1NTFGRFx1NjU3MFxuXHRcdHRoaXMucmVnaXN0ZXJEb21FdmVudChkb2N1bWVudCwgJ2NsaWNrJywgYXN5bmMgKGV2dDogTW91c2VFdmVudCkgPT4ge1xuXHRcdFx0aWYgKCF0aGlzLnNldHRpbmdzLmNsaWNrVmlldykgcmV0dXJuO1xuXHRcdFx0Y29uc3QgdGFyZ2V0ID0gZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcblx0XHRcdGlmICh0YXJnZXQudGFnTmFtZSAhPT0gJ0lNRycpIHtcblx0XHRcdFx0dGhpcy5yZW1vdmVab29tZWRJbWFnZSgpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCByZWN0ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHRcdFx0Y29uc3QgaW1hZ2VDZW50ZXIgPSByZWN0LmxlZnQgKyByZWN0LndpZHRoIC8gMjtcblx0XHRcdGlmIChldnQuY2xpZW50WCA8PSBpbWFnZUNlbnRlciB8fCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWYtem9vbWVkLWltYWdlJykpIHJldHVybjtcblx0XHRcdGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0Y29uc3QgbWFzayA9IGNyZWF0ZVpvb21NYXNrKCk7XG5cdFx0XHRjb25zdCB7IHpvb21lZEltYWdlLCBvcmlnaW5hbFdpZHRoLCBvcmlnaW5hbEhlaWdodCB9ID0gYXdhaXQgY3JlYXRlWm9vbWVkSW1hZ2UoKHRhcmdldCBhcyBIVE1MSW1hZ2VFbGVtZW50KS5zcmMsIHRoaXMuc2V0dGluZ3MuYWRhcHRpdmVSYXRpbyk7XG5cdFx0XHRjb25zdCBzY2FsZURpdiA9IGNyZWF0ZVpvb21TY2FsZURpdih6b29tZWRJbWFnZSwgb3JpZ2luYWxXaWR0aCwgb3JpZ2luYWxIZWlnaHQpO1xuXHRcdFx0em9vbWVkSW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCAoZSkgPT4gaGFuZGxlWm9vbU1vdXNlV2hlZWwoZSwgem9vbWVkSW1hZ2UsIG9yaWdpbmFsV2lkdGgsIG9yaWdpbmFsSGVpZ2h0LCBzY2FsZURpdikpO1xuXHRcdFx0em9vbWVkSW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcignY29udGV4dG1lbnUnLCAoZSkgPT4gaGFuZGxlWm9vbUNvbnRleHRNZW51KGUsIHpvb21lZEltYWdlLCBvcmlnaW5hbFdpZHRoLCBvcmlnaW5hbEhlaWdodCwgc2NhbGVEaXYpKTtcblx0XHRcdHpvb21lZEltYWdlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIChlKSA9PiBoYW5kbGVab29tRHJhZ1N0YXJ0KGUsIHpvb21lZEltYWdlKSk7XG5cdFx0XHR6b29tZWRJbWFnZS5hZGRFdmVudExpc3RlbmVyKCdkYmxjbGljaycsIChlKSA9PiB7XG5cdFx0XHRcdGFkYXB0aXZlbHlEaXNwbGF5SW1hZ2Uoem9vbWVkSW1hZ2UsIG9yaWdpbmFsV2lkdGgsIG9yaWdpbmFsSGVpZ2h0LCB0aGlzLnNldHRpbmdzLmFkYXB0aXZlUmF0aW8pO1xuXHRcdFx0XHR1cGRhdGVab29tU2NhbGVEaXYoc2NhbGVEaXYsIHpvb21lZEltYWdlLCBvcmlnaW5hbFdpZHRoLCBvcmlnaW5hbEhlaWdodCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdHRoaXMucmVnaXN0ZXJEb21FdmVudChkb2N1bWVudCwgJ2tleWRvd24nLCAoZXZ0OiBLZXlib2FyZEV2ZW50KSA9PiB7XG5cdFx0XHRpZiAoZXZ0LmtleSA9PT0gJ0VzY2FwZScpIHtcblx0XHRcdFx0dGhpcy5yZW1vdmVab29tZWRJbWFnZSgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0c2V0RGVidWcodGhpcy5zZXR0aW5ncy5kZWJ1Zyk7XG5cdH1cblxuXHRvbnVubG9hZCgpIHtcblx0XHRjb25zb2xlLmxvZyhcIkF0dGFjaEZsb3cgcGx1Z2luIHVubG9hZGVkLi4uXCIpO1xuXHR9XG5cblx0cmVtb3ZlWm9vbWVkSW1hZ2UoKSB7XG5cdFx0aWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZi16b29tZWQtaW1hZ2UnKSkge1xuXHRcdFx0Y29uc3Qgem9vbWVkSW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWYtem9vbWVkLWltYWdlJyk7XG5cdFx0XHRpZiAoem9vbWVkSW1hZ2UpIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoem9vbWVkSW1hZ2UpO1xuXHRcdFx0Y29uc3Qgc2NhbGVEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWYtc2NhbGUtZGl2Jyk7XG5cdFx0XHRpZiAoc2NhbGVEaXYpIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoc2NhbGVEaXYpO1xuXHRcdFx0Y29uc3QgbWFzayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZi1tYXNrJyk7XG5cdFx0XHRpZiAobWFzaykgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChtYXNrKTtcblx0XHR9XG5cdH1cblxuXHRyZWdpc3RlckRvY3VtZW50KGRvY3VtZW50OiBEb2N1bWVudCkge1xuXHRcdHRoaXMucmVnaXN0ZXIoXG5cdFx0XHRvbkVsZW1lbnQoXG5cdFx0XHRcdGRvY3VtZW50LFxuXHRcdFx0XHRcImNvbnRleHRtZW51XCIgYXMga2V5b2YgSFRNTEVsZW1lbnRFdmVudE1hcCxcblx0XHRcdFx0XCJpbWcsIGlmcmFtZSwgdmlkZW8sIGRpdi5maWxlLWVtYmVkLXRpdGxlLCBhdWRpb1wiLFxuXHRcdFx0XHR0aGlzLm9uUmlnaHRDbGlja01lbnUuYmluZCh0aGlzKVxuXHRcdFx0KVxuXHRcdCk7XG5cblx0XHQvLyBcdTRFRTVcdTRFMEJcdTRFMDlcdTRFMkFcdTRFOEJcdTRFRjZcdTY2MkZcdTRFM0FcdTRFODZcdTVCOUVcdTczQjBcdTYyRDZcdTYyRkRcdTY1MzlcdTUzRDhcdTU2RkVcdTcyNDdcdTU5MjdcdTVDMEZcdTc2ODRcdTUyOUZcdTgwRkRcdUZGMENcdTRGRUVcdTY1MzlcdTgxRUEgaHR0cHM6Ly9naXRodWIuY29tL3hSeXVsL29ic2lkaWFuLWltYWdlLWNvbnZlcnRlclxuXHRcdC8vIFx1OTY0NFx1NEUwQVx1NTE3NiBNSVQgTGljZW5zZVxuXHRcdC8vIE1JVCBMaWNlbnNlXG5cdFx0Ly8gQ29weXJpZ2h0IChjKSAyMDIzIHhSeXVsXG5cdFx0Ly8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuXHRcdC8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcblx0XHQvLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG5cdFx0Ly8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuXHRcdC8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuXHRcdC8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cblx0XHQvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcblx0XHQvLyBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG5cdFx0Ly8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuXHRcdC8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuXHRcdC8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuXHRcdC8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcblx0XHQvLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuXHRcdC8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG5cdFx0Ly8gU09GVFdBUkUuXG5cblx0XHR0aGlzLnJlZ2lzdGVyKFxuXHRcdFx0b25FbGVtZW50KFxuXHRcdFx0XHRkb2N1bWVudCxcblx0XHRcdFx0XCJtb3VzZWRvd25cIixcblx0XHRcdFx0XCJpbWdcIixcblx0XHRcdFx0KGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0aWYgKCF0aGlzLnNldHRpbmdzLmRyYWdSZXNpemUpIHJldHVybjtcblx0XHRcdFx0XHRjb25zdCBjdXJyZW50TWQgPSBhcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKSBhcyBURmlsZTtcblx0XHRcdFx0XHRpZiAoY3VycmVudE1kLm5hbWUuZW5kc1dpdGgoJy5jYW52YXMnKSkgcmV0dXJuO1xuXHRcdFx0XHRcdGNvbnN0IGluUHJldmlldzogYm9vbGVhbiA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk/LmdldE1vZGUoKSA9PSBcInByZXZpZXdcIjtcblx0XHRcdFx0XHRpZiAoaW5QcmV2aWV3KSByZXR1cm47XG5cblx0XHRcdFx0XHRpZiAoZXZlbnQuYnV0dG9uID09PSAwKSB7XG5cdFx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb25zdCBpbWcgPSBldmVudC50YXJnZXQgYXMgSFRNTEltYWdlRWxlbWVudDtcblx0XHRcdFx0XHRpZiAoaW1nLmlkID09ICdhZi16b29tZWQtaW1hZ2UnKSByZXR1cm47XG5cblx0XHRcdFx0XHRjb25zdCBlZGl0b3IgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlVmlld09mVHlwZShNYXJrZG93blZpZXcpPy5lZGl0b3I7XG5cdFx0XHRcdFx0Ly8gIEB0cy1leHBlY3QtZXJyb3IsIG5vdCB0eXBlZFxuXHRcdFx0XHRcdGNvbnN0IGVkaXRvclZpZXcgPSBlZGl0b3IuY20gYXMgRWRpdG9yVmlldztcblx0XHRcdFx0XHRjb25zdCB0YXJnZXRfcG9zID0gZWRpdG9yVmlldy5wb3NBdERPTShpbWcpO1xuXHRcdFx0XHRcdGxldCB0YXJnZXRfbGluZSA9IGVkaXRvclZpZXcuc3RhdGUuZG9jLmxpbmVBdCh0YXJnZXRfcG9zKTtcblxuXHRcdFx0XHRcdGNvbnN0IGluVGFibGU6IGJvb2xlYW4gPSBpbWcuY2xvc2VzdCgndGFibGUnKSAhPSBudWxsO1xuXHRcdFx0XHRcdGNvbnN0IGluQ2FsbG91dDogYm9vbGVhbiA9IGltZy5jbG9zZXN0KCcuY2FsbG91dCcpICE9IG51bGw7XG5cdFx0XHRcdFx0Y29uc3QgaXNFeGNhbGlkcmF3ID0gaW1nLmNsYXNzTGlzdC5jb250YWlucygnZXhjYWxpZHJhdy1lbWJlZGRlZC1pbWcnKTtcblx0XHRcdFx0XHRwcmludCgnSW5UYWJsZScsIGluVGFibGUpXG5cdFx0XHRcdFx0cHJpbnQoJ1RhcmdldCBFbGVtZW50JywgaW1nKVxuXG5cdFx0XHRcdFx0Ly8gcHJpbnQoXCJpbWcucGFyZW50XCIsIGltZy5wYXJlbnRFbGVtZW50P2ltZy5wYXJlbnRFbGVtZW50OidOVUxMJylcblxuXHRcdFx0XHRcdC8vIFx1NUI5QVx1NEU0OVx1NEU4Qlx1NEVGNlx1NTkwNFx1NzQwNlx1NTFGRFx1NjU3MFxuXHRcdFx0XHRcdGxldCBwcmV2ZW50RXZlbnQgPSBmdW5jdGlvbihldmVudDogTW91c2VFdmVudCkge1xuXHRcdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHRjb25zdCByZWN0ID0gaW1nLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHRcdFx0XHRcdGNvbnN0IHggPSBldmVudC5jbGllbnRYIC0gcmVjdC5sZWZ0O1xuXHRcdFx0XHRcdGNvbnN0IHkgPSBldmVudC5jbGllbnRZIC0gcmVjdC50b3A7XG5cdFx0XHRcdFx0Y29uc3QgZWRnZVNpemUgPSB0aGlzLmVkZ2VTaXplOyAvLyBzaXplIG9mIHRoZSBlZGdlIGluIHBpeGVsc1xuXHRcdFx0XHRcdGlmICh4IDwgZWRnZVNpemUgfHwgeSA8IGVkZ2VTaXplIHx8IHggPiByZWN0LndpZHRoIC0gZWRnZVNpemUgfHwgeSA+IHJlY3QuaGVpZ2h0IC0gZWRnZVNpemUpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHN0YXJ0WCA9IGV2ZW50LmNsaWVudFg7XG5cdFx0XHRcdFx0XHRjb25zdCBzdGFydFkgPSBldmVudC5jbGllbnRZO1xuXHRcdFx0XHRcdFx0Y29uc3Qgc3RhcnRXaWR0aCA9IGltZy5jbGllbnRXaWR0aDtcblx0XHRcdFx0XHRcdGNvbnN0IHN0YXJ0SGVpZ2h0ID0gaW1nLmNsaWVudEhlaWdodDtcblx0XHRcdFx0XHRcdGxldCBsYXN0VXBkYXRlWCA9IHN0YXJ0WDtcblx0XHRcdFx0XHRcdGxldCBsYXN0VXBkYXRlWSA9IHN0YXJ0WTtcblxuXHRcdFx0XHRcdFx0bGV0IGxhc3RVcGRhdGUgPSAxO1xuXHRcdFx0XHRcdFx0bGV0IHVwZGF0ZWRXaWR0aCA9IHN0YXJ0V2lkdGg7XG5cdFx0XHRcdFx0XHRsZXQgbGFzdE1vdmVUaW1lID0gRGF0ZS5ub3coKTtcblx0XHRcdFx0XHRcdGNvbnN0IG9uTW91c2VNb3ZlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRcdC8vIHRoaXMuQWxsb3dab29tID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGltZy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHByZXZlbnRFdmVudCk7XG5cdFx0XHRcdFx0XHRcdC8vIGltZy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBwcmV2ZW50RXZlbnQpO1xuXHRcdFx0XHRcdFx0XHQvLyBpbWcuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdXQnLCBwcmV2ZW50RXZlbnQpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBjdXJyZW50WCA9IGV2ZW50LmNsaWVudFg7XG5cdFx0XHRcdFx0XHRcdGxhc3RVcGRhdGUgPSBjdXJyZW50WCAtIGxhc3RVcGRhdGVYID09IDA/bGFzdFVwZGF0ZTpjdXJyZW50WCAtIGxhc3RVcGRhdGVYO1xuXHRcdFx0XHRcdFx0XHQvLyBwcmludCgnbGFzdFVwZGF0ZScsIGxhc3RVcGRhdGUpXG5cdFx0XHRcdFx0XHRcdGxldCBuZXdXaWR0aCA9IHN0YXJ0V2lkdGggKyAoY3VycmVudFggLSBzdGFydFgpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBhc3BlY3RSYXRpbyA9IHN0YXJ0V2lkdGggLyBzdGFydEhlaWdodDtcblxuXHRcdFx0XHRcdFx0XHQvLyBFbnN1cmUgdGhlIGltYWdlIGRvZXNuJ3QgZ2V0IHRvbyBzbWFsbFxuXHRcdFx0XHRcdFx0XHRuZXdXaWR0aCA9IE1hdGgubWF4KG5ld1dpZHRoLCAxMDApO1xuXG5cdFx0XHRcdFx0XHRcdGxldCBuZXdIZWlnaHQgPSBuZXdXaWR0aCAvIGFzcGVjdFJhdGlvO1xuXHRcdFx0XHRcdFx0XHQvLyBSb3VuZCB0aGUgdmFsdWVzIHRvIHRoZSBuZWFyZXN0IHdob2xlIG51bWJlclxuXHRcdFx0XHRcdFx0XHRuZXdXaWR0aCA9IE1hdGgucm91bmQobmV3V2lkdGgpO1xuXHRcdFx0XHRcdFx0XHRuZXdIZWlnaHQgPSBNYXRoLnJvdW5kKG5ld0hlaWdodCk7XG5cdFx0XHRcdFx0XHRcdHVwZGF0ZWRXaWR0aCA9IG5ld1dpZHRoO1xuXG5cdFx0XHRcdFx0XHRcdC8vIEFwcGx5IHRoZSBuZXcgZGltZW5zaW9ucyB0byB0aGUgaW1hZ2Ugb3IgdmlkZW9cblx0XHRcdFx0XHRcdFx0aWYgKGltZyBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnQpIHtcblx0XHRcdFx0XHRcdFx0XHRpbWcuY2xhc3NMaXN0LmFkZCgnaW1hZ2UtaW4tZHJhZy1yZXNpemUnKVxuXHRcdFx0XHRcdFx0XHRcdGltZy5zdHlsZS53aWR0aCA9IGAke25ld1dpZHRofXB4YDtcblx0XHRcdFx0XHRcdFx0XHQvLyBpbWcuc3R5bGUuaGVpZ2h0ID0gYCR7bmV3SGVpZ2h0fXB4YDtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cdFx0XHRcdFx0XHRcdGlmIChub3cgLSBsYXN0TW92ZVRpbWUgPCAxMDApIHJldHVybjsgLy8gT25seSBleGVjdXRlIG9uY2UgZXZlcnkgMTAwbXNcblx0XHRcdFx0XHRcdFx0bGFzdE1vdmVUaW1lID0gbm93O1xuXHRcdFx0XHRcdFx0XHQvLyB1cGRhdGUgaW1hZ2UgbGlua1xuXHRcdFx0XHRcdFx0XHR0aGlzLnVwZGF0ZUltYWdlTGlua1dpdGhOZXdTaXplKGltZywgdGFyZ2V0X3BvcywgbmV3V2lkdGgsIG5ld0hlaWdodCk7XG5cdFx0XHRcdFx0XHRcdC8vIFVwZGF0ZSB0aGUgbGFzdCB1cGRhdGUgY29vcmRpbmF0ZXNcblx0XHRcdFx0XHRcdFx0bGFzdFVwZGF0ZVggPSBldmVudC5jbGllbnRYO1xuXHRcdFx0XHRcdFx0XHRsYXN0VXBkYXRlWSA9IGV2ZW50LmNsaWVudFk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGNvbnN0IGFsbG93T3RoZXJFdmVudCA9ICgpID0+IHtcblx0XHRcdFx0XHRcdFx0aW1nLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgcHJldmVudEV2ZW50KTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Y29uc3Qgb25Nb3VzZVVwID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRcdHNldFRpbWVvdXQoYWxsb3dPdGhlckV2ZW50LCAxMDApO1xuXHRcdFx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG5cdFx0XHRcdFx0XHRcdGltZy5jbGFzc0xpc3QucmVtb3ZlKCdpbWFnZS1pbi1kcmFnLXJlc2l6ZScsICdpbWFnZS1yZWFkeS1jbGljay12aWV3Jylcblx0XHRcdFx0XHRcdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCBvbk1vdXNlTW92ZSk7XG5cdFx0XHRcdFx0XHRcdGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIG9uTW91c2VVcCk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gXHU5MDc1XHU1RkFBXHU2NzAwXHU1QzBGXHU1MjNCXHU1RUE2XG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzLnNldHRpbmdzLnJlc2l6ZUludGVydmFsID4gMSkge1xuXHRcdFx0XHRcdFx0XHRcdGxldCByZXNpemVfaW50ZXJ2YWwgPSB0aGlzLnNldHRpbmdzLnJlc2l6ZUludGVydmFsO1xuXHRcdFx0XHRcdFx0XHRcdGxldCB3aWR0aF9vZmZzZXQgPSBsYXN0VXBkYXRlPjA/cmVzaXplX2ludGVydmFsOjA7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHVwZGF0ZWRXaWR0aCVyZXNpemVfaW50ZXJ2YWwhPTApIHtcblx0XHRcdFx0XHRcdFx0XHRcdHVwZGF0ZWRXaWR0aCA9IE1hdGguZmxvb3IodXBkYXRlZFdpZHRoL3Jlc2l6ZV9pbnRlcnZhbCkqcmVzaXplX2ludGVydmFsK3dpZHRoX29mZnNldDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0aW1nLnN0eWxlLndpZHRoID0gYCR7dXBkYXRlZFdpZHRofXB4YDtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnVwZGF0ZUltYWdlTGlua1dpdGhOZXdTaXplKGltZywgdGFyZ2V0X3BvcywgdXBkYXRlZFdpZHRoLCAwKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIG9uTW91c2VNb3ZlKTtcblx0XHRcdFx0XHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIG9uTW91c2VVcCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHQpXG5cdFx0KVxuXHRcdHRoaXMucmVnaXN0ZXIoXG5cdFx0XHRvbkVsZW1lbnQoXG5cdFx0XHRcdGRvY3VtZW50LFxuXHRcdFx0XHRcIm1vdXNlb3ZlclwiLFxuXHRcdFx0XHRcImltZ1wiLFxuXHRcdFx0XHQoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcblx0XHRcdFx0XHRjb25zdCBjdXJyZW50TWQgPSBhcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKSBhcyBURmlsZTtcblx0XHRcdFx0XHRpZiAoY3VycmVudE1kLm5hbWUuZW5kc1dpdGgoJy5jYW52YXMnKSkgcmV0dXJuO1xuXHRcdFx0XHRcdGNvbnN0IGluUHJldmlldzogYm9vbGVhbiA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk/LmdldE1vZGUoKSA9PSBcInByZXZpZXdcIjtcblx0XHRcdFx0XHQvLyBpZiAoaW5QcmV2aWV3KSByZXR1cm47XG5cblx0XHRcdFx0XHRjb25zdCBpbWcgPSBldmVudC50YXJnZXQgYXMgSFRNTEltYWdlRWxlbWVudCB8IEhUTUxWaWRlb0VsZW1lbnQ7XG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0Y29uc3QgZWRnZVNpemUgPSB0aGlzLmVkZ2VTaXplOyAvLyBzaXplIG9mIHRoZSBlZGdlIGluIHBpeGVsc1xuXG5cdFx0XHRcdFx0aWYgKGltZy5pZCA9PSAnYWYtem9vbWVkLWltYWdlJykgcmV0dXJuO1xuXG5cdFx0XHRcdFx0Y29uc3QgaXNFeGNhbGlkcmF3ID0gaW1nLmNsYXNzTGlzdC5jb250YWlucygnZXhjYWxpZHJhdy1lbWJlZGRlZC1pbWcnKTtcblxuXHRcdFx0XHRcdC8vIFRocm90dGxlIG1vdXNlbW92ZSBldmVudHNcblx0XHRcdFx0XHRsZXQgbGFzdE1vdmUgPSAwO1xuXHRcdFx0XHRcdGNvbnN0IG1vdXNlT3ZlckhhbmRsZXIgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdGlmIChldmVudC5idXR0b25zICE9IDApIHJldHVybjtcblx0XHRcdFx0XHRcdGlmICghdGhpcy5zZXR0aW5ncy5kcmFnUmVzaXplKSByZXR1cm47XG5cdFx0XHRcdFx0XHRjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXHRcdFx0XHRcdFx0aWYgKG5vdyAtIGxhc3RNb3ZlIDwgMTAwKSByZXR1cm47IC8vIE9ubHkgZXhlY3V0ZSBvbmNlIGV2ZXJ5IDEwMG1zXG5cdFx0XHRcdFx0XHRsYXN0TW92ZSA9IG5vdztcblx0XHRcdFx0XHRcdGNvbnN0IHJlY3QgPSBpbWcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cdFx0XHRcdFx0XHRjb25zdCB4ID0gZXZlbnQuY2xpZW50WCAtIHJlY3QubGVmdDtcblx0XHRcdFx0XHRcdGNvbnN0IHkgPSBldmVudC5jbGllbnRZIC0gcmVjdC50b3A7XG5cblx0XHRcdFx0XHRcdGlmICgoeCA+PSByZWN0LndpZHRoIC0gZWRnZVNpemUgfHwgeCA8PSBlZGdlU2l6ZSkgfHwgKHkgPj0gcmVjdC5oZWlnaHQgLSBlZGdlU2l6ZSB8fCB5IDw9IGVkZ2VTaXplKSkge1xuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5kcmFnUmVzaXplICYmICFpblByZXZpZXcpe1xuXHRcdFx0XHRcdFx0XHRcdGltZy5jbGFzc0xpc3QucmVtb3ZlKCdpbWFnZS1yZWFkeS1jbGljay12aWV3Jylcblx0XHRcdFx0XHRcdFx0XHRpbWcuY2xhc3NMaXN0LmFkZCgnaW1hZ2UtcmVhZHktcmVzaXplJyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoaW5QcmV2aWV3ICYmIHRoaXMuc2V0dGluZ3MuY2xpY2tWaWV3ICYmIHggPiByZWN0LndpZHRoIC8gMikge1xuXHRcdFx0XHRcdFx0XHRcdGltZy5jbGFzc0xpc3QuYWRkKCdpbWFnZS1yZWFkeS1jbGljay12aWV3Jylcblx0XHRcdFx0XHRcdFx0XHRpbWcuY2xhc3NMaXN0LnJlbW92ZSgnaW1hZ2UtcmVhZHktcmVzaXplJyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2UgaWYgKHggPiByZWN0LndpZHRoIC8gMiAmJiB0aGlzLnNldHRpbmdzLmNsaWNrVmlldykge1xuXHRcdFx0XHRcdFx0XHRpbWcuY2xhc3NMaXN0LmFkZCgnaW1hZ2UtcmVhZHktY2xpY2stdmlldycpXG5cdFx0XHRcdFx0XHRcdGltZy5jbGFzc0xpc3QucmVtb3ZlKCdpbWFnZS1yZWFkeS1yZXNpemUnKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRcdGltZy5jbGFzc0xpc3QucmVtb3ZlKCdpbWFnZS1yZWFkeS1jbGljay12aWV3JywgJ2ltYWdlLXJlYWR5LXJlc2l6ZScpXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR0aGlzLnJlZ2lzdGVyRG9tRXZlbnQoaW1nLCAnbW91c2Vtb3ZlJywgbW91c2VPdmVySGFuZGxlcik7XG5cdFx0XHRcdH1cblx0XHRcdClcblx0XHQpO1xuXG5cdFx0dGhpcy5yZWdpc3Rlcihcblx0XHRcdG9uRWxlbWVudChcblx0XHRcdFx0ZG9jdW1lbnQsXG5cdFx0XHRcdFwibW91c2VvdXRcIixcblx0XHRcdFx0XCJpbWdcIixcblx0XHRcdFx0KGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0aWYgKCF0aGlzLnNldHRpbmdzLmRyYWdSZXNpemUpIHJldHVybjtcblx0XHRcdFx0XHRjb25zdCBjdXJyZW50TWQgPSBhcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKSBhcyBURmlsZTtcblx0XHRcdFx0XHRpZiAoY3VycmVudE1kLm5hbWUuZW5kc1dpdGgoJy5jYW52YXMnKSkgcmV0dXJuO1xuXHRcdFx0XHRcdGNvbnN0IGluUHJldmlldzogYm9vbGVhbiA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk/LmdldE1vZGUoKSA9PSBcInByZXZpZXdcIjtcblx0XHRcdFx0XHRpZiAoZXZlbnQuYnV0dG9ucyAhPSAwKSByZXR1cm47XG5cdFx0XHRcdFx0Y29uc3QgaW1nID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbWFnZUVsZW1lbnQgfCBIVE1MVmlkZW9FbGVtZW50O1xuXG5cdFx0XHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuY2xpY2tWaWV3IHx8IHRoaXMuc2V0dGluZ3MuZHJhZ1Jlc2l6ZSl7XG5cdFx0XHRcdFx0XHRpbWcuY2xhc3NMaXN0LnJlbW92ZSgnaW1hZ2UtcmVhZHktY2xpY2stdmlldycsICdpbWFnZS1yZWFkeS1yZXNpemUnKVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0KVxuXHRcdCk7XG5cblx0XHQvLyBcdTYyMTFcdTVCOUVcdTczQjBcdTc2ODRcdTU5MTZcdTkwRThcdTk0RkVcdTYzQTVcdTUzRjNcdTk1MkVcdTgzRENcdTUzNTVcblx0XHQvLyBcdTUxNzNcdTk1MkVcdTU3MjhcdTRFOEUgZWRpdG9yLmJsdXIoKVx1RkYwQ1x1OEZEOVx1NjgzN1x1NTNFRlx1NEVFNVx1OEJBOSBPYnNpZGlhbiBcdTU5MzFcdTUzQkJcdTcxMjZcdTcwQjlcdUZGMENcdTRFQ0VcdTgwMENcdTRFMERcdTRGMUFcdTg5RTZcdTUzRDEgT2JzaWRpYW4gXHU3Njg0XHU1M0YzXHU5NTJFXHU4M0RDXHU1MzU1XG5cdFx0dGhpcy5yZWdpc3Rlcihcblx0XHRcdG9uRWxlbWVudChcblx0XHRcdFx0ZG9jdW1lbnQsXG5cdFx0XHRcdFwibW91c2Vkb3duXCIsXG5cdFx0XHRcdFwiaW1nXCIsXG5cdFx0XHRcdHRoaXMuZXh0ZXJuYWxJbWFnZUNvbnRleHRNZW51Q2FsbC5iaW5kKHRoaXMpXG5cdFx0XHQpXG5cdFx0KTtcblx0XHRcblx0fVxuXG5cdGFzeW5jIGxvYWRTZXR0aW5ncygpIHtcblx0XHR0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbihcblx0XHRcdHt9LFxuXHRcdFx0REVGQVVMVF9TRVRUSU5HUyxcblx0XHRcdGF3YWl0IHRoaXMubG9hZERhdGEoKVxuXHRcdCk7XG5cdH1cblxuXHRhc3luYyBzYXZlU2V0dGluZ3MoKSB7XG5cdFx0YXdhaXQgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcblx0fVxuXHRyZWdpc3RlckVzY2FwZUJ1dHRvbihtZW51OiBNZW51LCBkb2N1bWVudDogRG9jdW1lbnQgPSBhY3RpdmVEb2N1bWVudCkge1xuXHRcdG1lbnUucmVnaXN0ZXIoXG5cdFx0XHRvbkVsZW1lbnQoXG5cdFx0XHRcdGRvY3VtZW50LFxuXHRcdFx0XHRcImtleWRvd25cIiBhcyBrZXlvZiBIVE1MRWxlbWVudEV2ZW50TWFwLFxuXHRcdFx0XHRcIipcIixcblx0XHRcdFx0KGU6IEtleWJvYXJkRXZlbnQpID0+IHtcblx0XHRcdFx0XHRpZiAoZS5rZXkgPT09IFwiRXNjYXBlXCIpIHtcblx0XHRcdFx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHRtZW51LmhpZGUoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdClcblx0XHQpO1xuXHR9XG5cblx0dXBkYXRlSW1hZ2VMaW5rV2l0aE5ld1NpemUgPSAoaW1nOiBIVE1MSW1hZ2VFbGVtZW50LCB0YXJnZXRfcG9zOiBudW1iZXIsIG5ld1dpZHRoOiBudW1iZXIsIG5ld0hlaWdodDogbnVtYmVyKSA9PiB7XG5cdFx0Y29uc3QgYWN0aXZlVmlldyA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XG5cdFx0Y29uc3QgaW5UYWJsZTogYm9vbGVhbiA9IGltZy5jbG9zZXN0KCd0YWJsZScpICE9IG51bGw7XG5cdFx0Y29uc3QgaW5DYWxsb3V0OiBib29sZWFuID0gaW1nLmNsb3Nlc3QoJy5jYWxsb3V0JykgIT0gbnVsbDtcblx0XHRjb25zdCBpc0V4Y2FsaWRyYXcgPSBpbWcuY2xhc3NMaXN0LmNvbnRhaW5zKCdleGNhbGlkcmF3LWVtYmVkZGVkLWltZycpO1xuXHRcdGlmIChhY3RpdmVWaWV3KSB7XG5cdFx0XHRwcmludChcInVwZGF0ZSBuZXcgV2lkdGhcIiwgbmV3V2lkdGgpO1xuXHRcdFx0bGV0IGltYWdlTmFtZSA9IGltZy5nZXRBdHRyaWJ1dGUoJ3NyYycpO1xuXHRcdFx0aWYgKGltYWdlTmFtZT8uc3RhcnRzV2l0aCgnaHR0cCcpKSB7XG5cdFx0XHRcdHVwZGF0ZUV4dGVybmFsTGluayhhY3RpdmVWaWV3LCBpbWcsIHRhcmdldF9wb3MsIG5ld1dpZHRoLCBuZXdIZWlnaHQsIGluVGFibGUsIGluQ2FsbG91dCk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIGlmIChpc0V4Y2FsaWRyYXcpIHtcblx0XHRcdFx0bGV0IHRhcmdldF9uYW1lID0gaW1nLmdldEF0dHJpYnV0ZSgnZmlsZXNvdXJjZScpIGFzIHN0cmluZztcblx0XHRcdFx0bGV0IGRyYXdfYmFzZV9uYW1lID0gZ2V0RXhjYWxpZHJhd0Jhc2VOYW1lKGltZyBhcyBIVE1MSW1hZ2VFbGVtZW50KTtcblx0XHRcdFx0aW1nLnN0eWxlLm1heFdpZHRoID0gJ25vbmUnO1xuXHRcdFx0XHR1cGRhdGVJbnRlcm5hbExpbmsoYWN0aXZlVmlldywgaW1nLCB0YXJnZXRfcG9zLCBkcmF3X2Jhc2VfbmFtZSwgbmV3V2lkdGgsIG5ld0hlaWdodCwgaW5UYWJsZSwgaW5DYWxsb3V0KTtcblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRpbWFnZU5hbWUgPSBpbWcuY2xvc2VzdCgnLmludGVybmFsLWVtYmVkJyk/LmdldEF0dHJpYnV0ZSgnc3JjJykgYXMgc3RyaW5nO1xuXHRcdFx0XHR1cGRhdGVJbnRlcm5hbExpbmsoYWN0aXZlVmlldywgaW1nLCB0YXJnZXRfcG9zLCBpbWFnZU5hbWUsIG5ld1dpZHRoLCBuZXdIZWlnaHQsIGluVGFibGUsIGluQ2FsbG91dCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0ZXh0ZXJuYWxJbWFnZUNvbnRleHRNZW51Q2FsbChldmVudDogTW91c2VFdmVudCkge1xuXHRcdGNvbnN0IGltZyA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW1hZ2VFbGVtZW50O1xuXHRcdGNvbnN0IGluVGFibGU6IGJvb2xlYW4gPSBpbWcuY2xvc2VzdCgndGFibGUnKSAhPSBudWxsO1xuXHRcdGNvbnN0IGluQ2FsbG91dDogYm9vbGVhbiA9IGltZy5jbG9zZXN0KCcuY2FsbG91dCcpICE9IG51bGw7XG5cdFx0aWYgKGltZy5pZCA9PSAnYWYtem9vbWVkLWltYWdlJykgcmV0dXJuO1xuXHRcdGlmICghaW1nLnNyYy5zdGFydHNXaXRoKCdodHRwJykpIHJldHVybjtcblx0XHRpZiAoZXZlbnQuYnV0dG9uICE9IDIpIHJldHVybjtcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk/LmVkaXRvcj8uYmx1cigpO1xuXHRcdGltZy5jbGFzc0xpc3QucmVtb3ZlKCdpbWFnZS1yZWFkeS1jbGljay12aWV3JywgJ2ltYWdlLXJlYWR5LXJlc2l6ZScpO1xuXHRcdGNvbnN0IG1lbnUgPSBuZXcgTWVudSgpO1xuXHRcdGNvbnN0IGluUHJldmlldyA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk/LmdldE1vZGUoKSA9PSBcInByZXZpZXdcIjtcblx0XHRpZiAoaW5QcmV2aWV3KSB7XG5cdFx0XHR0aGlzLmFkZEV4dGVybmFsSW1hZ2VNZW51UHJldmlld01vZGUobWVudSwgaW1nKTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHR0aGlzLmFkZEV4dGVybmFsSW1hZ2VNZW51U291cmNlTW9kZShtZW51LCBpbWcsIGluVGFibGUsIGluQ2FsbG91dCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5yZWdpc3RlckVzY2FwZUJ1dHRvbihtZW51KTtcblxuXHRcdGxldCBvZmZzZXQgPSAwO1xuXHRcdGlmICghaW5QcmV2aWV3ICYmIChpblRhYmxlIHx8IGluQ2FsbG91dCkpIG9mZnNldCA9IC0xMzg7XG5cdFx0bWVudS5zaG93QXRQb3NpdGlvbih7IHg6IGV2ZW50LnBhZ2VYLCB5OiBldmVudC5wYWdlWSArIG9mZnNldCB9KTtcblxuXHRcdHRoaXMuYXBwLndvcmtzcGFjZS50cmlnZ2VyKFwiQXR0YWNoRmxvdzpjb250ZXh0bWVudVwiLCBtZW51KTtcblx0fVxuXG5cblx0LyoqXG5cdCAqIFx1OEJCRVx1N0Y2RVx1ODNEQ1x1NTM1NVx1NjMwOVx1OTRBRVx1RkYwQ1x1NUU3Nlx1OEJCRVx1N0Y2RVx1NzBCOVx1NTFGQlx1NEU4Qlx1NEVGNlxuXHQgKlxuXHQgKiBAcGFyYW0gbWVudVxuXHQgKiBAcGFyYW0gRmlsZUJhc2VOYW1lXG5cdCAqIEBwYXJhbSBjdXJyZW50TWRcblx0ICovXG5cdGFkZE1lbnVFeHRlbmRlZFNvdXJjZU1vZGUgPSAobWVudTogTWVudSwgRmlsZUJhc2VOYW1lOiBzdHJpbmcsIGN1cnJlbnRNZDogVEZpbGUsIHRhcmdldF90eXBlOiBzdHJpbmcsIHRhcmdldF9wb3M6IG51bWJlciwgaW5UYWJsZTogYm9vbGVhbiwgaW5DYWxsb3V0OiBib29sZWFuKSA9PiB7XG5cdFx0dGhpcy5hZGRNZW51RXh0ZW5kZWRQcmV2aWV3TW9kZShtZW51LCBGaWxlQmFzZU5hbWUsIGN1cnJlbnRNZCk7XG5cdFx0bWVudS5hZGRJdGVtKChpdGVtOiBNZW51SXRlbSkgPT5cblx0XHRcdGl0ZW1cblx0XHRcdFx0LnNldEljb24oXCJwZW5jaWxcIilcblx0XHRcdFx0LnNldFRpdGxlKFwiUmVuYW1lXCIpXG5cdFx0XHRcdC5vbkNsaWNrKGFzeW5jICgpID0+IHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0cHJpbnQoXCJ0ZXN0IHJlbmFtZVwiKVxuXHRcdFx0XHRcdFx0VXRpbC5oYW5kbGVyUmVuYW1lRmlsZShGaWxlQmFzZU5hbWUsIGN1cnJlbnRNZCwgdGhpcyk7XG5cdFx0XHRcdFx0fSBjYXRjaCB7XG5cdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwiRXJyb3IsIGNvdWxkIG5vdCByZW5hbWUgdGhlIGZpbGUhXCIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHQpXG5cblx0XHRpZiAodGhpcy5zZXR0aW5ncy5tb3ZlRmlsZU1lbnUpe1xuXHRcdFx0bWVudS5hZGRJdGVtKChpdGVtOiBNZW51SXRlbSkgPT5cblx0XHRcdFx0aXRlbVxuXHRcdFx0XHRcdC5zZXRJY29uKFwiZm9sZGVyLXRyZWVcIilcblx0XHRcdFx0XHQuc2V0VGl0bGUoXCJNb3ZlIGZpbGUgdG8uLi5cIilcblx0XHRcdFx0XHQub25DbGljayhhc3luYyAoKSA9PiB7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRVdGlsLmhhbmRsZXJNb3ZlRmlsZShGaWxlQmFzZU5hbWUsIGN1cnJlbnRNZCwgdGhpcyk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIkVycm9yLCBjb3VsZCBub3QgTW92ZSB0aGUgZmlsZSFcIik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSlcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0bWVudS5hZGRJdGVtKChpdGVtOiBNZW51SXRlbSkgPT5cblx0XHRcdGl0ZW1cblx0XHRcdFx0LnNldEljb24oXCJ0cmFzaC0yXCIpXG5cdFx0XHRcdC5zZXRUaXRsZShcIkNsZWFyIGZpbGUgYW5kIGFzc29jaWF0ZWQgbGlua1wiKVxuXHRcdFx0XHQvLyAuc2V0U2VjdGlvbihcImF0dGFjaC1mbG93XCIpXG5cdFx0XHRcdC5vbkNsaWNrKGFzeW5jICgpID0+IHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0Ly8gVXRpbC5oYW5kbGVyRGVsRmlsZShGaWxlQmFzZU5hbWUsIGN1cnJlbnRNZCwgdGhpcyk7XG5cdFx0XHRcdFx0XHRVdGlsLmhhbmRsZXJEZWxGaWxlTmV3KEZpbGVCYXNlTmFtZSwgY3VycmVudE1kLCB0aGlzLCB0YXJnZXRfdHlwZSwgdGFyZ2V0X3BvcywgaW5UYWJsZSwgaW5DYWxsb3V0KTtcblx0XHRcdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJFcnJvciwgY291bGQgbm90IGNsZWFyIHRoZSBmaWxlIVwiKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0KTtcblx0fTtcblxuXG5cdC8qKlxuXHQgKiBcdThCQkVcdTdGNkVcdTgzRENcdTUzNTVcdTYzMDlcdTk0QUVcdUZGMENcdTVFNzZcdThCQkVcdTdGNkVcdTcwQjlcdTUxRkJcdTRFOEJcdTRFRjZcblx0ICpcblx0ICogQHBhcmFtIG1lbnVcblx0ICogQHBhcmFtIEZpbGVCYXNlTmFtZVxuXHQgKiBAcGFyYW0gY3VycmVudE1kXG5cdCAqL1xuXHRhZGRNZW51RXh0ZW5kZWRQcmV2aWV3TW9kZSA9IChtZW51OiBNZW51LCBGaWxlQmFzZU5hbWU6IHN0cmluZywgY3VycmVudE1kOiBURmlsZSkgPT4ge1xuXHRcdGNvbnN0IGZpbGUgPSBVdGlsLmdldEZpbGVCeUJhc2VOYW1lKGN1cnJlbnRNZCwgRmlsZUJhc2VOYW1lKSBhcyBURmlsZTtcblx0XHQvLyBjb25zdCBiYXNlUGF0aCA9IChmaWxlLnZhdWx0LmFkYXB0ZXIgYXMgYW55KS5iYXNlUGF0aDtcblx0XHQvLyBjb25zdCByZWxhdGl2ZUZpbGVQYXRoID0gZmlsZS5wYXRoO1xuXHRcdGlmIChwcm9jZXNzLnBsYXRmb3JtICE9ICdsaW51eCcpIHtcblx0XHRcdG1lbnUuYWRkSXRlbSgoaXRlbTogTWVudUl0ZW0pID0+XG5cdFx0XHRcdGl0ZW1cblx0XHRcdFx0XHQuc2V0SWNvbihcImNvcHlcIilcblx0XHRcdFx0XHQuc2V0VGl0bGUoXCJDb3B5IGZpbGUgdG8gY2xpcGJvYXJkXCIpXG5cdFx0XHRcdFx0Ly8gLnNldENoZWNrZWQodHJ1ZSlcblx0XHRcdFx0XHQub25DbGljayhhc3luYyAoKSA9PiB7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRVdGlsLmhhbmRsZXJDb3B5RmlsZShGaWxlQmFzZU5hbWUsIGN1cnJlbnRNZCwgdGhpcyk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIkVycm9yLCBjb3VsZCBub3QgY29weSB0aGUgZmlsZSFcIik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSlcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0bWVudS5hZGRJdGVtKChpdGVtOiBNZW51SXRlbSkgPT4gaXRlbVxuXHRcdFx0LnNldEljb24oXCJhcnJvdy11cC1yaWdodFwiKVxuXHRcdFx0LnNldFRpdGxlKFwiT3BlbiBpbiBkZWZhdWx0IGFwcFwiKVxuXHRcdFx0Lm9uQ2xpY2soKCkgPT4gKHRoaXMuYXBwIGFzIEFwcFdpdGhEZXNrdG9wSW50ZXJuYWxBcGkpLm9wZW5XaXRoRGVmYXVsdEFwcChmaWxlLnBhdGgpKVxuXHRcdCk7XG5cdFx0bWVudS5hZGRJdGVtKChpdGVtOiBNZW51SXRlbSkgPT4gaXRlbVxuXHRcdFx0LnNldEljb24oXCJhcnJvdy11cC1yaWdodFwiKVxuXHRcdFx0LnNldFRpdGxlKFBsYXRmb3JtLmlzTWFjT1MgPyBcIlJldmVhbCBpbiBmaW5kZXJcIiA6IFwiU2hvdyBpbiBzeXN0ZW0gZXhwbG9yZXJcIilcblx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0KHRoaXMuYXBwIGFzIEFwcFdpdGhEZXNrdG9wSW50ZXJuYWxBcGkpLnNob3dJbkZvbGRlcihmaWxlLnBhdGgpO1xuXHRcdFx0fSlcblx0XHQpO1xuXHRcdG1lbnUuYWRkSXRlbSgoaXRlbTogTWVudUl0ZW0pID0+IGl0ZW1cblx0XHRcdC5zZXRJY29uKFwiZm9sZGVyXCIpXG5cdFx0XHQuc2V0VGl0bGUoXCJSZXZlYWwgZmlsZSBpbiBuYXZpZ2F0aW9uXCIpXG5cdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGFic3RyYWN0RmlsZVBhdGggPSB0aGlzLmFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgoZmlsZS5wYXRoKTtcblx0XHRcdFx0KHRoaXMuYXBwIGFzIGFueSkuaW50ZXJuYWxQbHVnaW5zLmdldEVuYWJsZWRQbHVnaW5CeUlkKFwiZmlsZS1leHBsb3JlclwiKS5yZXZlYWxJbkZvbGRlcihhYnN0cmFjdEZpbGVQYXRoKTtcblx0XHRcdH0pXG5cdFx0KTtcblx0fTtcblxuXG5cdGFkZEV4dGVybmFsSW1hZ2VNZW51UHJldmlld01vZGUgPSAobWVudTogTWVudSwgaW1nOiBIVE1MSW1hZ2VFbGVtZW50KSA9PiB7XG5cdFx0bWVudS5hZGRJdGVtKChpdGVtOiBNZW51SXRlbSkgPT5cblx0XHRcdGl0ZW1cblx0XHRcdFx0LnNldEljb24oXCJjb3B5XCIpXG5cdFx0XHRcdC5zZXRUaXRsZShcIkNvcHkgaW1hZ2UgdG8gY2xpcGJvYXJkXCIpXG5cdFx0XHRcdC5vbkNsaWNrKGFzeW5jICgpID0+IHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0Y29uc3QgYmxvYiA9IGF3YWl0IGxvYWRJbWFnZUJsb2IoaW1nLnNyYyk7XG5cdFx0XHRcdFx0XHRhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlKFtuZXcgQ2xpcGJvYXJkSXRlbSh7IFwiaW1hZ2UvcG5nXCI6IGJsb2IgfSldKTtcblx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoJ0ltYWdlIGNvcGllZCB0byBjbGlwYm9hcmQnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdFx0XHRuZXcgTm90aWNlKCdGYWlsZWQgdG8gY29weSBpbWFnZSEnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdG1lbnUuYWRkSXRlbSgoaXRlbTogTWVudUl0ZW0pID0+XG5cdFx0XHRpdGVtXG5cdFx0XHRcdC5zZXRJY29uKFwibGlua1wiKVxuXHRcdFx0XHQuc2V0VGl0bGUoXCJDb3B5IGltYWdlIGxpbmtcIilcblx0XHRcdFx0Lm9uQ2xpY2soYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRcdG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGltZy5zcmMpO1xuXHRcdFx0XHR9KVxuXHRcdCk7XG5cdFx0bWVudS5hZGRJdGVtKChpdGVtOiBNZW51SXRlbSkgPT5cblx0XHRcdGl0ZW1cblx0XHRcdFx0LnNldEljb24oXCJsaW5rXCIpXG5cdFx0XHRcdC5zZXRUaXRsZShcIkNvcHkgbWFya2Rvd24gbGlua1wiKVxuXHRcdFx0XHQub25DbGljayhhc3luYyAoKSA9PiB7XG5cdFx0XHRcdFx0bmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoYCFbXSgke2ltZy5zcmN9KWApO1xuXHRcdFx0XHR9KVxuXHRcdCk7XG5cdFx0bWVudS5hZGRJdGVtKChpdGVtOiBNZW51SXRlbSkgPT5cblx0XHRcdGl0ZW1cblx0XHRcdFx0LnNldEljb24oXCJleHRlcm5hbC1saW5rXCIpXG5cdFx0XHRcdC5zZXRUaXRsZShcIk9wZW4gaW4gZXh0ZXJuYWwgYnJvd3NlclwiKVxuXHRcdFx0XHQub25DbGljayhhc3luYyAoKSA9PiB7XG5cdFx0XHRcdFx0d2luZG93Lm9wZW4oaW1nLnNyYywgJ19ibGFuaycpO1xuXHRcdFx0XHR9KVxuXHRcdCk7XG5cdH1cblxuXHRhZGRFeHRlcm5hbEltYWdlTWVudVNvdXJjZU1vZGUgPSAobWVudTogTWVudSwgaW1nOiBIVE1MSW1hZ2VFbGVtZW50LCBpblRhYmxlOiBib29sZWFuLCBpbkNhbGxvdXQ6IGJvb2xlYW4pID0+IHtcblx0XHR0aGlzLmFkZEV4dGVybmFsSW1hZ2VNZW51UHJldmlld01vZGUobWVudSwgaW1nKTtcblx0XHRtZW51LmFkZEl0ZW0oKGl0ZW06IE1lbnVJdGVtKSA9PlxuXHRcdFx0aXRlbVxuXHRcdFx0XHQuc2V0SWNvbihcInRyYXNoLTJcIilcblx0XHRcdFx0LnNldFRpdGxlKFwiQ2xlYXIgaW1hZ2UgbGlua1wiKVxuXHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgZWRpdG9yID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KT8uZWRpdG9yO1xuXHRcdFx0XHRcdC8vICBAdHMtZXhwZWN0LWVycm9yLCBub3QgdHlwZWRcblx0XHRcdFx0XHRjb25zdCBlZGl0b3JWaWV3ID0gZWRpdG9yLmNtIGFzIEVkaXRvclZpZXc7XG5cdFx0XHRcdFx0Y29uc3QgdGFyZ2V0X3BvcyA9IGVkaXRvclZpZXcucG9zQXRET00oaW1nKTtcblx0XHRcdFx0XHRkZWxldGVDdXJUYXJnZXRMaW5rKGltZy5zcmMsIHRoaXMsICdpbWcnLCB0YXJnZXRfcG9zLCBpblRhYmxlLCBpbkNhbGxvdXQpO1xuXHRcdFx0XHR9KVxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogXHU5RjIwXHU2ODA3XHU1M0YzXHU5NTJFXHU4M0RDXHU1MzU1XHU0RThCXHU0RUY2XG5cdCAqL1xuXHRvblJpZ2h0Q2xpY2tNZW51KGV2ZW50OiBNb3VzZUV2ZW50KSB7XG5cdFx0Y29uc3QgdGFyZ2V0ID0gZ2V0TW91c2VFdmVudFRhcmdldChldmVudCk7XG5cdFx0Y29uc3QgY3VyVGFyZ2V0VHlwZSA9IHRhcmdldC5sb2NhbE5hbWU7XG5cdFx0aWYgKHRhcmdldC5pZCA9PSAnYWYtem9vbWVkLWltYWdlJykgcmV0dXJuO1xuXG5cdFx0Y29uc3QgY3VycmVudE1kID0gYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVGaWxlKCkgYXMgVEZpbGU7XG5cdFx0Y29uc3QgaW5DYW52YXMgPSBjdXJyZW50TWQubmFtZS5lbmRzV2l0aCgnLmNhbnZhcycpO1xuXHRcdGNvbnN0IFN1cHBvcnRlZFRhcmdldFR5cGUgPSBbXCJpbWdcIiwgXCJpZnJhbWVcIiwgXCJ2aWRlb1wiLCBcImRpdlwiLCBcImF1ZGlvXCJdO1xuXG5cdFx0Y29uc3QgbWVudSA9IG5ldyBNZW51KCk7XG5cblx0XHRpZiAoIVN1cHBvcnRlZFRhcmdldFR5cGUuaW5jbHVkZXMoY3VyVGFyZ2V0VHlwZSkpIHJldHVybjtcblxuXHRcdC8vIFx1NTIyNFx1NjVBRFx1NUY1M1x1NTI0RFx1NzBCOVx1NTFGQlx1NzY4NFx1NTczMFx1NjVCOVx1NjYyRlx1NTQyNlx1NEUzQVx1ODg2OFx1NjgzQ1xuXHRcdC8vIGNvbnN0IGluVGFibGU6Ym9vbGVhbiA9IHRhcmdldC5wYXJlbnRFbGVtZW50Py5wYXJlbnRFbGVtZW50Py5nZXRBdHRyaWJ1dGUoJ2NsYXNzJyk9PSd0YWJsZS1jZWxsLXdyYXBwZXInO1xuXHRcdGNvbnN0IGluVGFibGU6IGJvb2xlYW4gPSB0YXJnZXQuY2xvc2VzdCgndGFibGUnKSAhPSBudWxsO1xuXHRcdGNvbnN0IGluQ2FsbG91dDogYm9vbGVhbiA9IHRhcmdldC5jbG9zZXN0KCcuY2FsbG91dCcpICE9IG51bGw7XG5cdFx0Y29uc3QgaW5QcmV2aWV3OiBib29sZWFuID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KT8uZ2V0TW9kZSgpID09IFwicHJldmlld1wiO1xuXHRcdGNvbnN0IGlzRXhjYWxpZHJhdzogYm9vbGVhbiA9IHRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2V4Y2FsaWRyYXctZW1iZWRkZWQtaW1nJyk7XG5cblx0XHRsZXQgdGFyZ2V0X25hbWUgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKFwic3JjXCIpIGFzIHN0cmluZztcblx0XHQvLyBcdTVCRjlcdTRFOEUgQ2FsbG91dCBcdTU0OEMgVGFibGUgXHU0RTJEXHU3Njg0XHU3RjUxXHU3RURDXHU1NkZFXHU3MjQ3XHVGRjBDXHU2Q0ExXHU2NzA5XHU1M0YzXHU5NTJFXHU4M0RDXHU1MzU1XG5cdFx0aWYgKHRhcmdldF9uYW1lICYmIHRhcmdldF9uYW1lLnN0YXJ0c1dpdGgoJ2h0dHAnKSkgcmV0dXJuO1xuXG5cdFx0aWYgKGluQ2FudmFzKSB7XG5cdFx0XHQvLyBcdTU5ODJcdTY3OUNcdTY2MkZcdTU2RkVcdTUwQ0ZcdTgyODJcdTcwQjlcdUZGMENcdThGRDRcdTU2REVcblx0XHRcdGlmICh0YXJnZXQucGFyZW50RWxlbWVudD8uY2xhc3NMaXN0LmNvbnRhaW5zKCdjYW52YXMtbm9kZS1jb250ZW50JykpIHJldHVybjtcblx0XHRcdGxldCBmaWxlX25hbWUgPSB0YXJnZXQucGFyZW50RWxlbWVudD8uZ2V0QXR0cmlidXRlKCdzcmMnKTtcblx0XHRcdC8vIHByaW50KFwiVGFyZ2V0IE5hbWU6XCIsIGZpbGVfbmFtZSk7XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0YXJnZXQuY2xhc3NMaXN0LnJlbW92ZSgnaW1hZ2UtcmVhZHktY2xpY2stdmlldycsICdpbWFnZS1yZWFkeS1yZXNpemUnKTtcblxuXHRcdGlmIChpc0V4Y2FsaWRyYXcpIHtcblx0XHRcdHRhcmdldF9uYW1lID0gZ2V0RXhjYWxpZHJhd0Jhc2VOYW1lKHRhcmdldCBhcyBIVE1MSW1hZ2VFbGVtZW50KTtcblx0XHRcdHRhcmdldF9uYW1lID0gdGFyZ2V0X25hbWUucmVwbGFjZSgvXihcXC5cXC5cXC8pKy9nLCAnJyk7XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0dGFyZ2V0X25hbWUgPSB0YXJnZXQuY2xvc2VzdCgnLmludGVybmFsLWVtYmVkJyk/LmdldEF0dHJpYnV0ZShcInNyY1wiKSBhcyBzdHJpbmc7XG5cdFx0XHQvLyBcdTUyMjBcdTk2NjQgdGFyZ2V0X25hbWUgXHU1M0VGXHU4MEZEXHU1MjREXHU3RjAwXHU3Njg0XHU1OTFBXHU0RTJBICcuLi8nXHVGRjBDXHU2NTJGXHU2MzAxXHU5NEZFXHU2M0E1XHU4REVGXHU1Rjg0XHU0RTNBXHU1RjUzXHU1MjREXHU3QjE0XHU4QkIwXHU3Njg0XHU3NkY4XHU1QkY5XHU4REVGXHU1Rjg0XG5cdFx0XHR0YXJnZXRfbmFtZSA9IHRhcmdldF9uYW1lLnJlcGxhY2UoL14oXFwuXFwuXFwvKSsvZywgJycpO1xuXHRcdFx0bGV0IHBkZl9tYXRjaCA9IHRhcmdldF9uYW1lLm1hdGNoKC8uKlxcLnBkZi8pO1xuXHRcdFx0dGFyZ2V0X25hbWUgPSBwZGZfbWF0Y2ggPyBwZGZfbWF0Y2hbMF0gOiB0YXJnZXRfbmFtZTtcblx0XHRcdGlmIChjdXJUYXJnZXRUeXBlID09ICdpbWcnICYmIHBkZl9tYXRjaCkgcmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmIChpblByZXZpZXcpIHtcblx0XHRcdGlmIChTdXBwb3J0ZWRUYXJnZXRUeXBlLmluY2x1ZGVzKGN1clRhcmdldFR5cGUpKSB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKFwiRmlsZUJhc2VOYW1lXCIsIEZpbGVCYXNlTmFtZSk7XG5cdFx0XHRcdHRoaXMuYWRkTWVudUV4dGVuZGVkUHJldmlld01vZGUobWVudSwgdGFyZ2V0X25hbWUsIGN1cnJlbnRNZCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0Y29uc3QgZWRpdG9yID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KT8uZWRpdG9yO1xuXHRcdFx0Ly8gIEB0cy1leHBlY3QtZXJyb3IsIG5vdCB0eXBlZFxuXHRcdFx0Y29uc3QgZWRpdG9yVmlldyA9IGVkaXRvci5jbSBhcyBFZGl0b3JWaWV3O1xuXHRcdFx0Y29uc3QgdGFyZ2V0X3BvcyA9IGVkaXRvclZpZXcucG9zQXRET00odGFyZ2V0KTtcblx0XHRcdC8vIGNvbnNvbGUubG9nKCd0YXJnZXQnLCB0YXJnZXQpXG5cdFx0XHQvLyBjb25zb2xlLmxvZygndGFyZ2V0LnBhcmVudEVsZW1lbnQnLCB0YXJnZXQucGFyZW50RWxlbWVudClcblx0XHRcdC8vIGNvbnN0IHByZXZfcG9zID0gZWRpdG9yVmlldy5wb3NBdERPTSh0YXJnZXQucGFyZW50RWxlbWVudD8ucHJldmlvdXNFbGVtZW50U2libGluZyBhcyBIVE1MRWxlbWVudCk7XG5cdFx0XHQvLyBjb25zdCBuZXh0X3BvcyA9IGVkaXRvclZpZXcucG9zQXRET00odGFyZ2V0LnBhcmVudEVsZW1lbnQ/Lm5leHRFbGVtZW50U2libGluZyBhcyBIVE1MRWxlbWVudCk7XG5cdFx0XHQvLyBsZXQgcHJldl90YXJnZXRfbGluZSA9IGVkaXRvclZpZXcuc3RhdGUuZG9jLmxpbmVBdChwcmV2X3Bvcyk7XG5cdFx0XHQvLyBsZXQgbmV4dF90YXJnZXRfbGluZSA9IGVkaXRvclZpZXcuc3RhdGUuZG9jLmxpbmVBdChuZXh0X3Bvcyk7XG5cdFx0XHQvLyBjb25zb2xlLmxvZygncHJldiB0YXJnZXQgbGluZSBpbmZvcm1hdGlvbjogbGluZS1jb250ZW50LCBsaW5lLW51bWJlcigxLWJhc2VkKSwgdGFyZ2V0LmNoJyk7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhwcmV2X3RhcmdldF9saW5lLnRleHQsIHByZXZfdGFyZ2V0X2xpbmUubnVtYmVyLCBwcmV2X3Bvcy1wcmV2X3RhcmdldF9saW5lLmZyb20pXG5cblx0XHRcdGxldCB0YXJnZXRfbGluZSA9IGVkaXRvclZpZXcuc3RhdGUuZG9jLmxpbmVBdCh0YXJnZXRfcG9zKTtcblx0XHRcdHByaW50KCd0YXJnZXQgbGluZSBpbmZvcm1hdGlvbjogbGluZS1jb250ZW50LCBsaW5lLW51bWJlcigxLWJhc2VkKSwgdGFyZ2V0LmNoJyk7XG5cdFx0XHRwcmludCh0YXJnZXRfbGluZS50ZXh0LCB0YXJnZXRfbGluZS5udW1iZXIsIHRhcmdldF9wb3MgLSB0YXJnZXRfbGluZS5mcm9tKTtcblxuXHRcdFx0Ly8gLS0tLS0tLS0tLSBFZGl0b3JJbnRlcm5hbEFwaS5wb3NBdE1vdXNlIFx1NEUwRFx1NjYyRlx1NUY4OFx1NTFDNlx1Nzg2RVx1RkYwQ1x1NEUwRFx1NzdFNVx1OTA1M1x1NEUzQVx1NEVDMFx1NEU0OFx1RkYwQ1x1ODg0Q1x1NTNGN1x1NTQ4Q2NoXHU5MEZEXHU0RTBEXHU1MUM2XHU3ODZFIC0tLS0tLS0tLS1cblx0XHRcdC8vIGNvbnN0IGVkaXRvcjIgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlVmlld09mVHlwZShNYXJrZG93blZpZXcpPy5lZGl0b3IgYXMgRWRpdG9ySW50ZXJuYWxBcGk7XG5cdFx0XHQvLyBjb25zdCBwb3NpdGlvbiA9IGVkaXRvcjIucG9zQXRNb3VzZShldmVudCk7XG5cdFx0XHQvLyBjb25zb2xlLmxvZygnSW50ZXJBUElQb3MgbGluZSBpbmZvcm1hdGlvbjogbGluZS1jb250ZW50LCBsaW5lLW51bWJlcigxLWJhc2VkKSwgdGFyZ2V0LmNoJylcblx0XHRcdC8vIGNvbnNvbGUubG9nKGVkaXRvcj8uZ2V0TGluZShwb3NpdGlvbi5saW5lKSwgcG9zaXRpb24ubGluZSsxLCBwb3NpdGlvbi5jaClcblx0XHRcdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdFx0XHQvLyBjb25zb2xlLmxvZygnbmV4dCB0YXJnZXQgbGluZSBpbmZvcm1hdGlvbjogbGluZS1jb250ZW50LCBsaW5lLW51bWJlcigxLWJhc2VkKSwgdGFyZ2V0LmNoJyk7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhuZXh0X3RhcmdldF9saW5lLnRleHQsIG5leHRfdGFyZ2V0X2xpbmUubnVtYmVyLCBuZXh0X3Bvcy1uZXh0X3RhcmdldF9saW5lLmZyb20pXG5cblx0XHRcdGlmIChTdXBwb3J0ZWRUYXJnZXRUeXBlLmluY2x1ZGVzKGN1clRhcmdldFR5cGUpKSB7XG5cdFx0XHRcdHRoaXMuYWRkTWVudUV4dGVuZGVkU291cmNlTW9kZShtZW51LCB0YXJnZXRfbmFtZSwgY3VycmVudE1kLCBjdXJUYXJnZXRUeXBlLCB0YXJnZXRfcG9zLCBpblRhYmxlLCBpbkNhbGxvdXQpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRoaXMucmVnaXN0ZXJFc2NhcGVCdXR0b24obWVudSk7XG5cblx0XHRsZXQgb2Zmc2V0ID0gLTE2Mztcblx0XHRsZXQgbGludXhfb2Zmc2V0ID0gLTEzODtcblx0XHRvZmZzZXQgPSBwcm9jZXNzLnBsYXRmb3JtID09ICdsaW51eCcgPyBsaW51eF9vZmZzZXQgOiBvZmZzZXQ7XG5cdFx0aWYgKHRoaXMuc2V0dGluZ3MubW92ZUZpbGVNZW51KSBvZmZzZXQgLT0gMjU7XG5cblx0XHRpZiAoaW5UYWJsZSAmJiAhaW5QcmV2aWV3KSB7XG5cdFx0XHRtZW51LnNob3dBdFBvc2l0aW9uKHsgeDogZXZlbnQucGFnZVgsIHk6IGV2ZW50LnBhZ2VZICsgb2Zmc2V0IH0pO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdG1lbnUuc2hvd0F0UG9zaXRpb24oeyB4OiBldmVudC5wYWdlWCwgeTogZXZlbnQucGFnZVkgfSk7XG5cdFx0fVxuXHRcdHRoaXMuYXBwLndvcmtzcGFjZS50cmlnZ2VyKFwiQXR0YWNoRmxvdzpjb250ZXh0bWVudVwiLCBtZW51KTtcblx0fVxuXG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUludGVybmFsTGluayhhY3RpdmVWaWV3OiBNYXJrZG93blZpZXcsIHRhcmdldDogSFRNTEltYWdlRWxlbWVudCB8IEhUTUxWaWRlb0VsZW1lbnQsIHRhcmdldF9wb3M6IG51bWJlciwgaW1hZ2VOYW1lOiBzdHJpbmcsIG5ld1dpZHRoOiBudW1iZXIsIG5ld0hlaWdodDogbnVtYmVyLCBpblRhYmxlOiBib29sZWFuLCBpbkNhbGxvdXQ6IGJvb2xlYW4pOiB2b2lkIHtcblx0Y29uc3QgZWRpdG9yID0gYWN0aXZlVmlldy5lZGl0b3I7XG5cdC8vICBAdHMtZXhwZWN0LWVycm9yLCBub3QgdHlwZWRcblx0Y29uc3QgZWRpdG9yVmlldyA9IGVkaXRvci5jbSBhcyBFZGl0b3JWaWV3O1xuXHRsZXQgdGFyZ2V0X2xpbmUgPSBlZGl0b3JWaWV3LnN0YXRlLmRvYy5saW5lQXQodGFyZ2V0X3Bvcyk7XG5cdC8vIHByaW50KCd0YXJnZXQgbGluZSBpbmZvcm1hdGlvbjogbGluZS1jb250ZW50LCBsaW5lLW51bWJlcigxLWJhc2VkKSwgdGFyZ2V0LmNoJyk7XG5cdC8vIHByaW50KHRhcmdldF9saW5lLnRleHQsIHRhcmdldF9saW5lLm51bWJlciwgdGFyZ2V0X3BvcyAtIHRhcmdldF9saW5lLmZyb20pO1xuXG5cblx0aWYgKCFpbkNhbGxvdXQgJiYgIWluVGFibGUpIHtcblx0XHRsZXQgbWF0Y2hlZCA9IG1hdGNoTGluZVdpdGhJbnRlcm5hbExpbmsodGFyZ2V0X2xpbmUudGV4dCwgaW1hZ2VOYW1lLCBuZXdXaWR0aCwgaW5UYWJsZSk7XG5cdFx0aWYgKG1hdGNoZWQubGVuZ3RoID09IDEpIHtcblx0XHRcdGVkaXRvclZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0ZnJvbTogdGFyZ2V0X2xpbmUuZnJvbSArIG1hdGNoZWRbMF0uZnJvbV9jaCxcblx0XHRcdFx0XHR0bzogdGFyZ2V0X2xpbmUuZnJvbSArIG1hdGNoZWRbMF0udG9fY2gsXG5cdFx0XHRcdFx0aW5zZXJ0OiBtYXRjaGVkWzBdLm5ld19saW5rXG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0Ly8gZWRpdG9yLnJlcGxhY2VSYW5nZShtYXRjaGVkWzBdLm5ld19saW5rLCBcblx0XHRcdC8vIFx0e2xpbmU6dGFyZ2V0X2xpbmUubnVtYmVyLTEsIGNoOm1hdGNoZWRbMF0uZnJvbV9jaH0sIFxuXHRcdFx0Ly8gXHR7bGluZTp0YXJnZXRfbGluZS5udW1iZXItMSwgY2g6bWF0Y2hlZFswXS50b19jaH1cblx0XHRcdC8vIFx0KTtcblx0XHR9XG5cdFx0ZWxzZSBpZiAobWF0Y2hlZC5sZW5ndGggPT0gMCkge1xuXHRcdFx0Ly8gbmV3IE5vdGljZSgnRmFpbCB0byBmaW5kIGN1cnJlbnQgaW1hZ2UtbGluaywgcGxlYXNlIHpvb20gbWFudWFsbHkhJylcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRuZXcgTm90aWNlKCdGaW5kIG11bHRpcGxlIHNhbWUgaW1hZ2UtbGluayBpbiBsaW5lLCBwbGVhc2Ugem9vbSBtYW51YWxseSEnKVxuXHRcdH1cblx0XHRyZXR1cm47XG5cdH1cblxuXHR0eXBlIFJlZ0RpY3Rpb25hcnkgPSB7XG5cdFx0W2tleTogc3RyaW5nXTogUmVnRXhwO1xuXHR9O1xuXG5cdGxldCBzdGFydFJlZzogUmVnRGljdGlvbmFyeSA9IHtcblx0XHQndGFibGUnOiAvXlxccypcXHwvLFxuXHRcdCdjYWxsb3V0JzogL14+Lyxcblx0fTtcblxuXHRsZXQgbW9kZSA9IGluVGFibGUgPyAndGFibGUnIDogJ2NhbGxvdXQnO1xuXHRwcmludCgnbW9kZScsIG1vZGUpXG5cblx0Y29uc3Qgc3RhcnRfcmVnID0gc3RhcnRSZWdbbW9kZV07XG5cdGxldCBzdGFydF9saW5lX251bWJlciA9IHRhcmdldF9saW5lLm51bWJlcjtcblx0bGV0IG1hdGNoZWRfcmVzdWx0czogTWF0Y2hlZExpbmtJbkxpbmVbXSA9IFtdO1xuXHRsZXQgbWF0Y2hlZF9saW5lczogbnVtYmVyW10gPSBbXTsgIC8vMS1iYXNlZFxuXHRmb3IgKGxldCBpID0gc3RhcnRfbGluZV9udW1iZXI7IGkgPD0gZWRpdG9yLmxpbmVDb3VudCgpOyBpKyspIHtcblx0XHRsZXQgbGluZSA9IGVkaXRvclZpZXcuc3RhdGUuZG9jLmxpbmUoaSk7XG5cdFx0aWYgKCFzdGFydF9yZWcudGVzdChsaW5lLnRleHQpKSBicmVhaztcblx0XHRsZXQgbWF0Y2hlZCA9IG1hdGNoTGluZVdpdGhJbnRlcm5hbExpbmsobGluZS50ZXh0LCBpbWFnZU5hbWUsIG5ld1dpZHRoLCBpblRhYmxlKTtcblx0XHRtYXRjaGVkX3Jlc3VsdHMucHVzaCguLi5tYXRjaGVkKTtcblx0XHRtYXRjaGVkX2xpbmVzLnB1c2goLi4ubmV3IEFycmF5KG1hdGNoZWQubGVuZ3RoKS5maWxsKGkpKTtcblx0fVxuXG5cdGZvciAobGV0IGkgPSBzdGFydF9saW5lX251bWJlciAtIDE7IGkgPj0gMTsgaS0tKSB7XG5cdFx0bGV0IGxpbmUgPSBlZGl0b3JWaWV3LnN0YXRlLmRvYy5saW5lKGkpO1xuXHRcdGlmICghc3RhcnRfcmVnLnRlc3QobGluZS50ZXh0KSkgYnJlYWs7XG5cdFx0bGV0IG1hdGNoZWQgPSBtYXRjaExpbmVXaXRoSW50ZXJuYWxMaW5rKGxpbmUudGV4dCwgaW1hZ2VOYW1lLCBuZXdXaWR0aCwgaW5UYWJsZSk7XG5cdFx0bWF0Y2hlZF9yZXN1bHRzLnB1c2goLi4ubWF0Y2hlZCk7XG5cdFx0bWF0Y2hlZF9saW5lcy5wdXNoKC4uLm5ldyBBcnJheShtYXRjaGVkLmxlbmd0aCkuZmlsbChpKSk7XG5cdH1cblxuXHQvLyBwcmludChcIk1hdGNoZWQgSW5mb3JtYXRpb25cIilcblx0Ly8gcHJpbnQobWF0Y2hlZF9yZXN1bHRzKVxuXHQvLyBwcmludChtYXRjaGVkX2xpbmVzKVxuXG5cdGlmIChtYXRjaGVkX3Jlc3VsdHMubGVuZ3RoID09IDEpIHtcblx0XHRsZXQgdGFyZ2V0X2xpbmUgPSBlZGl0b3JWaWV3LnN0YXRlLmRvYy5saW5lKG1hdGNoZWRfbGluZXNbMF0pO1xuXHRcdGlmIChtb2RlID09ICd0YWJsZScpIHtcblx0XHRcdGxldCBvbGRfdGV4dCA9IHRhcmdldF9saW5lLnRleHQ7XG5cdFx0XHRsZXQgbmV3X2xpbmVfdGV4dCA9IG9sZF90ZXh0LnN1YnN0cmluZygwLCBtYXRjaGVkX3Jlc3VsdHNbMF0uZnJvbV9jaCkgK1xuXHRcdFx0XHRtYXRjaGVkX3Jlc3VsdHNbMF0ubmV3X2xpbmsgK1xuXHRcdFx0XHRvbGRfdGV4dC5zdWJzdHJpbmcobWF0Y2hlZF9yZXN1bHRzWzBdLnRvX2NoKTtcblx0XHRcdGVkaXRvclZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0ZnJvbTogdGFyZ2V0X2xpbmUuZnJvbSxcblx0XHRcdFx0XHR0bzogdGFyZ2V0X2xpbmUuZnJvbSArIG9sZF90ZXh0Lmxlbmd0aCxcblx0XHRcdFx0XHRpbnNlcnQ6IG5ld19saW5lX3RleHRcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGVkaXRvclZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0ZnJvbTogdGFyZ2V0X2xpbmUuZnJvbSArIG1hdGNoZWRfcmVzdWx0c1swXS5mcm9tX2NoLFxuXHRcdFx0XHRcdHRvOiB0YXJnZXRfbGluZS5mcm9tICsgbWF0Y2hlZF9yZXN1bHRzWzBdLnRvX2NoLFxuXHRcdFx0XHRcdGluc2VydDogbWF0Y2hlZF9yZXN1bHRzWzBdLm5ld19saW5rXG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXHRlbHNlIGlmIChtYXRjaGVkX3Jlc3VsdHMubGVuZ3RoID09IDApIHtcblx0XHRuZXcgTm90aWNlKGBGYWlsIHRvIGZpbmQgY3VycmVudCBpbWFnZS1saW5rIGluICR7bW9kZX0sIHBsZWFzZSB6b29tIG1hbnVhbGx5IWApXG5cdH1cblx0ZWxzZSB7XG5cdFx0bmV3IE5vdGljZShgRmluZCBtdWx0aXBsZSBzYW1lIGltYWdlLWxpbmsgaW4gJHttb2RlfSwgcGxlYXNlIHpvb20gbWFudWFsbHkhYClcblx0fVxuXHRyZXR1cm47XG59XG5cblxuZnVuY3Rpb24gdXBkYXRlRXh0ZXJuYWxMaW5rKGFjdGl2ZVZpZXc6IE1hcmtkb3duVmlldywgdGFyZ2V0OiBIVE1MSW1hZ2VFbGVtZW50IHwgSFRNTFZpZGVvRWxlbWVudCwgdGFyZ2V0X3BvczogbnVtYmVyLCBuZXdXaWR0aDogbnVtYmVyLCBuZXdIZWlnaHQ6IG51bWJlciwgaW5UYWJsZTogYm9vbGVhbiwgaW5DYWxsb3V0OiBib29sZWFuKTogdm9pZCB7XG5cdGNvbnN0IGVkaXRvciA9IGFjdGl2ZVZpZXcuZWRpdG9yO1xuXHQvLyAgQHRzLWV4cGVjdC1lcnJvciwgbm90IHR5cGVkXG5cdGNvbnN0IGVkaXRvclZpZXcgPSBlZGl0b3IuY20gYXMgRWRpdG9yVmlldztcblx0bGV0IHRhcmdldF9saW5lID0gZWRpdG9yVmlldy5zdGF0ZS5kb2MubGluZUF0KHRhcmdldF9wb3MpO1xuXG5cdGNvbnN0IGxpbmsgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKCdzcmMnKSBhcyBzdHJpbmc7XG5cdGNvbnN0IGFsdFRleHQgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKFwiYWx0XCIpIGFzIHN0cmluZztcblxuXHRpZiAoIWluQ2FsbG91dCAmJiAhaW5UYWJsZSkge1xuXHRcdGxldCBtYXRjaGVkID0gbWF0Y2hMaW5lV2l0aEV4dGVybmFsTGluayh0YXJnZXRfbGluZS50ZXh0LCBsaW5rLCBhbHRUZXh0LCBuZXdXaWR0aCwgaW5UYWJsZSk7XG5cdFx0aWYgKG1hdGNoZWQubGVuZ3RoID09IDEpIHtcblx0XHRcdGVkaXRvclZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0ZnJvbTogdGFyZ2V0X2xpbmUuZnJvbSArIG1hdGNoZWRbMF0uZnJvbV9jaCxcblx0XHRcdFx0XHR0bzogdGFyZ2V0X2xpbmUuZnJvbSArIG1hdGNoZWRbMF0udG9fY2gsXG5cdFx0XHRcdFx0aW5zZXJ0OiBtYXRjaGVkWzBdLm5ld19saW5rXG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0XHRlbHNlIGlmIChtYXRjaGVkLmxlbmd0aCA9PSAwKSB7XG5cdFx0XHQvLyBuZXcgTm90aWNlKCdGYWlsIHRvIGZpbmQgY3VycmVudCBpbWFnZS1saW5rLCBwbGVhc2Ugem9vbSBtYW51YWxseSEnKVxuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdG5ldyBOb3RpY2UoJ0ZpbmQgbXVsdGlwbGUgc2FtZSBpbWFnZS1saW5rIGluIGxpbmUsIHBsZWFzZSB6b29tIG1hbnVhbGx5IScpXG5cdFx0fVxuXHRcdHJldHVybjtcblx0fVxuXG5cdHR5cGUgUmVnRGljdGlvbmFyeSA9IHtcblx0XHRba2V5OiBzdHJpbmddOiBSZWdFeHA7XG5cdH07XG5cblx0bGV0IHN0YXJ0UmVnOiBSZWdEaWN0aW9uYXJ5ID0ge1xuXHRcdCd0YWJsZSc6IC9eXFxzKlxcfC8sXG5cdFx0J2NhbGxvdXQnOiAvXj4vLFxuXHR9O1xuXG5cdGxldCBtb2RlID0gaW5UYWJsZSA/ICd0YWJsZScgOiAnY2FsbG91dCc7XG5cdHByaW50KCdtb2RlJywgbW9kZSlcblxuXHRjb25zdCBzdGFydF9yZWcgPSBzdGFydFJlZ1ttb2RlXTtcblx0bGV0IHN0YXJ0X2xpbmVfbnVtYmVyID0gdGFyZ2V0X2xpbmUubnVtYmVyO1xuXHRsZXQgbWF0Y2hlZF9yZXN1bHRzOiBNYXRjaGVkTGlua0luTGluZVtdID0gW107XG5cdGxldCBtYXRjaGVkX2xpbmVzOiBudW1iZXJbXSA9IFtdOyAgLy8xLWJhc2VkXG5cdGZvciAobGV0IGkgPSBzdGFydF9saW5lX251bWJlcjsgaSA8PSBlZGl0b3IubGluZUNvdW50KCk7IGkrKykge1xuXHRcdGxldCBsaW5lID0gZWRpdG9yVmlldy5zdGF0ZS5kb2MubGluZShpKTtcblx0XHRpZiAoIXN0YXJ0X3JlZy50ZXN0KGxpbmUudGV4dCkpIGJyZWFrO1xuXHRcdGxldCBtYXRjaGVkID0gbWF0Y2hMaW5lV2l0aEV4dGVybmFsTGluayhsaW5lLnRleHQsIGxpbmssIGFsdFRleHQsIG5ld1dpZHRoLCBpblRhYmxlKTtcblx0XHRtYXRjaGVkX3Jlc3VsdHMucHVzaCguLi5tYXRjaGVkKTtcblx0XHRtYXRjaGVkX2xpbmVzLnB1c2goLi4ubmV3IEFycmF5KG1hdGNoZWQubGVuZ3RoKS5maWxsKGkpKTtcblx0fVxuXG5cdGZvciAobGV0IGkgPSBzdGFydF9saW5lX251bWJlciAtIDE7IGkgPj0gMTsgaS0tKSB7XG5cdFx0bGV0IGxpbmUgPSBlZGl0b3JWaWV3LnN0YXRlLmRvYy5saW5lKGkpO1xuXHRcdGlmICghc3RhcnRfcmVnLnRlc3QobGluZS50ZXh0KSkgYnJlYWs7XG5cdFx0bGV0IG1hdGNoZWQgPSBtYXRjaExpbmVXaXRoRXh0ZXJuYWxMaW5rKGxpbmUudGV4dCwgbGluaywgYWx0VGV4dCwgbmV3V2lkdGgsIGluVGFibGUpO1xuXHRcdG1hdGNoZWRfcmVzdWx0cy5wdXNoKC4uLm1hdGNoZWQpO1xuXHRcdG1hdGNoZWRfbGluZXMucHVzaCguLi5uZXcgQXJyYXkobWF0Y2hlZC5sZW5ndGgpLmZpbGwoaSkpO1xuXHR9XG5cblx0cHJpbnQobWF0Y2hlZF9yZXN1bHRzKVxuXHRwcmludChtYXRjaGVkX2xpbmVzKVxuXG5cdGlmIChtYXRjaGVkX3Jlc3VsdHMubGVuZ3RoID09IDEpIHtcblx0XHRsZXQgdGFyZ2V0X2xpbmUgPSBlZGl0b3JWaWV3LnN0YXRlLmRvYy5saW5lKG1hdGNoZWRfbGluZXNbMF0pO1xuXHRcdGlmIChtb2RlID09ICd0YWJsZScpIHtcblx0XHRcdGxldCBvbGRfdGV4dCA9IHRhcmdldF9saW5lLnRleHQ7XG5cdFx0XHRsZXQgbmV3X2xpbmVfdGV4dCA9IG9sZF90ZXh0LnN1YnN0cmluZygwLCBtYXRjaGVkX3Jlc3VsdHNbMF0uZnJvbV9jaCkgK1xuXHRcdFx0XHRtYXRjaGVkX3Jlc3VsdHNbMF0ubmV3X2xpbmsgK1xuXHRcdFx0XHRvbGRfdGV4dC5zdWJzdHJpbmcobWF0Y2hlZF9yZXN1bHRzWzBdLnRvX2NoKTtcblx0XHRcdGVkaXRvclZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0ZnJvbTogdGFyZ2V0X2xpbmUuZnJvbSxcblx0XHRcdFx0XHR0bzogdGFyZ2V0X2xpbmUuZnJvbSArIG9sZF90ZXh0Lmxlbmd0aCxcblx0XHRcdFx0XHRpbnNlcnQ6IG5ld19saW5lX3RleHRcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGVkaXRvclZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0ZnJvbTogdGFyZ2V0X2xpbmUuZnJvbSArIG1hdGNoZWRfcmVzdWx0c1swXS5mcm9tX2NoLFxuXHRcdFx0XHRcdHRvOiB0YXJnZXRfbGluZS5mcm9tICsgbWF0Y2hlZF9yZXN1bHRzWzBdLnRvX2NoLFxuXHRcdFx0XHRcdGluc2VydDogbWF0Y2hlZF9yZXN1bHRzWzBdLm5ld19saW5rXG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXHRlbHNlIGlmIChtYXRjaGVkX3Jlc3VsdHMubGVuZ3RoID09IDApIHtcblx0XHRuZXcgTm90aWNlKGBGYWlsIHRvIGZpbmQgY3VycmVudCBpbWFnZS1saW5rIGluICR7bW9kZX0sIHBsZWFzZSB6b29tIG1hbnVhbGx5IWApXG5cdH1cblx0ZWxzZSB7XG5cdFx0bmV3IE5vdGljZShgRmluZCBtdWx0aXBsZSBzYW1lIGltYWdlLWxpbmsgaW4gJHttb2RlfSwgcGxlYXNlIHpvb20gbWFudWFsbHkhYClcblx0fVxuXHRyZXR1cm47XG5cbn1cblxuXG5mdW5jdGlvbiBtYXRjaExpbmVXaXRoSW50ZXJuYWxMaW5rKGxpbmVfdGV4dDogc3RyaW5nLCB0YXJnZXRfbmFtZTogc3RyaW5nLCBuZXdfd2lkdGg6IG51bWJlciwgaW50YWJsZTogYm9vbGVhbik6IE1hdGNoZWRMaW5rSW5MaW5lW10ge1xuXHRsZXQgcmVnV2lraUxpbmsgPSAvXFwhXFxbXFxbW15cXFtcXF1dKj9cXF1cXF0vZztcblx0bGV0IHJlZ01kTGluayA9IC9cXCFcXFtbXlxcW1xcXV0qP1xcXVxcKFteXFxzXFwpXFwoXFxbXFxdXFx7XFx9J10qXFwpL2c7XG5cdGNvbnN0IHRhcmdldF9uYW1lX21kbGluayA9IHRhcmdldF9uYW1lLnJlcGxhY2UoLyAvZywgJyUyMCcpO1xuXHRpZiAoIWxpbmVfdGV4dC5pbmNsdWRlcyh0YXJnZXRfbmFtZSkgJiYgIWxpbmVfdGV4dC5pbmNsdWRlcyh0YXJnZXRfbmFtZV9tZGxpbmspKSByZXR1cm4gW107XG5cblx0Ly8gcHJpbnQobGluZV90ZXh0KVxuXHRsZXQgcmVzdWx0OiBNYXRjaGVkTGlua0luTGluZVtdID0gW107XG5cdC8vIGNvbnN0IG5ld1dpa2lMaW5rID0gaW50YWJsZSA/IGAhW1ske3RhcmdldF9uYW1lfVxcXFx8JHtuZXdfd2lkdGh9XV1gOmAhW1ske3RhcmdldF9uYW1lfXwke25ld193aWR0aH1dXWA7XG5cdHdoaWxlICh0cnVlKSB7XG5cdFx0bGV0IHdpa2lfbWF0Y2ggPSByZWdXaWtpTGluay5leGVjKGxpbmVfdGV4dCk7XG5cdFx0aWYgKCF3aWtpX21hdGNoKSBicmVhaztcblx0XHRjb25zdCBtYXRjaGVkX2xpbmsgPSB3aWtpX21hdGNoWzBdO1xuXHRcdC8vIHByaW50KCdtYXRjaGVkX2xpbms6JywgbWF0Y2hlZF9saW5rKVxuXHRcdGlmIChtYXRjaGVkX2xpbmsuaW5jbHVkZXModGFyZ2V0X25hbWUpKSB7XG5cdFx0XHRsZXQgbm9ybWFsX2xpbmsgPSBpbnRhYmxlID8gbWF0Y2hlZF9saW5rLnJlcGxhY2UoL1xcXFxcXHwvZywgJ3wnKSA6IG1hdGNoZWRfbGluaztcblx0XHRcdGxldCBsaW5rX21hdGNoID0gbm9ybWFsX2xpbmsubWF0Y2goLyFcXFtcXFsoLio/KShcXHx8XFxdXFxdKS8pO1xuXHRcdFx0bGV0IGxpbmtfdGV4dCA9IGxpbmtfbWF0Y2ggPyBsaW5rX21hdGNoWzFdIDogJyc7XG5cblx0XHRcdGxldCBhbHRfbWF0Y2ggPSBtYXRjaGVkX2xpbmsubWF0Y2goLyFcXFtcXFsuKj8oXFx8KC4qPykpXFxdXFxdLyk7XG5cdFx0XHRsZXQgYWx0X3RleHQgPSBhbHRfbWF0Y2ggPyBhbHRfbWF0Y2hbMV0gOiAnJztcblx0XHRcdGxldCBhbHRfdGV4dF9saXN0ID0gYWx0X3RleHQuc3BsaXQoJ3wnKTtcblx0XHRcdGxldCBhbHRfdGV4dF93b19zaXplID0gJyc7XG5cdFx0XHRsZXQgbmV3X2FsdF90ZXh0ID0gJydcblx0XHRcdGZvciAobGV0IGFsdCBvZiBhbHRfdGV4dF9saXN0KSB7XG5cdFx0XHRcdGlmICghL15cXGQrJC8udGVzdChhbHQpICYmICEvXlxccyokLy50ZXN0KGFsdCkpIHtcblx0XHRcdFx0XHRhbHRfdGV4dF93b19zaXplID0gYWx0X3RleHRfd29fc2l6ZSArICd8JyArIGFsdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0bmV3X2FsdF90ZXh0ID0gbmV3X3dpZHRoICE9IDAgPyBgJHthbHRfdGV4dF93b19zaXplfXwke25ld193aWR0aH1gIDogYWx0X3RleHRfd29fc2l6ZTtcblx0XHRcdG5ld19hbHRfdGV4dCA9IGludGFibGUgPyBuZXdfYWx0X3RleHQucmVwbGFjZSgvXFx8L2csICdcXFxcfCcpIDogbmV3X2FsdF90ZXh0O1xuXHRcdFx0bGV0IG5ld1dpa2lMaW5rID0gbGlua19tYXRjaCA/IGAhW1ske2xpbmtfdGV4dH0ke25ld19hbHRfdGV4dH1dXWAgOiBgIVtbJHt0YXJnZXRfbmFtZX0ke25ld19hbHRfdGV4dH1dXWA7XG5cblx0XHRcdHJlc3VsdC5wdXNoKHtcblx0XHRcdFx0b2xkX2xpbms6IG1hdGNoZWRfbGluayxcblx0XHRcdFx0bmV3X2xpbms6IG5ld1dpa2lMaW5rLFxuXHRcdFx0XHRmcm9tX2NoOiB3aWtpX21hdGNoLmluZGV4LFxuXHRcdFx0XHR0b19jaDogd2lraV9tYXRjaC5pbmRleCArIG1hdGNoZWRfbGluay5sZW5ndGhcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdHdoaWxlICh0cnVlKSB7XG5cdFx0bGV0IG1hdGNoID0gcmVnTWRMaW5rLmV4ZWMobGluZV90ZXh0KTtcblx0XHRpZiAoIW1hdGNoKSBicmVhaztcblx0XHRjb25zdCBtYXRjaGVkX2xpbmsgPSBtYXRjaFswXTtcblx0XHRpZiAobWF0Y2hlZF9saW5rLmluY2x1ZGVzKHRhcmdldF9uYW1lX21kbGluaykpIHtcblx0XHRcdC8vIFx1NjI3RVx1NTIzMCBtYXRjaGVkX2xpbmsgXHU0RTJEXHU3Njg0IGFsdFRleHRcblx0XHRcdGxldCBhbHRfdGV4dF9tYXRjaCA9IG1hdGNoZWRfbGluay5tYXRjaCgvXFxbLio/XFxdL2cpIGFzIHN0cmluZ1tdO1xuXHRcdFx0bGV0IGFsdF90ZXh0ID0gYWx0X3RleHRfbWF0Y2hbMF0uc3Vic3RyaW5nKDEsIGFsdF90ZXh0X21hdGNoWzBdLmxlbmd0aCAtIDEpO1xuXHRcdFx0bGV0IHB1cmVfYWx0ID0gYWx0X3RleHQucmVwbGFjZSgvXFx8XFxkKyhcXHxcXGQrKT8kL2csICcnKTtcblx0XHRcdGlmIChpbnRhYmxlKSB7XG5cdFx0XHRcdHB1cmVfYWx0ID0gYWx0X3RleHQucmVwbGFjZSgvXFxcXFxcfFxcZCsoXFx8XFxkKyk/JC9nLCAnJylcblx0XHRcdH1cblx0XHRcdGxldCBsaW5rX3RleHQgPSBtYXRjaGVkX2xpbmsuc3Vic3RyaW5nKGFsdF90ZXh0X21hdGNoWzBdLmxlbmd0aCArIDIsIG1hdGNoZWRfbGluay5sZW5ndGggLSAxKVxuXHRcdFx0bGV0IG5ld01ETGluayA9IGludGFibGUgPyBgIVske3B1cmVfYWx0fVxcXFx8JHtuZXdfd2lkdGh9XSgke2xpbmtfdGV4dH0pYCA6IGAhWyR7cHVyZV9hbHR9fCR7bmV3X3dpZHRofV0oJHtsaW5rX3RleHR9KWA7XG5cdFx0XHRpZiAoL15cXGQqJC8udGVzdChhbHRfdGV4dCkpIHtcblx0XHRcdFx0bmV3TURMaW5rID0gYCFbJHtuZXdfd2lkdGh9XSgke2xpbmtfdGV4dH0pYDtcblx0XHRcdH1cblx0XHRcdC8vIGxldCBuZXdMaW5lVGV4dCA9IGxpbmVfdGV4dC5zdWJzdHJpbmcoMCwgbWF0Y2guaW5kZXgpICsgXG5cdFx0XHQvLyBcdFx0XHRcdFx0bmV3TURMaW5rICsgXG5cdFx0XHQvLyBcdFx0XHRcdFx0bGluZV90ZXh0LnN1YnN0cmluZyhtYXRjaC5pbmRleCttYXRjaGVkX2xpbmsubGVuZ3RoKTtcblx0XHRcdHJlc3VsdC5wdXNoKHtcblx0XHRcdFx0b2xkX2xpbms6IG1hdGNoZWRfbGluayxcblx0XHRcdFx0bmV3X2xpbms6IG5ld01ETGluayxcblx0XHRcdFx0ZnJvbV9jaDogbWF0Y2guaW5kZXgsXG5cdFx0XHRcdHRvX2NoOiBtYXRjaC5pbmRleCArIG1hdGNoZWRfbGluay5sZW5ndGhcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXHRwcmludChcIkxpbmUgVGV4dDogXCIsIGxpbmVfdGV4dClcblx0cHJpbnQoXCJNYXRjaGVkSW5mbzpcIiwgcmVzdWx0KTtcblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuXG5mdW5jdGlvbiBtYXRjaExpbmVXaXRoRXh0ZXJuYWxMaW5rKGxpbmVfdGV4dDogc3RyaW5nLCBsaW5rOiBzdHJpbmcsIGFsdF90ZXh0OiBzdHJpbmcsIG5ld193aWR0aDogbnVtYmVyLCBpbnRhYmxlOiBib29sZWFuKTogTWF0Y2hlZExpbmtJbkxpbmVbXSB7XG5cdGxldCByZXN1bHQ6IE1hdGNoZWRMaW5rSW5MaW5lW10gPSBbXVxuXHRsZXQgcmVnTWRMaW5rID0gL1xcIVxcW1teXFxbXFxdXSo/XFxdXFwoW15cXHNcXClcXChcXFtcXF1cXHtcXH0nXSpcXCkvZztcblx0aWYgKCFsaW5lX3RleHQuaW5jbHVkZXMobGluaykpIHJldHVybiBbXTtcblx0d2hpbGUgKHRydWUpIHtcblx0XHRsZXQgbWF0Y2ggPSByZWdNZExpbmsuZXhlYyhsaW5lX3RleHQpO1xuXHRcdGlmICghbWF0Y2gpIGJyZWFrO1xuXHRcdGxldCBtYXRjaGVkX2xpbmsgPSBtYXRjaFswXTtcblx0XHRpZiAobWF0Y2hlZF9saW5rLmluY2x1ZGVzKGxpbmspKSB7XG5cdFx0XHRsZXQgYWx0X3RleHRfbWF0Y2ggPSBtYXRjaGVkX2xpbmsubWF0Y2goL1xcWy4qP1xcXS9nKSBhcyBzdHJpbmdbXTtcblx0XHRcdGxldCBhbHRfdGV4dCA9IGFsdF90ZXh0X21hdGNoWzBdLnN1YnN0cmluZygxLCBhbHRfdGV4dF9tYXRjaFswXS5sZW5ndGggLSAxKTtcblx0XHRcdGxldCBwdXJlX2FsdCA9IGFsdF90ZXh0LnJlcGxhY2UoL1xcfFxcZCsoXFx8XFxkKyk/JC9nLCAnJyk7XG5cdFx0XHRpZiAoaW50YWJsZSkge1xuXHRcdFx0XHRwdXJlX2FsdCA9IGFsdF90ZXh0LnJlcGxhY2UoL1xcXFxcXHxcXGQrKFxcfFxcZCspPyQvZywgJycpXG5cdFx0XHR9XG5cdFx0XHRpZiAoL15cXGQqJC8udGVzdChhbHRfdGV4dCkpIHtcblx0XHRcdFx0cHVyZV9hbHQgPSAnJztcblx0XHRcdH1cblx0XHRcdGxldCBsaW5rX3RleHQgPSBtYXRjaGVkX2xpbmsuc3Vic3RyaW5nKGFsdF90ZXh0X21hdGNoWzBdLmxlbmd0aCArIDIsIG1hdGNoZWRfbGluay5sZW5ndGggLSAxKVxuXHRcdFx0bGV0IG5ld0V4dGVybmFsTGluayA9IGludGFibGUgPyBgIVske3B1cmVfYWx0fVxcXFx8JHtuZXdfd2lkdGh9XSgke2xpbmtfdGV4dH0pYCA6IGAhWyR7cHVyZV9hbHR9fCR7bmV3X3dpZHRofV0oJHtsaW5rX3RleHR9KWA7XG5cdFx0XHRcblx0XHRcdHJlc3VsdC5wdXNoKHtcblx0XHRcdFx0b2xkX2xpbms6IG1hdGNoZWRfbGluayxcblx0XHRcdFx0bmV3X2xpbms6IG5ld0V4dGVybmFsTGluayxcblx0XHRcdFx0ZnJvbV9jaDogbWF0Y2guaW5kZXgsXG5cdFx0XHRcdHRvX2NoOiBtYXRjaC5pbmRleCArIG1hdGNoZWRfbGluay5sZW5ndGhcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXHRwcmludChcIkxpbmUgVGV4dDogXCIsIGxpbmVfdGV4dClcblx0cHJpbnQoXCJNYXRjaGVkSW5mbzpcIiwgcmVzdWx0KTtcblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuXG5cbi8vIFx1NTIxQlx1NUVGQVx1OTA2RVx1N0Y2OVx1NTE0M1x1N0QyMFxuZnVuY3Rpb24gY3JlYXRlWm9vbU1hc2soKTogSFRNTERpdkVsZW1lbnQge1xuICAgIGNvbnN0IG1hc2sgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBtYXNrLmlkID0gJ2FmLW1hc2snO1xuICAgIG1hc2suc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xuICAgIG1hc2suc3R5bGUudG9wID0gJzAnO1xuICAgIG1hc2suc3R5bGUubGVmdCA9ICcwJztcbiAgICBtYXNrLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgIG1hc2suc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xuICAgIG1hc2suc3R5bGUuYmFja2dyb3VuZCA9ICdyZ2JhKDAsIDAsIDAsIDAuNSknO1xuICAgIG1hc2suc3R5bGUuekluZGV4ID0gJzk5OTgnO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobWFzayk7XG4gICAgcmV0dXJuIG1hc2s7XG59XG5cbi8vIFx1NTIxQlx1NUVGQVx1NjUzRVx1NTkyN1x1NzY4NFx1NTZGRVx1NTBDRlx1NTE0M1x1N0QyMFxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlWm9vbWVkSW1hZ2Uoc3JjOiBzdHJpbmcsIGFkYXB0aXZlX3JhdGlvOiBudW1iZXIpOiBQcm9taXNlPHt6b29tZWRJbWFnZTogSFRNTEltYWdlRWxlbWVudCwgb3JpZ2luYWxXaWR0aDogbnVtYmVyLCBvcmlnaW5hbEhlaWdodDogbnVtYmVyfT4ge1xuICAgIGNvbnN0IHpvb21lZEltYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG4gICAgem9vbWVkSW1hZ2UuaWQgPSAnYWYtem9vbWVkLWltYWdlJztcbiAgICB6b29tZWRJbWFnZS5zcmMgPSBzcmM7XG4gICAgem9vbWVkSW1hZ2Uuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xuICAgIHpvb21lZEltYWdlLnN0eWxlLnpJbmRleCA9ICc5OTk5JztcbiAgICB6b29tZWRJbWFnZS5zdHlsZS50b3AgPSAnNTAlJztcbiAgICB6b29tZWRJbWFnZS5zdHlsZS5sZWZ0ID0gJzUwJSc7XG4gICAgem9vbWVkSW1hZ2Uuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZSgtNTAlLCAtNTAlKSc7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh6b29tZWRJbWFnZSk7XG5cbiAgICBsZXQgb3JpZ2luYWxXaWR0aCA9IHpvb21lZEltYWdlLm5hdHVyYWxXaWR0aDtcblx0bGV0IG9yaWdpbmFsSGVpZ2h0ID0gem9vbWVkSW1hZ2UubmF0dXJhbEhlaWdodDtcblxuXHRhZGFwdGl2ZWx5RGlzcGxheUltYWdlKHpvb21lZEltYWdlLCBvcmlnaW5hbFdpZHRoLCBvcmlnaW5hbEhlaWdodCwgYWRhcHRpdmVfcmF0aW8pO1xuXG4gICAgcmV0dXJuIHtcblx0XHR6b29tZWRJbWFnZSxcblx0XHRvcmlnaW5hbFdpZHRoLFxuXHRcdG9yaWdpbmFsSGVpZ2h0XG5cdH07XG59XG5cbi8vIFx1NTIxQlx1NUVGQVx1NzY3RVx1NTIwNlx1NkJENFx1NjMwN1x1NzkzQVx1NTE0M1x1N0QyMFxuZnVuY3Rpb24gY3JlYXRlWm9vbVNjYWxlRGl2KHpvb21lZEltYWdlOiBIVE1MSW1hZ2VFbGVtZW50LCBvcmlnaW5hbFdpZHRoOiBudW1iZXIsIG9yaWdpbmFsSGVpZ2h0Om51bWJlcik6IEhUTUxEaXZFbGVtZW50IHtcblx0Y29uc3Qgc2NhbGVEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0c2NhbGVEaXYuaWQgPSAnYWYtc2NhbGUtZGl2Jztcblx0c2NhbGVEaXYuY2xhc3NMaXN0LmFkZCgnYWYtc2NhbGUtZGl2Jyk7XG5cdHNjYWxlRGl2LnN0eWxlLnpJbmRleCA9ICcxMDAwMCc7XG5cdHVwZGF0ZVpvb21TY2FsZURpdihzY2FsZURpdiwgem9vbWVkSW1hZ2UsIG9yaWdpbmFsV2lkdGgsIG9yaWdpbmFsSGVpZ2h0KTtcblx0ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY2FsZURpdik7XG5cdHJldHVybiBzY2FsZURpdjtcbn1cblxuZnVuY3Rpb24gdXBkYXRlWm9vbVNjYWxlRGl2KHNjYWxlRGl2OiBIVE1MRGl2RWxlbWVudCwgem9vbWVkSW1hZ2U6IEhUTUxJbWFnZUVsZW1lbnQsIG9yaWdpbmFsV2lkdGg6IG51bWJlciwgb3JpZ2luYWxIZWlnaHQ6bnVtYmVyKXtcblx0Ly8gXHU4M0I3XHU1M0Q2XHU1RjUzXHU1MjREXHU3Njg0XHU1QkJEXHU1RUE2XHU1NDhDXHU5QUQ4XHU1RUE2XG5cdGNvbnN0IHdpZHRoID0gem9vbWVkSW1hZ2Uub2Zmc2V0V2lkdGg7XG5cdGNvbnN0IGhlaWdodCA9IHpvb21lZEltYWdlLm9mZnNldEhlaWdodDtcblx0bGV0IHNjYWxlUGVyY2VudCA9IHdpZHRoIC8gb3JpZ2luYWxXaWR0aCAqIDEwMDtcblx0c2NhbGVEaXYuaW5uZXJUZXh0ID0gYCR7d2lkdGh9XHUwMEQ3JHtoZWlnaHR9ICgke3NjYWxlUGVyY2VudC50b0ZpeGVkKDEpfSUpYDtcbn1cblxuLy8gXHU2RURBXHU4RjZFXHU0RThCXHU0RUY2XHU1OTA0XHU3NDA2XHU1NjY4XG5mdW5jdGlvbiBoYW5kbGVab29tTW91c2VXaGVlbChlOiBXaGVlbEV2ZW50LCB6b29tZWRJbWFnZTogSFRNTEltYWdlRWxlbWVudCwgb3JpZ2luYWxXaWR0aDogbnVtYmVyLCBvcmlnaW5hbEhlaWdodDogbnVtYmVyLCBzY2FsZURpdjogSFRNTERpdkVsZW1lbnQpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgbW91c2VYID0gZS5jbGllbnRYO1xuICAgIGNvbnN0IG1vdXNlWSA9IGUuY2xpZW50WTtcbiAgICBjb25zdCBzY2FsZSA9IGUuZGVsdGFZID4gMCA/IDAuOTUgOiAxLjA1O1xuICAgIGNvbnN0IG5ld1dpZHRoID0gc2NhbGUgKiB6b29tZWRJbWFnZS5vZmZzZXRXaWR0aDtcbiAgICBjb25zdCBuZXdIZWlnaHQgPSBzY2FsZSAqIHpvb21lZEltYWdlLm9mZnNldEhlaWdodDtcbiAgICBjb25zdCBuZXdMZWZ0ID0gbW91c2VYIC0gKG1vdXNlWCAtIHpvb21lZEltYWdlLm9mZnNldExlZnQpICogc2NhbGU7XG4gICAgY29uc3QgbmV3VG9wID0gbW91c2VZIC0gKG1vdXNlWSAtIHpvb21lZEltYWdlLm9mZnNldFRvcCkgKiBzY2FsZTtcbiAgICB6b29tZWRJbWFnZS5zdHlsZS53aWR0aCA9IGAke25ld1dpZHRofXB4YDtcbiAgICB6b29tZWRJbWFnZS5zdHlsZS5oZWlnaHQgPSBgJHtuZXdIZWlnaHR9cHhgO1xuICAgIHpvb21lZEltYWdlLnN0eWxlLmxlZnQgPSBgJHtuZXdMZWZ0fXB4YDtcbiAgICB6b29tZWRJbWFnZS5zdHlsZS50b3AgPSBgJHtuZXdUb3B9cHhgO1xuICAgIHVwZGF0ZVpvb21TY2FsZURpdihzY2FsZURpdiwgem9vbWVkSW1hZ2UsIG9yaWdpbmFsV2lkdGgsIG9yaWdpbmFsSGVpZ2h0KTtcbn1cblxuLy8gXHU5RjIwXHU2ODA3XHU1M0YzXHU5NTJFXHU3MEI5XHU1MUZCXHU0RThCXHU0RUY2XHU1OTA0XHU3NDA2XHU1NjY4XG5mdW5jdGlvbiBoYW5kbGVab29tQ29udGV4dE1lbnUoZTogTW91c2VFdmVudCx6b29tZWRJbWFnZTogSFRNTEltYWdlRWxlbWVudCwgb3JpZ2luYWxXaWR0aDogbnVtYmVyLCBvcmlnaW5hbEhlaWdodDogbnVtYmVyLCBzY2FsZURpdjogSFRNTERpdkVsZW1lbnQpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgem9vbWVkSW1hZ2Uuc3R5bGUud2lkdGggPSBgJHtvcmlnaW5hbFdpZHRofXB4YDtcbiAgICB6b29tZWRJbWFnZS5zdHlsZS5oZWlnaHQgPSBgJHtvcmlnaW5hbEhlaWdodH1weGA7XG4gICAgem9vbWVkSW1hZ2Uuc3R5bGUubGVmdCA9IGA1MCVgO1xuICAgIHpvb21lZEltYWdlLnN0eWxlLnRvcCA9IGA1MCVgO1xuXHR1cGRhdGVab29tU2NhbGVEaXYoc2NhbGVEaXYsIHpvb21lZEltYWdlLCBvcmlnaW5hbFdpZHRoLCBvcmlnaW5hbEhlaWdodCk7XG59XG5cblxuZnVuY3Rpb24gYWRhcHRpdmVseURpc3BsYXlJbWFnZSh6b29tZWRJbWFnZTogSFRNTEltYWdlRWxlbWVudCwgb3JpZ2luYWxXaWR0aDogbnVtYmVyLCBvcmlnaW5hbEhlaWdodDogbnVtYmVyLCBhZGFwdGl2ZV9yYXRpbzpudW1iZXIpIHtcblx0em9vbWVkSW1hZ2Uuc3R5bGUubGVmdCA9IGA1MCVgO1xuXHR6b29tZWRJbWFnZS5zdHlsZS50b3AgPSBgNTAlYDtcblx0Ly8gXHU1OTgyXHU2NzlDXHU1NkZFXHU3MjQ3XHU3Njg0XHU1QzNBXHU1QkY4XHU1OTI3XHU0RThFXHU1QzRGXHU1RTU1XHU1QzNBXHU1QkY4XHVGRjBDXHU0RjdGXHU1MTc2XHU1OTI3XHU1QzBGXHU0RTNBXHU1QzRGXHU1RTU1XHU1QzNBXHU1QkY4XHU3Njg0IGFkYXB0aXZlX3JhdGlvXG5cdGxldCBzY3JlZW5SYXRpbyA9IGFkYXB0aXZlX3JhdGlvOyAgIC8vIFx1NUM0Rlx1NUU1NVx1NUMzQVx1NUJGOFx1NkJENFx1NEY4QlxuXHRsZXQgc2NyZWVuV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcblx0bGV0IHNjcmVlbkhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcblxuXHQvLyBBZGp1c3QgaW5pdGlhbCBzaXplIG9mIHRoZSBpbWFnZSBpZiBpdCBleGNlZWRzIHNjcmVlbiBzaXplXG5cdGlmIChvcmlnaW5hbFdpZHRoID4gc2NyZWVuV2lkdGggfHwgb3JpZ2luYWxIZWlnaHQgPiBzY3JlZW5IZWlnaHQpIHtcblx0XHRpZiAob3JpZ2luYWxXaWR0aCAvIHNjcmVlbldpZHRoID4gb3JpZ2luYWxIZWlnaHQgLyBzY3JlZW5IZWlnaHQpIHtcblx0XHRcdHpvb21lZEltYWdlLnN0eWxlLndpZHRoID0gYCR7c2NyZWVuV2lkdGggKiBzY3JlZW5SYXRpb31weGA7XG5cdFx0XHR6b29tZWRJbWFnZS5zdHlsZS5oZWlnaHQgPSAnYXV0byc7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHpvb21lZEltYWdlLnN0eWxlLmhlaWdodCA9IGAke3NjcmVlbkhlaWdodCAqIHNjcmVlblJhdGlvfXB4YDtcblx0XHRcdHpvb21lZEltYWdlLnN0eWxlLndpZHRoID0gJ2F1dG8nO1xuXHRcdH1cblx0fWVsc2V7XG5cdFx0em9vbWVkSW1hZ2Uuc3R5bGUud2lkdGggPSBgJHtvcmlnaW5hbFdpZHRofXB4YDtcblx0XHR6b29tZWRJbWFnZS5zdHlsZS5oZWlnaHQgPSBgJHtvcmlnaW5hbEhlaWdodH1weGA7XG5cdH1cbn1cblxuZnVuY3Rpb24gaGFuZGxlWm9vbURyYWdTdGFydChlOiBNb3VzZUV2ZW50LHpvb21lZEltYWdlOiBIVE1MSW1hZ2VFbGVtZW50KSB7XG4gICAgLy8gXHU0RThCXHU0RUY2XHU1OTA0XHU3NDA2XHU3Njg0XHU0RUUzXHU3ODAxIC4uLlxuXHQvLyBcdTk2M0JcdTZCNjJcdTZENEZcdTg5QzhcdTU2NjhcdTlFRDhcdThCQTRcdTc2ODRcdTYyRDZcdTUyQThcdTRFOEJcdTRFRjZcblx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG5cdC8vIFx1OEJCMFx1NUY1NVx1NzBCOVx1NTFGQlx1NEY0RFx1N0Y2RVxuXHRsZXQgY2xpY2tYID0gZS5jbGllbnRYO1xuXHRsZXQgY2xpY2tZID0gZS5jbGllbnRZO1xuXG5cdC8vIFx1NjZGNFx1NjVCMFx1NTE0M1x1N0QyMFx1NEY0RFx1N0Y2RVx1NzY4NFx1NTZERVx1OEMwM1x1NTFGRFx1NjU3MFxuXHRjb25zdCB1cGRhdGVQb3NpdGlvbiA9IChtb3ZlRXZ0OiBNb3VzZUV2ZW50KSA9PiB7XG5cdFx0Ly8gXHU4QkExXHU3Qjk3XHU5RjIwXHU2ODA3XHU3OUZCXHU1MkE4XHU4REREXHU3OUJCXG5cdFx0bGV0IG1vdmVYID0gbW92ZUV2dC5jbGllbnRYIC0gY2xpY2tYO1xuXHRcdGxldCBtb3ZlWSA9IG1vdmVFdnQuY2xpZW50WSAtIGNsaWNrWTtcblxuXHRcdC8vIFx1NUI5QVx1NEY0RFx1NTZGRVx1NzI0N1x1NEY0RFx1N0Y2RVxuXHRcdHpvb21lZEltYWdlLnN0eWxlLmxlZnQgPSBgJHt6b29tZWRJbWFnZS5vZmZzZXRMZWZ0ICsgbW92ZVh9cHhgO1xuXHRcdHpvb21lZEltYWdlLnN0eWxlLnRvcCA9IGAke3pvb21lZEltYWdlLm9mZnNldFRvcCArIG1vdmVZfXB4YDtcblxuXHRcdC8vIFx1NjZGNFx1NjVCMFx1NzBCOVx1NTFGQlx1NEY0RFx1N0Y2RVxuXHRcdGNsaWNrWCA9IG1vdmVFdnQuY2xpZW50WDtcblx0XHRjbGlja1kgPSBtb3ZlRXZ0LmNsaWVudFk7XG5cdH1cblxuXHQvLyBcdTlGMjBcdTY4MDdcdTc5RkJcdTUyQThcdTRFOEJcdTRFRjZcblx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdXBkYXRlUG9zaXRpb24pO1xuXG5cdC8vIFx1OUYyMFx1NjgwN1x1Njc3RVx1NUYwMFx1NEU4Qlx1NEVGNlxuXHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgZnVuY3Rpb24gbGlzdGVuZXIoKSB7XG5cdFx0Ly8gXHU3OUZCXHU5NjY0XHU5RjIwXHU2ODA3XHU3OUZCXHU1MkE4XHU1NDhDXHU5RjIwXHU2ODA3XHU2NzdFXHU1RjAwXHU3Njg0XHU3NkQxXHU1NDJDXHU1NjY4XG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdXBkYXRlUG9zaXRpb24pO1xuXHRcdGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBsaXN0ZW5lcik7XG5cdH0sIHsgb25jZTogdHJ1ZSB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0RXhjYWxpZHJhd0Jhc2VOYW1lKHRhcmdldDogSFRNTEltYWdlRWxlbWVudCk6IHN0cmluZyB7XG5cdGxldCB0YXJnZXRfbmFtZSA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2ZpbGVzb3VyY2UnKSBhcyBzdHJpbmc7XG5cdGxldCBmaWxlX2Jhc2VfbmFtZSA9IHRhcmdldF9uYW1lXG5cdGlmIChmaWxlX2Jhc2VfbmFtZS5pbmNsdWRlcygnLycpKSB7XG5cdFx0bGV0IHRlbXBfYXJyID0gZmlsZV9iYXNlX25hbWUuc3BsaXQoJy8nKTtcblx0XHRmaWxlX2Jhc2VfbmFtZSA9IHRlbXBfYXJyW3RlbXBfYXJyLmxlbmd0aCAtIDFdXG5cdH0gZWxzZSBpZiAoZmlsZV9iYXNlX25hbWUuaW5jbHVkZXMoJ1xcXFwnKSkge1xuXHRcdGxldCB0ZW1wX2FyciA9IGZpbGVfYmFzZV9uYW1lLnNwbGl0KCdcXFxcJyk7XG5cdFx0ZmlsZV9iYXNlX25hbWUgPSB0ZW1wX2Fyclt0ZW1wX2Fyci5sZW5ndGggLSAxXVxuXHR9XG5cdGZpbGVfYmFzZV9uYW1lID0gZmlsZV9iYXNlX25hbWUuZW5kc1dpdGgoJy5tZCcpID9cblx0XHRmaWxlX2Jhc2VfbmFtZS5zdWJzdHJpbmcoMCwgZmlsZV9iYXNlX25hbWUubGVuZ3RoIC0gMykgOlxuXHRcdGZpbGVfYmFzZV9uYW1lO1xuXHRyZXR1cm4gZmlsZV9iYXNlX25hbWU7XG59IiwgImltcG9ydCB7IE5vdGljZSwgVEZpbGUsIFRGb2xkZXIgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IGdldEZpbGVQYXJlbnRGb2xkZXIgfSBmcm9tIFwic3JjL3V0aWxcIjtcbmltcG9ydCB7IGRlbGV0ZUZpbGUgfSBmcm9tIFwic3JjL3V0aWxzL2RlbGV0ZUZpbGVcIjtcbmltcG9ydCBBdHRhY2hGbG93UGx1Z2luIGZyb20gXCIuLi8uLi9zcmMvbWFpblwiO1xuLyoqXG4gKiBkZWxBbGxBdHRhY2hzQnlDb21tYW5kXG4gKlxuICogMS4gZ2V0IGN1cnJlbnQgZmlsZVxuICogMi4gZ2V0IFRGaWxlIG9mIHRoZSBhdHRhY2htZW50IHJlZmVyZW5jZWQgYnkgZmlsZVxuICovXG5leHBvcnQgY29uc3QgZGVsZXRlQWxsQXR0YWNocyA9IGFzeW5jIChwbHVnaW46IEF0dGFjaEZsb3dQbHVnaW4pID0+IHtcblx0Ly8gMS4gZ2V0IGN1cnJlbnQgZmlsZVxuXHRjb25zdCBhY3RpdmVNZDogVEZpbGUgPSBhcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKSBhcyBURmlsZTtcblx0Y29uc3QgcmVzb2x2ZWRMaW5rcyA9IGFwcC5tZXRhZGF0YUNhY2hlLnJlc29sdmVkTGlua3M7XG5cdGNvbnN0IGF0dGFjaHNQYXRoczogc3RyaW5nW10gPSBbXTtcblx0Zm9yIChjb25zdCBbbWRGaWxlLCBsaW5rc10gb2YgT2JqZWN0LmVudHJpZXMocmVzb2x2ZWRMaW5rcykpIHtcblx0XHRpZiAoYWN0aXZlTWQ/LnBhdGggPT09IG1kRmlsZSkge1xuXHRcdFx0bGV0IGZpbGVDb3VudCA9IDA7XG5cdFx0XHRsZXQgZmxhZyA9IGZhbHNlO1xuXHRcdFx0Zm9yIChjb25zdCBbZmlsZVBhdGgsIG5yXSBvZiBPYmplY3QuZW50cmllcyhsaW5rcykpIHtcblx0XHRcdFx0Ly8gSWYgdGhlIGZpbGVQYXRoIGVuZHMgd2l0aCAnLm1kJyAsd2hpY2ggaW5kaWNhdGVzIHRoZSBmaWxlIGlzIG1hcmtkb3duIGZpbGUsIGFuZCBkbyBub3QgZGVsZXRlIGl0XG5cdFx0XHRcdGlmIChmaWxlUGF0aC5tYXRjaCgvLipcXC5tZCQvbSkpIGNvbnRpbnVlO1xuXHRcdFx0XHQvLyBpZiB0aGUgYXR0YWNobWVudCBpbiB0aGUgbm90ZSBoYXMgYmVlbiByZWZlcmVuY2VkIGJ5IG90aGVyIG5vdGVzICBzaW11bHRhbmVvdXNseSBza2lwIGl0LlxuXHRcdFx0XHRpZiAoaXNSZWZlcmVuY2VkQnlPdGhlck5vdGVzKGZpbGVQYXRoLCBhY3RpdmVNZCkpIGNvbnRpbnVlO1xuXHRcdFx0XHRhdHRhY2hzUGF0aHMucHVzaChmaWxlUGF0aCk7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Ly8gMi4gZ2V0IFRGaWxlIG9mIHRoZSBhdHRhY2htZW50IHJlZmVyZW5jZWQgYnkgZmlsZVxuXHRcdFx0XHRcdGNvbnN0IEF0dGFjaEZpbGU6IFRGaWxlID0gYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChcblx0XHRcdFx0XHRcdGZpbGVQYXRoXG5cdFx0XHRcdFx0KSBhcyBURmlsZTtcblx0XHRcdFx0XHRpZiAoQXR0YWNoRmlsZSBpbnN0YW5jZW9mIFRGaWxlKSB7XG5cdFx0XHRcdFx0XHRkZWxldGVGaWxlKEF0dGFjaEZpbGUsIHBsdWdpbik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IHBhcmVudEZvbGRlciA9IGdldEZpbGVQYXJlbnRGb2xkZXIoXG5cdFx0XHRcdFx0XHRBdHRhY2hGaWxlXG5cdFx0XHRcdFx0KSBhcyBURm9sZGVyO1xuXHRcdFx0XHRcdGlmICghZmxhZykge1xuXHRcdFx0XHRcdFx0ZmlsZUNvdW50ID0gcGFyZW50Rm9sZGVyLmNoaWxkcmVuLmxlbmd0aDtcblx0XHRcdFx0XHRcdGZsYWcgPSAhZmxhZztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZmlsZUNvdW50ID0gZmlsZUNvdW50IC0gMTtcblx0XHRcdFx0XHRpZiAoIWZpbGVDb3VudCkge1xuXHRcdFx0XHRcdFx0YXdhaXQgZGVsZXRlRmlsZShwYXJlbnRGb2xkZXIsIHBsdWdpbik7XG5cdFx0XHRcdFx0XHQvLyBhd2FpdCBhcHAudmF1bHQuZGVsZXRlKHBhcmVudEZvbGRlciwgdHJ1ZSk7XG5cdFx0XHRcdFx0XHRuZXcgTm90aWNlKFxuXHRcdFx0XHRcdFx0XHRcIkFsbCBhdHRhY2htZW50cyBhbmQgaXRzIHBhcmVudCBmb2xkZXIgZGVsZXRlZCFcIixcblx0XHRcdFx0XHRcdFx0MzAwMFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdFx0Y29uc29sZS53YXJuKGVycm9yKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHQvLyByZW1vdmVBbGxVbnVzZWRSZWZlcmVuY2VMaW5rcyhhY3RpdmVNZCwgYXR0YWNoc1BhdGhzKTtcbn07XG4vKipcbiAqXG4gKiBAcGFyYW0gYXR0YWNoUGF0aFxuICogQHBhcmFtIGN1cnJlbnRNZFxuICogQHJldHVybnNcbiAqL1xuY29uc3QgaXNSZWZlcmVuY2VkQnlPdGhlck5vdGVzID0gKFxuXHRhdHRhY2hQYXRoOiBzdHJpbmcsXG5cdGN1cnJlbnRNZDogVEZpbGVcbik6IGJvb2xlYW4gPT4ge1xuXHRjb25zdCByZXNvbHZlZExpbmtzID0gYXBwLm1ldGFkYXRhQ2FjaGUucmVzb2x2ZWRMaW5rcztcblx0bGV0IGZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRmb3IgKGNvbnN0IFttZEZpbGUsIGxpbmtzXSBvZiBPYmplY3QuZW50cmllcyhyZXNvbHZlZExpbmtzKSkge1xuXHRcdGlmIChtZEZpbGUgIT09IGN1cnJlbnRNZC5wYXRoKSB7XG5cdFx0XHRmb3IgKGNvbnN0IFtmaWxlUGF0aCwgbnJdIG9mIE9iamVjdC5lbnRyaWVzKGxpbmtzKSkge1xuXHRcdFx0XHRpZiAoZmlsZVBhdGggPT09IGF0dGFjaFBhdGgpIHtcblx0XHRcdFx0XHRmbGFnID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gZmxhZztcbn07XG5cbi8qKlxuICogUmVtb3ZlIGFsbCByZWZlcmVuY2UgbGlua3NcbiAqXG4gKiBAcGFyYW0gaW1hZ2VQYXRocyAgcGF0aCAgbGlzdCAgb2YgdGhlIGN1cnJlbnQgZGVsZXRlZCBpbWFnZSB3aXRob3V0IHN1YnBhdGgsZm9ybWF0IGFzICBuYW1lLmV4dGVuc2lvblxuICogQHBhcmFtIG1kRmlsZSAgdGhlIG1hcmtkb3duIGZpbGUgY29udGFpbmluZyB0aGUgZGVsZXRlZCBpbWFnZVxuICovXG5leHBvcnQgY29uc3QgcmVtb3ZlQWxsVW51c2VkUmVmZXJlbmNlTGlua3MgPSBhc3luYyAoXG5cdGFjdGl2ZU1kOiBURmlsZSxcblx0YXR0YWNoc1BhdGhzOiBzdHJpbmdbXVxuKSA9PiB7XG5cdC8vIDEuZ2V0IHBhdGggbGlzdCBvZiBhbGwgdW51c2VkIGF0dGFjaG1lbnRzXG5cdGNvbnN0IG9yaWdpbkNvbnRlbnRzID0gYXdhaXQgYXBwLnZhdWx0LnJlYWQoYWN0aXZlTWQpO1xuXHRjb25zdCBsaW5lcyA9IG9yaWdpbkNvbnRlbnRzLnNwbGl0KFwiXFxuXCIpO1xuXHRjb25zdCBuZXdDb250ZW50czogc3RyaW5nW10gPSBbXTtcblx0bGV0IGlzTm90VGFyZ2V0TGluZTogYm9vbGVhbiA9IHRydWU7XG5cblx0Ly8gMi4gY2xlYXIgYWxsIHVudXNlZCBhdHRhY2htZW50cyBsaW5rcyBpbiB0aGUgbm90ZVxuXHQvLyBFc2NhcGUgLiB0byBcXC4gZm9yIHJlZ3VsYXIgZXhwcmVzaW9uXG5cdGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuXHRcdGZvciAoY29uc3QgaW5kZXggaW4gYXR0YWNoc1BhdGhzKSB7XG5cdFx0XHRjb25zdCByZWdNZFJlZkxpbmsgPSBuZXcgUmVnRXhwKFxuXHRcdFx0XHRcIiFcXFxcWyguKik/XFxcXF1cXFxcKCgoLipcXFxcLykrKT9cIiArIGF0dGFjaHNQYXRoc1tpbmRleF0gKyBcIlxcXFwpXCIsXG5cdFx0XHRcdFwiZ21cIlxuXHRcdFx0KTtcblx0XHRcdGNvbnN0IHJlZ1dpa2lSZWZMaW5rMiA9IG5ldyBSZWdFeHAoXG5cdFx0XHRcdFwiIVxcXFxbXFxcXFsuKj9cIiArIGF0dGFjaHNQYXRoc1tpbmRleF0gKyBcIihcXFxcfFxcXFxkKik/XFxcXF1cXFxcXVwiLFxuXHRcdFx0XHRcImdtXCJcblx0XHRcdCk7XG5cdFx0XHRjb25zdCBkZWNvZGVMaW5lID0gZGVjb2RlVVJJKGxpbmUpO1xuXHRcdFx0Y29uc3QgaXNJbmNsdWRlSW1hZ2UgPSBkZWNvZGVMaW5lLmluY2x1ZGVzKGF0dGFjaHNQYXRoc1tpbmRleF0pO1xuXHRcdFx0Y29uc3QgaXNNYXJrZG93blN0eWxlID0gZGVjb2RlTGluZS5tYXRjaChyZWdNZFJlZkxpbmspICE9IG51bGw7XG5cdFx0XHRjb25zdCBpc1dpa2lTdHlsZSA9IGRlY29kZUxpbmUubWF0Y2gocmVnV2lraVJlZkxpbmsyKSAhPSBudWxsO1xuXHRcdFx0aWYgKGlzSW5jbHVkZUltYWdlICYmIGlzTWFya2Rvd25TdHlsZSkge1xuXHRcdFx0XHRpc05vdFRhcmdldExpbmUgPSBmYWxzZTtcblx0XHRcdFx0bmV3Q29udGVudHMucHVzaChkZWNvZGVMaW5lLnJlcGxhY2UocmVnTWRSZWZMaW5rLCBcIlwiKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fSBlbHNlIGlmIChpc0luY2x1ZGVJbWFnZSAmJiBpc1dpa2lTdHlsZSkge1xuXHRcdFx0XHRpc05vdFRhcmdldExpbmUgPSBmYWxzZTtcblx0XHRcdFx0bmV3Q29udGVudHMucHVzaChkZWNvZGVMaW5lLnJlcGxhY2UocmVnV2lraVJlZkxpbmsyLCBcIlwiKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChpc05vdFRhcmdldExpbmUpIG5ld0NvbnRlbnRzLnB1c2gobGluZSk7XG5cdH1cblx0YXBwLnZhdWx0LmFkYXB0ZXIud3JpdGUoYWN0aXZlTWQucGF0aCwgbmV3Q29udGVudHMuam9pbihcIlxcblwiKSk7XG59O1xuZXhwb3J0IGNvbnN0IGdldFJlZmVuY2VkTGlua0NvdW50ID0gKCk6IG51bWJlciA9PiB7XG5cdGNvbnN0IGFjdGl2ZU1kOiBURmlsZSA9IGFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlRmlsZSgpIGFzIFRGaWxlO1xuXHRjb25zdCByZXNvbHZlZExpbmtzID0gYXBwLm1ldGFkYXRhQ2FjaGUucmVzb2x2ZWRMaW5rcztcblx0Y29uc3QgYXR0YWNoc1BhdGhzOiBzdHJpbmdbXSA9IFtdO1xuXHRmb3IgKGNvbnN0IFttZEZpbGUsIGxpbmtzXSBvZiBPYmplY3QuZW50cmllcyhyZXNvbHZlZExpbmtzKSkge1xuXHRcdGlmIChhY3RpdmVNZD8ucGF0aCA9PT0gbWRGaWxlKSB7XG5cdFx0XHRmb3IgKGNvbnN0IFtmaWxlUGF0aCwgbnJdIG9mIE9iamVjdC5lbnRyaWVzKGxpbmtzKSkge1xuXHRcdFx0XHRpZiAoZmlsZVBhdGgubWF0Y2goLy4qXFwubWQkL20pKSBjb250aW51ZTtcblx0XHRcdFx0aWYgKGlzUmVmZXJlbmNlZEJ5T3RoZXJOb3RlcyhmaWxlUGF0aCwgYWN0aXZlTWQpKSBjb250aW51ZTtcblx0XHRcdFx0YXR0YWNoc1BhdGhzLnB1c2goZmlsZVBhdGgpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gYXR0YWNoc1BhdGhzLmxlbmd0aDtcbn07XG4iLCAiaW1wb3J0IEF0dGFjaEZsb3dQbHVnaW4gZnJvbSBcInNyYy9tYWluXCI7XG5pbXBvcnQgeyBURmlsZSwgTm90aWNlLCBURm9sZGVyLCBNYXJrZG93blZpZXcsIEVkaXRvcn0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBpbWFnZVJlZmVyZW5jZWRTdGF0ZSB9IGZyb20gXCIuL2VudW0vaW1hZ2VSZWZlcmVuY2VkU3RhdGVcIjtcbmltcG9ydCB7IHJlc3VsdERldGVybWluZUltYWdlRGVsZXRpb24gYXMgZGVsZXRpb25SZXN1bHQgfSBmcm9tIFwiLi9pbnRlcmZhY2UvcmVzdWx0RGV0ZXJtaW5lSW1hZ2VEZWxldGlvblwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHsgZXhlYywgZXhlY1N5bmMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQge1xuXHRFbGVjdHJvbldpbmRvdywgRmlsZVN5c3RlbUFkYXB0ZXJXaXRoSW50ZXJuYWxBcGksXG5cdGxvYWRJbWFnZUJsb2IsIEFwcFdpdGhEZXNrdG9wSW50ZXJuYWxBcGksIEVkaXRvckludGVybmFsQXBpXG4gIH0gZnJvbSBcIi4vaGVscGVyc1wiXG5pbXBvcnQgeyBBcHAsIE1vZGFsLCBTZXR0aW5nLCBGdXp6eVN1Z2dlc3RNb2RhbCwgVmF1bHQsIEZ1enp5TWF0Y2ggfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuZXhwb3J0IGxldCBERUJVRzpib29sZWFuID0gZmFsc2U7XG5jb25zdCBTVUNDRVNTX05PVElDRV9USU1FT1VUID0gMTgwMDtcblxuZXhwb3J0IGNvbnN0IHByaW50PShtZXNzYWdlPzogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pID0+e1xuICAgIGlmIChERUJVRykge1xuICAgICAgICBjb25zb2xlLmxvZyhtZXNzYWdlLCAuLi5vcHRpb25hbFBhcmFtcyk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0RGVidWcodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBERUJVRyA9IHZhbHVlO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gdGFyZ2V0X2ZpbGUgXHU4OTgxXHU1MjIwXHU5NjY0XHU3Njg0XHU3NkVFXHU2ODA3XHU2NTg3XHU0RUY2XG4gKiBAcGFyYW0gY3VycmVudE1kXHRcdTVGNTNcdTUyNERcdTYyNDBcdTU3MjhcdTc2ODQgbWFya2Rvd24gXHU2NTg3XHU0RUY2XG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgY29uc3QgY2hlY2tSZWZlcmVuY2VJbmZvID0gKFxuXHR0YXJnZXRfZmlsZTogVEZpbGUsXG5cdGN1cnJlbnRNZDogVEZpbGVcbik6IHsgc3RhdGU6IG51bWJlcjsgbWRQYXRoOiBzdHJpbmdbXSB9ID0+IHtcblxuXHRjb25zdCByZXNvbHZlZExpbmtzID0gYXBwLm1ldGFkYXRhQ2FjaGUucmVzb2x2ZWRMaW5rcztcblx0bGV0IEN1ck1EUGF0aDogc3RyaW5nO1xuXHQvLyAvLyByZWNvcmQgdGhlIHN0YXRlIG9mIGltYWdlIHJlZmVyZW5jZWQgYW5kIGFsbCBwYXRocyBvZiBtYXJrZG93biByZWZlcmVuY2luZyB0byB0aGUgaW1hZ2Vcblx0bGV0IHJlc3VsdDogZGVsZXRpb25SZXN1bHQgPSB7XG5cdFx0c3RhdGU6IDAsXG5cdFx0bWRQYXRoOiBbXSxcblx0fTtcblx0bGV0IHJlZk51bSA9IDA7IC8vIHJlY29yZCB0aGUgbnVtYmVyIG9mIG5vdGUgcmVmZXJlbmNpbmcgdG8gdGhlIGltYWdlLlxuXHRmb3IgKGNvbnN0IFttZEZpbGUsIGxpbmtzXSBvZiBPYmplY3QuZW50cmllcyhyZXNvbHZlZExpbmtzKSkge1xuXHRcdGlmIChjdXJyZW50TWQucGF0aCA9PT0gbWRGaWxlKSB7XG5cdFx0XHRDdXJNRFBhdGggPSBjdXJyZW50TWQucGF0aDtcblx0XHRcdHJlc3VsdC5tZFBhdGgudW5zaGlmdChDdXJNRFBhdGgpO1xuXHRcdH1cblx0XHRmb3IgKGNvbnN0IFtmaWxlUGF0aCwgbnJdIG9mIE9iamVjdC5lbnRyaWVzKGxpbmtzKSkge1xuXHRcdFx0aWYgKHRhcmdldF9maWxlPy5wYXRoID09PSBmaWxlUGF0aCkge1xuXHRcdFx0XHRyZWZOdW0rKztcblx0XHRcdFx0Ly8gaWYgdGhlIGRlbGV0ZWQgdGFyZ2V0IGltYWdlIHJlZmVyZW5jZWQgYnkgY3VycmVudCBub3RlIG1vcmUgdGhhbiBvbmNlXG5cdFx0XHRcdGlmIChuciA+IDEpIHtcblx0XHRcdFx0XHRyZXN1bHQuc3RhdGUgPSBpbWFnZVJlZmVyZW5jZWRTdGF0ZS5NT1JFO1xuXHRcdFx0XHRcdHJlc3VsdC5tZFBhdGgucHVzaChtZEZpbGUpO1xuXHRcdFx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVzdWx0Lm1kUGF0aC5wdXNoKG1kRmlsZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGlmIChyZWZOdW0gPiAxKSB7XG5cdFx0cmVzdWx0LnN0YXRlID0gaW1hZ2VSZWZlcmVuY2VkU3RhdGUuTVVUSVBMRTtcblx0fSBlbHNlIHtcblx0XHRyZXN1bHQuc3RhdGUgPSBpbWFnZVJlZmVyZW5jZWRTdGF0ZS5PTkNFO1xuXHR9XG5cdHJldHVybiByZXN1bHQ7XG59O1xuXG5cbi8qKlxuICogXHRcdTkwMUFcdThGQzdcdTVGNTNcdTUyNERtZFx1NjU4N1x1NEVGNlx1NTQ4Q1x1NTZGRVx1NzI0N1x1NTQwRCBcdTgzQjdcdTUzRDYgXHU1NkZFXHU3MjQ3XHU2NTg3XHU0RUY2XHU1QkY5XHU4QzYxICAgXHVGRjBDXHU3QzdCXHU1NzhCXHU0RTNBVEZpbGVcbiAqIFxuXHRAcGFyYW0gY3VycmVudE1kICBcdTVGNTNcdTUyNERcdTk3MDBcdTg5ODFcdTg4QUJcdTUyMjBcdTk2NjRcdTc2ODRjdXJNZFx1NjI0MFx1NTcyOFx1NzY4NG1hcmtkb3duXHU2NTg3XHU0RUY2XG5cdEBwYXJhbSBGaWxlQmFzZU5hbWUgIFx1NUY1M1x1NTI0RFx1OTcwMFx1ODk4MVx1ODhBQlx1NTIyMFx1OTY2NFx1NzY4NGN1ck1kXHU1NDBEIG5hbWUuZXh0ZW5zaW9uXG4gKiAgQHJldHVybnMgIEF0dGFjaEZpbGVcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEZpbGVCeUJhc2VOYW1lID0gKFxuXHRjdXJyZW50TWQ6IFRGaWxlLFxuXHRGaWxlQmFzZU5hbWU6IHN0cmluZ1xuKTogVEZpbGUgfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCByZXNvbHZlZExpbmtzID0gYXBwLm1ldGFkYXRhQ2FjaGUucmVzb2x2ZWRMaW5rcztcblx0Zm9yIChjb25zdCBbbWRGaWxlLCBsaW5rc10gb2YgT2JqZWN0LmVudHJpZXMocmVzb2x2ZWRMaW5rcykpIHtcblx0XHRpZiAoY3VycmVudE1kLnBhdGggPT09IG1kRmlsZSkge1xuXHRcdFx0Zm9yIChjb25zdCBbZmlsZVBhdGgsIG5yXSBvZiBPYmplY3QuZW50cmllcyhsaW5rcykpIHtcblx0XHRcdFx0Ly8gcHJpbnQoJ2ZpbGVQYXRoJywgZmlsZVBhdGgpXG5cdFx0XHRcdC8vIHByaW50KEZpbGVCYXNlTmFtZSlcblx0XHRcdFx0aWYgKGZpbGVQYXRoLmluY2x1ZGVzKEZpbGVCYXNlTmFtZSkpIHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0Y29uc3QgQXR0YWNoRmlsZTogVEZpbGUgPVxuXHRcdFx0XHRcdFx0XHRhcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKGZpbGVQYXRoKSBhcyBURmlsZTtcblx0XHRcdFx0XHRcdGlmIChBdHRhY2hGaWxlIGluc3RhbmNlb2YgVEZpbGUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIEF0dGFjaEZpbGU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoYCBjYW5ub3QgZ2V0IHRoZSBpbWFnZSBmaWxlYCk7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKGVycm9yKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG5cbi8qKlxuICogXHU1MjIwXHU5NjY0XHU2MzA3XHU1QjlBXHU5NjQ0XHU0RUY2XHU2NTg3XHU0RUY2XG4gKlxuICogQHBhcmFtIGZpbGUgIFx1NjMwN1x1NUI5QVx1NzY4NFx1OTY0NFx1NEVGNlx1NjU4N1x1NEVGNlxuICogQHBhcmFtIHBsdWdpbiBcdTVGNTNcdTUyNERcdTYzRDJcdTRFRjZcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBjb25zdCBQdXJlQ2xlYXJBdHRhY2htZW50ID0gYXN5bmMgKFxuXHRmaWxlOiBURmlsZSxcblx0dGFyZ2V0X3R5cGU6IHN0cmluZyxcblx0cGx1Z2luOiBBdHRhY2hGbG93UGx1Z2luXG4pID0+IHtcblx0Y29uc3QgZGVsZXRlT3B0aW9uID0gcGx1Z2luLnNldHRpbmdzLmRlbGV0ZU9wdGlvbjtcblx0Y29uc3QgZGVsRmlsZUZvbGRlciA9IG9ubHlPbmVGaWxlRXhpc3RzKGZpbGUpO1xuXHRjb25zdCBmaWxlRm9sZGVyID0gZ2V0RmlsZVBhcmVudEZvbGRlcihmaWxlKSBhcyBURm9sZGVyO1xuXHRsZXQgbmFtZSA9IHRhcmdldF90eXBlPT0naW1nJyA/ICdJbWFnZScgOiAnRmlsZSc7XG5cdHRyeSB7XG5cdFx0aWYgKGRlbGV0ZU9wdGlvbiA9PT0gXCIudHJhc2hcIikge1xuXHRcdFx0YXdhaXQgYXBwLnZhdWx0LnRyYXNoKGZpbGUsIGZhbHNlKTtcblx0XHRcdG5ldyBOb3RpY2UoXG5cdFx0XHRcdG5hbWUgKyBcIiBtb3ZlZCB0byBPYnNpZGlhbiBUcmFzaCAhXCIsXG5cdFx0XHRcdFNVQ0NFU1NfTk9USUNFX1RJTUVPVVRcblx0XHRcdCk7XG5cdFx0XHRpZiAoZGVsRmlsZUZvbGRlcikge1xuXHRcdFx0XHRhd2FpdCBhcHAudmF1bHQudHJhc2goZmlsZUZvbGRlciwgZmFsc2UpO1xuXHRcdFx0XHRuZXcgTm90aWNlKFwiQXR0YWNobWVudCBmb2xkZXIgaGF2ZSBiZWVuIGRlbGV0ZWQhXCIsIDMwMDApO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoZGVsZXRlT3B0aW9uID09PSBcInN5c3RlbS10cmFzaFwiKSB7XG5cdFx0XHRhd2FpdCBhcHAudmF1bHQudHJhc2goZmlsZSwgdHJ1ZSk7XG5cdFx0XHRuZXcgTm90aWNlKG5hbWUgKyBcIiBtb3ZlZCB0byBTeXN0ZW0gVHJhc2ggIVwiLCBTVUNDRVNTX05PVElDRV9USU1FT1VUKTtcblx0XHRcdGlmIChkZWxGaWxlRm9sZGVyKSB7XG5cdFx0XHRcdGF3YWl0IGFwcC52YXVsdC50cmFzaChmaWxlRm9sZGVyLCB0cnVlKTtcblx0XHRcdFx0bmV3IE5vdGljZShcIkF0dGFjaG1lbnQgZm9sZGVyIGhhdmUgYmVlbiBkZWxldGVkIVwiLCAzMDAwKTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGRlbGV0ZU9wdGlvbiA9PT0gXCJwZXJtYW5lbnRcIikge1xuXHRcdFx0YXdhaXQgYXBwLnZhdWx0LmRlbGV0ZShmaWxlKTtcblx0XHRcdG5ldyBOb3RpY2UobmFtZSArIFwiIGRlbGV0ZWQgUGVybWFuZW50bHkgIVwiLCBTVUNDRVNTX05PVElDRV9USU1FT1VUKTtcblx0XHRcdGlmIChkZWxGaWxlRm9sZGVyKSB7XG5cdFx0XHRcdGF3YWl0IGFwcC52YXVsdC5kZWxldGUoZmlsZUZvbGRlciwgdHJ1ZSk7XG5cdFx0XHRcdG5ldyBOb3RpY2UoXCJBdHRhY2htZW50IGZvbGRlciBoYXZlIGJlZW4gZGVsZXRlZCFcIiwgMzAwMCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGNhdGNoIChlcnJvcikge1xuXHRcdGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuXHRcdG5ldyBOb3RpY2UoXCJGYWlsZCB0byBkZWxlbHRlIHRoZSBcIiArIG5hbWUgKyBcIiFcIiwgU1VDQ0VTU19OT1RJQ0VfVElNRU9VVCk7XG5cdH1cbn07XG5cblxuZXhwb3J0IGNvbnN0IGhhbmRsZXJEZWxGaWxlTmV3ID0gKFxuXHRGaWxlQmFzZU5hbWU6IHN0cmluZyxcblx0Y3VycmVudE1kOiBURmlsZSxcblx0cGx1Z2luOiBBdHRhY2hGbG93UGx1Z2luLFxuXHR0YXJnZXRfdHlwZTogc3RyaW5nLFxuXHR0YXJnZXRfcG9zOiBudW1iZXIsXG5cdGluX3RhYmxlOiBib29sZWFuLFxuXHRpbl9jYWxsb3V0OiBib29sZWFuXG4pID0+IHtcblx0bGV0IGxvZ3M6IHN0cmluZ1tdO1xuXHRsZXQgbW9kYWw7XG5cdGNvbnN0IHRhcmdldF9maWxlID0gZ2V0RmlsZUJ5QmFzZU5hbWUoY3VycmVudE1kLCBGaWxlQmFzZU5hbWUpIGFzIFRGaWxlO1xuXHRjb25zdCByZWZJbmZvID0gY2hlY2tSZWZlcmVuY2VJbmZvKHRhcmdldF9maWxlLCBjdXJyZW50TWQpO1xuXHRsZXQgc3RhdGUgPSByZWZJbmZvLnN0YXRlO1xuXHRzd2l0Y2ggKHN0YXRlKSB7XG5cdFx0Y2FzZSAwOlxuXHRcdFx0Ly8gY2xlYXIgYXR0YWNobWVudCBkaXJlY3RseVxuXHRcdFx0ZGVsZXRlQ3VyVGFyZ2V0TGluayhGaWxlQmFzZU5hbWUsIHBsdWdpbiwgdGFyZ2V0X3R5cGUsIHRhcmdldF9wb3MsIGluX3RhYmxlLCBpbl9jYWxsb3V0KTtcblx0XHRcdFB1cmVDbGVhckF0dGFjaG1lbnQodGFyZ2V0X2ZpbGUsIHRhcmdldF90eXBlLCBwbHVnaW4pO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAxOlxuXHRcdGNhc2UgMjpcblx0XHRcdGRlbGV0ZUN1clRhcmdldExpbmsoRmlsZUJhc2VOYW1lLCBwbHVnaW4sIHRhcmdldF90eXBlLCB0YXJnZXRfcG9zLCBpbl90YWJsZSwgaW5fY2FsbG91dCk7XG5cdFx0XHQvLyByZWZlcmVuY2VkIGJ5IGVpdGhvciBvbmx5IG5vdGUgb3Igb3RoZXIgbXV0aXBsZSBub3RlcyBtb3JlIHRoYW4gb25jZVxuXHRcdFx0bG9ncyA9IHJlZkluZm8ubWRQYXRoIGFzIHN0cmluZ1tdO1xuXHRcdFx0Ly8gXHU3NTMxXHU0RThFXHU2NzA5XHU1MjJCXHU3Njg0XHU1RjE1XHU3NTI4XHVGRjBDXHU2MjQwXHU0RUU1XHU1M0VBXHU1MjIwXHU5NjY0XHU1RjUzXHU1MjREXHU3Njg0XHU1RjE1XHU3NTI4XHU5NEZFXHU2M0E1XHU4MDBDXHU0RTBEXHU1MjIwXHU5NjY0XHU2NTg3XHU0RUY2XG5cdFx0XHRuZXcgTm90aWNlKFwiQXMgb3RoZXIgcmVmZXJlbmNlcyBvZiBjdXJyZW50IGZpbGUgZXhpc3QsIFwiICsgXG5cdFx0XHRcdFwianVzdCBkZWxldGVkIHRoZSBjdXJyZW50IHJlZmVyZW5jZSBsaW5rIHdpdGhvdXQgZGVsZXRpbmcgdGhlIGFjdHVhbCBmaWxlLlwiLCBcblx0XHRcdFx0MzUwMCk7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdGJyZWFrO1xuXHR9XG59XG5cbi8vIFx1NTk4Mlx1Njc5Q1x1NjYyRiB0eXBlIFx1NjYyRiBcImltZ1wiXHVGRjBDXHU1QzMxXHU1MUM2XHU3ODZFXHU1MjIwXHU5NjY0XHU1NkZFXHU3MjQ3XHU1RjE1XHU3NTI4XHU5NEZFXHU2M0E1XHU3Njg0XHU5MEU4XHU1MjA2XHVGRjBDXHU1OTgyXHU2NzlDXHU2NjJGXHU1MTc2XHU0RUQ2XHU3QzdCXHU1NzhCXHVGRjBDXHU3NkY0XHU2M0E1XHU1MjIwXHU5NjY0XHU2NTc0XHU4ODRDXG4vLyB0YXJnZXRfbGluZSBcdUZGMDgxLWJhc2VkXHVGRjA5IFx1NTQ4QyB0YXJnZXRfY2ggXHU2NjJGXHU2MzA3XHU3OTNBXHU5NjQ0XHU0RUY2XHU2MjQwXHU1NzI4XHU3Njg0XHU0RjREXHU3RjZFXG5leHBvcnQgY29uc3QgZGVsZXRlQ3VyVGFyZ2V0TGluayA9IChcblx0ZmlsZV9iYXNlX25hbWU6IHN0cmluZyxcblx0cGx1Z2luOiBBdHRhY2hGbG93UGx1Z2luLFxuXHR0YXJnZXRfdHlwZTogc3RyaW5nLFxuXHR0YXJnZXRfcG9zOiBudW1iZXIsXG5cdGluX3RhYmxlOiBib29sZWFuLFxuXHRpbl9jYWxsb3V0OiBib29sZWFuXG4pID0+IHtcblx0ZmlsZV9iYXNlX25hbWUgPSBmaWxlX2Jhc2VfbmFtZS5zdGFydHNXaXRoKCcvJykgPyBmaWxlX2Jhc2VfbmFtZS5zdWJzdHJpbmcoMSk6ZmlsZV9iYXNlX25hbWU7XG5cdGNvbnN0IGFjdGl2ZVZpZXcgPSBwbHVnaW4uYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldykgYXMgTWFya2Rvd25WaWV3O1xuXHRjb25zdCBlZGl0b3IgPSBhY3RpdmVWaWV3LmVkaXRvcjtcblx0Ly8gIEB0cy1leHBlY3QtZXJyb3IsIG5vdCB0eXBlZFxuXHRjb25zdCBlZGl0b3JWaWV3ID0gZWRpdG9yLmNtIGFzIEVkaXRvclZpZXc7XG5cblx0bGV0IHRhcmdldF9saW5lID0gZWRpdG9yVmlldy5zdGF0ZS5kb2MubGluZUF0KHRhcmdldF9wb3MpO1xuXHRsZXQgbGluZV90ZXh0ID0gdGFyZ2V0X2xpbmUudGV4dDtcblxuXHRpZiAoIWluX3RhYmxlICYmICFpbl9jYWxsb3V0KXtcblx0XHRsZXQgZmluZHMgPSBmaW5kTGlua0luTGluZShmaWxlX2Jhc2VfbmFtZSwgbGluZV90ZXh0KTtcblx0XHRpZiAoZmluZHMubGVuZ3RoID09IDApe1xuXHRcdFx0bmV3IE5vdGljZShcIkZhaWwgdG8gZmluZCB0aGUgbGluay10ZXh0LCBwbGVhc2UgZGVsZXRlIGl0IG1hbnVhbGx5IVwiLCAwKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0ZWxzZSBpZihmaW5kcy5sZW5ndGggIT0gMSl7XG5cdFx0XHRuZXcgTm90aWNlKFwiRmluZCBtdWx0aXBsZSBzYW1lIExpbmsgaW4gY3VycmVudCBsaW5lLCBwbGVhc2UgZGVsZXRlIGl0IG1hbnVhbGx5IVwiLCAwKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0ZWxzZXtcblx0XHRcdC8vIGVkaXRvclZpZXcuZGlzcGF0Y2goe2NoYW5nZXM6IHtmcm9tOiB0YXJnZXRfbGluZS5mcm9tICsgZmluZHNbMF1bMF0sIHRvOiB0YXJnZXRfbGluZS5mcm9tICsgZmluZHNbMF1bMV0sIGluc2VydDogJyd9fSk7XG5cdFx0XHRlZGl0b3IucmVwbGFjZVJhbmdlKCcnLCB7bGluZTogdGFyZ2V0X2xpbmUubnVtYmVyLTEsIGNoOiBmaW5kc1swXVswXX0sIHtsaW5lOiB0YXJnZXRfbGluZS5udW1iZXItMSwgY2g6IGZpbmRzWzBdWzFdfSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHR9XG5cblx0dHlwZSBSZWdEaWN0aW9uYXJ5ID0ge1xuXHRcdFtrZXk6IHN0cmluZ106IFJlZ0V4cDtcblx0fTtcblx0XG5cdGxldCBzdGFydFJlZzogUmVnRGljdGlvbmFyeSA9IHtcblx0XHQndGFibGUnOiAvXlxccypcXHwvLFxuXHRcdCdjYWxsb3V0JzogL14+Lyxcblx0fTtcblxuXHRsZXQgbW9kZSA9IGluX3RhYmxlID8gJ3RhYmxlJyA6ICdjYWxsb3V0Jztcblx0bGV0IGZpbmRzX2xpbmVzOiBudW1iZXJbXSA9IFtdO1xuXHRsZXQgZmluZHNfYWxsOiBbZnJvbTpudW1iZXIsIHRvOm51bWJlcl1bXSA9IFtdO1xuXHRmb3IgKGxldCBpPXRhcmdldF9saW5lLm51bWJlcjsgaTw9ZWRpdG9yLmxpbmVDb3VudCgpOyBpKyspe1xuXHRcdGxldCBsaW5lX3RleHQgPSBlZGl0b3IuZ2V0TGluZShpLTEpO1xuXHRcdGlmICghc3RhcnRSZWdbbW9kZV0udGVzdChsaW5lX3RleHQpKSBicmVhaztcblx0XHRwcmludChgbGluZV8ke2l9X3RleHQ6YCwgbGluZV90ZXh0KVxuXHRcdGxldCBmaW5kcyA9IGZpbmRMaW5rSW5MaW5lKGZpbGVfYmFzZV9uYW1lLCBsaW5lX3RleHQpO1xuXHRcdGlmIChmaW5kcy5sZW5ndGggPiAwKXtcblx0XHRcdGZpbmRzX2xpbmVzLnB1c2goLi4ubmV3IEFycmF5KGZpbmRzLmxlbmd0aCkuZmlsbChpKSk7XG5cdFx0XHRmaW5kc19hbGwucHVzaCguLi5maW5kcyk7XG5cdFx0fVxuXHR9XG5cblx0Zm9yIChsZXQgaT10YXJnZXRfbGluZS5udW1iZXItMTsgaT49MTsgaS0tKXtcblx0XHRsZXQgbGluZV90ZXh0ID0gZWRpdG9yLmdldExpbmUoaS0xKTtcblx0XHRpZiAoIXN0YXJ0UmVnW21vZGVdLnRlc3QobGluZV90ZXh0KSkgYnJlYWs7XG5cdFx0cHJpbnQoYGxpbmVfJHtpfV90ZXh0OmAsIGxpbmVfdGV4dClcblx0XHRsZXQgZmluZHMgPSBmaW5kTGlua0luTGluZShmaWxlX2Jhc2VfbmFtZSwgbGluZV90ZXh0KTtcblx0XHRpZiAoZmluZHMubGVuZ3RoID4gMCl7XG5cdFx0XHRmaW5kc19saW5lcy5wdXNoKC4uLm5ldyBBcnJheShmaW5kcy5sZW5ndGgpLmZpbGwoaSkpO1xuXHRcdFx0ZmluZHNfYWxsLnB1c2goLi4uZmluZHMpO1xuXHRcdH1cblx0fVxuXG5cdGlmIChmaW5kc19hbGwubGVuZ3RoID09IDApe1xuXHRcdG5ldyBOb3RpY2UoYEZhaWwgdG8gZmluZCB0aGUgbGluay10ZXh0IChmb3IgbGlua3MgaW4gJHttb2RlfSksIHBsZWFzZSBkZWxldGUgaXQgbWFudWFsbHkhYCwgMCk7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGVsc2UgaWYoZmluZHNfYWxsLmxlbmd0aCAhPSAxKXtcblx0XHRuZXcgTm90aWNlKGBGaW5kIG11bHRpcGxlIHNhbWUgTGluayBpbiBjdXJyZW50ICR7bW9kZX0sIHBsZWFzZSBkZWxldGUgaXQgbWFudWFsbHkhYCwgMCk7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGVsc2V7XG5cdFx0ZWRpdG9yLnJlcGxhY2VSYW5nZSgnJywge2xpbmU6IGZpbmRzX2xpbmVzWzBdLTEsIGNoOiBmaW5kc19hbGxbMF1bMF19LCB7bGluZTogZmluZHNfbGluZXNbMF0tMSwgY2g6IGZpbmRzX2FsbFswXVsxXX0pO1xuXHR9XG5cblx0ZWRpdG9yLmZvY3VzKCk7XG59XG5cbi8vIGNvcHkgaW1nIGZpbGUgdG8gY2xpcGJvYXJkXG5leHBvcnQgY29uc3QgaGFuZGxlckNvcHlGaWxlID0gYXN5bmMgKFxuXHRGaWxlQmFzZU5hbWU6IHN0cmluZyxcblx0Y3VycmVudE1kOiBURmlsZSxcblx0cGx1Z2luOiBBdHRhY2hGbG93UGx1Z2luXG4pID0+IHtcblx0Y29uc3QgZmlsZSA9IGdldEZpbGVCeUJhc2VOYW1lKGN1cnJlbnRNZCwgRmlsZUJhc2VOYW1lKSBhcyBURmlsZTtcblx0Y29uc3QgYmFzZVBhdGggPSAoZmlsZS52YXVsdC5hZGFwdGVyIGFzIGFueSkuYmFzZVBhdGhcblx0Y29uc3QgZmlsZV9hYl9wYXRoID0gYmFzZVBhdGggKyAnLycgKyBmaWxlLnBhdGhcblxuXHR0cnl7XG5cdFx0Y29weUZpbGVUb0NsaXBib2FyZENNRChmaWxlX2FiX3BhdGgpO1xuXHRcdG5ldyBOb3RpY2UoXCJDb3BpZWQgdG8gY2xpcGJvYXJkICFcIiwgU1VDQ0VTU19OT1RJQ0VfVElNRU9VVCk7XG5cdH1cblx0Y2F0Y2ggKGVycm9yKSB7XG5cdFx0Y29uc29sZS5lcnJvcihlcnJvcik7XG5cdFx0bmV3IE5vdGljZShcIkZhaWxkIHRvIGNvcHkgdGhlIGZpbGUgIVwiLCBTVUNDRVNTX05PVElDRV9USU1FT1VUKTtcblx0fVxufVxuXG5leHBvcnQgY29uc3QgaGFuZGxlck1vdmVGaWxlID0gYXN5bmMgKFxuXHRGaWxlQmFzZU5hbWU6IHN0cmluZyxcblx0Y3VycmVudE1kOiBURmlsZSxcblx0cGx1Z2luOiBBdHRhY2hGbG93UGx1Z2luXG4pID0+IHtcblx0Y29uc3QgdGFyZ2V0X2ZpbGUgPSBnZXRGaWxlQnlCYXNlTmFtZShjdXJyZW50TWQsIEZpbGVCYXNlTmFtZSkgYXMgVEZpbGU7XG5cdG5ldyBtb3ZlRmlsZVRvRm9sZGVyU3VnZ2VzdGVyKHBsdWdpbi5hcHAsIHRhcmdldF9maWxlKS5vcGVuKCk7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBmaWxlIHRhcmdldCBkZWxldGVkIGZpbGVcbiAqIEByZXR1cm5zIHBhcmVudCBmb2xkZXIgb3IgdW5kZWZpZW5kXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRGaWxlUGFyZW50Rm9sZGVyID0gKGZpbGU6IFRGaWxlKTogVEZvbGRlciB8IHVuZGVmaW5lZCA9PiB7XG5cdGlmIChmaWxlIGluc3RhbmNlb2YgVEZpbGUpIHtcblx0XHRpZiAoZmlsZS5wYXJlbnQgaW5zdGFuY2VvZiBURm9sZGVyKSB7XG5cdFx0XHRyZXR1cm4gZmlsZS5wYXJlbnQ7XG5cdFx0fVxuXHR9XG5cdHJldHVybjtcbn07XG4vKipcbiAqXG4gKiBAcGFyYW0gZmlsZVxuICogQHJldHVybnNcbiAqL1xuY29uc3Qgb25seU9uZUZpbGVFeGlzdHMgPSAoZmlsZTogVEZpbGUpOiBib29sZWFuID0+IHtcblx0Y29uc3QgZmlsZUZvbGRlciA9IGdldEZpbGVQYXJlbnRGb2xkZXIoZmlsZSkgYXMgVEZvbGRlcjtcblx0cmV0dXJuIGZpbGVGb2xkZXIuY2hpbGRyZW4ubGVuZ3RoID09PSAxO1xufTtcblxuXG4vLyBcdThDMDNcdTc1MjhcdTdDRkJcdTdFREZcdTU0N0RcdTRFRTRcdTU5MERcdTUyMzZcdTY1ODdcdTRFRjZcdTUyMzBcdTdDRkJcdTdFREZcdTUyNkFcdThEMzRcdTY3N0ZcbmZ1bmN0aW9uIGNvcHlGaWxlVG9DbGlwYm9hcmRDTUQoZmlsZVBhdGg6IHN0cmluZykge1xuXG5cdGlmICghZXhpc3RzU3luYyhmaWxlUGF0aCkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRmlsZSAke2ZpbGVQYXRofSBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY2FsbGJhY2sgPSAoZXJyb3I6IEVycm9yIHwgbnVsbCwgc3Rkb3V0OiBzdHJpbmcsIHN0ZGVycjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmIChlcnJvcikge1xuXHRcdFx0bmV3IE5vdGljZShgRXJyb3IgZXhlY3V0aW5nIGNvbW1hbmQ6ICR7ZXJyb3IubWVzc2FnZX1gLCBTVUNDRVNTX05PVElDRV9USU1FT1VUKTtcblx0XHRcdGNvbnNvbGUuZXJyb3IoYEVycm9yIGV4ZWN1dGluZyBjb21tYW5kOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG5cdFx0XHRyZXR1cm47XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICdkYXJ3aW4nKSB7XG5cdFx0Ly8gXHU4OUUzXHU1MUIzXHU2NUI5XHU2ODQ4MTogXHU0RjFBXHU4QzAzXHU1MUZBRmluZGVyXHVGRjBDXHU0RUE3XHU3NTFGXHU3N0FDXHU5NUY0XHU3Njg0XHU3QTk3XHU1M0UzXHVGRjBDXHU0RjQ2XHU2NjJGXHU4QkU1XHU1OTBEXHU1MjM2XHU2NENEXHU0RjVDXHU1QjhDXHU1MTY4XHU2NjJGXHU3Q0ZCXHU3RURGXHU3RUE3XHU1MjJCXHU3Njg0XHVGRjBDXHU2Q0ExXHU2NzA5XHU0RUZCXHU0RjU1XHU5NjUwXHU1MjM2XG5cdFx0ZXhlY1N5bmMoYG9wZW4gLVIgXCIke2ZpbGVQYXRofVwiYCk7XG4gICAgICAgIGV4ZWNTeW5jKGBvc2FzY3JpcHQgLWUgJ3RlbGwgYXBwbGljYXRpb24gXCJTeXN0ZW0gRXZlbnRzXCIgdG8ga2V5c3Ryb2tlIFwiY1wiIHVzaW5nIGNvbW1hbmQgZG93bidgKTtcbiAgICAgICAgZXhlY1N5bmMoYG9zYXNjcmlwdCAtZSAndGVsbCBhcHBsaWNhdGlvbiBcIlN5c3RlbSBFdmVudHNcIiB0byBrZXlzdHJva2UgXCJ3XCIgdXNpbmcgY29tbWFuZCBkb3duJ2ApO1xuXHRcdGV4ZWNTeW5jKGBvcGVuIC1hIFwiT2JzaWRpYW4uYXBwXCJgKTtcblxuXHRcdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0XHQvLyBcdTZENEJcdThCRDVcdTUyMDdcdTYzNjJcdThGOTNcdTUxNjVcdTZDRDVcdTY1QjlcdTY4NDg6IFx1NkEyMVx1NjJERlNoaWZ0XHU5NTJFXHU2MzA5XHU0RTBCXHVGRjBDXHU0RjQ2XHU2NjJGXHU1OTMxXHU4RDI1XHU0RTg2XG5cdFx0Ly8gZXhlY1N5bmMoYG9zYXNjcmlwdCAtZSAndGVsbCBhcHBsaWNhdGlvbiBcIlN5c3RlbSBFdmVudHNcIiB0byBrZXkgZG93biBzaGlmdCdgKTtcblx0XHQvLyBleGVjU3luYyhgb3Nhc2NyaXB0IC1lICdkZWxheSAwLjA1J2ApO1xuXHRcdC8vIGV4ZWNTeW5jKGBvc2FzY3JpcHQgLWUgJ3RlbGwgYXBwbGljYXRpb24gXCJTeXN0ZW0gRXZlbnRzXCIgdG8ga2V5IHVwIHNoaWZ0J2ApO1xuXHRcdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRcdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0XHQvLyBcdTUzRTZcdTRFMDBcdTc5Q0RcdTg5RTNcdTUxQjNcdTY1QjlcdTY4NDhcdUZGMENcdTRFMERcdTRGMUFcdThDMDNcdTUxRkFGaW5kZXJcdUZGMENcdTRGNDZcdTY2MkZcdTU5MERcdTUyMzZcdTc2ODRcdTY1ODdcdTRFRjZcdTY1RTBcdTZDRDVcdTdDOThcdThEMzRcdTUyMzB3b3JkXHU2MjE2XHU4MDA1XHU1RkFFXHU0RkUxXHU0RTJEXG5cdFx0Ly8gY29uc3QgYXBwbGVTY3JpcHQgPSBgXG5cdFx0Ly8gXHRvbiBydW4gYXJnc1xuXHRcdC8vIFx0XHRzZXQgdGhlIGNsaXBib2FyZCB0byBQT1NJWCBmaWxlIChmaXJzdCBpdGVtIG9mIGFyZ3MpXG5cdFx0Ly8gXHRlbmRcblx0XHQvLyBcdGA7XG5cdFx0Ly8gZXhlYyhgb3Nhc2NyaXB0IC1lICcke2FwcGxlU2NyaXB0fScgXCIke2ZpbGVQYXRofVwiYCwgY2FsbGJhY2spO1xuXHRcdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2xpbnV4Jykge1xuXHRcdC8vIFx1NzZFRVx1NTI0RFx1NjVCOVx1Njg0OFxuXHRcdC8vIHhjbGlwIC1zZWxlY3Rpb24gY2xpcGJvYXJkIC10ICQoZmlsZSAtLW1pbWUtdHlwZSAtYiAvcGF0aC90by95b3VyL2ZpbGUpIC1pIC9wYXRoL3RvL3lvdXIvZmlsZVxuICAgICAgICAvLyBleGVjKGB4Y2xpcCAtc2VsZWN0aW9uIGMgPCAke2ZpbGVQYXRofWAsIGNhbGxiYWNrKTtcblx0XHQvLyBleGVjKGB4Y2xpcCAtc2VsZWN0aW9uIGNsaXBib2FyZCAtdCAkKGZpbGUgLS1taW1lLXR5cGUgLWIgXCIke2ZpbGVQYXRofVwiKSAtaSBcIiR7ZmlsZVBhdGh9XCJgLCBjYWxsYmFjayk7XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInKSB7XG5cdFx0Ly8gXHU1RjUzXHU2NTg3XHU0RUY2XHU4REVGXHU1Rjg0XHU1MzA1XHU1NDJCICdcblx0XHQvLyBcdTU3MjhQb3dlclNoZWxsXHU0RTJEXHVGRjBDXHU1MzU1XHU1RjE1XHU1M0Y3XHU1QjU3XHU3QjI2XHU0RTMyXHU2NjJGXHU3NkY0XHU2M0E1XHU3Njg0XHU1QjU3XHU3QjI2XHU0RTMyXHVGRjBDXHU1MTg1XHU5MEU4XHU3Njg0XHU1MzU1XHU1RjE1XHU1M0Y3XHU2NUUwXHU2Q0Q1XHU5MDFBXHU4RkM3XHU1M0NEXHU2NTlDXHU3RUJGXHU2NzY1XHU4RjZDXHU0RTQ5XHVGRjBDXHU0RjQ2XHU2NjJGXHU1M0VGXHU0RUU1XHU5MDFBXHU4RkM3XHU1NzI4XHU1MzU1XHU1RjE1XHU1M0Y3XHU1MjREXHU1MThEXHU1MkEwXHU0RTAwXHU0RTJBXHU1MzU1XHU1RjE1XHU1M0Y3XHU2NzY1XHU4RkRCXHU4ODRDXHU4RjZDXHU0RTQ5XHUzMDAyXG5cdFx0bGV0IHNhZmVGaWxlUGF0aCA9IGZpbGVQYXRoLnJlcGxhY2UoLycvZywgXCInJ1wiKTtcbiAgICAgICAgZXhlYyhgcG93ZXJzaGVsbCAtY29tbWFuZCBcIlNldC1DbGlwYm9hcmQgLVBhdGggJyR7c2FmZUZpbGVQYXRofSdcImAsIGNhbGxiYWNrKTtcbiAgICB9XG59XG5cbmNvbnN0IGZpbmRMaW5rSW5MaW5lID0gKGZpbGVfbmFtZTogc3RyaW5nLCBsaW5lX3RleHQ6IHN0cmluZykgPT57XG5cdGNvbnN0IGZpbGVfbmFtZV9tZGxpbmsgPSBmaWxlX25hbWUucmVwbGFjZSgvIC9nLCAnJTIwJyk7XG5cdGxldCByZWdXaWtpTGluayA9IC9cXCFcXFtcXFtbXlxcW1xcXV0qP1xcXVxcXS9nO1xuICAgIGxldCByZWdNZExpbmsgPSAvXFwhXFxbW15cXFtcXF1dKj9cXF1cXChbXlxcc1xcKVxcKFxcW1xcXVxce1xcfSddKlxcKS9nO1xuXHRwcmludCgndGFyZ2V0X25hbWUgKFdJS0kvTUQpOicsIGZpbGVfbmFtZSwgZmlsZV9uYW1lX21kbGluaylcblxuXHQvLyBjb25zb2xlLmxvZygnc2VhcmNoIGluIGxpbmVfdGV4dDonLCBsaW5lX3RleHQpXG5cdGxldCBzZWFyY2hfcmVzdWx0OiBbZnJvbTpudW1iZXIsIHRvOm51bWJlcl1bXSA9IFtdXG5cdGlmIChsaW5lX3RleHQuaW5jbHVkZXMoZmlsZV9uYW1lKSl7XG5cdFx0d2hpbGUodHJ1ZSl7XG5cdFx0XHRsZXQgbWF0Y2ggPSByZWdXaWtpTGluay5leGVjKGxpbmVfdGV4dCk7XG5cdFx0XHRpZighbWF0Y2gpIGJyZWFrO1xuXHRcdFx0bGV0IG1hdGNoZWRfbGluayA9IG1hdGNoWzBdO1xuXHRcdFx0cHJpbnQoJ21hdGNoZWRfbGluazonLCBtYXRjaGVkX2xpbmspXG5cdFx0XHRwcmludCgnbWF0Y2hlZF9saW5rLmluY2x1ZGVzKGZpbGVfbmFtZSknLCBtYXRjaGVkX2xpbmsuaW5jbHVkZXMoZmlsZV9uYW1lKSlcblx0XHRcdGlmIChtYXRjaGVkX2xpbmsuaW5jbHVkZXMoZmlsZV9uYW1lKSl7XG5cdFx0XHRcdHNlYXJjaF9yZXN1bHQucHVzaChbbWF0Y2guaW5kZXgsIG1hdGNoLmluZGV4K21hdGNoZWRfbGluay5sZW5ndGhdKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpZiAobGluZV90ZXh0LmluY2x1ZGVzKGZpbGVfbmFtZV9tZGxpbmspKXtcblx0XHR3aGlsZSh0cnVlKXtcblx0XHRcdGxldCBtYXRjaCA9IHJlZ01kTGluay5leGVjKGxpbmVfdGV4dCk7XG5cdFx0XHRpZighbWF0Y2gpIGJyZWFrO1xuXHRcdFx0bGV0IG1hdGNoZWRfbGluayA9IG1hdGNoWzBdO1xuXHRcdFx0cHJpbnQoJ21hdGNoZWRfbGluazonLCBtYXRjaGVkX2xpbmspXG5cdFx0XHRwcmludCgnbWF0Y2hlZF9saW5rLmluY2x1ZGVzKGZpbGVfbmFtZV9tZGxpbmspJywgbWF0Y2hlZF9saW5rLmluY2x1ZGVzKGZpbGVfbmFtZV9tZGxpbmspKVxuXHRcdFx0aWYgKG1hdGNoZWRfbGluay5pbmNsdWRlcyhmaWxlX25hbWVfbWRsaW5rKSl7XG5cdFx0XHRcdHNlYXJjaF9yZXN1bHQucHVzaChbbWF0Y2guaW5kZXgsIG1hdGNoLmluZGV4K21hdGNoZWRfbGluay5sZW5ndGhdKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIHNlYXJjaF9yZXN1bHQ7XG59XG5cblxuZXhwb3J0IGNvbnN0IGhhbmRsZXJSZW5hbWVGaWxlID0gKFxuXHRGaWxlQmFzZU5hbWU6IHN0cmluZyxcblx0Y3VycmVudE1kOiBURmlsZSxcblx0cGx1Z2luOiBBdHRhY2hGbG93UGx1Z2luXG4pID0+IHtcblx0Y29uc3QgdGFyZ2V0X2ZpbGUgPSBnZXRGaWxlQnlCYXNlTmFtZShjdXJyZW50TWQsIEZpbGVCYXNlTmFtZSkgYXMgVEZpbGU7XG5cdGxldCBwYXRoID0gdGFyZ2V0X2ZpbGUucGF0aDtcblx0bGV0IG5hbWUgPSB0YXJnZXRfZmlsZS5uYW1lO1xuXHRsZXQgdGFyZ2V0X2ZvbGRlciA9IHBhdGguc3Vic3RyaW5nKDAsIHBhdGgubGVuZ3RoLW5hbWUubGVuZ3RoKTtcblx0bGV0IGZpbGVfdHlwZSA9IG5hbWUuc3BsaXQoJy4nKS5wb3AoKSBhcyBzdHJpbmc7XG5cdG5ldyBSZW5hbWVNb2RhbChwbHVnaW4uYXBwLCBcblx0XHR0YXJnZXRfZm9sZGVyLCBcblx0XHRuYW1lLnN1YnN0cmluZygwLCBuYW1lLmxlbmd0aC1maWxlX3R5cGUubGVuZ3RoLTEpLCBcblx0XHRmaWxlX3R5cGUsIFxuXHRcdChyZXN1bHQpID0+IHtcblx0XHRpZiAoIXJlc3VsdCkgcmV0dXJuO1xuXHRcdGlmKHJlc3VsdD09cGF0aCkgcmV0dXJuO1xuXHRcdGFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhyZXN1bHQpXG5cdFx0LnRoZW4oKGV4aXN0cykgPT4ge1xuXHRcdFx0aWYoZXhpc3RzKSB7XG5cdFx0XHRcdG5ldyBOb3RpY2UoYEZhaWwgdG8gcmVuYW1lIGZvciB0aGVyZSBhbHJlYXkgZXhpc3QgZmlsZSAke3Jlc3VsdH1gKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHBsdWdpbi5hcHAuZmlsZU1hbmFnZXIucmVuYW1lRmlsZSh0YXJnZXRfZmlsZSwgYCR7cmVzdWx0fWApO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9KS5vcGVuKCk7XG59XG5cblxuXG5leHBvcnQgY2xhc3MgUmVuYW1lTW9kYWwgZXh0ZW5kcyBNb2RhbCB7XG5cdHJlc3VsdDogc3RyaW5nO1xuXHRmb2xkZXI6IHN0cmluZztcblx0bmFtZTogc3RyaW5nO1xuXHRmaWxldHlwZTogc3RyaW5nO1xuXHRvblN1Ym1pdDogKHJlc3VsdDogc3RyaW5nKSA9PiB2b2lkO1xuICBcblx0Y29uc3RydWN0b3IoYXBwOiBBcHAsIGZvbGRlcjpzdHJpbmcsIG5hbWU6c3RyaW5nLCBmaWxldHlwZTpzdHJpbmcsIG9uU3VibWl0OiAocmVzdWx0OiBzdHJpbmcpID0+IHZvaWQpIHtcblx0ICBzdXBlcihhcHApO1xuXHQgIHRoaXMub25TdWJtaXQgPSBvblN1Ym1pdDtcblx0ICB0aGlzLmZvbGRlciA9IGZvbGRlcjtcblx0ICB0aGlzLm5hbWUgPSBuYW1lO1xuXHQgIHRoaXMuZmlsZXR5cGUgPSBmaWxldHlwZTtcblx0fVxuICBcblx0b25PcGVuKCkge1xuXHRcdGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xuXHRcdGxldCBzZXR0aW5nID0gbmV3IFNldHRpbmcoY29udGVudEVsKVxuXHRcdFx0LnNldE5hbWUoXCJSZW5hbWU6XCIpXG5cdFx0XHQuYWRkVGV4dCh0ZXh0ID0+IHRleHRcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMubmFtZSlcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucmVzdWx0ID0gYCR7dGhpcy5mb2xkZXJ9JHt2YWx1ZX0uJHt0aGlzLmZpbGV0eXBlfWA7XG5cdFx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdC8vIFx1NEY3RiBET00gXHU2NzA5XHU4REIzXHU1OTFGXHU3Njg0XHU2NUY2XHU5NUY0XHU2RTMyXHU2N0QzXHU4ODY4XHU1MzU1XHU1MTQzXHU3RDIwXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRsZXQgaW5wdXRCb3ggPSBzZXR0aW5nLnNldHRpbmdFbC5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwidGV4dFwiXScpO1xuXHRcdFx0aWYgKGlucHV0Qm94ICYmIGlucHV0Qm94LnBhcmVudEVsZW1lbnQpIHtcblx0XHRcdFx0bGV0IGZvbGRlcl9pbmRpY2F0b3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJlbCcpO1xuXHRcdFx0XHRmb2xkZXJfaW5kaWNhdG9yLmlubmVyVGV4dCA9IGAke3RoaXMuZm9sZGVyfWA7XG5cdFx0XHRcdGZvbGRlcl9pbmRpY2F0b3Iuc3R5bGUubWFyZ2luUmlnaHQgPSAnNHB4JzsgIC8vIFx1NTNFRlx1NEVFNVx1NjgzOVx1NjM2RVx1OTcwMFx1ODk4MVx1OEMwM1x1NjU3NFx1OTVGNFx1OERERFxuXHRcdFx0XHRpbnB1dEJveC5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShmb2xkZXJfaW5kaWNhdG9yLCBpbnB1dEJveCk7XG5cblx0XHRcdFx0bGV0IGZpbGVfdHlwZV9pbmRpY2F0b3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJlbCcpO1xuXHRcdFx0XHRmaWxlX3R5cGVfaW5kaWNhdG9yLmlubmVyVGV4dCA9IGAuJHt0aGlzLmZpbGV0eXBlfWA7XG5cdFx0XHRcdGZpbGVfdHlwZV9pbmRpY2F0b3Iuc3R5bGUubWFyZ2luTGVmdCA9ICc0cHgnOyAgLy8gXHU1M0VGXHU0RUU1XHU2ODM5XHU2MzZFXHU5NzAwXHU4OTgxXHU4QzAzXHU2NTc0XHU5NUY0XHU4REREXG5cdFx0XHRcdGlucHV0Qm94LmFmdGVyKGZpbGVfdHlwZV9pbmRpY2F0b3IpO1xuXG5cdFx0XHRcdC8vIFx1ODNCN1x1NTNENlx1OEJCRVx1N0Y2RVx1NzU0Q1x1OTc2Mlx1NzY4NFx1NEUwQVx1N0VBN1x1NTE0M1x1N0QyMCBcblx0XHRcdFx0bGV0IHBhcmVudEVsID0gc2V0dGluZy5zZXR0aW5nRWwucGFyZW50RWxlbWVudDtcblx0XHRcdFx0aWYgKHBhcmVudEVsKSB7XG5cdFx0XHRcdFx0Ly8gXHU0RjdGXHU1MTc2XHU1QjUwXHU1MTQzXHU3RDIwXHU1QzQ1XHU0RTJEXHU2NjNFXHU3OTNBXG5cdFx0XHRcdFx0cGFyZW50RWwuc3R5bGUuZGlzcGxheSA9ICdmbGV4Jztcblx0XHRcdFx0XHRwYXJlbnRFbC5zdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdjZW50ZXInO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIFx1OEY2Q1x1NjM2MmlucHV0Qm94XHU3QzdCXHU1NzhCXHU1RTc2XHU5MDA5XHU2MkU5XHU4RjkzXHU1MTY1XHU2ODQ2XHU3Njg0XHU2NTg3XHU2NzJDXG5cdFx0XHRcdGxldCBpbnB1dEVsZW0gPSBpbnB1dEJveCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXHRcdFx0XHRpbnB1dEVsZW0uc2VsZWN0KCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKFwiXHU2NUUwXHU2Q0Q1XHU2MjdFXHU1MjMwXHU2NTg3XHU2NzJDXHU4RjkzXHU1MTY1XHU2ODQ2XCIpO1xuXHRcdFx0fVxuXHRcdH0sIDApO1xuXG5cdFx0Ly8gRW50ZXIgdG8gc3VibWl0XG5cdFx0dGhpcy5zY29wZS5yZWdpc3RlcihbXSwgXCJFbnRlclwiLCAoZXZ0OiBLZXlib2FyZEV2ZW50KSA9PiB7XG5cdFx0XHRpZiAoZXZ0LmlzQ29tcG9zaW5nKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHRoaXMuY2xvc2UoKTtcblx0XHRcdHRoaXMub25TdWJtaXQodGhpcy5yZXN1bHQpO1xuXHRcdH0pO1xuXHR9XG5cblx0b25DbG9zZSgpIHtcblx0XHRsZXQgeyBjb250ZW50RWwgfSA9IHRoaXM7XG5cdFx0Y29udGVudEVsLmVtcHR5KCk7XG5cdH1cbn1cblxuXG5cbmNsYXNzIG1vdmVGaWxlVG9Gb2xkZXJTdWdnZXN0ZXIgZXh0ZW5kcyBGdXp6eVN1Z2dlc3RNb2RhbDxzdHJpbmc+IHtcblx0cHJpdmF0ZSBmb2xkZXJMaXN0OiBTZXQ8c3RyaW5nPjtcblx0dGFyZ2V0X2ZpbGU6IFRGaWxlO1xuXG5cdGNvbnN0cnVjdG9yKGFwcDogQXBwLCBmaWxlOiBURmlsZSkge1xuXHRcdHN1cGVyKGFwcCk7XG5cdFx0dGhpcy5mb2xkZXJMaXN0ID0gdGhpcy5nZXRBbGxGb2xkZXJzKHRoaXMuYXBwLnZhdWx0KTtcblx0XHR0aGlzLnRhcmdldF9maWxlID0gZmlsZTtcblx0fVxuXG5cdGdldEFsbEZvbGRlcnModmF1bHQ6IFZhdWx0KTogU2V0PHN0cmluZz4ge1xuXHRcdGNvbnN0IGZvbGRlcnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblx0XHR2YXVsdC5nZXRBbGxMb2FkZWRGaWxlcygpLmZvckVhY2goZmlsZSA9PiB7XG5cdFx0XHQvLyBcdTUyMjRcdTY1QURcdTY2MkZcdTU0MjZcdTY2MkYgVEZvbGRlciBcdTdDN0JcdTU3OEJcblx0XHRcdGlmIChmaWxlIGluc3RhbmNlb2YgVEZvbGRlcikge1xuXHRcdFx0XHRmb2xkZXJzLmFkZChmaWxlLnBhdGgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiBmb2xkZXJzO1xuXHR9XG5cblx0Z2V0SXRlbXMoKTogc3RyaW5nW10ge1xuXHRcdHJldHVybiBBcnJheS5mcm9tKHRoaXMuZm9sZGVyTGlzdCkuc29ydCgpO1xuXHR9XG5cblx0Z2V0SXRlbVRleHQoaXRlbTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gaXRlbTtcblx0fVxuXG5cdGFzeW5jIG9uQ2hvb3NlSXRlbShpdGVtOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAodGhpcy50YXJnZXRfZmlsZS5wYXJlbnQ/LnBhdGggPT09IGl0ZW0pIHtcblx0XHRcdG5ldyBOb3RpY2UoXCJUaGUgZmlsZSBpcyBhbHJlYWR5IGluIHRoZSBmb2xkZXIhXCIsIDMwMDApO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRsZXQgY2hvb3NlZF9mb2xkZXIgPSBpdGVtLmVuZHNXaXRoKCcvJykgPyBpdGVtIDogaXRlbSArICcvJztcblx0XHRsZXQgbmV3X3BhdGggPSBjaG9vc2VkX2ZvbGRlciArIHRoaXMudGFyZ2V0X2ZpbGUubmFtZTtcblx0XHRwcmludChuZXdfcGF0aClcblx0XHRhcHAudmF1bHQuYWRhcHRlci5leGlzdHMobmV3X3BhdGgpXG5cdFx0LnRoZW4oKGV4aXN0cykgPT4ge1xuXHRcdFx0aWYoZXhpc3RzKSB7XG5cdFx0XHRcdG5ldyBOb3RpY2UoYEZhaWwgdG8gbW92ZSBmb3IgdGhlcmUgYWxyZWF5IGV4aXN0IGZpbGUgJHtuZXdfcGF0aH1gKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuYXBwLmZpbGVNYW5hZ2VyLnJlbmFtZUZpbGUodGhpcy50YXJnZXRfZmlsZSwgYCR7bmV3X3BhdGh9YCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRyZW5kZXJTdWdnZXN0aW9uKGl0ZW06IEZ1enp5TWF0Y2g8c3RyaW5nPiwgZWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGVsLmlubmVyVGV4dCA9IGl0ZW0uaXRlbTtcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgTm90aWNlLCBURmlsZSwgVEZvbGRlciB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IEF0dGFjaEZsb3dQbHVnaW4gZnJvbSBcInNyYy9tYWluXCI7XG5jb25zdCBTVUNDRVNTX05PVElDRV9USU1FT1VUID0gMTgwMDtcbi8qKlxuICogRGVsZXRlIGF0dGFjaG1lbnRcbiAqIEBwYXJhbSBmaWxlXG4gKi9cbmV4cG9ydCBjb25zdCBkZWxldGVGaWxlID0gYXN5bmMgKFxuXHRmaWxlOiBURmlsZSB8IFRGb2xkZXIsXG5cdHBsdWdpbjogQXR0YWNoRmxvd1BsdWdpblxuKSA9PiB7XG5cdGNvbnN0IGRlbGV0ZU9wdGlvbiA9IHBsdWdpbi5zZXR0aW5ncy5kZWxldGVPcHRpb247XG5cdHRyeSB7XG5cdFx0aWYgKGRlbGV0ZU9wdGlvbiA9PT0gXCIudHJhc2hcIikge1xuXHRcdFx0YXdhaXQgYXBwLnZhdWx0LnRyYXNoKGZpbGUsIGZhbHNlKTtcblx0XHR9IGVsc2UgaWYgKGRlbGV0ZU9wdGlvbiA9PT0gXCJzeXN0ZW0tdHJhc2hcIikge1xuXHRcdFx0YXdhaXQgYXBwLnZhdWx0LnRyYXNoKGZpbGUsIHRydWUpO1xuXHRcdH0gZWxzZSBpZiAoZGVsZXRlT3B0aW9uID09PSBcInBlcm1hbmVudFwiKSB7XG5cdFx0XHRhd2FpdCBhcHAudmF1bHQuZGVsZXRlKGZpbGUpO1xuXHRcdH1cblx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRjb25zb2xlLmVycm9yKGVycm9yKTtcblx0XHRuZXcgTm90aWNlKFwiRmFpbGQgdG8gZGVsZXRlIHRoZSBmaWxlL2ZvbGRlciAhXCIsIFNVQ0NFU1NfTk9USUNFX1RJTUVPVVQpO1xuXHR9XG59O1xuLyoqXG4gKiBEZWxldGUgbm90ZVxuICogQHBhcmFtIGZpbGVcbiAqL1xuLyogZXhwb3J0IGNvbnN0IGRlbGV0ZU5vdGUgPSAoZmlsZTogVEZpbGUpID0+IHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRhcHAuZmlsZU1hbmFnZXIucHJvbXB0Rm9yRGVsZXRpb24oZmlsZSk7XG59OyAqL1xuIiwgImltcG9ydCBBdHRhY2hGbG93UGx1Z2luIGZyb20gXCJzcmMvbWFpblwiO1xuaW1wb3J0IHsgZGVsZXRlQWxsQXR0YWNocyB9IGZyb20gXCJzcmMvb3B0aW9ucy9kZWxlbGVBbGxBdHRhY2hzSW5UaGVOb3RlXCI7XG5cbmV4cG9ydCBjb25zdCBhZGRDb21tYW5kID0gKG15UGx1Z2luOiBBdHRhY2hGbG93UGx1Z2luKSA9PiB7XG5cdG15UGx1Z2luLmFkZENvbW1hbmQoe1xuXHRcdGlkOiBcImNsZWFyLWFsbC1hdHRhY2htZW50cy1pbi1jdXJyZW50LWZpbGVcIixcblx0XHRuYW1lOiBcImNsZWFyIGFsbCBhdHRhY2htZW50cyBpbiBjdXJyZW50IGZpbGVcIixcblx0XHRjYWxsYmFjazogYXN5bmMgKCkgPT4ge1xuXHRcdFx0ZGVsZXRlQWxsQXR0YWNocyhteVBsdWdpbik7XG5cdFx0fSxcblx0fSk7XG59O1xuIiwgImltcG9ydCBBdHRhY2hGbG93UGx1Z2luIGZyb20gJy4vbWFpbic7XG5pbXBvcnQgeyBQbHVnaW5TZXR0aW5nVGFiLCBTZXR0aW5nLCBBcHAsIE5vdGljZSB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7IHNldERlYnVnIH0gZnJvbSAnLi91dGlsJztcblxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQXR0YWNoRmxvd1NldHRpbmdzIHtcbiAgICBkZWxldGVPcHRpb246IHN0cmluZztcbiAgICBsb2dzTW9kYWw6IGJvb2xlYW47XG4gICAgZHJhZ1Jlc2l6ZTogYm9vbGVhbjtcbiAgICByZXNpemVJbnRlcnZhbDogbnVtYmVyO1xuICAgIGNsaWNrVmlldzogYm9vbGVhbjtcbiAgICBhZGFwdGl2ZVJhdGlvOiBudW1iZXI7XG4gICAgbW92ZUZpbGVNZW51OiBib29sZWFuO1xuICAgIGRlYnVnOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRVRUSU5HUzogQXR0YWNoRmxvd1NldHRpbmdzID0ge1xuICAgIGRlbGV0ZU9wdGlvbjogJy50cmFzaCcsXG4gICAgbG9nc01vZGFsOiB0cnVlLFxuICAgIGRyYWdSZXNpemU6IHRydWUsXG4gICAgcmVzaXplSW50ZXJ2YWw6IDAsXG4gICAgY2xpY2tWaWV3OiBmYWxzZSxcbiAgICBhZGFwdGl2ZVJhdGlvOiAwLjksXG4gICAgbW92ZUZpbGVNZW51OiBmYWxzZSxcbiAgICBkZWJ1ZzogZmFsc2UsXG59O1xuXG5cbmV4cG9ydCBjbGFzcyBBdHRhY2hGbG93U2V0dGluZ3NUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcblxuICAgIHBsdWdpbjogQXR0YWNoRmxvd1BsdWdpbjtcblxuXG4gICAgY29uc3RydWN0b3IoYXBwOiBBcHAsIHBsdWdpbjogQXR0YWNoRmxvd1BsdWdpbikge1xuICAgICAgICBzdXBlcihhcHAsIHBsdWdpbik7XG4gICAgICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICAgIH1cblxuXG4gICAgZGlzcGxheSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBjb250YWluZXJFbCB9ID0gdGhpcztcbiAgICAgICAgY29udGFpbmVyRWwuZW1wdHkoKTtcblxuICAgICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbCkuc2V0TmFtZSgnUmlnaHQtY2xpY2sgbWVudSBmb3IgYXR0YWNobWVudHMnKS5zZXRIZWFkaW5nKCk7XG4gICAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgICAgICAgLnNldE5hbWUoJ0RlbGV0ZWQgYXR0YWNobWVudCBkZXN0aW5hdGlvbicpXG4gICAgICAgICAgICAuc2V0RGVzYygnU2VsZWN0IHdoZXJlIHlvdSB3YW50IEF0dGFjaG1lbnRzIHRvIGJlIG1vdmVkIG9uY2UgdGhleSBhcmUgZGVsZXRlZCcpXG4gICAgICAgICAgICAuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG4gICAgICAgICAgICAgICAgZHJvcGRvd24uYWRkT3B0aW9uKCdwZXJtYW5lbnQnLCAnRGVsZXRlIFBlcm1hbmVudGx5Jyk7XG4gICAgICAgICAgICAgICAgZHJvcGRvd24uYWRkT3B0aW9uKCcudHJhc2gnLCAnTW92ZSB0byBPYnNpZGlhbiBUcmFzaCcpO1xuICAgICAgICAgICAgICAgIGRyb3Bkb3duLmFkZE9wdGlvbignc3lzdGVtLXRyYXNoJywgJ01vdmUgdG8gU3lzdGVtIFRyYXNoJyk7XG4gICAgICAgICAgICAgICAgZHJvcGRvd24uc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZGVsZXRlT3B0aW9uKTtcbiAgICAgICAgICAgICAgICBkcm9wZG93bi5vbkNoYW5nZSgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmRlbGV0ZU9wdGlvbiA9IG9wdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgICAgICAgIC5zZXROYW1lKCdNb3ZlIGZpbGUgdG8uLi4nKVxuICAgICAgICAgICAgLnNldERlc2MoJ0FkZCBhIFwiTW92ZSB0by4uLlwiIG9wdGlvbiB0byB0aGUgcmlnaHQtY2xpY2sgbWVudSBmb3IgYXR0YWNobWVudHMnKVxuICAgICAgICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgICAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLm1vdmVGaWxlTWVudSlcbiAgICAgICAgICAgICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubW92ZUZpbGVNZW51ID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbCkuc2V0TmFtZSgnQ2xpY2sgdG8gdmlldyBpbWFnZXMnKS5zZXRIZWFkaW5nKCk7XG4gICAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgICAgICAgLnNldE5hbWUoXCJDbGljayB0byB2aWV3IGltYWdlc1wiKVxuICAgICAgICAgICAgLnNldERlc2MoXCJDbGljayB0aGUgcmlnaHQgaGFsZiBvZiB0aGUgaW1hZ2UgdG8gdmlldyB0aGUgaW1hZ2UgaW4gZGV0YWlsLlwiKVxuICAgICAgICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgICAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmNsaWNrVmlldylcbiAgICAgICAgICAgICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY2xpY2tWaWV3ID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgICAgICAgLnNldE5hbWUoJ0FkYXB0aXZlIGltYWdlIGRpc3BsYXkgcmF0aW8gYmFzZWQgb24gd2luZG93IHNpemUnKVxuICAgICAgICAgICAgLnNldERlc2MoJ1doZW4gdGhlIGltYWdlIGV4Y2VlZHMgdGhlIHdpbmRvdyBzaXplLCB0aGUgaW1hZ2UgaXMgZGlzcGxheWVkIGFkYXB0aXZlbHkgYWNjb3JkaW5nIHRvIHRoZSB3aW5kb3cgc2l6ZS4nKVxuICAgICAgICAgICAgLmFkZFNsaWRlcigoc2xpZGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgc2xpZGVyLnNldExpbWl0cygwLjEsIDEsIDAuMDUpO1xuICAgICAgICAgICAgICAgIHNsaWRlci5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5hZGFwdGl2ZVJhdGlvKTtcbiAgICAgICAgICAgICAgICBzbGlkZXIub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmFkYXB0aXZlUmF0aW8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgbmV3IE5vdGljZShgQWRhcHRpdmUgcmF0aW86ICR7dmFsdWV9YCk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHNsaWRlci5zZXREeW5hbWljVG9vbHRpcCgpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpLnNldE5hbWUoJ0RyYWcgdG8gcmVzaXplIGltYWdlcycpLnNldEhlYWRpbmcoKTtcbiAgICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAgICAgICAuc2V0TmFtZShcIkRyYWcgdG8gcmVzaXplIGltYWdlc1wiKVxuICAgICAgICAgICAgLnNldERlc2MoXCJUdXJuIG9uIHRvIGVuYWJsZSBkcmFnIHRvIHJlc2l6ZSBpbWFnZXMuXCIpXG4gICAgICAgICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgICAgICAgICAgICB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZHJhZ1Jlc2l6ZSlcbiAgICAgICAgICAgICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZHJhZ1Jlc2l6ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAgICAgICAuc2V0TmFtZShcIlJlc2l6ZSBpbnRlcnZhbFwiKVxuICAgICAgICAgICAgLnNldERlc2MoXCJcdTYyRDZcdTYyRkRcdThDMDNcdTgyODJcdTY3MDBcdTVDMEZcdTUyM0JcdTVFQTZcdUZGMDhcdTlFRDhcdThCQTRcdTUwM0NcdTRFM0EgMCBcdTUzNzNcdTRFMERcdTVCRjlcdTlGNTBcdTUyM0JcdTVFQTZcdUZGMDlcIilcbiAgICAgICAgICAgIC5hZGRUZXh0KCh0ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgdGV4dC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5yZXNpemVJbnRlcnZhbC50b1N0cmluZygpKVxuICAgICAgICAgICAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBcdTUyMjRcdTY1QURcdThGOTNcdTUxNjVcdTUwM0NcdTY2MkZcdTU0MjZcdTRFM0FcdTZCNjNcdTY1NzRcdTY1NzBcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbnB1dCBpcyBlbXB0eS4gU2V0IHRvIGRlZmF1bHQgdmFsdWUgMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnJlc2l6ZUludGVydmFsID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmICgvXlxcZCskLy50ZXN0KHZhbHVlKSAmJiBOdW1iZXIodmFsdWUpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5yZXNpemVJbnRlcnZhbCA9IHBhcnNlSW50KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gXHU0RTBEXHU3QjI2XHU1NDA4XHU4OTgxXHU2QzQyXHU2NUY2XHVGRjBDXHU1M0VGXHU0RUU1XHU3RUQ5XHU1MUZBXHU2M0QwXHU3OTNBXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE5vdGljZSgnXHU4QkY3XHU4RjkzXHU1MTY1XHU2QjYzXHU2NTc0XHU2NTcwJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5yZXNpemVJbnRlcnZhbC50b1N0cmluZygpKTsgLy8gXHU5MUNEXHU2NUIwXHU4QkJFXHU3RjZFXHU0RTNBXHU1MzlGXHU2NzY1XHU3Njg0XHU1MDNDXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpLnNldE5hbWUoJ0RlYnVnJykuc2V0SGVhZGluZygpO1xuICAgICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgICAgICAgIC5zZXROYW1lKFwiRGVidWcgbW9kZVwiKVxuICAgICAgICAgICAgLnNldERlc2MoXCJQcmludCBkZWJ1ZyBpbmZvcm1hdGlvbiBpbiBjb25zb2xlXCIpXG4gICAgICAgICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgICAgICAgICAgICB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZGVidWcpXG4gICAgICAgICAgICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmRlYnVnID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXREZWJ1Zyh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4iLCAiLyoqXG4gKiBnZXQgbW91c2UgZXZlbnQgdGFyZ2V0XG4gKiBAcGFyYW0gZXZlbnQgXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRNb3VzZUV2ZW50VGFyZ2V0ID0gKGV2ZW50OiBNb3VzZUV2ZW50KTogSFRNTEVsZW1lbnQgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIHJldHVybiB0YXJnZXQ7XG59XG4iLCAiaW1wb3J0IHsgTW9kYWwsIFRGaWxlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgQXR0YWNoRmxvd1BsdWdpbiBmcm9tIFwic3JjL21haW5cIjtcbmltcG9ydCB7XG5cdGRlbGV0ZUFsbEF0dGFjaHMsXG5cdGdldFJlZmVuY2VkTGlua0NvdW50LFxufSBmcm9tIFwic3JjL29wdGlvbnMvZGVsZWxlQWxsQXR0YWNoc0luVGhlTm90ZVwiO1xuaW1wb3J0IHsgZGVsZXRlRmlsZSB9IGZyb20gXCJzcmMvdXRpbHMvZGVsZXRlRmlsZVwiO1xuXG5leHBvcnQgY2xhc3MgRGVsZXRlQWxsTG9nc01vZGFsIGV4dGVuZHMgTW9kYWwge1xuXHRub3RlOiBURmlsZTtcblx0bXlQbHVnaW46IEF0dGFjaEZsb3dQbHVnaW47XG5cdGNvbnN0cnVjdG9yKG5vdGU6IFRGaWxlLCBteVBsdWdpbjogQXR0YWNoRmxvd1BsdWdpbikge1xuXHRcdHN1cGVyKGFwcCk7XG5cdFx0dGhpcy5ub3RlID0gbm90ZTtcblx0XHR0aGlzLm15UGx1Z2luID0gbXlQbHVnaW47XG5cdH1cblx0Z2V0TG9nKCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgcmVmZXJlbmNlTWVzc2FnZSA9IGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIFwiJHt0aGlzLm5vdGUuYmFzZW5hbWV9Lm1kXCI/XFxuXFxuSXQgd2lsbCBiZSBtb3ZlZCB0byB5b3VyICR7dGhpcy5teVBsdWdpbi5zZXR0aW5ncy5kZWxldGVPcHRpb259LmA7XG5cdFx0cmV0dXJuIHJlZmVyZW5jZU1lc3NhZ2U7XG5cdH1cblx0c2hvd0xvZ3MoKSB7XG5cdFx0Y29uc3QgbG9ncyA9IHRoaXMuY29udGVudEVsLmNyZWF0ZUVsKFwiZGl2XCIpO1xuXHRcdGxvZ3MuYWRkQ2xhc3MoXCJhdHRhY2htZW50LWZsb3ctbG9nXCIpO1xuXHRcdGxvZ3Muc2V0VGV4dCh0aGlzLmdldExvZygpKTtcblx0fVxuXHRvbk9wZW4oKSB7XG5cdFx0Y29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XG5cdFx0Y29uc3QgbXlNb2RhbCA9IHRoaXM7XG5cdFx0Y29uc3QgaGVhZGVyV3JhcHBlciA9IGNvbnRlbnRFbC5jcmVhdGVFbChcImRpdlwiKTtcblx0XHRoZWFkZXJXcmFwcGVyLmFkZENsYXNzKFwiYXR0YWNobWVudC1mbG93LWNlbnRlci13cmFwcGVyXCIpO1xuXHRcdHRoaXMuc2hvd0xvZ3MoKTtcblx0XHRjb25zdCByZWZlcmVuY2VkTWVzc2FnZVdyYXBwZXIgPSBjb250ZW50RWwuY3JlYXRlRWwoXCJzcGFuXCIpO1xuXHRcdHJlZmVyZW5jZWRNZXNzYWdlV3JhcHBlci5zdHlsZS5jb2xvciA9IFwicmVkXCI7XG5cdFx0Y29uc3QgcmVmZXJlbmNlZE1lc3NhZ2UgPSBgVGhlcmUgYXJlKGlzKSBjdXJyZW50bHkgIFske2dldFJlZmVuY2VkTGlua0NvdW50KCl9XSAgbm9uLW11bHRpLXJlZmVyZW5jZWQgbGluayhzKSBwb2ludGluZyB0byB0aGlzIG5vdGUuYDtcblx0XHRyZWZlcmVuY2VkTWVzc2FnZVdyYXBwZXIuYXBwZW5kKHJlZmVyZW5jZWRNZXNzYWdlKTtcblx0XHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0XHRjb25zdCBidXR0b25XcmFwcGVyID0gdGhpcy5jb250ZW50RWwuY3JlYXRlRWwoXCJkaXZcIikgYXMgSFRNTERpdkVsZW1lbnQ7XG5cdFx0YnV0dG9uV3JhcHBlci5hZGRDbGFzcyhcImF0dGFjaG1lbnQtZmxvdy1jZW50ZXItd3JhcHBlclwiKTtcblx0XHRjb25zdCBoZWFkZXJFbCA9IGhlYWRlcldyYXBwZXIuY3JlYXRlRWwoXCJoMVwiLCB7XG5cdFx0XHR0ZXh0OiBcIkRlbGV0ZSB0aGUgZmlsZSBhbmQgaXRzIGFsbCBhdHRhY2htZW50cyAtIGxvZ3MgXCIsXG5cdFx0fSk7XG5cdFx0aGVhZGVyRWwuYWRkQ2xhc3MoXCJtb2RhbC10aXRsZVwiKTtcblx0XHR0aGlzLnNob3dDb25maXJtQnV0dG9uKGJ1dHRvbldyYXBwZXIsIG15TW9kYWwpO1xuXHRcdHRoaXMuc2hvd0NhbmNlbEJ0bihidXR0b25XcmFwcGVyLCBteU1vZGFsKTtcblx0fVxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdHNob3dDYW5jZWxCdG4oYnV0dG9uV3JhcHBlcjogSFRNTERpdkVsZW1lbnQsIG15TW9kYWw6IE1vZGFsKSB7XG5cdFx0Ly8gLS0tLS0tLS1jbG9zZUJ1dHRvbi0tLS0tLS0tXG5cdFx0Y29uc3QgY2xvc2VCdXR0b24gPSBidXR0b25XcmFwcGVyLmNyZWF0ZUVsKFwiYnV0dG9uXCIsIHtcblx0XHRcdHRleHQ6IFwiQ2FuY2VsXCIsXG5cdFx0fSk7XG5cdFx0Y2xvc2VCdXR0b24uc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLCBcIkNhbmNlbCB0aGUgb3BlcmF0aW9uXCIpO1xuXHRcdGNsb3NlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XG5cdFx0XHRteU1vZGFsLmNsb3NlKCk7XG5cdFx0fSk7XG5cdH1cblx0c2hvd0NvbmZpcm1CdXR0b24oYnV0dG9uV3JhcHBlcjogSFRNTERpdkVsZW1lbnQsIG15TW9kYWw6IE1vZGFsKSB7XG5cdFx0Y29uc3QgcmVtb3ZlTGlua0J1dHRvbiA9IGJ1dHRvbldyYXBwZXIuY3JlYXRlRWwoXCJidXR0b25cIiwge1xuXHRcdFx0dGV4dDogXCJDb25maXJtXCIsXG5cdFx0fSk7XG5cdFx0cmVtb3ZlTGlua0J1dHRvbi5zZXRBdHRyaWJ1dGUoXG5cdFx0XHRcImFyaWEtbGFiZWxcIixcblx0XHRcdFwiQ29udGludWUgdG8gZGVsZXRlIGN1cnJlbnQgZmlsZSBhbmQgaXRzIGFsbCBub24tbXVsdGktcmVmZXJlbmNlZCBhdHRhY2htZW50c1wiXG5cdFx0KTtcblx0XHRyZW1vdmVMaW5rQnV0dG9uLmFkZENsYXNzKFwibW9kLXdhcm5pbmdcIik7XG5cdFx0cmVtb3ZlTGlua0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0ZGVsZXRlRmlsZSh0aGlzLm5vdGUsIHRoaXMubXlQbHVnaW4pO1xuXHRcdFx0ZGVsZXRlQWxsQXR0YWNocyh0aGlzLm15UGx1Z2luKTtcblx0XHRcdG15TW9kYWwuY2xvc2UoKTtcblx0XHR9KTtcblx0fVxufVxuIiwgIi8vIFRoaXMgZmlsZSBpcyBjb3BpZWQgZnJvbSByZXBvOiBodHRwczovL2dpdGh1Yi5jb20vTm9tYXJDdWIvb2JzaWRpYW4tY29weS11cmwtaW4tcHJldmlld1xuXG4vLyBNSVQgTGljZW5zZVxuLy8gQ29weXJpZ2h0IChjKSAyMDIyIE5vbWFyQ3ViXG5cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblxuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4vLyBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4vLyBTT0ZUV0FSRS5cblxuaW1wb3J0IHsgQXBwLCBFZGl0b3IsIEVkaXRvclBvc2l0aW9uLCBGaWxlU3lzdGVtQWRhcHRlciB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5jb25zdCBsb2FkSW1hZ2VCbG9iVGltZW91dCA9IDMwMDA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWxlY3Ryb25XaW5kb3cgZXh0ZW5kcyBXaW5kb3cge1xuICAgIFdFQlZJRVdfU0VSVkVSX1VSTDogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWRpdG9ySW50ZXJuYWxBcGkgZXh0ZW5kcyBFZGl0b3Ige1xuICAgIHBvc0F0TW91c2UoZXZlbnQ6IE1vdXNlRXZlbnQpOiBFZGl0b3JQb3NpdGlvbjtcbiAgICBnZXRDbGlja2FibGVUb2tlbkF0KHBvc2l0aW9uOiBFZGl0b3JQb3NpdGlvbik6IHtcbiAgICAgICAgdGV4dDogc3RyaW5nXG4gICAgfSB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVN5c3RlbUFkYXB0ZXJXaXRoSW50ZXJuYWxBcGkgZXh0ZW5kcyBGaWxlU3lzdGVtQWRhcHRlciB7XG4gICAgb3BlbihwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwV2l0aERlc2t0b3BJbnRlcm5hbEFwaSBleHRlbmRzIEFwcCB7XG4gICAgb3BlbldpdGhEZWZhdWx0QXBwKHBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG4gICAgc2hvd0luRm9sZGVyKHBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdGVuZXIge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgKHRoaXM6IERvY3VtZW50LCBldjogRXZlbnQpOiBhbnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoVGltZW91dDxUPihtczogbnVtYmVyLCBwcm9taXNlOiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3QgdGltZW91dCA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChpZCk7XG4gICAgICAgICAgICByZWplY3QoYHRpbWVkIG91dCBhZnRlciAke21zfSBtc2ApXG4gICAgICAgIH0sIG1zKVxuICAgIH0pXG4gICAgcmV0dXJuIFByb21pc2UucmFjZShbXG4gICAgICAgIHByb21pc2UsXG4gICAgICAgIHRpbWVvdXRcbiAgICBdKSBhcyBQcm9taXNlPFQ+XG59XG5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQ09SU19lbmFibGVkX2ltYWdlXG4vLyBvcHRpb24/OiBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9odG1sLXRvLWltYWdlXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZEltYWdlQmxvYihpbWdTcmM6IHN0cmluZywgcmV0cnlDb3VudCA9IDApOiBQcm9taXNlPEJsb2I+IHtcbiAgICBjb25zdCBsb2FkSW1hZ2VCbG9iQ29yZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPEJsb2I+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICAgICAgICBpbWFnZS5jcm9zc09yaWdpbiA9IFwiYW5vbnltb3VzXCI7XG4gICAgICAgICAgICBpbWFnZS5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICAgICAgICAgICAgICBjYW52YXMud2lkdGggPSBpbWFnZS53aWR0aDtcbiAgICAgICAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaW1hZ2UuaGVpZ2h0O1xuICAgICAgICAgICAgICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIikhO1xuICAgICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApO1xuICAgICAgICAgICAgICAgIGNhbnZhcy50b0Jsb2IoKGJsb2I6IEJsb2IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShibG9iKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpbWFnZS5vbmVycm9yID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXRyeUNvdW50IDwgMykge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgZmV0Y2goaW1hZ2Uuc3JjLCB7IFwibW9kZVwiOiBcIm5vLWNvcnNcIiB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBsb2FkSW1hZ2VCbG9iKGBodHRwczovL2FwaS5hbGxvcmlnaW5zLndpbi9yYXc/dXJsPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGltZ1NyYyl9YCwgcmV0cnlDb3VudCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShibG9iKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1VuYWJsZSB0byByZXRyaWV2ZSB0aGUgaW1hZ2UgZGF0YSBhZnRlciAzIHJldHJpZXMuJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpbWFnZS5zcmMgPSBpbWdTcmM7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgcmV0dXJuIHdpdGhUaW1lb3V0KGxvYWRJbWFnZUJsb2JUaW1lb3V0LCBsb2FkSW1hZ2VCbG9iQ29yZSgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9uRWxlbWVudChcbiAgICBlbDogRG9jdW1lbnQsXG4gICAgZXZlbnQ6IGtleW9mIEhUTUxFbGVtZW50RXZlbnRNYXAsXG4gICAgc2VsZWN0b3I6IHN0cmluZyxcbiAgICBsaXN0ZW5lcjogTGlzdGVuZXIsXG4gICAgb3B0aW9ucz86IHsgY2FwdHVyZT86IGJvb2xlYW47IH1cbikge1xuICAgIGVsLm9uKGV2ZW50LCBzZWxlY3RvciwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICAgIHJldHVybiAoKSA9PiBlbC5vZmYoZXZlbnQsIHNlbGVjdG9yLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG59Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsdUJBQXNGOzs7QUNBdEYsdUJBQXVDOzs7QUNDdkMsc0JBQTREO0FBSTVELDJCQUErQjtBQUMvQixnQkFBMkI7QUFLM0IsdUJBQTBFO0FBRW5FLElBQUksUUFBZ0I7QUFDM0IsSUFBTSx5QkFBeUI7QUFFeEIsSUFBTSxRQUFNLENBQUMsWUFBa0IsbUJBQXlCO0FBQzNELE1BQUksT0FBTztBQUNQLFlBQVEsSUFBSSxTQUFTLEdBQUcsY0FBYztBQUFBLEVBQzFDO0FBQ0o7QUFFTyxrQkFBa0IsT0FBZ0I7QUFDckMsVUFBUTtBQUNaO0FBUU8sSUFBTSxxQkFBcUIsQ0FDakMsYUFDQSxjQUN5QztBQUV6QyxRQUFNLGdCQUFnQixJQUFJLGNBQWM7QUFDeEMsTUFBSTtBQUVKLE1BQUksU0FBeUI7QUFBQSxJQUM1QixPQUFPO0FBQUEsSUFDUCxRQUFRLENBQUM7QUFBQSxFQUNWO0FBQ0EsTUFBSSxTQUFTO0FBQ2IsYUFBVyxDQUFDLFFBQVEsVUFBVSxPQUFPLFFBQVEsYUFBYSxHQUFHO0FBQzVELFFBQUksVUFBVSxTQUFTLFFBQVE7QUFDOUIsa0JBQVksVUFBVTtBQUN0QixhQUFPLE9BQU8sUUFBUSxTQUFTO0FBQUEsSUFDaEM7QUFDQSxlQUFXLENBQUMsVUFBVSxPQUFPLE9BQU8sUUFBUSxLQUFLLEdBQUc7QUFDbkQsVUFBSSw0Q0FBYSxVQUFTLFVBQVU7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 diff --git a/.obsidian/plugins/attachment-flow-plugin/manifest.json b/.obsidian/plugins/attachment-flow-plugin/manifest.json new file mode 100644 index 0000000..1f98f84 --- /dev/null +++ b/.obsidian/plugins/attachment-flow-plugin/manifest.json @@ -0,0 +1 @@ +{"id":"attachment-flow-plugin","name":"AttachFlow","version":"0.4.3","minAppVersion":"1.0.9","description":"This nifty plugin enables seamless management of attachments and referenced links directly from your documents. Taking advantage of an intuitive right-click menu, you can efficiently handle resources in both LIVE and READ modes.","author":"yaozhuwa","authorUrl":"https://github.com/Yaozhuwa","isDesktopOnly":false,"fundingUrl":"https://www.buymeacoffee.com/yaozhuwa"} \ No newline at end of file diff --git a/.obsidian/plugins/attachment-flow-plugin/styles.css b/.obsidian/plugins/attachment-flow-plugin/styles.css new file mode 100644 index 0000000..5c10c45 --- /dev/null +++ b/.obsidian/plugins/attachment-flow-plugin/styles.css @@ -0,0 +1,46 @@ +.attachment-flow-center-wrapper { + display: flex; + align-items: center; + justify-content: space-between; +} +.attachment-flow-log { + margin-bottom: 13px; + margin-top: 5px; + white-space: pre-line; /* enable line break when html parse text containing '\n' */ +} + +button.mod-warning { + background-color: var(--background-modifier-error); + color: var(--text-on-accent); +} + +.af-scale-div { + position: fixed; + bottom: 0; + left: 50%; + transform: translateX(-50%); + color: #fff; + font-family: var(--default-font); + font-size: 20px; + background: rgba(0, 0, 0, 0.5); + padding: 5px; +} + +.image-ready-resize { + cursor: nwse-resize; + outline: 6px solid #dfb0f283; +} + +.image-ready-click-view { + cursor: zoom-in; +} + +.image-in-drag-resize { + border: 2px solid blue; + box-sizing: border-box; +} + +/* 点击查看的大图 */ +#af-zoomed-image { + cursor: move; +} \ No newline at end of file diff --git a/.obsidian/plugins/easy-typing-obsidian/main.js b/.obsidian/plugins/easy-typing-obsidian/main.js index 8405331..97aa87e 100644 --- a/.obsidian/plugins/easy-typing-obsidian/main.js +++ b/.obsidian/plugins/easy-typing-obsidian/main.js @@ -3,11 +3,9 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source, please visit the github repository of this plugin */ -var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) @@ -21,7 +19,6 @@ var __copyProps = (to, from, except, desc) => { } return to; }; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod)); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/main.ts @@ -32,12 +29,17 @@ __export(main_exports, { module.exports = __toCommonJS(main_exports); var import_obsidian3 = require("obsidian"); var import_state = require("@codemirror/state"); -var import_state2 = require("@codemirror/state"); // src/core.ts var import_obsidian = require("obsidian"); // src/utils.ts +var DEBUG = true; +var print = (message, ...optionalParams) => { + if (DEBUG) { + console.log(message, ...optionalParams); + } +}; function offsetToPos(doc, offset) { let line = doc.lineAt(offset); return { line: line.number - 1, ch: offset - line.from }; @@ -45,6 +47,7 @@ function offsetToPos(doc, offset) { function getTypeStrOfTransac(tr) { let TransacTypeArray = [ "EasyTyping.change", + "EasyTyping.paste", "input.type.compose", "input.type", "input.paste", @@ -173,7 +176,7 @@ var LineFormater = class { let line = doc.lineAt(fromB).text; let res = null; if (insertedStr.contains("\n")) { - res = this.formatLine(state, doc.lineAt(fromB).number, settings, offsetToPos(doc, fromB).ch, offsetToPos(doc, toB - 1).ch); + res = this.formatLine(state, doc.lineAt(fromB).number, settings, offsetToPos(doc, fromB).ch, offsetToPos(doc, fromB).ch); } else { res = this.formatLine(state, doc.lineAt(fromB).number, settings, offsetToPos(doc, toB).ch, offsetToPos(doc, fromB).ch); } @@ -199,12 +202,9 @@ var LineFormater = class { let regNull = /^\s*$/g; if (regNull.test(line)) return [line, curCh, []]; - let lineParts; - if (settings.UserDefinedRegSwitch) { - lineParts = this.parseLineWithSyntaxTree(state, lineNum, settings.UserDefinedRegExp); - } else { - lineParts = this.parseLineWithSyntaxTree(state, lineNum); - } + let lineParts = settings.UserDefinedRegSwitch ? this.parseLineWithSyntaxTree(state, lineNum, settings.UserDefinedRegExp) : this.parseLineWithSyntaxTree(state, lineNum); + if (settings.debug) + console.log("line parts\n", lineParts); let linePartsOrigin = JSON.parse(JSON.stringify(lineParts)); let inlineChangeList = []; let cursorLinePartIndex = -1; @@ -250,6 +250,19 @@ var LineFormater = class { } switch (lineParts[i].type) { case "text" /* text */: + let insertSpace = function(content2, reg2, prevCh2, curCh2, offset2) { + while (true) { + let match = reg2.exec(content2); + if (!match) + break; + let tempIndex = reg2.lastIndex - 1; + if (isParamDefined(prevCh2) && tempIndex >= prevCh2 - offset2 && tempIndex < curCh2 - offset2) { + content2 = content2.substring(0, tempIndex) + " " + content2.substring(tempIndex); + curCh2 += 1; + } + } + return [content2, curCh2]; + }; let content = lineParts[i].content; if (settings.AutoCapital) { var reg = /[\.\?\!。!?]([\s]*)[a-z\u0401\u0451\u0410-\u044f]/g; @@ -271,59 +284,23 @@ var LineFormater = class { if (settings.ChineseEnglishSpace) { let reg1 = /([A-Za-z])([\u4e00-\u9fa5])/gi; let reg2 = /([\u4e00-\u9fa5])([A-Za-z])/gi; - lineParts[i].content = content.replace(reg1, "$1 $2").replace(reg2, "$1 $2"); - content = lineParts[i].content; + [content, curCh] = insertSpace(content, reg1, prevCh, curCh, offset); + [content, curCh] = insertSpace(content, reg2, prevCh, curCh, offset); } if (settings.ChineseNumberSpace) { let reg2 = /([0-9])([\u4e00-\u9fa5])/g; - while (true) { - let match = reg2.exec(content); - if (!match) - break; - let tempIndex = reg2.lastIndex - 1; - if (isParamDefined(prevCh) && tempIndex >= prevCh - offset && tempIndex < curCh - offset) { - content = content.substring(0, tempIndex) + " " + content.substring(tempIndex); - curCh += 1; - } - } let reg1 = /([\u4e00-\u9fa5])([0-9])/g; - while (true) { - let match = reg1.exec(content); - if (!match) - break; - let tempIndex = reg1.lastIndex - 1; - if (isParamDefined(prevCh) && tempIndex >= prevCh - offset && tempIndex < curCh - offset) { - content = content.substring(0, tempIndex) + " " + content.substring(tempIndex); - curCh += 1; - } - } + [content, curCh] = insertSpace(content, reg2, prevCh, curCh, offset); + [content, curCh] = insertSpace(content, reg1, prevCh, curCh, offset); } if (settings.EnglishNumberSpace) { let reg2 = /([A-Za-z])(\d)/g; - while (true) { - let match = reg2.exec(content); - if (!match) - break; - let tempIndex = reg2.lastIndex - 1; - if (isParamDefined(prevCh) && tempIndex >= prevCh - offset && tempIndex < curCh - offset) { - content = content.substring(0, tempIndex) + " " + content.substring(tempIndex); - curCh += 1; - } - } let reg1 = /(\d)([A-Za-z])/g; - while (true) { - let match = reg1.exec(content); - if (!match) - break; - let tempIndex = reg1.lastIndex - 1; - if (isParamDefined(prevCh) && tempIndex >= prevCh - offset && tempIndex < curCh - offset) { - content = content.substring(0, tempIndex) + " " + content.substring(tempIndex); - curCh += 1; - } - } + [content, curCh] = insertSpace(content, reg2, prevCh, curCh, offset); + [content, curCh] = insertSpace(content, reg1, prevCh, curCh, offset); } if (settings.ChineseNoSpace) { - let reg2 = /([\u4e00-\u9fa5,。、;‘’《》]+)(\s+)([\u4e00-\u9fa5,。、;‘’《》]+)/g; + let reg2 = /([\u4e00-\u9fa5,。、!;‘’《》]+)(\s+)([\u4e00-\u9fa5,。、!;‘’《》]+)/g; while (reg2.exec(content)) { lineParts[i].content = content.replace(reg2, "$1$3"); content = lineParts[i].content; @@ -331,13 +308,13 @@ var LineFormater = class { } if (settings.PunctuationSpace) { { - let reg2 = /([,\.;\?\!\)])([0-9A-Za-z\u0401\u0451\u0410-\u044f])|([A-Za-z0-9\u4e00-\u9fa5:,\.\?\!'"]+)(\()|[,\.;\?:!][\u4e00-\u9fa5]/gi; + let reg2 = /([,\.;\?\!\)])([0-9A-Za-z\u0401\u0451\u0410-\u044f\u4e00-\u9fa5])|([A-Za-z0-9\u4e00-\u9fa5:,\.\?\!'"]+)(\()|[,\.;\?:!][\u4e00-\u9fa5]/gi; while (true) { let match = reg2.exec(content); if (!match) break; let tempIndex = reg2.lastIndex - 1; - let isSpaceDot = "!.?;,".contains(content.charAt(tempIndex - 1)) && (tempIndex - 2 < 0 || content.charAt(tempIndex - 2) == " "); + let isSpaceDot = "!.?;,".contains(content.charAt(tempIndex - 1)) && (tempIndex - 2 < 0 && i == 0 || content.charAt(tempIndex - 2) == " "); let isNumPuncNum = /[,.]\d/.test(content.substring(tempIndex - 1, tempIndex + 1)) && (tempIndex - 2 < 0 || /\d/.test(content.charAt(tempIndex - 2))); if (settings.PunctuationSpaceMode == "global" /* Globally */ && !isSpaceDot && !isNumPuncNum) { content = content.substring(0, tempIndex) + " " + content.substring(tempIndex); @@ -356,17 +333,17 @@ var LineFormater = class { } let regStrictSpaceStart = /^\0?\s/; let regStrictSpaceEnd = /\s\0?$/; - let regStartWithSpace = /^\0?[\s,\.;\?\!,。;》?::!~\*、()"”\]\)\}]/; - let regEndWithSpace = /[\s,。、:;?!()~\*"《“\[\(\{]\0?$/; + let regStartWithSpace = /^\0?[\s,\.;\?\!,。;》?::!~\*、()"”\[\]\)\{\}]/; + let regEndWithSpace = /[\s,。、:;?!()~\*"《“\[\]\(\{\}]\0?$/; let txtStartSpaceSate = 0 /* none */; let txtEndSpaceState = 0 /* none */; - if (regStartWithSpace.test(content)) { + if (regStartWithSpace.test(content) || content.startsWith("
")) { if (regStrictSpaceStart.test(content)) txtStartSpaceSate = 2 /* strict */; else txtStartSpaceSate = 1 /* soft */; } - if (regEndWithSpace.test(content)) { + if (regEndWithSpace.test(content) || content.endsWith("
")) { if (regStrictSpaceEnd.test(content)) txtEndSpaceState = 2 /* strict */; else @@ -474,7 +451,7 @@ var LineFormater = class { } break; case "user-defined" /* user */: - if (settings.InlineCodeSpaceMode > 0 /* none */ || lineParts[i - 1].rightSpaceRequire > 0 /* none */) { + if (settings.InlineCodeSpaceMode > 0 /* none */ && lineParts[i - 1].rightSpaceRequire > 0 /* none */) { inlineChangeList.push({ text: " ", begin: lineParts[i].begin, @@ -495,6 +472,11 @@ var LineFormater = class { prevTextEndSpaceState = 0 /* none */; break; case "formula" /* formula */: + if (lineParts[i].content == "$\\qquad$") { + prevPartType = "text" /* text */; + prevTextEndSpaceState = 2 /* strict */; + break; + } switch (prevPartType) { case "none" /* none */: break; @@ -543,7 +525,7 @@ var LineFormater = class { } break; case "user-defined" /* user */: - if (settings.InlineFormulaSpaceMode > 0 /* none */ || lineParts[i - 1].rightSpaceRequire > 0 /* none */) { + if (settings.InlineFormulaSpaceMode > 0 /* none */ && lineParts[i - 1].rightSpaceRequire > 0 /* none */) { inlineChangeList.push({ text: " ", begin: lineParts[i].begin, @@ -587,6 +569,8 @@ var LineFormater = class { beginIndex = 3; if (charOfAliasBegin != -1) { beginIndex = charOfAliasBegin + 1; + } else if (lineParts[i].content.charAt(beginIndex) == "#") { + beginIndex += 1; } charAtLinkBegin = lineParts[i].content.charAt(beginIndex); if (charAtLinkBegin == "]") @@ -648,7 +632,7 @@ var LineFormater = class { } break; case "user-defined" /* user */: - if (lineParts[i - 1].rightSpaceRequire > 0 /* none */ || settings.InlineLinkSpaceMode > 0 /* none */) { + if (lineParts[i - 1].rightSpaceRequire > 0 /* none */ && settings.InlineLinkSpaceMode > 0 /* none */) { inlineChangeList.push({ text: " ", begin: lineParts[i].begin, @@ -679,7 +663,7 @@ var LineFormater = class { } break; case "code" /* code */: - if (lineParts[i].leftSpaceRequire > 0 /* none */ || settings.InlineCodeSpaceMode > 0 /* none */) { + if (lineParts[i].leftSpaceRequire > 0 /* none */ && settings.InlineCodeSpaceMode > 0 /* none */) { inlineChangeList.push({ text: " ", begin: lineParts[i].begin, @@ -691,7 +675,7 @@ var LineFormater = class { } break; case "formula" /* formula */: - if (lineParts[i].leftSpaceRequire > 0 /* none */ || settings.InlineFormulaSpaceMode > 0 /* none */) { + if (lineParts[i].leftSpaceRequire > 0 /* none */ && settings.InlineFormulaSpaceMode > 0 /* none */) { inlineChangeList.push({ text: " ", begin: lineParts[i].begin, @@ -704,7 +688,7 @@ var LineFormater = class { break; case "mdlink" /* mdlink */: case "wikilink" /* wikilink */: - if (lineParts[i].leftSpaceRequire > 0 /* none */ || settings.InlineLinkSpaceMode > 0 /* none */) { + if (lineParts[i].leftSpaceRequire > 0 /* none */ && settings.InlineLinkSpaceMode > 0 /* none */) { inlineChangeList.push({ text: " ", begin: lineParts[i].begin, @@ -716,7 +700,7 @@ var LineFormater = class { } break; case "user-defined" /* user */: - if (lineParts[i].leftSpaceRequire > 0 /* none */ || lineParts[i - 1].rightSpaceRequire > 0 /* none */) { + if (lineParts[i].leftSpaceRequire > 0 /* none */ && lineParts[i - 1].rightSpaceRequire > 0 /* none */) { inlineChangeList.push({ text: " ", begin: lineParts[i].begin, @@ -923,8 +907,12 @@ function string2SpaceState(s) { } function getPosLineType(state, pos) { const line = state.doc.lineAt(pos); - const tree = (0, import_language.syntaxTree)(state); + let line_number = line.number; + const tree = (0, import_language.ensureSyntaxTree)(state, line.to); const token = tree.resolve(line.from, 1).name; + if (token.contains("table")) { + return "table" /* table */; + } if (token.contains("hmd-frontmatter")) { return "frontmatter" /* frontmatter */; } @@ -943,6 +931,49 @@ function getPosLineType(state, pos) { } } return "codeblock" /* codeblock */; + } else if (token.contains("quote") && !token.contains("callout")) { + let callout_start_line = -1; + for (let l = line_number - 1; l >= 1; l -= 1) { + let l_line = state.doc.line(l); + let l_token = tree.resolve(l_line.from, 1).name; + if (!l_token.contains("quote")) { + break; + } + if (l_token.contains("callout")) { + callout_start_line = l; + break; + } + } + if (callout_start_line == -1) + return "text" /* text */; + let is_code_block = false; + let reset = false; + let reg_code_begin = /^>+ ```/; + let reg_code_end = /^>+ ```$/; + for (let l = callout_start_line + 1; l <= line_number; l += 1) { + let l_line = state.doc.line(l); + if (reset) { + is_code_block = false; + reset = false; + } + if (is_code_block && reg_code_end.test(l_line.text)) { + is_code_block = true; + reset = true; + } else if (!is_code_block && reg_code_begin.test(l_line.text)) { + is_code_block = true; + } + } + if (is_code_block) { + return "codeblock" /* codeblock */; + } else + return "text" /* text */; + } else if (token.contains("list")) { + for (let p = line.from + 1; p < line.to; p += 1) { + let t = tree.resolve(p, 1).name; + if (t.contains("code") && t.contains("block")) { + return "codeblock" /* codeblock */; + } + } } return "text" /* text */; } @@ -990,6 +1021,7 @@ var DEFAULT_SETTINGS = { IntrinsicSymbolPairs: true, BaseObEditEnhance: true, FW2HWEnhance: true, + BetterCodeEdit: true, AutoFormat: true, ExcludeFiles: "", ChineseEnglishSpace: true, @@ -1005,7 +1037,7 @@ var DEFAULT_SETTINGS = { InlineLinkSpaceMode: 1 /* soft */, InlineLinkSmartSpace: true, UserDefinedRegSwitch: true, - UserDefinedRegExp: "{{.*?}}|++\n<.*?>|--\n\\[\\!.*?\\][-+]{0,1}|-+\n(file:///|https?://|ftp://|obsidian://|zotero://|www.)[^\\s\uFF08\uFF09\u300A\u300B\u3002,\uFF0C\uFF01\uFF1F;\uFF1B\uFF1A\u201C\u201D\u2018\u2019\\)\\(\\[\\]\\{\\}']+|++\n\n[a-zA-Z0-9_\\-.]+@[a-zA-Z0-9_\\-.]+|++\n(?|--\n\\[\\!.*?\\][-+]{0,1}|-+\n(file:///|https?://|ftp://|obsidian://|zotero://|www.)[^\\s\uFF08\uFF09\u300A\u300B\u3002,\uFF0C\uFF01\uFF1F;\uFF1B\uFF1A\u201C\u201D\u2018\u2019\\)\\(\\[\\]\\{\\}']+|--\n\n[a-zA-Z0-9_\\-.]+@[a-zA-Z0-9_\\-.]+|++\n(? { + new import_obsidian2.Setting(containerEl).setName("Enhance codeblock edit").setDesc("Improve editing in codeblock(Tab, delete, paste, cmd/ctrl+A select). \u589E\u5F3A\u4EE3\u7801\u5757\u5185\u7684\u7F16\u8F91\uFF08Cmd/Ctrl+A \u9009\u4E2D\u3001Tab\u3001\u5220\u9664\u3001\u7C98\u8D34\uFF09").addToggle((toggle) => { + toggle.setValue(this.plugin.settings.BetterCodeEdit).onChange(async (value) => { + this.plugin.settings.BetterCodeEdit = value; + await this.plugin.saveSettings(); + }); + }); + new import_obsidian2.Setting(containerEl).setName("Tabout").setDesc("Tabout inline code or paired symbols(when selected). Tab \u8DF3\u51FA\u884C\u5185\u4EE3\u7801\u5757\u6216\u914D\u5BF9\u7B26\u53F7\u5757(\u9009\u4E2D\u65F6)").addToggle((toggle) => { toggle.setValue(this.plugin.settings.Tabout).onChange(async (value) => { this.plugin.settings.Tabout = value; await this.plugin.saveSettings(); @@ -1212,9 +1252,15 @@ var EasyTypingSettingTab = class extends import_obsidian2.PluginSettingTab { this.plugin.saveSettings(); })); containerEl.createEl("h2", { text: "Experimental Features" }); - new import_obsidian2.Setting(containerEl).setName("Enhance Chinese Input Method").setDesc("\u4E2D\u6587\u8F93\u5165\u6CD5\u4E0B\uFF0C\u56DE\u8F66\u8F93\u5165\u82F1\u6587\u65F6\u81EA\u52A8\u683C\u5F0F\u5316").addToggle((toggle) => { - toggle.setValue(this.plugin.settings.TryFixChineseIM).onChange(async (value) => { - this.plugin.settings.TryFixChineseIM = value; + new import_obsidian2.Setting(containerEl).setName("Fix MacOS context-menu cursor position(Need to restart Obsidian)").setDesc("\u4FEE\u590D MacOS \u9F20\u6807\u53F3\u952E\u547C\u51FA\u83DC\u5355\u65F6\u5149\u6807\u8DF3\u5230\u4E0B\u4E00\u884C\u7684\u95EE\u9898(\u9700\u8981\u91CD\u542FObsidian\u751F\u6548)").addToggle((toggle) => { + toggle.setValue(this.plugin.settings.FixMacOSContextMenu).onChange(async (value) => { + this.plugin.settings.FixMacOSContextMenu = value; + await this.plugin.saveSettings(); + }); + }); + new import_obsidian2.Setting(containerEl).setName("Fix MicroSoft Input Method Issue").setDesc("\u9002\u914D\u65E7\u7248\u5FAE\u8F6F\u8F93\u5165\u6CD5").addToggle((toggle) => { + toggle.setValue(this.plugin.settings.TryFixMSIME).onChange(async (value) => { + this.plugin.settings.TryFixMSIME = value; await this.plugin.saveSettings(); }); }); @@ -1259,8 +1305,8 @@ var EasyTypingSettingTab = class extends import_obsidian2.PluginSettingTab { let left = replaceLeftString.inputEl.value; let right = replaceRightString.inputEl.value; if (trigger && (left || right)) { - if (trigger.length > 1) { - new import_obsidian2.Notice("Inlvalid trigger, trigger must be a symbol of length 1"); + if (trigger.length != 1 && trigger != "\u2014\u2014" && trigger != "\u2026\u2026") { + new import_obsidian2.Notice("Inlvalid trigger, trigger must be a symbol of length 1 or symbol \u2014\u2014, \u2026\u2026"); return; } if (this.plugin.addUserSelectionRepRule(trigger, left, right)) { @@ -1497,12 +1543,101 @@ var EditConvertRuleModal = class extends import_obsidian2.Modal { // src/main.ts var import_view = require("@codemirror/view"); +var import_language3 = require("@codemirror/language"); + +// src/syntax.ts var import_language2 = require("@codemirror/language"); -var import_obsidian4 = require("obsidian"); -var import_fs = __toESM(require("fs")); +function isCodeBlockInPos(state, pos) { + let codeBlockInfos = getCodeBlocksInfos(state); + for (let i = 0; i < codeBlockInfos.length; i++) { + if (pos >= codeBlockInfos[i].start_pos && pos <= codeBlockInfos[i].end_pos) { + return true; + } + } + return false; +} +function selectCodeBlockInPos(view, pos) { + let codeBlockInfos = getCodeBlocksInfos(view.state); + for (let i = 0; i < codeBlockInfos.length; i++) { + if (pos >= codeBlockInfos[i].start_pos && pos <= codeBlockInfos[i].end_pos) { + view.dispatch({ + selection: { + anchor: codeBlockInfos[i].code_start_pos, + head: codeBlockInfos[i].code_end_pos + } + }); + return true; + } + } + return false; +} +function getCodeBlocksInfos(state) { + let isCodeBlockBegin = false; + let codeBlockInfos = []; + let curCodeBlockInfo = null; + const doc = state.doc; + (0, import_language2.syntaxTree)(state).iterate({ + enter(node) { + const nodeName = node.name; + const nodeFrom = node.from; + const nodeTo = node.to; + const nodeText = state.sliceDoc(nodeFrom, nodeTo); + if (nodeName.includes("codeblock-begin")) { + isCodeBlockBegin = true; + let start_pos = nodeFrom + nodeText.indexOf("`"); + let indent = start_pos - state.doc.lineAt(start_pos).from; + let language = nodeText.trim().substring(3); + curCodeBlockInfo = { + start_pos, + end_pos: -1, + code_start_pos: -1, + code_end_pos: -1, + language, + indent + }; + } else if (nodeName.includes("codeblock-end")) { + isCodeBlockBegin = false; + if (curCodeBlockInfo != null) { + curCodeBlockInfo.end_pos = nodeTo; + if (doc.lineAt(curCodeBlockInfo.start_pos).number == doc.lineAt(curCodeBlockInfo.end_pos).number - 1) { + curCodeBlockInfo.code_start_pos = doc.lineAt(curCodeBlockInfo.start_pos).to; + curCodeBlockInfo.code_end_pos = doc.lineAt(curCodeBlockInfo.start_pos).to; + } else { + let code_start_line = doc.lineAt(curCodeBlockInfo.start_pos).number + 1; + let code_end_line = doc.lineAt(curCodeBlockInfo.end_pos).number - 1; + curCodeBlockInfo.code_start_pos = doc.line(code_start_line).from + curCodeBlockInfo.indent; + curCodeBlockInfo.code_end_pos = doc.line(code_end_line).to; + } + codeBlockInfos.push(curCodeBlockInfo); + curCodeBlockInfo = null; + } + } + } + }); + if (isCodeBlockBegin && curCodeBlockInfo) { + curCodeBlockInfo.end_pos = doc.length; + curCodeBlockInfo.code_end_pos = doc.length; + if (doc.lines > doc.lineAt(curCodeBlockInfo.start_pos).number) { + let start_line = doc.lineAt(curCodeBlockInfo.start_pos).number + 1; + let code_start_pos = doc.line(start_line).from + curCodeBlockInfo.indent; + curCodeBlockInfo.code_start_pos = code_start_pos < doc.length ? code_start_pos : doc.lineAt(curCodeBlockInfo.start_pos + 1).from; + } else { + curCodeBlockInfo.code_start_pos = doc.lineAt(curCodeBlockInfo.start_pos).to; + } + codeBlockInfos.push(curCodeBlockInfo); + curCodeBlockInfo = null; + } + return codeBlockInfos; +} + +// src/main.ts var EasyTypingPlugin = class extends import_obsidian3.Plugin { constructor() { super(...arguments); + this.getDefaultIndentChar = () => { + let default_indent = this.app.vault.config.useTab ? " " : " ".repeat(this.app.vault.config.tabSize); + return default_indent; + }; this.transactionFilterPlugin = (tr) => { const changes = []; if (!tr.docChanged) @@ -1512,9 +1647,16 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { tr.changes.iterChanges((fromA, toA, fromB, toB, inserted) => { var _a, _b; let changedStr = tr.startState.sliceDoc(fromA, toA); + let changestr_ = changedStr.replace(/\s/g, "0"); let insertedStr = inserted.sliceString(0); + if (this.settings.debug) { + console.log("[TransactionFilter] type, fromA, toA, changed, fromB, toB, inserted"); + console.log(changeTypeStr, fromA, toA, changedStr, fromB, toB, insertedStr); + } + if (getPosLineType(tr.startState, fromA) == "table" /* table */) + return tr; if (this.settings.SelectionEnhance) { - if ((changeTypeStr == "input.type" || changeTypeStr == "input.type.compose") && fromA != toA && fromB + 1 === toB) { + if ((changeTypeStr == "input.type" || changeTypeStr == "input.type.compose") && fromA != toA && (fromB + 1 === toB || insertedStr == "\u2014\u2014" || insertedStr == "\u2026\u2026")) { if (this.SelectionReplaceMap.has(insertedStr)) { changes.push({ changes: { from: fromA, insert: (_a = this.SelectionReplaceMap.get(insertedStr)) == null ? void 0 : _a.left }, userEvent: "EasyTyping.change" }); changes.push({ changes: { from: toA, insert: (_b = this.SelectionReplaceMap.get(insertedStr)) == null ? void 0 : _b.right }, userEvent: "EasyTyping.change" }); @@ -1523,8 +1665,74 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { } } } + if (this.settings.BetterCodeEdit && changeTypeStr.contains("paste") && fromA == fromB && isCodeBlockInPos(tr.startState, fromA)) { + print("\u68C0\u6D4B\u5230\u5728\u4EE3\u7801\u5757\u4E2D\u7C98\u8D34"); + let line = tr.startState.doc.lineAt(fromB).text; + let indent_space = line.match(/^\s*/)[0].length; + let inserted_lines = insertedStr.split("\n"); + let extra_indent = ""; + if (inserted_lines.length > 1) { + let first_line = inserted_lines[0].trimStart(); + if (first_line.endsWith("{") || first_line.endsWith("(") || first_line.endsWith("[")) { + extra_indent = this.getDefaultIndentChar(); + } + let rest_lines = inserted_lines.slice(1); + let min_indent_space = Infinity; + for (let line2 of rest_lines) { + let indent = line2.match(/^\s*/)[0].length; + if (!/^\s*$/.test(line2) && indent < min_indent_space) + min_indent_space = indent; + } + let new_rest_lines = rest_lines.map((line2) => line2.substring(min_indent_space)); + new_rest_lines = new_rest_lines.map((line2) => line2.replace(/[\t]/g, this.getDefaultIndentChar())); + let final_rest_lines = new_rest_lines.map((line2) => " ".repeat(indent_space) + extra_indent + line2); + let new_insertedStr = first_line + "\n" + final_rest_lines.join("\n"); + changes.push({ + changes: { from: fromA, to: toA, insert: new_insertedStr }, + selection: { anchor: fromA + new_insertedStr.length }, + userEvent: "EasyTyping.change" + }); + tr = tr.startState.update(...changes); + return tr; + } + } if (selected) return tr; + if (this.settings.TryFixMSIME && changeTypeStr == "input.type.compose" && changedStr == "" && /^[\u4e00-\u9fa5]+$/.test(insertedStr)) { + print("MS-IME Compose detected:", insertedStr); + tr = tr.startState.update(...changes); + return tr; + } + if (this.settings.BetterCodeEdit && changeTypeStr == "delete.backward" && !selected && getPosLineType(tr.startState, toA) == "codeblock" /* codeblock */ && (tr.startState.sliceDoc(fromA, toA) != "`" || getPosLineType(tr.state, fromA) == "codeblock" /* codeblock */)) { + let line_number = tr.startState.doc.lineAt(toA).number; + let cur_line = tr.startState.doc.lineAt(toA); + let list_code = false; + let list_code_indent = 0; + for (let i = line_number - 1; i >= 1; i--) { + let line = tr.startState.doc.line(i); + if (/^\s+```/.test(line.text)) { + list_code = true; + list_code_indent = line.text.match(/^\s*/)[0].length; + break; + } else if (/^```/.test(line.text)) + break; + else + continue; + } + if (list_code) { + print("list_code, indent: ", list_code_indent); + if (toA == cur_line.from + list_code_indent) { + changes.push({ changes: { from: tr.startState.doc.line(line_number - 1).to, to: toA, insert: "" }, userEvent: "EasyTyping.change" }); + tr = tr.startState.update(...changes); + return tr; + } + if (fromA >= cur_line.from && fromA < cur_line.from + list_code_indent && toA > cur_line.from + list_code_indent) { + changes.push({ changes: { from: cur_line.from + list_code_indent, to: toA, insert: "" }, userEvent: "EasyTyping.change" }); + tr = tr.startState.update(...changes); + return tr; + } + } + } if (changeTypeStr == "delete.backward") { for (let rule of this.UserDeleteRules) { let left = tr.startState.doc.sliceString(toA - rule.before.left.length, toA); @@ -1550,6 +1758,21 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { tr = tr.startState.update(...changes); return tr; } + let line_content = tr.startState.doc.lineAt(toA).text; + let next_line_content = tr.startState.doc.sliceString(toA, toA + line_content.length + 1); + if (/^\s*```$/.test(line_content) && "\n" + line_content == next_line_content) { + changes.push({ + changes: { + from: toA - 3, + to: toA + line_content.length + 1, + insert: "" + }, + selection: { anchor: toA - 3 }, + userEvent: "EasyTyping.change" + }); + tr = tr.startState.update(...changes); + return tr; + } for (let rule of this.IntrinsicDeleteRules) { let left = tr.startState.doc.sliceString(toA - rule.before.left.length, toA); let right = tr.startState.doc.sliceString(toA, toA + rule.before.right.length); @@ -1568,8 +1791,42 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { } } } + if (changeTypeStr == "input.type" && insertedStr == "`\n```" && this.settings.BaseObEditEnhance) { + const line_content = tr.startState.doc.lineAt(fromA).text; + if (/^\s*``$/.test(line_content)) { + changes.push({ + changes: { from: fromA, to: toA, insert: "`\n" + line_content + "`" }, + selection: { anchor: fromA + 1 }, + userEvent: "EasyTyping.change" + }); + tr = tr.startState.update(...changes); + return tr; + } + } if ((changeTypeStr == "input.type" || changeTypeStr == "input.type.compose") && fromA === toA && fromB + 1 === toB) { if (this.settings.BaseObEditEnhance) { + if (insertedStr === "`" && toA - tr.startState.doc.lineAt(toA).from > 2 && tr.startState.sliceDoc(toA - 1, toA) === "`" && tr.startState.sliceDoc(toA - 2, toA - 1) != "`") { + changes.push({ + changes: { from: toA, insert: "`" }, + selection: { anchor: toA }, + userEvent: "EasyTyping.change" + }); + tr = tr.startState.update(...changes); + return tr; + } + if (insertedStr == "\xB7") { + let line_content = tr.startState.doc.lineAt(fromA).text; + let ch_pos = fromA - tr.startState.doc.lineAt(fromA).from; + if (/^\s*``$/.test(line_content) && ch_pos == line_content.length - 1) { + changes.push({ + changes: { from: fromA + 1, to: toA + 1, insert: "`\n" + line_content + "`" }, + selection: { anchor: fromA + 2 }, + userEvent: "EasyTyping.change" + }); + tr = tr.startState.update(...changes); + return tr; + } + } for (let rule of this.BasicConvRules) { if (insertedStr != rule.before.left.charAt(rule.before.left.length - 1)) continue; @@ -1649,7 +1906,7 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { return tr; } } - if (this.SymbolPairsMap.has(insertedStr)) { + if (this.SymbolPairsMap.has(insertedStr) && insertedStr != "'") { changes.push({ changes: { from: fromA, to: toA, insert: insertedStr + this.SymbolPairsMap.get(insertedStr) }, selection: { anchor: fromA + 1 }, @@ -1657,6 +1914,17 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { }); tr = tr.startState.update(...changes); return tr; + } else if (insertedStr === "'") { + let charBeforeCursor = tr.startState.sliceDoc(fromA - 1, fromA); + if (["", " ", "\n"].includes(charBeforeCursor)) { + changes.push({ + changes: { from: fromA, to: toA, insert: "''" }, + selection: { anchor: fromA + 1 }, + userEvent: "EasyTyping.change" + }); + tr = tr.startState.update(...changes); + return tr; + } } if (insertedStr === "\u201D" || insertedStr === "\u2019") { let tempStr = insertedStr === "\u201D" ? "\u201C\u201D" : "\u2018\u2019"; @@ -1674,6 +1942,8 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { return tr; }; this.viewUpdatePlugin = (update) => { + if (this.onFormatArticle === true) + return; let notSelected = true; let mainSelection = update.view.state.selection.asSingle().main; if (mainSelection.anchor != mainSelection.head) @@ -1686,71 +1956,53 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { tr.changes.iterChanges((fromA, toA, fromB, toB, inserted) => { let insertedStr = inserted.sliceString(0); let changedStr = tr.startState.doc.sliceString(fromA, toA); - if (this.settings.debug) - console.log("ViewUpdate Catch Change-> Type: " + changeType + ", ", fromA, toA, changedStr, fromB, toB, insertedStr); + if (this.settings.debug) { + console.log("[ViewUpdate] type, fromA, toA, changed, fromB, toB, inserted"); + console.log(changeType, fromA, toA, changedStr, fromB, toB, insertedStr); + console.log("==>[Composing]", update.view.composing); + } + if (getPosLineType(update.view.state, fromB) == "table" /* table */) { + return; + } let cursor = update.view.state.selection.asSingle().main; - let ChineseRegExp = /^[\u4e00-\u9fa5【】·¥《》?:’‘”“「」、。,()!——……0-9]+$/; - let chineseEndFlag = changeType == "input.type.compose" && cursor.anchor == cursor.head && cursor.anchor === toB && ChineseRegExp.test(insertedStr); - if (changeType != "input.type.compose") + if (update.view.composing) { + if (this.compose_need_handle) { + this.compose_end_pos = cursor.anchor; + } else { + this.compose_need_handle = true; + this.compose_begin_pos = fromA; + this.compose_end_pos = cursor.anchor; + } + return; + } + let change_from = fromB; + let change_to = toB; + let composeEnd = false; + if (this.compose_need_handle) { + composeEnd = true; this.compose_need_handle = false; - if (this.settings.AutoFormat && notSelected && !isExcludeFile && getPosLineType(update.view.state, fromB) == "text" /* text */) { - if (changeType == "input.type.compose") { - if (this.compose_need_handle == false) { - this.compose_begin_pos = fromB; - this.compose_end_pos = toB; - this.compose_need_handle = true; - } else { - this.compose_end_pos = toB; - if (this.compose_begin_pos == this.compose_end_pos) { - this.compose_need_handle = false; + change_from = this.compose_begin_pos; + change_to = this.compose_end_pos; + } + if (changeType.contains("EasyTyping") || changeType == "undo" || changeType == "redo") + return; + if (changeType != "none" && notSelected && !changeType.includes("delete")) { + if (this.triggerUserCvtRule(update.view, mainSelection.anchor)) + return; + if (composeEnd && this.triggerPuncRectify(update.view, change_from)) + return; + if (this.settings.AutoFormat && notSelected && !isExcludeFile && (changeType != "none" || insertedStr == "\n")) { + if (getPosLineType(update.view.state, change_from) == "text" /* text */ || getPosLineType(update.view.state, change_from) == "table" /* table */) { + let changes = this.Formater.formatLineOfDoc(update.state, this.settings, change_from, cursor.anchor, insertedStr); + if (changes != null) { + update.view.dispatch(...changes[0]); + update.view.dispatch(changes[1]); + return; } } } - if (chineseEndFlag) - this.compose_need_handle = false; } - if (changeType == "input.type" || changeType == "input" || chineseEndFlag || changeType == "none") { - for (let rule of this.UserConvertRules) { - let left = update.view.state.doc.sliceString(toB - rule.before.left.length, toB); - let right = update.view.state.doc.sliceString(toB, toB + rule.before.right.length); - if (left === rule.before.left && right === rule.before.right) { - update.view.dispatch({ - changes: { - from: toB - rule.before.left.length, - to: toB + rule.before.right.length, - insert: rule.after.left + rule.after.right - }, - selection: { anchor: toB - rule.before.left.length + rule.after.left.length }, - userEvent: "EasyTyping.change" - }); - return; - } - } - if (this.settings.PuncRectify && chineseEndFlag && this.compose_begin_pos > 1 && /[,.?!]/.test(update.view.state.doc.sliceString(this.compose_begin_pos - 1, this.compose_begin_pos))) { - let punc = update.view.state.doc.sliceString(this.compose_begin_pos - 1, this.compose_begin_pos); - if (this.compose_begin_pos > 2 && /[\s\n\w]/.test(update.view.state.doc.sliceString(this.compose_begin_pos - 2, this.compose_begin_pos - 1))) { - } else { - update.view.dispatch({ - changes: { - from: this.compose_begin_pos - 1, - to: this.compose_begin_pos, - insert: this.halfToFullSymbolMap.get(punc) - }, - userEvent: "EasyTyping.change" - }); - return; - } - } - if (this.settings.AutoFormat && notSelected && !isExcludeFile && (changeType != "none" || insertedStr.contains("\n")) && getPosLineType(update.view.state, fromB) == "text" /* text */) { - let changes = this.Formater.formatLineOfDoc(update.state, this.settings, fromB, cursor.anchor, insertedStr); - if (changes != null) { - update.view.dispatch(...changes[0]); - update.view.dispatch(changes[1]); - return; - } - } - } - if (this.settings.AutoFormat && !isExcludeFile && changeType == "input.paste" && !import_obsidian4.Platform.isIosApp) { + if (this.settings.AutoFormat && !isExcludeFile && changeType == "input.paste" && !import_obsidian3.Platform.isIosApp) { let updateLineStart = update.state.doc.lineAt(fromB).number; let updateLineEnd = update.state.doc.lineAt(toB).number; if (updateLineStart == updateLineEnd && getPosLineType(update.view.state, toB) == "text" /* text */) { @@ -1784,13 +2036,25 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { return false; let state = view.state; let doc = state.doc; - const tree = (0, import_language2.syntaxTree)(state); + const tree = (0, import_language3.syntaxTree)(state); const s = view.state.selection; if (s.ranges.length > 1) return false; const pos = s.main.to; let line = doc.lineAt(pos); - if (pos - line.from != 0 && tree.resolve(pos - 1, 1).name.contains("inline-code")) { + if (s.main.from == s.main.to && getPosLineType(view.state, s.main.from) == "codeblock" /* codeblock */) { + view.dispatch({ + changes: { + from: s.main.from, + insert: this.getDefaultIndentChar() + }, + selection: { + anchor: s.main.from + this.getDefaultIndentChar().length + } + }); + return true; + } + if (this.settings.BetterCodeEdit && pos - line.from != 0 && tree.resolve(pos - 1, 1).name.contains("inline-code")) { if (tree.resolve(pos, 1).name.contains("formatting-code_inline-code")) { view.dispatch({ selection: { anchor: pos + 1, head: pos + 1 } @@ -1812,20 +2076,31 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { } } } + let selection = view.state.selection.asSingle().main; + let selected = selection.anchor != selection.head; + if (selected) { + let new_anchor = selection.anchor < selection.head ? selection.anchor : selection.head; + let new_head = selection.anchor > selection.head ? selection.anchor : selection.head; + for (let pstr of this.TaboutPairStrs) { + if (doc.sliceString(new_anchor - pstr.left.length, new_anchor) == pstr.left && doc.sliceString(new_head, new_head + pstr.right.length) == pstr.right) { + view.dispatch({ + selection: { anchor: new_head + pstr.right.length, head: new_head + pstr.right.length } + }); + return true; + } + } + } return false; }; this.handleEnter = (view) => { if (!this.settings.EnterTwice) return false; - const basePath = this.app.vault.adapter.basePath; - let config_path = basePath + "/" + this.app.vault.configDir + "/app.json"; - let config = JSON.parse(import_fs.default.readFileSync(config_path, "utf-8")); - let strictLineBreaks = config.strictLineBreaks || false; + let strictLineBreaks = this.app.vault.config.strictLineBreaks || false; if (!strictLineBreaks) return false; let state = view.state; let doc = state.doc; - const tree = (0, import_language2.syntaxTree)(state); + const tree = (0, import_language3.syntaxTree)(state); const s = view.state.selection; if (s.ranges.length > 1) return false; @@ -1847,33 +2122,101 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { } return false; }; + this.handleModAInCodeBlock = (view) => { + if (!this.settings.BetterCodeEdit) + return false; + let selected = false; + let mainSelection = view.state.selection.asSingle().main; + if (mainSelection.anchor != mainSelection.head) + selected = true; + if (selected) + return false; + let cursor_pos = mainSelection.anchor; + return selectCodeBlockInPos(view, cursor_pos); + }; this.onKeyup = (event, view) => { if (this.settings.debug) { console.log("Keyup:", event.key); } this.handleEndComposeTypeKey(event, view); }; + this.triggerUserCvtRule = (view, cursor_pos) => { + for (let rule of this.UserConvertRules) { + let left = view.state.doc.sliceString(cursor_pos - rule.before.left.length, cursor_pos); + let right = view.state.doc.sliceString(cursor_pos, cursor_pos + rule.before.right.length); + let inserted = rule.after.left + rule.after.right; + let anchor = cursor_pos - rule.before.left.length + rule.after.left.length; + let from = cursor_pos - rule.before.left.length; + let to = cursor_pos + rule.before.right.length; + if (rule.before.left.charAt(0) === "\n" && rule.after.left.charAt(0) === "\n" && cursor_pos - rule.before.left.length + 1 == 0) { + left = "\n" + left; + inserted = inserted.substring(1); + from = 0; + } + if (left === rule.before.left && right === rule.before.right) { + view.dispatch({ + changes: { + from, + to, + insert: inserted + }, + selection: { anchor }, + userEvent: "EasyTyping.change" + }); + return true; + } + } + return false; + }; + this.triggerPuncRectify = (view, change_from_pos) => { + if (this.settings.PuncRectify && /[,.?!]/.test(view.state.doc.sliceString(change_from_pos - 1, change_from_pos))) { + let punc = view.state.doc.sliceString(change_from_pos - 1, change_from_pos); + if (change_from_pos > 2 && /[^\u4e00-\u9fa5]/.test(view.state.doc.sliceString(change_from_pos - 2, change_from_pos - 1))) { + } else { + view.dispatch({ + changes: { + from: change_from_pos - 1, + to: change_from_pos, + insert: this.halfToFullSymbolMap.get(punc) + }, + userEvent: "EasyTyping.change" + }); + return true; + } + } + return false; + }; this.handleEndComposeTypeKey = (event, view) => { - if (!this.settings.TryFixChineseIM) - return; - if (["Enter"].contains(event.key) && this.settings.AutoFormat && this.compose_need_handle && !this.isCurrentFileExclude()) { + if ((["Enter", "Process", " ", "Shift"].contains(event.key) || /\d/.test(event.key)) && this.compose_need_handle) { let cursor = view.state.selection.asSingle().main; - if (getPosLineType(view.state, cursor.anchor) != "text" /* text */) - return; if (cursor.head != cursor.anchor) return; let insertedStr = view.state.doc.sliceString(this.compose_begin_pos, cursor.anchor); - console.log("inserted str", insertedStr); - let changes = this.Formater.formatLineOfDoc(view.state, this.settings, this.compose_begin_pos, cursor.anchor, insertedStr); this.compose_need_handle = false; - if (changes != null) { - view.dispatch(...changes[0]); - view.dispatch(changes[1]); + if (this.triggerUserCvtRule(view, cursor.anchor)) return; + if (this.triggerPuncRectify(view, this.compose_begin_pos)) + return; + if (this.settings.AutoFormat && !this.isCurrentFileExclude()) { + if (getPosLineType(view.state, cursor.anchor) != "text" /* text */) + return; + let changes = this.Formater.formatLineOfDoc(view.state, this.settings, this.compose_begin_pos, cursor.anchor, insertedStr); + if (changes != null) { + view.dispatch(...changes[0]); + view.dispatch(changes[1]); + return; + } } } }; this.formatArticle = (editor, view) => { + const editorView = editor.cm; + const tree = (0, import_language3.ensureSyntaxTree)(editorView.state, editorView.state.doc.length); + if (!tree) { + new import_obsidian3.Notice("EasyTyping: Syntax tree is not ready yet, please wait a moment and try again later!", 5e3); + return; + } + this.onFormatArticle = true; let lineCount = editor.lineCount(); let new_article = ""; let cs = editor.getCursor(); @@ -1891,6 +2234,7 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { } editor.setValue(new_article); editor.setCursor({ line: cs.line, ch }); + this.onFormatArticle = false; new import_obsidian3.Notice("EasyTyping: Format Article Done!"); }; this.formatSelectionOrCurLine = (editor, view) => { @@ -1913,7 +2257,6 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { for (let i = begin; i <= end; i++) { if (i != begin) new_lines += "\n"; - console.log("i+1", i + 1); new_lines += this.preFormatOneLine(editor, i + 1)[0]; } editor.replaceRange(new_lines, { line: begin, ch: 0 }, { line: end, ch: editor.getLine(end).length }); @@ -1927,7 +2270,7 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { const editorView = editor.cm; let state = editorView.state; let line = state.doc.line(lineNumber); - if (getPosLineType(state, line.from) == "text" /* text */) { + if (getPosLineType(state, line.from) == "text" /* text */ || getPosLineType(state, line.from) == "table" /* table */) { let oldLine = line.text; let newLine = this.Formater.formatLine(state, lineNumber, this.settings, oldLine.length, 0)[0]; if (oldLine != newLine) { @@ -1947,7 +2290,7 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { if (ch != -1) { curCh = ch; } - if (getPosLineType(state, line.from) == "text" /* text */) { + if (getPosLineType(state, line.from) == "text" /* text */ || getPosLineType(state, line.from) == "table" /* table */) { let newLineData = this.Formater.formatLine(state, lineNumber, this.settings, curCh, 0); newLine = newLineData[0]; newCh = newLineData[1]; @@ -1955,17 +2298,18 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { return [newLine, newCh]; }; this.deleteBlankLines = (editor) => { - const basePath = this.app.vault.adapter.basePath; - let config_path = basePath + "/" + this.app.vault.configDir + "/app.json"; if (this.settings.debug) { - console.log(config_path); - let config = JSON.parse(import_fs.default.readFileSync(config_path, "utf-8")); - console.log(config); + console.log(this.app.vault.getConfig("strictLineBreaks")); } + let strictLineBreaks = this.app.vault.getConfig("strictLineBreaks"); const editorView = editor.cm; let state = editorView.state; let doc = state.doc; - const tree = (0, import_language2.syntaxTree)(state); + const tree = (0, import_language3.ensureSyntaxTree)(state, doc.length); + if (!tree) { + new import_obsidian3.Notice("EasyTyping: Syntax tree is not ready yet, please wait a moment and try again later!", 5e3); + return; + } let start_line = 1; let end_line = doc.lines; let line_num = doc.lines; @@ -2041,6 +2385,7 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { ["\u3010", { left: "[", right: "]" }], ["\uFFE5", { left: "$", right: "$" }], ["\xB7", { left: "`", right: "`" }], + ["\xA5", { left: "$", right: "$" }], ["\u300A", { left: "\u300A", right: "\u300B" }], ["\u201C", { left: "\u201C", right: "\u201D" }], ["\u201D", { left: "\u201C", right: "\u201D" }], @@ -2049,7 +2394,7 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { ]; this.refreshSelectionReplaceRule(); this.SymbolPairsMap = /* @__PURE__ */ new Map(); - let SymbolPairs = ["\u3010\u3011", "\uFF08\uFF09", "\u300A\u300B", "\u201C\u201D", "\u2018\u2019", "\u300C\u300D", "\u300E\u300F"]; + let SymbolPairs = ["\u3010\u3011", "\uFF08\uFF09", "\u300A\u300B", "\u201C\u201D", "\u2018\u2019", "\u300C\u300D", "\u300E\u300F", "[]", "()", "{}", '""', "''"]; for (let pairStr of SymbolPairs) this.SymbolPairsMap.set(pairStr.charAt(0), pairStr.charAt(1)); this.halfToFullSymbolMap = /* @__PURE__ */ new Map([ @@ -2060,11 +2405,14 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { ]); let BasicConvRuleStringList = [ ["\xB7\xB7|", "`|`"], - ["`\xB7|`", "```|\n```"], + ["\uFF01\u3010\u3010|\u3011", "![[|]]"], + ["\uFF01\u3010\u3010|", "![[|]]"], ["\u3010\u3010|\u3011", "[[|]]"], ["\u3010\u3010|", "[[|]]"], ["\uFFE5\uFFE5|", "$|$"], ["$\uFFE5|$", "$$\n|\n$$"], + ["\xA5\xA5|", "$|$"], + ["$\xA5|$", "$$\n|\n$$"], ["$$|$", "$$\n|\n$$"], ["$$|", "$|$"], [">\u300B|", ">>|"], @@ -2084,12 +2432,16 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { ["\uFF08\uFF08|", "(|)"], ["\u201C\u201C|\u201D", '"|"'], ["\u201C\u201D|\u201D", '"|"'], + ["\u2018\u2018|\u2019", "'|'"], + ["\u2018\u2019|\u2019", "'|'"], ["\u300B\u300B|", ">|"], ["\u300A\u300A|\u300B", "<|"], ["\u300A\u300A|", "<|"] ]; this.FW2HWSymbolRules = ruleStringList2RuleList(FW2HWSymbolRulesStrList); - let DeleteRulesStrList = [["$|$", "|"], ["```|\n```", "|"], ["==|==", "|"], ["$$\n|\n$$", "|"]]; + let fw2hw_rule_0 = { before: { left: "\uFF5C\uFF5C", right: "" }, after: { left: "|", right: "" } }; + this.FW2HWSymbolRules.push(fw2hw_rule_0); + let DeleteRulesStrList = [["$|$", "|"], ["==|==", "|"], ["$$\n|\n$$", "|"]]; this.IntrinsicDeleteRules = ruleStringList2RuleList(DeleteRulesStrList); let autoPairRulesPatchStrList = [ ["\u3010\u3011|\u3011", "\u3010\u3011|"], @@ -2097,22 +2449,53 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { ["<>|>", "<>|"], ["\u300A\u300B|\u300B", "\u300A\u300B|"], ["\u300C\u300D|\u300D", "\u300C\u300D|"], - ["\u300E\u300F|\u300F", "\u300E\u300F|"] + ["\u300E\u300F|\u300F", "\u300E\u300F|"], + ["()|)", "()|"], + ["[]|]", "[]|"], + ["{}|}", "{}|"], + ["''|'", "''|"], + ['""|"', '""|'] ]; this.IntrinsicAutoPairRulesPatch = ruleStringList2RuleList(autoPairRulesPatchStrList); + let TaboutPairStrs = [ + "\u3010|\u3011", + "\uFF08|\uFF09", + "\u300A|\u300B", + "\u201C|\u201D", + "\u2018|\u2019", + "\u300C|\u300D", + "\u300E|\u300F", + "'|'", + '"|"', + "$$|$$", + "$|$", + "__|__", + "_|_", + "==|==", + "~~|~~", + "**|**", + "*|*", + "[[|]]", + "[|]", + "{|}", + "(|)", + "<|>" + ]; + this.TaboutPairStrs = TaboutPairStrs.map((s) => string2pairstring(s)); this.refreshUserDeleteRule(); this.refreshUserConvertRule(); this.CurActiveMarkdown = ""; this.compose_need_handle = false; this.Formater = new LineFormater(); + this.onFormatArticle = false; this.registerEditorExtension([ import_state.EditorState.transactionFilter.of(this.transactionFilterPlugin), import_view.EditorView.updateListener.of(this.viewUpdatePlugin), - import_state2.Prec.highest(import_view.EditorView.domEventHandlers({ + import_state.Prec.highest(import_view.EditorView.domEventHandlers({ "keyup": this.onKeyup })) ]); - this.registerEditorExtension(import_state2.Prec.highest(import_view.keymap.of([ + this.registerEditorExtension(import_state.Prec.highest(import_view.keymap.of([ { key: "Tab", run: (view) => { @@ -2126,6 +2509,13 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { const success = this.handleEnter(view); return success; } + }, + { + key: "Mod-a", + run: (view) => { + const success = this.handleModAInCodeBlock(view); + return success; + } } ]))); this.lang = window.localStorage.getItem("language"); @@ -2205,14 +2595,35 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { } } })); + if (import_obsidian3.Platform.isMacOS && this.settings.FixMacOSContextMenu) { + this.registerEvent(this.app.workspace.on("editor-menu", (menu, editor, view) => { + if (editor.listSelections().length != 1) + return; + let selection = editor.listSelections()[0]; + let selected = editor.getSelection(); + if (selected == "\n") { + editor.setSelection(selection.anchor, selection.anchor); + } + })); + } + console.log("Easy Typing Plugin loaded."); } onunload() { + console.log("Easy Typing Plugin unloaded."); } async normalPaste(editor) { let clipboardText = await navigator.clipboard.readText(); if (clipboardText === null || clipboardText === "") return; - editor.replaceSelection(clipboardText); + if (this.settings.debug) + console.log("Normal Paste!!"); + const editorView = editor.cm; + let mainSelection = editorView.state.selection.asSingle().main; + editorView.dispatch({ + changes: { from: mainSelection.from, to: mainSelection.to, insert: clipboardText }, + selection: { anchor: mainSelection.from + clipboardText.length }, + userEvent: "EasyTyping.paste" + }); } isCurrentFileExclude() { if (this.CurActiveMarkdown == "") { @@ -2237,7 +2648,7 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { return false; } switchAutoFormatting() { - this.settings.AutoFormat = this.settings.AutoFormat ? false : true; + this.settings.AutoFormat = !this.settings.AutoFormat; let status = this.settings.AutoFormat ? "on" : "off"; new import_obsidian3.Notice("EasyTyping: Autoformat is " + status + "!"); } @@ -2392,4 +2803,4 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { await this.saveData(this.settings); } }; -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL21haW4udHMiLCAic3JjL2NvcmUudHMiLCAic3JjL3V0aWxzLnRzIiwgInNyYy9zZXR0aW5ncy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQXBwLCBFZGl0b3IsIE1hcmtkb3duVmlldywgTW9kYWwsIE5vdGljZSwgUGx1Z2luLCBQbHVnaW5TZXR0aW5nVGFiLCBTZXR0aW5nLCBXb3Jrc3BhY2UsIFdvcmtzcGFjZUxlYWYsIFRGaWxlIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHsgRWRpdG9yU3RhdGUsIEV4dGVuc2lvbiwgU3RhdGVGaWVsZCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3BlYywgVGV4dCB9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB7IFNlbGVjdGlvblJhbmdlLCBQcmVjIH0gZnJvbSBcIkBjb2RlbWlycm9yL3N0YXRlXCI7XG5pbXBvcnQgeyBFYXN5VHlwaW5nU2V0dGluZ1RhYiwgRWFzeVR5cGluZ1NldHRpbmdzLCBERUZBVUxUX1NFVFRJTkdTLCBQYWlyU3RyaW5nLCBDb252ZXJ0UnVsZSB9IGZyb20gXCIuL3NldHRpbmdzXCJcbmltcG9ydCB7IEVkaXRvclZpZXcsIGtleW1hcCwgVmlld1VwZGF0ZSB9IGZyb20gJ0Bjb2RlbWlycm9yL3ZpZXcnO1xuaW1wb3J0IHsgcG9zVG9PZmZzZXQsIG9mZnNldFRvUG9zLCBydWxlU3RyaW5nTGlzdDJSdWxlTGlzdCwgZ2V0VHlwZVN0ck9mVHJhbnNhYyB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgeyBMaW5lRm9ybWF0ZXIsIGdldFBvc0xpbmVUeXBlLCBnZXRQb3NMaW5lVHlwZTIsIExpbmVUeXBlIH0gZnJvbSAnLi9jb3JlJ1xuaW1wb3J0IHsgc3ludGF4VHJlZSB9IGZyb20gXCJAY29kZW1pcnJvci9sYW5ndWFnZVwiO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc3lUeXBpbmdQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuXHRzZXR0aW5nczogRWFzeVR5cGluZ1NldHRpbmdzO1xuXHRzZWxlY3Rpb25SZXBsYWNlTWFwSW5pdGFsRGF0YTogW3N0cmluZywgUGFpclN0cmluZ11bXTtcblx0U2VsZWN0aW9uUmVwbGFjZU1hcDogTWFwPHN0cmluZywgUGFpclN0cmluZz47XG5cdFN5bWJvbFBhaXJzTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXHRoYWxmVG9GdWxsU3ltYm9sTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXHRCYXNpY0NvbnZSdWxlczogQ29udmVydFJ1bGVbXTtcblx0RlcySFdTeW1ib2xSdWxlczogQ29udmVydFJ1bGVbXTtcblx0Rm9ybWF0ZXI6IExpbmVGb3JtYXRlcjtcblx0SW50cmluc2ljRGVsZXRlUnVsZXM6IENvbnZlcnRSdWxlW107XG5cdEludHJpbnNpY0F1dG9QYWlyUnVsZXNQYXRjaDogQ29udmVydFJ1bGVbXTtcblx0Q3VyQWN0aXZlTWFya2Rvd246IHN0cmluZztcblxuXHRVc2VyRGVsZXRlUnVsZXM6IENvbnZlcnRSdWxlW107XG5cdFVzZXJDb252ZXJ0UnVsZXM6IENvbnZlcnRSdWxlW107XG5cdGxhbmc6IHN0cmluZztcblxuXHRjb21wb3NlX2JlZ2luX3BvczogbnVtYmVyO1xuXHRjb21wb3NlX2VuZF9wb3M6IG51bWJlcjtcblx0Y29tcG9zZV9uZWVkX2hhbmRsZTogYm9vbGVhbjtcblxuXG5cdGFzeW5jIG9ubG9hZCgpIHtcblx0XHRhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpO1xuXHRcdHRoaXMuc2VsZWN0aW9uUmVwbGFjZU1hcEluaXRhbERhdGEgPSBbXG5cdFx0XHRbXCJcdTMwMTBcIiwgeyBsZWZ0OiBcIltcIiwgcmlnaHQ6IFwiXVwiIH1dLCBbXCJcdUZGRTVcIiwgeyBsZWZ0OiBcIiRcIiwgcmlnaHQ6IFwiJFwiIH1dLCBbXCJcdTAwQjdcIiwgeyBsZWZ0OiBcImBcIiwgcmlnaHQ6IFwiYFwiIH1dLFxuXHRcdFx0W1wiXHUzMDBBXCIsIHsgbGVmdDogXCJcdTMwMEFcIiwgcmlnaHQ6IFwiXHUzMDBCXCIgfV0sIFtcIlx1MjAxQ1wiLCB7IGxlZnQ6IFwiXHUyMDFDXCIsIHJpZ2h0OiBcIlx1MjAxRFwiIH1dLCBbXCJcdTIwMURcIiwgeyBsZWZ0OiBcIlx1MjAxQ1wiLCByaWdodDogXCJcdTIwMURcIiB9XSwgW1wiXHVGRjA4XCIsIHsgbGVmdDogXCJcdUZGMDhcIiwgcmlnaHQ6IFwiXHVGRjA5XCIgfV0sXG5cdFx0XHRbXCI8XCIsIHsgbGVmdDogXCI8XCIsIHJpZ2h0OiBcIj5cIiB9XVxuXHRcdF07XG5cdFx0dGhpcy5yZWZyZXNoU2VsZWN0aW9uUmVwbGFjZVJ1bGUoKTtcblx0XHR0aGlzLlN5bWJvbFBhaXJzTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblx0XHRsZXQgU3ltYm9sUGFpcnMgPSBbXCJcdTMwMTBcdTMwMTFcIiwgXCJcdUZGMDhcdUZGMDlcIiwgXCJcdTMwMEFcdTMwMEJcIiwgXCJcdTIwMUNcdTIwMURcIiwgXCJcdTIwMThcdTIwMTlcIiwgXCJcdTMwMENcdTMwMERcIiwgXCJcdTMwMEVcdTMwMEZcIl1cblx0XHRmb3IgKGxldCBwYWlyU3RyIG9mIFN5bWJvbFBhaXJzKSB0aGlzLlN5bWJvbFBhaXJzTWFwLnNldChwYWlyU3RyLmNoYXJBdCgwKSwgcGFpclN0ci5jaGFyQXQoMSkpO1xuXG5cdFx0dGhpcy5oYWxmVG9GdWxsU3ltYm9sTWFwID0gbmV3IE1hcChbXG5cdFx0XHRbXCIuXCIsIFwiXHUzMDAyXCJdLFxuXHRcdFx0W1wiLFwiLCBcIlx1RkYwQ1wiXSxcblx0XHRcdFsnPycsICdcdUZGMUYnXSxcblx0XHRcdFsnIScsICdcdUZGMDEnXVxuXHRcdF0pO1xuXG5cdFx0bGV0IEJhc2ljQ29udlJ1bGVTdHJpbmdMaXN0OiBBcnJheTxbc3RyaW5nLCBzdHJpbmddPiA9IFtbJ1x1MDBCN1x1MDBCN3wnLCAnYHxgJ10sIFtcImBcdTAwQjd8YFwiLCBcImBgYHxcXG5gYGBcIl0sXG5cdFx0W1wiXHUzMDEwXHUzMDEwfFx1MzAxMVwiLCBcIltbfF1dXCJdLCBbJ1x1MzAxMFx1MzAxMHwnLCBcIltbfF1dXCJdLCBbJ1x1RkZFNVx1RkZFNXwnLCAnJHwkJ10sIFsnJFx1RkZFNXwkJywgXCIkJFxcbnxcXG4kJFwiXSwgW1wiJCR8JFwiLCBcIiQkXFxufFxcbiQkXCJdLCBbJyQkfCcsIFwiJHwkXCJdLFxuXHRcdFtcIj5cdTMwMEJ8XCIsIFwiPj58XCJdLCBbJ1xcblx1MzAwQnwnLCBcIlxcbj58XCJdLCBbXCIgXHUzMDBCfFwiLCBcIiA+fFwiXSwgW1wiXFxuXHUzMDAxfFwiLCBcIlxcbi98XCJdXTtcblx0XHR0aGlzLkJhc2ljQ29udlJ1bGVzID0gcnVsZVN0cmluZ0xpc3QyUnVsZUxpc3QoQmFzaWNDb252UnVsZVN0cmluZ0xpc3QpO1xuXHRcdGxldCBGVzJIV1N5bWJvbFJ1bGVzU3RyTGlzdDogQXJyYXk8W3N0cmluZywgc3RyaW5nXT4gPSBbW1wiXHUzMDAyXHUzMDAyfFwiLCBcIi58XCJdLCBbXCJcdUZGMDFcdUZGMDF8XCIsIFwiIXxcIl0sIFtcIlx1RkYxQlx1RkYxQnxcIiwgXCI7fFwiXSwgW1wiXHVGRjBDXHVGRjBDfFwiLCBcIix8XCJdLFxuXHRcdFtcIlx1RkYxQVx1RkYxQXxcIiwgXCI6fFwiXSwgWydcdUZGMUZcdUZGMUZ8JywgJz98J10sIFsnXHVGRjA4XHVGRjA4fFx1RkYwOScsIFwiKHwpXCJdLCBbJ1x1RkYwOFx1RkYwOHwnLCAnKHwpJ10sIFtcIlx1MjAxQ1x1MjAxQ3xcdTIwMURcIiwgXCJcXFwifFxcXCJcIl0sIFtcIlx1MjAxQ1x1MjAxRHxcdTIwMURcIiwgXCJcXFwifFxcXCJcIl0sXG5cdFx0W1wiXHUzMDBCXHUzMDBCfFwiLCBcIj58XCJdLCBbXCJcdTMwMEFcdTMwMEF8XHUzMDBCXCIsIFwiPHxcIl0sIFsnXHUzMDBBXHUzMDBBfCcsIFwiPHxcIl1dO1xuXHRcdHRoaXMuRlcySFdTeW1ib2xSdWxlcyA9IHJ1bGVTdHJpbmdMaXN0MlJ1bGVMaXN0KEZXMkhXU3ltYm9sUnVsZXNTdHJMaXN0KTtcblxuXHRcdGxldCBEZWxldGVSdWxlc1N0ckxpc3Q6IEFycmF5PFtzdHJpbmcsIHN0cmluZ10+ID0gW1tcIiR8JFwiLCBcInxcIl0sIFsnYGBgfFxcbmBgYCcsICd8J10sIFsnPT18PT0nLCAnfCddLCBbJyQkXFxufFxcbiQkJywgXCJ8XCJdXTtcblx0XHR0aGlzLkludHJpbnNpY0RlbGV0ZVJ1bGVzID0gcnVsZVN0cmluZ0xpc3QyUnVsZUxpc3QoRGVsZXRlUnVsZXNTdHJMaXN0KTtcblxuXHRcdC8vIGxldFxuXHRcdGxldCBhdXRvUGFpclJ1bGVzUGF0Y2hTdHJMaXN0OiBBcnJheTxbc3RyaW5nLCBzdHJpbmddPiA9IFtbXCJcdTMwMTBcdTMwMTF8XHUzMDExXCIsIFwiXHUzMDEwXHUzMDExfFwiXSwgW1wiXHVGRjA4XHVGRjA5fFx1RkYwOVwiLCBcIlx1RkYwOFx1RkYwOXxcIl0sXG5cdFx0W1wiPD58PlwiLCBcIjw+fFwiXSwgW1wiXHUzMDBBXHUzMDBCfFx1MzAwQlwiLCBcIlx1MzAwQVx1MzAwQnxcIl0sIFtcIlx1MzAwQ1x1MzAwRHxcdTMwMERcIiwgXCJcdTMwMENcdTMwMER8XCJdLCBbXCJcdTMwMEVcdTMwMEZ8XHUzMDBGXCIsIFwiXHUzMDBFXHUzMDBGfFwiXVxuXHRcdF07XG5cdFx0dGhpcy5JbnRyaW5zaWNBdXRvUGFpclJ1bGVzUGF0Y2ggPSBydWxlU3RyaW5nTGlzdDJSdWxlTGlzdChhdXRvUGFpclJ1bGVzUGF0Y2hTdHJMaXN0KTtcblxuXHRcdHRoaXMucmVmcmVzaFVzZXJEZWxldGVSdWxlKCk7XG5cdFx0dGhpcy5yZWZyZXNoVXNlckNvbnZlcnRSdWxlKCk7XG5cblx0XHR0aGlzLkN1ckFjdGl2ZU1hcmtkb3duID0gXCJcIjtcblxuXHRcdHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSA9IGZhbHNlO1xuXG5cdFx0dGhpcy5Gb3JtYXRlciA9IG5ldyBMaW5lRm9ybWF0ZXIoKTtcblxuXHRcdHRoaXMucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oW1xuXHRcdFx0RWRpdG9yU3RhdGUudHJhbnNhY3Rpb25GaWx0ZXIub2YodGhpcy50cmFuc2FjdGlvbkZpbHRlclBsdWdpbiksXG5cdFx0XHRFZGl0b3JWaWV3LnVwZGF0ZUxpc3RlbmVyLm9mKHRoaXMudmlld1VwZGF0ZVBsdWdpbiksXG5cdFx0XHRQcmVjLmhpZ2hlc3QoRWRpdG9yVmlldy5kb21FdmVudEhhbmRsZXJzKHtcblx0XHRcdFx0XCJrZXl1cFwiOiB0aGlzLm9uS2V5dXBcblx0XHRcdH0pKVxuXHRcdF0pO1xuXG5cblx0XHR0aGlzLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFByZWMuaGlnaGVzdChrZXltYXAub2YoW1xuXHRcdFx0e1xuXHRcdFx0XHRrZXk6IFwiVGFiXCIsXG5cdFx0XHRcdHJ1bjogKHZpZXc6IEVkaXRvclZpZXcpOiBib29sZWFuID0+IHtcblx0XHRcdFx0XHRjb25zdCBzdWNjZXNzID0gdGhpcy5oYW5kbGVUYWJEb3duKHZpZXcpO1xuXHRcdFx0XHRcdHJldHVybiBzdWNjZXNzO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRrZXk6IFwiRW50ZXJcIixcblx0XHRcdFx0cnVuOiAodmlldzogRWRpdG9yVmlldyk6IGJvb2xlYW4gPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHN1Y2Nlc3MgPSB0aGlzLmhhbmRsZUVudGVyKHZpZXcpO1xuXHRcdFx0XHRcdHJldHVybiBzdWNjZXNzO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XSkpKTtcblxuXHRcdHRoaXMubGFuZyA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKTtcblx0XHRsZXQgY29tbWFuZF9uYW1lX21hcCA9IHRoaXMuZ2V0Q29tbWFuZE5hbWVNYXAoKTtcblxuXHRcdHRoaXMuYWRkQ29tbWFuZCh7XG5cdFx0XHRpZDogXCJlYXN5LXR5cGluZy1mb3JtYXQtYXJ0aWNsZVwiLFxuXHRcdFx0bmFtZTogY29tbWFuZF9uYW1lX21hcC5nZXQoXCJmb3JtYXRfYXJ0aWNsZVwiKSxcblx0XHRcdGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldykgPT4ge1xuXHRcdFx0XHR0aGlzLmZvcm1hdEFydGljbGUoZWRpdG9yLCB2aWV3KTtcblx0XHRcdH0sXG5cdFx0XHRob3RrZXlzOiBbe1xuXHRcdFx0XHRtb2RpZmllcnM6IFsnQ3RybCcsICdTaGlmdCddLFxuXHRcdFx0XHRrZXk6IFwic1wiXG5cdFx0XHR9XSxcblx0XHR9KTtcblxuXHRcdHRoaXMuYWRkQ29tbWFuZCh7XG5cdFx0XHRpZDogXCJlYXN5LXR5cGluZy1mb3JtYXQtc2VsZWN0aW9uXCIsXG5cdFx0XHRuYW1lOiBjb21tYW5kX25hbWVfbWFwLmdldChcImZvcm1hdF9zZWxlY3Rpb25cIiksXG5cdFx0XHRlZGl0b3JDYWxsYmFjazogKGVkaXRvcjogRWRpdG9yLCB2aWV3OiBNYXJrZG93blZpZXcpID0+IHtcblx0XHRcdFx0dGhpcy5mb3JtYXRTZWxlY3Rpb25PckN1ckxpbmUoZWRpdG9yLCB2aWV3KTtcblx0XHRcdH0sXG5cdFx0XHRob3RrZXlzOiBbe1xuXHRcdFx0XHRtb2RpZmllcnM6IFsnQ3RybCcsICdTaGlmdCddLFxuXHRcdFx0XHRrZXk6IFwibFwiXG5cdFx0XHR9XSxcblx0XHR9KTtcblxuXHRcdHRoaXMuYWRkQ29tbWFuZCh7XG5cdFx0XHRpZDogXCJlYXN5LXR5cGluZy1kZWxldGUtYmxhbmstbGluZVwiLFxuXHRcdFx0bmFtZTogY29tbWFuZF9uYW1lX21hcC5nZXQoXCJkZWxldGVfYmxhbmtfbGluZVwiKSxcblx0XHRcdGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldykgPT4ge1xuXHRcdFx0XHR0aGlzLmRlbGV0ZUJsYW5rTGluZXMoZWRpdG9yKTtcblx0XHRcdH0sXG5cdFx0XHRob3RrZXlzOiBbe1xuXHRcdFx0XHRtb2RpZmllcnM6IFsnQ3RybCcsICdTaGlmdCddLFxuXHRcdFx0XHRrZXk6IFwia1wiXG5cdFx0XHR9XSxcblx0XHR9KTtcblxuXHRcdHRoaXMuYWRkQ29tbWFuZCh7XG5cdFx0XHRpZDogXCJlYXN5LXR5cGluZy1pbnNlcnQtY29kZWJsb2NrXCIsXG5cdFx0XHRuYW1lOiBjb21tYW5kX25hbWVfbWFwLmdldChcImluc2VydF9jb2RlYmxvY2tcIiksXG5cdFx0XHRlZGl0b3JDYWxsYmFjazogKGVkaXRvcjogRWRpdG9yLCB2aWV3OiBNYXJrZG93blZpZXcpID0+IHtcblx0XHRcdFx0dGhpcy5jb252ZXJ0MkNvZGVCbG9jayhlZGl0b3IpO1xuXHRcdFx0fSxcblx0XHRcdGhvdGtleXM6IFt7XG5cdFx0XHRcdG1vZGlmaWVyczogWydDdHJsJywgJ1NoaWZ0J10sXG5cdFx0XHRcdGtleTogXCJuXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWZvcm1hdC1zd2l0Y2hcIixcblx0XHRcdG5hbWU6IGNvbW1hbmRfbmFtZV9tYXAuZ2V0KFwic3dpdGNoX2F1dG9mb3JtYXRcIiksXG5cdFx0XHRjYWxsYmFjazogKCkgPT4gdGhpcy5zd2l0Y2hBdXRvRm9ybWF0dGluZygpLFxuXHRcdFx0aG90a2V5czogW3tcblx0XHRcdFx0bW9kaWZpZXJzOiBbJ0N0cmwnXSxcblx0XHRcdFx0a2V5OiBcInRhYlwiXG5cdFx0XHR9XSxcblx0XHR9KTtcblxuXHRcdHRoaXMuYWRkQ29tbWFuZCh7XG5cdFx0XHRpZDogXCJlYXN5LXR5cGluZy1wYXN0ZS13aXRob3V0LWZvcm1hdFwiLFxuXHRcdFx0bmFtZTogY29tbWFuZF9uYW1lX21hcC5nZXQoXCJwYXN0ZV93b19mb3JtYXRcIiksXG5cdFx0XHRlZGl0b3JDYWxsYmFjazogKGVkaXRvcikgPT4gdGhpcy5ub3JtYWxQYXN0ZShlZGl0b3IpLFxuXHRcdFx0aG90a2V5czogW1xuXHRcdFx0ICB7XG5cdFx0XHRcdG1vZGlmaWVyczogW1wiTW9kXCIsIFwiU2hpZnRcIl0sXG5cdFx0XHRcdGtleTogXCJ2XCIsXG5cdFx0XHQgIH0sXG5cdFx0XHRdLFxuXHRcdCAgfSk7XG5cblx0XHQvLyBUaGlzIGFkZHMgYSBzZXR0aW5ncyB0YWIgc28gdGhlIHVzZXIgY2FuIGNvbmZpZ3VyZSB2YXJpb3VzIGFzcGVjdHMgb2YgdGhlIHBsdWdpblxuXHRcdHRoaXMuYWRkU2V0dGluZ1RhYihuZXcgRWFzeVR5cGluZ1NldHRpbmdUYWIodGhpcy5hcHAsIHRoaXMpKTtcblxuXHRcdHRoaXMucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC53b3Jrc3BhY2Uub24oJ2FjdGl2ZS1sZWFmLWNoYW5nZScsIChsZWFmOiBXb3Jrc3BhY2VMZWFmKSA9PiB7XG5cdFx0XHRpZiAobGVhZi52aWV3LmdldFZpZXdUeXBlKCkgPT0gJ21hcmtkb3duJykge1xuXHRcdFx0XHRsZXQgZmlsZSA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVGaWxlKCk7XG5cdFx0XHRcdGlmIChmaWxlICE9IG51bGwgJiYgdGhpcy5DdXJBY3RpdmVNYXJrZG93biAhPSBmaWxlLnBhdGgpIHtcblx0XHRcdFx0XHR0aGlzLkN1ckFjdGl2ZU1hcmtkb3duID0gZmlsZS5wYXRoO1xuXHRcdFx0XHRcdGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKVxuXHRcdFx0XHRcdFx0bmV3IE5vdGljZSgnbmV3IG1kLWZpbGUgb3BlbjogJyArIGZpbGUucGF0aClcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pKTtcblxuXHRcdC8vIHRoaXMucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC53b3Jrc3BhY2Uub24oJ2ZpbGUtb3BlbicsIChmaWxlOiBURmlsZSB8IG51bGwpID0+IHtcblx0XHQvLyBcdGlmIChmaWxlICE9IG51bGwpIHtcblx0XHQvLyBcdFx0bGV0IGVkaXRvciA9IHRoaXMuZ2V0RWRpdG9yKCk7XG5cdFx0Ly8gXHRcdGlmIChlZGl0b3IgPT09IG51bGwpIHJldHVybjtcblx0XHQvLyBcdFx0dGhpcy5Db250ZW50UGFyc2VyLnBhcnNlTmV3QXJ0aWNsZShlZGl0b3IuZ2V0VmFsdWUoKSk7XG5cdFx0Ly8gXHRcdGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKSB7XG5cdFx0Ly8gXHRcdFx0bmV3IE5vdGljZShcIkVhc3lUeXBpbmc6IFBhcnNlIE5ldyBBcnRpY2xlOiBcIiArIGZpbGUudmF1bHQuZ2V0TmFtZSgpICsgJy8nICsgZmlsZS5wYXRoKTtcblx0XHQvLyBcdFx0XHQvLyBpZiAodGhpcy5zZXR0aW5ncy5kZWJ1ZykgdGhpcy5Db250ZW50UGFyc2VyLnByaW50KCk7XG5cdFx0Ly8gXHRcdH1cblx0XHQvLyBcdH1cblx0XHQvLyB9KSk7XG5cdH1cblxuXHRvbnVubG9hZCgpIHtcblx0fVxuXG5cdHRyYW5zYWN0aW9uRmlsdGVyUGx1Z2luID0gKHRyOiBUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uU3BlYyB8IHJlYWRvbmx5IFRyYW5zYWN0aW9uU3BlY1tdID0+IHtcblx0XHRjb25zdCBjaGFuZ2VzOiBUcmFuc2FjdGlvblNwZWNbXSA9IFtdO1xuXHRcdGlmICghdHIuZG9jQ2hhbmdlZCkgcmV0dXJuIHRyO1xuXHRcdGxldCBzZWxlY3RlZCA9IHRyLnN0YXJ0U3RhdGUuc2VsZWN0aW9uLmFzU2luZ2xlKCkubWFpbi5hbmNob3IgIT0gdHIuc3RhcnRTdGF0ZS5zZWxlY3Rpb24uYXNTaW5nbGUoKS5tYWluLmhlYWQ7XG5cblx0XHRsZXQgY2hhbmdlVHlwZVN0ciA9IGdldFR5cGVTdHJPZlRyYW5zYWModHIpO1xuXHRcdHRyLmNoYW5nZXMuaXRlckNoYW5nZXMoKGZyb21BLCB0b0EsIGZyb21CLCB0b0IsIGluc2VydGVkKSA9PiB7XG5cdFx0XHRsZXQgY2hhbmdlZFN0ciA9IHRyLnN0YXJ0U3RhdGUuc2xpY2VEb2MoZnJvbUEsIHRvQSk7XG5cdFx0XHRsZXQgaW5zZXJ0ZWRTdHIgPSBpbnNlcnRlZC5zbGljZVN0cmluZygwKTtcblx0XHRcdC8vIGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKVxuXHRcdFx0Ly8ge1xuXHRcdFx0Ly8gXHRjb25zb2xlLmxvZyhcIlRyYW5zYWN0aW9uRmlsdGVyIGNhdGNoIGNoYW5nZTpcIixjaGFuZ2VUeXBlU3RyLCBmcm9tQSwgdG9BLCBmcm9tQiwgdG9CLCBpbnNlcnRlZFN0cik7XG5cdFx0XHQvLyB9XG5cdFx0XHQvLyA9PT09PT09PT09IFNlbGVjdGlvbiBSZXBsYWNlID09PT09PT09PT09PVxuXHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuU2VsZWN0aW9uRW5oYW5jZSkge1xuXHRcdFx0XHRpZiAoKGNoYW5nZVR5cGVTdHIgPT0gJ2lucHV0LnR5cGUnIHx8IGNoYW5nZVR5cGVTdHIgPT0gXCJpbnB1dC50eXBlLmNvbXBvc2VcIikgJiYgZnJvbUEgIT0gdG9BICYmIGZyb21CICsgMSA9PT0gdG9CKSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuU2VsZWN0aW9uUmVwbGFjZU1hcC5oYXMoaW5zZXJ0ZWRTdHIpKSB7XG5cdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goeyBjaGFuZ2VzOiB7IGZyb206IGZyb21BLCBpbnNlcnQ6IHRoaXMuU2VsZWN0aW9uUmVwbGFjZU1hcC5nZXQoaW5zZXJ0ZWRTdHIpPy5sZWZ0IH0sIHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiIH0pXG5cdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goeyBjaGFuZ2VzOiB7IGZyb206IHRvQSwgaW5zZXJ0OiB0aGlzLlNlbGVjdGlvblJlcGxhY2VNYXAuZ2V0KGluc2VydGVkU3RyKT8ucmlnaHQgfSwgdXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCIgfSlcblx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmIChzZWxlY3RlZCkgcmV0dXJuIHRyO1xuXG5cdFx0XHQvLyBVc2VyRGVmaW5lZCBEZWxldGUgUnVsZVxuXHRcdFx0aWYgKGNoYW5nZVR5cGVTdHIgPT0gXCJkZWxldGUuYmFja3dhcmRcIikge1xuXHRcdFx0XHRmb3IgKGxldCBydWxlIG9mIHRoaXMuVXNlckRlbGV0ZVJ1bGVzKSB7XG5cdFx0XHRcdFx0bGV0IGxlZnQgPSB0ci5zdGFydFN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCwgdG9BKTtcblx0XHRcdFx0XHRsZXQgcmlnaHQgPSB0ci5zdGFydFN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0EsIHRvQSArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCk7XG5cdFx0XHRcdFx0aWYgKGxlZnQgPT09IHJ1bGUuYmVmb3JlLmxlZnQgJiYgcmlnaHQgPT09IHJ1bGUuYmVmb3JlLnJpZ2h0KSB7XG5cdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0ZnJvbTogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0dG86IHRvQSArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHRpbnNlcnQ6IHJ1bGUuYWZ0ZXIubGVmdCArIHJ1bGUuYWZ0ZXIucmlnaHRcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyBydWxlLmFmdGVyLmxlZnQubGVuZ3RoIH0sXG5cdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vID09PT09PT09PT0gZGVsZXRlIHBhaXIgc3ltYm9sID09PT09PT09PT09PVxuXHRcdFx0aWYgKGNoYW5nZVR5cGVTdHIgPT09IFwiZGVsZXRlLmJhY2t3YXJkXCIgJiYgdGhpcy5zZXR0aW5ncy5JbnRyaW5zaWNTeW1ib2xQYWlycykge1xuXHRcdFx0XHRpZiAodGhpcy5TeW1ib2xQYWlyc01hcC5oYXMoY2hhbmdlZFN0cikgJiYgdGhpcy5TeW1ib2xQYWlyc01hcC5nZXQoY2hhbmdlZFN0cikgPT09IHRyLnN0YXJ0U3RhdGUuc2xpY2VEb2ModG9BLCB0b0EgKyAxKSkge1xuXHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7IGNoYW5nZXM6IHsgZnJvbTogZnJvbUEsIHRvOiB0b0EgKyAxIH0sIHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiIH0pO1xuXHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvciAobGV0IHJ1bGUgb2YgdGhpcy5JbnRyaW5zaWNEZWxldGVSdWxlcykge1xuXHRcdFx0XHRcdGxldCBsZWZ0ID0gdHIuc3RhcnRTdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsIHRvQSk7XG5cdFx0XHRcdFx0bGV0IHJpZ2h0ID0gdHIuc3RhcnRTdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9BLCB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgpO1xuXHRcdFx0XHRcdGlmIChsZWZ0ID09PSBydWxlLmJlZm9yZS5sZWZ0ICYmIHJpZ2h0ID09PSBydWxlLmJlZm9yZS5yaWdodCkge1xuXHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdFx0XHRcdGZyb206IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdHRvOiB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQgKyBydWxlLmFmdGVyLnJpZ2h0XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCB9LFxuXHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBcdTkwMUFcdTVFMzhcdTUzNTVcdTVCNTdcdThGOTNcdTUxNjVcblx0XHRcdGlmICgoY2hhbmdlVHlwZVN0ciA9PSAnaW5wdXQudHlwZScgfHwgY2hhbmdlVHlwZVN0ciA9PSBcImlucHV0LnR5cGUuY29tcG9zZVwiKSAmJiBmcm9tQSA9PT0gdG9BICYmIGZyb21CICsgMSA9PT0gdG9CKSB7XG5cdFx0XHRcdC8vIGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKSBjb25zb2xlLmxvZyhcIklucHV0LnR5cGUgPT4gXCIsIGluc2VydGVkU3RyKVxuXHRcdFx0XHQvLyA9PT09PT09PT09PSBiYXNpYyBjb252ZXJ0IHJ1bGVzID09PT09PT09PT09PVxuXHRcdFx0XHQvLyBub3Qgc3VwcG9ydCB1bmRvIGFuZCByZWRvXG5cdFx0XHRcdGlmICh0aGlzLnNldHRpbmdzLkJhc2VPYkVkaXRFbmhhbmNlKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgcnVsZSBvZiB0aGlzLkJhc2ljQ29udlJ1bGVzKSB7XG5cdFx0XHRcdFx0XHRpZiAoaW5zZXJ0ZWRTdHIgIT0gcnVsZS5iZWZvcmUubGVmdC5jaGFyQXQocnVsZS5iZWZvcmUubGVmdC5sZW5ndGggLSAxKSkgY29udGludWU7XG5cdFx0XHRcdFx0XHQvLyBcdTU5MDRcdTc0MDZcdTY1ODdcdTY4NjNcdTdCMkMgMCBcdTg4NENcblx0XHRcdFx0XHRcdGlmIChydWxlLmJlZm9yZS5sZWZ0LmNoYXJBdCgwKSA9PT0gJ1xcbicgJiYgb2Zmc2V0VG9Qb3ModHIuc3RhdGUuZG9jLCBmcm9tQSkubGluZSA9PT0gMCAmJiB0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIDEgPT09IDApIHtcblx0XHRcdFx0XHRcdFx0bGV0IGxlZnQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyAxLCB0b0IpO1xuXHRcdFx0XHRcdFx0XHRsZXQgcmlnaHQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CLCB0b0IgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgpO1xuXHRcdFx0XHRcdFx0XHRpZiAobGVmdCA9PT0gcnVsZS5iZWZvcmUubGVmdC5zdWJzdHJpbmcoMSkgJiYgcmlnaHQgPT09IHJ1bGUuYmVmb3JlLnJpZ2h0KSB7XG5cdFx0XHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZnJvbTogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyAyLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0bzogdG9BICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpbnNlcnQ6IHJ1bGUuYWZ0ZXIubGVmdC5zdWJzdHJpbmcoMSkgKyBydWxlLmFmdGVyLnJpZ2h0XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyBydWxlLmFmdGVyLmxlZnQubGVuZ3RoICsgMSB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Ly8gXHU5MDFBXHU1RTM4XHU2MEM1XHU1MUI1XHU1OTA0XHU3NDA2XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0bGV0IGxlZnQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsIHRvQik7XG5cdFx0XHRcdFx0XHRcdGxldCByaWdodCA9IHRyLnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IsIHRvQiArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCk7XG5cdFx0XHRcdFx0XHRcdGlmIChsZWZ0ID09PSBydWxlLmJlZm9yZS5sZWZ0ICYmIHJpZ2h0ID09PSBydWxlLmJlZm9yZS5yaWdodCkge1xuXHRcdFx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZyb206IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgMSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dG86IHRvQSArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQgKyBydWxlLmFmdGVyLnJpZ2h0XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyBydWxlLmFmdGVyLmxlZnQubGVuZ3RoICsgMSB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICh0aGlzLnNldHRpbmdzLkZXMkhXRW5oYW5jZSkge1xuXHRcdFx0XHRcdGZvciAobGV0IHJ1bGUgb2YgdGhpcy5GVzJIV1N5bWJvbFJ1bGVzKSB7XG5cdFx0XHRcdFx0XHRpZiAoaW5zZXJ0ZWRTdHIgIT0gcnVsZS5iZWZvcmUubGVmdC5jaGFyQXQocnVsZS5iZWZvcmUubGVmdC5sZW5ndGggLSAxKSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRsZXQgbGVmdCA9IHRyLnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCwgdG9CKTtcblx0XHRcdFx0XHRcdGxldCByaWdodCA9IHRyLnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IsIHRvQiArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCk7XG5cdFx0XHRcdFx0XHRpZiAobGVmdCA9PT0gcnVsZS5iZWZvcmUubGVmdCAmJiByaWdodCA9PT0gcnVsZS5iZWZvcmUucmlnaHQpIHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIDEsXG5cdFx0XHRcdFx0XHRcdFx0XHR0bzogdG9BICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQgKyBydWxlLmFmdGVyLnJpZ2h0XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIHJ1bGUuYWZ0ZXIubGVmdC5sZW5ndGggKyAxIH0sXG5cdFx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyA9PT09PT09PT09PT09PT09IGF1dG8gcGFpciA9PT09PT09PT09PT09PT09PVxuXHRcdFx0XHQvLyBsZXQgUGFpclZhbGlkU2V0ID0gbmV3IFNldChbXCJcIiwgXCIgXCIsXCJcXG5cIl0pXG5cdFx0XHRcdC8vIGxldCBjaGFyQWZ0ZXJDdXJzb3IgPSB0ci5zdGFydFN0YXRlLnNsaWNlRG9jKHRvQSwgdG9BKzEpO1xuXHRcdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5JbnRyaW5zaWNTeW1ib2xQYWlycykge1xuXHRcdFx0XHRcdGZvciAobGV0IHJ1bGUgb2YgdGhpcy5JbnRyaW5zaWNBdXRvUGFpclJ1bGVzUGF0Y2gpIHtcblx0XHRcdFx0XHRcdGlmIChpbnNlcnRlZFN0ciAhPSBydWxlLmJlZm9yZS5sZWZ0LmNoYXJBdChydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCAtIDEpKSBjb250aW51ZTtcblx0XHRcdFx0XHRcdGxldCBsZWZ0ID0gdHIuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLCB0b0IpO1xuXHRcdFx0XHRcdFx0bGV0IHJpZ2h0ID0gdHIuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiwgdG9CICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoKTtcblx0XHRcdFx0XHRcdGlmIChsZWZ0ID09PSBydWxlLmJlZm9yZS5sZWZ0ICYmIHJpZ2h0ID09PSBydWxlLmJlZm9yZS5yaWdodCkge1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHtcblx0XHRcdFx0XHRcdFx0XHRcdGZyb206IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgMSxcblx0XHRcdFx0XHRcdFx0XHRcdHRvOiB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0XHRpbnNlcnQ6IHJ1bGUuYWZ0ZXIubGVmdCArIHJ1bGUuYWZ0ZXIucmlnaHRcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCArIDEgfSxcblx0XHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmICh0aGlzLlN5bWJvbFBhaXJzTWFwLmhhcyhpbnNlcnRlZFN0cikpIHtcblx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHsgZnJvbTogZnJvbUEsIHRvOiB0b0EsIGluc2VydDogaW5zZXJ0ZWRTdHIgKyB0aGlzLlN5bWJvbFBhaXJzTWFwLmdldChpbnNlcnRlZFN0cikgfSxcblx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogZnJvbUEgKyAxIH0sXG5cdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIGhhbmRsZSBhdXRvcGFpciBmb3IgXCJcdTIwMURcIiBhbmQgXCJcdTIwMTlcIlxuXHRcdFx0XHRcdGlmIChpbnNlcnRlZFN0ciA9PT0gJ1x1MjAxRCcgfHwgaW5zZXJ0ZWRTdHIgPT09ICdcdTIwMTknKSB7XG5cdFx0XHRcdFx0XHRsZXQgdGVtcFN0ciA9IGluc2VydGVkU3RyID09PSBcIlx1MjAxRFwiID8gXCJcdTIwMUNcdTIwMURcIiA6IFwiXHUyMDE4XHUyMDE5XCI7XG5cdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7IGZyb206IGZyb21BLCB0bzogdG9BLCBpbnNlcnQ6IHRlbXBTdHIgfSxcblx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogZnJvbUEgKyAxIH0sXG5cdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSlcblx0XHRyZXR1cm4gdHI7XG5cdH1cblxuXHRhc3luYyBub3JtYWxQYXN0ZShlZGl0b3I6IEVkaXRvcik6IFByb21pc2U8dm9pZD4ge1xuXHRcdGxldCBjbGlwYm9hcmRUZXh0ID0gYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC5yZWFkVGV4dCgpO1xuXHRcdGlmIChjbGlwYm9hcmRUZXh0ID09PSBudWxsIHx8IGNsaXBib2FyZFRleHQgPT09IFwiXCIpIHJldHVybjtcblxuXHRcdGVkaXRvci5yZXBsYWNlU2VsZWN0aW9uKGNsaXBib2FyZFRleHQpO1xuXHR9XG5cblx0dmlld1VwZGF0ZVBsdWdpbiA9ICh1cGRhdGU6IFZpZXdVcGRhdGUpID0+IHtcblxuXHRcdC8vIGNvbnNvbGUubG9nKHRyZWUpO1xuXG5cdFx0Ly8gaWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIGNvbnNvbGUubG9nKFwiLS0tLS0tLVZpZXdVcGRhdGUtLS0tLS0tLS1cIik7XG5cdFx0bGV0IG5vdFNlbGVjdGVkID0gdHJ1ZTtcblx0XHRsZXQgbWFpblNlbGVjdGlvbiA9IHVwZGF0ZS52aWV3LnN0YXRlLnNlbGVjdGlvbi5hc1NpbmdsZSgpLm1haW47XG5cdFx0aWYgKG1haW5TZWxlY3Rpb24uYW5jaG9yICE9IG1haW5TZWxlY3Rpb24uaGVhZCkgbm90U2VsZWN0ZWQgPSBmYWxzZTtcblx0XHQvLyAtLS0tLS0gRGVidWcgLS0tLS0tLS0tLS0tXG5cdFx0Ly8gaWYgKG5vdFNlbGVjdGVkKXtcblx0XHQvLyBcdC8vIHRoaXMuRm9ybWF0ZXIucGFyc2VMaW5lV2l0aFN5bnRheFRyZWUodXBkYXRlLnN0YXRlLCB1cGRhdGUuc3RhdGUuZG9jLmxpbmVBdChtYWluU2VsZWN0aW9uLmFuY2hvcikubnVtYmVyKTtcblx0XHQvLyBcdGNvbnN0IHRyZWUgPSBzeW50YXhUcmVlKHVwZGF0ZS5zdGF0ZSk7XG5cdFx0Ly8gXHRsZXQgcG9zID0gbWFpblNlbGVjdGlvbi5hbmNob3I7XG5cdFx0Ly8gXHRsZXQgbm9kZSA9IHRyZWUucmVzb2x2ZShwb3MsIDEpO1xuXHRcdC8vIFx0Y29uc29sZS5sb2cobm9kZS5uYW1lLCBub2RlLmZyb20sIG5vZGUudG8sIHVwZGF0ZS5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcobm9kZS5mcm9tLCBub2RlLnRvKSk7XG5cdFx0Ly8gfVxuXG5cdFx0aWYgKCF1cGRhdGUuZG9jQ2hhbmdlZCkgcmV0dXJuO1xuXG5cdFx0bGV0IGlzRXhjbHVkZUZpbGUgPSB0aGlzLmlzQ3VycmVudEZpbGVFeGNsdWRlKCk7XG5cdFx0Ly8gY29uc29sZS5sb2codGhpcy5DdXJBY3RpdmVNYXJrZG93biwgaXNFeGNsdWRlRmlsZSlcblxuXHRcdC8vIGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKSBjb25zb2xlLmxvZyhcIi0tLS0tVmlld1VwZGF0ZVdDaGFuZ2UtLS0tLVwiKTtcblx0XHRsZXQgdHIgPSB1cGRhdGUudHJhbnNhY3Rpb25zWzBdXG5cdFx0bGV0IGNoYW5nZVR5cGUgPSBnZXRUeXBlU3RyT2ZUcmFuc2FjKHRyKTtcblx0XHR0ci5jaGFuZ2VzLml0ZXJDaGFuZ2VzKChmcm9tQSwgdG9BLCBmcm9tQiwgdG9CLCBpbnNlcnRlZCkgPT4ge1xuXHRcdFx0bGV0IGluc2VydGVkU3RyID0gaW5zZXJ0ZWQuc2xpY2VTdHJpbmcoMCk7XG5cdFx0XHRsZXQgY2hhbmdlZFN0ciA9IHRyLnN0YXJ0U3RhdGUuZG9jLnNsaWNlU3RyaW5nKGZyb21BLCB0b0EpO1xuXHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpXG5cdFx0XHRcdGNvbnNvbGUubG9nKFwiVmlld1VwZGF0ZSBDYXRjaCBDaGFuZ2UtPiBUeXBlOiBcIiArIGNoYW5nZVR5cGUgKyBcIiwgXCIsIGZyb21BLCB0b0EsIGNoYW5nZWRTdHIsIGZyb21CLCB0b0IsIGluc2VydGVkU3RyKTtcblxuXHRcdFx0Ly8gXHU2MjdFXHU1MjMwXHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXHVGRjBDXHU2QkQ0XHU4RjgzXHU1NDhDIHRvQiBcdTc2ODRcdTRGNERcdTdGNkVcdTY2MkZcdTU0MjZcdTc2RjhcdTU0MENcdUZGMENcdTc2RjhcdTU0MENcdTRFMTRcdTY3MDBcdTdFQzhcdTYzRDJcdTUxNjVcdTY1ODdcdTVCNTdcdTRFM0FcdTRFMkRcdTY1ODdcdUZGMENcdTUyMTlcdTRFM0FcdTRFMkRcdTY1ODdcdThGOTNcdTUxNjVcdTdFRDNcdTY3NUZcdTc2ODRcdTcyQjZcdTYwMDFcblx0XHRcdGxldCBjdXJzb3IgPSB1cGRhdGUudmlldy5zdGF0ZS5zZWxlY3Rpb24uYXNTaW5nbGUoKS5tYWluO1xuXHRcdFx0bGV0IENoaW5lc2VSZWdFeHAgPSAvXltcXHU0ZTAwLVxcdTlmYTVcdTMwMTBcdTMwMTFcdTAwQjdcdUZGRTVcdTMwMEFcdTMwMEJcdUZGMUZcdUZGMUFcdTIwMTlcdTIwMThcdTIwMURcdTIwMUNcdTMwMENcdTMwMERcdTMwMDFcdTMwMDJcdUZGMENcdUZGMDhcdUZGMDlcdUZGMDFcdTIwMTRcdTIwMTRcdTIwMjZcdTIwMjYwLTldKyQvO1xuXHRcdFx0bGV0IGNoaW5lc2VFbmRGbGFnID0gY2hhbmdlVHlwZSA9PSBcImlucHV0LnR5cGUuY29tcG9zZVwiICYmXG5cdFx0XHRcdGN1cnNvci5hbmNob3IgPT0gY3Vyc29yLmhlYWQgJiYgY3Vyc29yLmFuY2hvciA9PT0gdG9CICYmXG5cdFx0XHRcdENoaW5lc2VSZWdFeHAudGVzdChpbnNlcnRlZFN0cik7XG5cblx0XHRcdGlmIChjaGFuZ2VUeXBlICE9IFwiaW5wdXQudHlwZS5jb21wb3NlXCIpIHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSA9IGZhbHNlO1xuXHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuQXV0b0Zvcm1hdCAmJiBub3RTZWxlY3RlZCAmJiAhaXNFeGNsdWRlRmlsZSAmJlxuXHRcdFx0XHRnZXRQb3NMaW5lVHlwZSh1cGRhdGUudmlldy5zdGF0ZSwgZnJvbUIpID09IExpbmVUeXBlLnRleHQpIHtcblx0XHRcdFx0aWYgKGNoYW5nZVR5cGUgPT0gXCJpbnB1dC50eXBlLmNvbXBvc2VcIikge1xuXHRcdFx0XHRcdGlmICh0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUgPT0gZmFsc2UpIHtcblx0XHRcdFx0XHRcdHRoaXMuY29tcG9zZV9iZWdpbl9wb3MgPSBmcm9tQjtcblx0XHRcdFx0XHRcdHRoaXMuY29tcG9zZV9lbmRfcG9zID0gdG9CO1xuXHRcdFx0XHRcdFx0dGhpcy5jb21wb3NlX25lZWRfaGFuZGxlID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHR0aGlzLmNvbXBvc2VfZW5kX3BvcyA9IHRvQjtcblx0XHRcdFx0XHRcdGlmICh0aGlzLmNvbXBvc2VfYmVnaW5fcG9zID09IHRoaXMuY29tcG9zZV9lbmRfcG9zKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoY2hpbmVzZUVuZEZsYWcpIHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSA9IGZhbHNlO1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcIkNvbXBvc2VcIiwgY2hpbmVzZUVuZEZsYWcsIHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSk7XG5cdFx0XHR9XG5cblxuXHRcdFx0Ly8gXHU1MjI0XHU2NUFEXHU2QkNGXHU2QjIxXHU4RjkzXHU1MTY1XHU3RUQzXHU2NzVGXG5cdFx0XHRpZiAoY2hhbmdlVHlwZSA9PSAnaW5wdXQudHlwZScgfHwgY2hhbmdlVHlwZSA9PSBcImlucHV0XCIgfHwgY2hpbmVzZUVuZEZsYWcgfHwgY2hhbmdlVHlwZSA9PSAnbm9uZScpIHtcblx0XHRcdFx0Ly8gXHU3NTI4XHU2MjM3XHU4MUVBXHU1QjlBXHU0RTQ5XHU4RjZDXHU1MzE2XHU4OUM0XHU1MjE5XG5cdFx0XHRcdGZvciAobGV0IHJ1bGUgb2YgdGhpcy5Vc2VyQ29udmVydFJ1bGVzKSB7XG5cdFx0XHRcdFx0Ly8gaWYgKGluc2VydGVkU3RyICE9IHJ1bGUuYmVmb3JlLmxlZnQuc3Vic3RyaW5nKHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoIC0gaW5zZXJ0ZWRTdHIubGVuZ3RoKSkgY29udGludWU7XG5cdFx0XHRcdFx0bGV0IGxlZnQgPSB1cGRhdGUudmlldy5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsIHRvQik7XG5cdFx0XHRcdFx0bGV0IHJpZ2h0ID0gdXBkYXRlLnZpZXcuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiwgdG9CICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoKTtcblx0XHRcdFx0XHRpZiAobGVmdCA9PT0gcnVsZS5iZWZvcmUubGVmdCAmJiByaWdodCA9PT0gcnVsZS5iZWZvcmUucmlnaHQpIHtcblx0XHRcdFx0XHRcdHVwZGF0ZS52aWV3LmRpc3BhdGNoKHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdFx0XHRcdGZyb206IHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdHRvOiB0b0IgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQgKyBydWxlLmFmdGVyLnJpZ2h0XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCB9LFxuXHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5QdW5jUmVjdGlmeSAmJiBjaGluZXNlRW5kRmxhZyAmJiB0aGlzLmNvbXBvc2VfYmVnaW5fcG9zID4gMSAmJlxuXHRcdFx0XHRcdC9bLC4/IV0vLnRlc3QodXBkYXRlLnZpZXcuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRoaXMuY29tcG9zZV9iZWdpbl9wb3MgLSAxLCB0aGlzLmNvbXBvc2VfYmVnaW5fcG9zKSkpIHtcblx0XHRcdFx0XHRsZXQgcHVuYyA9IHVwZGF0ZS52aWV3LnN0YXRlLmRvYy5zbGljZVN0cmluZyh0aGlzLmNvbXBvc2VfYmVnaW5fcG9zIC0gMSwgdGhpcy5jb21wb3NlX2JlZ2luX3Bvcylcblx0XHRcdFx0XHRpZiAodGhpcy5jb21wb3NlX2JlZ2luX3BvcyA+IDIgJiZcblx0XHRcdFx0XHRcdC9bXFxzXFxuXFx3XS8udGVzdCh1cGRhdGUudmlldy5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodGhpcy5jb21wb3NlX2JlZ2luX3BvcyAtIDIsIHRoaXMuY29tcG9zZV9iZWdpbl9wb3MgLSAxKSkpIHsgfVxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0dXBkYXRlLnZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0ZnJvbTogdGhpcy5jb21wb3NlX2JlZ2luX3BvcyAtIDEsXG5cdFx0XHRcdFx0XHRcdFx0dG86IHRoaXMuY29tcG9zZV9iZWdpbl9wb3MsXG5cdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiB0aGlzLmhhbGZUb0Z1bGxTeW1ib2xNYXAuZ2V0KHB1bmMpXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdC8vIHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCB9LFxuXHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBcdTUyMjRcdTY1QURcdTY4M0NcdTVGMEZcdTUzMTZcdTY1ODdcdTY3MkNcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJyZWFkeSB0byBmb3JtYXRcIik7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKFwiY2hlY2sgaXMgZXhjbHVlIGZpbGU6XCIsIGlzRXhjbHVkZUZpbGUpXG5cdFx0XHRcdGlmICh0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgJiYgbm90U2VsZWN0ZWQgJiYgIWlzRXhjbHVkZUZpbGUgJiYgKGNoYW5nZVR5cGUgIT0gJ25vbmUnIHx8IGluc2VydGVkU3RyLmNvbnRhaW5zKFwiXFxuXCIpKSAmJlxuXHRcdFx0XHRcdGdldFBvc0xpbmVUeXBlKHVwZGF0ZS52aWV3LnN0YXRlLCBmcm9tQikgPT0gTGluZVR5cGUudGV4dCkge1xuXHRcdFx0XHRcdGxldCBjaGFuZ2VzID0gdGhpcy5Gb3JtYXRlci5mb3JtYXRMaW5lT2ZEb2ModXBkYXRlLnN0YXRlLCB0aGlzLnNldHRpbmdzLCBmcm9tQiwgY3Vyc29yLmFuY2hvciwgaW5zZXJ0ZWRTdHIpO1xuXHRcdFx0XHRcdGlmIChjaGFuZ2VzICE9IG51bGwpIHtcblx0XHRcdFx0XHRcdHVwZGF0ZS52aWV3LmRpc3BhdGNoKC4uLmNoYW5nZXNbMF0pO1xuXHRcdFx0XHRcdFx0dXBkYXRlLnZpZXcuZGlzcGF0Y2goY2hhbmdlc1sxXSk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgJiYgIWlzRXhjbHVkZUZpbGUgJiYgY2hhbmdlVHlwZSA9PSBcImlucHV0LnBhc3RlXCIgJiYgIVBsYXRmb3JtLmlzSW9zQXBwKSB7XG5cdFx0XHRcdGxldCB1cGRhdGVMaW5lU3RhcnQgPSB1cGRhdGUuc3RhdGUuZG9jLmxpbmVBdChmcm9tQikubnVtYmVyO1xuXHRcdFx0XHRsZXQgdXBkYXRlTGluZUVuZCA9IHVwZGF0ZS5zdGF0ZS5kb2MubGluZUF0KHRvQikubnVtYmVyO1xuXHRcdFx0XHRpZiAodXBkYXRlTGluZVN0YXJ0ID09IHVwZGF0ZUxpbmVFbmQgJiYgZ2V0UG9zTGluZVR5cGUodXBkYXRlLnZpZXcuc3RhdGUsIHRvQikgPT0gTGluZVR5cGUudGV4dCkge1xuXHRcdFx0XHRcdGxldCBjaGFuZ2VzID0gdGhpcy5Gb3JtYXRlci5mb3JtYXRMaW5lT2ZEb2ModXBkYXRlLnN0YXRlLCB0aGlzLnNldHRpbmdzLCBmcm9tQiwgdG9CLCBpbnNlcnRlZFN0cik7XG5cdFx0XHRcdFx0aWYgKGNoYW5nZXMgIT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0dXBkYXRlLnZpZXcuZGlzcGF0Y2goLi4uY2hhbmdlc1swXSk7XG5cdFx0XHRcdFx0XHQvLyB1cGRhdGUudmlldy5kaXNwYXRjaChjaGFuZ2VzWzFdKTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0bGV0IGFsbF9jaGFuZ2VzOiBUcmFuc2FjdGlvblNwZWNbXSA9IFtdO1xuXHRcdFx0XHRcdGxldCBpbnNlcnRlZF9hcnJheSA9IGluc2VydGVkU3RyLnNwbGl0KFwiXFxuXCIpO1xuXHRcdFx0XHRcdGxldCB1cGRhdGVfc3RhcnQgPSBmcm9tQlxuXHRcdFx0XHRcdGZvciAobGV0IGkgPSB1cGRhdGVMaW5lU3RhcnQ7IGkgPD0gdXBkYXRlTGluZUVuZDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRsZXQgcmVhbF9pbnNlcnRlZCA9IGluc2VydGVkX2FycmF5W2kgLSB1cGRhdGVMaW5lU3RhcnRdO1xuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ3JlYWxfaW5zZXJ0ZWQnLCByZWFsX2luc2VydGVkLnJlcGxhY2UoL1xcbi9nLCAnXFxcXG4nKSlcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCd1cGRhdGVfZG9jX3RleHQnLCB1cGRhdGUuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHVwZGF0ZV9zdGFydCwgdXBkYXRlX3N0YXJ0ICsgcmVhbF9pbnNlcnRlZC5sZW5ndGgpLnJlcGxhY2UoL1xcbi9nLCAnXFxcXG4nKSlcblx0XHRcdFx0XHRcdGxldCBjaGFuZ2VzID0gdGhpcy5Gb3JtYXRlci5mb3JtYXRMaW5lT2ZEb2ModXBkYXRlLnN0YXRlLCB0aGlzLnNldHRpbmdzLCB1cGRhdGVfc3RhcnQsIHVwZGF0ZV9zdGFydCArIHJlYWxfaW5zZXJ0ZWQubGVuZ3RoLCByZWFsX2luc2VydGVkKTtcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdjaGFuZ2VzJywgY2hhbmdlcylcblx0XHRcdFx0XHRcdGlmIChjaGFuZ2VzICE9IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0YWxsX2NoYW5nZXMucHVzaCguLi5jaGFuZ2VzWzBdKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHVwZGF0ZV9zdGFydCArPSByZWFsX2luc2VydGVkLmxlbmd0aCArIDE7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChhbGxfY2hhbmdlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHR1cGRhdGUudmlldy5kaXNwYXRjaCguLi5hbGxfY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XHQvLyBpdGVyY2hhbmdlcyBlbmRcblx0fVxuXG5cdHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlVGFiRG93biA9ICh2aWV3OiBFZGl0b3JWaWV3KSA9PiB7XG5cdFx0aWYgKCF0aGlzLnNldHRpbmdzLlRhYm91dCkgcmV0dXJuIGZhbHNlO1xuXG5cdFx0bGV0IHN0YXRlID0gdmlldy5zdGF0ZTtcblx0XHRsZXQgZG9jID0gc3RhdGUuZG9jXG5cdFx0Y29uc3QgdHJlZSA9IHN5bnRheFRyZWUoc3RhdGUpO1xuXHRcdGNvbnN0IHMgPSB2aWV3LnN0YXRlLnNlbGVjdGlvbjtcblx0XHRpZiAocy5yYW5nZXMubGVuZ3RoID4gMSkgcmV0dXJuIGZhbHNlO1xuXHRcdGNvbnN0IHBvcyA9IHMubWFpbi50bztcblx0XHRsZXQgbGluZSA9IGRvYy5saW5lQXQocG9zKVxuXG5cdFx0Ly8gRGVidWcgaW5mb1xuXHRcdC8vIGNvbnNvbGUubG9nKGxpbmUudGV4dClcblx0XHQvLyBmb3IgKGxldCBwPWxpbmUuZnJvbTsgcDw9bGluZS50bzsgcCs9MSl7XG5cdFx0Ly8gXHRjb25zdCB0b2tlbiA9IHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lXG5cdFx0Ly8gXHRjb25zb2xlLmxvZyhwLWxpbmUuZnJvbSwgdG9rZW4pXG5cdFx0Ly8gfVxuXHRcdC8vIHJldHVybiB0cnVlO1xuXG5cdFx0Ly8gXHU1RjUzXHU1MTQ5XHU2ODA3XHU1NzI4XHU4ODRDXHU1MTg1XHU0RUUzXHU3ODAxXHU1MTg1XHU5MEU4XG5cdFx0aWYgKHBvcyAtIGxpbmUuZnJvbSAhPSAwICYmIHRyZWUucmVzb2x2ZShwb3MgLSAxLCAxKS5uYW1lLmNvbnRhaW5zKCdpbmxpbmUtY29kZScpKSB7XG5cdFx0XHRpZiAodHJlZS5yZXNvbHZlKHBvcywgMSkubmFtZS5jb250YWlucygnZm9ybWF0dGluZy1jb2RlX2lubGluZS1jb2RlJykpIHtcblx0XHRcdFx0dmlldy5kaXNwYXRjaCh7XG5cdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogcG9zICsgMSwgaGVhZDogcG9zICsgMSB9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGxldCBwID0gcG9zICsgMTsgcCA8IGxpbmUudG8gJiYgdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWUuY29udGFpbnMoJ2lubGluZS1jb2RlJyk7IHAgKz0gMSkge1xuXHRcdFx0XHQvLyBcdTU5ODJcdTY3OUNcdTYyN0VcdTUyMzAgYCBcdTUyMTlcdTUxNDlcdTY4MDdcdThERjNcdTUyMzBcdTUxNzZcdTU0MEVcblx0XHRcdFx0aWYgKHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lLmNvbnRhaW5zKCdmb3JtYXR0aW5nLWNvZGVfaW5saW5lLWNvZGUnKSkge1xuXHRcdFx0XHRcdHZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogcCwgaGVhZDogcCB9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBcdTU5ODJcdTY3OUNcdTZDQTFcdTYyN0VcdTUyMzAgYCBcdTUyMTlcdTc2RjRcdTYzQTVcdThERjNcdTUyMzBcdTg4NENcdTVDM0Vcblx0XHRcdFx0aWYgKHAgPT0gbGluZS50byAtIDEgJiYgdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWUuY29udGFpbnMoJ2lubGluZS1jb2RlJykpIHtcblx0XHRcdFx0XHR2aWV3LmRpc3BhdGNoKHtcblx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHAgKyAxLCBoZWFkOiBwICsgMSB9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlRW50ZXIgPSAodmlldzogRWRpdG9yVmlldykgPT4ge1xuXHRcdC8vIGNvbnNvbGUubG9nKFwidGhpcy5zZXR0aW5ncy5FbnRlclR3aWNlXCIsIHRoaXMuc2V0dGluZ3MuRW50ZXJUd2ljZSlcblx0XHRpZiAoIXRoaXMuc2V0dGluZ3MuRW50ZXJUd2ljZSkgcmV0dXJuIGZhbHNlO1xuXG5cdFx0Y29uc3QgYmFzZVBhdGggPSAodGhpcy5hcHAudmF1bHQuYWRhcHRlciBhcyBhbnkpLmJhc2VQYXRoXG5cdFx0bGV0IGNvbmZpZ19wYXRoID0gYmFzZVBhdGggKyBcIi9cIiArIHRoaXMuYXBwLnZhdWx0LmNvbmZpZ0RpciArIFwiL2FwcC5qc29uXCI7XG5cdFx0bGV0IGNvbmZpZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGNvbmZpZ19wYXRoLCAndXRmLTgnKSlcblx0XHRsZXQgc3RyaWN0TGluZUJyZWFrcyA9IGNvbmZpZy5zdHJpY3RMaW5lQnJlYWtzIHx8IGZhbHNlO1xuXHRcdGlmICghc3RyaWN0TGluZUJyZWFrcykgcmV0dXJuIGZhbHNlO1xuXG5cdFx0bGV0IHN0YXRlID0gdmlldy5zdGF0ZTtcblx0XHRsZXQgZG9jID0gc3RhdGUuZG9jXG5cdFx0Y29uc3QgdHJlZSA9IHN5bnRheFRyZWUoc3RhdGUpO1xuXHRcdGNvbnN0IHMgPSB2aWV3LnN0YXRlLnNlbGVjdGlvbjtcblx0XHRpZiAocy5yYW5nZXMubGVuZ3RoID4gMSkgcmV0dXJuIGZhbHNlO1xuXHRcdGNvbnN0IHBvcyA9IHMubWFpbi50bztcblx0XHRsZXQgbGluZSA9IGRvYy5saW5lQXQocG9zKVxuXG5cdFx0Ly8gY29uc29sZS5sb2cobGluZS50ZXh0LCBnZXRQb3NMaW5lVHlwZTIoc3RhdGUsIHBvcykpXG5cdFx0Ly8gZm9yIChsZXQgcD1saW5lLmZyb207IHA8PWxpbmUudG87IHArPTEpe1xuXHRcdC8vIFx0Y29uc3QgdG9rZW4gPSB0cmVlLnJlc29sdmUocCwgMSkubmFtZVxuXHRcdC8vIFx0Y29uc29sZS5sb2cocC1saW5lLmZyb20sIHRva2VuKVxuXHRcdC8vIH1cblx0XHRpZiAoL15cXHMqJC8udGVzdChsaW5lLnRleHQpKSByZXR1cm4gZmFsc2U7XG5cdFx0ZWxzZSBpZiAoZ2V0UG9zTGluZVR5cGUyKHN0YXRlLCBwb3MpID09IExpbmVUeXBlLnRleHQpIHtcblx0XHRcdHZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0ZnJvbTogcG9zLFxuXHRcdFx0XHRcdHRvOiBwb3MsXG5cdFx0XHRcdFx0aW5zZXJ0OiAnXFxuXFxuJ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiBwb3MgKyAyIH0sXG5cdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHR9KVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cHJpdmF0ZSByZWFkb25seSBvbktleXVwID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB2aWV3OiBFZGl0b3JWaWV3KSA9PiB7XG5cdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKFwiS2V5dXA6XCIsIGV2ZW50LmtleSwgZXZlbnQuc2hpZnRLZXksIGV2ZW50LmN0cmxLZXl8fGV2ZW50Lm1ldGFLZXkpO1xuXHRcdFx0Y29uc29sZS5sb2coXCJLZXl1cDpcIiwgZXZlbnQua2V5KTtcblx0XHR9XG5cdFx0dGhpcy5oYW5kbGVFbmRDb21wb3NlVHlwZUtleShldmVudCwgdmlldyk7XG5cdH1cblxuXHRoYW5kbGVFbmRDb21wb3NlVHlwZUtleSA9IChldmVudDogS2V5Ym9hcmRFdmVudCwgdmlldzogRWRpdG9yVmlldykgPT4ge1xuXHRcdGlmICghdGhpcy5zZXR0aW5ncy5UcnlGaXhDaGluZXNlSU0pIHJldHVybjtcblx0XHRpZiAoWydFbnRlciddLmNvbnRhaW5zKGV2ZW50LmtleSkgJiYgdGhpcy5zZXR0aW5ncy5BdXRvRm9ybWF0ICYmXG5cdFx0XHR0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUgJiYgIXRoaXMuaXNDdXJyZW50RmlsZUV4Y2x1ZGUoKSkge1xuXHRcdFx0bGV0IGN1cnNvciA9IHZpZXcuc3RhdGUuc2VsZWN0aW9uLmFzU2luZ2xlKCkubWFpbjtcblx0XHRcdGlmIChnZXRQb3NMaW5lVHlwZSh2aWV3LnN0YXRlLCBjdXJzb3IuYW5jaG9yKSAhPSBMaW5lVHlwZS50ZXh0KSByZXR1cm47XG5cdFx0XHRpZiAoY3Vyc29yLmhlYWQgIT0gY3Vyc29yLmFuY2hvcikgcmV0dXJuO1xuXHRcdFx0bGV0IGluc2VydGVkU3RyID0gdmlldy5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodGhpcy5jb21wb3NlX2JlZ2luX3BvcywgY3Vyc29yLmFuY2hvcik7XG5cdFx0XHRjb25zb2xlLmxvZyhcImluc2VydGVkIHN0clwiLCBpbnNlcnRlZFN0cik7XG5cdFx0XHRsZXQgY2hhbmdlcyA9IHRoaXMuRm9ybWF0ZXIuZm9ybWF0TGluZU9mRG9jKHZpZXcuc3RhdGUsIHRoaXMuc2V0dGluZ3MsXG5cdFx0XHRcdHRoaXMuY29tcG9zZV9iZWdpbl9wb3MsIGN1cnNvci5hbmNob3IsIGluc2VydGVkU3RyKTtcblx0XHRcdHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSA9IGZhbHNlO1xuXHRcdFx0aWYgKGNoYW5nZXMgIT0gbnVsbCkge1xuXHRcdFx0XHR2aWV3LmRpc3BhdGNoKC4uLmNoYW5nZXNbMF0pO1xuXHRcdFx0XHR2aWV3LmRpc3BhdGNoKGNoYW5nZXNbMV0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Zm9ybWF0QXJ0aWNsZSA9IChlZGl0b3I6IEVkaXRvciwgdmlldzogTWFya2Rvd25WaWV3KTogdm9pZCA9PiB7XG5cdFx0bGV0IGxpbmVDb3VudCA9IGVkaXRvci5saW5lQ291bnQoKTtcblx0XHRsZXQgbmV3X2FydGljbGUgPSBcIlwiO1xuXHRcdGxldCBjcyA9IGVkaXRvci5nZXRDdXJzb3IoKTtcblx0XHRsZXQgY2ggPSAwO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbGluZUNvdW50OyBpKyspIHtcblx0XHRcdGlmIChpICE9IDApIG5ld19hcnRpY2xlICs9ICdcXG4nO1xuXHRcdFx0aWYgKGkgIT0gY3MubGluZSkge1xuXHRcdFx0XHRuZXdfYXJ0aWNsZSArPSB0aGlzLnByZUZvcm1hdE9uZUxpbmUoZWRpdG9yLCBpICsgMSlbMF07XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0bGV0IG5ld0RhdGEgPSB0aGlzLnByZUZvcm1hdE9uZUxpbmUoZWRpdG9yLCBpICsgMSwgY3MuY2gpO1xuXHRcdFx0XHRuZXdfYXJ0aWNsZSArPSBuZXdEYXRhWzBdO1xuXHRcdFx0XHRjaCA9IG5ld0RhdGFbMV07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGVkaXRvci5zZXRWYWx1ZShuZXdfYXJ0aWNsZSk7XG5cdFx0ZWRpdG9yLnNldEN1cnNvcih7IGxpbmU6IGNzLmxpbmUsIGNoOiBjaCB9KTtcblx0XHRuZXcgTm90aWNlKFwiRWFzeVR5cGluZzogRm9ybWF0IEFydGljbGUgRG9uZSFcIik7XG5cdH1cblxuXHRpc0N1cnJlbnRGaWxlRXhjbHVkZSgpOiBib29sZWFuIHtcblx0XHRpZiAodGhpcy5DdXJBY3RpdmVNYXJrZG93biA9PSBcIlwiKSB7XG5cdFx0XHRsZXQgZmlsZSA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVGaWxlKCk7XG5cdFx0XHRpZiAoZmlsZSAhPSBudWxsICYmIHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24gIT0gZmlsZS5wYXRoKSB7XG5cdFx0XHRcdHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24gPSBmaWxlLnBhdGg7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGxldCBleGNsdWRlUGF0aHMgPSB0aGlzLnNldHRpbmdzLkV4Y2x1ZGVGaWxlcy5zcGxpdCgnXFxuJyk7XG5cdFx0Zm9yIChsZXQgZXBhdGggb2YgZXhjbHVkZVBhdGhzKSB7XG5cdFx0XHRpZiAoZXBhdGguY2hhckF0KDApID09ICcvJykgZXBhdGggPSBlcGF0aC5zdWJzdHJpbmcoMSk7XG5cdFx0XHRpZiAodGhpcy5DdXJBY3RpdmVNYXJrZG93biA9PSBlcGF0aCkgcmV0dXJuIHRydWU7XG5cdFx0XHRsZXQgbGVuID0gZXBhdGgubGVuZ3RoO1xuXHRcdFx0aWYgKHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24uc3Vic3RyaW5nKDAsIGxlbikgPT0gZXBhdGggJiYgKHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24uY2hhckF0KGxlbikgPT0gJy8nIHx8IHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24uY2hhckF0KGxlbikgPT0gJ1xcXFwnIHx8XG5cdFx0XHRcdGVwYXRoLmNoYXJBdChsZW4gLSAxKSA9PSBcIi9cIiB8fCBlcGF0aC5jaGFyQXQobGVuIC0gMSkgPT0gXCJcXFxcXCIpKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRmb3JtYXRTZWxlY3Rpb25PckN1ckxpbmUgPSAoZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldyk6IHZvaWQgPT4ge1xuXHRcdGlmICghZWRpdG9yLnNvbWV0aGluZ1NlbGVjdGVkKCkgfHwgZWRpdG9yLmdldFNlbGVjdGlvbigpID09PSAnJykge1xuXHRcdFx0bGV0IGxpbmVOdW1iZXIgPSBlZGl0b3IuZ2V0Q3Vyc29yKCkubGluZTtcblx0XHRcdGxldCBuZXdMaW5lRGF0YSA9IHRoaXMucHJlRm9ybWF0T25lTGluZShlZGl0b3IsIGxpbmVOdW1iZXIgKyAxLCBlZGl0b3IuZ2V0Q3Vyc29yKCkuY2gpO1xuXHRcdFx0ZWRpdG9yLnJlcGxhY2VSYW5nZShuZXdMaW5lRGF0YVswXSwgeyBsaW5lOiBsaW5lTnVtYmVyLCBjaDogMCB9LCB7IGxpbmU6IGxpbmVOdW1iZXIsIGNoOiBlZGl0b3IuZ2V0TGluZShsaW5lTnVtYmVyKS5sZW5ndGggfSk7XG5cdFx0XHRlZGl0b3Iuc2V0U2VsZWN0aW9uKHsgbGluZTogbGluZU51bWJlciwgY2g6IG5ld0xpbmVEYXRhWzFdIH0pO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRsZXQgc2VsZWN0aW9uID0gZWRpdG9yLmxpc3RTZWxlY3Rpb25zKClbMF07XG5cdFx0bGV0IGJlZ2luID0gc2VsZWN0aW9uLmFuY2hvci5saW5lO1xuXHRcdGxldCBlbmQgPSBzZWxlY3Rpb24uaGVhZC5saW5lO1xuXHRcdGlmIChiZWdpbiA+IGVuZCkge1xuXHRcdFx0bGV0IHRlbXAgPSBiZWdpbjtcblx0XHRcdGJlZ2luID0gZW5kO1xuXHRcdFx0ZW5kID0gdGVtcDtcblx0XHR9XG5cdFx0Ly8gY29uc29sZS5sb2coYmVnaW4sIGVuZClcblx0XHRsZXQgbmV3X2xpbmVzID0gXCJcIjtcblx0XHRmb3IgKGxldCBpID0gYmVnaW47IGkgPD0gZW5kOyBpKyspIHtcblx0XHRcdGlmIChpICE9IGJlZ2luKSBuZXdfbGluZXMgKz0gJ1xcbic7XG5cdFx0XHRjb25zb2xlLmxvZygnaSsxJywgaSArIDEpXG5cdFx0XHRuZXdfbGluZXMgKz0gdGhpcy5wcmVGb3JtYXRPbmVMaW5lKGVkaXRvciwgaSArIDEpWzBdO1xuXHRcdH1cblx0XHRlZGl0b3IucmVwbGFjZVJhbmdlKG5ld19saW5lcywgeyBsaW5lOiBiZWdpbiwgY2g6IDAgfSwgeyBsaW5lOiBlbmQsIGNoOiBlZGl0b3IuZ2V0TGluZShlbmQpLmxlbmd0aCB9KTtcblx0XHRpZiAoc2VsZWN0aW9uLmFuY2hvci5saW5lIDwgc2VsZWN0aW9uLmhlYWQubGluZSkge1xuXHRcdFx0ZWRpdG9yLnNldFNlbGVjdGlvbih7IGxpbmU6IHNlbGVjdGlvbi5hbmNob3IubGluZSwgY2g6IDAgfSwgeyBsaW5lOiBzZWxlY3Rpb24uaGVhZC5saW5lLCBjaDogZWRpdG9yLmdldExpbmUoc2VsZWN0aW9uLmhlYWQubGluZSkubGVuZ3RoIH0pO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdGVkaXRvci5zZXRTZWxlY3Rpb24oeyBsaW5lOiBzZWxlY3Rpb24uYW5jaG9yLmxpbmUsIGNoOiBlZGl0b3IuZ2V0TGluZShzZWxlY3Rpb24uYW5jaG9yLmxpbmUpLmxlbmd0aCB9LCB7IGxpbmU6IHNlbGVjdGlvbi5oZWFkLmxpbmUsIGNoOiAwIH0pO1xuXHRcdH1cblx0fVxuXG5cdC8vIHBhcmFtOiBsaW5lTnVtYmVyIGlzICgxLWJhc2VkKVxuXHRmb3JtYXRPbmVMaW5lID0gKGVkaXRvcjogRWRpdG9yLCBsaW5lTnVtYmVyOiBudW1iZXIpOiB2b2lkID0+IHtcblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yLCBub3QgdHlwZWRcblx0XHRjb25zdCBlZGl0b3JWaWV3ID0gZWRpdG9yLmNtIGFzIEVkaXRvclZpZXc7XG5cdFx0bGV0IHN0YXRlID0gZWRpdG9yVmlldy5zdGF0ZTtcblx0XHRsZXQgbGluZSA9IHN0YXRlLmRvYy5saW5lKGxpbmVOdW1iZXIpXG5cblx0XHRpZiAoZ2V0UG9zTGluZVR5cGUoc3RhdGUsIGxpbmUuZnJvbSkgPT0gTGluZVR5cGUudGV4dCkge1xuXHRcdFx0bGV0IG9sZExpbmUgPSBsaW5lLnRleHQ7XG5cdFx0XHRsZXQgbmV3TGluZSA9IHRoaXMuRm9ybWF0ZXIuZm9ybWF0TGluZShzdGF0ZSwgbGluZU51bWJlciwgdGhpcy5zZXR0aW5ncywgb2xkTGluZS5sZW5ndGgsIDApWzBdO1xuXHRcdFx0aWYgKG9sZExpbmUgIT0gbmV3TGluZSkge1xuXHRcdFx0XHRlZGl0b3IucmVwbGFjZVJhbmdlKG5ld0xpbmUsIHsgbGluZTogbGluZU51bWJlciAtIDEsIGNoOiAwIH0sIHsgbGluZTogbGluZU51bWJlciAtIDEsIGNoOiBvbGRMaW5lLmxlbmd0aCB9KTtcblx0XHRcdFx0ZWRpdG9yLnNldEN1cnNvcih7IGxpbmU6IGxpbmVOdW1iZXIgLSAxLCBjaDogZWRpdG9yLmdldExpbmUobGluZU51bWJlciAtIDEpLmxlbmd0aCB9KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gcGFyYW06IGxpbmVOdW1iZXIgaXMgKDEtYmFzZWQpXG5cdHByZUZvcm1hdE9uZUxpbmUgPSAoZWRpdG9yOiBFZGl0b3IsIGxpbmVOdW1iZXI6IG51bWJlciwgY2g6IG51bWJlciA9IC0xKTogW3N0cmluZywgbnVtYmVyXSA9PiB7XG5cdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciwgbm90IHR5cGVkXG5cdFx0Y29uc3QgZWRpdG9yVmlldyA9IGVkaXRvci5jbSBhcyBFZGl0b3JWaWV3O1xuXHRcdGxldCBzdGF0ZSA9IGVkaXRvclZpZXcuc3RhdGU7XG5cdFx0bGV0IGxpbmUgPSBzdGF0ZS5kb2MubGluZShsaW5lTnVtYmVyKVxuXG5cdFx0bGV0IG5ld0xpbmUgPSBsaW5lLnRleHQ7XG5cdFx0bGV0IG5ld0NoID0gMDtcblx0XHRsZXQgY3VyQ2ggPSBsaW5lLnRleHQubGVuZ3RoO1xuXHRcdGlmIChjaCAhPSAtMSkge1xuXHRcdFx0Y3VyQ2ggPSBjaDtcblx0XHR9XG5cdFx0aWYgKGdldFBvc0xpbmVUeXBlKHN0YXRlLCBsaW5lLmZyb20pID09IExpbmVUeXBlLnRleHQpIHtcblx0XHRcdGxldCBuZXdMaW5lRGF0YSA9IHRoaXMuRm9ybWF0ZXIuZm9ybWF0TGluZShzdGF0ZSwgbGluZU51bWJlciwgdGhpcy5zZXR0aW5ncywgY3VyQ2gsIDApO1xuXHRcdFx0bmV3TGluZSA9IG5ld0xpbmVEYXRhWzBdO1xuXHRcdFx0bmV3Q2ggPSBuZXdMaW5lRGF0YVsxXTtcblx0XHR9XG5cblx0XHRyZXR1cm4gW25ld0xpbmUsIG5ld0NoXTtcblx0fVxuXG5cdGRlbGV0ZUJsYW5rTGluZXMgPSAoZWRpdG9yOiBFZGl0b3IpOiB2b2lkID0+IHtcblx0XHRjb25zdCBiYXNlUGF0aCA9ICh0aGlzLmFwcC52YXVsdC5hZGFwdGVyIGFzIGFueSkuYmFzZVBhdGhcblx0XHRsZXQgY29uZmlnX3BhdGggPSBiYXNlUGF0aCArIFwiL1wiICsgdGhpcy5hcHAudmF1bHQuY29uZmlnRGlyICsgXCIvYXBwLmpzb25cIjtcblx0XHRpZiAodGhpcy5zZXR0aW5ncy5kZWJ1Zykge1xuXHRcdFx0Y29uc29sZS5sb2coY29uZmlnX3BhdGgpO1xuXHRcdFx0bGV0IGNvbmZpZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGNvbmZpZ19wYXRoLCAndXRmLTgnKSlcblx0XHRcdGNvbnNvbGUubG9nKGNvbmZpZyk7XG5cdFx0XHQvLyByZXR1cm47XG5cdFx0fVxuXHRcdC8vIGxldCBjb25maWcgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhjb25maWdfcGF0aCwgJ3V0Zi04JykpXG5cdFx0Ly8gbGV0IHN0cmljdExpbmVCcmVha3MgPSBjb25maWcuc3RyaWN0TGluZUJyZWFrcztcblx0XHQvLyByZXR1cm4gO1xuXG5cdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciwgbm90IHR5cGVkXG5cdFx0Y29uc3QgZWRpdG9yVmlldyA9IGVkaXRvci5jbSBhcyBFZGl0b3JWaWV3O1xuXHRcdGxldCBzdGF0ZSA9IGVkaXRvclZpZXcuc3RhdGU7XG5cdFx0bGV0IGRvYyA9IHN0YXRlLmRvY1xuXHRcdGNvbnN0IHRyZWUgPSBzeW50YXhUcmVlKHN0YXRlKTtcblx0XHRsZXQgc3RhcnRfbGluZSA9IDE7XG5cdFx0bGV0IGVuZF9saW5lID0gZG9jLmxpbmVzO1xuXHRcdGxldCBsaW5lX251bSA9IGRvYy5saW5lcztcblx0XHRjb25zdCBzZWxlY3RlZCA9IGVkaXRvci5zb21ldGhpbmdTZWxlY3RlZCgpICYmIGVkaXRvci5nZXRTZWxlY3Rpb24oKSAhPSAnJztcblx0XHRpZiAoc2VsZWN0ZWQpIHtcblx0XHRcdGxldCBzZWxlY3Rpb24gPSBlZGl0b3IubGlzdFNlbGVjdGlvbnMoKVswXTtcblx0XHRcdGxldCBiZWdpbiA9IHNlbGVjdGlvbi5hbmNob3IubGluZSArIDE7XG5cdFx0XHRsZXQgZW5kID0gc2VsZWN0aW9uLmhlYWQubGluZSArIDE7XG5cdFx0XHRpZiAoYmVnaW4gPiBlbmQpIHtcblx0XHRcdFx0bGV0IHRlbXAgPSBiZWdpbjtcblx0XHRcdFx0YmVnaW4gPSBlbmQ7XG5cdFx0XHRcdGVuZCA9IHRlbXA7XG5cdFx0XHR9XG5cdFx0XHRzdGFydF9saW5lID0gYmVnaW47XG5cdFx0XHRlbmRfbGluZSA9IGVuZFxuXHRcdH1cblxuXHRcdC8vIGlmKHRoaXMuc2V0dGluZ3MuZGVidWcpe1xuXHRcdC8vIFx0bGV0IGxpbmVfaW5kZXggPSBlZGl0b3IuZ2V0Q3Vyc29yKCkubGluZSArIDE7XG5cdFx0Ly8gXHRsZXQgY29udGVudCA9IGVkaXRvci5nZXRMaW5lKGVkaXRvci5nZXRDdXJzb3IoKS5saW5lKTtcblx0XHQvLyBcdGNvbnNvbGUubG9nKGNvbnRlbnQpO1xuXHRcdC8vIFx0Zm9yIChsZXQgaT0wO2k8Y29udGVudC5sZW5ndGg7aSsrKXtcblx0XHQvLyBcdFx0bGV0IG5vZGUgPSB0cmVlLnJlc29sdmUoZG9jLmxpbmUobGluZV9pbmRleCkuZnJvbStpLCAxKTtcblx0XHQvLyBcdFx0Y29uc29sZS5sb2coaSwgbm9kZS5uYW1lKVxuXHRcdC8vIFx0fVxuXHRcdC8vIFx0cmV0dXJuO1xuXHRcdC8vIH1cblxuXG5cdFx0bGV0IGRlbGV0ZV9pbmRleDogbnVtYmVyW10gPSBbXTtcblx0XHRsZXQgYmxhbmtfcmVnID0gL15cXHMqJC87XG5cdFx0bGV0IHJlbWFpbl9uZXh0X2JsYW5rID0gZmFsc2U7XG5cblx0XHRpZiAoc3RhcnRfbGluZSAhPSAxKSB7XG5cdFx0XHRsZXQgbm9kZSA9IHRyZWUucmVzb2x2ZShkb2MubGluZShzdGFydF9saW5lIC0gMSkuZnJvbSwgMSk7XG5cdFx0XHRpZiAobm9kZS5uYW1lLmNvbnRhaW5zKCdsaXN0JykgfHwgbm9kZS5uYW1lLmNvbnRhaW5zKCdxdW90ZScpIHx8IG5vZGUubmFtZS5jb250YWlucygnYmxvY2tpZCcpKSB7XG5cdFx0XHRcdHJlbWFpbl9uZXh0X2JsYW5rID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKGVuZF9saW5lICE9IGxpbmVfbnVtICYmICFibGFua19yZWcudGVzdChkb2MubGluZShlbmRfbGluZSArIDEpLnRleHQpKSB7XG5cdFx0XHRlbmRfbGluZSArPSAxO1xuXHRcdH1cblxuXHRcdGZvciAobGV0IGkgPSBzdGFydF9saW5lOyBpIDw9IGVuZF9saW5lOyBpKyspIHtcblx0XHRcdGxldCBsaW5lID0gZG9jLmxpbmUoaSk7XG5cdFx0XHRsZXQgcG9zID0gbGluZS5mcm9tO1xuXHRcdFx0bGV0IG5vZGUgPSB0cmVlLnJlc29sdmUocG9zLCAxKTtcblxuXHRcdFx0Ly8gXHU1QkY5XHU0RThFXHU3QTdBXHU3NjdEXHU4ODRDXG5cdFx0XHRpZiAoYmxhbmtfcmVnLnRlc3QobGluZS50ZXh0KSAmJiAhcmVtYWluX25leHRfYmxhbmspIHtcblx0XHRcdFx0ZGVsZXRlX2luZGV4LnB1c2goaSk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSBpZiAoYmxhbmtfcmVnLnRlc3QobGluZS50ZXh0KSAmJiByZW1haW5fbmV4dF9ibGFuaykge1xuXHRcdFx0XHRyZW1haW5fbmV4dF9ibGFuayA9IGZhbHNlO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKG5vZGUubmFtZS5jb250YWlucygnaHInKSAmJiBkZWxldGVfaW5kZXhbZGVsZXRlX2luZGV4Lmxlbmd0aCAtIDFdID09IGkgLSAxKSB7XG5cdFx0XHRcdGRlbGV0ZV9pbmRleC5wb3AoKVxuXHRcdFx0fVxuXHRcdFx0ZWxzZSBpZiAobm9kZS5uYW1lLmNvbnRhaW5zKCdsaXN0JykgfHwgbm9kZS5uYW1lLmNvbnRhaW5zKCdxdW90ZScpIHx8IG5vZGUubmFtZS5jb250YWlucygnYmxvY2tpZCcpKSB7XG5cdFx0XHRcdHJlbWFpbl9uZXh0X2JsYW5rID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRyZW1haW5fbmV4dF9ibGFuayA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBjb25zb2xlLmxvZyhcImRlbGV0ZV9pbmRleFwiLGRlbGV0ZV9pbmRleClcblx0XHRsZXQgbmV3Q29udGVudCA9IFwiXCI7XG5cdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCBsaW5lX251bTsgaSsrKSB7XG5cdFx0XHRpZiAoIWRlbGV0ZV9pbmRleC5jb250YWlucyhpKSkge1xuXHRcdFx0XHRuZXdDb250ZW50ICs9IGRvYy5saW5lKGkpLnRleHQgKyAnXFxuJztcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKCFkZWxldGVfaW5kZXguY29udGFpbnMobGluZV9udW0pKSB7XG5cdFx0XHRuZXdDb250ZW50ICs9IGRvYy5saW5lKGxpbmVfbnVtKS50ZXh0XG5cdFx0fVxuXG5cdFx0ZWRpdG9yLnNldFZhbHVlKG5ld0NvbnRlbnQpO1xuXHRcdC8vIHRoaXMuQ29udGVudFBhcnNlci5yZXBhcnNlKGVkaXRvci5nZXRWYWx1ZSgpLCAwKTtcblx0fVxuXG5cdHN3aXRjaEF1dG9Gb3JtYXR0aW5nKCkge1xuXHRcdHRoaXMuc2V0dGluZ3MuQXV0b0Zvcm1hdCA9IHRoaXMuc2V0dGluZ3MuQXV0b0Zvcm1hdCA/IGZhbHNlIDogdHJ1ZTtcblx0XHRsZXQgc3RhdHVzID0gdGhpcy5zZXR0aW5ncy5BdXRvRm9ybWF0ID8gJ29uJyA6ICdvZmYnO1xuXHRcdG5ldyBOb3RpY2UoJ0Vhc3lUeXBpbmc6IEF1dG9mb3JtYXQgaXMgJyArIHN0YXR1cyArICchJyk7XG5cdH1cblxuXHRjb252ZXJ0MkNvZGVCbG9jayhlZGl0b3I6IEVkaXRvcikge1xuXHRcdGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKSBjb25zb2xlLmxvZyhcIi0tLS0tIEVhc3lUeXBpbmc6IGluc2VydCBjb2RlIGJsb2NrLS0tLS1cIik7XG5cdFx0aWYgKGVkaXRvci5zb21ldGhpbmdTZWxlY3RlZCAmJiBlZGl0b3IuZ2V0U2VsZWN0aW9uKCkgIT0gXCJcIikge1xuXHRcdFx0bGV0IHNlbGVjdGVkID0gZWRpdG9yLmdldFNlbGVjdGlvbigpO1xuXHRcdFx0bGV0IHNlbGVjdGVkUmFuZ2UgPSBlZGl0b3IubGlzdFNlbGVjdGlvbnMoKVswXTtcblx0XHRcdGxldCBhbmNob3IgPSBzZWxlY3RlZFJhbmdlLmFuY2hvcjtcblx0XHRcdGxldCBoZWFkID0gc2VsZWN0ZWRSYW5nZS5oZWFkO1xuXG5cdFx0XHRsZXQgcmVwbGFjZW1lbnQgPSBcImBgYFxcblwiICsgc2VsZWN0ZWQgKyBcIlxcbmBgYFwiO1xuXHRcdFx0Ly8gbWFrZSBzdXJlIGFuY2hvciA8IGhlYWRcblx0XHRcdGlmIChhbmNob3IubGluZSA+IGhlYWQubGluZSB8fCAoYW5jaG9yLmxpbmUgPT0gaGVhZC5saW5lICYmIGFuY2hvci5jaCA+IGhlYWQuY2gpKSB7XG5cdFx0XHRcdGxldCB0ZW1wID0gYW5jaG9yO1xuXHRcdFx0XHRhbmNob3IgPSBoZWFkO1xuXHRcdFx0XHRoZWFkID0gdGVtcDtcblx0XHRcdH1cblx0XHRcdGxldCBkc3RMaW5lID0gYW5jaG9yLmxpbmU7XG5cdFx0XHRpZiAoYW5jaG9yLmNoICE9IDApIHtcblx0XHRcdFx0cmVwbGFjZW1lbnQgPSAnXFxuJyArIHJlcGxhY2VtZW50O1xuXHRcdFx0XHRkc3RMaW5lICs9IDE7XG5cdFx0XHR9XG5cdFx0XHRpZiAoaGVhZC5jaCAhPSBlZGl0b3IuZ2V0TGluZShoZWFkLmxpbmUpLmxlbmd0aCkge1xuXHRcdFx0XHRyZXBsYWNlbWVudCA9IHJlcGxhY2VtZW50ICsgJ1xcbic7XG5cdFx0XHR9XG5cdFx0XHRlZGl0b3IucmVwbGFjZVNlbGVjdGlvbihyZXBsYWNlbWVudCk7XG5cdFx0XHRlZGl0b3Iuc2V0Q3Vyc29yKHsgbGluZTogZHN0TGluZSwgY2g6IDMgfSk7XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0bGV0IGNzID0gZWRpdG9yLmdldEN1cnNvcigpO1xuXHRcdFx0bGV0IHJlcGxhY2UgPSBcImBgYFxcbmBgYFwiO1xuXHRcdFx0bGV0IGRzdExpbmUgPSBjcy5saW5lO1xuXHRcdFx0aWYgKGNzLmNoICE9IDApIHtcblx0XHRcdFx0cmVwbGFjZSA9IFwiXFxuXCIgKyByZXBsYWNlO1xuXHRcdFx0XHRkc3RMaW5lICs9IDE7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY3MuY2ggIT0gZWRpdG9yLmdldExpbmUoY3MubGluZSkubGVuZ3RoKSB7XG5cdFx0XHRcdHJlcGxhY2UgPSByZXBsYWNlICsgJ1xcbic7XG5cdFx0XHR9XG5cdFx0XHRlZGl0b3IucmVwbGFjZVJhbmdlKHJlcGxhY2UsIGNzKTtcblx0XHRcdGVkaXRvci5zZXRDdXJzb3IoeyBsaW5lOiBkc3RMaW5lLCBjaDogMyB9KTtcblx0XHR9XG5cblx0fVxuXG5cdHJlZnJlc2hTZWxlY3Rpb25SZXBsYWNlUnVsZSgpIHtcblx0XHR0aGlzLlNlbGVjdGlvblJlcGxhY2VNYXAgPSBuZXcgTWFwKHRoaXMuc2VsZWN0aW9uUmVwbGFjZU1hcEluaXRhbERhdGEpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXIubGVuZ3RoOyBpKyspIHtcblx0XHRcdGxldCB0cmlnZ2VyID0gdGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXJbaV07XG5cdFx0XHRsZXQgbGVmdHMgPSB0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVmFsdWVbaV0ubGVmdDtcblx0XHRcdGxldCByaWdodHMgPSB0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVmFsdWVbaV0ucmlnaHQ7XG5cblx0XHRcdHRoaXMuU2VsZWN0aW9uUmVwbGFjZU1hcC5zZXQodHJpZ2dlciwgeyBsZWZ0OiBsZWZ0cywgcmlnaHQ6IHJpZ2h0cyB9KTtcblx0XHR9XG5cdH1cblxuXHRhZGRVc2VyU2VsZWN0aW9uUmVwUnVsZSh0cmlnZ2VyOiBzdHJpbmcsIGxlZnQ6IHN0cmluZywgcmlnaHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdGlmICh0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlci5pbmNsdWRlcyh0cmlnZ2VyKSkgcmV0dXJuIGZhbHNlO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVUcmlnZ2VyLnB1c2godHJpZ2dlcilcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVmFsdWUucHVzaCh7IGxlZnQ6IGxlZnQsIHJpZ2h0OiByaWdodCB9KTtcblx0XHR0aGlzLnJlZnJlc2hTZWxlY3Rpb25SZXBsYWNlUnVsZSgpO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0ZGVsZXRlVXNlclNlbGVjdGlvblJlcFJ1bGUoaWR4OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAoaWR4IDwgMCB8fCBpZHggPj0gdGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXIubGVuZ3RoKSByZXR1cm47XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXIuc3BsaWNlKGlkeCwgMSk7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVZhbHVlLnNwbGljZShpZHgsIDEpO1xuXHRcdHRoaXMucmVmcmVzaFNlbGVjdGlvblJlcGxhY2VSdWxlKCk7XG5cdH1cblxuXHR1cGRhdGVVc2VyU2VsZWN0aW9uUmVwUnVsZShpZHg6IG51bWJlciwgbGVmdDogc3RyaW5nLCByaWdodDogc3RyaW5nKSB7XG5cdFx0aWYgKGlkeCA8IDAgfHwgaWR4ID49IHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVUcmlnZ2VyLmxlbmd0aCkgcmV0dXJuO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZVtpZHhdLmxlZnQgPSBsZWZ0O1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZVtpZHhdLnJpZ2h0ID0gcmlnaHQ7XG5cdFx0dGhpcy5yZWZyZXNoU2VsZWN0aW9uUmVwbGFjZVJ1bGUoKTtcblx0fVxuXG5cdHJlZnJlc2hVc2VyRGVsZXRlUnVsZSgpIHtcblx0XHR0aGlzLlVzZXJEZWxldGVSdWxlcyA9IHJ1bGVTdHJpbmdMaXN0MlJ1bGVMaXN0KHRoaXMuc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdCk7XG5cdH1cblxuXHRhZGRVc2VyRGVsZXRlUnVsZShiZWZvcmU6IHN0cmluZywgYWZ0ZXI6IHN0cmluZykge1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdC5wdXNoKFtiZWZvcmUsIGFmdGVyXSk7XG5cdFx0dGhpcy5yZWZyZXNoVXNlckRlbGV0ZVJ1bGUoKTtcblx0fVxuXG5cdGRlbGV0ZVVzZXJEZWxldGVSdWxlKGlkeDogbnVtYmVyKSB7XG5cdFx0aWYgKGlkeCA+PSB0aGlzLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3QubGVuZ3RoIHx8IGlkeCA8IDApIHJldHVybjtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3Quc3BsaWNlKGlkeCwgMSk7XG5cdFx0dGhpcy5yZWZyZXNoVXNlckRlbGV0ZVJ1bGUoKTtcblx0fVxuXG5cdHVwZGF0ZVVzZXJEZWxldGVSdWxlKGlkeDogbnVtYmVyLCBiZWZvcmU6IHN0cmluZywgYWZ0ZXI6IHN0cmluZykge1xuXHRcdGlmIChpZHggPj0gdGhpcy5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0Lmxlbmd0aCB8fCBpZHggPCAwKSByZXR1cm47XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0W2lkeF1bMF0gPSBiZWZvcmU7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0W2lkeF1bMV0gPSBhZnRlcjtcblx0XHR0aGlzLnJlZnJlc2hVc2VyRGVsZXRlUnVsZSgpO1xuXHR9XG5cblx0cmVmcmVzaFVzZXJDb252ZXJ0UnVsZSgpIHtcblx0XHR0aGlzLlVzZXJDb252ZXJ0UnVsZXMgPSBydWxlU3RyaW5nTGlzdDJSdWxlTGlzdCh0aGlzLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0KTtcblx0fVxuXG5cdGFkZFVzZXJDb252ZXJ0UnVsZShiZWZvcmU6IHN0cmluZywgYWZ0ZXI6IHN0cmluZykge1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3QucHVzaChbYmVmb3JlLCBhZnRlcl0pO1xuXHRcdHRoaXMucmVmcmVzaFVzZXJDb252ZXJ0UnVsZSgpO1xuXHR9XG5cblx0ZGVsZXRlVXNlckNvbnZlcnRSdWxlKGlkeDogbnVtYmVyKSB7XG5cdFx0aWYgKGlkeCA+PSB0aGlzLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0Lmxlbmd0aCB8fCBpZHggPCAwKSByZXR1cm47XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdC5zcGxpY2UoaWR4LCAxKTtcblx0XHR0aGlzLnJlZnJlc2hVc2VyQ29udmVydFJ1bGUoKTtcblx0fVxuXG5cdGdldENvbW1hbmROYW1lTWFwKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuXHRcdGNvbnN0IGxhbmcgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJyk7XG5cblx0XHRsZXQgY29tbWFuZF9uYW1lX21hcF9lbiA9IG5ldyBNYXAoW1xuXHRcdFx0W1wiZm9ybWF0X2FydGljbGVcIiwgXCJGb3JtYXQgY3VycmVudCBhcnRpY2xlXCJdLFxuXHRcdFx0W1wiZm9ybWF0X3NlbGVjdGlvblwiLCBcIkZvcm1hdCBzZWxlY3RlZCB0ZXh0IG9yIGN1cnJlbnQgbGluZVwiXSxcblx0XHRcdFtcImRlbGV0ZV9ibGFua19saW5lXCIsIFwiRGVsZXRlIGJsYW5rIGxpbmVzIG9mIHRoZSBzZWxlY3RlZCBvciB3aG9sZSBhcnRpY2xlXCJdLFxuXHRcdFx0W1wiaW5zZXJ0X2NvZGVibG9ja1wiLCBcIkluc2VydCBjb2RlIGJsb2NrIHcvd28gc2VsZWN0aW9uXCJdLFxuXHRcdFx0W1wic3dpdGNoX2F1dG9mb3JtYXRcIiwgXCJTd2l0Y2ggYXV0b2Zvcm1hdFwiXSxcblx0XHRcdFtcInBhc3RlX3dvX2Zvcm1hdFwiLCBcIlBhc3RlIHdpdGhvdXQgZm9ybWF0XCJdLFxuXHRcdF0pO1xuXG5cdFx0bGV0IGNvbW1hbmRfbmFtZV9tYXBfemhfVFcgPSBuZXcgTWFwKFtcblx0XHRcdFtcImZvcm1hdF9hcnRpY2xlXCIsIFwiXHU2ODNDXHU1RjBGXHU1MzE2XHU1MTY4XHU2NTg3XCJdLFxuXHRcdFx0W1wiZm9ybWF0X3NlbGVjdGlvblwiLCBcIlx1NjgzQ1x1NUYwRlx1NTMxNlx1OTA3OFx1NEUyRFx1OTBFOFx1NTIwNi9cdTc1NzZcdTUyNERcdTg4NENcIl0sXG5cdFx0XHRbXCJkZWxldGVfYmxhbmtfbGluZVwiLCBcIlx1NTIyQVx1OTY2NFx1OTA3OFx1NEUyRFx1OTBFOFx1NTIwNi9cdTUxNjhcdTY1ODdcdTc2ODRcdTU5MUFcdTk5MThcdTdBN0FcdTc2N0RcdTg4NENcIl0sXG5cdFx0XHRbXCJpbnNlcnRfY29kZWJsb2NrXCIsIFwiXHU2M0QyXHU1MTY1XHU0RUUzXHU3OEJDXHU1ODRBXCJdLFxuXHRcdFx0W1wic3dpdGNoX2F1dG9mb3JtYXRcIiwgXCJcdTUyMDdcdTYzREJcdTgxRUFcdTUyRDVcdTY4M0NcdTVGMEZcdTUzMTZcdTk1OEJcdTk1RENcIl0sXG5cdFx0XHRbXCJwYXN0ZV93b19mb3JtYXRcIiwgXCJcdTcxMjFcdTY4M0NcdTVGMEZcdTUzMTZcdTdDOThcdThDQkNcIl0sXG5cdFx0XSk7XG5cblx0XHRsZXQgY29tbWFuZF9uYW1lX21hcF96aCA9IG5ldyBNYXAoW1xuXHRcdFx0W1wiZm9ybWF0X2FydGljbGVcIiwgXCJcdTY4M0NcdTVGMEZcdTUzMTZcdTUxNjhcdTY1ODdcIl0sXG5cdFx0XHRbXCJmb3JtYXRfc2VsZWN0aW9uXCIsIFwiXHU2ODNDXHU1RjBGXHU1MzE2XHU5MDA5XHU0RTJEXHU5MEU4XHU1MjA2L1x1NUY1M1x1NTI0RFx1ODg0Q1wiXSxcblx0XHRcdFtcImRlbGV0ZV9ibGFua19saW5lXCIsIFwiXHU1MjJBXHU5NjY0XHU5MDA5XHU0RTJEXHU5MEU4XHU1MjA2L1x1NTE2OFx1NjU4N1x1NzY4NFx1NTkxQVx1NEY1OVx1N0E3QVx1NzY3RFx1ODg0Q1wiXSxcblx0XHRcdFtcImluc2VydF9jb2RlYmxvY2tcIiwgXCJcdTYzRDJcdTUxNjVcdTRFRTNcdTc4MDFcdTU3NTdcIl0sXG5cdFx0XHRbXCJzd2l0Y2hfYXV0b2Zvcm1hdFwiLCBcIlx1NTIwN1x1NjM2Mlx1ODFFQVx1NTJBOFx1NjgzQ1x1NUYwRlx1NTMxNlx1NUYwMFx1NTE3M1wiXSxcblx0XHRcdFtcInBhc3RlX3dvX2Zvcm1hdFwiLCBcIlx1NjVFMFx1NjgzQ1x1NUYwRlx1NTMxNlx1N0M5OFx1OEQzNFwiXSxcblx0XHRdKTtcblxuXHRcdGxldCBjb21tYW5kX25hbWVfbWFwID0gY29tbWFuZF9uYW1lX21hcF9lbjtcblx0XHRpZiAobGFuZyA9PSAnemgnKSB7XG5cdFx0XHRjb21tYW5kX25hbWVfbWFwID0gY29tbWFuZF9uYW1lX21hcF96aDtcblx0XHR9XG5cdFx0ZWxzZSBpZiAobGFuZyA9PSAnemgtVFcnKSB7XG5cdFx0XHRjb21tYW5kX25hbWVfbWFwID0gY29tbWFuZF9uYW1lX21hcF96aF9UVztcblx0XHR9XG5cblx0XHRyZXR1cm4gY29tbWFuZF9uYW1lX21hcDtcblx0fVxuXG5cdHVwZGF0ZVVzZXJDb252ZXJ0UnVsZShpZHg6IG51bWJlciwgYmVmb3JlOiBzdHJpbmcsIGFmdGVyOiBzdHJpbmcpIHtcblx0XHRpZiAoaWR4ID49IHRoaXMuc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3QubGVuZ3RoIHx8IGlkeCA8IDApIHJldHVybjtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0W2lkeF1bMF0gPSBiZWZvcmU7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdFtpZHhdWzFdID0gYWZ0ZXI7XG5cdFx0dGhpcy5yZWZyZXNoVXNlckNvbnZlcnRSdWxlKCk7XG5cdH1cblxuXHRnZXRFZGl0b3IgPSAoKTogRWRpdG9yIHwgbnVsbCA9PiB7XG5cdFx0bGV0IGVkaXRvciA9IG51bGw7XG5cdFx0bGV0IG1hcmtkb3duVmlldyA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XG5cdFx0aWYgKG1hcmtkb3duVmlldykge1xuXHRcdFx0ZWRpdG9yID0gbWFya2Rvd25WaWV3LmVkaXRvcjtcblx0XHR9XG5cdFx0aWYgKGVkaXRvciA9PT0gbnVsbCkgY29uc29sZS5sb2coJ2NhblxcJ3QgZ2V0IGVkaXRvcicpO1xuXHRcdHJldHVybiBlZGl0b3I7XG5cdH1cblxuXHRhc3luYyBsb2FkU2V0dGluZ3MoKSB7XG5cdFx0dGhpcy5zZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfU0VUVElOR1MsIGF3YWl0IHRoaXMubG9hZERhdGEoKSk7XG5cdH1cblxuXHRhc3luYyBzYXZlU2V0dGluZ3MoKSB7XG5cdFx0YXdhaXQgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcblx0fVxufSIsICJpbXBvcnQgeyBOb3RpY2V9IGZyb20gXCJvYnNpZGlhblwiXG5pbXBvcnQgeyBFYXN5VHlwaW5nU2V0dGluZ3MsIFdvcmtNb2RlIH0gZnJvbSAnLi9zZXR0aW5ncydcbmltcG9ydCB7IEFubm90YXRpb24sIEVkaXRvclN0YXRlLCBFeHRlbnNpb24sIFN0YXRlRmllbGQsIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblNwZWMsIFRleHQsIExpbmUgfSBmcm9tICdAY29kZW1pcnJvci9zdGF0ZSc7XG5pbXBvcnQgeyBvZmZzZXRUb1BvcywgcG9zVG9PZmZzZXQsIHN0cmluZ0RlbGV0ZUF0LCBzdHJpbmdJbnNlcnRBdCwgaXNQYXJhbURlZmluZWR9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgeyBzeW50YXhUcmVlIH0gZnJvbSBcIkBjb2RlbWlycm9yL2xhbmd1YWdlXCI7XG5cbmV4cG9ydCBlbnVtIExpbmVUeXBlIHsgdGV4dCA9ICd0ZXh0JywgY29kZWJsb2NrID0gJ2NvZGVibG9jaycsIGZvcm11bGEgPSAnZm9ybXVsYScsIFxuICAgICAgICAgICAgICAgICAgICAgICAgbm9uZSA9ICdub25lJywgZnJvbnRtYXR0ZXI9XCJmcm9udG1hdHRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGU9J3F1b3RlJywgY2FsbG91dF90aXRsZT0nY2FsbG91dF90aXRsZScsIGxpc3Q9J2xpc3QnIH1cblxuZXhwb3J0IGVudW0gU3BhY2VTdGF0ZSB7XG4gICAgbm9uZSxcbiAgICBzb2Z0LFxuICAgIHN0cmljdFxufVxuXG5leHBvcnQgZW51bSBJbmxpbmVUeXBlIHtcbiAgICB0ZXh0ID0gJ3RleHQnLCBjb2RlID0gJ2NvZGUnLCBmb3JtdWxhID0gJ2Zvcm11bGEnLFxuICAgIHdpa2lsaW5rID0gJ3dpa2lsaW5rJywgbWRsaW5rID0gXCJtZGxpbmtcIixcbiAgICB1c2VyID0gJ3VzZXItZGVmaW5lZCcsIG5vbmUgPSAnbm9uZSdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbmxpbmVDaGFuZ2Uge1xuICAgIHRleHQ6IHN0cmluZyxcbiAgICBiZWdpbjogbnVtYmVyLFxuICAgIGVuZDogbnVtYmVyLFxuICAgIG9yaWdpbjogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXJ0aWNsZVBhcnQge1xuICAgIHR5cGU6IExpbmVUeXBlO1xuICAgIGJlZ2luOiBudW1iZXI7XG4gICAgZW5kOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbmxpbmVQYXJ0IHtcbiAgICBjb250ZW50OiBzdHJpbmc7XG4gICAgdHlwZTogSW5saW5lVHlwZTtcbiAgICBiZWdpbjogbnVtYmVyO1xuICAgIGVuZDogbnVtYmVyO1xuICAgIGxlZnRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGU7XG4gICAgcmlnaHRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGU7XG59XG5cbmV4cG9ydCBjbGFzcyBMaW5lRm9ybWF0ZXIge1xuICAgIGNvbnN0cnVjdG9yKCkgeyB9XG4gICAgc3ludGF4VHJlZU5vZGVOYW1lVHlwZShuYW1lOnN0cmluZyk6SW5saW5lVHlwZXtcbiAgICAgICAgaWYobmFtZS5jb250YWlucygnY29kZScpICYmICFuYW1lLmNvbnRhaW5zKFwibGlua1wiKSl7XG4gICAgICAgICAgICByZXR1cm4gSW5saW5lVHlwZS5jb2RlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYobmFtZS5jb250YWlucygnbWF0aCcpKXtcbiAgICAgICAgICAgIHJldHVybiBJbmxpbmVUeXBlLmZvcm11bGE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIHJldHVybiBJbmxpbmVUeXBlLnRleHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBwYXJhbSBsaW5lTnVtOiAxLWJhc2VkIGxpbmUgbnVtYmVyXG4gICAgcGFyc2VMaW5lV2l0aFN5bnRheFRyZWUoc3RhdGU6IEVkaXRvclN0YXRlLCBsaW5lTnVtOm51bWJlciwgcmVnUmVnRXhwPzogc3RyaW5nKXtcbiAgICAgICAgbGV0IGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGE6IElubGluZVBhcnRbXSA9IFtdO1xuICAgICAgICBsZXQgbGluZSA9IHN0YXRlLmRvYy5saW5lKGxpbmVOdW0pO1xuICAgICAgICBjb25zdCB0cmVlID0gc3ludGF4VHJlZShzdGF0ZSk7XG4gICAgICAgIGxldCBwb3MgPSBsaW5lLmZyb207XG4gICAgICAgIGxldCBwcmV2Tm9kZVR5cGU6SW5saW5lVHlwZSA9IElubGluZVR5cGUubm9uZTtcbiAgICAgICAgbGV0IHByZXZCZWdpbklkeCA9IDA7XG4gICAgICAgIHdoaWxlKHBvczxsaW5lLnRvKXtcbiAgICAgICAgICAgIGxldCBub2RlID0gdHJlZS5yZXNvbHZlKHBvcywgMSk7XG4gICAgICAgICAgICBsZXQgY3VyTm9kZVR5cGUgPSB0aGlzLnN5bnRheFRyZWVOb2RlTmFtZVR5cGUobm9kZS5uYW1lKVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZihwcmV2Tm9kZVR5cGU9PUlubGluZVR5cGUubm9uZSl7XG4gICAgICAgICAgICAgICAgcHJldk5vZGVUeXBlPWN1ck5vZGVUeXBlO1xuICAgICAgICAgICAgICAgIHByZXZCZWdpbklkeD0wO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZihwcmV2Tm9kZVR5cGU9PWN1ck5vZGVUeXBlKXt9XG4gICAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgICAgIGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGEucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6bGluZS50ZXh0LnN1YnN0cmluZyhwcmV2QmVnaW5JZHgsIHBvcy1saW5lLmZyb20pLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOnByZXZOb2RlVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46cHJldkJlZ2luSWR4LFxuICAgICAgICAgICAgICAgICAgICBlbmQ6cG9zLWxpbmUuZnJvbSxcbiAgICAgICAgICAgICAgICAgICAgbGVmdFNwYWNlUmVxdWlyZTpTcGFjZVN0YXRlLm5vbmUsXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0U3BhY2VSZXF1aXJlOlNwYWNlU3RhdGUubm9uZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgcHJldk5vZGVUeXBlID0gY3VyTm9kZVR5cGU7XG4gICAgICAgICAgICAgICAgcHJldkJlZ2luSWR4ID0gcG9zLWxpbmUuZnJvbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHVwZGF0ZSBuZXh0IHBvc1xuICAgICAgICAgICAgaWYgKGN1ck5vZGVUeXBlID09IElubGluZVR5cGUudGV4dCl7XG4gICAgICAgICAgICAgICAgcG9zKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgICAgIHBvcyA9IG5vZGUudG87XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmKHBvcz09bGluZS50byl7XG4gICAgICAgICAgICAgICAgbGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDpsaW5lLnRleHQuc3Vic3RyaW5nKHByZXZCZWdpbklkeCwgcG9zLWxpbmUuZnJvbSksXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6cHJldk5vZGVUeXBlLFxuICAgICAgICAgICAgICAgICAgICBiZWdpbjpwcmV2QmVnaW5JZHgsXG4gICAgICAgICAgICAgICAgICAgIGVuZDpwb3MtbGluZS5mcm9tLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0U3BhY2VSZXF1aXJlOlNwYWNlU3RhdGUubm9uZSxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHRTcGFjZVJlcXVpcmU6U3BhY2VTdGF0ZS5ub25lXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcImxpbmUgcGFydHM6IFwiLCBsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhKTtcbiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIGxldCByZXRBcnJheTogSW5saW5lUGFydFtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGFbaV0udHlwZSAhPSBJbmxpbmVUeXBlLnRleHQpIHtcbiAgICAgICAgICAgICAgICByZXRBcnJheS5wdXNoKGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGFbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IHRlbXBBcnJheTogSW5saW5lUGFydFtdO1xuICAgICAgICAgICAgICAgIGlmIChpc1BhcmFtRGVmaW5lZChyZWdSZWdFeHApKVxuICAgICAgICAgICAgICAgICAgICB0ZW1wQXJyYXkgPSBzcGxpdFRleHRXaXRoTGlua0FuZFVzZXJEZWZpbmVkKGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGFbaV0uY29udGVudCwgcmVnUmVnRXhwKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHRlbXBBcnJheSA9IHNwbGl0VGV4dFdpdGhMaW5rQW5kVXNlckRlZmluZWQobGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYVtpXS5jb250ZW50KTtcbiAgICBcbiAgICAgICAgICAgICAgICB0ZW1wQXJyYXkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5iZWdpbiArPSBsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhW2ldLmJlZ2luO1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmVuZCArPSBsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhW2ldLmJlZ2luO1xuICAgICAgICAgICAgICAgICAgICByZXRBcnJheS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHJldEFycmF5KVxuICAgICAgICByZXR1cm4gcmV0QXJyYXk7XG4gICAgfVxuXG4gICAgZm9ybWF0TGluZU9mRG9jKHN0YXRlOiBFZGl0b3JTdGF0ZSwgc2V0dGluZ3M6IEVhc3lUeXBpbmdTZXR0aW5ncywgZnJvbUI6IG51bWJlciwgdG9COiBudW1iZXIsIGluc2VydGVkU3RyOiBzdHJpbmcpOiBbVHJhbnNhY3Rpb25TcGVjW10sIFRyYW5zYWN0aW9uU3BlY10gfCBudWxsIHtcbiAgICAgICAgbGV0IGRvYyA9IHN0YXRlLmRvYztcbiAgICAgICAgbGV0IGxpbmUgPSBkb2MubGluZUF0KGZyb21CKS50ZXh0O1xuICAgICAgICBsZXQgcmVzID0gbnVsbFxuICAgICAgICBpZiAoaW5zZXJ0ZWRTdHIuY29udGFpbnMoXCJcXG5cIikpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJlcyA9IHRoaXMuZm9ybWF0TGluZShzdGF0ZSwgZG9jLmxpbmVBdChmcm9tQikubnVtYmVyLCBzZXR0aW5ncywgb2Zmc2V0VG9Qb3MoZG9jLCBmcm9tQikuY2gsIG9mZnNldFRvUG9zKGRvYywgdG9CLTEpLmNoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJlcyA9IHRoaXMuZm9ybWF0TGluZShzdGF0ZSwgZG9jLmxpbmVBdChmcm9tQikubnVtYmVyLCBzZXR0aW5ncywgb2Zmc2V0VG9Qb3MoZG9jLCB0b0IpLmNoLCBvZmZzZXRUb1Bvcyhkb2MsIGZyb21CKS5jaCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcyA9PT1udWxsIHx8IHJlc1syXS5sZW5ndGg9PTApIHJldHVybiBudWxsO1xuICAgICAgICBcbiAgICAgICAgbGV0IG5ld2xpbmUgPSBzdHJpbmdJbnNlcnRBdChyZXNbMF0sIHJlc1sxXSwgXCJ8XCIpO1xuICAgICAgICAvLyBpZiAoc2V0dGluZ3MuZGVidWcpIGNvbnNvbGUubG9nKFwiRWFzeVR5cGluZzogTmV3IExpbmUgU3RyaW5nOlwiLCBuZXdsaW5lKVxuXG4gICAgICAgIGxldCBjaGFuZ2VzOiBUcmFuc2FjdGlvblNwZWNbXSA9IFtdO1xuICAgICAgICBsZXQgb2Zmc2V0ID0gZG9jLmxpbmVBdChmcm9tQikuZnJvbTtcblxuICAgICAgICBmb3IobGV0IGNoYW5nZUl0ZW0gb2YgcmVzWzJdKVxuICAgICAgICB7XG4gICAgICAgICAgICBjaGFuZ2VzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNoYW5nZXM6e2Zyb206IG9mZnNldCtjaGFuZ2VJdGVtLmJlZ2luLCB0bzpvZmZzZXQrY2hhbmdlSXRlbS5lbmQsIGluc2VydDpjaGFuZ2VJdGVtLnRleHR9LCB1c2VyRXZlbnQ6XCJFYXN5VHlwaW5nLmNoYW5nZVwiXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIGlmIChpbnNlcnRlZFN0ci5jb250YWlucyhcIlxcblwiKSl7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImluc2VydFN0clwiLCBpbnNlcnRlZFN0cilcbiAgICAgICAgICAgIHJlc1sxXSs9IGluc2VydGVkU3RyLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW2NoYW5nZXMsIHtzZWxlY3Rpb246e2FuY2hvcjpvZmZzZXQrcmVzWzFdfSwgdXNlckV2ZW50OlwiRWFzeVR5cGluZy5jaGFuZ2VcIn1dO1xuICAgIH1cblxuICAgIC8vIFx1OEZENFx1NTZERVx1NTAzQ1x1RkYxQSBbXHU2NzAwXHU3RUM4XHU3Njg0XHU4ODRDXHVGRjBDXHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXHVGRjBDXHU1MTg1XHU1QkI5XHU2NTM5XHU1M0Q4XVxuICAgIC8vIHBhcmFtIGxpbmVOdW06IDEtYmFzZWQgbGluZSBudW1iZXJcbiAgICBmb3JtYXRMaW5lKHN0YXRlOiBFZGl0b3JTdGF0ZSwgbGluZU51bTpudW1iZXIsIHNldHRpbmdzOiBFYXN5VHlwaW5nU2V0dGluZ3MsIGN1ckNoOiBudW1iZXIsIHByZXZDaD86IG51bWJlcik6IFtzdHJpbmcsIG51bWJlciwgSW5saW5lQ2hhbmdlW11dIHwgbnVsbCB7XG4gICAgICAgIC8vIG5ldyBOb3RpY2UoXCJmb3JtYXQtbm93XCIpO1xuICAgICAgICBsZXQgbGluZSA9IHN0YXRlLmRvYy5saW5lKGxpbmVOdW0pLnRleHQ7XG4gICAgICAgIGxldCByZWdOdWxsID0gL15cXHMqJC9nO1xuICAgICAgICBpZiAocmVnTnVsbC50ZXN0KGxpbmUpKSByZXR1cm4gW2xpbmUsIGN1ckNoLCBbXV07XG4gICAgICAgIC8vIDEuIFx1NTIxMlx1NTIwNlx1NEUwMFx1ODg0Q1x1NjU4N1x1NUI1N1x1NzY4NFx1NTE4NVx1OTBFOFx1NEUwRFx1NTQwQ1x1NkEyMVx1NTc1N1x1NTMzQVx1NTdERlxuICAgICAgICBsZXQgbGluZVBhcnRzOiBJbmxpbmVQYXJ0W107XG4gICAgICAgIGlmIChzZXR0aW5ncy5Vc2VyRGVmaW5lZFJlZ1N3aXRjaCkge1xuICAgICAgICAgICAgLy8gbGluZVBhcnRzID0gdGhpcy5wYXJzZUxpbmUobGluZSwgc2V0dGluZ3MuVXNlckRlZmluZWRSZWdFeHApO1xuICAgICAgICAgICAgbGluZVBhcnRzID0gdGhpcy5wYXJzZUxpbmVXaXRoU3ludGF4VHJlZShzdGF0ZSwgbGluZU51bSwgc2V0dGluZ3MuVXNlckRlZmluZWRSZWdFeHApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gbGluZVBhcnRzID0gdGhpcy5wYXJzZUxpbmUobGluZSk7XG4gICAgICAgICAgICBsaW5lUGFydHMgPSB0aGlzLnBhcnNlTGluZVdpdGhTeW50YXhUcmVlKHN0YXRlLCBsaW5lTnVtKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiAoc2V0dGluZ3MuZGVidWcpIGNvbnNvbGUubG9nKFwibGluZSBwYXJ0c1xcblwiLCBsaW5lUGFydHMpO1xuXG4gICAgICAgIC8vIFx1NTkwN1x1NEVGRFx1NTM5Rlx1Njc2NVx1NzY4NGxpbmVQYXJ0cywgXHU2REYxXHU2MkY3XHU4RDFEXG4gICAgICAgIGxldCBsaW5lUGFydHNPcmlnaW4gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGxpbmVQYXJ0cykpO1xuICAgICAgICBsZXQgaW5saW5lQ2hhbmdlTGlzdDogSW5saW5lQ2hhbmdlW10gPSBbXTtcblxuICAgICAgICBsZXQgY3Vyc29yTGluZVBhcnRJbmRleCA9IC0xO1xuICAgICAgICBsZXQgY3Vyc29yUmVsYXRpdmVJbmRleCA9IC0xO1xuICAgICAgICBsZXQgcmVzdWx0Q3Vyc29yQ2ggPSAwOyAgICAgLy8gXHU4RjkzXHU1MUZBXHU3Njg0XHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXG5cbiAgICAgICAgLy8gMi4gXHU2MjdFXHU1MjMwXHU1MTQ5XHU2ODA3XHU2MjQwXHU1NzI4XHU3Njg0XHU5MEU4XHU1MjA2XHVGRjBDXHU1OTgyXHU2NzlDXHU2NjJGIElubGluZVBhcnQudGV4dFx1RkYwQ1x1NTIxOVx1NTcyOFx1NTE0OVx1NjgwN1x1NTkwNFx1NjNEMlx1NTE2NSdcXDAnXHU2NzY1XHU2ODA3XHU4QkIwXHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZVBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoY3VyQ2ggPiBsaW5lUGFydHNbaV0uYmVnaW4gJiYgY3VyQ2ggPD0gbGluZVBhcnRzW2ldLmVuZCkge1xuICAgICAgICAgICAgICAgIGN1cnNvckxpbmVQYXJ0SW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGN1cnNvclJlbGF0aXZlSW5kZXggPSBjdXJDaCAtIGxpbmVQYXJ0c1tpXS5iZWdpbjtcbiAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ldLnR5cGUgPT09IElubGluZVR5cGUudGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9IHN0cmluZ0luc2VydEF0KGxpbmVQYXJ0c1tpXS5jb250ZW50LCBjdXJzb3JSZWxhdGl2ZUluZGV4LCAnXFwwJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCByZXN1bHRMaW5lID0gJyc7XG4gICAgICAgIGxldCBvZmZzZXQgPSAwO1xuICAgICAgICAvLyBcdTRGRERcdTVCNThcdTUyNERcdTRFMDBcdTkwRThcdTUyMDZcdTc2ODRcdTUzM0FcdTU3NTdcdTdDN0JcdTU3OEJcdUZGMENJbmxpbmVUeXBlLm5vbmUgXHU0RUUzXHU4ODY4XHU0RTAwXHU4ODRDXHU3Njg0XHU1RjAwXHU1OUNCXG4gICAgICAgIGxldCBwcmV2UGFydFR5cGU6IHN0cmluZyA9IElubGluZVR5cGUubm9uZTtcbiAgICAgICAgbGV0IHByZXZUZXh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUubm9uZTtcblxuICAgICAgICAvLyAzLiBcdTkwNERcdTUzODZcdTZCQ0ZcdTRFMkFcdTg4NENcdTkwRThcdTUyMDZcdUZGMENcdThGREJcdTg4NENcdTY4M0NcdTVGMEZcdTUzMTZcdTU5MDRcdTc0MDZcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lUGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIC8vIDMuMSBcdTU5ODJcdTY3OUNcdTg4NENcdTUxODVcdTdCMkNcdTRFMDBcdTkwRThcdTUyMDZcdTRFM0FcdTY1ODdcdTY3MkNcdUZGMENcdTUyMTlcdTU5MDRcdTc0MDZcdTUzRTVcdTk5OTZcdTVCNTdcdTZCQ0RcdTU5MjdcdTUxOTlcdTc2ODRcdTkwRThcdTUyMDZcbiAgICAgICAgICAgIGlmIChpID09PSAwICYmIGxpbmVQYXJ0c1tpXS50eXBlID09PSBJbmxpbmVUeXBlLnRleHQgJiYgc2V0dGluZ3MuQXV0b0NhcGl0YWwpIHtcbiAgICAgICAgICAgICAgICAvLyAzLjEuMSBcdTU5ODJcdTY3OUMgcHJldkN1cnNvciBcdTRFMTRcdTUxNDlcdTY4MDdcdTRFMERcdTU3MjhcdTZCNjRcdTkwRThcdTUyMDZcdUZGMENcdTUyMTlcdThERjNcdThGQzdcbiAgICAgICAgICAgICAgICBpZiAoaXNQYXJhbURlZmluZWQocHJldkNoKSAmJiBjdXJzb3JMaW5lUGFydEluZGV4ICE9IDApIHsgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVnRmlyc3RTZW50ZW5jZSA9IC9eXFxzKihcXC0gKFxcW1t4IF1cXF0gKT8pP1x1MjAxQz9bYS16XFx1MDQwMVxcdTA0NTFcXHUwNDEwLVxcdTA0NGZdL2c7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWdIZWFkZXJTZW50ZW5jZSA9IC9eKCMrIHw+KyA/fFx1MjAxQylbYS16XFx1MDQwMVxcdTA0NTFcXHUwNDEwLVxcdTA0NGZdL2c7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZXh0Y29weSA9IGxpbmVQYXJ0c1swXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSByZWdGaXJzdFNlbnRlbmNlLmV4ZWModGV4dGNvcHkpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2hIZWFkZXIgPSByZWdIZWFkZXJTZW50ZW5jZS5leGVjKHRleHRjb3B5KTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRzdENoYXJJbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRzdENoYXJJbmRleCA9IHJlZ0ZpcnN0U2VudGVuY2UubGFzdEluZGV4IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtYXRjaEhlYWRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZHN0Q2hhckluZGV4ID0gcmVnSGVhZGVyU2VudGVuY2UubGFzdEluZGV4IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5BdXRvQ2FwaXRhbE1vZGUgPT0gV29ya01vZGUuR2xvYmFsbHkgfHwgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgZHN0Q2hhckluZGV4ID49IHByZXZDaCAmJiBkc3RDaGFySW5kZXggPCBjdXJDaCkpIHsgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRzdENoYXJJbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRzdENoYXJJbmRleCAhPSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbMF0uY29udGVudCA9IHRleHRjb3B5LnN1YnN0cmluZygwLCBkc3RDaGFySW5kZXgpICsgdGV4dGNvcHkuY2hhckF0KGRzdENoYXJJbmRleCkudG9VcHBlckNhc2UoKSArIHRleHRjb3B5LnN1YnN0cmluZyhkc3RDaGFySW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3dpdGNoIChsaW5lUGFydHNbaV0udHlwZSkge1xuICAgICAgICAgICAgICAgIC8vIDMuMi4xIFx1NTkwNFx1NzQwNlx1NjU4N1x1NjcyQ1x1NTMzQVx1NTc1N1xuICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS50ZXh0OlxuICAgICAgICAgICAgICAgICAgICBsZXQgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjQgXHU1OTA0XHU3NDA2XHU1M0U1XHU5OTk2XHU1QjU3XHU2QkNEXHU1OTI3XHU1MTk5XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5BdXRvQ2FwaXRhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZyA9IC9bXFwuXFw/XFwhXHUzMDAyXHVGRjAxXHVGRjFGXShbXFxzXSopW2EtelxcdTA0MDFcXHUwNDUxXFx1MDQxMC1cXHUwNDRmXS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSByZWcuZXhlYyhjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEluZGV4ID0gcmVnLmxhc3RJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJwcmV2Q2gsIGN1ckNoLCBvZmZzZXQsIHRlbXBJbmRleFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHByZXZDaCwgY3VyQ2gsIG9mZnNldCwgdGVtcEluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc1NwYWNlRG90ID0gdGVtcEluZGV4LTI8MCB8fCBjb250ZW50LnN1YnN0cmluZyh0ZW1wSW5kZXgtMiwgdGVtcEluZGV4KT09JyAuJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuQXV0b0NhcGl0YWxNb2RlID09IFdvcmtNb2RlLkdsb2JhbGx5ICYmICFpc1NwYWNlRG90KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIGNvbnRlbnQuY2hhckF0KHRlbXBJbmRleCkudG9VcHBlckNhc2UoKSArIGNvbnRlbnQuc3Vic3RyaW5nKHJlZy5sYXN0SW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgdGVtcEluZGV4ID49IHByZXZDaCAtIG9mZnNldCAmJiB0ZW1wSW5kZXggPCBjdXJDaCAtIG9mZnNldCAmJiAhaXNTcGFjZURvdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKDAsIHRlbXBJbmRleCkgKyBjb250ZW50LmNoYXJBdCh0ZW1wSW5kZXgpLnRvVXBwZXJDYXNlKCkgKyBjb250ZW50LnN1YnN0cmluZyhyZWcubGFzdEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSAgIFxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRleHQuMSBcdTU5MDRcdTc0MDZcdTRFMkRcdTgyRjFcdTY1ODdcdTRFNEJcdTk1RjRcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLkNoaW5lc2VFbmdsaXNoU3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWcxID0gLyhbQS1aYS16XSkoW1xcdTRlMDAtXFx1OWZhNV0pL2dpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZzIgPSAvKFtcXHU0ZTAwLVxcdTlmYTVdKShbQS1aYS16XSkvZ2k7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShyZWcxLCBcIiQxICQyXCIpLnJlcGxhY2UocmVnMiwgXCIkMSAkMlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5DaGluZXNlTnVtYmVyU3BhY2Upe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZyA9IC8oWzAtOV0pKFtcXHU0ZTAwLVxcdTlmYTVdKS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSByZWcuZXhlYyhjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEluZGV4ID0gcmVnLmxhc3RJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgdGVtcEluZGV4ID49IHByZXZDaCAtIG9mZnNldCAmJiB0ZW1wSW5kZXggPCBjdXJDaCAtIG9mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIFwiIFwiICsgY29udGVudC5zdWJzdHJpbmcodGVtcEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyQ2ggKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnMSA9IC8oW1xcdTRlMDAtXFx1OWZhNV0pKFswLTldKS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSByZWcxLmV4ZWMoY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXBJbmRleCA9IHJlZzEubGFzdEluZGV4IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQYXJhbURlZmluZWQocHJldkNoKSAmJiB0ZW1wSW5kZXggPj0gcHJldkNoIC0gb2Zmc2V0ICYmIHRlbXBJbmRleCA8IGN1ckNoIC0gb2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZygwLCB0ZW1wSW5kZXgpICsgXCIgXCIgKyBjb250ZW50LnN1YnN0cmluZyh0ZW1wSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJDaCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5FbmdsaXNoTnVtYmVyU3BhY2Upe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZyA9IC8oW0EtWmEtel0pKFxcZCkvZztcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoID0gcmVnLmV4ZWMoY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXBJbmRleCA9IHJlZy5sYXN0SW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1BhcmFtRGVmaW5lZChwcmV2Q2gpICYmIHRlbXBJbmRleCA+PSBwcmV2Q2ggLSBvZmZzZXQgJiYgdGVtcEluZGV4IDwgY3VyQ2ggLSBvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKDAsIHRlbXBJbmRleCkgKyBcIiBcIiArIGNvbnRlbnQuc3Vic3RyaW5nKHRlbXBJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckNoICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZzEgPSAvKFxcZCkoW0EtWmEtel0pL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaCA9IHJlZzEuZXhlYyhjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEluZGV4ID0gcmVnMS5sYXN0SW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1BhcmFtRGVmaW5lZChwcmV2Q2gpICYmIHRlbXBJbmRleCA+PSBwcmV2Q2ggLSBvZmZzZXQgJiYgdGVtcEluZGV4IDwgY3VyQ2ggLSBvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKDAsIHRlbXBJbmRleCkgKyBcIiBcIiArIGNvbnRlbnQuc3Vic3RyaW5nKHRlbXBJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckNoICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVGV4dC4yIFx1NTkwNFx1NzQwNlx1NEUyRFx1NjU4N1x1OTVGNFx1NjVFMFx1N0E3QVx1NjgzQ1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuQ2hpbmVzZU5vU3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWcgPSAvKFtcXHU0ZTAwLVxcdTlmYTVcdUZGMENcdTMwMDJcdTMwMDFcdUZGMUJcdTIwMThcdTIwMTlcdTMwMEFcdTMwMEJdKykoXFxzKykoW1xcdTRlMDAtXFx1OWZhNVx1RkYwQ1x1MzAwMlx1MzAwMVx1RkYxQlx1MjAxOFx1MjAxOVx1MzAwQVx1MzAwQl0rKS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHJlZy5leGVjKGNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UocmVnLCBcIiQxJDNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gXHU2ODA3XHU3MEI5XHU0RTBFXHU2NTg3XHU2NzJDXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5QdW5jdHVhdGlvblNwYWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjMgXHU1OTA0XHU3NDA2XHU2ODA3XHU3MEI5XHU0RTBFXHU2NTg3XHU2NzJDXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZihzZXR0aW5ncy5FbmdsaXNoU3BhY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZyA9IC8oWyxcXC47XFw/XFwhXFwpXSkoWzAtOUEtWmEtelxcdTA0MDFcXHUwNDUxXFx1MDQxMC1cXHUwNDRmXSl8KFtBLVphLXowLTlcXHU0ZTAwLVxcdTlmYTU6LFxcLlxcP1xcISdcIl0rKShcXCgpfFssXFwuO1xcPzohXVtcXHU0ZTAwLVxcdTlmYTVdL2dpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaCA9IHJlZy5leGVjKGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXBJbmRleCA9IHJlZy5sYXN0SW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNTcGFjZURvdCA9ICchLj87LCcuY29udGFpbnMoY29udGVudC5jaGFyQXQodGVtcEluZGV4LTEpKSAmJiAodGVtcEluZGV4LTI8MCB8fCBjb250ZW50LmNoYXJBdCh0ZW1wSW5kZXgtMik9PScgJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc051bVB1bmNOdW0gPSAvWywuXVxcZC8udGVzdChjb250ZW50LnN1YnN0cmluZyh0ZW1wSW5kZXgtMSwgdGVtcEluZGV4KzEpKSAmJiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGVtcEluZGV4LTI8MCB8fCAvXFxkLy50ZXN0KGNvbnRlbnQuY2hhckF0KHRlbXBJbmRleC0yKSkpXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2VNb2RlID09IFdvcmtNb2RlLkdsb2JhbGx5ICYmICFpc1NwYWNlRG90ICYmICFpc051bVB1bmNOdW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZygwLCB0ZW1wSW5kZXgpICsgXCIgXCIgKyBjb250ZW50LnN1YnN0cmluZyh0ZW1wSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgdGVtcEluZGV4ID49IHByZXZDaCAtIG9mZnNldCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0ZW1wSW5kZXggPCBjdXJDaCAtIG9mZnNldCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhaXNTcGFjZURvdCAmJiAhaXNOdW1QdW5jTnVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIFwiIFwiICsgY29udGVudC5zdWJzdHJpbmcodGVtcEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckNoICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBcdTUzNTVcdTcyRUNcdTU5MDRcdTc0MDZcdTUxOTJcdTUzRjdcdTU0MEVcdTY1ODdcdTY3MkNcdTc2ODRcdTgxRUFcdTUyQThcdTdBN0FcdTY4M0NcdUZGMENcdTRFM0FcdTRFODZcdTUxN0NcdTVCQjkgOmVtb2ppOiBcdTY4M0NcdTVGMEZcdTc2ODRcdThGOTNcdTUxNjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnMiA9IC8oOikoW0EtWmEtejAtOV9dK1sgLFxcLlxcP1xcXFxcXC87J1wiXHVGRjBDXHUzMDAyXHVGRjFGXHVGRjFCXHUyMDE4XHUyMDFDXHUyMDFEXHUyMDE5XHUzMDAxXFxbXFxdXFwtXFx7XFx9XSkvZ2k7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UocmVnMiwgXCIkMSAkMlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnMyA9IC8oOikoW1wiJ10pL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UocmVnMywgXCIkMSAkMlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjcgXHU1Rjk3XHU1MjMwXHU2NTg3XHU2NzJDXHU5MEU4XHU1MjA2XHU2NjJGXHU1NDI2XHU0RUU1XHU3QTdBXHU3NjdEXHU3QjI2XHU1RjAwXHU1OUNCXHU2MjE2XHU3RUQzXHU2NzVGXHVGRjBDXHU3NTI4XHU2NzY1XHU1MjI0XHU2NUFEXHU1NDBFXHU3RUVEXHU2NTg3XHU2NzJDXHU1MjREXHU1NDBFXHU2NjJGXHU1NDI2XHU5NzAwXHU4OTgxXHU2REZCXHU1MkEwXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgIGxldCByZWdTdHJpY3RTcGFjZVN0YXJ0ID0gL15cXDA/XFxzLztcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ1N0cmljdFNwYWNlRW5kID0gL1xcc1xcMD8kLztcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ1N0YXJ0V2l0aFNwYWNlID0gL15cXDA/W1xccyxcXC47XFw/XFwhXHVGRjBDXHUzMDAyXHVGRjFCXHUzMDBCXHVGRjFGXHVGRjFBOlx1RkYwMX5cXCpcdTMwMDFcdUZGMDhcdUZGMDlcIlx1MjAxRFxcXVxcKVxcfV0vO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVnRW5kV2l0aFNwYWNlID0gL1tcXHNcdUZGMENcdTMwMDJcdTMwMDFcdUZGMUFcdUZGMUJcdUZGMUZcdUZGMDFcdUZGMDhcdUZGMDl+XFwqXCJcdTMwMEFcdTIwMUNcXFtcXChcXHtdXFwwPyQvO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdHh0U3RhcnRTcGFjZVNhdGUgPSBTcGFjZVN0YXRlLm5vbmU7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0eHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVnU3RhcnRXaXRoU3BhY2UudGVzdChjb250ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlZ1N0cmljdFNwYWNlU3RhcnQudGVzdChjb250ZW50KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eHRTdGFydFNwYWNlU2F0ZSA9IFNwYWNlU3RhdGUuc3RyaWN0XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHh0U3RhcnRTcGFjZVNhdGUgPSBTcGFjZVN0YXRlLnNvZnRcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWdFbmRXaXRoU3BhY2UudGVzdChjb250ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlZ1N0cmljdFNwYWNlRW5kLnRlc3QoY29udGVudCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUuc3RyaWN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4dEVuZFNwYWNlU3RhdGUgPSBTcGFjZVN0YXRlLnNvZnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjggXHU2ODM5XHU2MzZFXHU1MjREXHU0RTAwXHU5MEU4XHU1MjA2XHU3Njg0XHU1MzNBXHU1NzU3XHU3QzdCXHU1NzhCXHU1OTA0XHU3NDA2XHU3QTdBXHU2ODNDXHU2REZCXHU1MkEwXHU3Njg0XHU5NUVFXHU5ODk4XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocHJldlBhcnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubm9uZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5jb2RlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlID4gdHh0U3RhcnRTcGFjZVNhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSAnICcgKyBjb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmZvcm11bGE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUZvcm11bGFTcGFjZU1vZGUgPiB0eHRTdGFydFNwYWNlU2F0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9ICcgJyArIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUud2lraWxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubWRsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2V0dGluZ3MuSW5saW5lTGlua1NtYXJ0U3BhY2UgJiYgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZSA+IHR4dFN0YXJ0U3BhY2VTYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gJyAnICsgY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU21hcnRTcGFjZSAmJiB0eHRTdGFydFNwYWNlU2F0ZSA9PSBTcGFjZVN0YXRlLm5vbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoYXJBdFRleHRCZWdpbiA9IGNvbnRlbnQuY2hhckF0KDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnTWRMaW5rRW5kID0gL1xcXS87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyQXRMaW5rRW5kSW5kZXggPSBsaW5lUGFydHNbaSAtIDFdLmNvbnRlbnQuc2VhcmNoKHJlZ01kTGlua0VuZCkgLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hhckF0TGlua0VuZCA9IGxpbmVQYXJ0c1tpIC0gMV0uY29udGVudC5jaGFyQXQoY2hhckF0TGlua0VuZEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJBdExpbmtFbmQgPT09ICdbJykgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0d29OZWlnaGJvckNoYXJzID0gY2hhckF0TGlua0VuZCArIGNoYXJBdFRleHRCZWdpbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ05vdE5lZWRTcGFjZSA9IC9bXFx1NGUwMC1cXHU5ZmE1XHVGRjBDXHUzMDAyXHVGRjFGXHVGRjFBXHVGRjFCXHUyMDFEXHUyMDFDXHUyMDE5XHUyMDE4LVx1RkYwOX1dW1xcdTRlMDAtXFx1OWZhNV0vZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWdOb3ROZWVkU3BhY2UudGVzdCh0d29OZWlnaGJvckNoYXJzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSAnICcgKyBjb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnVzZXI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpIC0gMV0ucmlnaHRTcGFjZVJlcXVpcmUgPiB0eHRTdGFydFNwYWNlU2F0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9ICcgJyArIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjkgXHU1OTgyXHU2NzlDXHU1MTQ5XHU2ODA3XHU1NzI4XHU4QkU1XHU1MzNBXHU1NzU3XHVGRjBDXHU1MjE5XHU4QkExXHU3Qjk3XHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU3Njg0XHU0RjREXHU3RjZFXG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSBjdXJzb3JMaW5lUGFydEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnID0gJ1xcMCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbiA9IGNvbnRlbnQuc2VhcmNoKHJlZylcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEN1cnNvckNoID0gb2Zmc2V0ICsgbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFx1NTIyMFx1OTY2NCBcXDBcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gc3RyaW5nRGVsZXRlQXQoY29udGVudCwgbik7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBwcmV2UGFydFR5cGUgPSBJbmxpbmVUeXBlLnRleHQ7XG4gICAgICAgICAgICAgICAgICAgIHByZXZUZXh0RW5kU3BhY2VTdGF0ZSA9IHR4dEVuZFNwYWNlU3RhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIDMuMi4yIFx1NTkwNFx1NzQwNlx1ODg0Q1x1NTE4NVx1NEVFM1x1NzgwMVx1NTc1N1x1OTBFOFx1NTIwNlxuICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5jb2RlOlxuICAgICAgICAgICAgICAgICAgICAvLyBDb2RlLjEgXHU2ODM5XHU2MzZFXHU1MjREXHU0RTAwXHU1MzNBXHU1NzU3XHU3QzdCXHU1NzhCXHU1NDhDc2V0dGluZ3NcdTZERkJcdTUyQTBcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHByZXZQYXJ0VHlwZSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm5vbmU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudGV4dDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZSA+IHByZXZUZXh0RW5kU3BhY2VTdGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpLTFdLmNvbnRlbnQgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmNvZGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuZm9ybXVsYTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgfHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLklubGluZUZvcm11bGFTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubWRsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLndpa2lsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS51c2VyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5yaWdodFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBDb2RlLjIgXHU1OTgyXHU2NzlDXHU1MTQ5XHU2ODA3XHU1NzI4XHU4QkU1XHU1MzNBXHU1NzU3XHVGRjBDXHU1MjE5XHU4QkExXHU3Qjk3XHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU3Njg0XHU0RjREXHU3RjZFXG4gICAgICAgICAgICAgICAgICAgIGlmKGkgPT09IGN1cnNvckxpbmVQYXJ0SW5kZXgpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEN1cnNvckNoID0gb2Zmc2V0ICsgY3Vyc29yUmVsYXRpdmVJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBDb2RlLjMgXHU1M0Q4XHU5MUNGXHU2NkY0XHU2NUIwXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBsaW5lUGFydHNbaV0uY29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHByZXZQYXJ0VHlwZSA9IElubGluZVR5cGUuY29kZTtcbiAgICAgICAgICAgICAgICAgICAgcHJldlRleHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvLyAzLjIuMyBcdTU5MDRcdTc0MDZcdTg4NENcdTUxODVcdTUxNkNcdTVGMEZcdTc2ODRcdTkwRThcdTUyMDZcbiAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuZm9ybXVsYTpcbiAgICAgICAgICAgICAgICAgICAgLy8gRm9ybXVsYS4xIFx1NjgzOVx1NjM2RVx1NTI0RFx1NEUwMFx1NTMzQVx1NTc1N1x1N0M3Qlx1NTc4Qlx1NTQ4Q3NldHRpbmdzXHU2REZCXHU1MkEwXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaChwcmV2UGFydFR5cGUpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5ub25lOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnRleHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUZvcm11bGFTcGFjZU1vZGU+cHJldlRleHRFbmRTcGFjZVN0YXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ktMV0uY29udGVudCArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuY29kZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5mb3JtdWxhOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm1kbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS53aWtpbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgfHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudXNlcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ktMV0ucmlnaHRTcGFjZVJlcXVpcmU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gRm9ybXVsYS4yIFx1NTk4Mlx1Njc5Q1x1NTE0OVx1NjgwN1x1NTcyOFx1OEJFNVx1NTMzQVx1NTc1N1x1RkYwQ1x1NTIxOVx1OEJBMVx1N0I5N1x1NjcwMFx1N0VDOFx1NTE0OVx1NjgwN1x1NzY4NFx1NEY0RFx1N0Y2RVxuICAgICAgICAgICAgICAgICAgICBpZihpID09PSBjdXJzb3JMaW5lUGFydEluZGV4KVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRDdXJzb3JDaCA9IG9mZnNldCArIGN1cnNvclJlbGF0aXZlSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gRm9ybXVsYS4zIFx1NTNEOFx1OTFDRlx1NjZGNFx1NjVCMFxuICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBwcmV2UGFydFR5cGUgPSBJbmxpbmVUeXBlLmZvcm11bGE7XG4gICAgICAgICAgICAgICAgICAgIHByZXZUZXh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUubm9uZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubWRsaW5rOlxuICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS53aWtpbGluazpcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHByZXZQYXJ0VHlwZSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm5vbmU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudGV4dDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJldlRleHRFbmRTcGFjZVN0YXRlPnNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGUpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPT1TcGFjZVN0YXRlLnN0cmljdCAmJiBwcmV2VGV4dEVuZFNwYWNlU3RhdGU8U3BhY2VTdGF0ZS5zdHJpY3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5jb250ZW50ICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU21hcnRTcGFjZSAmJiBwcmV2VGV4dEVuZFNwYWNlU3RhdGU9PVNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWdOb05lZWRTcGFjZSA9IC9bXFx1NGUwMC1cXHU5ZmE1XVtcXHU0ZTAwLVxcdTlmYTVdL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyQXRUZXh0RW5kID0gbGluZVBhcnRzW2ktMV0uY29udGVudC5jaGFyQXQobGluZVBhcnRzW2ktMV0uY29udGVudC5sZW5ndGgtMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyQXRMaW5rQmVnaW46c3RyaW5nID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpXS50eXBlPT1JbmxpbmVUeXBlLndpa2lsaW5rKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnQWxpYXMgPSAvXFx8LztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyT2ZBbGlhc0JlZ2luID0gbGluZVBhcnRzW2ldLmNvbnRlbnQuc2VhcmNoKHJlZ0FsaWFzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiY2hhck9mQWxpYXNCZWdpblwiLGNoYXJPZkFsaWFzQmVnaW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmVnaW5JbmRleCA9IDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihsaW5lUGFydHNbaV0uY29udGVudC5jaGFyQXQoMCk9PT0nIScpIGJlZ2luSW5kZXg9MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGFyT2ZBbGlhc0JlZ2luIT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbkluZGV4ID0gY2hhck9mQWxpYXNCZWdpbisxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhckF0TGlua0JlZ2luID0gbGluZVBhcnRzW2ldLmNvbnRlbnQuY2hhckF0KGJlZ2luSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJiZWdpbkluZGV4XCIsIGJlZ2luSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2hhckF0TGlua0JlZ2luPT0nXScpIGJyZWFrOyAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ01kTGlua0JlZ2luID0gL1xcWy87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hhckF0TGlua0JlZ2luSW5kZXggPSBsaW5lUGFydHNbaV0uY29udGVudC5zZWFyY2gocmVnTWRMaW5rQmVnaW4pKzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyQXRMaW5rQmVnaW4gPSBsaW5lUGFydHNbaV0uY29udGVudC5jaGFyQXQoY2hhckF0TGlua0JlZ2luSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2hhckF0TGlua0JlZ2luPT09J10nKSBicmVhazsgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0d29OZWlnaGJvckNoYXJzID0gY2hhckF0VGV4dEVuZCtjaGFyQXRMaW5rQmVnaW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFyZWdOb05lZWRTcGFjZS50ZXN0KHR3b05laWdoYm9yQ2hhcnMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5jb250ZW50ICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZighc2V0dGluZ3MuSW5saW5lTGlua1NtYXJ0U3BhY2UgJiYgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5wcmV2VGV4dEVuZFNwYWNlU3RhdGUpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5jb250ZW50ICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5jb2RlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmZvcm11bGE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5tZGxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUud2lraWxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudXNlcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ktMV0ucmlnaHRTcGFjZVJlcXVpcmU+U3BhY2VTdGF0ZS5ub25lfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBMaW5rLjIgXHU1OTgyXHU2NzlDXHU4QkU1XHU1MzNBXHU1NzU3XHU2NzA5XHU1MTQ5XHU2ODA3XHVGRjBDXHU1MjE5XHU4QkExXHU3Qjk3XHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXG4gICAgICAgICAgICAgICAgICAgIGlmKGkgPT09IGN1cnNvckxpbmVQYXJ0SW5kZXgpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEN1cnNvckNoID0gb2Zmc2V0ICsgY3Vyc29yUmVsYXRpdmVJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBMaW5rLjMgXHU2NkY0XHU2NUIwXHU1M0Q4XHU5MUNGXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBsaW5lUGFydHNbaV0uY29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHByZXZQYXJ0VHlwZSA9IGxpbmVQYXJ0c1tpXS50eXBlO1xuICAgICAgICAgICAgICAgICAgICBwcmV2VGV4dEVuZFNwYWNlU3RhdGUgPSBTcGFjZVN0YXRlLm5vbmU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIDMuMi41IFx1NTkwNFx1NzQwNlx1NzUyOFx1NjIzN1x1ODFFQVx1NUI5QVx1NEU0OVx1NTMzQVx1NTc1N1x1NzY4NFx1OTBFOFx1NTIwNlxuICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS51c2VyOlxuICAgICAgICAgICAgICAgICAgICAvLyBVc2VyLjEgXHU2ODM5XHU2MzZFXHU1MjREXHU0RTAwXHU1MzNBXHU1NzU3XHU3QzdCXHU1NzhCXHU1NDhDc2V0dGluZ3NcdTZERkJcdTUyQTBcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHByZXZQYXJ0VHlwZSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm5vbmU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudGV4dDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ldLmxlZnRTcGFjZVJlcXVpcmU+cHJldlRleHRFbmRTcGFjZVN0YXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ktMV0uY29udGVudCArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuY29kZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ldLmxlZnRTcGFjZVJlcXVpcmU+U3BhY2VTdGF0ZS5ub25lfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5mb3JtdWxhOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lUGFydHNbaV0ubGVmdFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmV8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm1kbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS53aWtpbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ldLmxlZnRTcGFjZVJlcXVpcmU+U3BhY2VTdGF0ZS5ub25lfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS51c2VyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lUGFydHNbaV0ubGVmdFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmV8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5yaWdodFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBVc2VyLjIgXHU1OTgyXHU2NzlDXHU4QkU1XHU1MzNBXHU1NzU3XHU2NzA5XHU1MTQ5XHU2ODA3XHVGRjBDXHU1MjE5XHU4QkExXHU3Qjk3XHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXG4gICAgICAgICAgICAgICAgICAgIGlmKGkgPT09IGN1cnNvckxpbmVQYXJ0SW5kZXgpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEN1cnNvckNoID0gb2Zmc2V0ICsgY3Vyc29yUmVsYXRpdmVJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBMaW5rLjMgXHU2NkY0XHU2NUIwXHU1M0Q4XHU5MUNGXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBsaW5lUGFydHNbaV0uY29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHByZXZQYXJ0VHlwZSA9IElubGluZVR5cGUudXNlcjtcbiAgICAgICAgICAgICAgICAgICAgcHJldlRleHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvcihsZXQgaT0wO2k8bGluZVBhcnRzLmxlbmd0aDtpKyspXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmKGxpbmVQYXJ0c1tpXS50eXBlID09PSBJbmxpbmVUeXBlLnRleHQgJiYgbGluZVBhcnRzW2ldLmNvbnRlbnQhPWxpbmVQYXJ0c09yaWdpbltpXS5jb250ZW50KVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogbGluZVBhcnRzW2ldLmNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzT3JpZ2luW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNPcmlnaW5baV0uZW5kLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOiBsaW5lUGFydHNPcmlnaW5baV0uY29udGVudFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXG4gICAgICAgIGlubGluZUNoYW5nZUxpc3QgPSBpbmxpbmVDaGFuZ2VMaXN0LnNvcnQoKGEsIGIpOm51bWJlcj0+YS5iZWdpbi1iLmJlZ2luKTtcbiAgICAgICAgcmV0dXJuIFtyZXN1bHRMaW5lLCByZXN1bHRDdXJzb3JDaCwgaW5saW5lQ2hhbmdlTGlzdF07XG4gICAgfVxuICAgIFxufVxuXG5cbmV4cG9ydCBjbGFzcyBNYXJrZG93blBhcnNlcntcbiAgICBjb25zdHJ1Y3Rvcigpe31cblxufVxuXG5mdW5jdGlvbiBtYXRjaFdpdGhSZWcodGV4dDogc3RyaW5nLCByZWdFeHA6IFJlZ0V4cCwgdHlwZTogSW5saW5lVHlwZSwgaW5saW5lVHlwZUFycmF5OiBJbmxpbmVQYXJ0W10sXG4gICAgY2hlY2tBcnJheSA9IGZhbHNlLCBsZWZ0U3BhY2VSZTogU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUubm9uZSwgcmlnaHRTcGFjZVJlOiBTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lKTogSW5saW5lUGFydFtdIHtcbiAgICBsZXQgcmV0QXJyYXkgPSBpbmxpbmVUeXBlQXJyYXk7XG4gICAgbGV0IG1hdGNoQXJyYXk6IElubGluZVBhcnRbXSA9IFtdO1xuICAgIHJldEFycmF5ID0gcmV0QXJyYXkuc29ydCgoYSwgYik6IG51bWJlciA9PiBhLmJlZ2luIC0gYi5iZWdpbik7XG4gICAgLy8gY29uc29sZS5sb2coJ2JlZm9yZS0tLS0tLS0tLS0tXFxuJyxyZXRBcnJheSlcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBsZXQgbWF0Y2ggPSByZWdFeHAuZXhlYyh0ZXh0KTtcbiAgICAgICAgaWYgKCFtYXRjaCkgYnJlYWs7XG4gICAgICAgIGxldCB2YWxpZCA9IHRydWU7XG4gICAgICAgIC8vIFx1NjhDMFx1NjdFNVx1NTFCMlx1N0E4MVxuICAgICAgICBpZiAoY2hlY2tBcnJheSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXRBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmKHJlZ0V4cC5sYXN0SW5kZXg+cmV0QXJyYXlbaV0uYmVnaW4gJiYgcmV0QXJyYXlbaV0uZW5kPm1hdGNoLmluZGV4KXtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghdmFsaWQpIGNvbnRpbnVlO1xuICAgICAgICBtYXRjaEFycmF5LnB1c2goXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udGVudDogbWF0Y2hbMF0sXG4gICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICBiZWdpbjogbWF0Y2guaW5kZXgsXG4gICAgICAgICAgICAgICAgZW5kOiByZWdFeHAubGFzdEluZGV4LFxuICAgICAgICAgICAgICAgIGxlZnRTcGFjZVJlcXVpcmU6IGxlZnRTcGFjZVJlLFxuICAgICAgICAgICAgICAgIHJpZ2h0U3BhY2VSZXF1aXJlOiByaWdodFNwYWNlUmVcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmV0QXJyYXkgPSByZXRBcnJheS5jb25jYXQobWF0Y2hBcnJheSk7XG4gICAgLy8gY29uc29sZS5sb2coJ0FmdGVyPT09PT09PT09PT1cXG4nLCByZXRBcnJheSk7XG4gICAgcmV0dXJuIHJldEFycmF5O1xufVxuXG5mdW5jdGlvbiBtYXRjaFdpdGhBYmJyKHRleHQ6IHN0cmluZywgdHlwZTogSW5saW5lVHlwZSwgaW5saW5lVHlwZUFycmF5OiBJbmxpbmVQYXJ0W10sIGNoZWNrQXJyYXkgPSBmYWxzZSl7XG4gICAgbGV0IHJldEFycmF5ID0gaW5saW5lVHlwZUFycmF5O1xuICAgIGxldCBtYXRjaEFycmF5OiBJbmxpbmVQYXJ0W10gPSBbXTtcbiAgICByZXRBcnJheSA9IHJldEFycmF5LnNvcnQoKGEsIGIpOiBudW1iZXIgPT4gYS5iZWdpbiAtIGIuYmVnaW4pO1xuICAgIGxldCByZWdBYmJyID0gLyhbYS16QS1aXVxcLikrL2c7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgbGV0IG1hdGNoID0gcmVnQWJici5leGVjKHRleHQpO1xuICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgbGV0IHZhbGlkID0gdHJ1ZTtcbiAgICAgICAgbGV0IGlzSW5CbG9ja0JlZ2luOmJvb2xlYW4gPSAobWF0Y2guaW5kZXg9PTApO1xuICAgICAgICAvLyBcdTY4QzBcdTY3RTVcdTUxQjJcdTdBODFcbiAgICAgICAgaWYgKGNoZWNrQXJyYXkpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmV0QXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZihtYXRjaC5pbmRleCA9PSByZXRBcnJheVtpXS5lbmQpe1xuICAgICAgICAgICAgICAgICAgICBpc0luQmxvY2tCZWdpbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmKHJlZ0FiYnIubGFzdEluZGV4PnJldEFycmF5W2ldLmJlZ2luICYmIHJldEFycmF5W2ldLmVuZD5tYXRjaC5pbmRleCl7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZighaXNJbkJsb2NrQmVnaW4gJiYgdmFsaWQpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCByZWdDaGFyID0gL1thLXpBLVowLTldLztcbiAgICAgICAgICAgIGlmKHJlZ0NoYXIudGVzdCh0ZXh0LmNoYXJBdChtYXRjaC5pbmRleC0xKSkpe1xuICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZhbGlkKSBjb250aW51ZTtcbiAgICAgICAgbWF0Y2hBcnJheS5wdXNoKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG1hdGNoWzBdLFxuICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICAgICAgYmVnaW46IG1hdGNoLmluZGV4LFxuICAgICAgICAgICAgICAgIGVuZDogcmVnQWJici5sYXN0SW5kZXgsXG4gICAgICAgICAgICAgICAgbGVmdFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZS5ub25lLFxuICAgICAgICAgICAgICAgIHJpZ2h0U3BhY2VSZXF1aXJlOiBTcGFjZVN0YXRlLm5vbmVcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmV0QXJyYXkgPSByZXRBcnJheS5jb25jYXQobWF0Y2hBcnJheSk7XG4gICAgLy8gY29uc29sZS5sb2coJ0FmdGVyPT09PT09PT09PT1cXG4nLCByZXRBcnJheSk7XG4gICAgcmV0dXJuIHJldEFycmF5O1xufVxuXG4vKipcbiAqIFx1NTIwNlx1NTI3Mlx1NEUwMFx1ODg0Q1x1NjU4N1x1NjcyQ1x1NEUyRFx1NzY4NFx1OTRGRVx1NjNBNVx1NTQ4Q1x1NzUyOFx1NjIzN1x1ODFFQVx1NUI5QVx1NEU0OVx1NzY4NFx1NkI2M1x1NTIxOVx1OTBFOFx1NTIwNlx1RkYwQ1x1NUY5N1x1NTIzMCBJbmxpbmVQYXJ0IFx1NzY4NFx1NEUwRFx1NTQwQ1x1NTMzQVx1NTdERlxuICovXG5mdW5jdGlvbiBzcGxpdFRleHRXaXRoTGlua0FuZFVzZXJEZWZpbmVkKHRleHQ6IHN0cmluZywgcmVnRXhwcz86IHN0cmluZyk6IElubGluZVBhcnRbXSB7XG4gICAgbGV0IHJldEFycmF5OiBJbmxpbmVQYXJ0W10gPSBbXTtcbiAgICBsZXQgcmVnV2lraUxpbmsgPSAvXFwhezAsMn1cXFtcXFtbXlxcW1xcXV0qP1xcXVxcXS9nO1xuICAgIGxldCByZWdNZExpbmsgPSAvXFwhezAsMn1cXFtbXlxcW1xcXV0qP1xcXVxcKFteXFxzXFwpXFwoXFxbXFxdXFx7XFx9J10qXFwpL2c7XG4gICAgLy8gbGV0IHJlZ0JhcmVMaW5rID0gLyhodHRwcz86XFwvXFwvfGZ0cDpcXC9cXC98b2JzaWRpYW46XFwvXFwvfHpvdGVybzpcXC9cXC98d3d3LilbXlxcc1x1RkYwOFx1RkYwOVx1MzAwQVx1MzAwQlx1MzAwMlx1RkYwQ1x1RkYwMVx1RkYxRlx1RkYxQlx1RkYxQVx1MjAxQ1x1MjAxRFx1MjAxOFx1MjAxOVxcKVxcKFxcW1xcXVxce1xcfSddKy9nO1xuXG4gICAgLy8gMS4gXHU1MzM5XHU5MTREd2lraWxpbmtcbiAgICByZXRBcnJheSA9IG1hdGNoV2l0aFJlZyh0ZXh0LCByZWdXaWtpTGluaywgSW5saW5lVHlwZS53aWtpbGluaywgcmV0QXJyYXkpO1xuICAgIC8vIDIuIFx1NTMzOVx1OTE0RG1kbGlua1xuICAgIHJldEFycmF5ID0gbWF0Y2hXaXRoUmVnKHRleHQsIHJlZ01kTGluaywgSW5saW5lVHlwZS5tZGxpbmssIHJldEFycmF5KTtcblxuICAgIC8vIDMuIFx1NTMzOVx1OTE0RFx1NzUyOFx1NjIzN1x1ODFFQVx1NUI5QVx1NEU0OVx1NkI2M1x1NTIxOVxuICAgIGxldCByZWdFeHBMaXN0OiBSZWdFeHBbXSA9IFtdO1xuICAgIGxldCBsZWZ0U1JlcXVpcmVMaXN0OiBTcGFjZVN0YXRlW10gPSBbXTtcbiAgICBsZXQgcmlnaHRTUmVxdWlyZUxpc3Q6IFNwYWNlU3RhdGVbXSA9IFtdO1xuICAgIGxldCByZWdOdWxsID0gL15cXHMqJC9nO1xuICAgIGxldCByZWdTUmVxdWlyZSA9IC9cXHxbXFwtPVxcK11bXFwtPVxcK10kLztcbiAgICBpZiAocmVnRXhwcykge1xuICAgICAgICBsZXQgcmVncyA9IHJlZ0V4cHMuc3BsaXQoJ1xcbicpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlZ3MubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgaWYgKHJlZ051bGwudGVzdChyZWdzW2ldKSkgY29udGludWU7XG5cbiAgICAgICAgICAgIGlmICgoIXJlZ1NSZXF1aXJlLnRlc3QocmVnc1tpXSkpIHx8IHJlZ3NbaV0ubGVuZ3RoIDw9IDMpIHtcbiAgICAgICAgICAgICAgICBuZXcgTm90aWNlKFwiRWFzeVR5cGluZzogXHU3QjJDXCIgKyBTdHJpbmcoaSkgKyBcIlx1ODg0Q1x1ODFFQVx1NUI5QVx1NEU0OVx1NkI2M1x1NTIxOVx1NEUwRFx1N0IyNlx1NTQwOFx1ODlDNFx1ODMwM1xcblwiK3JlZ3NbaV0pO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHJlZ0l0ZW0gPSByZWdzW2ldLnN1YnN0cmluZygwLCByZWdzW2ldLmxlbmd0aCAtIDMpO1xuICAgICAgICAgICAgbGV0IHNwYWNlUmVxU3RyaW5nID0gcmVnc1tpXS5zdWJzdHJpbmcocmVnc1tpXS5sZW5ndGggLSAzKTtcblxuICAgICAgICAgICAgbGV0IGlzVmFsaWRSZWcgPSB0cnVlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgcmVnVGVtcCA9IG5ldyBSZWdFeHAocmVnSXRlbSwgJ2cnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgaXNWYWxpZFJlZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuc2V0dGluZ3MuZGVidWcpe1xuICAgICAgICAgICAgICAgICAgICBuZXcgTm90aWNlKFwiRWFzdVR5cGluZzogQmFkIFJlZ0V4cDpcXG5cIiArIHJlZ0l0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWcpIHtcbiAgICAgICAgICAgICAgICByZWdFeHBMaXN0LnB1c2gobmV3IFJlZ0V4cChyZWdJdGVtLCAnZycpKTtcbiAgICAgICAgICAgICAgICBsZWZ0U1JlcXVpcmVMaXN0LnB1c2goc3RyMlNwYWNlU3RhdGUoc3BhY2VSZXFTdHJpbmcuY2hhckF0KDEpKSk7XG4gICAgICAgICAgICAgICAgcmlnaHRTUmVxdWlyZUxpc3QucHVzaChzdHIyU3BhY2VTdGF0ZShzcGFjZVJlcVN0cmluZy5jaGFyQXQoMikpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgcmVnTGVuID0gcmVnRXhwTGlzdC5sZW5ndGg7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZWdMZW47IGkrKykge1xuICAgICAgICAgICAgcmV0QXJyYXkgPSBtYXRjaFdpdGhSZWcodGV4dCwgcmVnRXhwTGlzdFtpXSwgSW5saW5lVHlwZS51c2VyLCByZXRBcnJheSwgdHJ1ZSwgbGVmdFNSZXF1aXJlTGlzdFtpXSwgcmlnaHRTUmVxdWlyZUxpc3RbaV0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gXHU1MzM5XHU5MTREXHU2NUY2XHU5NUY0XHU2MjMzXG4gICAgcmV0QXJyYXkgPSBtYXRjaFdpdGhSZWcodGV4dCwgL1xcZHsxLDJ9OlxcZHsxLDJ9KDpcXGR7MCwyfSl7MCwxfS9nLCBJbmxpbmVUeXBlLnVzZXIsIHJldEFycmF5LCB0cnVlLCBTcGFjZVN0YXRlLm5vbmUsIFNwYWNlU3RhdGUubm9uZSk7XG5cbiAgICAvLyA0LiBcdTUzMzlcdTkxNERcdTdGMjlcdTUxOTlcdTU5ODIgYS5tLlxuICAgIHJldEFycmF5ID0gbWF0Y2hXaXRoQWJicih0ZXh0LCBJbmxpbmVUeXBlLnVzZXIsIHJldEFycmF5LCB0cnVlKTtcblxuICAgIC8vIDUuIFx1NUY5N1x1NTIzMFx1NTI2OVx1NEY1OVx1NzY4NFx1NjU4N1x1NjcyQ1x1OTBFOFx1NTIwNlxuICAgIHJldEFycmF5ID0gcmV0QXJyYXkuc29ydCgoYSwgYik6IG51bWJlciA9PiBhLmJlZ2luIC0gYi5iZWdpbik7XG5cbiAgICBsZXQgdGV4dEFycmF5OiBJbmxpbmVQYXJ0W10gPSBbXTtcbiAgICBsZXQgdGV4dEJlZ2luID0gMDtcbiAgICBsZXQgdGV4dEVuZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXRBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodGV4dEJlZ2luIDwgcmV0QXJyYXlbaV0uYmVnaW4pIHtcbiAgICAgICAgICAgIHRleHRFbmQgPSByZXRBcnJheVtpXS5iZWdpbjtcbiAgICAgICAgICAgIHRleHRBcnJheS5wdXNoKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogdGV4dC5zdWJzdHJpbmcodGV4dEJlZ2luLCB0ZXh0RW5kKSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogSW5saW5lVHlwZS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICBiZWdpbjogdGV4dEJlZ2luLFxuICAgICAgICAgICAgICAgICAgICBlbmQ6IHRleHRFbmQsXG4gICAgICAgICAgICAgICAgICAgIGxlZnRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGUubm9uZSxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGUubm9uZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGV4dEJlZ2luID0gcmV0QXJyYXlbaV0uZW5kO1xuICAgIH1cblxuICAgIGlmICh0ZXh0QmVnaW4gIT0gdGV4dC5sZW5ndGgpIHtcbiAgICAgICAgdGV4dEFycmF5LnB1c2goXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udGVudDogdGV4dC5zdWJzdHJpbmcodGV4dEJlZ2luLCB0ZXh0Lmxlbmd0aCksXG4gICAgICAgICAgICAgICAgdHlwZTogSW5saW5lVHlwZS50ZXh0LFxuICAgICAgICAgICAgICAgIGJlZ2luOiB0ZXh0QmVnaW4sXG4gICAgICAgICAgICAgICAgZW5kOiB0ZXh0Lmxlbmd0aCxcbiAgICAgICAgICAgICAgICBsZWZ0U3BhY2VSZXF1aXJlOiBTcGFjZVN0YXRlLm5vbmUsXG4gICAgICAgICAgICAgICAgcmlnaHRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGUubm9uZVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIDYuIFx1NTQwOFx1NUU3Nlx1NjU4N1x1NjcyQ1x1OTBFOFx1NTIwNlx1NTQ4Q1x1NTE3Nlx1NEVENlx1OTBFOFx1NTIwNlxuICAgIHJldEFycmF5ID0gcmV0QXJyYXkuY29uY2F0KHRleHRBcnJheSk7XG4gICAgcmV0QXJyYXkgPSByZXRBcnJheS5zb3J0KChhLCBiKTogbnVtYmVyID0+IGEuYmVnaW4gLSBiLmJlZ2luKTtcbiAgICByZXR1cm4gcmV0QXJyYXlcbn1cblxuLy8gXHU1QjU3XHU3QjI2XHU4RjZDXHU1MzE2XHU2MjEwXHU3QTdBXHU2ODNDXHU3MkI2XHU2MDAxXHU4OTgxXHU2QzQyXG5mdW5jdGlvbiBzdHIyU3BhY2VTdGF0ZShzOiBzdHJpbmcpOiBTcGFjZVN0YXRlIHtcbiAgICBzd2l0Y2ggKHMpIHtcbiAgICAgICAgY2FzZSBcIitcIjpcbiAgICAgICAgICAgIHJldHVybiBTcGFjZVN0YXRlLnN0cmljdDtcbiAgICAgICAgY2FzZSAnPSc6XG4gICAgICAgICAgICByZXR1cm4gU3BhY2VTdGF0ZS5zb2Z0O1xuICAgICAgICBjYXNlICctJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBTcGFjZVN0YXRlLm5vbmU7XG4gICAgfVxufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmcyU3BhY2VTdGF0ZShzOnN0cmluZyk6U3BhY2VTdGF0ZVxue1xuICAgIGlmKE51bWJlcihzKT09U3BhY2VTdGF0ZS5ub25lKSByZXR1cm4gU3BhY2VTdGF0ZS5ub25lO1xuICAgIGlmKE51bWJlcihzKT09U3BhY2VTdGF0ZS5zb2Z0KSByZXR1cm4gU3BhY2VTdGF0ZS5zb2Z0O1xuICAgIGlmKE51bWJlcihzKT09U3BhY2VTdGF0ZS5zdHJpY3QpIHJldHVybiBTcGFjZVN0YXRlLnN0cmljdDtcbiAgICByZXR1cm4gU3BhY2VTdGF0ZS5ub25lO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQb3NMaW5lVHlwZShzdGF0ZTogRWRpdG9yU3RhdGUsIHBvczogbnVtYmVyKTpMaW5lVHlwZSB7XG4gICAgY29uc3QgbGluZSA9IHN0YXRlLmRvYy5saW5lQXQocG9zKVxuICAgIGNvbnN0IHRyZWUgPSBzeW50YXhUcmVlKHN0YXRlKTtcbiAgICBjb25zdCB0b2tlbiA9IHRyZWUucmVzb2x2ZShsaW5lLmZyb20sIDEpLm5hbWVcblxuICAgIC8vIGZvciAobGV0IHA9bGluZS5mcm9tOyBwPGxpbmUudG87IHArPTEpe1xuICAgIC8vICAgICBjb25zb2xlLmxvZyhwLWxpbmUuZnJvbSwgdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWUpXG4gICAgLy8gfVxuXG4gICAgaWYgKHRva2VuLmNvbnRhaW5zKCdobWQtZnJvbnRtYXR0ZXInKSl7XG4gICAgICAgIHJldHVybiBMaW5lVHlwZS5mcm9udG1hdHRlclxuICAgIH1cblxuICAgIGlmKHRva2VuLmNvbnRhaW5zKCdtYXRoJykpe1xuICAgICAgICBmb3IobGV0IHA9bGluZS5mcm9tKzE7cDxsaW5lLnRvO3ArPTEpe1xuICAgICAgICAgICAgaWYoIXRyZWUucmVzb2x2ZShwLCAxKS5uYW1lLmNvbnRhaW5zKCdtYXRoJykpe1xuICAgICAgICAgICAgICAgIHJldHVybiBMaW5lVHlwZS50ZXh0XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIExpbmVUeXBlLmZvcm11bGFcbiAgICB9XG4gICAgZWxzZSBpZih0b2tlbi5jb250YWlucygnY29kZScpICYmIHRva2VuLmNvbnRhaW5zKCdibG9jaycpKXtcbiAgICAgICAgZm9yKGxldCBwPWxpbmUuZnJvbSsxO3A8bGluZS50bztwKz0xKXtcbiAgICAgICAgICAgIGxldCB0ID0gdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWVcbiAgICAgICAgICAgIGlmKCEodC5jb250YWlucygnY29kZScpICYmIHQuY29udGFpbnMoJ2Jsb2NrJykpKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gTGluZVR5cGUudGV4dFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBMaW5lVHlwZS5jb2RlYmxvY2tcbiAgICB9XG4gICAgcmV0dXJuIExpbmVUeXBlLnRleHRcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9zTGluZVR5cGUyKHN0YXRlOiBFZGl0b3JTdGF0ZSwgcG9zOiBudW1iZXIpOkxpbmVUeXBlIHtcbiAgICBjb25zdCBsaW5lID0gc3RhdGUuZG9jLmxpbmVBdChwb3MpXG4gICAgY29uc3QgdHJlZSA9IHN5bnRheFRyZWUoc3RhdGUpO1xuICAgIGNvbnN0IHRva2VuID0gdHJlZS5yZXNvbHZlKGxpbmUuZnJvbSwgMSkubmFtZVxuICAgIGlmICh0b2tlbi5jb250YWlucygnaG1kLWZyb250bWF0dGVyJykpe1xuICAgICAgICByZXR1cm4gTGluZVR5cGUuZnJvbnRtYXR0ZXJcbiAgICB9XG5cbiAgICBpZih0b2tlbi5jb250YWlucygnbWF0aCcpKXtcbiAgICAgICAgZm9yKGxldCBwPWxpbmUuZnJvbSsxO3A8bGluZS50bztwKz0xKXtcbiAgICAgICAgICAgIGlmKCF0cmVlLnJlc29sdmUocCwgMSkubmFtZS5jb250YWlucygnbWF0aCcpKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gTGluZVR5cGUudGV4dFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBMaW5lVHlwZS5mb3JtdWxhXG4gICAgfVxuICAgIGVsc2UgaWYodG9rZW4uY29udGFpbnMoJ2NvZGUnKSAmJiB0b2tlbi5jb250YWlucygnYmxvY2snKSl7XG4gICAgICAgIGZvcihsZXQgcD1saW5lLmZyb20rMTtwPGxpbmUudG87cCs9MSl7XG4gICAgICAgICAgICBsZXQgdCA9IHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lXG4gICAgICAgICAgICBpZighKHQuY29udGFpbnMoJ2NvZGUnKSAmJiB0LmNvbnRhaW5zKCdibG9jaycpKSl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIExpbmVUeXBlLnRleHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTGluZVR5cGUuY29kZWJsb2NrXG4gICAgfVxuXG4gICAgZm9yKGxldCBwPWxpbmUuZnJvbTtwPGxpbmUudG87cCs9MSl7XG4gICAgICAgIGlmKHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lLmNvbnRhaW5zKCdsaXN0Jykpe1xuICAgICAgICAgICAgcmV0dXJuIExpbmVUeXBlLmxpc3RcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lLmNvbnRhaW5zKCdjYWxsb3V0Jykpe1xuICAgICAgICAgICAgcmV0dXJuIExpbmVUeXBlLmNhbGxvdXRfdGl0bGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZih0b2tlbi5jb250YWlucygncXVvdGUnKSl7XG4gICAgICAgIHJldHVybiBMaW5lVHlwZS5xdW90ZTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIExpbmVUeXBlLnRleHRcbn0iLCAiaW1wb3J0IHsgQW5ub3RhdGlvbiwgRWRpdG9yU3RhdGUsIEV4dGVuc2lvbiwgU3RhdGVGaWVsZCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3BlYywgVGV4dH0gZnJvbSAnQGNvZGVtaXJyb3Ivc3RhdGUnO1xuaW1wb3J0IHsgRWFzeVR5cGluZ1NldHRpbmdUYWIsIEVhc3lUeXBpbmdTZXR0aW5ncywgUGFpclN0cmluZywgQ29udmVydFJ1bGV9IGZyb20gXCIuL3NldHRpbmdzXCJcblxuXG5leHBvcnQgZnVuY3Rpb24gcG9zVG9PZmZzZXQoZG9jOlRleHQsIHBvczp7bGluZTpudW1iZXIsIGNoOm51bWJlcn0pIHtcblx0cmV0dXJuIGRvYy5saW5lKHBvcy5saW5lICsgMSkuZnJvbSArIHBvcy5jaFxufVxuZXhwb3J0IGZ1bmN0aW9uIG9mZnNldFRvUG9zKGRvYzpUZXh0LCBvZmZzZXQ6bnVtYmVyKSB7XG5cdGxldCBsaW5lID0gZG9jLmxpbmVBdChvZmZzZXQpXG5cdHJldHVybiB7bGluZTogbGluZS5udW1iZXIgLSAxLCBjaDogb2Zmc2V0IC0gbGluZS5mcm9tfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHlwZVN0ck9mVHJhbnNhYyh0cjogVHJhbnNhY3Rpb24pOiBzdHJpbmcge1xuXHRsZXQgVHJhbnNhY1R5cGVBcnJheTpzdHJpbmdbXSA9IFtcIkVhc3lUeXBpbmcuY2hhbmdlXCIsIFxuXHRcdFx0XHRcdFx0XHRcImlucHV0LnR5cGUuY29tcG9zZVwiLCBcImlucHV0LnR5cGVcIiwgXCJpbnB1dC5wYXN0ZVwiLCBcImlucHV0LmRyb3BcIiwgXCJpbnB1dC5jb21wbGV0ZVwiLCBcImlucHV0XCIsXG5cdFx0XHRcdFx0XHRcdFwiZGVsZXRlLnNlbGVjdGlvblwiLCBcImRlbGV0ZS5mb3J3YXJkXCIsIFwiZGVsZXRlLmJhY2t3YXJkXCIsIFwiZGVsZXRlLmN1dFwiLCBcImRlbGV0ZVwiLFxuXHRcdFx0XHRcdFx0XHRcIm1vdmUuZHJvcFwiLFxuXHRcdFx0XHRcdFx0XHRcInVuZG9cIiwgXCJyZWRvXCIsXG5cdFx0XHRcdFx0XHRcdFwic2VsZWN0LnBvaW50ZXJcIl07XG5cdGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBUcmFuc2FjVHlwZUFycmF5Lmxlbmd0aDsgaSsrKVxuXHR7XG5cdFx0aWYgKHRyLmlzVXNlckV2ZW50KFRyYW5zYWNUeXBlQXJyYXlbaV0pKVxuXHRcdFx0cmV0dXJuIFRyYW5zYWNUeXBlQXJyYXlbaV07XG5cdH1cblx0cmV0dXJuIFwibm9uZVwiXG59XG5cbmZ1bmN0aW9uIHN0cmluZzJwYWlyc3RyaW5nKHM6IHN0cmluZyk6UGFpclN0cmluZ3tcblx0bGV0IGN1cnNvcklkeCA9IHMuaW5kZXhPZihcInxcIik7XG5cdGxldCBsZWZ0ID0gcy5zdWJzdHJpbmcoMCwgY3Vyc29ySWR4KTtcblx0bGV0IHJpZ2h0ID0gcy5zdWJzdHJpbmcoY3Vyc29ySWR4KzEpO1xuXHRyZXR1cm4ge2xlZnQ6bGVmdCwgcmlnaHQ6cmlnaHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsZVN0cmluZ0xpc3QyUnVsZUxpc3QobGlzdDogQXJyYXk8W3N0cmluZywgc3RyaW5nXT4pOkNvbnZlcnRSdWxlW10ge1xuXHRsZXQgcmVzOkNvbnZlcnRSdWxlW10gPSBbXTtcblx0Zm9yIChsZXQgaSBpbiBsaXN0KXtcblx0XHRyZXNbaV0gPSB7YmVmb3JlOiBzdHJpbmcycGFpcnN0cmluZyhsaXN0W2ldWzBdKSwgYWZ0ZXI6IHN0cmluZzJwYWlyc3RyaW5nKGxpc3RbaV1bMV0pfVxuXHR9XG5cdHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdEZWxldGVBdChzdHI6IHN0cmluZywgaW5kZXg6IG51bWJlcik6c3RyaW5nXG57XG4gICAgcmV0dXJuIHN0ci5zdWJzdHJpbmcoMCwgaW5kZXgpK3N0ci5zdWJzdHJpbmcoaW5kZXgrMSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdJbnNlcnRBdChzdHI6c3RyaW5nLCBpbmRleDogbnVtYmVyLCBzOiBzdHJpbmcpOnN0cmluZ1xue1xuICAgIHJldHVybiBzdHIuc3Vic3RyaW5nKDAsIGluZGV4KStzK3N0ci5zdWJzdHJpbmcoaW5kZXgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQYXJhbURlZmluZWQocGFyYW06IGFueSk6Ym9vbGVhblxue1xuXHRyZXR1cm4gdHlwZW9mIHBhcmFtIT09XCJ1bmRlZmluZWRcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dTdHJpbmcoczogc3RyaW5nKTpzdHJpbmd7XG5cdHJldHVybiBzLnJlcGxhY2UoL1xcbi9nLCAnXFxcXG4nKTtcbn0iLCAiaW1wb3J0IHsgU3BhY2VTdGF0ZSwgc3RyaW5nMlNwYWNlU3RhdGUgfSBmcm9tICdzcmMvY29yZSc7XG5pbXBvcnQgeyBBcHAsIFRleHRDb21wb25lbnQsIE1hcmtkb3duVmlldywgTW9kYWwsIE5vdGljZSwgUGx1Z2luLCBQbHVnaW5TZXR0aW5nVGFiLCBTZXR0aW5nLCBXb3Jrc3BhY2UsIFdvcmtzcGFjZUxlYWYsIFRleHRBcmVhQ29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IEVhc3lUeXBpbmdQbHVnaW4gZnJvbSAnLi9tYWluJztcbmltcG9ydCB7IHNob3dTdHJpbmcgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBQYWlyU3RyaW5nIHtcblx0bGVmdDogc3RyaW5nO1xuXHRyaWdodDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnZlcnRSdWxlIHtcblx0YmVmb3JlOiBQYWlyU3RyaW5nO1xuXHRhZnRlcjogUGFpclN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gUnVsZVR5cGUge2RlbGV0ZT0gXCJEZWxldGUgUnVsZVwiLCBjb252ZXJ0PSdDb252ZXJ0IFJ1bGUnfVxuZXhwb3J0IGVudW0gV29ya01vZGUgeyBPbmx5V2hlblR5cGluZyA9IFwidHlwaW5nXCIsIEdsb2JhbGx5ID0gXCJnbG9iYWxcIiB9XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWFzeVR5cGluZ1NldHRpbmdzIHtcblx0VGFib3V0OiBib29sZWFuO1xuXHRTZWxlY3Rpb25FbmhhbmNlOiBib29sZWFuO1xuXHRJbnRyaW5zaWNTeW1ib2xQYWlyczogYm9vbGVhbjtcblx0QmFzZU9iRWRpdEVuaGFuY2U6IGJvb2xlYW47XG5cdEZXMkhXRW5oYW5jZTogYm9vbGVhbjtcblx0QXV0b0Zvcm1hdDogYm9vbGVhbjtcblx0RXhjbHVkZUZpbGVzOiBzdHJpbmc7XG5cdEF1dG9DYXBpdGFsOiBib29sZWFuO1xuXHRBdXRvQ2FwaXRhbE1vZGU6IFdvcmtNb2RlO1xuXHRDaGluZXNlRW5nbGlzaFNwYWNlOiBib29sZWFuO1xuXHRFbmdsaXNoTnVtYmVyU3BhY2U6IGJvb2xlYW47XG5cdENoaW5lc2VOb1NwYWNlOiBib29sZWFuO1xuXHRDaGluZXNlTnVtYmVyU3BhY2U6IGJvb2xlYW47XG5cdFB1bmN0dWF0aW9uU3BhY2U6IGJvb2xlYW47XG5cdFB1bmN0dWF0aW9uU3BhY2VNb2RlOiBXb3JrTW9kZTtcblx0SW5saW5lQ29kZVNwYWNlTW9kZTogU3BhY2VTdGF0ZTtcblx0SW5saW5lRm9ybXVsYVNwYWNlTW9kZTogU3BhY2VTdGF0ZTtcblx0SW5saW5lTGlua1NwYWNlTW9kZTogU3BhY2VTdGF0ZTtcblx0SW5saW5lTGlua1NtYXJ0U3BhY2U6IGJvb2xlYW47XG5cdFVzZXJEZWZpbmVkUmVnU3dpdGNoOiBib29sZWFuO1xuXHRVc2VyRGVmaW5lZFJlZ0V4cDogc3RyaW5nO1xuXHRkZWJ1ZzogYm9vbGVhbjtcblxuXHR1c2VyU2VsUmVwUnVsZVRyaWdnZXI6IHN0cmluZ1tdO1xuXHR1c2VyU2VsUmVwUnVsZVZhbHVlOiBQYWlyU3RyaW5nW107XG5cdHVzZXJEZWxldGVSdWxlc1N0ckxpc3Q6IFtzdHJpbmcsIHN0cmluZ11bXTtcblx0dXNlckNvbnZlcnRSdWxlc1N0ckxpc3Q6IFtzdHJpbmcsIHN0cmluZ11bXTtcblx0dXNlclNlbFJ1bGVTZXR0aW5nc09wZW46IGJvb2xlYW47XG5cdHVzZXJEZWxSdWxlU2V0dGluZ3NPcGVuOiBib29sZWFuO1xuXHR1c2VyQ3Z0UnVsZVNldHRpbmdzT3BlbjogYm9vbGVhbjtcblxuXHRFbnRlclR3aWNlOiBib29sZWFuO1xuXHRQdW5jUmVjdGlmeTogYm9vbGVhbjtcblx0VHJ5Rml4Q2hpbmVzZUlNOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRVRUSU5HUzogRWFzeVR5cGluZ1NldHRpbmdzID0ge1xuXHRUYWJvdXQ6IHRydWUsXG5cdFNlbGVjdGlvbkVuaGFuY2U6IHRydWUsXG5cdEludHJpbnNpY1N5bWJvbFBhaXJzOiB0cnVlLFxuXHRCYXNlT2JFZGl0RW5oYW5jZTogdHJ1ZSxcblx0RlcySFdFbmhhbmNlOiB0cnVlLFxuXG5cdEF1dG9Gb3JtYXQ6IHRydWUsXG5cdEV4Y2x1ZGVGaWxlczogXCJcIixcblx0Q2hpbmVzZUVuZ2xpc2hTcGFjZTogdHJ1ZSxcblx0Q2hpbmVzZU51bWJlclNwYWNlOiB0cnVlLFxuXHRFbmdsaXNoTnVtYmVyU3BhY2U6IHRydWUsXG5cdENoaW5lc2VOb1NwYWNlOiB0cnVlLFxuXHRQdW5jdHVhdGlvblNwYWNlOiB0cnVlLFxuXHRBdXRvQ2FwaXRhbDogdHJ1ZSxcblx0QXV0b0NhcGl0YWxNb2RlOiBXb3JrTW9kZS5Pbmx5V2hlblR5cGluZyxcblx0UHVuY3R1YXRpb25TcGFjZU1vZGU6IFdvcmtNb2RlLk9ubHlXaGVuVHlwaW5nLFxuXHRJbmxpbmVDb2RlU3BhY2VNb2RlOiBTcGFjZVN0YXRlLnNvZnQsXG5cdElubGluZUZvcm11bGFTcGFjZU1vZGU6IFNwYWNlU3RhdGUuc29mdCxcblx0SW5saW5lTGlua1NwYWNlTW9kZTogU3BhY2VTdGF0ZS5zb2Z0LFxuXHRJbmxpbmVMaW5rU21hcnRTcGFjZTogdHJ1ZSxcblx0VXNlckRlZmluZWRSZWdTd2l0Y2g6IHRydWUsXG5cdFVzZXJEZWZpbmVkUmVnRXhwOiBcInt7Lio/fX18KytcXG5cIitcblx0XHRcIjwuKj8+fC0tXFxuXCIgK1xuXHRcdFwiXFxcXFtcXFxcIS4qP1xcXFxdWy0rXXswLDF9fC0rXFxuXCIrXG5cdFx0XCIoZmlsZTovLy98aHR0cHM/Oi8vfGZ0cDovL3xvYnNpZGlhbjovL3x6b3Rlcm86Ly98d3d3LilbXlxcXFxzXHVGRjA4XHVGRjA5XHUzMDBBXHUzMDBCXHUzMDAyLFx1RkYwQ1x1RkYwMVx1RkYxRjtcdUZGMUJcdUZGMUFcdTIwMUNcdTIwMURcdTIwMThcdTIwMTlcXFxcKVxcXFwoXFxcXFtcXFxcXVxcXFx7XFxcXH0nXSt8KytcXG5cIitcblx0XHRcIlxcblthLXpBLVowLTlfXFxcXC0uXStAW2EtekEtWjAtOV9cXFxcLS5dK3wrK1xcblwiK1xuXHRcdFwiKD88ISMpI1tcXFxcdTRlMDAtXFxcXHU5ZmE1XFxcXHdcXFxcL10rfCsrXCIsXG5cdGRlYnVnOiBmYWxzZSxcblx0dXNlclNlbFJlcFJ1bGVUcmlnZ2VyOiBbXCItXCIsIFwiI1wiXSxcblx0dXNlclNlbFJlcFJ1bGVWYWx1ZTogW3tsZWZ0Olwifn5cIiwgcmlnaHQ6XCJ+flwifSwge2xlZnQ6XCIjXCIsIHJpZ2h0OlwiIFwifV0sXG5cdHVzZXJEZWxldGVSdWxlc1N0ckxpc3Q6IFtbXCJkZW1vfFwiLCBcInxcIl1dLFxuXHR1c2VyQ29udmVydFJ1bGVzU3RyTGlzdDogW1tcIjopfFwiLFwiXHVEODNEXHVERTAwfFwiXV0sXG5cdHVzZXJTZWxSdWxlU2V0dGluZ3NPcGVuOiB0cnVlLFxuXHR1c2VyRGVsUnVsZVNldHRpbmdzT3BlbjogdHJ1ZSxcblx0dXNlckN2dFJ1bGVTZXR0aW5nc09wZW46IHRydWUsXG5cblx0RW50ZXJUd2ljZTogZmFsc2UsXG5cdFRyeUZpeENoaW5lc2VJTTogZmFsc2UsXG5cdFB1bmNSZWN0aWZ5OiBmYWxzZSxcbn1cblxuZXhwb3J0IGNsYXNzIEVhc3lUeXBpbmdTZXR0aW5nVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XG5cdHBsdWdpbjogRWFzeVR5cGluZ1BsdWdpbjtcblxuXHRjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBFYXN5VHlwaW5nUGx1Z2luKSB7XG5cdFx0c3VwZXIoYXBwLCBwbHVnaW4pO1xuXHRcdHRoaXMucGx1Z2luID0gcGx1Z2luO1xuXHR9XG5cblx0ZGlzcGxheSgpOiB2b2lkIHtcblx0XHRjb25zdCB7IGNvbnRhaW5lckVsIH0gPSB0aGlzO1xuXG5cdFx0Y29udGFpbmVyRWwuZW1wdHkoKTtcblxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiaDFcIiwgeyB0ZXh0OiBcIk9ic2lkaWFuIEVhc3lUeXBpbmcgUGx1Z2luXCIgfSk7XG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoXCJwXCIsIHsgdGV4dDogXCJNb3JlIGRldGFpbCBpcyBpbiBHaXRodWI6IFwiIH0pLmNyZWF0ZUVsKFwiYVwiLCB7XG5cdFx0XHR0ZXh0OiBcImVhc3ktdHlwaW5nLW9ic2lkaWFuXCIsXG5cdFx0XHRocmVmOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9ZYW96aHV3YS9lYXN5LXR5cGluZy1vYnNpZGlhblwiLFxuXHRcdH0pO1xuXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2gyJywgeyB0ZXh0OiAnXHU1ODlFXHU1RjNBXHU3RjE2XHU4RjkxXHU4QkJFXHU3RjZFIChFbmhhbmNlZCBFZGl0aW5nIFNldHRpbmcpJyB9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJTeW1ib2wgYXV0byBwYWlyIGFuZCBkZWxldGUgd2l0aCBwYWlyXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTg5RVx1NTJBMFx1NTkxQVx1NzlDRFx1N0IyNlx1NTNGN1x1OTE0RFx1NUJGOVx1OEY5M1x1NTE2NVx1RkYwQ1x1OTE0RFx1NUJGOVx1NTIyMFx1OTY2NFx1RkYwQ1x1NTk4Mlx1MzAwQVx1MzAwQiwgXHUyMDFDXHUyMDFELCBcdTMwMENcdTMwMEQsIFx1MzAwRVx1MzAwRixcdTMwMTBcdTMwMTFcdTdCNDlcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuSW50cmluc2ljU3ltYm9sUGFpcnMpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuSW50cmluc2ljU3ltYm9sUGFpcnMgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU2VsZWN0aW9uIFJlcGxhY2UgRW5oYW5jZW1lbnRcIilcblx0XHRcdC5zZXREZXNjKFwiXHU5MDA5XHU0RTJEXHU2NTg3XHU2NzJDXHU2MEM1XHU1MUI1XHU0RTBCXHU3Njg0XHU3RjE2XHU4RjkxXHU1ODlFXHU1RjNBXHVGRjBDXHU2MzA5XHVGRkU1XHUyMTkyJFx1OTAwOVx1NEUyRFx1NzY4NFx1NjU4N1x1NjcyQyQsIFx1NjMwOVx1MDBCN1x1MjE5MmBcdTkwMDlcdTRFMkRcdTc2ODRcdTY1ODdcdTY3MkNgXHVGRjBDXHUzMDBBIFx1MjE5MiBcdTMwMEFcdTkwMDlcdTRFMkRcdTc2ODRcdTY1ODdcdTY3MkNcdTMwMEJcdTdCNDlcdTdCNDlcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuU2VsZWN0aW9uRW5oYW5jZSlcblx0XHRcdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5TZWxlY3Rpb25FbmhhbmNlID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkNvbnZlcnQgc3VjY2Vzc2l2ZSBmdWxsIHdpZHRoIHN5bWJvbCB0byBoYWxmIHdpZHRoIHN5bWJvbFwiKVxuXHRcdFx0LnNldERlc2MoXCJcdThGREVcdTdFRURcdThGOTNcdTUxNjVcdTUxNjhcdTg5RDJcdTdCMjZcdTUzRjdcdThGNkNcdTUzNEFcdTg5RDJcdUZGMENcdTMwMDJcdTMwMDJcdTIxOTIgLlx1RkYwQ1x1RkYwMVx1RkYwMVx1MjE5MiAhXHVGRjBDIFx1MzAwQlx1MzAwQlx1MjE5MiA+XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkZXMkhXRW5oYW5jZSlcblx0XHRcdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5GVzJIV0VuaGFuY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiQmFzaWMgc3ltYm9sIGlucHV0IGVuaGFuY2UgZm9yIG9ic2lkaWFuXCIpXG5cdFx0XHQuc2V0RGVzYyhcIk9ic2lkaWFuIFx1NzY4NFx1NTdGQVx1Nzg0MFx1OEY5M1x1NTE2NVx1NTg5RVx1NUYzQVx1RkYwQ1x1NTk4Mlx1MzAxMFx1MzAxMHwgXHUyMTkyIFtbfF1dXHVGRjBDXHU1M0U1XHU5OTk2XHU3Njg0XHUzMDAxXHUyMTkyIC9cdUZGMENcdTUzRTVcdTk5OTZcdTc2ODRcdTMwMEJcdTIxOTIgPlx1RkYwQ1x1MDBCN1x1MDBCN3wgXHUyMTkyIGB8YFx1RkYwQyBgXHUwMEI3fGAgXHU1M0Q4XHU2MjEwXHU0RUUzXHRcdTc4MDFcdTU3NTdcdUZGMENcdUZGRTVcdUZGRTV8IFx1MjE5MiAkfCRcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuQmFzZU9iRWRpdEVuaGFuY2UpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuQmFzZU9iRWRpdEVuaGFuY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiVGFib3V0XCIpXG5cdFx0XHQuc2V0RGVzYyhcIlRhYm91dCBpbmxpbmUgY29kZS4gVGFiXHU4REYzXHU1MUZBXHU4ODRDXHU1MTg1XHU0RUUzXHU3ODAxXHU1NzU3XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlRhYm91dClcblx0XHRcdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5UYWJvdXQgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDInLCB7IHRleHQ6ICdcdTgxRUFcdTVCOUFcdTRFNDlcdTdGMTZcdThGOTFcdThGNkNcdTYzNjJcdTg5QzRcdTUyMTkgKEN1c3RvbWl6ZSBFZGl0IENvbnZlcnRpb24gUnVsZSknIH0pO1xuXHRcdHRoaXMuYnVpbGRVc2VyU2VsUmVwUnVsZVNldHRpbmcodGhpcy5jb250YWluZXJFbC5jcmVhdGVFbChcImRldGFpbHNcIiwge1xuXHRcdFx0Y2xzOiBcImVhc3l0eXBpbmctbmVzdGVkLXNldHRpbmdzXCIsXG5cdFx0XHRhdHRyOiB7XG5cdFx0XHRcdC4uLih0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyU2VsUnVsZVNldHRpbmdzT3Blbj97IG9wZW46IHRydWUgfTp7fSlcblx0XHRcdH1cblx0XHR9KSlcblxuXHRcdHRoaXMuYnVpbGRVc2VyRGVsZXRlUnVsZVNldHRpbmcodGhpcy5jb250YWluZXJFbC5jcmVhdGVFbChcImRldGFpbHNcIiwge1xuXHRcdFx0Y2xzOiBcImVhc3l0eXBpbmctbmVzdGVkLXNldHRpbmdzXCIsXG5cdFx0XHRhdHRyOiB7XG5cdFx0XHRcdC4uLih0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyRGVsUnVsZVNldHRpbmdzT3Blbj97IG9wZW46IHRydWUgfTp7fSlcblx0XHRcdH1cblx0XHR9KSlcblxuXHRcdHRoaXMuYnVpbGRVc2VyQ29udmVydFJ1bGVTZXR0aW5nKHRoaXMuY29udGFpbmVyRWwuY3JlYXRlRWwoXCJkZXRhaWxzXCIsIHtcblx0XHRcdGNsczogXCJlYXN5dHlwaW5nLW5lc3RlZC1zZXR0aW5nc1wiLFxuXHRcdFx0YXR0cjoge1xuXHRcdFx0XHQuLi4odGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckN2dFJ1bGVTZXR0aW5nc09wZW4/eyBvcGVuOiB0cnVlIH06e30pXG5cdFx0XHR9XG5cdFx0fSkpXG5cdFx0XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDInLCB7IHRleHQ6ICdcdTgxRUFcdTUyQThcdTY4M0NcdTVGMEZcdTUzMTZcdThCQkVcdTdGNkUgKEF1dG9mb3JtYXQgU2V0dGluZyknIH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkF1dG8gZm9ybWF0dGluZyB3aGVuIHR5cGluZ1wiKVxuXHRcdFx0LnNldERlc2MoXCJcdTY2MkZcdTU0MjZcdTU3MjhcdTdGMTZcdThGOTFcdTY1ODdcdTY4NjNcdTY1RjZcdTgxRUFcdTUyQThcdTY4M0NcdTVGMEZcdTUzMTZcdTY1ODdcdTY3MkNcdUZGMENcdTgxRUFcdTUyQThcdTY4M0NcdTVGMEZcdTUzMTZcdTc2ODRcdTYwM0JcdTVGMDBcdTUxNzNcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuQXV0b0Zvcm1hdClcblx0XHRcdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5BdXRvRm9ybWF0ID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdwJywgeyB0ZXh0OiAnRGV0YWlsZWQgU2V0dGluZyBCZWxvdycgfSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3BhY2UgYmV0d2VlbiBDaGluZXNlIGFuZCBFbmdsaXNoXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOFx1NEUyRFx1NjU4N1x1NTQ4Q1x1ODJGMVx1NjU4N1x1OTVGNFx1N0E3QVx1NjgzQ1wiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5DaGluZXNlRW5nbGlzaFNwYWNlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5DaGluZXNlRW5nbGlzaFNwYWNlID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3BhY2UgYmV0d2VlbiBDaGluZXNlIGFuZCBOdW1iZXJcIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4XHU0RTJEXHU2NTg3XHU1NDhDXHU2NTcwXHU1QjU3XHU5NUY0XHU3QTdBXHU2ODNDXCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkNoaW5lc2VOdW1iZXJTcGFjZSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuQ2hpbmVzZU51bWJlclNwYWNlID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNwYWNlIGJldHdlZW4gRW5naWxzaCBhbmQgTnVtYmVyXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOFx1ODJGMVx1NjU4N1x1NTQ4Q1x1NjU3MFx1NUI1N1x1OTVGNFx1N0E3QVx1NjgzQ1wiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5FbmdsaXNoTnVtYmVyU3BhY2UpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkVuZ2xpc2hOdW1iZXJTcGFjZSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkRlbGV0ZSB0aGUgU3BhY2UgYmV0d2VlbiBDaGluZXNlIGNoYXJhY3RlcnNcIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4XHU0RTJEXHU2NTg3XHU1QjU3XHU3QjI2XHU5NUY0XHU1M0JCXHU5NjY0XHU3QTdBXHU2ODNDXCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkNoaW5lc2VOb1NwYWNlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5DaGluZXNlTm9TcGFjZSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkNhcGl0YWxpemUgdGhlIGZpcnN0IGxldHRlciBvZiBldmVyeSBzZW50ZW5jZVwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTgyRjFcdTY1ODdcdTZCQ0ZcdTRFMkFcdTUzRTVcdTk5OTZcdTVCNTdcdTZCQ0RcdTU5MjdcdTUxOTlcIilcblx0XHRcdC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFdvcmtNb2RlLk9ubHlXaGVuVHlwaW5nLCBcIlx1OEY5M1x1NTE2NVx1NjVGNlx1NzUxRlx1NjU0OChPbmx5IFdoZW4gVHlwaW5nKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFdvcmtNb2RlLkdsb2JhbGx5LCBcIlx1NTE2OFx1NUM0MFx1NzUxRlx1NjU0OChXb3JrIEdsb2JhbGx5KVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuQXV0b0NhcGl0YWxNb2RlKTtcblx0XHRcdFx0ZHJvcGRvd24ub25DaGFuZ2UoYXN5bmMgKHY6IFdvcmtNb2RlLk9ubHlXaGVuVHlwaW5nIHwgV29ya01vZGUuR2xvYmFsbHkpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5BdXRvQ2FwaXRhbE1vZGUgPSB2O1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VG9vbHRpcChcIlx1NTI5Rlx1ODBGRFx1NUYwMFx1NTE3MyhTd2l0Y2gpXCIpO1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuQXV0b0NhcGl0YWwpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkF1dG9DYXBpdGFsID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU21hcnRseSBpbnNlcnQgc3BhY2UgYmV0d2VlbiB0ZXh0IGFuZCBwdW5jdHVhdGlvblwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU3MjhcdTY1ODdcdTY3MkNcdTU0OENcdTY4MDdcdTcwQjlcdTk1RjRcdTZERkJcdTUyQTBcdTdBN0FcdTY4M0NcIilcblx0XHRcdC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFdvcmtNb2RlLk9ubHlXaGVuVHlwaW5nLCBcIlx1OEY5M1x1NTE2NVx1NjVGNlx1NzUxRlx1NjU0OChPbmx5IFdoZW4gVHlwaW5nKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFdvcmtNb2RlLkdsb2JhbGx5LCBcIlx1NTE2OFx1NUM0MFx1NzUxRlx1NjU0OChXb3JrIEdsb2JhbGx5KVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuUHVuY3R1YXRpb25TcGFjZU1vZGUpO1xuXHRcdFx0XHRkcm9wZG93bi5vbkNoYW5nZShhc3luYyAodjogV29ya01vZGUuT25seVdoZW5UeXBpbmcgfCBXb3JrTW9kZS5HbG9iYWxseSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2VNb2RlID0gdjtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2UpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJTcGFjZSBzdGF0ZWd5IGJldHdlZW4gaW5saW5lIGNvZGUgYW5kIHRleHRcIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4IGBcdTg4NENcdTUxODVcdTRFRTNcdTc4MDFgIFx1NTQ4Q1x1NjU4N1x1NjcyQ1x1OTVGNFx1NzY4NFx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVx1MzAwMlwiICtcblx0XHRcdFx0XCJcdTY1RTBcdTg5ODFcdTZDNDJcdUZGMUFcdTVCRjlcdTY3MkNcdTdDN0JcdTUyMkJcdTU3NTdcdTRFMEVcdTVERTZcdTUzRjNcdTY1ODdcdTY3MkNcdTZDQTFcdTY3MDlcdTdBN0FcdTY4M0NcdTc2ODRcdTg5ODFcdTZDNDJcdUZGMENcIiArXG5cdFx0XHRcdFwiXHU4RjZGXHU3QTdBXHU2ODNDXHVGRjFBXHU1QkY5XHU2NzJDXHU3QzdCXHU1MjJCXHU1NzU3XHU0RTBFXHU1NDY4XHU1NkY0XHU1MzNBXHU1NzU3XHU1M0VBXHU4OTgxXHU2QzQyXHU2NzA5XHU4RjZGXHU3QTdBXHU2ODNDXHVGRjBDXHU4RjZGXHU3QTdBXHU2ODNDXHU1OTgyXHU1RjUzXHU1MjREXHU1NzU3XHU1REU2XHU4RkI5XHU3Njg0XHU0RTM0XHU4RkQxXHU2NTg3XHU2NzJDXHU0RTNBXHUzMDAyXHVGRjBDXHVGRjFCXHVGRjFGXHU3QjQ5XHU1MTY4XHU4OUQyXHU2ODA3XHU3MEI5XHVGRjBDXHU1RjUzXHU1MjREXHU1NzU3XHU1M0YzXHU4RkI5XHU3Njg0XHU0RTM0XHU4RkQxXHU2NTg3XHU2NzJDXHU0RTNBXHU2MjQwXHU2NzA5XHU1MTY4XHU1MzRBXHU4OUQyXHU2ODA3XHU3MEI5XHVGRjBDXCIgK1xuXHRcdFx0XHRcIlx1NEUyNVx1NjgzQ1x1N0E3QVx1NjgzQ1x1RkYxQVx1NUY1M1x1NTI0RFx1NTc1N1x1NEUwRVx1NEUzNFx1OEZEMVx1NjU4N1x1NjcyQ1x1NEU0Qlx1OTVGNFx1NEUyNVx1NjgzQ1x1NkRGQlx1NTJBMFx1N0E3QVx1NjgzQ1x1MzAwMlwiXG5cdFx0XHQpXG5cdFx0XHQuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5ub25lKSwgXCJcdTY1RTBcdTg5ODFcdTZDNDIoTm8gUmVxdWlyZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5zb2Z0KSwgXCJcdThGNkZcdTdBN0FcdTY4M0MoU29mdCBTcGFjZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5zdHJpY3QpLCBcIlx1NEUyNVx1NjgzQ1x1N0E3QVx1NjgzQyhTdHJpY3QgU3BhY2UpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5zZXRWYWx1ZShTdHJpbmcodGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZSkpO1xuXHRcdFx0XHRkcm9wZG93bi5vbkNoYW5nZShhc3luYyAodjogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZSA9IHN0cmluZzJTcGFjZVN0YXRlKHYpO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KVxuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3BhY2Ugc3RhdGVneSBiZXR3ZWVuIGlubGluZSBmb3JtdWxhIGFuZCB0ZXh0XCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOCAkXHU4ODRDXHU1MTg1XHU1MTZDXHU1RjBGJCBcdTU0OENcdTY1ODdcdTY3MkNcdTk1RjRcdTc2ODRcdTdBN0FcdTY4M0NcdTdCNTZcdTc1NjVcIilcblx0XHRcdC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFN0cmluZyhTcGFjZVN0YXRlLm5vbmUpLCBcIlx1NjVFMFx1ODk4MVx1NkM0MihObyBSZXF1aXJlKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFN0cmluZyhTcGFjZVN0YXRlLnNvZnQpLCBcIlx1OEY2Rlx1N0E3QVx1NjgzQyhTb2Z0IFNwYWNlKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFN0cmluZyhTcGFjZVN0YXRlLnN0cmljdCksIFwiXHU0RTI1XHU2ODNDXHU3QTdBXHU2ODNDKFN0cmljdCBTcGFjZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLnNldFZhbHVlKFN0cmluZyh0aGlzLnBsdWdpbi5zZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlKSk7XG5cdFx0XHRcdGRyb3Bkb3duLm9uQ2hhbmdlKGFzeW5jICh2OiBzdHJpbmcpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlID0gc3RyaW5nMlNwYWNlU3RhdGUodik7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJTcGFjZSBzdHJhdGVneSBiZXR3ZWVuIGxpbmsgYW5kIHRleHRcIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4IFtbd2lraWxpbmtdXSBbbWRsaW5rXSguLi4pIFx1NTQ4Q1x1NjU4N1x1NjcyQ1x1OTVGNFx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVx1MzAwMlx1NjY3QVx1ODBGRFx1N0E3QVx1NjgzQ1x1NkEyMVx1NUYwRlx1NEUwQlx1NTIxOVx1NEYxQVx1ODAwM1x1ODY1MVx1OEJFNVx1OTRGRVx1NjNBNVx1NTc1N1x1NzY4NFx1NjYzRVx1NzkzQVx1NTE4NVx1NUJCOVx1RkYwOFx1NTk4Mndpa2lcdTk0RkVcdTYzQTVcdTc2ODRcdTUyMkJcdTU0MERcdUZGMDlcdTY3NjVcdTRFMEVcdTRFMzRcdThGRDFcdTY1ODdcdTY3MkNcdThGREJcdTg4NENcdTdBN0FcdTY4M0NcdTMwMDJcIilcblx0XHRcdC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFwiZHVtbXlcIiwgXCJcdTU0NDZcdTdBN0FcdTY4M0MoZHVtbXkpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oXCJzbWFydFwiLCBcIlx1NjY3QVx1ODBGRFx1N0E3QVx1NjgzQyhTbWFydClcIik7XG5cdFx0XHRcdGRyb3Bkb3duLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUxpbmtTbWFydFNwYWNlID8gXCJzbWFydFwiIDogXCJkdW1teVwiKTtcblx0XHRcdFx0ZHJvcGRvd24ub25DaGFuZ2UoYXN5bmMgKHY6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUxpbmtTbWFydFNwYWNlID0gdiA9PSBcInNtYXJ0XCIgPyB0cnVlIDogZmFsc2U7XG5cdFx0XHRcdFx0Ly8gbmV3IE5vdGljZShTdHJpbmcodGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lTGlua1NtYXJ0U3BhY2UpKTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0XHQuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5ub25lKSwgXCJcdTY1RTBcdTg5ODFcdTZDNDIoTm8gUmVxdWlyZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5zb2Z0KSwgXCJcdThGNkZcdTdBN0FcdTY4M0MoU29mdCBTcGFjZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5zdHJpY3QpLCBcIlx1NEUyNVx1NjgzQ1x1N0E3QVx1NjgzQyhTdHJpY3QgU3BhY2UpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5zZXRWYWx1ZShTdHJpbmcodGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZSkpO1xuXHRcdFx0XHRkcm9wZG93bi5vbkNoYW5nZShhc3luYyAodjogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZSA9IHN0cmluZzJTcGFjZVN0YXRlKHYpO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHsgdGV4dDogJ1x1ODFFQVx1NUI5QVx1NEU0OVx1NkI2M1x1NTIxOVx1NTMzQVx1NTc1NyAoQ3VzdG9tIHJlZ3VsYXIgZXhwcmVzc2lvbnMgYmxvY2spJyB9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiVXNlciBEZWZpbmVkIFJlZ0V4cCBTd2l0Y2hcIilcblx0XHRcdC5zZXREZXNjKFwiXHU4MUVBXHU1QjlBXHU0RTQ5XHU2QjYzXHU1MjE5XHU4ODY4XHU4RkJFXHU1RjBGXHU1RjAwXHU1MTczXHVGRjBDXHU1MzM5XHU5MTREXHU1MjMwXHU3Njg0XHU1MTg1XHU1QkI5XHU0RTBEXHU4RkRCXHU4ODRDXHU2ODNDXHU1RjBGXHU1MzE2XHVGRjBDXHU0RTE0XHU1M0VGXHU0RUU1XHU4QkJFXHU3RjZFXHU1MzM5XHU5MTREXHU1MjMwXHU3Njg0XHU1MTg1XHU1QkI5XHU1NzU3XHU0RTBFXHU1MTc2XHU0RUQ2XHU1MTg1XHU1QkI5XHU0RTRCXHU5NUY0XHU3Njg0XHU3QTdBXHU2ODNDXHU3QjU2XHU3NTY1XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlVzZXJEZWZpbmVkUmVnU3dpdGNoKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5Vc2VyRGVmaW5lZFJlZ1N3aXRjaCA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoXCJwXCIsIHsgdGV4dDogXCJcdTZCNjNcdTUyMTlcdTg4NjhcdThGQkVcdTVGMEZcdTc2RjhcdTUxNzNcdTc3RTVcdThCQzZcdUZGMENcdTg5QzEgXCIgfSkuY3JlYXRlRWwoXCJhXCIsIHtcblx0XHRcdHRleHQ6IFwiXHUzMDBBXHU5NjJFXHU0RTAwXHU1Q0YwXHVGRjFBXHU2QjYzXHU1MjE5XHU4ODY4XHU4RkJFXHU1RjBGXHU3QjgwXHU2NjBFXHU2NTU5XHU3QTBCXHUzMDBCXCIsXG5cdFx0XHRocmVmOiBcImh0dHBzOi8vamF2YXNjcmlwdC5ydWFueWlmZW5nLmNvbS9zdGRsaWIvcmVnZXhwLmh0bWwjXCIsXG5cdFx0fSk7XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbChcInBcIiwgeyB0ZXh0OiBcIlx1NkI2M1x1NTIxOVx1ODg2OFx1OEZCRVx1NUYwRlx1ODlDNFx1NTIxOVx1NEY3Rlx1NzUyOFx1OEJGNFx1NjYwRVx1NEUwRVx1NzkzQVx1NEY4Qlx1RkYxQVwiIH0pLmNyZWF0ZUVsKFwiYVwiLCB7XG5cdFx0XHR0ZXh0OiBcIlx1ODFFQVx1NUI5QVx1NEU0OVx1NkI2M1x1NTIxOVx1ODg2OFx1OEZCRVx1NUYwRlx1ODlDNFx1NTIxOVwiLFxuXHRcdFx0aHJlZjogXCJodHRwczovL2dpdGh1Yi5jb20vWWFvemh1d2EvZWFzeS10eXBpbmctb2JzaWRpYW4vYmxvYi9tYXN0ZXIvVXNlckRlZmluZWRSZWdFeHAubWRcIixcblx0XHR9KTtcblxuXHRcdGNvbnN0IHJlZ0NvbnRlbnRBcmVhU2V0dGluZyA9IG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKTtcblx0XHRyZWdDb250ZW50QXJlYVNldHRpbmcuc2V0dGluZ0VsLnNldEF0dHJpYnV0ZShcblx0XHRcdFwic3R5bGVcIixcblx0XHRcdFwiZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XCJcblx0XHQpO1xuXHRcdHJlZ0NvbnRlbnRBcmVhU2V0dGluZ1xuXHRcdFx0LnNldE5hbWUoXCJVc2VyLWRlZmluZWQgUmVndWxhciBFeHByZXNzaW9uLCBvbmUgZXhwcmVzc2lvbiBwZXIgbGluZVwiKVxuXHRcdFx0LnNldERlc2MoXG5cdFx0XHRcdFwiXHU3NTI4XHU2MjM3XHU4MUVBXHU1QjlBXHU0RTQ5XHU2QjYzXHU1MjE5XHU4ODY4XHU4RkJFXHU1RjBGXHVGRjBDXHU1MzM5XHU5MTREXHU1MjMwXHU3Njg0XHU1MTg1XHU1QkI5XHU0RTBEXHU4RkRCXHU4ODRDXHU2ODNDXHU1RjBGXHU1MzE2XHVGRjBDXHU2QkNGXHU4ODRDXHU0RTAwXHU0RTJBXHU4ODY4XHU4RkJFXHU1RjBGXHVGRjBDXHU4ODRDXHU1QzNFXHU0RTBEXHU4OTgxXHU5NjhGXHU2MTBGXHU1MkEwXHU3QTdBXHU2ODNDXHUzMDAyXCIgK1xuXHRcdFx0XHRcIlx1NkJDRlx1ODg0Q1x1NjcyQlx1NUMzRTNcdTRFMkFcdTVCNTdcdTdCMjZcdTc2ODRcdTU2RkFcdTVCOUFcdTRFM0F8XHU1NDhDXHU0RTI0XHU0RTJBXHU3QTdBXHU2ODNDXHU3QjU2XHU3NTY1XHU3QjI2XHU1M0Y3XHVGRjBDXHU3QTdBXHU2ODNDXHU3QjU2XHU3NTY1XHU3QjI2XHU1M0Y3XHU0RTNBLT0rXHVGRjBDXHU1MjA2XHU1MjJCXHU0RUUzXHU4ODY4XHU0RTBEXHU4OTgxXHU2QzQyXHU3QTdBXHU2ODNDKC0pXHVGRjBDXHU4RjZGXHU3QTdBXHU2ODNDKD0pXHVGRjBDXHU0RTI1XHU2ODNDXHU3QTdBXHU2ODNDKCspXHUzMDAyXCIgK1xuXHRcdFx0XHRcIlx1OEZEOVx1NEUyNFx1NEUyQVx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVx1N0IyNlx1NTNGN1x1NTIwNlx1NTIyQlx1NEUzQVx1NTMzOVx1OTE0RFx1NTMzQVx1NTc1N1x1NzY4NFx1NURFNlx1NTNGM1x1NEUyNFx1OEZCOVx1NzY4NFx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVwiXG5cdFx0XHQpO1xuXHRcdGNvbnN0IHJlZ0NvbnRlbnRBcmVhID0gbmV3IFRleHRBcmVhQ29tcG9uZW50KFxuXHRcdFx0cmVnQ29udGVudEFyZWFTZXR0aW5nLmNvbnRyb2xFbFxuXHRcdCk7XG5cblx0XHRzZXRBdHRyaWJ1dGVzKHJlZ0NvbnRlbnRBcmVhLmlucHV0RWwsIHtcblx0XHRcdHN0eWxlOiBcIm1hcmdpbi10b3A6IDEycHg7IHdpZHRoOiAxMDAlOyAgaGVpZ2h0OiAzMHZoO1wiLFxuXHRcdFx0Ly8gY2xhc3M6IFwibXMtY3NzLWVkaXRvclwiLFxuXHRcdH0pO1xuXHRcdHJlZ0NvbnRlbnRBcmVhXG5cdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuVXNlckRlZmluZWRSZWdFeHApXG5cdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlVzZXJEZWZpbmVkUmVnRXhwID0gdmFsdWU7XG5cdFx0XHRcdHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0fSk7XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDInLCB7IHRleHQ6ICdcdTYzMDdcdTVCOUFcdTY1ODdcdTRFRjZcdTRFMERcdTgxRUFcdTUyQThcdTY4M0NcdTVGMEZcdTUzMTYgKEV4Y2x1ZGUgRm9sZGVycy9GaWxlcyknIH0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJFeGNsdWRlIEZvbGRlcnMvRmlsZXNcIilcblx0XHRcdC5zZXREZXNjKFwiVGhpcyBwbHVnaW4gd2lsbCBwYXJzZSBlYWNoIGxpbmUgYXMgYSBleGx1ZGUgZm9sZGVyIG9yIGZpbGUuIEZvciBleGFtcGxlOiBEYWlseU5vdGUvLCBEYWlseU5vdGUvV2Vla05vdGVzLywgRGFpbHlOb3RlL3Rlc3QubWRcIilcblx0XHRcdC5hZGRUZXh0QXJlYSgodGV4dCkgPT5cblx0XHRcdFx0dGV4dFxuXHRcdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5FeGNsdWRlRmlsZXMpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuRXhjbHVkZUZpbGVzID0gdmFsdWU7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KVxuXHRcdFx0KTtcblxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHsgdGV4dDogJ0V4cGVyaW1lbnRhbCBGZWF0dXJlcycgfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkVuaGFuY2UgQ2hpbmVzZSBJbnB1dCBNZXRob2RcIilcblx0XHRcdC5zZXREZXNjKFwiXHU0RTJEXHU2NTg3XHU4RjkzXHU1MTY1XHU2Q0Q1XHU0RTBCXHVGRjBDXHU1NkRFXHU4RjY2XHU4RjkzXHU1MTY1XHU4MkYxXHU2NTg3XHU2NUY2XHU4MUVBXHU1MkE4XHU2ODNDXHU1RjBGXHU1MzE2XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlRyeUZpeENoaW5lc2VJTSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuVHJ5Rml4Q2hpbmVzZUlNID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3RyaWN0IExpbmUgYnJlYWtzIE1vZGUgRW50ZXIgVHdpY2VcIilcblx0XHRcdC5zZXREZXNjKFwiXHU0RTI1XHU2ODNDXHU2MzYyXHU4ODRDXHU3Njg0XHU4QkJFXHU3RjZFXHU0RTBCXHVGRjBDXHU1NzI4XHU2NjZFXHU5MDFBXHU2NTg3XHU2NzJDXHU4ODRDXHU4RkRCXHU4ODRDXHU0RTAwXHU2QjIxXHU1NkRFXHU4RjY2XHU0RjFBXHU0RUE3XHU3NTFGXHU0RTI0XHU0RTJBXHU2MzYyXHU4ODRDXHU3QjI2XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkVudGVyVHdpY2UpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkVudGVyVHdpY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiUHVuYyByZWN0aWZ5XCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NEVDNVx1NTcyOFx1OEY5M1x1NTE2NVx1OEZDN1x1N0EwQlx1NEUyRFx1RkYwQ1x1NEUyRFx1NjU4N1x1OTVGNFx1NzY4NFx1ODJGMVx1NjU4N1x1NjgwN1x1NzBCOVx1RkYwOCwuPyFcdUZGMDlcdTgxRUFcdTUyQThcdThGNkNcdTYzNjJcdTRFM0FcdTUxNjhcdTg5RDJcdUZGMDhcdTUzRUZcdTY0QTRcdTk1MDBcdUZGMDlcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuUHVuY1JlY3RpZnkpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlB1bmNSZWN0aWZ5ID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiUHJpbnQgZGVidWcgaW5mbyBpbiBjb25zb2xlXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOFx1NjNBN1x1NTIzNlx1NTNGMFx1OEY5M1x1NTFGQVx1OEMwM1x1OEJENVx1NEZFMVx1NjA2RlwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5kZWJ1Zykub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuZGVidWcgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0fVxuXG5cdGJ1aWxkVXNlclNlbFJlcFJ1bGVTZXR0aW5nKGNvbnRhaW5lckVsOiBIVE1MRGV0YWlsc0VsZW1lbnQpe1xuXHRcdGNvbnRhaW5lckVsLmVtcHR5KCk7XG4gICAgICAgIGNvbnRhaW5lckVsLm9udG9nZ2xlID0gYXN5bmMgKCkgPT4ge1xuXHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlclNlbFJ1bGVTZXR0aW5nc09wZW4gPSBjb250YWluZXJFbC5vcGVuO1xuXHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgIH07XG5cdFx0Y29uc3Qgc3VtbWFyeSA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwic3VtbWFyeVwiLCB7Y2xzOiBcImVhc3l0eXBpbmctbmVzdGVkLXNldHRpbmdzXCJ9KTtcblx0XHRzdW1tYXJ5LnNldFRleHQoXCJcdTgxRUFcdTVCOUFcdTRFNDlcdTkwMDlcdTRFMkRcdTY1ODdcdTY3MkNcdTdGMTZcdThGOTFcdTU4OUVcdTVGM0FcdTg5QzRcdTUyMTkgKEN1c3RvbWl6ZSBTZWxlY3Rpb24gUmVwbGFjZSBSdWxlKVwiKVxuXG4gICAgICAgIC8vIHN1bW1hcnkuc2V0SGVhZGluZygpLnNldE5hbWUoXCJVc2VyIGRlZmluZWQgU2VsZWN0aW9uIFJlcGxhY2UgUnVsZVwiKTtcbiAgICAgICAgLy8gc3VtbWFyeS5jcmVhdGVEaXYoXCJjb2xsYXBzZXJcIikuY3JlYXRlRGl2KFwiaGFuZGxlXCIpO1xuXG5cdFx0Y29uc3Qgc2VsZWN0aW9uUnVsZVNldHRpbmcgPSBuZXcgU2V0dGluZyhjb250YWluZXJFbCk7XG5cdFx0c2VsZWN0aW9uUnVsZVNldHRpbmdcblx0XHRcdC5zZXROYW1lKFwiU2VsZWN0aW9uIFJlcGxlY2UgUnVsZVwiKVxuXG5cdFx0Y29uc3QgcmVwbGFjZVJ1bGVUcmlnZ2VyID0gbmV3IFRleHRDb21wb25lbnQoc2VsZWN0aW9uUnVsZVNldHRpbmcuY29udHJvbEVsKTtcblx0XHRyZXBsYWNlUnVsZVRyaWdnZXIuc2V0UGxhY2Vob2xkZXIoXCJUcmlnZ3IgU3ltYm9sXCIpO1xuXG5cdFx0Y29uc3QgcmVwbGFjZUxlZnRTdHJpbmcgPSBuZXcgVGV4dEFyZWFDb21wb25lbnQoc2VsZWN0aW9uUnVsZVNldHRpbmcuY29udHJvbEVsKTtcblx0XHRyZXBsYWNlTGVmdFN0cmluZy5zZXRQbGFjZWhvbGRlcihcIk5ldyBMZWZ0IFNpZGUgU3RyaW5nXCIpO1xuXG5cdFx0Y29uc3QgcmVwbGFjZVJpZ2h0U3RyaW5nID0gbmV3IFRleHRBcmVhQ29tcG9uZW50KHNlbGVjdGlvblJ1bGVTZXR0aW5nLmNvbnRyb2xFbCk7XG5cdFx0cmVwbGFjZVJpZ2h0U3RyaW5nLnNldFBsYWNlaG9sZGVyKFwiTmV3IFJpZ2h0IFNpZGUgU3RyaW5nXCIpO1xuXG5cdFx0c2VsZWN0aW9uUnVsZVNldHRpbmdcblx0XHRcdC5hZGRCdXR0b24oKGJ1dHRvbikgPT4ge1xuXHRcdFx0XHRidXR0b25cblx0XHRcdFx0XHQuc2V0QnV0dG9uVGV4dChcIitcIilcblx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIkFkZCBSdWxlXCIpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soYXN5bmMgKGJ1dHRvbkVsOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdGxldCB0cmlnZ2VyID0gcmVwbGFjZVJ1bGVUcmlnZ2VyLmlucHV0RWwudmFsdWU7XG5cdFx0XHRcdFx0XHRsZXQgbGVmdCA9IHJlcGxhY2VMZWZ0U3RyaW5nLmlucHV0RWwudmFsdWU7XG5cdFx0XHRcdFx0XHRsZXQgcmlnaHQgPSByZXBsYWNlUmlnaHRTdHJpbmcuaW5wdXRFbC52YWx1ZTtcblx0XHRcdFx0XHRcdGlmICh0cmlnZ2VyICYmIChsZWZ0IHx8IHJpZ2h0KSkge1xuXHRcdFx0XHRcdFx0XHRpZih0cmlnZ2VyLmxlbmd0aD4xKXtcblx0XHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwiSW5sdmFsaWQgdHJpZ2dlciwgdHJpZ2dlciBtdXN0IGJlIGEgc3ltYm9sIG9mIGxlbmd0aCAxXCIpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5wbHVnaW4uYWRkVXNlclNlbGVjdGlvblJlcFJ1bGUodHJpZ2dlciwgbGVmdCwgcmlnaHQpKXtcblx0XHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRlbHNle1xuXHRcdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJ3YXJuaW5nISBUcmlnZ2VyIFwiICsgdHJpZ2dlciArIFwiIGlzIGFscmVhZHkgZXhpc3QhXCIpXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwibWlzc2luZyBpbnB1dFwiKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0Ly8gY29uc3Qgc2VsUmVwUnVsZUNvbnRhaW5lciA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiZGl2XCIpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVUcmlnZ2VyLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgdHJpZ2dlciA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlcltpXTtcblx0XHRcdGxldCBsZWZ0X3MgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVZhbHVlW2ldLmxlZnQ7XG5cdFx0XHRsZXQgcmlnaHRfcyA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVmFsdWVbaV0ucmlnaHQ7XG5cdFx0XHRsZXQgc2hvd1N0ciA9IFwiVHJpZ2dlcjogXCIgKyB0cmlnZ2VyICsgXCIgXHUyMTkyIFwiICsgc2hvd1N0cmluZyhsZWZ0X3MpICsgXCJzZWxlY3RlZFwiICsgc2hvd1N0cmluZyhyaWdodF9zKTtcblx0XHRcdC8vIGNvbnN0IHNldHRpbmdJdGVtID0gc2VsUmVwUnVsZUNvbnRhaW5lci5jcmVhdGVFbChcImRpdlwiKTtcblx0XHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0XHQuc2V0TmFtZShzaG93U3RyKVxuXHRcdFx0XHQuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcblx0XHRcdFx0XHRidXR0b24uc2V0SWNvbihcImdlYXJcIilcblx0XHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiRWRpdCBydWxlXCIpXG5cdFx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdG5ldyBTZWxlY3RSdWxlRWRpdE1vZGFsKHRoaXMuYXBwLCB0cmlnZ2VyLGxlZnRfcywgcmlnaHRfcywgYXN5bmMgKG5ld19sZWZ0LCBuZXdfcmlnaHQpID0+IHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi51cGRhdGVVc2VyU2VsZWN0aW9uUmVwUnVsZShpLCBuZXdfbGVmdCwgbmV3X3JpZ2h0KTtcblx0XHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdFx0fSkub3BlbigpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0fSlcblx0XHRcdFx0LmFkZEV4dHJhQnV0dG9uKGJ1dHRvbiA9PiB7XG5cdFx0XHRcdFx0YnV0dG9uLnNldEljb24oXCJ0cmFzaFwiKVxuXHRcdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJSZW1vdmUgcnVsZVwiKVxuXHRcdFx0XHRcdFx0Lm9uQ2xpY2soYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5kZWxldGVVc2VyU2VsZWN0aW9uUmVwUnVsZShpKTtcblx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0fSk7XG5cdFx0fVxuXG5cblx0fVxuXG5cdGJ1aWxkVXNlckRlbGV0ZVJ1bGVTZXR0aW5nKGNvbnRhaW5lckVsOiBIVE1MRGV0YWlsc0VsZW1lbnQpe1xuXHRcdGNvbnRhaW5lckVsLmVtcHR5KCk7XG4gICAgICAgIGNvbnRhaW5lckVsLm9udG9nZ2xlID0gYXN5bmMgKCkgPT4ge1xuXHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckRlbFJ1bGVTZXR0aW5nc09wZW4gPSBjb250YWluZXJFbC5vcGVuO1xuXHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgIH07XG5cdFx0Y29uc3Qgc3VtbWFyeSA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwic3VtbWFyeVwiLCB7Y2xzOiBcImVhc3l0eXBpbmctbmVzdGVkLXNldHRpbmdzXCJ9KTtcblx0XHRzdW1tYXJ5LnNldFRleHQoXCJcdTgxRUFcdTVCOUFcdTRFNDlcdTUyMjBcdTk2NjRcdTdGMTZcdThGOTFcdTU4OUVcdTVGM0FcdTg5QzRcdTUyMTkgKEN1c3RvbWl6ZSBEZWxldGUgUnVsZSlcIilcblxuXHRcdGNvbnN0IGRlbGV0ZVJ1bGVTZXR0aW5nID0gbmV3IFNldHRpbmcoY29udGFpbmVyRWwpO1xuXHRcdGRlbGV0ZVJ1bGVTZXR0aW5nXG5cdFx0XHQuc2V0TmFtZShcIkRlbGV0ZSBSdWxlXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1ODlDNFx1NTIxOVx1RkYxQVx1NzUyOHxcdTRFRTNcdTg4NjhcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcdUZGMENcdTVGQzVcdTk4N0JcdTUzMDVcdTU0MkJcdTUxNDlcdTY4MDdcdTMwMDIgVGlwczogVXNpbmcgfCB0byBpbmRpY2F0ZSB0aGUgY3Vyc29yIHBvc2l0aW9uLlwiKVxuXG5cdFx0Y29uc3QgcGF0dGVybkJlZm9yZSA9IG5ldyBUZXh0QXJlYUNvbXBvbmVudChkZWxldGVSdWxlU2V0dGluZy5jb250cm9sRWwpO1xuXHRcdHBhdHRlcm5CZWZvcmUuc2V0UGxhY2Vob2xkZXIoXCJCZWZvcmUgRGVsZXRlXCIpO1xuXG5cdFx0Y29uc3QgcGF0dGVybkFmdGVyID0gbmV3IFRleHRBcmVhQ29tcG9uZW50KGRlbGV0ZVJ1bGVTZXR0aW5nLmNvbnRyb2xFbCk7XG5cdFx0cGF0dGVybkFmdGVyLnNldFBsYWNlaG9sZGVyKFwiTmV3IFBhdHRlcm5cIik7XG5cblx0XHRkZWxldGVSdWxlU2V0dGluZ1xuXHRcdFx0LmFkZEJ1dHRvbigoYnV0dG9uKSA9PiB7XG5cdFx0XHRcdGJ1dHRvblxuXHRcdFx0XHRcdC5zZXRCdXR0b25UZXh0KFwiK1wiKVxuXHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiQWRkIFJ1bGVcIilcblx0XHRcdFx0XHQub25DbGljayhhc3luYyAoYnV0dG9uRWw6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0bGV0IGJlZm9yZSA9IHBhdHRlcm5CZWZvcmUuaW5wdXRFbC52YWx1ZTtcblx0XHRcdFx0XHRcdGxldCBhZnRlciA9IHBhdHRlcm5BZnRlci5pbnB1dEVsLnZhbHVlO1xuXHRcdFx0XHRcdFx0aWYgKGJlZm9yZSAmJiBhZnRlcikge1xuXHRcdFx0XHRcdFx0XHRsZXQgcmVnUnVsZSA9IC9cXHwvZztcblx0XHRcdFx0XHRcdFx0aWYoYmVmb3JlLnNlYXJjaChyZWdSdWxlKT09LTF8fGFmdGVyLnNlYXJjaChyZWdSdWxlKT09LTEpe1xuXHRcdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJJbmx2YWxpZCB0cmlnZ2VyLCBwYXR0ZXJuIG11c3QgY29udGFpbiBzeW1ib2wgXFx8IHdoaWNoIGluZGljYXRlIGN1cnNvciBwb3NpdGlvblwiKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5hZGRVc2VyRGVsZXRlUnVsZShiZWZvcmUsIGFmdGVyKTtcblx0XHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJtaXNzaW5nIGlucHV0XCIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3QubGVuZ3RoOyBpKyspe1xuXHRcdFx0bGV0IGJlZm9yZSA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3RbaV1bMF07XG5cdFx0XHRsZXQgYWZ0ZXIgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0W2ldWzFdO1xuXHRcdFx0bGV0IHNob3dTdHIgPSBcIlxcXCJcIiArIHNob3dTdHJpbmcoYmVmb3JlKSArIFwiXFxcIiAgZGVsZXRlLmJhY2t3YXJkcyAgXHUyMTkyIFxcXCJcIisgc2hvd1N0cmluZyhhZnRlcikrXCJcXFwiXCI7IFxuXHRcdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHRcdC5zZXROYW1lKHNob3dTdHIpXG5cdFx0XHRcdC5hZGRFeHRyYUJ1dHRvbihidXR0b24gPT4ge1xuXHRcdFx0XHRcdGJ1dHRvbi5zZXRJY29uKFwiZ2VhclwiKVxuXHRcdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJFZGl0IHJ1bGVcIilcblx0XHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdFx0bmV3IEVkaXRDb252ZXJ0UnVsZU1vZGFsKHRoaXMuYXBwLCBSdWxlVHlwZS5kZWxldGUsIGJlZm9yZSwgYWZ0ZXIsIGFzeW5jIChuZXdfYmVmb3JlLCBuZXdfYWZ0ZXIpID0+IHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi51cGRhdGVVc2VyRGVsZXRlUnVsZShpLCBuZXdfYmVmb3JlLCBuZXdfYWZ0ZXIpO1xuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0XHR9KS5vcGVuKCk7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcblx0XHRcdFx0XHRidXR0b24uc2V0SWNvbihcInRyYXNoXCIpXG5cdFx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIlJlbW92ZSBydWxlXCIpXG5cdFx0XHRcdFx0XHQub25DbGljayhhc3luYyAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLmRlbGV0ZVVzZXJEZWxldGVSdWxlKGkpO1xuXHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9KTtcblx0XHR9XG5cblx0fVxuXG5cdGJ1aWxkVXNlckNvbnZlcnRSdWxlU2V0dGluZyhjb250YWluZXJFbDogSFRNTERldGFpbHNFbGVtZW50KXtcblx0XHRjb250YWluZXJFbC5lbXB0eSgpO1xuICAgICAgICBjb250YWluZXJFbC5vbnRvZ2dsZSA9IGFzeW5jICgpID0+IHtcblx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJDdnRSdWxlU2V0dGluZ3NPcGVuID0gY29udGFpbmVyRWwub3Blbjtcblx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICB9O1xuXHRcdGNvbnN0IHN1bW1hcnkgPSBjb250YWluZXJFbC5jcmVhdGVFbChcInN1bW1hcnlcIiwge2NsczogXCJlYXN5dHlwaW5nLW5lc3RlZC1zZXR0aW5nc1wifSk7XG5cdFx0c3VtbWFyeS5zZXRUZXh0KFwiXHU4MUVBXHU1QjlBXHU0RTQ5XHU3RjE2XHU4RjkxXHU4RjZDXHU2MzYyXHU4OUM0XHU1MjE5IChDdXN0b21pemUgQ29udmVydCBSdWxlKVwiKVxuXG5cdFx0Y29uc3QgY29udmVydFJ1bGVTZXR0aW5nID0gbmV3IFNldHRpbmcoY29udGFpbmVyRWwpO1xuXHRcdGNvbnZlcnRSdWxlU2V0dGluZ1xuXHRcdFx0LnNldE5hbWUoXCJDb252ZXJ0IFJ1bGVcIilcblx0XHRcdC5zZXREZXNjKFwiXHU4OUM0XHU1MjE5XHVGRjFBXHU3NTI4fFx1NEVFM1x1ODg2OFx1NTE0OVx1NjgwN1x1NEY0RFx1N0Y2RVx1RkYwQ1x1NUZDNVx1OTg3Qlx1NTMwNVx1NTQyQlx1NTE0OVx1NjgwN1x1MzAwMiBUaXBzOiBVc2luZyB8IHRvIGluZGljYXRlIHRoZSBjdXJzb3IgcG9zaXRpb24uXCIpXG5cblx0XHRjb25zdCBwYXR0ZXJuQmVmb3JlID0gbmV3IFRleHRBcmVhQ29tcG9uZW50KGNvbnZlcnRSdWxlU2V0dGluZy5jb250cm9sRWwpO1xuXHRcdHBhdHRlcm5CZWZvcmUuc2V0UGxhY2Vob2xkZXIoXCJCZWZvcmUgQ29udmVydFwiKTtcblxuXHRcdGNvbnN0IHBhdHRlcm5BZnRlciA9IG5ldyBUZXh0QXJlYUNvbXBvbmVudChjb252ZXJ0UnVsZVNldHRpbmcuY29udHJvbEVsKTtcblx0XHRwYXR0ZXJuQWZ0ZXIuc2V0UGxhY2Vob2xkZXIoXCJOZXcgUGF0dGVyblwiKTtcblxuXHRcdGNvbnZlcnRSdWxlU2V0dGluZ1xuXHRcdFx0LmFkZEJ1dHRvbigoYnV0dG9uKSA9PiB7XG5cdFx0XHRcdGJ1dHRvblxuXHRcdFx0XHRcdC5zZXRCdXR0b25UZXh0KFwiK1wiKVxuXHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiQWRkIFJ1bGVcIilcblx0XHRcdFx0XHQub25DbGljayhhc3luYyAoYnV0dG9uRWw6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0bGV0IGJlZm9yZSA9IHBhdHRlcm5CZWZvcmUuaW5wdXRFbC52YWx1ZTtcblx0XHRcdFx0XHRcdGxldCBhZnRlciA9IHBhdHRlcm5BZnRlci5pbnB1dEVsLnZhbHVlO1xuXHRcdFx0XHRcdFx0aWYgKGJlZm9yZSAmJiBhZnRlcikge1xuXHRcdFx0XHRcdFx0XHRsZXQgcmVnUnVsZSA9IC9cXHwvZztcblx0XHRcdFx0XHRcdFx0aWYoYmVmb3JlLnNlYXJjaChyZWdSdWxlKT09LTF8fGFmdGVyLnNlYXJjaChyZWdSdWxlKT09LTEpe1xuXHRcdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJJbmx2YWxpZCB0cmlnZ2VyLCBwYXR0ZXJuIG11c3QgY29udGFpbiBzeW1ib2wgXFx8IHdoaWNoIGluZGljYXRlIGN1cnNvciBwb3NpdGlvblwiKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5hZGRVc2VyQ29udmVydFJ1bGUoYmVmb3JlLCBhZnRlcik7XG5cdFx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwibWlzc2luZyBpbnB1dFwiKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdC5sZW5ndGg7IGkrKyl7XG5cdFx0XHRsZXQgYmVmb3JlID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3RbaV1bMF07XG5cdFx0XHRsZXQgYWZ0ZXIgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdFtpXVsxXTtcblx0XHRcdGxldCBzaG93U3RyID0gXCJcXFwiXCIgKyBzaG93U3RyaW5nKGJlZm9yZSkgKyBcIlxcXCIgIGF1dG8gY29udmVydCB0byBcXFwiXCIrIHNob3dTdHJpbmcoYWZ0ZXIpK1wiXFxcIlwiOyBcblx0XHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0XHQuc2V0TmFtZShzaG93U3RyKVxuXHRcdFx0XHQuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcblx0XHRcdFx0XHRidXR0b24uc2V0SWNvbihcImdlYXJcIilcblx0XHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiRWRpdCBydWxlXCIpXG5cdFx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdG5ldyBFZGl0Q29udmVydFJ1bGVNb2RhbCh0aGlzLmFwcCwgUnVsZVR5cGUuY29udmVydCwgYmVmb3JlLCBhZnRlciwgYXN5bmMgKG5ld19iZWZvcmUsIG5ld19hZnRlcikgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnVwZGF0ZVVzZXJDb252ZXJ0UnVsZShpLCBuZXdfYmVmb3JlLCBuZXdfYWZ0ZXIpO1xuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0XHR9KS5vcGVuKCk7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcblx0XHRcdFx0XHRidXR0b24uc2V0SWNvbihcInRyYXNoXCIpXG5cdFx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIlJlbW92ZSBydWxlXCIpXG5cdFx0XHRcdFx0XHQub25DbGljayhhc3luYyAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLmRlbGV0ZVVzZXJDb252ZXJ0UnVsZShpKTtcblx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cbn1cblxuXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGVzKGVsZW1lbnQ6IGFueSwgYXR0cmlidXRlczogYW55KSB7XG5cdGZvciAobGV0IGtleSBpbiBhdHRyaWJ1dGVzKSB7XG5cdFx0ZWxlbWVudC5zZXRBdHRyaWJ1dGUoa2V5LCBhdHRyaWJ1dGVzW2tleV0pO1xuXHR9XG59XG5cblxuZXhwb3J0IGNsYXNzIFNlbGVjdFJ1bGVFZGl0TW9kYWwgZXh0ZW5kcyBNb2RhbCB7XG5cdHRyaWdnZXI6IHN0cmluZztcblx0b2xkX2xlZnQ6IHN0cmluZztcblx0b2xkX3JpZ2h0OiBzdHJpbmc7XG5cdG5ld19sZWZ0OiBzdHJpbmc7XG5cdG5ld19yaWdodDogc3RyaW5nO1xuXHRvblN1Ym1pdDogKG5ld19sZWZ0OiBzdHJpbmcsIG5ld19yaWdodDpzdHJpbmcpID0+IHZvaWQ7XG5cblx0Y29uc3RydWN0b3IoYXBwOiBBcHAsIHRyaWdnZXI6IHN0cmluZywgbGVmdDogc3RyaW5nLCByaWdodDogc3RyaW5nLCBvblN1Ym1pdDogKG5ld19sZWZ0OiBzdHJpbmcsIG5ld19yaWdodDpzdHJpbmcpID0+IHZvaWQpIHtcblx0XHRzdXBlcihhcHApO1xuXHRcdHRoaXMudHJpZ2dlciA9IHRyaWdnZXI7XG5cdFx0dGhpcy5vbGRfbGVmdCA9IGxlZnQ7XG5cdFx0dGhpcy5vbGRfcmlnaHQgPSByaWdodDtcblx0XHR0aGlzLm5ld19sZWZ0ID0gbGVmdDtcblx0XHR0aGlzLm5ld19yaWdodCA9IHJpZ2h0O1xuXG5cdFx0dGhpcy5vblN1Ym1pdCA9IG9uU3VibWl0O1xuXHR9XG5cblx0b25PcGVuKCkge1xuXHRcdGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xuXG5cdFx0Y29udGVudEVsLmNyZWF0ZUVsKFwiaDFcIiwgeyB0ZXh0OiBcIkVkaXQgU2VsZWN0aW9uIFJlcGxhY2UgUnVsZVwiIH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGVudEVsKVxuXHRcdFx0LnNldE5hbWUoXCJUcmlnZ2VyXCIpXG5cdFx0XHQuYWRkVGV4dCgodGV4dCkgPT4ge1xuXHRcdFx0XHR0ZXh0LnNldFZhbHVlKHRoaXMudHJpZ2dlcik7XG5cdFx0XHRcdHRleHQuc2V0RGlzYWJsZWQodHJ1ZSk7XG5cdFx0XHR9KVxuXHRcdFxuXHRcdG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcblx0XHRcdC5zZXROYW1lKFwiTGVmdFwiKVxuXHRcdFx0LmFkZFRleHRBcmVhKCh0ZXh0KSA9PiB7XG5cdFx0XHRcdHRleHQuc2V0VmFsdWUodGhpcy5vbGRfbGVmdCk7XG5cdFx0XHRcdHRleHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5uZXdfbGVmdCA9IHZhbHVlXG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXHRcdG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcblx0XHRcdC5zZXROYW1lKFwiUmlnaHRcIilcblx0XHRcdC5hZGRUZXh0QXJlYSgodGV4dCkgPT4ge1xuXHRcdFx0XHR0ZXh0LnNldFZhbHVlKHRoaXMub2xkX3JpZ2h0KTtcblx0XHRcdFx0dGV4dC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLm5ld19yaWdodCA9IHZhbHVlXG5cdFx0XHRcdH0pXG5cdFx0XHR9KTtcblxuXG5cdFx0bmV3IFNldHRpbmcoY29udGVudEVsKVxuXHRcdFx0LmFkZEJ1dHRvbigoYnRuKSA9PlxuXHRcdFx0XHRidG5cblx0XHRcdFx0XHQuc2V0QnV0dG9uVGV4dChcIlVwZGF0ZVwiKVxuXHRcdFx0XHRcdC5zZXRDdGEoKVxuXHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuY2xvc2UoKTtcblx0XHRcdFx0XHRcdHRoaXMub25TdWJtaXQodGhpcy5uZXdfbGVmdCwgdGhpcy5uZXdfcmlnaHQpO1xuXHRcdFx0XHRcdH0pKTtcblx0fVxuXG5cdG9uQ2xvc2UoKSB7XG5cdFx0bGV0IHsgY29udGVudEVsIH0gPSB0aGlzO1xuXHRcdGNvbnRlbnRFbC5lbXB0eSgpO1xuXHR9XG59XG5cblxuXG5leHBvcnQgY2xhc3MgRWRpdENvbnZlcnRSdWxlTW9kYWwgZXh0ZW5kcyBNb2RhbCB7XG5cdHR5cGU6IFJ1bGVUeXBlO1xuXHRvbGRfYmVmb3JlOiBzdHJpbmc7XG5cdG9sZF9hZnRlcjogc3RyaW5nO1xuXHRuZXdfYmVmb3JlOiBzdHJpbmc7XG5cdG5ld19hZnRlcjogc3RyaW5nO1xuXHRvblN1Ym1pdDogKG5ld19iZWZvcmU6IHN0cmluZywgbmV3X2FmdGVyOnN0cmluZykgPT4gdm9pZDtcblxuXHRjb25zdHJ1Y3RvcihhcHA6IEFwcCwgdHlwZTogUnVsZVR5cGUsIGJlZm9yZTogc3RyaW5nLCBhZnRlcjogc3RyaW5nLCBvblN1Ym1pdDogKG5ld19iZWZvcmU6IHN0cmluZywgbmV3X2FmdGVyOnN0cmluZykgPT4gdm9pZCkge1xuXHRcdHN1cGVyKGFwcCk7XG5cdFx0dGhpcy50eXBlID0gdHlwZTtcblx0XHR0aGlzLm9sZF9iZWZvcmUgPSBiZWZvcmU7XG5cdFx0dGhpcy5vbGRfYWZ0ZXIgPSBhZnRlcjtcblx0XHR0aGlzLm5ld19iZWZvcmUgPSBiZWZvcmU7XG5cdFx0dGhpcy5uZXdfYWZ0ZXIgPSBhZnRlcjtcblxuXHRcdHRoaXMub25TdWJtaXQgPSBvblN1Ym1pdDtcblx0fVxuXG5cdG9uT3BlbigpIHtcblx0XHRjb25zdCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcblxuXHRcdGNvbnRlbnRFbC5jcmVhdGVFbChcImgxXCIsIHsgdGV4dDogXCJFZGl0IFwiICsgdGhpcy50eXBlfSk7XG5cdFx0XG5cdFx0bmV3IFNldHRpbmcoY29udGVudEVsKVxuXHRcdFx0LnNldE5hbWUoXCJPbGQgUGF0dGVyblwiKVxuXHRcdFx0LmFkZFRleHRBcmVhKCh0ZXh0KSA9PiB7XG5cdFx0XHRcdHRleHQuc2V0VmFsdWUodGhpcy5vbGRfYmVmb3JlKTtcblx0XHRcdFx0dGV4dC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLm5ld19iZWZvcmUgPSB2YWx1ZVxuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblx0XHRuZXcgU2V0dGluZyhjb250ZW50RWwpXG5cdFx0XHQuc2V0TmFtZShcIk5ldyBQYXR0ZXJuXCIpXG5cdFx0XHQuYWRkVGV4dEFyZWEoKHRleHQpID0+IHtcblx0XHRcdFx0dGV4dC5zZXRWYWx1ZSh0aGlzLm9sZF9hZnRlcik7XG5cdFx0XHRcdHRleHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5uZXdfYWZ0ZXIgPSB2YWx1ZVxuXHRcdFx0XHR9KVxuXHRcdFx0fSk7XG5cblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcblx0XHRcdC5hZGRCdXR0b24oKGJ0bikgPT5cblx0XHRcdFx0YnRuXG5cdFx0XHRcdFx0LnNldEJ1dHRvblRleHQoXCJVcGRhdGVcIilcblx0XHRcdFx0XHQuc2V0Q3RhKClcblx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAodGhpcy5jaGVja0NvbnZlcnRQYXR0ZXJuU3RyaW5nKHRoaXMubmV3X2JlZm9yZSwgdGhpcy5uZXdfYWZ0ZXIpKVxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0aGlzLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMub25TdWJtaXQodGhpcy5uZXdfYmVmb3JlLCB0aGlzLm5ld19hZnRlcik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNle1xuXHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwiSW52YWxpZCBwYXR0ZXJuIHN0cmluZyFcIik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHR9KSk7XG5cdH1cblxuXHRjaGVja0NvbnZlcnRQYXR0ZXJuU3RyaW5nKGJlZm9yZTogc3RyaW5nLCBhZnRlcjpzdHJpbmcpOmJvb2xlYW57XG5cdFx0bGV0IHJlZ1J1bGUgPSAvXFx8L2c7XG5cdFx0aWYoYmVmb3JlLnNlYXJjaChyZWdSdWxlKT09LTEgfHwgYWZ0ZXIuc2VhcmNoKHJlZ1J1bGUpPT0tMSkgcmV0dXJuIGZhbHNlO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0b25DbG9zZSgpIHtcblx0XHRsZXQgeyBjb250ZW50RWwgfSA9IHRoaXM7XG5cdFx0Y29udGVudEVsLmVtcHR5KCk7XG5cdH1cbn1cblxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHVCQUE2SDtBQUM3SCxtQkFBdUY7QUFDdkYsb0JBQXFDOzs7QUNGckMsc0JBQXNCOzs7QUNPZixxQkFBcUIsS0FBVSxRQUFlO0FBQ3BELE1BQUksT0FBTyxJQUFJLE9BQU8sTUFBTTtBQUM1QixTQUFPLEVBQUMsTUFBTSxLQUFLLFNBQVMsR0FBRyxJQUFJLFNBQVMsS0FBSyxLQUFJO0FBQ3REO0FBRU8sNkJBQTZCLElBQXlCO0FBQzVELE1BQUksbUJBQTRCO0FBQUEsSUFBQztBQUFBLElBQzNCO0FBQUEsSUFBc0I7QUFBQSxJQUFjO0FBQUEsSUFBZTtBQUFBLElBQWM7QUFBQSxJQUFrQjtBQUFBLElBQ25GO0FBQUEsSUFBb0I7QUFBQSxJQUFrQjtBQUFB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 +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL21haW4udHMiLCAic3JjL2NvcmUudHMiLCAic3JjL3V0aWxzLnRzIiwgInNyYy9zZXR0aW5ncy50cyIsICJzcmMvc3ludGF4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge0VkaXRvciwgTWFya2Rvd25WaWV3LCBNZW51LCBOb3RpY2UsIFBsYXRmb3JtLCBQbHVnaW4sIFdvcmtzcGFjZUxlYWZ9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7RWRpdG9yU2VsZWN0aW9uLCBFZGl0b3JTdGF0ZSwgUHJlYywgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3BlY30gZnJvbSAnQGNvZGVtaXJyb3Ivc3RhdGUnO1xuaW1wb3J0IHtDb252ZXJ0UnVsZSwgREVGQVVMVF9TRVRUSU5HUywgRWFzeVR5cGluZ1NldHRpbmdzLCBFYXN5VHlwaW5nU2V0dGluZ1RhYiwgUGFpclN0cmluZ30gZnJvbSBcIi4vc2V0dGluZ3NcIlxuaW1wb3J0IHtFZGl0b3JWaWV3LCBrZXltYXAsIFZpZXdVcGRhdGV9IGZyb20gJ0Bjb2RlbWlycm9yL3ZpZXcnO1xuaW1wb3J0IHtcblx0Z2V0VHlwZVN0ck9mVHJhbnNhYyxcblx0b2Zmc2V0VG9Qb3MsXG5cdHByaW50LFxuXHRydWxlU3RyaW5nTGlzdDJSdWxlTGlzdCxcblx0c3RyaW5nMnBhaXJzdHJpbmdcbn0gZnJvbSAnLi91dGlscydcbmltcG9ydCB7Z2V0UG9zTGluZVR5cGUsIGdldFBvc0xpbmVUeXBlMiwgTGluZUZvcm1hdGVyLCBMaW5lVHlwZX0gZnJvbSAnLi9jb3JlJ1xuaW1wb3J0IHtlbnN1cmVTeW50YXhUcmVlLCBzeW50YXhUcmVlfSBmcm9tIFwiQGNvZGVtaXJyb3IvbGFuZ3VhZ2VcIjtcbmltcG9ydCB7IHNlbGVjdENvZGVCbG9ja0luUG9zLCBpc0NvZGVCbG9ja0luUG9zIH0gZnJvbSAnLi9zeW50YXgnO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc3lUeXBpbmdQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuXHRzZXR0aW5nczogRWFzeVR5cGluZ1NldHRpbmdzO1xuXHRzZWxlY3Rpb25SZXBsYWNlTWFwSW5pdGFsRGF0YTogW3N0cmluZywgUGFpclN0cmluZ11bXTtcblx0U2VsZWN0aW9uUmVwbGFjZU1hcDogTWFwPHN0cmluZywgUGFpclN0cmluZz47XG5cdFN5bWJvbFBhaXJzTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXHRoYWxmVG9GdWxsU3ltYm9sTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXHRCYXNpY0NvbnZSdWxlczogQ29udmVydFJ1bGVbXTtcblx0RlcySFdTeW1ib2xSdWxlczogQ29udmVydFJ1bGVbXTtcblx0Rm9ybWF0ZXI6IExpbmVGb3JtYXRlcjtcblx0SW50cmluc2ljRGVsZXRlUnVsZXM6IENvbnZlcnRSdWxlW107XG5cdEludHJpbnNpY0F1dG9QYWlyUnVsZXNQYXRjaDogQ29udmVydFJ1bGVbXTtcblx0Q3VyQWN0aXZlTWFya2Rvd246IHN0cmluZztcblxuXHRVc2VyRGVsZXRlUnVsZXM6IENvbnZlcnRSdWxlW107XG5cdFVzZXJDb252ZXJ0UnVsZXM6IENvbnZlcnRSdWxlW107XG5cdGxhbmc6IHN0cmluZztcblxuXHRjb21wb3NlX2JlZ2luX3BvczogbnVtYmVyO1xuXHRjb21wb3NlX2VuZF9wb3M6IG51bWJlcjtcblx0Y29tcG9zZV9uZWVkX2hhbmRsZTogYm9vbGVhbjtcblxuXHRvbkZvcm1hdEFydGljbGU6IGJvb2xlYW47XG5cdFRhYm91dFBhaXJTdHJzOiBQYWlyU3RyaW5nW107XG5cblxuXHRhc3luYyBvbmxvYWQoKSB7XG5cdFx0YXdhaXQgdGhpcy5sb2FkU2V0dGluZ3MoKTtcblx0XHR0aGlzLnNlbGVjdGlvblJlcGxhY2VNYXBJbml0YWxEYXRhID0gW1xuXHRcdFx0W1wiXHUzMDEwXCIsIHsgbGVmdDogXCJbXCIsIHJpZ2h0OiBcIl1cIiB9XSwgW1wiXHVGRkU1XCIsIHsgbGVmdDogXCIkXCIsIHJpZ2h0OiBcIiRcIiB9XSwgW1wiXHUwMEI3XCIsIHsgbGVmdDogXCJgXCIsIHJpZ2h0OiBcImBcIiB9XSwgWydcdTAwQTUnLCB7IGxlZnQ6IFwiJFwiLCByaWdodDogXCIkXCIgfV0sXG5cdFx0XHRbXCJcdTMwMEFcIiwgeyBsZWZ0OiBcIlx1MzAwQVwiLCByaWdodDogXCJcdTMwMEJcIiB9XSwgW1wiXHUyMDFDXCIsIHsgbGVmdDogXCJcdTIwMUNcIiwgcmlnaHQ6IFwiXHUyMDFEXCIgfV0sIFtcIlx1MjAxRFwiLCB7IGxlZnQ6IFwiXHUyMDFDXCIsIHJpZ2h0OiBcIlx1MjAxRFwiIH1dLCBbXCJcdUZGMDhcIiwgeyBsZWZ0OiBcIlx1RkYwOFwiLCByaWdodDogXCJcdUZGMDlcIiB9XSxcblx0XHRcdFtcIjxcIiwgeyBsZWZ0OiBcIjxcIiwgcmlnaHQ6IFwiPlwiIH1dXG5cdFx0XTtcblx0XHR0aGlzLnJlZnJlc2hTZWxlY3Rpb25SZXBsYWNlUnVsZSgpO1xuXHRcdHRoaXMuU3ltYm9sUGFpcnNNYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXHRcdGxldCBTeW1ib2xQYWlycyA9IFtcIlx1MzAxMFx1MzAxMVwiLCBcIlx1RkYwOFx1RkYwOVwiLCBcIlx1MzAwQVx1MzAwQlwiLCBcIlx1MjAxQ1x1MjAxRFwiLCBcIlx1MjAxOFx1MjAxOVwiLCBcIlx1MzAwQ1x1MzAwRFwiLCBcIlx1MzAwRVx1MzAwRlwiLCAnW10nLCAnKCknLCAne30nLCAnXCJcIicsIFwiJydcIl1cblx0XHRmb3IgKGxldCBwYWlyU3RyIG9mIFN5bWJvbFBhaXJzKSB0aGlzLlN5bWJvbFBhaXJzTWFwLnNldChwYWlyU3RyLmNoYXJBdCgwKSwgcGFpclN0ci5jaGFyQXQoMSkpO1xuXG5cdFx0dGhpcy5oYWxmVG9GdWxsU3ltYm9sTWFwID0gbmV3IE1hcChbXG5cdFx0XHRbXCIuXCIsIFwiXHUzMDAyXCJdLFxuXHRcdFx0W1wiLFwiLCBcIlx1RkYwQ1wiXSxcblx0XHRcdFsnPycsICdcdUZGMUYnXSxcblx0XHRcdFsnIScsICdcdUZGMDEnXVxuXHRcdF0pO1xuXG5cdFx0bGV0IEJhc2ljQ29udlJ1bGVTdHJpbmdMaXN0OiBBcnJheTxbc3RyaW5nLCBzdHJpbmddPiA9IFtbJ1x1MDBCN1x1MDBCN3wnLCAnYHxgJ10sIFtcIlx1RkYwMVx1MzAxMFx1MzAxMHxcdTMwMTFcIiwnIVtbfF1dJ10sWydcdUZGMDFcdTMwMTBcdTMwMTB8JywgJyFbW3xdXSddLFxuXHRcdFtcIlx1MzAxMFx1MzAxMHxcdTMwMTFcIiwgXCJbW3xdXVwiXSwgWydcdTMwMTBcdTMwMTB8JywgXCJbW3xdXVwiXSwgWydcdUZGRTVcdUZGRTV8JywgJyR8JCddLCBbJyRcdUZGRTV8JCcsIFwiJCRcXG58XFxuJCRcIl0sWydcdTAwQTVcdTAwQTV8JywnJHwkJ10sIFsnJFx1MDBBNXwkJywgXCIkJFxcbnxcXG4kJFwiXSxbXCIkJHwkXCIsIFwiJCRcXG58XFxuJCRcIl0sIFsnJCR8JywgXCIkfCRcIl0sXG5cdFx0W1wiPlx1MzAwQnxcIiwgXCI+PnxcIl0sIFsnXFxuXHUzMDBCfCcsIFwiXFxuPnxcIl0sIFtcIiBcdTMwMEJ8XCIsIFwiID58XCJdLCBbXCJcXG5cdTMwMDF8XCIsIFwiXFxuL3xcIl1dO1xuXHRcdHRoaXMuQmFzaWNDb252UnVsZXMgPSBydWxlU3RyaW5nTGlzdDJSdWxlTGlzdChCYXNpY0NvbnZSdWxlU3RyaW5nTGlzdCk7XG5cdFx0bGV0IEZXMkhXU3ltYm9sUnVsZXNTdHJMaXN0OiBBcnJheTxbc3RyaW5nLCBzdHJpbmddPiA9IFtbXCJcdTMwMDJcdTMwMDJ8XCIsIFwiLnxcIl0sIFtcIlx1RkYwMVx1RkYwMXxcIiwgXCIhfFwiXSwgW1wiXHVGRjFCXHVGRjFCfFwiLCBcIjt8XCJdLCBbXCJcdUZGMENcdUZGMEN8XCIsIFwiLHxcIl0sXG5cdFx0W1wiXHVGRjFBXHVGRjFBfFwiLCBcIjp8XCJdLCBbJ1x1RkYxRlx1RkYxRnwnLCAnP3wnXSwgWydcdUZGMDhcdUZGMDh8XHVGRjA5JywgXCIofClcIl0sIFsnXHVGRjA4XHVGRjA4fCcsICcofCknXSwgW1wiXHUyMDFDXHUyMDFDfFx1MjAxRFwiLCBcIlxcXCJ8XFxcIlwiXSwgW1wiXHUyMDFDXHUyMDFEfFx1MjAxRFwiLCBcIlxcXCJ8XFxcIlwiXSwgW1wiXHUyMDE4XHUyMDE4fFx1MjAxOVwiLCBcIid8J1wiXSwgW1wiXHUyMDE4XHUyMDE5fFx1MjAxOVwiLCBcIid8J1wiXSxcblx0XHRbXCJcdTMwMEJcdTMwMEJ8XCIsIFwiPnxcIl0sIFtcIlx1MzAwQVx1MzAwQXxcdTMwMEJcIiwgXCI8fFwiXSwgWydcdTMwMEFcdTMwMEF8JywgXCI8fFwiXV07XG5cdFx0dGhpcy5GVzJIV1N5bWJvbFJ1bGVzID0gcnVsZVN0cmluZ0xpc3QyUnVsZUxpc3QoRlcySFdTeW1ib2xSdWxlc1N0ckxpc3QpO1xuXHRcdGxldCBmdzJod19ydWxlXzA6IENvbnZlcnRSdWxlID0ge2JlZm9yZTp7bGVmdDonXHVGRjVDXHVGRjVDJywgcmlnaHQ6Jyd9LCBhZnRlcjp7bGVmdDonfCcsIHJpZ2h0OicnfX07XG5cdFx0dGhpcy5GVzJIV1N5bWJvbFJ1bGVzLnB1c2goZncyaHdfcnVsZV8wKVxuXG5cdFx0bGV0IERlbGV0ZVJ1bGVzU3RyTGlzdDogQXJyYXk8W3N0cmluZywgc3RyaW5nXT4gPSBbW1wiJHwkXCIsIFwifFwiXSwgWyc9PXw9PScsICd8J10sIFsnJCRcXG58XFxuJCQnLCBcInxcIl1dO1xuXHRcdHRoaXMuSW50cmluc2ljRGVsZXRlUnVsZXMgPSBydWxlU3RyaW5nTGlzdDJSdWxlTGlzdChEZWxldGVSdWxlc1N0ckxpc3QpO1xuXG5cdFx0bGV0IGF1dG9QYWlyUnVsZXNQYXRjaFN0ckxpc3Q6IEFycmF5PFtzdHJpbmcsIHN0cmluZ10+ID0gW1tcIlx1MzAxMFx1MzAxMXxcdTMwMTFcIiwgXCJcdTMwMTBcdTMwMTF8XCJdLCBbXCJcdUZGMDhcdUZGMDl8XHVGRjA5XCIsIFwiXHVGRjA4XHVGRjA5fFwiXSxcblx0XHRbXCI8Pnw+XCIsIFwiPD58XCJdLCBbXCJcdTMwMEFcdTMwMEJ8XHUzMDBCXCIsIFwiXHUzMDBBXHUzMDBCfFwiXSwgW1wiXHUzMDBDXHUzMDBEfFx1MzAwRFwiLCBcIlx1MzAwQ1x1MzAwRHxcIl0sIFtcIlx1MzAwRVx1MzAwRnxcdTMwMEZcIiwgXCJcdTMwMEVcdTMwMEZ8XCJdLCBbXCIoKXwpXCIsIFwiKCl8XCJdLCBbJ1tdfF0nLCAnW118J10sXG5cdFx0W1wie318fVwiLCBcInt9fFwiXSwgW1wiJyd8J1wiLCBcIicnfFwiXSwgWydcIlwifFwiJywgJ1wiXCJ8J10sXG5cdFx0XTtcblx0XHR0aGlzLkludHJpbnNpY0F1dG9QYWlyUnVsZXNQYXRjaCA9IHJ1bGVTdHJpbmdMaXN0MlJ1bGVMaXN0KGF1dG9QYWlyUnVsZXNQYXRjaFN0ckxpc3QpO1xuXG5cdFx0bGV0IFRhYm91dFBhaXJTdHJzID0gW1wiXHUzMDEwfFx1MzAxMVwiLCBcIlx1RkYwOHxcdUZGMDlcIiwgXCJcdTMwMEF8XHUzMDBCXCIsIFwiXHUyMDFDfFx1MjAxRFwiLCBcIlx1MjAxOHxcdTIwMTlcIiwgXG5cdFx0XHRcdFx0XHQgICBcIlx1MzAwQ3xcdTMwMERcIiwgXCJcdTMwMEV8XHUzMDBGXCIsIFwiJ3wnXCIsIFwiXFxcInxcXFwiXCIsIFwiJCR8JCRcIiwgJyR8JCcsICdfX3xfXycsICdffF8nLFxuXHRcdFx0XHRcdFx0XHRcIj09fD09XCIsIFwifn58fn5cIiwgXCIqKnwqKlwiLCAnKnwqJywgXCJbW3xdXVwiLCAnW3xdJyxcInt8fVwiLCBcIih8KVwiLCBcIjx8PlwiXTtcblx0XHR0aGlzLlRhYm91dFBhaXJTdHJzID0gVGFib3V0UGFpclN0cnMubWFwKChzOnN0cmluZyk9PnN0cmluZzJwYWlyc3RyaW5nKHMpKTtcblxuXHRcdHRoaXMucmVmcmVzaFVzZXJEZWxldGVSdWxlKCk7XG5cdFx0dGhpcy5yZWZyZXNoVXNlckNvbnZlcnRSdWxlKCk7XG5cblx0XHR0aGlzLkN1ckFjdGl2ZU1hcmtkb3duID0gXCJcIjtcblxuXHRcdHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSA9IGZhbHNlO1xuXG5cdFx0dGhpcy5Gb3JtYXRlciA9IG5ldyBMaW5lRm9ybWF0ZXIoKTtcblxuXHRcdHRoaXMub25Gb3JtYXRBcnRpY2xlID0gZmFsc2U7XG5cblx0XHR0aGlzLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFtcblx0XHRcdEVkaXRvclN0YXRlLnRyYW5zYWN0aW9uRmlsdGVyLm9mKHRoaXMudHJhbnNhY3Rpb25GaWx0ZXJQbHVnaW4pLFxuXHRcdFx0RWRpdG9yVmlldy51cGRhdGVMaXN0ZW5lci5vZih0aGlzLnZpZXdVcGRhdGVQbHVnaW4pLFxuXHRcdFx0UHJlYy5oaWdoZXN0KEVkaXRvclZpZXcuZG9tRXZlbnRIYW5kbGVycyh7XG5cdFx0XHRcdFwia2V5dXBcIjogdGhpcy5vbktleXVwXG5cdFx0XHR9KSlcblx0XHRdKTtcblxuXG5cdFx0dGhpcy5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihQcmVjLmhpZ2hlc3Qoa2V5bWFwLm9mKFtcblx0XHRcdHtcblx0XHRcdFx0a2V5OiBcIlRhYlwiLFxuXHRcdFx0XHRydW46ICh2aWV3OiBFZGl0b3JWaWV3KTogYm9vbGVhbiA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgc3VjY2VzcyA9IHRoaXMuaGFuZGxlVGFiRG93bih2aWV3KTtcblx0XHRcdFx0XHRyZXR1cm4gc3VjY2Vzcztcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0a2V5OiBcIkVudGVyXCIsXG5cdFx0XHRcdHJ1bjogKHZpZXc6IEVkaXRvclZpZXcpOiBib29sZWFuID0+IHtcblx0XHRcdFx0XHRjb25zdCBzdWNjZXNzID0gdGhpcy5oYW5kbGVFbnRlcih2aWV3KTtcblx0XHRcdFx0XHRyZXR1cm4gc3VjY2Vzcztcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0a2V5OiBcIk1vZC1hXCIsIFxuXHRcdFx0XHRydW46ICh2aWV3OiBFZGl0b3JWaWV3KTogYm9vbGVhbiA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgc3VjY2VzcyA9IHRoaXMuaGFuZGxlTW9kQUluQ29kZUJsb2NrKHZpZXcpO1xuXHRcdFx0XHRcdHJldHVybiBzdWNjZXNzO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XSkpKTtcblxuXHRcdHRoaXMubGFuZyA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKTtcblx0XHRsZXQgY29tbWFuZF9uYW1lX21hcCA9IHRoaXMuZ2V0Q29tbWFuZE5hbWVNYXAoKTtcblxuXHRcdHRoaXMuYWRkQ29tbWFuZCh7XG5cdFx0XHRpZDogXCJlYXN5LXR5cGluZy1mb3JtYXQtYXJ0aWNsZVwiLFxuXHRcdFx0bmFtZTogY29tbWFuZF9uYW1lX21hcC5nZXQoXCJmb3JtYXRfYXJ0aWNsZVwiKSxcblx0XHRcdGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldykgPT4ge1xuXHRcdFx0XHR0aGlzLmZvcm1hdEFydGljbGUoZWRpdG9yLCB2aWV3KTtcblx0XHRcdH0sXG5cdFx0XHRob3RrZXlzOiBbe1xuXHRcdFx0XHRtb2RpZmllcnM6IFsnQ3RybCcsICdTaGlmdCddLFxuXHRcdFx0XHRrZXk6IFwic1wiXG5cdFx0XHR9XSxcblx0XHR9KTtcblxuXHRcdHRoaXMuYWRkQ29tbWFuZCh7XG5cdFx0XHRpZDogXCJlYXN5LXR5cGluZy1mb3JtYXQtc2VsZWN0aW9uXCIsXG5cdFx0XHRuYW1lOiBjb21tYW5kX25hbWVfbWFwLmdldChcImZvcm1hdF9zZWxlY3Rpb25cIiksXG5cdFx0XHRlZGl0b3JDYWxsYmFjazogKGVkaXRvcjogRWRpdG9yLCB2aWV3OiBNYXJrZG93blZpZXcpID0+IHtcblx0XHRcdFx0dGhpcy5mb3JtYXRTZWxlY3Rpb25PckN1ckxpbmUoZWRpdG9yLCB2aWV3KTtcblx0XHRcdH0sXG5cdFx0XHRob3RrZXlzOiBbe1xuXHRcdFx0XHRtb2RpZmllcnM6IFsnQ3RybCcsICdTaGlmdCddLFxuXHRcdFx0XHRrZXk6IFwibFwiXG5cdFx0XHR9XSxcblx0XHR9KTtcblxuXHRcdHRoaXMuYWRkQ29tbWFuZCh7XG5cdFx0XHRpZDogXCJlYXN5LXR5cGluZy1kZWxldGUtYmxhbmstbGluZVwiLFxuXHRcdFx0bmFtZTogY29tbWFuZF9uYW1lX21hcC5nZXQoXCJkZWxldGVfYmxhbmtfbGluZVwiKSxcblx0XHRcdGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldykgPT4ge1xuXHRcdFx0XHR0aGlzLmRlbGV0ZUJsYW5rTGluZXMoZWRpdG9yKTtcblx0XHRcdH0sXG5cdFx0XHRob3RrZXlzOiBbe1xuXHRcdFx0XHRtb2RpZmllcnM6IFsnQ3RybCcsICdTaGlmdCddLFxuXHRcdFx0XHRrZXk6IFwia1wiXG5cdFx0XHR9XSxcblx0XHR9KTtcblxuXHRcdHRoaXMuYWRkQ29tbWFuZCh7XG5cdFx0XHRpZDogXCJlYXN5LXR5cGluZy1pbnNlcnQtY29kZWJsb2NrXCIsXG5cdFx0XHRuYW1lOiBjb21tYW5kX25hbWVfbWFwLmdldChcImluc2VydF9jb2RlYmxvY2tcIiksXG5cdFx0XHRlZGl0b3JDYWxsYmFjazogKGVkaXRvcjogRWRpdG9yLCB2aWV3OiBNYXJrZG93blZpZXcpID0+IHtcblx0XHRcdFx0dGhpcy5jb252ZXJ0MkNvZGVCbG9jayhlZGl0b3IpO1xuXHRcdFx0fSxcblx0XHRcdGhvdGtleXM6IFt7XG5cdFx0XHRcdG1vZGlmaWVyczogWydDdHJsJywgJ1NoaWZ0J10sXG5cdFx0XHRcdGtleTogXCJuXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWZvcm1hdC1zd2l0Y2hcIixcblx0XHRcdG5hbWU6IGNvbW1hbmRfbmFtZV9tYXAuZ2V0KFwic3dpdGNoX2F1dG9mb3JtYXRcIiksXG5cdFx0XHRjYWxsYmFjazogKCkgPT4gdGhpcy5zd2l0Y2hBdXRvRm9ybWF0dGluZygpLFxuXHRcdFx0aG90a2V5czogW3tcblx0XHRcdFx0bW9kaWZpZXJzOiBbJ0N0cmwnXSxcblx0XHRcdFx0a2V5OiBcInRhYlwiXG5cdFx0XHR9XSxcblx0XHR9KTtcblxuXHRcdHRoaXMuYWRkQ29tbWFuZCh7XG5cdFx0XHRpZDogXCJlYXN5LXR5cGluZy1wYXN0ZS13aXRob3V0LWZvcm1hdFwiLFxuXHRcdFx0bmFtZTogY29tbWFuZF9uYW1lX21hcC5nZXQoXCJwYXN0ZV93b19mb3JtYXRcIiksXG5cdFx0XHRlZGl0b3JDYWxsYmFjazogKGVkaXRvcikgPT4gdGhpcy5ub3JtYWxQYXN0ZShlZGl0b3IpLFxuXHRcdFx0aG90a2V5czogW1xuXHRcdFx0ICB7XG5cdFx0XHRcdG1vZGlmaWVyczogW1wiTW9kXCIsIFwiU2hpZnRcIl0sXG5cdFx0XHRcdGtleTogXCJ2XCIsXG5cdFx0XHQgIH0sXG5cdFx0XHRdLFxuXHRcdCAgfSk7XG5cblx0XHQvLyBUaGlzIGFkZHMgYSBzZXR0aW5ncyB0YWIgc28gdGhlIHVzZXIgY2FuIGNvbmZpZ3VyZSB2YXJpb3VzIGFzcGVjdHMgb2YgdGhlIHBsdWdpblxuXHRcdHRoaXMuYWRkU2V0dGluZ1RhYihuZXcgRWFzeVR5cGluZ1NldHRpbmdUYWIodGhpcy5hcHAsIHRoaXMpKTtcblxuXHRcdHRoaXMucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC53b3Jrc3BhY2Uub24oJ2FjdGl2ZS1sZWFmLWNoYW5nZScsIChsZWFmOiBXb3Jrc3BhY2VMZWFmKSA9PiB7XG5cdFx0XHRpZiAobGVhZi52aWV3LmdldFZpZXdUeXBlKCkgPT0gJ21hcmtkb3duJykge1xuXHRcdFx0XHRsZXQgZmlsZSA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVGaWxlKCk7XG5cdFx0XHRcdGlmIChmaWxlICE9IG51bGwgJiYgdGhpcy5DdXJBY3RpdmVNYXJrZG93biAhPSBmaWxlLnBhdGgpIHtcblx0XHRcdFx0XHR0aGlzLkN1ckFjdGl2ZU1hcmtkb3duID0gZmlsZS5wYXRoO1xuXHRcdFx0XHRcdGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKVxuXHRcdFx0XHRcdFx0bmV3IE5vdGljZSgnbmV3IG1kLWZpbGUgb3BlbjogJyArIGZpbGUucGF0aClcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pKTtcblxuXHRcdC8vXHU1MjI0XHU2NUFEXHU1RjUzXHU1MjREXHU2NjJGXHU1NDI2XHU0RTNBTUFDXHU3Q0ZCXHU3RURGXG5cdFx0aWYgKFBsYXRmb3JtLmlzTWFjT1MgJiYgdGhpcy5zZXR0aW5ncy5GaXhNYWNPU0NvbnRleHRNZW51KSB7XG5cdFx0XHQvLyBcdTY4QzBcdTZENEJcdTlGMjBcdTY4MDdcdTUzRjNcdTk1MkVcdTU0N0NcdTUxRkFcdTgzRENcdTUzNTVcdTc2ODRcdTRFOEJcdTRFRjZcblx0XHRcdHRoaXMucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC53b3Jrc3BhY2Uub24oJ2VkaXRvci1tZW51JywgKG1lbnU6IE1lbnUsIGVkaXRvcjogRWRpdG9yLCB2aWV3OiBNYXJrZG93blZpZXcpID0+IHtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ2VkaXRvci1tZW51JywgbWVudSwgZWRpdG9yLCB2aWV3KTtcblx0XHRcdFx0aWYgKGVkaXRvci5saXN0U2VsZWN0aW9ucygpLmxlbmd0aCAhPSAxKSByZXR1cm47XG5cdFx0XHRcdGxldCBzZWxlY3Rpb24gPSBlZGl0b3IubGlzdFNlbGVjdGlvbnMoKVswXTtcblx0XHRcdFx0bGV0IHNlbGVjdGVkID0gZWRpdG9yLmdldFNlbGVjdGlvbigpO1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZygnc2VsZWN0ZWQnLCBzZWxlY3RlZCwgc2VsZWN0ZWQ9PSdcXG4nKTtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ3NlbGVjdGlvbicsIHNlbGVjdGlvbik7XG5cdFx0XHRcdGlmIChzZWxlY3RlZD09J1xcbicpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRlZGl0b3Iuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbi5hbmNob3IsIHNlbGVjdGlvbi5hbmNob3IpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSk7XG5cdFx0fVxuXG5cdFx0Ly8gdGhpcy5yZWdpc3RlckV2ZW50KHRoaXMuYXBwLndvcmtzcGFjZS5vbignZmlsZS1vcGVuJywgKGZpbGU6IFRGaWxlIHwgbnVsbCkgPT4ge1xuXHRcdC8vIFx0aWYgKGZpbGUgIT0gbnVsbCkge1xuXHRcdC8vIFx0XHRsZXQgZWRpdG9yID0gdGhpcy5nZXRFZGl0b3IoKTtcblx0XHQvLyBcdFx0aWYgKGVkaXRvciA9PT0gbnVsbCkgcmV0dXJuO1xuXHRcdC8vIFx0XHR0aGlzLkNvbnRlbnRQYXJzZXIucGFyc2VOZXdBcnRpY2xlKGVkaXRvci5nZXRWYWx1ZSgpKTtcblx0XHQvLyBcdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIHtcblx0XHQvLyBcdFx0XHRuZXcgTm90aWNlKFwiRWFzeVR5cGluZzogUGFyc2UgTmV3IEFydGljbGU6IFwiICsgZmlsZS52YXVsdC5nZXROYW1lKCkgKyAnLycgKyBmaWxlLnBhdGgpO1xuXHRcdC8vIFx0XHRcdC8vIGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKSB0aGlzLkNvbnRlbnRQYXJzZXIucHJpbnQoKTtcblx0XHQvLyBcdFx0fVxuXHRcdC8vIFx0fVxuXHRcdC8vIH0pKTtcblx0XHRjb25zb2xlLmxvZyhcIkVhc3kgVHlwaW5nIFBsdWdpbiBsb2FkZWQuXCIpXG5cdH1cblxuXHRvbnVubG9hZCgpIHtcblx0XHRjb25zb2xlLmxvZyhcIkVhc3kgVHlwaW5nIFBsdWdpbiB1bmxvYWRlZC5cIilcblx0fVxuXG5cdGdldERlZmF1bHRJbmRlbnRDaGFyID0gKCkgPT4ge1xuXHRcdGxldCBkZWZhdWx0X2luZGVudCA9IHRoaXMuYXBwLnZhdWx0LmNvbmZpZy51c2VUYWIgPyAnXFx0JyA6ICcgJy5yZXBlYXQodGhpcy5hcHAudmF1bHQuY29uZmlnLnRhYlNpemUpO1xuXHRcdHJldHVybiBkZWZhdWx0X2luZGVudDtcblx0fVxuXG5cdHRyYW5zYWN0aW9uRmlsdGVyUGx1Z2luID0gKHRyOiBUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uU3BlYyB8IHJlYWRvbmx5IFRyYW5zYWN0aW9uU3BlY1tdID0+IHtcblx0XHRjb25zdCBjaGFuZ2VzOiBUcmFuc2FjdGlvblNwZWNbXSA9IFtdO1xuXHRcdGlmICghdHIuZG9jQ2hhbmdlZCkgcmV0dXJuIHRyO1xuXHRcdGxldCBzZWxlY3RlZCA9IHRyLnN0YXJ0U3RhdGUuc2VsZWN0aW9uLmFzU2luZ2xlKCkubWFpbi5hbmNob3IgIT0gdHIuc3RhcnRTdGF0ZS5zZWxlY3Rpb24uYXNTaW5nbGUoKS5tYWluLmhlYWQ7XG5cblx0XHRsZXQgY2hhbmdlVHlwZVN0ciA9IGdldFR5cGVTdHJPZlRyYW5zYWModHIpO1xuXG5cdFx0dHIuY2hhbmdlcy5pdGVyQ2hhbmdlcygoZnJvbUEsIHRvQSwgZnJvbUIsIHRvQiwgaW5zZXJ0ZWQpID0+IHtcblx0XHRcdGxldCBjaGFuZ2VkU3RyID0gdHIuc3RhcnRTdGF0ZS5zbGljZURvYyhmcm9tQSwgdG9BKTtcblx0XHRcdGxldCBjaGFuZ2VzdHJfID0gY2hhbmdlZFN0ci5yZXBsYWNlKC9cXHMvZywgJzAnKVxuXHRcdFx0bGV0IGluc2VydGVkU3RyID0gaW5zZXJ0ZWQuc2xpY2VTdHJpbmcoMCk7XG5cdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5kZWJ1Zylcblx0XHRcdHtcblx0XHRcdFx0Y29uc29sZS5sb2coXCJbVHJhbnNhY3Rpb25GaWx0ZXJdIHR5cGUsIGZyb21BLCB0b0EsIGNoYW5nZWQsIGZyb21CLCB0b0IsIGluc2VydGVkXCIpO1xuXHRcdFx0XHRjb25zb2xlLmxvZyhjaGFuZ2VUeXBlU3RyLCBmcm9tQSwgdG9BLCBjaGFuZ2VkU3RyLGZyb21CLCB0b0IsIGluc2VydGVkU3RyKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gXHU4ODY4XHU2ODNDXHU3RjE2XHU4RjkxXHU2NUY2XHU3NkY0XHU2M0E1XHU4RkQ0XHU1NkRFXHVGRjBDXHU4OUUzXHU1MUIzXHU4ODY4XHU2ODNDXHU1MTg1XHU1QkI5XHU3RjE2XHU4RjkxXHU2NzA5XHU2NUY2XHU1MDE5XHU0RjFBXHU4REYzXHU1MUZBXHU4MDVBXHU3MTI2XHU3MkI2XHU2MDAxXHU3Njg0IEJ1Z1xuXHRcdFx0aWYgKGdldFBvc0xpbmVUeXBlKHRyLnN0YXJ0U3RhdGUsIGZyb21BKT09TGluZVR5cGUudGFibGUpIHJldHVybiB0cjtcblxuXHRcdFx0Ly8gPT09PT09PT09PSBTZWxlY3Rpb24gUmVwbGFjZSA9PT09PT09PT09PT1cblx0XHRcdGlmICh0aGlzLnNldHRpbmdzLlNlbGVjdGlvbkVuaGFuY2UpIHtcblx0XHRcdFx0aWYgKChjaGFuZ2VUeXBlU3RyID09ICdpbnB1dC50eXBlJyB8fCBjaGFuZ2VUeXBlU3RyID09IFwiaW5wdXQudHlwZS5jb21wb3NlXCIpICYmIGZyb21BICE9IHRvQSAmJiAoKGZyb21CICsgMSA9PT0gdG9CKXx8aW5zZXJ0ZWRTdHI9PSdcdTIwMTRcdTIwMTQnfHxpbnNlcnRlZFN0cj09J1x1MjAyNlx1MjAyNicpKSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuU2VsZWN0aW9uUmVwbGFjZU1hcC5oYXMoaW5zZXJ0ZWRTdHIpKSB7XG5cdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goeyBjaGFuZ2VzOiB7IGZyb206IGZyb21BLCBpbnNlcnQ6IHRoaXMuU2VsZWN0aW9uUmVwbGFjZU1hcC5nZXQoaW5zZXJ0ZWRTdHIpPy5sZWZ0IH0sIHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiIH0pXG5cdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goeyBjaGFuZ2VzOiB7IGZyb206IHRvQSwgaW5zZXJ0OiB0aGlzLlNlbGVjdGlvblJlcGxhY2VNYXAuZ2V0KGluc2VydGVkU3RyKT8ucmlnaHQgfSwgdXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCIgfSlcblx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFx1NTcyOFx1NEVFM1x1NzgwMVx1NTc1N1x1NEUyRFx1N0M5OFx1OEQzNFx1NjVGNlx1NjY3QVx1ODBGRFx1NkRGQlx1NTJBMFx1N0YyOVx1OEZEQlxuXHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuQmV0dGVyQ29kZUVkaXQgJiYgY2hhbmdlVHlwZVN0ci5jb250YWlucygncGFzdGUnKSAmJiBmcm9tQT09ZnJvbUIgJiYgXG5cdFx0XHRcdFx0aXNDb2RlQmxvY2tJblBvcyh0ci5zdGFydFN0YXRlLCBmcm9tQSkpe1xuXHRcdFx0XHRwcmludChcIlx1NjhDMFx1NkQ0Qlx1NTIzMFx1NTcyOFx1NEVFM1x1NzgwMVx1NTc1N1x1NEUyRFx1N0M5OFx1OEQzNFwiKVxuXHRcdFx0XHRsZXQgbGluZSA9IHRyLnN0YXJ0U3RhdGUuZG9jLmxpbmVBdChmcm9tQikudGV4dDtcblx0XHRcdFx0bGV0IGluZGVudF9zcGFjZSA9IGxpbmUubWF0Y2goL15cXHMqLylbMF0ubGVuZ3RoO1xuXHRcdFx0XHRsZXQgaW5zZXJ0ZWRfbGluZXMgPSBpbnNlcnRlZFN0ci5zcGxpdCgnXFxuJyk7XG5cdFx0XHRcdGxldCBleHRyYV9pbmRlbnQgPSAnJztcblx0XHRcdFx0aWYoaW5zZXJ0ZWRfbGluZXMubGVuZ3RoPjEpe1xuXHRcdFx0XHRcdGxldCBmaXJzdF9saW5lID0gaW5zZXJ0ZWRfbGluZXNbMF0udHJpbVN0YXJ0KCk7XG5cdFx0XHRcdFx0aWYgKGZpcnN0X2xpbmUuZW5kc1dpdGgoJ3snKSB8fCBmaXJzdF9saW5lLmVuZHNXaXRoKCcoJykgfHwgZmlyc3RfbGluZS5lbmRzV2l0aCgnWycpKXtcblx0XHRcdFx0XHRcdGV4dHJhX2luZGVudCA9IHRoaXMuZ2V0RGVmYXVsdEluZGVudENoYXIoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0bGV0IHJlc3RfbGluZXMgPSBpbnNlcnRlZF9saW5lcy5zbGljZSgxKTtcblx0XHRcdFx0XHQvLyBmaW5kIHRoZSBtaW5pbXVtIGluZGVudCBzcGFjZSBpbiByZXN0IGxpbmVzXG5cdFx0XHRcdFx0bGV0IG1pbl9pbmRlbnRfc3BhY2UgPSBJbmZpbml0eTtcblx0XHRcdFx0XHRmb3IgKGxldCBsaW5lIG9mIHJlc3RfbGluZXMpe1xuXHRcdFx0XHRcdFx0bGV0IGluZGVudCA9IGxpbmUubWF0Y2goL15cXHMqLylbMF0ubGVuZ3RoO1xuXHRcdFx0XHRcdFx0aWYgKCEvXlxccyokLy50ZXN0KGxpbmUpICYmIGluZGVudDxtaW5faW5kZW50X3NwYWNlKSBtaW5faW5kZW50X3NwYWNlID0gaW5kZW50O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRsZXQgbmV3X3Jlc3RfbGluZXMgPSByZXN0X2xpbmVzLm1hcCgobGluZTpzdHJpbmcpPT5saW5lLnN1YnN0cmluZyhtaW5faW5kZW50X3NwYWNlKSk7XG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0bmV3X3Jlc3RfbGluZXMgPSBuZXdfcmVzdF9saW5lcy5tYXAoXG5cdFx0XHRcdFx0XHQobGluZTpzdHJpbmcpPT5saW5lLnJlcGxhY2UoL1tcXHRdL2csIHRoaXMuZ2V0RGVmYXVsdEluZGVudENoYXIoKSkpO1xuXHRcdFx0XHRcdGxldCBmaW5hbF9yZXN0X2xpbmVzID0gbmV3X3Jlc3RfbGluZXMubWFwKChsaW5lOnN0cmluZyk9PicgJy5yZXBlYXQoaW5kZW50X3NwYWNlKStleHRyYV9pbmRlbnQrbGluZSk7XG5cdFx0XHRcdFx0bGV0IG5ld19pbnNlcnRlZFN0ciA9IGZpcnN0X2xpbmUrJ1xcbicrZmluYWxfcmVzdF9saW5lcy5qb2luKCdcXG4nKTtcblx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0Y2hhbmdlczoge2Zyb206IGZyb21BLCB0bzogdG9BLCBpbnNlcnQ6IG5ld19pbnNlcnRlZFN0cn0sXG5cdFx0XHRcdFx0XHRzZWxlY3Rpb246IHthbmNob3I6IGZyb21BK25ld19pbnNlcnRlZFN0ci5sZW5ndGh9LFxuXHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0fVx0XHRcdFx0XG5cdFx0XHR9XG5cblx0XHRcdGlmIChzZWxlY3RlZCkgcmV0dXJuIHRyO1xuXG5cdFx0XHQvLyBsZXQgdGVzdF9zID0gXCJcdTAwQTVcIlxuXHRcdFx0Ly8gY29uc29sZS5sb2coICdcdTAwQTUnLCB0ZXN0X3MgPT0gJ1x1RkZFNScpXG5cblx0XHRcdC8vIFx1NUMxRFx1OEJENVx1ODlFM1x1NTFCM1x1NUZBRVx1OEY2Rlx1NjVFN1x1NzI0OFx1OEY5M1x1NTE2NVx1NkNENVx1NzY4NFx1OTVFRVx1OTg5OH5cblx0XHRcdGlmICh0aGlzLnNldHRpbmdzLlRyeUZpeE1TSU1FICYmIFxuXHRcdFx0XHRjaGFuZ2VUeXBlU3RyID09IFwiaW5wdXQudHlwZS5jb21wb3NlXCIgJiYgXG5cdFx0XHRcdGNoYW5nZWRTdHIgPT0gJycgJiYgL15bXFx1NGUwMC1cXHU5ZmE1XSskLy50ZXN0KGluc2VydGVkU3RyKSl7XG5cdFx0XHRcdHByaW50KFwiTVMtSU1FIENvbXBvc2UgZGV0ZWN0ZWQ6XCIsIGluc2VydGVkU3RyKTtcblx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBcdTUyMTdcdTg4NjhcdTRFMEJcdTc2ODRcdTRFRTNcdTc4MDFcdTU3NTdcdTUyMjBcdTk2NjRcdTUyOUZcdTgwRkRcdTRGMThcdTUzMTZcblx0XHRcdGlmICh0aGlzLnNldHRpbmdzLkJldHRlckNvZGVFZGl0ICYmIGNoYW5nZVR5cGVTdHIgPT0gXCJkZWxldGUuYmFja3dhcmRcIiAmJiAhc2VsZWN0ZWQgJiYgXG5cdFx0XHRcdGdldFBvc0xpbmVUeXBlKHRyLnN0YXJ0U3RhdGUsIHRvQSkgPT0gTGluZVR5cGUuY29kZWJsb2NrICYmIFxuXHRcdFx0XHQodHIuc3RhcnRTdGF0ZS5zbGljZURvYyhmcm9tQSx0b0EpIT0nYCcgfHwgZ2V0UG9zTGluZVR5cGUodHIuc3RhdGUsIGZyb21BKT09TGluZVR5cGUuY29kZWJsb2NrKSkge1xuXHRcdFx0XHRsZXQgbGluZV9udW1iZXIgPSB0ci5zdGFydFN0YXRlLmRvYy5saW5lQXQodG9BKS5udW1iZXI7XG5cdFx0XHRcdGxldCBjdXJfbGluZSA9IHRyLnN0YXJ0U3RhdGUuZG9jLmxpbmVBdCh0b0EpO1xuXHRcdFx0XHRsZXQgbGlzdF9jb2RlID0gZmFsc2U7XG5cdFx0XHRcdGxldCBsaXN0X2NvZGVfaW5kZW50ID0gMDtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IGxpbmVfbnVtYmVyIC0gMTsgaSA+PSAxOyBpLS0pIHtcblx0XHRcdFx0XHRsZXQgbGluZSA9IHRyLnN0YXJ0U3RhdGUuZG9jLmxpbmUoaSk7XG5cdFx0XHRcdFx0aWYgKC9eXFxzK2BgYC8udGVzdChsaW5lLnRleHQpKSB7XG5cdFx0XHRcdFx0XHRsaXN0X2NvZGUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0bGlzdF9jb2RlX2luZGVudCA9IGxpbmUudGV4dC5tYXRjaCgvXlxccyovKVswXS5sZW5ndGg7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZWxzZSBpZiAoL15gYGAvLnRlc3QobGluZS50ZXh0KSkgYnJlYWs7XG5cdFx0XHRcdFx0ZWxzZSBjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChsaXN0X2NvZGUpIHtcblx0XHRcdFx0XHRwcmludCgnbGlzdF9jb2RlLCBpbmRlbnQ6ICcsIGxpc3RfY29kZV9pbmRlbnQpO1xuXHRcdFx0XHRcdGlmICh0b0EgPT0gY3VyX2xpbmUuZnJvbSArIGxpc3RfY29kZV9pbmRlbnQpIHtcblx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7IGNoYW5nZXM6IHsgZnJvbTogdHIuc3RhcnRTdGF0ZS5kb2MubGluZShsaW5lX251bWJlci0xKS50bywgdG86IHRvQSwgaW5zZXJ0OiAnJyB9LCB1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIiB9KTtcblx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChmcm9tQT49Y3VyX2xpbmUuZnJvbSAmJiBmcm9tQSA8IGN1cl9saW5lLmZyb20rbGlzdF9jb2RlX2luZGVudCAmJiB0b0E+Y3VyX2xpbmUuZnJvbStsaXN0X2NvZGVfaW5kZW50KXtcblx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7IGNoYW5nZXM6IHsgZnJvbTogY3VyX2xpbmUuZnJvbStsaXN0X2NvZGVfaW5kZW50LCB0bzogdG9BLCBpbnNlcnQ6ICcnIH0sIHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiIH0pO1xuXHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gVXNlckRlZmluZWQgRGVsZXRlIFJ1bGVcblx0XHRcdGlmIChjaGFuZ2VUeXBlU3RyID09IFwiZGVsZXRlLmJhY2t3YXJkXCIpIHtcblx0XHRcdFx0Zm9yIChsZXQgcnVsZSBvZiB0aGlzLlVzZXJEZWxldGVSdWxlcykge1xuXHRcdFx0XHRcdGxldCBsZWZ0ID0gdHIuc3RhcnRTdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsIHRvQSk7XG5cdFx0XHRcdFx0bGV0IHJpZ2h0ID0gdHIuc3RhcnRTdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9BLCB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgpO1xuXHRcdFx0XHRcdGlmIChsZWZ0ID09PSBydWxlLmJlZm9yZS5sZWZ0ICYmIHJpZ2h0ID09PSBydWxlLmJlZm9yZS5yaWdodCkge1xuXHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdFx0XHRcdGZyb206IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdHRvOiB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQgKyBydWxlLmFmdGVyLnJpZ2h0XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCB9LFxuXHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyA9PT09PT09PT09IGRlbGV0ZSBwYWlyIHN5bWJvbCA9PT09PT09PT09PT1cblx0XHRcdGlmIChjaGFuZ2VUeXBlU3RyID09PSBcImRlbGV0ZS5iYWNrd2FyZFwiICYmIHRoaXMuc2V0dGluZ3MuSW50cmluc2ljU3ltYm9sUGFpcnMpIHtcblx0XHRcdFx0aWYgKHRoaXMuU3ltYm9sUGFpcnNNYXAuaGFzKGNoYW5nZWRTdHIpICYmIHRoaXMuU3ltYm9sUGFpcnNNYXAuZ2V0KGNoYW5nZWRTdHIpID09PSB0ci5zdGFydFN0YXRlLnNsaWNlRG9jKHRvQSwgdG9BICsgMSkpIHtcblx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goeyBjaGFuZ2VzOiB7IGZyb206IGZyb21BLCB0bzogdG9BICsgMSB9LCB1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIiB9KTtcblx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFx1NTkwNFx1NzQwNlx1NTIyMFx1OTY2NFx1NEVFM1x1NzgwMVx1NTc1N1xuXHRcdFx0XHRsZXQgbGluZV9jb250ZW50ID0gdHIuc3RhcnRTdGF0ZS5kb2MubGluZUF0KHRvQSkudGV4dDtcblx0XHRcdFx0bGV0IG5leHRfbGluZV9jb250ZW50ID0gdHIuc3RhcnRTdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9BLCB0b0EgKyBsaW5lX2NvbnRlbnQubGVuZ3RoKzEpO1xuXHRcdFx0XHRpZiAoL15cXHMqYGBgJC8udGVzdChsaW5lX2NvbnRlbnQpICYmICdcXG4nK2xpbmVfY29udGVudD09bmV4dF9saW5lX2NvbnRlbnQpIHtcblx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0Y2hhbmdlczp7XG5cdFx0XHRcdFx0XHRcdGZyb206IHRvQS0zLCBcblx0XHRcdFx0XHRcdFx0dG86IHRvQStsaW5lX2NvbnRlbnQubGVuZ3RoKzEsXG5cdFx0XHRcdFx0XHRcdGluc2VydDogJydcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiB0b0EgLSAzIH0sXG5cdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Zm9yIChsZXQgcnVsZSBvZiB0aGlzLkludHJpbnNpY0RlbGV0ZVJ1bGVzKSB7XG5cdFx0XHRcdFx0bGV0IGxlZnQgPSB0ci5zdGFydFN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCwgdG9BKTtcblx0XHRcdFx0XHRsZXQgcmlnaHQgPSB0ci5zdGFydFN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0EsIHRvQSArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCk7XG5cdFx0XHRcdFx0aWYgKGxlZnQgPT09IHJ1bGUuYmVmb3JlLmxlZnQgJiYgcmlnaHQgPT09IHJ1bGUuYmVmb3JlLnJpZ2h0KSB7XG5cdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0ZnJvbTogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0dG86IHRvQSArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHRpbnNlcnQ6IHJ1bGUuYWZ0ZXIubGVmdCArIHJ1bGUuYWZ0ZXIucmlnaHRcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyBydWxlLmFmdGVyLmxlZnQubGVuZ3RoIH0sXG5cdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFx1NTkwNFx1NzQwNlx1ODJGMVx1NjU4N1x1OEY5M1x1NTE2NVx1NkNENVx1NEUwQlx1OEY5M1x1NTE2NVx1NEVFM1x1NzgwMVx1NTc1N1xuXHRcdFx0aWYgKGNoYW5nZVR5cGVTdHIgPT0gJ2lucHV0LnR5cGUnICYmIGluc2VydGVkU3RyID09J2BcXG5gYGAnICYmIHRoaXMuc2V0dGluZ3MuQmFzZU9iRWRpdEVuaGFuY2Upe1xuXHRcdFx0XHRjb25zdCBsaW5lX2NvbnRlbnQgPSB0ci5zdGFydFN0YXRlLmRvYy5saW5lQXQoZnJvbUEpLnRleHQ7XG5cdFx0XHRcdGlmICgvXlxccypgYCQvLnRlc3QobGluZV9jb250ZW50KSl7XG5cdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdGNoYW5nZXM6IHtmcm9tOiBmcm9tQSwgdG86IHRvQSwgaW5zZXJ0OiAnYFxcbicrbGluZV9jb250ZW50KydgJ30sXG5cdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiBmcm9tQSArIDEgfSxcblx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdFxuXHRcdFx0Ly8gXHU5MDFBXHU1RTM4XHU1MzU1XHU1QjU3XHU4RjkzXHU1MTY1XG5cdFx0XHRpZiAoKGNoYW5nZVR5cGVTdHIgPT0gJ2lucHV0LnR5cGUnIHx8IGNoYW5nZVR5cGVTdHIgPT0gXCJpbnB1dC50eXBlLmNvbXBvc2VcIikgJiYgZnJvbUEgPT09IHRvQSAmJiBmcm9tQiArIDEgPT09IHRvQikge1xuXHRcdFx0XHQvLyBpZiAodGhpcy5zZXR0aW5ncy5kZWJ1ZykgY29uc29sZS5sb2coXCJJbnB1dC50eXBlID0+IFwiLCBpbnNlcnRlZFN0cilcblx0XHRcdFx0Ly8gPT09PT09PT09PT0gYmFzaWMgY29udmVydCBydWxlcyA9PT09PT09PT09PT1cblx0XHRcdFx0Ly8gbm90IHN1cHBvcnQgdW5kbyBhbmQgcmVkb1xuXHRcdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5CYXNlT2JFZGl0RW5oYW5jZSkge1xuXHRcdFx0XHRcdC8vIFx1NTkwNFx1NzQwNlx1ODJGMVx1NjU4N1x1NjgwN1x1NzBCOVx1NEUwQmBgfFx1NzY4NFx1NjBDNVx1NTFCNVx1RkYwQ1x1NTE0OVx1NjgwN1x1ODFFQVx1NTJBOFx1OERGM1x1OEY2Q1x1NTIzMFx1NEUyRFx1OTVGNFxuXHRcdFx0XHRcdGlmIChpbnNlcnRlZFN0ciA9PT0gJ2AnICYmIFxuXHRcdFx0XHRcdFx0dG9BLXRyLnN0YXJ0U3RhdGUuZG9jLmxpbmVBdCh0b0EpLmZyb20+MiAmJiBcblx0XHRcdFx0XHRcdHRyLnN0YXJ0U3RhdGUuc2xpY2VEb2ModG9BLTEsIHRvQSkgPT09ICdgJ1xuXHRcdFx0XHRcdFx0JiYgdHIuc3RhcnRTdGF0ZS5zbGljZURvYyh0b0EtMiwgdG9BLTEpICE9ICdgJyl7XG5cdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7ZnJvbTp0b0EsIGluc2VydDonYCd9LFxuXHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiB0b0EgfSwgdXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCIgXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gXHU1OTA0XHU3NDA2XHU0RTJEXHU2NTg3XHU4RjkzXHU1MTY1XHU2Q0Q1XHU0RTBCXHU4RjkzXHU1MTY1XHU0RUUzXHU3ODAxXHU1NzU3XG5cdFx0XHRcdFx0aWYgKGluc2VydGVkU3RyID09ICdcdTAwQjcnKXtcblx0XHRcdFx0XHRcdGxldCBsaW5lX2NvbnRlbnQgPSB0ci5zdGFydFN0YXRlLmRvYy5saW5lQXQoZnJvbUEpLnRleHQ7XG5cdFx0XHRcdFx0XHRsZXQgY2hfcG9zID0gZnJvbUEgLSB0ci5zdGFydFN0YXRlLmRvYy5saW5lQXQoZnJvbUEpLmZyb207XG5cdFx0XHRcdFx0XHRpZiAoL15cXHMqYGAkLy50ZXN0KGxpbmVfY29udGVudCkgJiYgY2hfcG9zPT1saW5lX2NvbnRlbnQubGVuZ3RoLTEpe1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHtmcm9tOiBmcm9tQSsxLCB0bzogdG9BKzEsIGluc2VydDogJ2BcXG4nK2xpbmVfY29udGVudCsnYCd9LFxuXHRcdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IGZyb21BICsgMiB9LFxuXHRcdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Zm9yIChsZXQgcnVsZSBvZiB0aGlzLkJhc2ljQ29udlJ1bGVzKSB7XG5cdFx0XHRcdFx0XHRpZiAoaW5zZXJ0ZWRTdHIgIT0gcnVsZS5iZWZvcmUubGVmdC5jaGFyQXQocnVsZS5iZWZvcmUubGVmdC5sZW5ndGggLSAxKSkgY29udGludWU7XG5cdFx0XHRcdFx0XHQvLyBcdTU5MDRcdTc0MDZcdTY1ODdcdTY4NjNcdTdCMkMgMCBcdTg4NENcblx0XHRcdFx0XHRcdGlmIChydWxlLmJlZm9yZS5sZWZ0LmNoYXJBdCgwKSA9PT0gJ1xcbicgJiYgb2Zmc2V0VG9Qb3ModHIuc3RhdGUuZG9jLCBmcm9tQSkubGluZSA9PT0gMCAmJiB0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIDEgPT09IDApIHtcblx0XHRcdFx0XHRcdFx0bGV0IGxlZnQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyAxLCB0b0IpO1xuXHRcdFx0XHRcdFx0XHRsZXQgcmlnaHQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CLCB0b0IgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgpO1xuXHRcdFx0XHRcdFx0XHRpZiAobGVmdCA9PT0gcnVsZS5iZWZvcmUubGVmdC5zdWJzdHJpbmcoMSkgJiYgcmlnaHQgPT09IHJ1bGUuYmVmb3JlLnJpZ2h0KSB7XG5cdFx0XHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZnJvbTogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyAyLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0bzogdG9BICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpbnNlcnQ6IHJ1bGUuYWZ0ZXIubGVmdC5zdWJzdHJpbmcoMSkgKyBydWxlLmFmdGVyLnJpZ2h0XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyBydWxlLmFmdGVyLmxlZnQubGVuZ3RoICsgMSB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Ly8gXHU5MDFBXHU1RTM4XHU2MEM1XHU1MUI1XHU1OTA0XHU3NDA2XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0bGV0IGxlZnQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsIHRvQik7XG5cdFx0XHRcdFx0XHRcdGxldCByaWdodCA9IHRyLnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IsIHRvQiArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCk7XG5cdFx0XHRcdFx0XHRcdGlmIChsZWZ0ID09PSBydWxlLmJlZm9yZS5sZWZ0ICYmIHJpZ2h0ID09PSBydWxlLmJlZm9yZS5yaWdodCkge1xuXHRcdFx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZyb206IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgMSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dG86IHRvQSArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQgKyBydWxlLmFmdGVyLnJpZ2h0XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyBydWxlLmFmdGVyLmxlZnQubGVuZ3RoICsgMSB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICh0aGlzLnNldHRpbmdzLkZXMkhXRW5oYW5jZSkge1xuXHRcdFx0XHRcdGZvciAobGV0IHJ1bGUgb2YgdGhpcy5GVzJIV1N5bWJvbFJ1bGVzKSB7XG5cdFx0XHRcdFx0XHRpZiAoaW5zZXJ0ZWRTdHIgIT0gcnVsZS5iZWZvcmUubGVmdC5jaGFyQXQocnVsZS5iZWZvcmUubGVmdC5sZW5ndGggLSAxKSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRsZXQgbGVmdCA9IHRyLnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCwgdG9CKTtcblx0XHRcdFx0XHRcdGxldCByaWdodCA9IHRyLnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IsIHRvQiArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCk7XG5cdFx0XHRcdFx0XHRpZiAobGVmdCA9PT0gcnVsZS5iZWZvcmUubGVmdCAmJiByaWdodCA9PT0gcnVsZS5iZWZvcmUucmlnaHQpIHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIDEsXG5cdFx0XHRcdFx0XHRcdFx0XHR0bzogdG9BICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQgKyBydWxlLmFmdGVyLnJpZ2h0XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIHJ1bGUuYWZ0ZXIubGVmdC5sZW5ndGggKyAxIH0sXG5cdFx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyA9PT09PT09PT09PT09PT09IGF1dG8gcGFpciA9PT09PT09PT09PT09PT09PVxuXHRcdFx0XHQvLyBsZXQgUGFpclZhbGlkU2V0ID0gbmV3IFNldChbXCJcIiwgXCIgXCIsXCJcXG5cIl0pXG5cdFx0XHRcdC8vIGxldCBjaGFyQWZ0ZXJDdXJzb3IgPSB0ci5zdGFydFN0YXRlLnNsaWNlRG9jKHRvQSwgdG9BKzEpO1xuXHRcdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5JbnRyaW5zaWNTeW1ib2xQYWlycykge1xuXHRcdFx0XHRcdGZvciAobGV0IHJ1bGUgb2YgdGhpcy5JbnRyaW5zaWNBdXRvUGFpclJ1bGVzUGF0Y2gpIHtcblx0XHRcdFx0XHRcdGlmIChpbnNlcnRlZFN0ciAhPSBydWxlLmJlZm9yZS5sZWZ0LmNoYXJBdChydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCAtIDEpKSBjb250aW51ZTtcblx0XHRcdFx0XHRcdGxldCBsZWZ0ID0gdHIuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLCB0b0IpO1xuXHRcdFx0XHRcdFx0bGV0IHJpZ2h0ID0gdHIuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiwgdG9CICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoKTtcblx0XHRcdFx0XHRcdGlmIChsZWZ0ID09PSBydWxlLmJlZm9yZS5sZWZ0ICYmIHJpZ2h0ID09PSBydWxlLmJlZm9yZS5yaWdodCkge1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHtcblx0XHRcdFx0XHRcdFx0XHRcdGZyb206IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgMSxcblx0XHRcdFx0XHRcdFx0XHRcdHRvOiB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0XHRpbnNlcnQ6IHJ1bGUuYWZ0ZXIubGVmdCArIHJ1bGUuYWZ0ZXIucmlnaHRcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCArIDEgfSxcblx0XHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmICh0aGlzLlN5bWJvbFBhaXJzTWFwLmhhcyhpbnNlcnRlZFN0cikgJiYgaW5zZXJ0ZWRTdHIhPVwiJ1wiKSB7XG5cdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7IGZyb206IGZyb21BLCB0bzogdG9BLCBpbnNlcnQ6IGluc2VydGVkU3RyICsgdGhpcy5TeW1ib2xQYWlyc01hcC5nZXQoaW5zZXJ0ZWRTdHIpIH0sXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IGZyb21BICsgMSB9LFxuXHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNlIGlmIChpbnNlcnRlZFN0ciA9PT0gXCInXCIpIHtcblx0XHRcdFx0XHRcdGxldCBjaGFyQmVmb3JlQ3Vyc29yID0gdHIuc3RhcnRTdGF0ZS5zbGljZURvYyhmcm9tQSAtIDEsIGZyb21BKTtcblx0XHRcdFx0XHRcdGlmIChbJycsICcgJywgJ1xcbiddLmluY2x1ZGVzKGNoYXJCZWZvcmVDdXJzb3IpKSB7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0Y2hhbmdlczogeyBmcm9tOiBmcm9tQSwgdG86IHRvQSwgaW5zZXJ0OiBcIicnXCIgfSxcblx0XHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiBmcm9tQSArIDEgfSxcblx0XHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIGhhbmRsZSBhdXRvcGFpciBmb3IgXCJcdTIwMURcIiBhbmQgXCJcdTIwMTlcIlxuXHRcdFx0XHRcdGlmIChpbnNlcnRlZFN0ciA9PT0gJ1x1MjAxRCcgfHwgaW5zZXJ0ZWRTdHIgPT09ICdcdTIwMTknKSB7XG5cdFx0XHRcdFx0XHRsZXQgdGVtcFN0ciA9IGluc2VydGVkU3RyID09PSBcIlx1MjAxRFwiID8gXCJcdTIwMUNcdTIwMURcIiA6IFwiXHUyMDE4XHUyMDE5XCI7XG5cdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7IGZyb206IGZyb21BLCB0bzogdG9BLCBpbnNlcnQ6IHRlbXBTdHIgfSxcblx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogZnJvbUEgKyAxIH0sXG5cdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSlcblx0XHRyZXR1cm4gdHI7XG5cdH1cblxuXHRhc3luYyBub3JtYWxQYXN0ZShlZGl0b3I6IEVkaXRvcik6IFByb21pc2U8dm9pZD4ge1xuXHRcdGxldCBjbGlwYm9hcmRUZXh0ID0gYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC5yZWFkVGV4dCgpO1xuXHRcdGlmIChjbGlwYm9hcmRUZXh0ID09PSBudWxsIHx8IGNsaXBib2FyZFRleHQgPT09IFwiXCIpIHJldHVybjtcblxuXHRcdGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKSBjb25zb2xlLmxvZyhcIk5vcm1hbCBQYXN0ZSEhXCIpXG5cdFx0Y29uc3QgZWRpdG9yVmlldyA9IGVkaXRvci5jbSBhcyBFZGl0b3JWaWV3O1xuXHRcdGxldCBtYWluU2VsZWN0aW9uID0gZWRpdG9yVmlldy5zdGF0ZS5zZWxlY3Rpb24uYXNTaW5nbGUoKS5tYWluO1xuXHRcdGVkaXRvclZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0Y2hhbmdlczogeyBmcm9tOiBtYWluU2VsZWN0aW9uLmZyb20sIHRvOiBtYWluU2VsZWN0aW9uLnRvLCBpbnNlcnQ6IGNsaXBib2FyZFRleHQgfSxcblx0XHRcdHNlbGVjdGlvbjoge2FuY2hvcjogbWFpblNlbGVjdGlvbi5mcm9tICsgY2xpcGJvYXJkVGV4dC5sZW5ndGh9LFxuXHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcucGFzdGVcIlxuXHRcdH0pO1xuXHR9XG5cblx0dmlld1VwZGF0ZVBsdWdpbiA9ICh1cGRhdGU6IFZpZXdVcGRhdGUpID0+IHtcblx0XHRpZiAodGhpcy5vbkZvcm1hdEFydGljbGUgPT09IHRydWUpIHJldHVybjtcblxuXHRcdGxldCBub3RTZWxlY3RlZCA9IHRydWU7XG5cdFx0bGV0IG1haW5TZWxlY3Rpb24gPSB1cGRhdGUudmlldy5zdGF0ZS5zZWxlY3Rpb24uYXNTaW5nbGUoKS5tYWluO1xuXHRcdGlmIChtYWluU2VsZWN0aW9uLmFuY2hvciAhPSBtYWluU2VsZWN0aW9uLmhlYWQpIG5vdFNlbGVjdGVkID0gZmFsc2U7XG5cdFx0aWYgKCF1cGRhdGUuZG9jQ2hhbmdlZCkgcmV0dXJuO1xuXG5cdFx0bGV0IGlzRXhjbHVkZUZpbGUgPSB0aGlzLmlzQ3VycmVudEZpbGVFeGNsdWRlKCk7XG5cdFx0Ly8gY29uc29sZS5sb2codGhpcy5DdXJBY3RpdmVNYXJrZG93biwgaXNFeGNsdWRlRmlsZSlcblxuXHRcdC8vIGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKSBjb25zb2xlLmxvZyhcIi0tLS0tVmlld1VwZGF0ZUNoYW5nZS0tLS0tXCIpO1xuXHRcdGxldCB0ciA9IHVwZGF0ZS50cmFuc2FjdGlvbnNbMF1cblx0XHRsZXQgY2hhbmdlVHlwZSA9IGdldFR5cGVTdHJPZlRyYW5zYWModHIpO1xuXG5cdFx0dHIuY2hhbmdlcy5pdGVyQ2hhbmdlcygoZnJvbUEsIHRvQSwgZnJvbUIsIHRvQiwgaW5zZXJ0ZWQpID0+IHtcblx0XHRcdGxldCBpbnNlcnRlZFN0ciA9IGluc2VydGVkLnNsaWNlU3RyaW5nKDApO1xuXHRcdFx0bGV0IGNoYW5nZWRTdHIgPSB0ci5zdGFydFN0YXRlLmRvYy5zbGljZVN0cmluZyhmcm9tQSwgdG9BKTtcblx0XHRcdGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKXtcblx0XHRcdFx0Y29uc29sZS5sb2coXCJbVmlld1VwZGF0ZV0gdHlwZSwgZnJvbUEsIHRvQSwgY2hhbmdlZCwgZnJvbUIsIHRvQiwgaW5zZXJ0ZWRcIik7XG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYW5nZVR5cGUsIGZyb21BLCB0b0EsIGNoYW5nZWRTdHIsIGZyb21CLCB0b0IsIGluc2VydGVkU3RyKVxuXHRcdFx0XHRjb25zb2xlLmxvZyhcIj09PltDb21wb3NpbmddXCIsIHVwZGF0ZS52aWV3LmNvbXBvc2luZylcblx0XHRcdH1cblxuXHRcdFx0Ly8gdGFibGUgXHU1MTg1XHU5MEU4XHU0RTBEXHU1MDVBXHU1OTA0XHU3NDA2XHVGRjBDXHU3NkY0XHU2M0E1XHU4RkQ0XHU1NkRFID0+IFx1OTE0RFx1NTQwOCBPYnNpZGlhbiBcdTc2ODRcdTY3M0FcdTUyMzZcblx0XHRcdGlmIChnZXRQb3NMaW5lVHlwZSh1cGRhdGUudmlldy5zdGF0ZSwgZnJvbUIpID09IExpbmVUeXBlLnRhYmxlKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0bGV0IGN1cnNvciA9IHVwZGF0ZS52aWV3LnN0YXRlLnNlbGVjdGlvbi5hc1NpbmdsZSgpLm1haW47XG5cblx0XHRcdGlmICh1cGRhdGUudmlldy5jb21wb3Npbmcpe1xuXHRcdFx0XHRpZiAodGhpcy5jb21wb3NlX25lZWRfaGFuZGxlKXtcblx0XHRcdFx0XHR0aGlzLmNvbXBvc2VfZW5kX3BvcyA9IGN1cnNvci5hbmNob3I7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHR0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUgPSB0cnVlO1xuXHRcdFx0XHRcdHRoaXMuY29tcG9zZV9iZWdpbl9wb3MgPSBmcm9tQTtcblx0XHRcdFx0XHR0aGlzLmNvbXBvc2VfZW5kX3BvcyA9IGN1cnNvci5hbmNob3I7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgY2hhbmdlX2Zyb20gPSBmcm9tQjtcblx0XHRcdGxldCBjaGFuZ2VfdG8gPSB0b0I7XG5cdFx0XHRsZXQgY29tcG9zZUVuZCA9IGZhbHNlO1xuXHRcdFx0aWYgKHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSl7XG5cdFx0XHRcdGNvbXBvc2VFbmQgPSB0cnVlO1xuXHRcdFx0XHR0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUgPSBmYWxzZTtcblx0XHRcdFx0Y2hhbmdlX2Zyb20gPSB0aGlzLmNvbXBvc2VfYmVnaW5fcG9zO1xuXHRcdFx0XHRjaGFuZ2VfdG8gPSB0aGlzLmNvbXBvc2VfZW5kX3Bvcztcblx0XHRcdH1cblxuXHRcdFx0aWYgKGNoYW5nZVR5cGUuY29udGFpbnMoJ0Vhc3lUeXBpbmcnKSB8fCBjaGFuZ2VUeXBlPT0ndW5kbycgfHwgY2hhbmdlVHlwZT09J3JlZG8nKSByZXR1cm47XG5cdFx0XHQvLyBcdTUyMjRcdTY1QURcdTZCQ0ZcdTZCMjFcdThGOTNcdTUxNjVcdTdFRDNcdTY3NUZcblx0XHRcdGlmIChjaGFuZ2VUeXBlICE9ICdub25lJyAmJiBub3RTZWxlY3RlZCAmJiAhY2hhbmdlVHlwZS5pbmNsdWRlcygnZGVsZXRlJykpIHtcblx0XHRcdFx0Ly8gXHU3NTI4XHU2MjM3XHU4MUVBXHU1QjlBXHU0RTQ5XHU4RjZDXHU1MzE2XHU4OUM0XHU1MjE5XG5cdFx0XHRcdGlmICh0aGlzLnRyaWdnZXJVc2VyQ3Z0UnVsZSh1cGRhdGUudmlldywgbWFpblNlbGVjdGlvbi5hbmNob3IpKSByZXR1cm47XG5cdFx0XHRcdGlmIChjb21wb3NlRW5kICYmIHRoaXMudHJpZ2dlclB1bmNSZWN0aWZ5KHVwZGF0ZS52aWV3LCBjaGFuZ2VfZnJvbSkpIHJldHVybjtcblxuXHRcdFx0XHQvLyBcdTUyMjRcdTY1QURcdTY4M0NcdTVGMEZcdTUzMTZcdTY1ODdcdTY3MkNcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJyZWFkeSB0byBmb3JtYXRcIik7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKFwiY2hlY2sgaXMgZXhjbHVlIGZpbGU6XCIsIGlzRXhjbHVkZUZpbGUpXG5cdFx0XHRcdGlmICh0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgJiYgbm90U2VsZWN0ZWQgJiYgIWlzRXhjbHVkZUZpbGUgJiZcblx0XHRcdFx0XHQgKGNoYW5nZVR5cGUgIT0gJ25vbmUnIHx8IGluc2VydGVkU3RyPT1cIlxcblwiKSkge1xuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdGlmIChnZXRQb3NMaW5lVHlwZSh1cGRhdGUudmlldy5zdGF0ZSwgY2hhbmdlX2Zyb20pID09IExpbmVUeXBlLnRleHQgfHwgZ2V0UG9zTGluZVR5cGUodXBkYXRlLnZpZXcuc3RhdGUsIGNoYW5nZV9mcm9tKSA9PSBMaW5lVHlwZS50YWJsZSl7XG5cdFx0XHRcdFx0XHRsZXQgY2hhbmdlcyA9IHRoaXMuRm9ybWF0ZXIuZm9ybWF0TGluZU9mRG9jKHVwZGF0ZS5zdGF0ZSwgdGhpcy5zZXR0aW5ncywgY2hhbmdlX2Zyb20sIGN1cnNvci5hbmNob3IsIGluc2VydGVkU3RyKTtcblx0XHRcdFx0XHRcdGlmIChjaGFuZ2VzICE9IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0dXBkYXRlLnZpZXcuZGlzcGF0Y2goLi4uY2hhbmdlc1swXSk7XG5cdFx0XHRcdFx0XHRcdHVwZGF0ZS52aWV3LmRpc3BhdGNoKGNoYW5nZXNbMV0pO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFx1N0M5OFx1OEQzNFx1NjVGNlx1ODFFQVx1NTJBOFx1NjgzQ1x1NUYwRlx1NTMxNlxuXHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuQXV0b0Zvcm1hdCAmJiAhaXNFeGNsdWRlRmlsZSAmJiBjaGFuZ2VUeXBlID09IFwiaW5wdXQucGFzdGVcIiAmJiAhUGxhdGZvcm0uaXNJb3NBcHApIHtcblx0XHRcdFx0bGV0IHVwZGF0ZUxpbmVTdGFydCA9IHVwZGF0ZS5zdGF0ZS5kb2MubGluZUF0KGZyb21CKS5udW1iZXI7XG5cdFx0XHRcdGxldCB1cGRhdGVMaW5lRW5kID0gdXBkYXRlLnN0YXRlLmRvYy5saW5lQXQodG9CKS5udW1iZXI7XG5cdFx0XHRcdGlmICh1cGRhdGVMaW5lU3RhcnQgPT0gdXBkYXRlTGluZUVuZCAmJiBnZXRQb3NMaW5lVHlwZSh1cGRhdGUudmlldy5zdGF0ZSwgdG9CKSA9PSBMaW5lVHlwZS50ZXh0KSB7XG5cdFx0XHRcdFx0bGV0IGNoYW5nZXMgPSB0aGlzLkZvcm1hdGVyLmZvcm1hdExpbmVPZkRvYyh1cGRhdGUuc3RhdGUsIHRoaXMuc2V0dGluZ3MsIGZyb21CLCB0b0IsIGluc2VydGVkU3RyKTtcblx0XHRcdFx0XHRpZiAoY2hhbmdlcyAhPSBudWxsKSB7XG5cdFx0XHRcdFx0XHR1cGRhdGUudmlldy5kaXNwYXRjaCguLi5jaGFuZ2VzWzBdKTtcblx0XHRcdFx0XHRcdC8vIHVwZGF0ZS52aWV3LmRpc3BhdGNoKGNoYW5nZXNbMV0pO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRsZXQgYWxsX2NoYW5nZXM6IFRyYW5zYWN0aW9uU3BlY1tdID0gW107XG5cdFx0XHRcdFx0bGV0IGluc2VydGVkX2FycmF5ID0gaW5zZXJ0ZWRTdHIuc3BsaXQoXCJcXG5cIik7XG5cdFx0XHRcdFx0bGV0IHVwZGF0ZV9zdGFydCA9IGZyb21CXG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IHVwZGF0ZUxpbmVTdGFydDsgaSA8PSB1cGRhdGVMaW5lRW5kOyBpKyspIHtcblx0XHRcdFx0XHRcdGxldCByZWFsX2luc2VydGVkID0gaW5zZXJ0ZWRfYXJyYXlbaSAtIHVwZGF0ZUxpbmVTdGFydF07XG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZygncmVhbF9pbnNlcnRlZCcsIHJlYWxfaW5zZXJ0ZWQucmVwbGFjZSgvXFxuL2csICdcXFxcbicpKVxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ3VwZGF0ZV9kb2NfdGV4dCcsIHVwZGF0ZS5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodXBkYXRlX3N0YXJ0LCB1cGRhdGVfc3RhcnQgKyByZWFsX2luc2VydGVkLmxlbmd0aCkucmVwbGFjZSgvXFxuL2csICdcXFxcbicpKVxuXHRcdFx0XHRcdFx0bGV0IGNoYW5nZXMgPSB0aGlzLkZvcm1hdGVyLmZvcm1hdExpbmVPZkRvYyh1cGRhdGUuc3RhdGUsIHRoaXMuc2V0dGluZ3MsIHVwZGF0ZV9zdGFydCwgdXBkYXRlX3N0YXJ0ICsgcmVhbF9pbnNlcnRlZC5sZW5ndGgsIHJlYWxfaW5zZXJ0ZWQpO1xuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ2NoYW5nZXMnLCBjaGFuZ2VzKVxuXHRcdFx0XHRcdFx0aWYgKGNoYW5nZXMgIT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0XHRhbGxfY2hhbmdlcy5wdXNoKC4uLmNoYW5nZXNbMF0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dXBkYXRlX3N0YXJ0ICs9IHJlYWxfaW5zZXJ0ZWQubGVuZ3RoICsgMTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGFsbF9jaGFuZ2VzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdHVwZGF0ZS52aWV3LmRpc3BhdGNoKC4uLmFsbF9jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcdC8vIGl0ZXJjaGFuZ2VzIGVuZFxuXHR9XG5cblx0cHJpdmF0ZSByZWFkb25seSBoYW5kbGVUYWJEb3duID0gKHZpZXc6IEVkaXRvclZpZXcpID0+IHtcblx0XHRpZiAoIXRoaXMuc2V0dGluZ3MuVGFib3V0KSByZXR1cm4gZmFsc2U7XG5cblx0XHRsZXQgc3RhdGUgPSB2aWV3LnN0YXRlO1xuXHRcdGxldCBkb2MgPSBzdGF0ZS5kb2Ncblx0XHRjb25zdCB0cmVlID0gc3ludGF4VHJlZShzdGF0ZSk7XG5cdFx0Y29uc3QgcyA9IHZpZXcuc3RhdGUuc2VsZWN0aW9uO1xuXHRcdGlmIChzLnJhbmdlcy5sZW5ndGggPiAxKSByZXR1cm4gZmFsc2U7XG5cdFx0Y29uc3QgcG9zID0gcy5tYWluLnRvO1xuXHRcdGxldCBsaW5lID0gZG9jLmxpbmVBdChwb3MpXG5cblx0XHQvLyBEZWJ1ZyBpbmZvXG5cdFx0Ly8gY29uc29sZS5sb2cobGluZS50ZXh0KVxuXHRcdC8vIGZvciAobGV0IHA9bGluZS5mcm9tOyBwPD1saW5lLnRvOyBwKz0xKXtcblx0XHQvLyBcdGNvbnN0IHRva2VuID0gdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWVcblx0XHQvLyBcdGNvbnNvbGUubG9nKHAtbGluZS5mcm9tLCB0b2tlbilcblx0XHQvLyB9XG5cdFx0Ly8gcmV0dXJuIHRydWU7XG5cblx0XHRpZiAocy5tYWluLmZyb209PXMubWFpbi50byAmJiBnZXRQb3NMaW5lVHlwZSh2aWV3LnN0YXRlLCBzLm1haW4uZnJvbSkgPT0gTGluZVR5cGUuY29kZWJsb2NrKXtcblx0XHRcdHZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0ZnJvbTogcy5tYWluLmZyb20sXG5cdFx0XHRcdFx0aW5zZXJ0OiB0aGlzLmdldERlZmF1bHRJbmRlbnRDaGFyKClcblx0XHRcdFx0fSxcblx0XHRcdFx0c2VsZWN0aW9uOiB7XG5cdFx0XHRcdFx0YW5jaG9yOiBzLm1haW4uZnJvbSArIHRoaXMuZ2V0RGVmYXVsdEluZGVudENoYXIoKS5sZW5ndGhcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHQvLyByZXR1cm4gdHJ1ZTtcblxuXHRcdC8vIFx1NUY1M1x1NTE0OVx1NjgwN1x1NTcyOFx1ODg0Q1x1NTE4NVx1NEVFM1x1NzgwMVx1NTE4NVx1OTBFOFxuXHRcdGlmICh0aGlzLnNldHRpbmdzLkJldHRlckNvZGVFZGl0ICYmIHBvcyAtIGxpbmUuZnJvbSAhPSAwICYmIHRyZWUucmVzb2x2ZShwb3MgLSAxLCAxKS5uYW1lLmNvbnRhaW5zKCdpbmxpbmUtY29kZScpKSB7XG5cdFx0XHRpZiAodHJlZS5yZXNvbHZlKHBvcywgMSkubmFtZS5jb250YWlucygnZm9ybWF0dGluZy1jb2RlX2lubGluZS1jb2RlJykpIHtcblx0XHRcdFx0dmlldy5kaXNwYXRjaCh7XG5cdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogcG9zICsgMSwgaGVhZDogcG9zICsgMSB9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGxldCBwID0gcG9zICsgMTsgcCA8IGxpbmUudG8gJiYgdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWUuY29udGFpbnMoJ2lubGluZS1jb2RlJyk7IHAgKz0gMSkge1xuXHRcdFx0XHQvLyBcdTU5ODJcdTY3OUNcdTYyN0VcdTUyMzAgYCBcdTUyMTlcdTUxNDlcdTY4MDdcdThERjNcdTUyMzBcdTUxNzZcdTU0MEVcblx0XHRcdFx0aWYgKHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lLmNvbnRhaW5zKCdmb3JtYXR0aW5nLWNvZGVfaW5saW5lLWNvZGUnKSkge1xuXHRcdFx0XHRcdHZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogcCwgaGVhZDogcCB9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBcdTU5ODJcdTY3OUNcdTZDQTFcdTYyN0VcdTUyMzAgYCBcdTUyMTlcdTc2RjRcdTYzQTVcdThERjNcdTUyMzBcdTg4NENcdTVDM0Vcblx0XHRcdFx0aWYgKHAgPT0gbGluZS50byAtIDEgJiYgdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWUuY29udGFpbnMoJ2lubGluZS1jb2RlJykpIHtcblx0XHRcdFx0XHR2aWV3LmRpc3BhdGNoKHtcblx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHAgKyAxLCBoZWFkOiBwICsgMSB9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFx1NUY1M1x1NTE0OVx1NjgwN1x1NTcyOFx1ODg0Q1x1NTE4NVx1NEVFM1x1NzgwMVx1NTkxNlx1OTBFOFx1RkYwQ1x1NUU3Nlx1NTcyOFx1OTAwOVx1NEUyRFx1NjU4N1x1NjcyQ1x1NzY4NFx1NjBDNVx1NTFCNVx1NEUwQlx1RkYwQ3RhYlx1NUMwNlx1NEYxQVx1OERGM1x1NTFGQVx1NTIzMHBhaXJzdHJpbmdcdTc2ODRcdTU5MTZcdTkwRThcblx0XHRsZXQgc2VsZWN0aW9uID0gdmlldy5zdGF0ZS5zZWxlY3Rpb24uYXNTaW5nbGUoKS5tYWluO1xuXHRcdGxldCBzZWxlY3RlZCA9IHNlbGVjdGlvbi5hbmNob3IgIT0gc2VsZWN0aW9uLmhlYWQ7XG5cdFx0aWYgKHNlbGVjdGVkKXtcblx0XHRcdGxldCBuZXdfYW5jaG9yID0gc2VsZWN0aW9uLmFuY2hvcjxzZWxlY3Rpb24uaGVhZD9zZWxlY3Rpb24uYW5jaG9yOnNlbGVjdGlvbi5oZWFkO1xuXHRcdFx0bGV0IG5ld19oZWFkID0gc2VsZWN0aW9uLmFuY2hvcj5zZWxlY3Rpb24uaGVhZD9zZWxlY3Rpb24uYW5jaG9yOnNlbGVjdGlvbi5oZWFkO1xuXHRcdFx0Ly8gY29uc29sZS5sb2coXCJzZWxlY3Rpb25cIiwgc2VsZWN0aW9uLmFuY2hvciwgc2VsZWN0aW9uLmhlYWQpXG5cblx0XHRcdGZvciAobGV0IHBzdHIgb2YgdGhpcy5UYWJvdXRQYWlyU3Rycyl7XG5cdFx0XHRcdGlmIChkb2Muc2xpY2VTdHJpbmcobmV3X2FuY2hvci1wc3RyLmxlZnQubGVuZ3RoLCBuZXdfYW5jaG9yKSA9PSBwc3RyLmxlZnQgJiZcblx0XHRcdFx0XHRkb2Muc2xpY2VTdHJpbmcobmV3X2hlYWQsIG5ld19oZWFkK3BzdHIucmlnaHQubGVuZ3RoKSA9PSBwc3RyLnJpZ2h0KXtcblx0XHRcdFx0XHRcdHZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiBuZXdfaGVhZCtwc3RyLnJpZ2h0Lmxlbmd0aCwgaGVhZDogbmV3X2hlYWQrcHN0ci5yaWdodC5sZW5ndGggfVxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlRW50ZXIgPSAodmlldzogRWRpdG9yVmlldykgPT4ge1xuXHRcdC8vIGNvbnNvbGUubG9nKFwidGhpcy5zZXR0aW5ncy5FbnRlclR3aWNlXCIsIHRoaXMuc2V0dGluZ3MuRW50ZXJUd2ljZSlcblx0XHRpZiAoIXRoaXMuc2V0dGluZ3MuRW50ZXJUd2ljZSkgcmV0dXJuIGZhbHNlO1xuXG5cdFx0bGV0IHN0cmljdExpbmVCcmVha3MgPSB0aGlzLmFwcC52YXVsdC5jb25maWcuc3RyaWN0TGluZUJyZWFrcyB8fCBmYWxzZTtcblx0XHRpZiAoIXN0cmljdExpbmVCcmVha3MpIHJldHVybiBmYWxzZTtcblxuXHRcdGxldCBzdGF0ZSA9IHZpZXcuc3RhdGU7XG5cdFx0bGV0IGRvYyA9IHN0YXRlLmRvY1xuXHRcdGNvbnN0IHRyZWUgPSBzeW50YXhUcmVlKHN0YXRlKTtcblx0XHRjb25zdCBzID0gdmlldy5zdGF0ZS5zZWxlY3Rpb247XG5cdFx0aWYgKHMucmFuZ2VzLmxlbmd0aCA+IDEpIHJldHVybiBmYWxzZTtcblx0XHRjb25zdCBwb3MgPSBzLm1haW4udG87XG5cdFx0bGV0IGxpbmUgPSBkb2MubGluZUF0KHBvcylcblxuXHRcdC8vIGNvbnNvbGUubG9nKGxpbmUudGV4dCwgZ2V0UG9zTGluZVR5cGUyKHN0YXRlLCBwb3MpKVxuXHRcdC8vIGZvciAobGV0IHA9bGluZS5mcm9tOyBwPD1saW5lLnRvOyBwKz0xKXtcblx0XHQvLyBcdGNvbnN0IHRva2VuID0gdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWVcblx0XHQvLyBcdGNvbnNvbGUubG9nKHAtbGluZS5mcm9tLCB0b2tlbilcblx0XHQvLyB9XG5cdFx0aWYgKC9eXFxzKiQvLnRlc3QobGluZS50ZXh0KSkgcmV0dXJuIGZhbHNlO1xuXHRcdGVsc2UgaWYgKGdldFBvc0xpbmVUeXBlMihzdGF0ZSwgcG9zKSA9PSBMaW5lVHlwZS50ZXh0KSB7XG5cdFx0XHR2aWV3LmRpc3BhdGNoKHtcblx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdGZyb206IHBvcyxcblx0XHRcdFx0XHR0bzogcG9zLFxuXHRcdFx0XHRcdGluc2VydDogJ1xcblxcbidcblx0XHRcdFx0fSxcblx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogcG9zICsgMiB9LFxuXHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0fSlcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cblx0cHJpdmF0ZSByZWFkb25seSBoYW5kbGVNb2RBSW5Db2RlQmxvY2sgPSAodmlldzogRWRpdG9yVmlldykgPT4ge1xuXHRcdGlmICghdGhpcy5zZXR0aW5ncy5CZXR0ZXJDb2RlRWRpdCkgcmV0dXJuIGZhbHNlO1xuXHRcdGxldCBzZWxlY3RlZCA9IGZhbHNlO1xuXHRcdGxldCBtYWluU2VsZWN0aW9uID0gdmlldy5zdGF0ZS5zZWxlY3Rpb24uYXNTaW5nbGUoKS5tYWluO1xuXHRcdGlmIChtYWluU2VsZWN0aW9uLmFuY2hvciAhPSBtYWluU2VsZWN0aW9uLmhlYWQpIHNlbGVjdGVkID0gdHJ1ZTtcblx0XHRpZiAoc2VsZWN0ZWQpIHJldHVybiBmYWxzZTtcblxuXHRcdGxldCBjdXJzb3JfcG9zID0gbWFpblNlbGVjdGlvbi5hbmNob3I7XG5cblx0XHRyZXR1cm4gc2VsZWN0Q29kZUJsb2NrSW5Qb3ModmlldywgY3Vyc29yX3Bvcyk7XG5cdH1cblxuXHRwcml2YXRlIHJlYWRvbmx5IG9uS2V5dXAgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHZpZXc6IEVkaXRvclZpZXcpID0+IHtcblx0XHRpZiAodGhpcy5zZXR0aW5ncy5kZWJ1Zykge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coXCJLZXl1cDpcIiwgZXZlbnQua2V5LCBldmVudC5zaGlmdEtleSwgZXZlbnQuY3RybEtleXx8ZXZlbnQubWV0YUtleSk7XG5cdFx0XHRjb25zb2xlLmxvZyhcIktleXVwOlwiLCBldmVudC5rZXkpO1xuXHRcdH1cblx0XHR0aGlzLmhhbmRsZUVuZENvbXBvc2VUeXBlS2V5KGV2ZW50LCB2aWV3KTtcblx0fVxuXG5cdHRyaWdnZXJVc2VyQ3Z0UnVsZSA9ICh2aWV3OiBFZGl0b3JWaWV3LCBjdXJzb3JfcG9zOiBudW1iZXIpOmJvb2xlYW4gPT4ge1xuXHRcdGZvciAobGV0IHJ1bGUgb2YgdGhpcy5Vc2VyQ29udmVydFJ1bGVzKSB7XG5cdFx0XHQvLyBpZiAoaW5zZXJ0ZWRTdHIgIT0gcnVsZS5iZWZvcmUubGVmdC5zdWJzdHJpbmcocnVsZS5iZWZvcmUubGVmdC5sZW5ndGggLSBpbnNlcnRlZFN0ci5sZW5ndGgpKSBjb250aW51ZTtcblx0XHRcdGxldCBsZWZ0ID0gdmlldy5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcoY3Vyc29yX3BvcyAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLCBjdXJzb3JfcG9zKTtcblx0XHRcdGxldCByaWdodCA9IHZpZXcuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKGN1cnNvcl9wb3MsIGN1cnNvcl9wb3MgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgpO1xuXHRcdFx0bGV0IGluc2VydGVkID0gcnVsZS5hZnRlci5sZWZ0ICsgcnVsZS5hZnRlci5yaWdodDtcblx0XHRcdGxldCBhbmNob3IgPSBjdXJzb3JfcG9zIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyBydWxlLmFmdGVyLmxlZnQubGVuZ3RoO1xuXHRcdFx0bGV0IGZyb20gPSBjdXJzb3JfcG9zIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGg7XG5cdFx0XHRsZXQgdG8gPSBjdXJzb3JfcG9zICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoO1xuXHRcdFx0Ly8gXHU1QkY5XHU2NTg3XHU2ODYzXHU5OTk2XHU4ODRDXHU4OUM0XHU1MjE5XHU1MDVBXHU3Mjc5XHU2QjhBXHU1OTA0XHU3NDA2XG5cdFx0XHRpZiAocnVsZS5iZWZvcmUubGVmdC5jaGFyQXQoMCkgPT09ICdcXG4nICYmIHJ1bGUuYWZ0ZXIubGVmdC5jaGFyQXQoMCkgPT09ICdcXG4nICYmXG5cdFx0XHRcdGN1cnNvcl9wb3MgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCsxPT0wKSB7XG5cdFx0XHRcdGxlZnQgPSAnXFxuJyArIGxlZnQ7XG5cdFx0XHRcdGluc2VydGVkID0gaW5zZXJ0ZWQuc3Vic3RyaW5nKDEpO1xuXHRcdFx0XHRmcm9tID0gMDtcblx0XHRcdH1cblx0XHRcdGlmIChsZWZ0ID09PSBydWxlLmJlZm9yZS5sZWZ0ICYmIHJpZ2h0ID09PSBydWxlLmJlZm9yZS5yaWdodCkge1xuXHRcdFx0XHR2aWV3LmRpc3BhdGNoKHtcblx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRmcm9tOiBmcm9tLFxuXHRcdFx0XHRcdFx0dG86IHRvLFxuXHRcdFx0XHRcdFx0aW5zZXJ0OiBpbnNlcnRlZFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogYW5jaG9yIH0sXG5cdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0fSlcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHRyaWdnZXJQdW5jUmVjdGlmeSA9ICh2aWV3OiBFZGl0b3JWaWV3LCBjaGFuZ2VfZnJvbV9wb3M6IG51bWJlcik6Ym9vbGVhbiA9PiB7XG5cdFx0aWYgKHRoaXMuc2V0dGluZ3MuUHVuY1JlY3RpZnkgJiZcblx0XHRcdC9bLC4/IV0vLnRlc3Qodmlldy5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcoY2hhbmdlX2Zyb21fcG9zIC0gMSwgY2hhbmdlX2Zyb21fcG9zKSkpIHtcblx0XHRcdGxldCBwdW5jID0gdmlldy5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcoY2hhbmdlX2Zyb21fcG9zIC0gMSwgY2hhbmdlX2Zyb21fcG9zKVxuXHRcdFx0aWYgKGNoYW5nZV9mcm9tX3BvcyA+IDIgJiYgL1teXFx1NGUwMC1cXHU5ZmE1XS8udGVzdCh2aWV3LnN0YXRlLmRvYy5zbGljZVN0cmluZyhjaGFuZ2VfZnJvbV9wb3MgLSAyLCBjaGFuZ2VfZnJvbV9wb3MgLSAxKSkpIHsgfVxuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdHZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRcdGNoYW5nZXM6IHtcblx0XHRcdFx0XHRcdGZyb206IGNoYW5nZV9mcm9tX3BvcyAtIDEsXG5cdFx0XHRcdFx0XHR0bzogY2hhbmdlX2Zyb21fcG9zLFxuXHRcdFx0XHRcdFx0aW5zZXJ0OiB0aGlzLmhhbGZUb0Z1bGxTeW1ib2xNYXAuZ2V0KHB1bmMpXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQvLyBzZWxlY3Rpb246IHsgYW5jaG9yOiB0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIHJ1bGUuYWZ0ZXIubGVmdC5sZW5ndGggfSxcblx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHR9KVxuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0aGFuZGxlRW5kQ29tcG9zZVR5cGVLZXkgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHZpZXc6IEVkaXRvclZpZXcpID0+IHtcblx0XHRpZiAoKFsnRW50ZXInLCAnUHJvY2VzcycsICcgJywgJ1NoaWZ0J10uY29udGFpbnMoZXZlbnQua2V5KSB8fCAvXFxkLy50ZXN0KGV2ZW50LmtleSkpICYmXG5cdFx0XHR0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUpIHtcblx0XHRcdGxldCBjdXJzb3IgPSB2aWV3LnN0YXRlLnNlbGVjdGlvbi5hc1NpbmdsZSgpLm1haW47XG5cdFx0XHRpZiAoY3Vyc29yLmhlYWQgIT0gY3Vyc29yLmFuY2hvcikgcmV0dXJuO1xuXHRcdFx0bGV0IGluc2VydGVkU3RyID0gdmlldy5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodGhpcy5jb21wb3NlX2JlZ2luX3BvcywgY3Vyc29yLmFuY2hvcik7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhcImluc2VydGVkIHN0clwiLCBpbnNlcnRlZFN0cik7XG5cdFx0XHR0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUgPSBmYWxzZTtcblx0XHRcdGlmICh0aGlzLnRyaWdnZXJVc2VyQ3Z0UnVsZSh2aWV3LCBjdXJzb3IuYW5jaG9yKSkgcmV0dXJuO1xuXHRcdFx0aWYgKHRoaXMudHJpZ2dlclB1bmNSZWN0aWZ5KHZpZXcsIHRoaXMuY29tcG9zZV9iZWdpbl9wb3MpKSByZXR1cm47XG5cdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5BdXRvRm9ybWF0ICYmICF0aGlzLmlzQ3VycmVudEZpbGVFeGNsdWRlKCkpe1xuXHRcdFx0XHRpZiAoZ2V0UG9zTGluZVR5cGUodmlldy5zdGF0ZSwgY3Vyc29yLmFuY2hvcikgIT0gTGluZVR5cGUudGV4dCkgcmV0dXJuO1xuXHRcdFx0XHRsZXQgY2hhbmdlcyA9IHRoaXMuRm9ybWF0ZXIuZm9ybWF0TGluZU9mRG9jKHZpZXcuc3RhdGUsIHRoaXMuc2V0dGluZ3MsXG5cdFx0XHRcdFx0dGhpcy5jb21wb3NlX2JlZ2luX3BvcywgY3Vyc29yLmFuY2hvciwgaW5zZXJ0ZWRTdHIpO1xuXHRcdFx0XHRpZiAoY2hhbmdlcyAhPSBudWxsKSB7XG5cdFx0XHRcdFx0dmlldy5kaXNwYXRjaCguLi5jaGFuZ2VzWzBdKTtcblx0XHRcdFx0XHR2aWV3LmRpc3BhdGNoKGNoYW5nZXNbMV0pO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGZvcm1hdEFydGljbGUgPSAoZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldyk6IHZvaWQgPT4ge1xuXHRcdGNvbnN0IGVkaXRvclZpZXcgPSBlZGl0b3IuY20gYXMgRWRpdG9yVmlldztcblx0XHRjb25zdCB0cmVlID0gZW5zdXJlU3ludGF4VHJlZShlZGl0b3JWaWV3LnN0YXRlLCBlZGl0b3JWaWV3LnN0YXRlLmRvYy5sZW5ndGgpO1xuXHRcdGlmICghdHJlZSl7XG5cdFx0XHRuZXcgTm90aWNlKCdFYXN5VHlwaW5nOiBTeW50YXggdHJlZSBpcyBub3QgcmVhZHkgeWV0LCBwbGVhc2Ugd2FpdCBhIG1vbWVudCBhbmQgdHJ5IGFnYWluIGxhdGVyIScsIDUwMDApO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHRoaXMub25Gb3JtYXRBcnRpY2xlID0gdHJ1ZTtcblx0XHRcblx0XHRsZXQgbGluZUNvdW50ID0gZWRpdG9yLmxpbmVDb3VudCgpO1xuXHRcdGxldCBuZXdfYXJ0aWNsZSA9IFwiXCI7XG5cdFx0bGV0IGNzID0gZWRpdG9yLmdldEN1cnNvcigpO1xuXHRcdGxldCBjaCA9IDA7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lQ291bnQ7IGkrKykge1xuXHRcdFx0aWYgKGkgIT0gMCkgbmV3X2FydGljbGUgKz0gJ1xcbic7XG5cdFx0XHRpZiAoaSAhPSBjcy5saW5lKSB7XG5cdFx0XHRcdG5ld19hcnRpY2xlICs9IHRoaXMucHJlRm9ybWF0T25lTGluZShlZGl0b3IsIGkgKyAxKVswXTtcblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRsZXQgbmV3RGF0YSA9IHRoaXMucHJlRm9ybWF0T25lTGluZShlZGl0b3IsIGkgKyAxLCBjcy5jaCk7XG5cdFx0XHRcdG5ld19hcnRpY2xlICs9IG5ld0RhdGFbMF07XG5cdFx0XHRcdGNoID0gbmV3RGF0YVsxXTtcblx0XHRcdH1cblx0XHR9XG5cdFx0ZWRpdG9yLnNldFZhbHVlKG5ld19hcnRpY2xlKTtcblx0XHRlZGl0b3Iuc2V0Q3Vyc29yKHsgbGluZTogY3MubGluZSwgY2g6IGNoIH0pO1xuXG5cdFx0dGhpcy5vbkZvcm1hdEFydGljbGUgPSBmYWxzZTtcblxuXHRcdG5ldyBOb3RpY2UoXCJFYXN5VHlwaW5nOiBGb3JtYXQgQXJ0aWNsZSBEb25lIVwiKTtcblx0fVxuXG5cdGlzQ3VycmVudEZpbGVFeGNsdWRlKCk6IGJvb2xlYW4ge1xuXHRcdGlmICh0aGlzLkN1ckFjdGl2ZU1hcmtkb3duID09IFwiXCIpIHtcblx0XHRcdGxldCBmaWxlID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKTtcblx0XHRcdGlmIChmaWxlICE9IG51bGwgJiYgdGhpcy5DdXJBY3RpdmVNYXJrZG93biAhPSBmaWxlLnBhdGgpIHtcblx0XHRcdFx0dGhpcy5DdXJBY3RpdmVNYXJrZG93biA9IGZpbGUucGF0aDtcblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0bGV0IGV4Y2x1ZGVQYXRocyA9IHRoaXMuc2V0dGluZ3MuRXhjbHVkZUZpbGVzLnNwbGl0KCdcXG4nKTtcblx0XHRmb3IgKGxldCBlcGF0aCBvZiBleGNsdWRlUGF0aHMpIHtcblx0XHRcdGlmIChlcGF0aC5jaGFyQXQoMCkgPT0gJy8nKSBlcGF0aCA9IGVwYXRoLnN1YnN0cmluZygxKTtcblx0XHRcdGlmICh0aGlzLkN1ckFjdGl2ZU1hcmtkb3duID09IGVwYXRoKSByZXR1cm4gdHJ1ZTtcblx0XHRcdGxldCBsZW4gPSBlcGF0aC5sZW5ndGg7XG5cdFx0XHRpZiAodGhpcy5DdXJBY3RpdmVNYXJrZG93bi5zdWJzdHJpbmcoMCwgbGVuKSA9PSBlcGF0aCAmJiAodGhpcy5DdXJBY3RpdmVNYXJrZG93bi5jaGFyQXQobGVuKSA9PSAnLycgfHwgdGhpcy5DdXJBY3RpdmVNYXJrZG93bi5jaGFyQXQobGVuKSA9PSAnXFxcXCcgfHxcblx0XHRcdFx0ZXBhdGguY2hhckF0KGxlbiAtIDEpID09IFwiL1wiIHx8IGVwYXRoLmNoYXJBdChsZW4gLSAxKSA9PSBcIlxcXFxcIikpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGZvcm1hdFNlbGVjdGlvbk9yQ3VyTGluZSA9IChlZGl0b3I6IEVkaXRvciwgdmlldzogTWFya2Rvd25WaWV3KTogdm9pZCA9PiB7XG5cdFx0aWYgKCFlZGl0b3Iuc29tZXRoaW5nU2VsZWN0ZWQoKSB8fCBlZGl0b3IuZ2V0U2VsZWN0aW9uKCkgPT09ICcnKSB7XG5cdFx0XHRsZXQgbGluZU51bWJlciA9IGVkaXRvci5nZXRDdXJzb3IoKS5saW5lO1xuXHRcdFx0bGV0IG5ld0xpbmVEYXRhID0gdGhpcy5wcmVGb3JtYXRPbmVMaW5lKGVkaXRvciwgbGluZU51bWJlciArIDEsIGVkaXRvci5nZXRDdXJzb3IoKS5jaCk7XG5cdFx0XHRlZGl0b3IucmVwbGFjZVJhbmdlKG5ld0xpbmVEYXRhWzBdLCB7IGxpbmU6IGxpbmVOdW1iZXIsIGNoOiAwIH0sIHsgbGluZTogbGluZU51bWJlciwgY2g6IGVkaXRvci5nZXRMaW5lKGxpbmVOdW1iZXIpLmxlbmd0aCB9KTtcblx0XHRcdGVkaXRvci5zZXRTZWxlY3Rpb24oeyBsaW5lOiBsaW5lTnVtYmVyLCBjaDogbmV3TGluZURhdGFbMV0gfSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGxldCBzZWxlY3Rpb24gPSBlZGl0b3IubGlzdFNlbGVjdGlvbnMoKVswXTtcblx0XHRsZXQgYmVnaW4gPSBzZWxlY3Rpb24uYW5jaG9yLmxpbmU7XG5cdFx0bGV0IGVuZCA9IHNlbGVjdGlvbi5oZWFkLmxpbmU7XG5cdFx0aWYgKGJlZ2luID4gZW5kKSB7XG5cdFx0XHRsZXQgdGVtcCA9IGJlZ2luO1xuXHRcdFx0YmVnaW4gPSBlbmQ7XG5cdFx0XHRlbmQgPSB0ZW1wO1xuXHRcdH1cblx0XHQvLyBjb25zb2xlLmxvZyhiZWdpbiwgZW5kKVxuXHRcdGxldCBuZXdfbGluZXMgPSBcIlwiO1xuXHRcdGZvciAobGV0IGkgPSBiZWdpbjsgaSA8PSBlbmQ7IGkrKykge1xuXHRcdFx0aWYgKGkgIT0gYmVnaW4pIG5ld19saW5lcyArPSAnXFxuJztcblx0XHRcdG5ld19saW5lcyArPSB0aGlzLnByZUZvcm1hdE9uZUxpbmUoZWRpdG9yLCBpICsgMSlbMF07XG5cdFx0fVxuXHRcdGVkaXRvci5yZXBsYWNlUmFuZ2UobmV3X2xpbmVzLCB7IGxpbmU6IGJlZ2luLCBjaDogMCB9LCB7IGxpbmU6IGVuZCwgY2g6IGVkaXRvci5nZXRMaW5lKGVuZCkubGVuZ3RoIH0pO1xuXHRcdGlmIChzZWxlY3Rpb24uYW5jaG9yLmxpbmUgPCBzZWxlY3Rpb24uaGVhZC5saW5lKSB7XG5cdFx0XHRlZGl0b3Iuc2V0U2VsZWN0aW9uKHsgbGluZTogc2VsZWN0aW9uLmFuY2hvci5saW5lLCBjaDogMCB9LCB7IGxpbmU6IHNlbGVjdGlvbi5oZWFkLmxpbmUsIGNoOiBlZGl0b3IuZ2V0TGluZShzZWxlY3Rpb24uaGVhZC5saW5lKS5sZW5ndGggfSk7XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0ZWRpdG9yLnNldFNlbGVjdGlvbih7IGxpbmU6IHNlbGVjdGlvbi5hbmNob3IubGluZSwgY2g6IGVkaXRvci5nZXRMaW5lKHNlbGVjdGlvbi5hbmNob3IubGluZSkubGVuZ3RoIH0sIHsgbGluZTogc2VsZWN0aW9uLmhlYWQubGluZSwgY2g6IDAgfSk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gcGFyYW06IGxpbmVOdW1iZXIgaXMgKDEtYmFzZWQpLCBcdTVFOUZcdTVGMDNcdTUxRkRcdTY1NzBcblx0Zm9ybWF0T25lTGluZSA9IChlZGl0b3I6IEVkaXRvciwgbGluZU51bWJlcjogbnVtYmVyKTogdm9pZCA9PiB7XG5cdFx0Y29uc3QgZWRpdG9yVmlldyA9IGVkaXRvci5jbSBhcyBFZGl0b3JWaWV3O1xuXHRcdGxldCBzdGF0ZSA9IGVkaXRvclZpZXcuc3RhdGU7XG5cdFx0bGV0IGxpbmUgPSBzdGF0ZS5kb2MubGluZShsaW5lTnVtYmVyKVxuXG5cdFx0aWYgKGdldFBvc0xpbmVUeXBlKHN0YXRlLCBsaW5lLmZyb20pID09IExpbmVUeXBlLnRleHQgfHwgZ2V0UG9zTGluZVR5cGUoc3RhdGUsIGxpbmUuZnJvbSkgPT0gTGluZVR5cGUudGFibGUpIHtcblx0XHRcdGxldCBvbGRMaW5lID0gbGluZS50ZXh0O1xuXHRcdFx0bGV0IG5ld0xpbmUgPSB0aGlzLkZvcm1hdGVyLmZvcm1hdExpbmUoc3RhdGUsIGxpbmVOdW1iZXIsIHRoaXMuc2V0dGluZ3MsIG9sZExpbmUubGVuZ3RoLCAwKVswXTtcblx0XHRcdGlmIChvbGRMaW5lICE9IG5ld0xpbmUpIHtcblx0XHRcdFx0ZWRpdG9yLnJlcGxhY2VSYW5nZShuZXdMaW5lLCB7IGxpbmU6IGxpbmVOdW1iZXIgLSAxLCBjaDogMCB9LCB7IGxpbmU6IGxpbmVOdW1iZXIgLSAxLCBjaDogb2xkTGluZS5sZW5ndGggfSk7XG5cdFx0XHRcdGVkaXRvci5zZXRDdXJzb3IoeyBsaW5lOiBsaW5lTnVtYmVyIC0gMSwgY2g6IGVkaXRvci5nZXRMaW5lKGxpbmVOdW1iZXIgLSAxKS5sZW5ndGggfSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIHBhcmFtOiBsaW5lTnVtYmVyIGlzICgxLWJhc2VkKVxuXHRwcmVGb3JtYXRPbmVMaW5lID0gKGVkaXRvcjogRWRpdG9yLCBsaW5lTnVtYmVyOiBudW1iZXIsIGNoOiBudW1iZXIgPSAtMSk6IFtzdHJpbmcsIG51bWJlcl0gPT4ge1xuXHRcdGNvbnN0IGVkaXRvclZpZXcgPSBlZGl0b3IuY20gYXMgRWRpdG9yVmlldztcblx0XHRsZXQgc3RhdGUgPSBlZGl0b3JWaWV3LnN0YXRlO1xuXHRcdGxldCBsaW5lID0gc3RhdGUuZG9jLmxpbmUobGluZU51bWJlcilcblxuXHRcdGxldCBuZXdMaW5lID0gbGluZS50ZXh0O1xuXHRcdGxldCBuZXdDaCA9IDA7XG5cdFx0bGV0IGN1ckNoID0gbGluZS50ZXh0Lmxlbmd0aDtcblx0XHRpZiAoY2ggIT0gLTEpIHtcblx0XHRcdGN1ckNoID0gY2g7XG5cdFx0fVxuXHRcdGlmIChnZXRQb3NMaW5lVHlwZShzdGF0ZSwgbGluZS5mcm9tKSA9PSBMaW5lVHlwZS50ZXh0IHx8IGdldFBvc0xpbmVUeXBlKHN0YXRlLCBsaW5lLmZyb20pID09IExpbmVUeXBlLnRhYmxlKSB7XG5cdFx0XHRsZXQgbmV3TGluZURhdGEgPSB0aGlzLkZvcm1hdGVyLmZvcm1hdExpbmUoc3RhdGUsIGxpbmVOdW1iZXIsIHRoaXMuc2V0dGluZ3MsIGN1ckNoLCAwKTtcblx0XHRcdG5ld0xpbmUgPSBuZXdMaW5lRGF0YVswXTtcblx0XHRcdG5ld0NoID0gbmV3TGluZURhdGFbMV07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIFtuZXdMaW5lLCBuZXdDaF07XG5cdH1cblxuXHRkZWxldGVCbGFua0xpbmVzID0gKGVkaXRvcjogRWRpdG9yKTogdm9pZCA9PiB7XG5cdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIHtcblx0XHRcdGNvbnNvbGUubG9nKHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZyhcInN0cmljdExpbmVCcmVha3NcIikpO1xuXHRcdFx0Ly8gcmV0dXJuO1xuXHRcdH1cblx0XHRsZXQgc3RyaWN0TGluZUJyZWFrcyA9IHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZyhcInN0cmljdExpbmVCcmVha3NcIik7XG5cblx0XHRjb25zdCBlZGl0b3JWaWV3ID0gZWRpdG9yLmNtIGFzIEVkaXRvclZpZXc7XG5cdFx0bGV0IHN0YXRlID0gZWRpdG9yVmlldy5zdGF0ZTtcblx0XHRsZXQgZG9jID0gc3RhdGUuZG9jXG5cdFx0XG5cdFx0Y29uc3QgdHJlZSA9IGVuc3VyZVN5bnRheFRyZWUoc3RhdGUsIGRvYy5sZW5ndGgpO1xuXHRcdGlmICghdHJlZSl7XG5cdFx0XHRuZXcgTm90aWNlKCdFYXN5VHlwaW5nOiBTeW50YXggdHJlZSBpcyBub3QgcmVhZHkgeWV0LCBwbGVhc2Ugd2FpdCBhIG1vbWVudCBhbmQgdHJ5IGFnYWluIGxhdGVyIScsIDUwMDApO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRcblx0XHRsZXQgc3RhcnRfbGluZSA9IDE7XG5cdFx0bGV0IGVuZF9saW5lID0gZG9jLmxpbmVzO1xuXHRcdGxldCBsaW5lX251bSA9IGRvYy5saW5lcztcblx0XHRjb25zdCBzZWxlY3RlZCA9IGVkaXRvci5zb21ldGhpbmdTZWxlY3RlZCgpICYmIGVkaXRvci5nZXRTZWxlY3Rpb24oKSAhPSAnJztcblx0XHRpZiAoc2VsZWN0ZWQpIHtcblx0XHRcdGxldCBzZWxlY3Rpb24gPSBlZGl0b3IubGlzdFNlbGVjdGlvbnMoKVswXTtcblx0XHRcdGxldCBiZWdpbiA9IHNlbGVjdGlvbi5hbmNob3IubGluZSArIDE7XG5cdFx0XHRsZXQgZW5kID0gc2VsZWN0aW9uLmhlYWQubGluZSArIDE7XG5cdFx0XHRpZiAoYmVnaW4gPiBlbmQpIHtcblx0XHRcdFx0bGV0IHRlbXAgPSBiZWdpbjtcblx0XHRcdFx0YmVnaW4gPSBlbmQ7XG5cdFx0XHRcdGVuZCA9IHRlbXA7XG5cdFx0XHR9XG5cdFx0XHRzdGFydF9saW5lID0gYmVnaW47XG5cdFx0XHRlbmRfbGluZSA9IGVuZFxuXHRcdH1cblxuXHRcdC8vIGlmKHRoaXMuc2V0dGluZ3MuZGVidWcpe1xuXHRcdC8vIFx0bGV0IGxpbmVfaW5kZXggPSBlZGl0b3IuZ2V0Q3Vyc29yKCkubGluZSArIDE7XG5cdFx0Ly8gXHRsZXQgY29udGVudCA9IGVkaXRvci5nZXRMaW5lKGVkaXRvci5nZXRDdXJzb3IoKS5saW5lKTtcblx0XHQvLyBcdGNvbnNvbGUubG9nKGNvbnRlbnQpO1xuXHRcdC8vIFx0Zm9yIChsZXQgaT0wO2k8Y29udGVudC5sZW5ndGg7aSsrKXtcblx0XHQvLyBcdFx0bGV0IG5vZGUgPSB0cmVlLnJlc29sdmUoZG9jLmxpbmUobGluZV9pbmRleCkuZnJvbStpLCAxKTtcblx0XHQvLyBcdFx0Y29uc29sZS5sb2coaSwgbm9kZS5uYW1lKVxuXHRcdC8vIFx0fVxuXHRcdC8vIFx0cmV0dXJuO1xuXHRcdC8vIH1cblxuXHRcdGxldCBkZWxldGVfaW5kZXg6IG51bWJlcltdID0gW107XG5cdFx0bGV0IGJsYW5rX3JlZyA9IC9eXFxzKiQvO1xuXHRcdGxldCByZW1haW5fbmV4dF9ibGFuayA9IGZhbHNlO1xuXG5cdFx0aWYgKHN0YXJ0X2xpbmUgIT0gMSkge1xuXHRcdFx0bGV0IG5vZGUgPSB0cmVlLnJlc29sdmUoZG9jLmxpbmUoc3RhcnRfbGluZSAtIDEpLmZyb20sIDEpO1xuXHRcdFx0aWYgKG5vZGUubmFtZS5jb250YWlucygnbGlzdCcpIHx8IG5vZGUubmFtZS5jb250YWlucygncXVvdGUnKSB8fCBub2RlLm5hbWUuY29udGFpbnMoJ2Jsb2NraWQnKSkge1xuXHRcdFx0XHRyZW1haW5fbmV4dF9ibGFuayA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChlbmRfbGluZSAhPSBsaW5lX251bSAmJiAhYmxhbmtfcmVnLnRlc3QoZG9jLmxpbmUoZW5kX2xpbmUgKyAxKS50ZXh0KSkge1xuXHRcdFx0ZW5kX2xpbmUgKz0gMTtcblx0XHR9XG5cblx0XHRmb3IgKGxldCBpID0gc3RhcnRfbGluZTsgaSA8PSBlbmRfbGluZTsgaSsrKSB7XG5cdFx0XHRsZXQgbGluZSA9IGRvYy5saW5lKGkpO1xuXHRcdFx0bGV0IHBvcyA9IGxpbmUuZnJvbTtcblx0XHRcdGxldCBub2RlID0gdHJlZS5yZXNvbHZlKHBvcywgMSk7XG5cblx0XHRcdC8vIFx1NUJGOVx1NEU4RVx1N0E3QVx1NzY3RFx1ODg0Q1xuXHRcdFx0aWYgKGJsYW5rX3JlZy50ZXN0KGxpbmUudGV4dCkgJiYgIXJlbWFpbl9uZXh0X2JsYW5rKSB7XG5cdFx0XHRcdGRlbGV0ZV9pbmRleC5wdXNoKGkpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKGJsYW5rX3JlZy50ZXN0KGxpbmUudGV4dCkgJiYgcmVtYWluX25leHRfYmxhbmspIHtcblx0XHRcdFx0cmVtYWluX25leHRfYmxhbmsgPSBmYWxzZTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChub2RlLm5hbWUuY29udGFpbnMoJ2hyJykgJiYgZGVsZXRlX2luZGV4W2RlbGV0ZV9pbmRleC5sZW5ndGggLSAxXSA9PSBpIC0gMSkge1xuXHRcdFx0XHRkZWxldGVfaW5kZXgucG9wKClcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKG5vZGUubmFtZS5jb250YWlucygnbGlzdCcpIHx8IG5vZGUubmFtZS5jb250YWlucygncXVvdGUnKSB8fCBub2RlLm5hbWUuY29udGFpbnMoJ2Jsb2NraWQnKSkge1xuXHRcdFx0XHRyZW1haW5fbmV4dF9ibGFuayA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0cmVtYWluX25leHRfYmxhbmsgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gY29uc29sZS5sb2coXCJkZWxldGVfaW5kZXhcIixkZWxldGVfaW5kZXgpXG5cdFx0bGV0IG5ld0NvbnRlbnQgPSBcIlwiO1xuXHRcdGZvciAobGV0IGkgPSAxOyBpIDwgbGluZV9udW07IGkrKykge1xuXHRcdFx0aWYgKCFkZWxldGVfaW5kZXguY29udGFpbnMoaSkpIHtcblx0XHRcdFx0bmV3Q29udGVudCArPSBkb2MubGluZShpKS50ZXh0ICsgJ1xcbic7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICghZGVsZXRlX2luZGV4LmNvbnRhaW5zKGxpbmVfbnVtKSkge1xuXHRcdFx0bmV3Q29udGVudCArPSBkb2MubGluZShsaW5lX251bSkudGV4dFxuXHRcdH1cblxuXHRcdGVkaXRvci5zZXRWYWx1ZShuZXdDb250ZW50KTtcblx0XHQvLyB0aGlzLkNvbnRlbnRQYXJzZXIucmVwYXJzZShlZGl0b3IuZ2V0VmFsdWUoKSwgMCk7XG5cdH1cblxuXHRzd2l0Y2hBdXRvRm9ybWF0dGluZygpIHtcblx0XHR0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgPSAhdGhpcy5zZXR0aW5ncy5BdXRvRm9ybWF0O1xuXHRcdGxldCBzdGF0dXMgPSB0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgPyAnb24nIDogJ29mZic7XG5cdFx0bmV3IE5vdGljZSgnRWFzeVR5cGluZzogQXV0b2Zvcm1hdCBpcyAnICsgc3RhdHVzICsgJyEnKTtcblx0fVxuXG5cdGNvbnZlcnQyQ29kZUJsb2NrKGVkaXRvcjogRWRpdG9yKSB7XG5cdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIGNvbnNvbGUubG9nKFwiLS0tLS0gRWFzeVR5cGluZzogaW5zZXJ0IGNvZGUgYmxvY2stLS0tLVwiKTtcblx0XHRpZiAoZWRpdG9yLnNvbWV0aGluZ1NlbGVjdGVkICYmIGVkaXRvci5nZXRTZWxlY3Rpb24oKSAhPSBcIlwiKSB7XG5cdFx0XHRsZXQgc2VsZWN0ZWQgPSBlZGl0b3IuZ2V0U2VsZWN0aW9uKCk7XG5cdFx0XHRsZXQgc2VsZWN0ZWRSYW5nZSA9IGVkaXRvci5saXN0U2VsZWN0aW9ucygpWzBdO1xuXHRcdFx0bGV0IGFuY2hvciA9IHNlbGVjdGVkUmFuZ2UuYW5jaG9yO1xuXHRcdFx0bGV0IGhlYWQgPSBzZWxlY3RlZFJhbmdlLmhlYWQ7XG5cblx0XHRcdGxldCByZXBsYWNlbWVudCA9IFwiYGBgXFxuXCIgKyBzZWxlY3RlZCArIFwiXFxuYGBgXCI7XG5cdFx0XHQvLyBtYWtlIHN1cmUgYW5jaG9yIDwgaGVhZFxuXHRcdFx0aWYgKGFuY2hvci5saW5lID4gaGVhZC5saW5lIHx8IChhbmNob3IubGluZSA9PSBoZWFkLmxpbmUgJiYgYW5jaG9yLmNoID4gaGVhZC5jaCkpIHtcblx0XHRcdFx0bGV0IHRlbXAgPSBhbmNob3I7XG5cdFx0XHRcdGFuY2hvciA9IGhlYWQ7XG5cdFx0XHRcdGhlYWQgPSB0ZW1wO1xuXHRcdFx0fVxuXHRcdFx0bGV0IGRzdExpbmUgPSBhbmNob3IubGluZTtcblx0XHRcdGlmIChhbmNob3IuY2ggIT0gMCkge1xuXHRcdFx0XHRyZXBsYWNlbWVudCA9ICdcXG4nICsgcmVwbGFjZW1lbnQ7XG5cdFx0XHRcdGRzdExpbmUgKz0gMTtcblx0XHRcdH1cblx0XHRcdGlmIChoZWFkLmNoICE9IGVkaXRvci5nZXRMaW5lKGhlYWQubGluZSkubGVuZ3RoKSB7XG5cdFx0XHRcdHJlcGxhY2VtZW50ID0gcmVwbGFjZW1lbnQgKyAnXFxuJztcblx0XHRcdH1cblx0XHRcdGVkaXRvci5yZXBsYWNlU2VsZWN0aW9uKHJlcGxhY2VtZW50KTtcblx0XHRcdGVkaXRvci5zZXRDdXJzb3IoeyBsaW5lOiBkc3RMaW5lLCBjaDogMyB9KTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRsZXQgY3MgPSBlZGl0b3IuZ2V0Q3Vyc29yKCk7XG5cdFx0XHRsZXQgcmVwbGFjZSA9IFwiYGBgXFxuYGBgXCI7XG5cdFx0XHRsZXQgZHN0TGluZSA9IGNzLmxpbmU7XG5cdFx0XHRpZiAoY3MuY2ggIT0gMCkge1xuXHRcdFx0XHRyZXBsYWNlID0gXCJcXG5cIiArIHJlcGxhY2U7XG5cdFx0XHRcdGRzdExpbmUgKz0gMTtcblx0XHRcdH1cblx0XHRcdGlmIChjcy5jaCAhPSBlZGl0b3IuZ2V0TGluZShjcy5saW5lKS5sZW5ndGgpIHtcblx0XHRcdFx0cmVwbGFjZSA9IHJlcGxhY2UgKyAnXFxuJztcblx0XHRcdH1cblx0XHRcdGVkaXRvci5yZXBsYWNlUmFuZ2UocmVwbGFjZSwgY3MpO1xuXHRcdFx0ZWRpdG9yLnNldEN1cnNvcih7IGxpbmU6IGRzdExpbmUsIGNoOiAzIH0pO1xuXHRcdH1cblxuXHR9XG5cblx0cmVmcmVzaFNlbGVjdGlvblJlcGxhY2VSdWxlKCkge1xuXHRcdHRoaXMuU2VsZWN0aW9uUmVwbGFjZU1hcCA9IG5ldyBNYXAodGhpcy5zZWxlY3Rpb25SZXBsYWNlTWFwSW5pdGFsRGF0YSk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlci5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IHRyaWdnZXIgPSB0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlcltpXTtcblx0XHRcdGxldCBsZWZ0cyA9IHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZVtpXS5sZWZ0O1xuXHRcdFx0bGV0IHJpZ2h0cyA9IHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZVtpXS5yaWdodDtcblxuXHRcdFx0dGhpcy5TZWxlY3Rpb25SZXBsYWNlTWFwLnNldCh0cmlnZ2VyLCB7IGxlZnQ6IGxlZnRzLCByaWdodDogcmlnaHRzIH0pO1xuXHRcdH1cblx0fVxuXG5cdGFkZFVzZXJTZWxlY3Rpb25SZXBSdWxlKHRyaWdnZXI6IHN0cmluZywgbGVmdDogc3RyaW5nLCByaWdodDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0aWYgKHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVUcmlnZ2VyLmluY2x1ZGVzKHRyaWdnZXIpKSByZXR1cm4gZmFsc2U7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXIucHVzaCh0cmlnZ2VyKVxuXHRcdHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZS5wdXNoKHsgbGVmdDogbGVmdCwgcmlnaHQ6IHJpZ2h0IH0pO1xuXHRcdHRoaXMucmVmcmVzaFNlbGVjdGlvblJlcGxhY2VSdWxlKCk7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRkZWxldGVVc2VyU2VsZWN0aW9uUmVwUnVsZShpZHg6IG51bWJlcik6IHZvaWQge1xuXHRcdGlmIChpZHggPCAwIHx8IGlkeCA+PSB0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlci5sZW5ndGgpIHJldHVybjtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlci5zcGxpY2UoaWR4LCAxKTtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVmFsdWUuc3BsaWNlKGlkeCwgMSk7XG5cdFx0dGhpcy5yZWZyZXNoU2VsZWN0aW9uUmVwbGFjZVJ1bGUoKTtcblx0fVxuXG5cdHVwZGF0ZVVzZXJTZWxlY3Rpb25SZXBSdWxlKGlkeDogbnVtYmVyLCBsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmcpIHtcblx0XHRpZiAoaWR4IDwgMCB8fCBpZHggPj0gdGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXIubGVuZ3RoKSByZXR1cm47XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVZhbHVlW2lkeF0ubGVmdCA9IGxlZnQ7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVZhbHVlW2lkeF0ucmlnaHQgPSByaWdodDtcblx0XHR0aGlzLnJlZnJlc2hTZWxlY3Rpb25SZXBsYWNlUnVsZSgpO1xuXHR9XG5cblx0cmVmcmVzaFVzZXJEZWxldGVSdWxlKCkge1xuXHRcdHRoaXMuVXNlckRlbGV0ZVJ1bGVzID0gcnVsZVN0cmluZ0xpc3QyUnVsZUxpc3QodGhpcy5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0KTtcblx0fVxuXG5cdGFkZFVzZXJEZWxldGVSdWxlKGJlZm9yZTogc3RyaW5nLCBhZnRlcjogc3RyaW5nKSB7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0LnB1c2goW2JlZm9yZSwgYWZ0ZXJdKTtcblx0XHR0aGlzLnJlZnJlc2hVc2VyRGVsZXRlUnVsZSgpO1xuXHR9XG5cblx0ZGVsZXRlVXNlckRlbGV0ZVJ1bGUoaWR4OiBudW1iZXIpIHtcblx0XHRpZiAoaWR4ID49IHRoaXMuc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdC5sZW5ndGggfHwgaWR4IDwgMCkgcmV0dXJuO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdC5zcGxpY2UoaWR4LCAxKTtcblx0XHR0aGlzLnJlZnJlc2hVc2VyRGVsZXRlUnVsZSgpO1xuXHR9XG5cblx0dXBkYXRlVXNlckRlbGV0ZVJ1bGUoaWR4OiBudW1iZXIsIGJlZm9yZTogc3RyaW5nLCBhZnRlcjogc3RyaW5nKSB7XG5cdFx0aWYgKGlkeCA+PSB0aGlzLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3QubGVuZ3RoIHx8IGlkeCA8IDApIHJldHVybjtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3RbaWR4XVswXSA9IGJlZm9yZTtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3RbaWR4XVsxXSA9IGFmdGVyO1xuXHRcdHRoaXMucmVmcmVzaFVzZXJEZWxldGVSdWxlKCk7XG5cdH1cblxuXHRyZWZyZXNoVXNlckNvbnZlcnRSdWxlKCkge1xuXHRcdHRoaXMuVXNlckNvbnZlcnRSdWxlcyA9IHJ1bGVTdHJpbmdMaXN0MlJ1bGVMaXN0KHRoaXMuc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3QpO1xuXHR9XG5cblx0YWRkVXNlckNvbnZlcnRSdWxlKGJlZm9yZTogc3RyaW5nLCBhZnRlcjogc3RyaW5nKSB7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdC5wdXNoKFtiZWZvcmUsIGFmdGVyXSk7XG5cdFx0dGhpcy5yZWZyZXNoVXNlckNvbnZlcnRSdWxlKCk7XG5cdH1cblxuXHRkZWxldGVVc2VyQ29udmVydFJ1bGUoaWR4OiBudW1iZXIpIHtcblx0XHRpZiAoaWR4ID49IHRoaXMuc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3QubGVuZ3RoIHx8IGlkeCA8IDApIHJldHVybjtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0LnNwbGljZShpZHgsIDEpO1xuXHRcdHRoaXMucmVmcmVzaFVzZXJDb252ZXJ0UnVsZSgpO1xuXHR9XG5cblx0Z2V0Q29tbWFuZE5hbWVNYXAoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG5cdFx0Y29uc3QgbGFuZyA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKTtcblxuXHRcdGxldCBjb21tYW5kX25hbWVfbWFwX2VuID0gbmV3IE1hcChbXG5cdFx0XHRbXCJmb3JtYXRfYXJ0aWNsZVwiLCBcIkZvcm1hdCBjdXJyZW50IGFydGljbGVcIl0sXG5cdFx0XHRbXCJmb3JtYXRfc2VsZWN0aW9uXCIsIFwiRm9ybWF0IHNlbGVjdGVkIHRleHQgb3IgY3VycmVudCBsaW5lXCJdLFxuXHRcdFx0W1wiZGVsZXRlX2JsYW5rX2xpbmVcIiwgXCJEZWxldGUgYmxhbmsgbGluZXMgb2YgdGhlIHNlbGVjdGVkIG9yIHdob2xlIGFydGljbGVcIl0sXG5cdFx0XHRbXCJpbnNlcnRfY29kZWJsb2NrXCIsIFwiSW5zZXJ0IGNvZGUgYmxvY2sgdy93byBzZWxlY3Rpb25cIl0sXG5cdFx0XHRbXCJzd2l0Y2hfYXV0b2Zvcm1hdFwiLCBcIlN3aXRjaCBhdXRvZm9ybWF0XCJdLFxuXHRcdFx0W1wicGFzdGVfd29fZm9ybWF0XCIsIFwiUGFzdGUgd2l0aG91dCBmb3JtYXRcIl0sXG5cdFx0XSk7XG5cblx0XHRsZXQgY29tbWFuZF9uYW1lX21hcF96aF9UVyA9IG5ldyBNYXAoW1xuXHRcdFx0W1wiZm9ybWF0X2FydGljbGVcIiwgXCJcdTY4M0NcdTVGMEZcdTUzMTZcdTUxNjhcdTY1ODdcIl0sXG5cdFx0XHRbXCJmb3JtYXRfc2VsZWN0aW9uXCIsIFwiXHU2ODNDXHU1RjBGXHU1MzE2XHU5MDc4XHU0RTJEXHU5MEU4XHU1MjA2L1x1NzU3Nlx1NTI0RFx1ODg0Q1wiXSxcblx0XHRcdFtcImRlbGV0ZV9ibGFua19saW5lXCIsIFwiXHU1MjJBXHU5NjY0XHU5MDc4XHU0RTJEXHU5MEU4XHU1MjA2L1x1NTE2OFx1NjU4N1x1NzY4NFx1NTkxQVx1OTkxOFx1N0E3QVx1NzY3RFx1ODg0Q1wiXSxcblx0XHRcdFtcImluc2VydF9jb2RlYmxvY2tcIiwgXCJcdTYzRDJcdTUxNjVcdTRFRTNcdTc4QkNcdTU4NEFcIl0sXG5cdFx0XHRbXCJzd2l0Y2hfYXV0b2Zvcm1hdFwiLCBcIlx1NTIwN1x1NjNEQlx1ODFFQVx1NTJENVx1NjgzQ1x1NUYwRlx1NTMxNlx1OTU4Qlx1OTVEQ1wiXSxcblx0XHRcdFtcInBhc3RlX3dvX2Zvcm1hdFwiLCBcIlx1NzEyMVx1NjgzQ1x1NUYwRlx1NTMxNlx1N0M5OFx1OENCQ1wiXSxcblx0XHRdKTtcblxuXHRcdGxldCBjb21tYW5kX25hbWVfbWFwX3poID0gbmV3IE1hcChbXG5cdFx0XHRbXCJmb3JtYXRfYXJ0aWNsZVwiLCBcIlx1NjgzQ1x1NUYwRlx1NTMxNlx1NTE2OFx1NjU4N1wiXSxcblx0XHRcdFtcImZvcm1hdF9zZWxlY3Rpb25cIiwgXCJcdTY4M0NcdTVGMEZcdTUzMTZcdTkwMDlcdTRFMkRcdTkwRThcdTUyMDYvXHU1RjUzXHU1MjREXHU4ODRDXCJdLFxuXHRcdFx0W1wiZGVsZXRlX2JsYW5rX2xpbmVcIiwgXCJcdTUyMkFcdTk2NjRcdTkwMDlcdTRFMkRcdTkwRThcdTUyMDYvXHU1MTY4XHU2NTg3XHU3Njg0XHU1OTFBXHU0RjU5XHU3QTdBXHU3NjdEXHU4ODRDXCJdLFxuXHRcdFx0W1wiaW5zZXJ0X2NvZGVibG9ja1wiLCBcIlx1NjNEMlx1NTE2NVx1NEVFM1x1NzgwMVx1NTc1N1wiXSxcblx0XHRcdFtcInN3aXRjaF9hdXRvZm9ybWF0XCIsIFwiXHU1MjA3XHU2MzYyXHU4MUVBXHU1MkE4XHU2ODNDXHU1RjBGXHU1MzE2XHU1RjAwXHU1MTczXCJdLFxuXHRcdFx0W1wicGFzdGVfd29fZm9ybWF0XCIsIFwiXHU2NUUwXHU2ODNDXHU1RjBGXHU1MzE2XHU3Qzk4XHU4RDM0XCJdLFxuXHRcdF0pO1xuXG5cdFx0bGV0IGNvbW1hbmRfbmFtZV9tYXAgPSBjb21tYW5kX25hbWVfbWFwX2VuO1xuXHRcdGlmIChsYW5nID09ICd6aCcpIHtcblx0XHRcdGNvbW1hbmRfbmFtZV9tYXAgPSBjb21tYW5kX25hbWVfbWFwX3poO1xuXHRcdH1cblx0XHRlbHNlIGlmIChsYW5nID09ICd6aC1UVycpIHtcblx0XHRcdGNvbW1hbmRfbmFtZV9tYXAgPSBjb21tYW5kX25hbWVfbWFwX3poX1RXO1xuXHRcdH1cblxuXHRcdHJldHVybiBjb21tYW5kX25hbWVfbWFwO1xuXHR9XG5cblx0dXBkYXRlVXNlckNvbnZlcnRSdWxlKGlkeDogbnVtYmVyLCBiZWZvcmU6IHN0cmluZywgYWZ0ZXI6IHN0cmluZykge1xuXHRcdGlmIChpZHggPj0gdGhpcy5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdC5sZW5ndGggfHwgaWR4IDwgMCkgcmV0dXJuO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3RbaWR4XVswXSA9IGJlZm9yZTtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0W2lkeF1bMV0gPSBhZnRlcjtcblx0XHR0aGlzLnJlZnJlc2hVc2VyQ29udmVydFJ1bGUoKTtcblx0fVxuXG5cdGdldEVkaXRvciA9ICgpOiBFZGl0b3IgfCBudWxsID0+IHtcblx0XHRsZXQgZWRpdG9yID0gbnVsbDtcblx0XHRsZXQgbWFya2Rvd25WaWV3ID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcblx0XHRpZiAobWFya2Rvd25WaWV3KSB7XG5cdFx0XHRlZGl0b3IgPSBtYXJrZG93blZpZXcuZWRpdG9yO1xuXHRcdH1cblx0XHRpZiAoZWRpdG9yID09PSBudWxsKSBjb25zb2xlLmxvZygnY2FuXFwndCBnZXQgZWRpdG9yJyk7XG5cdFx0cmV0dXJuIGVkaXRvcjtcblx0fVxuXG5cdGFzeW5jIGxvYWRTZXR0aW5ncygpIHtcblx0XHR0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9TRVRUSU5HUywgYXdhaXQgdGhpcy5sb2FkRGF0YSgpKTtcblx0fVxuXG5cdGFzeW5jIHNhdmVTZXR0aW5ncygpIHtcblx0XHRhd2FpdCB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xuXHR9XG59IiwgImltcG9ydCB7IE5vdGljZX0gZnJvbSBcIm9ic2lkaWFuXCJcbmltcG9ydCB7IEVhc3lUeXBpbmdTZXR0aW5ncywgV29ya01vZGUgfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHsgQW5ub3RhdGlvbiwgRWRpdG9yU3RhdGUsIEV4dGVuc2lvbiwgU3RhdGVGaWVsZCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3BlYywgVGV4dCwgTGluZSB9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB7IG9mZnNldFRvUG9zLCBwb3NUb09mZnNldCwgc3RyaW5nRGVsZXRlQXQsIHN0cmluZ0luc2VydEF0LCBpc1BhcmFtRGVmaW5lZH0gZnJvbSAnLi91dGlscydcbmltcG9ydCB7IGVuc3VyZVN5bnRheFRyZWUsIHN5bnRheFRyZWUgfSBmcm9tIFwiQGNvZGVtaXJyb3IvbGFuZ3VhZ2VcIjtcbmltcG9ydCB7IHByaW50IH0gZnJvbSBcIi4vdXRpbHNcIlxuXG5leHBvcnQgZW51bSBMaW5lVHlwZSB7IHRleHQgPSAndGV4dCcsIGNvZGVibG9jayA9ICdjb2RlYmxvY2snLCBmb3JtdWxhID0gJ2Zvcm11bGEnLCBcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVfc3RhcnQgPSAnY29kZV9ibG9ja19zdGFydCcsIGNvZGVfZW5kID0gJ2NvZGVfYmxvY2tfZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vbmUgPSAnbm9uZScsIGZyb250bWF0dGVyPVwiZnJvbnRtYXR0ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlPSdxdW90ZScsIGNhbGxvdXRfdGl0bGU9J2NhbGxvdXRfdGl0bGUnLCBsaXN0PSdsaXN0JywgdGFibGU9ICd0YWJsZScgfVxuXG5leHBvcnQgZW51bSBTcGFjZVN0YXRlIHtcbiAgICBub25lLFxuICAgIHNvZnQsXG4gICAgc3RyaWN0XG59XG5cbmV4cG9ydCBlbnVtIElubGluZVR5cGUge1xuICAgIHRleHQgPSAndGV4dCcsIGNvZGUgPSAnY29kZScsIGZvcm11bGEgPSAnZm9ybXVsYScsXG4gICAgd2lraWxpbmsgPSAnd2lraWxpbmsnLCBtZGxpbmsgPSBcIm1kbGlua1wiLFxuICAgIHVzZXIgPSAndXNlci1kZWZpbmVkJywgbm9uZSA9ICdub25lJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElubGluZUNoYW5nZSB7XG4gICAgdGV4dDogc3RyaW5nLFxuICAgIGJlZ2luOiBudW1iZXIsXG4gICAgZW5kOiBudW1iZXIsXG4gICAgb3JpZ2luOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcnRpY2xlUGFydCB7XG4gICAgdHlwZTogTGluZVR5cGU7XG4gICAgYmVnaW46IG51bWJlcjtcbiAgICBlbmQ6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElubGluZVBhcnQge1xuICAgIGNvbnRlbnQ6IHN0cmluZztcbiAgICB0eXBlOiBJbmxpbmVUeXBlO1xuICAgIGJlZ2luOiBudW1iZXI7XG4gICAgZW5kOiBudW1iZXI7XG4gICAgbGVmdFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZTtcbiAgICByaWdodFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZTtcbn1cblxuZXhwb3J0IGNsYXNzIExpbmVGb3JtYXRlciB7XG4gICAgY29uc3RydWN0b3IoKSB7IH1cbiAgICBzeW50YXhUcmVlTm9kZU5hbWVUeXBlKG5hbWU6c3RyaW5nKTpJbmxpbmVUeXBle1xuICAgICAgICBpZihuYW1lLmNvbnRhaW5zKCdjb2RlJykgJiYgIW5hbWUuY29udGFpbnMoXCJsaW5rXCIpKXtcbiAgICAgICAgICAgIHJldHVybiBJbmxpbmVUeXBlLmNvZGU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZihuYW1lLmNvbnRhaW5zKCdtYXRoJykpe1xuICAgICAgICAgICAgcmV0dXJuIElubGluZVR5cGUuZm9ybXVsYTtcbiAgICAgICAgfVxuICAgICAgICBlbHNle1xuICAgICAgICAgICAgcmV0dXJuIElubGluZVR5cGUudGV4dDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHBhcmFtIGxpbmVOdW06IDEtYmFzZWQgbGluZSBudW1iZXJcbiAgICBwYXJzZUxpbmVXaXRoU3ludGF4VHJlZShzdGF0ZTogRWRpdG9yU3RhdGUsIGxpbmVOdW06bnVtYmVyLCByZWdSZWdFeHA/OiBzdHJpbmcpe1xuICAgICAgICBsZXQgbGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYTogSW5saW5lUGFydFtdID0gW107XG4gICAgICAgIGxldCBsaW5lID0gc3RhdGUuZG9jLmxpbmUobGluZU51bSk7XG4gICAgICAgIGNvbnN0IHRyZWUgPSBzeW50YXhUcmVlKHN0YXRlKTtcbiAgICAgICAgbGV0IHBvcyA9IGxpbmUuZnJvbTtcbiAgICAgICAgbGV0IHByZXZOb2RlVHlwZTpJbmxpbmVUeXBlID0gSW5saW5lVHlwZS5ub25lO1xuICAgICAgICBsZXQgcHJldkJlZ2luSWR4ID0gMDtcbiAgICAgICAgd2hpbGUocG9zPGxpbmUudG8pe1xuICAgICAgICAgICAgbGV0IG5vZGUgPSB0cmVlLnJlc29sdmUocG9zLCAxKTtcbiAgICAgICAgICAgIGxldCBjdXJOb2RlVHlwZSA9IHRoaXMuc3ludGF4VHJlZU5vZGVOYW1lVHlwZShub2RlLm5hbWUpXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmKHByZXZOb2RlVHlwZT09SW5saW5lVHlwZS5ub25lKXtcbiAgICAgICAgICAgICAgICBwcmV2Tm9kZVR5cGU9Y3VyTm9kZVR5cGU7XG4gICAgICAgICAgICAgICAgcHJldkJlZ2luSWR4PTA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmKHByZXZOb2RlVHlwZT09Y3VyTm9kZVR5cGUpe31cbiAgICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgICAgbGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDpsaW5lLnRleHQuc3Vic3RyaW5nKHByZXZCZWdpbklkeCwgcG9zLWxpbmUuZnJvbSksXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6cHJldk5vZGVUeXBlLFxuICAgICAgICAgICAgICAgICAgICBiZWdpbjpwcmV2QmVnaW5JZHgsXG4gICAgICAgICAgICAgICAgICAgIGVuZDpwb3MtbGluZS5mcm9tLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0U3BhY2VSZXF1aXJlOlNwYWNlU3RhdGUubm9uZSxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHRTcGFjZVJlcXVpcmU6U3BhY2VTdGF0ZS5ub25lXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBwcmV2Tm9kZVR5cGUgPSBjdXJOb2RlVHlwZTtcbiAgICAgICAgICAgICAgICBwcmV2QmVnaW5JZHggPSBwb3MtbGluZS5mcm9tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdXBkYXRlIG5leHQgcG9zXG4gICAgICAgICAgICBpZiAoY3VyTm9kZVR5cGUgPT0gSW5saW5lVHlwZS50ZXh0KXtcbiAgICAgICAgICAgICAgICBwb3MrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgICAgcG9zID0gbm9kZS50bztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYocG9zPT1saW5lLnRvKXtcbiAgICAgICAgICAgICAgICBsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OmxpbmUudGV4dC5zdWJzdHJpbmcocHJldkJlZ2luSWR4LCBwb3MtbGluZS5mcm9tKSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTpwcmV2Tm9kZVR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOnByZXZCZWdpbklkeCxcbiAgICAgICAgICAgICAgICAgICAgZW5kOnBvcy1saW5lLmZyb20sXG4gICAgICAgICAgICAgICAgICAgIGxlZnRTcGFjZVJlcXVpcmU6U3BhY2VTdGF0ZS5ub25lLFxuICAgICAgICAgICAgICAgICAgICByaWdodFNwYWNlUmVxdWlyZTpTcGFjZVN0YXRlLm5vbmVcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwibGluZSBwYXJ0czogXCIsIGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGEpO1xuICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgbGV0IHJldEFycmF5OiBJbmxpbmVQYXJ0W10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYVtpXS50eXBlICE9IElubGluZVR5cGUudGV4dCkge1xuICAgICAgICAgICAgICAgIHJldEFycmF5LnB1c2gobGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYVtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgdGVtcEFycmF5OiBJbmxpbmVQYXJ0W107XG4gICAgICAgICAgICAgICAgaWYgKGlzUGFyYW1EZWZpbmVkKHJlZ1JlZ0V4cCkpXG4gICAgICAgICAgICAgICAgICAgIHRlbXBBcnJheSA9IHNwbGl0VGV4dFdpdGhMaW5rQW5kVXNlckRlZmluZWQobGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYVtpXS5jb250ZW50LCByZWdSZWdFeHApO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGVtcEFycmF5ID0gc3BsaXRUZXh0V2l0aExpbmtBbmRVc2VyRGVmaW5lZChsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhW2ldLmNvbnRlbnQpO1xuICAgIFxuICAgICAgICAgICAgICAgIHRlbXBBcnJheS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmJlZ2luICs9IGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGFbaV0uYmVnaW47XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZW5kICs9IGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGFbaV0uYmVnaW47XG4gICAgICAgICAgICAgICAgICAgIHJldEFycmF5LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29uc29sZS5sb2cocmV0QXJyYXkpXG4gICAgICAgIHJldHVybiByZXRBcnJheTtcbiAgICB9XG5cbiAgICBmb3JtYXRMaW5lT2ZEb2Moc3RhdGU6IEVkaXRvclN0YXRlLCBzZXR0aW5nczogRWFzeVR5cGluZ1NldHRpbmdzLCBmcm9tQjogbnVtYmVyLCB0b0I6IG51bWJlciwgaW5zZXJ0ZWRTdHI6IHN0cmluZyk6IFtUcmFuc2FjdGlvblNwZWNbXSwgVHJhbnNhY3Rpb25TcGVjXSB8IG51bGwge1xuICAgICAgICBsZXQgZG9jID0gc3RhdGUuZG9jO1xuICAgICAgICBsZXQgbGluZSA9IGRvYy5saW5lQXQoZnJvbUIpLnRleHQ7XG4gICAgICAgIGxldCByZXMgPSBudWxsXG4gICAgICAgIGlmIChpbnNlcnRlZFN0ci5jb250YWlucyhcIlxcblwiKSlcbiAgICAgICAge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ0Zyb21CLCBUb0InLCBmcm9tQiwgdG9CKVxuICAgICAgICAgICAgcmVzID0gdGhpcy5mb3JtYXRMaW5lKHN0YXRlLCBkb2MubGluZUF0KGZyb21CKS5udW1iZXIsIHNldHRpbmdzLCBvZmZzZXRUb1Bvcyhkb2MsIGZyb21CKS5jaCwgb2Zmc2V0VG9Qb3MoZG9jLCBmcm9tQikuY2gpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgcmVzID0gdGhpcy5mb3JtYXRMaW5lKHN0YXRlLCBkb2MubGluZUF0KGZyb21CKS5udW1iZXIsIHNldHRpbmdzLCBvZmZzZXRUb1Bvcyhkb2MsIHRvQikuY2gsIG9mZnNldFRvUG9zKGRvYywgZnJvbUIpLmNoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzID09PW51bGwgfHwgcmVzWzJdLmxlbmd0aD09MCkgcmV0dXJuIG51bGw7XG4gICAgICAgIFxuICAgICAgICBsZXQgbmV3bGluZSA9IHN0cmluZ0luc2VydEF0KHJlc1swXSwgcmVzWzFdLCBcInxcIik7XG4gICAgICAgIC8vIGlmIChzZXR0aW5ncy5kZWJ1ZykgY29uc29sZS5sb2coXCJFYXN5VHlwaW5nOiBOZXcgTGluZSBTdHJpbmc6XCIsIG5ld2xpbmUpXG5cbiAgICAgICAgbGV0IGNoYW5nZXM6IFRyYW5zYWN0aW9uU3BlY1tdID0gW107XG4gICAgICAgIGxldCBvZmZzZXQgPSBkb2MubGluZUF0KGZyb21CKS5mcm9tO1xuXG4gICAgICAgIGZvcihsZXQgY2hhbmdlSXRlbSBvZiByZXNbMl0pXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNoYW5nZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgY2hhbmdlczp7ZnJvbTogb2Zmc2V0K2NoYW5nZUl0ZW0uYmVnaW4sIHRvOm9mZnNldCtjaGFuZ2VJdGVtLmVuZCwgaW5zZXJ0OmNoYW5nZUl0ZW0udGV4dH0sIHVzZXJFdmVudDpcIkVhc3lUeXBpbmcuY2hhbmdlXCJcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluc2VydGVkU3RyLmNvbnRhaW5zKFwiXFxuXCIpKXtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiaW5zZXJ0U3RyXCIsIGluc2VydGVkU3RyKVxuICAgICAgICAgICAgcmVzWzFdKz0gaW5zZXJ0ZWRTdHIubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbY2hhbmdlcywge3NlbGVjdGlvbjp7YW5jaG9yOm9mZnNldCtyZXNbMV19LCB1c2VyRXZlbnQ6XCJFYXN5VHlwaW5nLmNoYW5nZVwifV07XG4gICAgfVxuXG4gICAgLy8gXHU4RkQ0XHU1NkRFXHU1MDNDXHVGRjFBIFtcdTY3MDBcdTdFQzhcdTc2ODRcdTg4NENcdUZGMENcdTY3MDBcdTdFQzhcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcdUZGMENcdTUxODVcdTVCQjlcdTY1MzlcdTUzRDhdXG4gICAgLy8gcGFyYW0gbGluZU51bTogMS1iYXNlZCBsaW5lIG51bWJlclxuICAgIC8vIGN1ckNoOiBcdTUxNDlcdTY4MDdcdTU3MjhcdTVGNTNcdTUyNERcdTg4NENcdTc2ODRcdTRGNERcdTdGNkVcbiAgICAvLyBwcmV2Q2g6IFx1NTE0OVx1NjgwN1x1NTcyOFx1NTI0RFx1NEUwMFx1NjVGNlx1NTIzQlx1NTcyOFx1NUY1M1x1NTI0RFx1ODg0Q1x1NzY4NFx1NEY0RFx1N0Y2RVxuICAgIGZvcm1hdExpbmUoc3RhdGU6IEVkaXRvclN0YXRlLCBsaW5lTnVtOm51bWJlciwgc2V0dGluZ3M6IEVhc3lUeXBpbmdTZXR0aW5ncywgY3VyQ2g6IG51bWJlciwgcHJldkNoPzogbnVtYmVyKTogW3N0cmluZywgbnVtYmVyLCBJbmxpbmVDaGFuZ2VbXV0gfCBudWxsIHtcbiAgICAgICAgLy8gbmV3IE5vdGljZShcImZvcm1hdC1ub3dcIik7XG4gICAgICAgIGxldCBsaW5lID0gc3RhdGUuZG9jLmxpbmUobGluZU51bSkudGV4dDtcbiAgICAgICAgbGV0IHJlZ051bGwgPSAvXlxccyokL2c7XG4gICAgICAgIGlmIChyZWdOdWxsLnRlc3QobGluZSkpIHJldHVybiBbbGluZSwgY3VyQ2gsIFtdXTtcbiAgICAgICAgLy8gMS4gXHU1MjEyXHU1MjA2XHU0RTAwXHU4ODRDXHU2NTg3XHU1QjU3XHU3Njg0XHU1MTg1XHU5MEU4XHU0RTBEXHU1NDBDXHU2QTIxXHU1NzU3XHU1MzNBXHU1N0RGXG5cbiAgICAgICAgbGV0IGxpbmVQYXJ0cyA9IHNldHRpbmdzLlVzZXJEZWZpbmVkUmVnU3dpdGNoXG4gICAgICAgID8gdGhpcy5wYXJzZUxpbmVXaXRoU3ludGF4VHJlZShzdGF0ZSwgbGluZU51bSwgc2V0dGluZ3MuVXNlckRlZmluZWRSZWdFeHApXG4gICAgICAgIDogdGhpcy5wYXJzZUxpbmVXaXRoU3ludGF4VHJlZShzdGF0ZSwgbGluZU51bSk7XG4gICAgICAgIFxuICAgICAgICBpZiAoc2V0dGluZ3MuZGVidWcpIGNvbnNvbGUubG9nKFwibGluZSBwYXJ0c1xcblwiLCBsaW5lUGFydHMpO1xuXG4gICAgICAgIC8vIFx1NTkwN1x1NEVGRFx1NTM5Rlx1Njc2NVx1NzY4NGxpbmVQYXJ0cywgXHU2REYxXHU2MkY3XHU4RDFEXG4gICAgICAgIGxldCBsaW5lUGFydHNPcmlnaW4gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGxpbmVQYXJ0cykpO1xuICAgICAgICBsZXQgaW5saW5lQ2hhbmdlTGlzdDogSW5saW5lQ2hhbmdlW10gPSBbXTtcblxuICAgICAgICBsZXQgY3Vyc29yTGluZVBhcnRJbmRleCA9IC0xO1xuICAgICAgICBsZXQgY3Vyc29yUmVsYXRpdmVJbmRleCA9IC0xO1xuICAgICAgICBsZXQgcmVzdWx0Q3Vyc29yQ2ggPSAwOyAgICAgLy8gXHU4RjkzXHU1MUZBXHU3Njg0XHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXG5cbiAgICAgICAgLy8gMi4gXHU2MjdFXHU1MjMwXHU1MTQ5XHU2ODA3XHU2MjQwXHU1NzI4XHU3Njg0XHU5MEU4XHU1MjA2XHVGRjBDXHU1OTgyXHU2NzlDXHU2NjJGIElubGluZVBhcnQudGV4dFx1RkYwQ1x1NTIxOVx1NTcyOFx1NTE0OVx1NjgwN1x1NTkwNFx1NjNEMlx1NTE2NSdcXDAnXHU2NzY1XHU2ODA3XHU4QkIwXHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZVBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoY3VyQ2ggPiBsaW5lUGFydHNbaV0uYmVnaW4gJiYgY3VyQ2ggPD0gbGluZVBhcnRzW2ldLmVuZCkge1xuICAgICAgICAgICAgICAgIGN1cnNvckxpbmVQYXJ0SW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGN1cnNvclJlbGF0aXZlSW5kZXggPSBjdXJDaCAtIGxpbmVQYXJ0c1tpXS5iZWdpbjtcbiAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ldLnR5cGUgPT09IElubGluZVR5cGUudGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9IHN0cmluZ0luc2VydEF0KGxpbmVQYXJ0c1tpXS5jb250ZW50LCBjdXJzb3JSZWxhdGl2ZUluZGV4LCAnXFwwJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCByZXN1bHRMaW5lID0gJyc7XG4gICAgICAgIGxldCBvZmZzZXQgPSAwO1xuICAgICAgICAvLyBcdTRGRERcdTVCNThcdTUyNERcdTRFMDBcdTkwRThcdTUyMDZcdTc2ODRcdTUzM0FcdTU3NTdcdTdDN0JcdTU3OEJcdUZGMENJbmxpbmVUeXBlLm5vbmUgXHU0RUUzXHU4ODY4XHU0RTAwXHU4ODRDXHU3Njg0XHU1RjAwXHU1OUNCXG4gICAgICAgIGxldCBwcmV2UGFydFR5cGU6IHN0cmluZyA9IElubGluZVR5cGUubm9uZTtcbiAgICAgICAgbGV0IHByZXZUZXh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUubm9uZTtcblxuICAgICAgICAvLyAzLiBcdTkwNERcdTUzODZcdTZCQ0ZcdTRFMkFcdTg4NENcdTkwRThcdTUyMDZcdUZGMENcdThGREJcdTg4NENcdTY4M0NcdTVGMEZcdTUzMTZcdTU5MDRcdTc0MDZcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lUGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIC8vIDMuMSBcdTU5ODJcdTY3OUNcdTg4NENcdTUxODVcdTdCMkNcdTRFMDBcdTkwRThcdTUyMDZcdTRFM0FcdTY1ODdcdTY3MkNcdUZGMENcdTUyMTlcdTU5MDRcdTc0MDZcdTUzRTVcdTk5OTZcdTVCNTdcdTZCQ0RcdTU5MjdcdTUxOTlcdTc2ODRcdTkwRThcdTUyMDZcbiAgICAgICAgICAgIGlmIChpID09PSAwICYmIGxpbmVQYXJ0c1tpXS50eXBlID09PSBJbmxpbmVUeXBlLnRleHQgJiYgc2V0dGluZ3MuQXV0b0NhcGl0YWwpIHtcbiAgICAgICAgICAgICAgICAvLyAzLjEuMSBcdTU5ODJcdTY3OUMgcHJldkN1cnNvciBcdTRFMTRcdTUxNDlcdTY4MDdcdTRFMERcdTU3MjhcdTZCNjRcdTkwRThcdTUyMDZcdUZGMENcdTUyMTlcdThERjNcdThGQzdcbiAgICAgICAgICAgICAgICBpZiAoaXNQYXJhbURlZmluZWQocHJldkNoKSAmJiBjdXJzb3JMaW5lUGFydEluZGV4ICE9IDApIHsgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVnRmlyc3RTZW50ZW5jZSA9IC9eXFxzKihcXC0gKFxcW1t4IF1cXF0gKT8pP1x1MjAxQz9bYS16XFx1MDQwMVxcdTA0NTFcXHUwNDEwLVxcdTA0NGZdL2c7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWdIZWFkZXJTZW50ZW5jZSA9IC9eKCMrIHw+KyA/fFx1MjAxQylbYS16XFx1MDQwMVxcdTA0NTFcXHUwNDEwLVxcdTA0NGZdL2c7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZXh0Y29weSA9IGxpbmVQYXJ0c1swXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSByZWdGaXJzdFNlbnRlbmNlLmV4ZWModGV4dGNvcHkpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2hIZWFkZXIgPSByZWdIZWFkZXJTZW50ZW5jZS5leGVjKHRleHRjb3B5KTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRzdENoYXJJbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRzdENoYXJJbmRleCA9IHJlZ0ZpcnN0U2VudGVuY2UubGFzdEluZGV4IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtYXRjaEhlYWRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZHN0Q2hhckluZGV4ID0gcmVnSGVhZGVyU2VudGVuY2UubGFzdEluZGV4IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5BdXRvQ2FwaXRhbE1vZGUgPT0gV29ya01vZGUuR2xvYmFsbHkgfHwgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgZHN0Q2hhckluZGV4ID49IHByZXZDaCAmJiBkc3RDaGFySW5kZXggPCBjdXJDaCkpIHsgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRzdENoYXJJbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRzdENoYXJJbmRleCAhPSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbMF0uY29udGVudCA9IHRleHRjb3B5LnN1YnN0cmluZygwLCBkc3RDaGFySW5kZXgpICsgdGV4dGNvcHkuY2hhckF0KGRzdENoYXJJbmRleCkudG9VcHBlckNhc2UoKSArIHRleHRjb3B5LnN1YnN0cmluZyhkc3RDaGFySW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3dpdGNoIChsaW5lUGFydHNbaV0udHlwZSkge1xuICAgICAgICAgICAgICAgIC8vIDMuMi4xIFx1NTkwNFx1NzQwNlx1NjU4N1x1NjcyQ1x1NTMzQVx1NTc1N1xuICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS50ZXh0OlxuICAgICAgICAgICAgICAgICAgICBsZXQgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjQgXHU1OTA0XHU3NDA2XHU1M0U1XHU5OTk2XHU1QjU3XHU2QkNEXHU1OTI3XHU1MTk5XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5BdXRvQ2FwaXRhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZyA9IC9bXFwuXFw/XFwhXHUzMDAyXHVGRjAxXHVGRjFGXShbXFxzXSopW2EtelxcdTA0MDFcXHUwNDUxXFx1MDQxMC1cXHUwNDRmXS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSByZWcuZXhlYyhjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEluZGV4ID0gcmVnLmxhc3RJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJwcmV2Q2gsIGN1ckNoLCBvZmZzZXQsIHRlbXBJbmRleFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHByZXZDaCwgY3VyQ2gsIG9mZnNldCwgdGVtcEluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc1NwYWNlRG90ID0gdGVtcEluZGV4LTI8MCB8fCBjb250ZW50LnN1YnN0cmluZyh0ZW1wSW5kZXgtMiwgdGVtcEluZGV4KT09JyAuJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuQXV0b0NhcGl0YWxNb2RlID09IFdvcmtNb2RlLkdsb2JhbGx5ICYmICFpc1NwYWNlRG90KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIGNvbnRlbnQuY2hhckF0KHRlbXBJbmRleCkudG9VcHBlckNhc2UoKSArIGNvbnRlbnQuc3Vic3RyaW5nKHJlZy5sYXN0SW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgdGVtcEluZGV4ID49IHByZXZDaCAtIG9mZnNldCAmJiB0ZW1wSW5kZXggPCBjdXJDaCAtIG9mZnNldCAmJiAhaXNTcGFjZURvdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKDAsIHRlbXBJbmRleCkgKyBjb250ZW50LmNoYXJBdCh0ZW1wSW5kZXgpLnRvVXBwZXJDYXNlKCkgKyBjb250ZW50LnN1YnN0cmluZyhyZWcubGFzdEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSAgIFxuXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGluc2VydFNwYWNlKGNvbnRlbnQ6IHN0cmluZywgcmVnOiBSZWdFeHAsIHByZXZDaDogbnVtYmVyLCBjdXJDaDogbnVtYmVyLCBvZmZzZXQ6IG51bWJlcik6IFtzdHJpbmcsIG51bWJlcl0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSByZWcuZXhlYyhjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEluZGV4ID0gcmVnLmxhc3RJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgdGVtcEluZGV4ID49IHByZXZDaCAtIG9mZnNldCAmJiB0ZW1wSW5kZXggPCBjdXJDaCAtIG9mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIFwiIFwiICsgY29udGVudC5zdWJzdHJpbmcodGVtcEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyQ2ggKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2NvbnRlbnQsIGN1ckNoXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRleHQuMSBcdTU5MDRcdTc0MDZcdTRFMkRcdTgyRjFcdTY1ODdcdTRFNEJcdTk1RjRcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLkNoaW5lc2VFbmdsaXNoU3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWcxID0gLyhbQS1aYS16XSkoW1xcdTRlMDAtXFx1OWZhNV0pL2dpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZzIgPSAvKFtcXHU0ZTAwLVxcdTlmYTVdKShbQS1aYS16XSkvZ2k7XG4gICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudCwgY3VyQ2hdID0gaW5zZXJ0U3BhY2UoY29udGVudCwgcmVnMSwgcHJldkNoLCBjdXJDaCwgb2Zmc2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50LCBjdXJDaF0gPSBpbnNlcnRTcGFjZShjb250ZW50LCByZWcyLCBwcmV2Q2gsIGN1ckNoLCBvZmZzZXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLkNoaW5lc2VOdW1iZXJTcGFjZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnID0gLyhbMC05XSkoW1xcdTRlMDAtXFx1OWZhNV0pL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnMSA9IC8oW1xcdTRlMDAtXFx1OWZhNV0pKFswLTldKS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnQsIGN1ckNoXSA9IGluc2VydFNwYWNlKGNvbnRlbnQsIHJlZywgcHJldkNoLCBjdXJDaCwgb2Zmc2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50LCBjdXJDaF0gPSBpbnNlcnRTcGFjZShjb250ZW50LCByZWcxLCBwcmV2Q2gsIGN1ckNoLCBvZmZzZXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLkVuZ2xpc2hOdW1iZXJTcGFjZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnID0gLyhbQS1aYS16XSkoXFxkKS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZzEgPSAvKFxcZCkoW0EtWmEtel0pL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudCwgY3VyQ2hdID0gaW5zZXJ0U3BhY2UoY29udGVudCwgcmVnLCBwcmV2Q2gsIGN1ckNoLCBvZmZzZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnQsIGN1ckNoXSA9IGluc2VydFNwYWNlKGNvbnRlbnQsIHJlZzEsIHByZXZDaCwgY3VyQ2gsIG9mZnNldCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjIgXHU1OTA0XHU3NDA2XHU0RTJEXHU2NTg3XHU5NUY0XHU2NUUwXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5DaGluZXNlTm9TcGFjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZyA9IC8oW1xcdTRlMDAtXFx1OWZhNVx1RkYwQ1x1MzAwMlx1MzAwMVx1RkYwMVx1RkYxQlx1MjAxOFx1MjAxOVx1MzAwQVx1MzAwQl0rKShcXHMrKShbXFx1NGUwMC1cXHU5ZmE1XHVGRjBDXHUzMDAyXHUzMDAxXHVGRjAxXHVGRjFCXHUyMDE4XHUyMDE5XHUzMDBBXHUzMDBCXSspL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocmVnLmV4ZWMoY29udGVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShyZWcsIFwiJDEkM1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBcdTY4MDdcdTcwQjlcdTRFMEVcdTY1ODdcdTY3MkNcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRleHQuMyBcdTU5MDRcdTc0MDZcdTY4MDdcdTcwQjlcdTRFMEVcdTY1ODdcdTY3MkNcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmKHNldHRpbmdzLkVuZ2xpc2hTcGFjZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnID0gLyhbLFxcLjtcXD9cXCFcXCldKShbMC05QS1aYS16XFx1MDQwMVxcdTA0NTFcXHUwNDEwLVxcdTA0NGZcXHU0ZTAwLVxcdTlmYTVdKXwoW0EtWmEtejAtOVxcdTRlMDAtXFx1OWZhNTosXFwuXFw/XFwhJ1wiXSspKFxcKCl8WyxcXC47XFw/OiFdW1xcdTRlMDAtXFx1OWZhNV0vZ2k7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoID0gcmVnLmV4ZWMoY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEluZGV4ID0gcmVnLmxhc3RJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc1NwYWNlRG90ID0gJyEuPzssJy5jb250YWlucyhjb250ZW50LmNoYXJBdCh0ZW1wSW5kZXgtMSkpICYmICgodGVtcEluZGV4LTI8MCAmJiBpPT0wKSB8fCBjb250ZW50LmNoYXJBdCh0ZW1wSW5kZXgtMik9PScgJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc051bVB1bmNOdW0gPSAvWywuXVxcZC8udGVzdChjb250ZW50LnN1YnN0cmluZyh0ZW1wSW5kZXgtMSwgdGVtcEluZGV4KzEpKSAmJiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGVtcEluZGV4LTI8MCB8fCAvXFxkLy50ZXN0KGNvbnRlbnQuY2hhckF0KHRlbXBJbmRleC0yKSkpXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2VNb2RlID09IFdvcmtNb2RlLkdsb2JhbGx5ICYmICFpc1NwYWNlRG90ICYmICFpc051bVB1bmNOdW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZygwLCB0ZW1wSW5kZXgpICsgXCIgXCIgKyBjb250ZW50LnN1YnN0cmluZyh0ZW1wSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgdGVtcEluZGV4ID49IHByZXZDaCAtIG9mZnNldCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0ZW1wSW5kZXggPCBjdXJDaCAtIG9mZnNldCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhaXNTcGFjZURvdCAmJiAhaXNOdW1QdW5jTnVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIFwiIFwiICsgY29udGVudC5zdWJzdHJpbmcodGVtcEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckNoICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBcdTUzNTVcdTcyRUNcdTU5MDRcdTc0MDZcdTUxOTJcdTUzRjdcdTU0MEVcdTY1ODdcdTY3MkNcdTc2ODRcdTgxRUFcdTUyQThcdTdBN0FcdTY4M0NcdUZGMENcdTRFM0FcdTRFODZcdTUxN0NcdTVCQjkgOmVtb2ppOiBcdTY4M0NcdTVGMEZcdTc2ODRcdThGOTNcdTUxNjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnMiA9IC8oOikoW0EtWmEtejAtOV9dK1sgLFxcLlxcP1xcXFxcXC87J1wiXHVGRjBDXHUzMDAyXHVGRjFGXHVGRjFCXHUyMDE4XHUyMDFDXHUyMDFEXHUyMDE5XHUzMDAxXFxbXFxdXFwtXFx7XFx9XSkvZ2k7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UocmVnMiwgXCIkMSAkMlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnMyA9IC8oOikoW1wiJ10pL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UocmVnMywgXCIkMSAkMlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjcgXHU1Rjk3XHU1MjMwXHU2NTg3XHU2NzJDXHU5MEU4XHU1MjA2XHU2NjJGXHU1NDI2XHU0RUU1XHU3QTdBXHU3NjdEXHU3QjI2XHU1RjAwXHU1OUNCXHU2MjE2XHU3RUQzXHU2NzVGXHVGRjBDXHU3NTI4XHU2NzY1XHU1MjI0XHU2NUFEXHU1NDBFXHU3RUVEXHU2NTg3XHU2NzJDXHU1MjREXHU1NDBFXHU2NjJGXHU1NDI2XHU5NzAwXHU4OTgxXHU2REZCXHU1MkEwXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgIGxldCByZWdTdHJpY3RTcGFjZVN0YXJ0ID0gL15cXDA/XFxzLztcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ1N0cmljdFNwYWNlRW5kID0gL1xcc1xcMD8kLztcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ1N0YXJ0V2l0aFNwYWNlID0gL15cXDA/W1xccyxcXC47XFw/XFwhXHVGRjBDXHUzMDAyXHVGRjFCXHUzMDBCXHVGRjFGXHVGRjFBOlx1RkYwMX5cXCpcdTMwMDFcdUZGMDhcdUZGMDlcIlx1MjAxRFxcW1xcXVxcKVxce1xcfV0vO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVnRW5kV2l0aFNwYWNlID0gL1tcXHNcdUZGMENcdTMwMDJcdTMwMDFcdUZGMUFcdUZGMUJcdUZGMUZcdUZGMDFcdUZGMDhcdUZGMDl+XFwqXCJcdTMwMEFcdTIwMUNcXFtcXF1cXChcXHtcXH1dXFwwPyQvO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdHh0U3RhcnRTcGFjZVNhdGUgPSBTcGFjZVN0YXRlLm5vbmU7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0eHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVnU3RhcnRXaXRoU3BhY2UudGVzdChjb250ZW50KXx8Y29udGVudC5zdGFydHNXaXRoKFwiPGJyPlwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlZ1N0cmljdFNwYWNlU3RhcnQudGVzdChjb250ZW50KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eHRTdGFydFNwYWNlU2F0ZSA9IFNwYWNlU3RhdGUuc3RyaWN0XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHh0U3RhcnRTcGFjZVNhdGUgPSBTcGFjZVN0YXRlLnNvZnRcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWdFbmRXaXRoU3BhY2UudGVzdChjb250ZW50KSB8fCBjb250ZW50LmVuZHNXaXRoKFwiPGJyPlwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlZ1N0cmljdFNwYWNlRW5kLnRlc3QoY29udGVudCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUuc3RyaWN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4dEVuZFNwYWNlU3RhdGUgPSBTcGFjZVN0YXRlLnNvZnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjggXHU2ODM5XHU2MzZFXHU1MjREXHU0RTAwXHU5MEU4XHU1MjA2XHU3Njg0XHU1MzNBXHU1NzU3XHU3QzdCXHU1NzhCXHU1OTA0XHU3NDA2XHU3QTdBXHU2ODNDXHU2REZCXHU1MkEwXHU3Njg0XHU5NUVFXHU5ODk4XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocHJldlBhcnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubm9uZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5jb2RlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlID4gdHh0U3RhcnRTcGFjZVNhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSAnICcgKyBjb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmZvcm11bGE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUZvcm11bGFTcGFjZU1vZGUgPiB0eHRTdGFydFNwYWNlU2F0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9ICcgJyArIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUud2lraWxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubWRsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2V0dGluZ3MuSW5saW5lTGlua1NtYXJ0U3BhY2UgJiYgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZSA+IHR4dFN0YXJ0U3BhY2VTYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gJyAnICsgY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU21hcnRTcGFjZSAmJiB0eHRTdGFydFNwYWNlU2F0ZSA9PSBTcGFjZVN0YXRlLm5vbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoYXJBdFRleHRCZWdpbiA9IGNvbnRlbnQuY2hhckF0KDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnTWRMaW5rRW5kID0gL1xcXS87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyQXRMaW5rRW5kSW5kZXggPSBsaW5lUGFydHNbaSAtIDFdLmNvbnRlbnQuc2VhcmNoKHJlZ01kTGlua0VuZCkgLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hhckF0TGlua0VuZCA9IGxpbmVQYXJ0c1tpIC0gMV0uY29udGVudC5jaGFyQXQoY2hhckF0TGlua0VuZEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJBdExpbmtFbmQgPT09ICdbJykgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0d29OZWlnaGJvckNoYXJzID0gY2hhckF0TGlua0VuZCArIGNoYXJBdFRleHRCZWdpbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ05vdE5lZWRTcGFjZSA9IC9bXFx1NGUwMC1cXHU5ZmE1XHVGRjBDXHUzMDAyXHVGRjFGXHVGRjFBXHVGRjFCXHUyMDFEXHUyMDFDXHUyMDE5XHUyMDE4LVx1RkYwOX1dW1xcdTRlMDAtXFx1OWZhNV0vZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWdOb3ROZWVkU3BhY2UudGVzdCh0d29OZWlnaGJvckNoYXJzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSAnICcgKyBjb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnVzZXI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpIC0gMV0ucmlnaHRTcGFjZVJlcXVpcmUgPiB0eHRTdGFydFNwYWNlU2F0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9ICcgJyArIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjkgXHU1OTgyXHU2NzlDXHU1MTQ5XHU2ODA3XHU1NzI4XHU4QkU1XHU1MzNBXHU1NzU3XHVGRjBDXHU1MjE5XHU4QkExXHU3Qjk3XHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU3Njg0XHU0RjREXHU3RjZFXG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSBjdXJzb3JMaW5lUGFydEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnID0gJ1xcMCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbiA9IGNvbnRlbnQuc2VhcmNoKHJlZylcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEN1cnNvckNoID0gb2Zmc2V0ICsgbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFx1NTIyMFx1OTY2NCBcXDBcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gc3RyaW5nRGVsZXRlQXQoY29udGVudCwgbik7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBwcmV2UGFydFR5cGUgPSBJbmxpbmVUeXBlLnRleHQ7XG4gICAgICAgICAgICAgICAgICAgIHByZXZUZXh0RW5kU3BhY2VTdGF0ZSA9IHR4dEVuZFNwYWNlU3RhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIDMuMi4yIFx1NTkwNFx1NzQwNlx1ODg0Q1x1NTE4NVx1NEVFM1x1NzgwMVx1NTc1N1x1OTBFOFx1NTIwNlxuICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5jb2RlOlxuICAgICAgICAgICAgICAgICAgICAvLyBDb2RlLjEgXHU2ODM5XHU2MzZFXHU1MjREXHU0RTAwXHU1MzNBXHU1NzU3XHU3QzdCXHU1NzhCXHU1NDhDc2V0dGluZ3NcdTZERkJcdTUyQTBcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHByZXZQYXJ0VHlwZSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm5vbmU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudGV4dDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZSA+IHByZXZUZXh0RW5kU3BhY2VTdGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpLTFdLmNvbnRlbnQgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmNvZGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuZm9ybXVsYTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgfHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLklubGluZUZvcm11bGFTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubWRsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLndpa2lsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS51c2VyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5yaWdodFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBDb2RlLjIgXHU1OTgyXHU2NzlDXHU1MTQ5XHU2ODA3XHU1NzI4XHU4QkU1XHU1MzNBXHU1NzU3XHVGRjBDXHU1MjE5XHU4QkExXHU3Qjk3XHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU3Njg0XHU0RjREXHU3RjZFXG4gICAgICAgICAgICAgICAgICAgIGlmKGkgPT09IGN1cnNvckxpbmVQYXJ0SW5kZXgpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEN1cnNvckNoID0gb2Zmc2V0ICsgY3Vyc29yUmVsYXRpdmVJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBDb2RlLjMgXHU1M0Q4XHU5MUNGXHU2NkY0XHU2NUIwXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBsaW5lUGFydHNbaV0uY29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHByZXZQYXJ0VHlwZSA9IElubGluZVR5cGUuY29kZTtcbiAgICAgICAgICAgICAgICAgICAgcHJldlRleHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvLyAzLjIuMyBcdTU5MDRcdTc0MDZcdTg4NENcdTUxODVcdTUxNkNcdTVGMEZcdTc2ODRcdTkwRThcdTUyMDZcbiAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuZm9ybXVsYTpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpXS5jb250ZW50ID09IFwiJFxcXFxxcXVhZCRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldlBhcnRUeXBlID0gSW5saW5lVHlwZS50ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldlRleHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5zdHJpY3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBGb3JtdWxhLjEgXHU2ODM5XHU2MzZFXHU1MjREXHU0RTAwXHU1MzNBXHU1NzU3XHU3QzdCXHU1NzhCXHU1NDhDc2V0dGluZ3NcdTZERkJcdTUyQTBcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHByZXZQYXJ0VHlwZSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm5vbmU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudGV4dDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5wcmV2VGV4dEVuZFNwYWNlU3RhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5jb250ZW50ICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5jb2RlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmZvcm11bGE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubWRsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLndpa2lsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS51c2VyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5yaWdodFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBGb3JtdWxhLjIgXHU1OTgyXHU2NzlDXHU1MTQ5XHU2ODA3XHU1NzI4XHU4QkU1XHU1MzNBXHU1NzU3XHVGRjBDXHU1MjE5XHU4QkExXHU3Qjk3XHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU3Njg0XHU0RjREXHU3RjZFXG4gICAgICAgICAgICAgICAgICAgIGlmKGkgPT09IGN1cnNvckxpbmVQYXJ0SW5kZXgpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEN1cnNvckNoID0gb2Zmc2V0ICsgY3Vyc29yUmVsYXRpdmVJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBGb3JtdWxhLjMgXHU1M0Q4XHU5MUNGXHU2NkY0XHU2NUIwXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBsaW5lUGFydHNbaV0uY29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHByZXZQYXJ0VHlwZSA9IElubGluZVR5cGUuZm9ybXVsYTtcbiAgICAgICAgICAgICAgICAgICAgcHJldlRleHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5tZGxpbms6XG4gICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLndpa2lsaW5rOlxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2gocHJldlBhcnRUeXBlKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubm9uZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS50ZXh0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmV2VGV4dEVuZFNwYWNlU3RhdGU+c2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZSkgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU9PVNwYWNlU3RhdGUuc3RyaWN0ICYmIHByZXZUZXh0RW5kU3BhY2VTdGF0ZTxTcGFjZVN0YXRlLnN0cmljdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpLTFdLmNvbnRlbnQgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNldHRpbmdzLklubGluZUxpbmtTbWFydFNwYWNlICYmIHByZXZUZXh0RW5kU3BhY2VTdGF0ZT09U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ05vTmVlZFNwYWNlID0gL1tcXHU0ZTAwLVxcdTlmYTVdW1xcdTRlMDAtXFx1OWZhNV0vZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoYXJBdFRleHRFbmQgPSBsaW5lUGFydHNbaS0xXS5jb250ZW50LmNoYXJBdChsaW5lUGFydHNbaS0xXS5jb250ZW50Lmxlbmd0aC0xKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoYXJBdExpbmtCZWdpbjpzdHJpbmcgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ldLnR5cGU9PUlubGluZVR5cGUud2lraWxpbmspXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWdBbGlhcyA9IC9cXHwvO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoYXJPZkFsaWFzQmVnaW4gPSBsaW5lUGFydHNbaV0uY29udGVudC5zZWFyY2gocmVnQWxpYXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJjaGFyT2ZBbGlhc0JlZ2luXCIsY2hhck9mQWxpYXNCZWdpbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiZWdpbkluZGV4ID0gMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGxpbmVQYXJ0c1tpXS5jb250ZW50LmNoYXJBdCgwKT09PSchJykgYmVnaW5JbmRleD0zO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hhck9mQWxpYXNCZWdpbiE9LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW5JbmRleCA9IGNoYXJPZkFsaWFzQmVnaW4rMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYobGluZVBhcnRzW2ldLmNvbnRlbnQuY2hhckF0KGJlZ2luSW5kZXgpPT0nIycpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luSW5kZXggKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhckF0TGlua0JlZ2luID0gbGluZVBhcnRzW2ldLmNvbnRlbnQuY2hhckF0KGJlZ2luSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJiZWdpbkluZGV4XCIsIGJlZ2luSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2hhckF0TGlua0JlZ2luPT0nXScpIGJyZWFrOyAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ01kTGlua0JlZ2luID0gL1xcWy87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hhckF0TGlua0JlZ2luSW5kZXggPSBsaW5lUGFydHNbaV0uY29udGVudC5zZWFyY2gocmVnTWRMaW5rQmVnaW4pKzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyQXRMaW5rQmVnaW4gPSBsaW5lUGFydHNbaV0uY29udGVudC5jaGFyQXQoY2hhckF0TGlua0JlZ2luSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2hhckF0TGlua0JlZ2luPT09J10nKSBicmVhazsgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0d29OZWlnaGJvckNoYXJzID0gY2hhckF0VGV4dEVuZCtjaGFyQXRMaW5rQmVnaW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFyZWdOb05lZWRTcGFjZS50ZXN0KHR3b05laWdoYm9yQ2hhcnMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5jb250ZW50ICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZighc2V0dGluZ3MuSW5saW5lTGlua1NtYXJ0U3BhY2UgJiYgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5wcmV2VGV4dEVuZFNwYWNlU3RhdGUpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5jb250ZW50ICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5jb2RlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmZvcm11bGE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5tZGxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUud2lraWxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudXNlcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ktMV0ucmlnaHRTcGFjZVJlcXVpcmU+U3BhY2VTdGF0ZS5ub25lICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gTGluay4yIFx1NTk4Mlx1Njc5Q1x1OEJFNVx1NTMzQVx1NTc1N1x1NjcwOVx1NTE0OVx1NjgwN1x1RkYwQ1x1NTIxOVx1OEJBMVx1N0I5N1x1NjcwMFx1N0VDOFx1NTE0OVx1NjgwN1x1NEY0RFx1N0Y2RVxuICAgICAgICAgICAgICAgICAgICBpZihpID09PSBjdXJzb3JMaW5lUGFydEluZGV4KVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRDdXJzb3JDaCA9IG9mZnNldCArIGN1cnNvclJlbGF0aXZlSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gTGluay4zIFx1NjZGNFx1NjVCMFx1NTNEOFx1OTFDRlxuICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBwcmV2UGFydFR5cGUgPSBsaW5lUGFydHNbaV0udHlwZTtcbiAgICAgICAgICAgICAgICAgICAgcHJldlRleHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvLyAzLjIuNSBcdTU5MDRcdTc0MDZcdTc1MjhcdTYyMzdcdTgxRUFcdTVCOUFcdTRFNDlcdTUzM0FcdTU3NTdcdTc2ODRcdTkwRThcdTUyMDZcbiAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudXNlcjpcbiAgICAgICAgICAgICAgICAgICAgLy8gVXNlci4xIFx1NjgzOVx1NjM2RVx1NTI0RFx1NEUwMFx1NTMzQVx1NTc1N1x1N0M3Qlx1NTc4Qlx1NTQ4Q3NldHRpbmdzXHU2REZCXHU1MkEwXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaChwcmV2UGFydFR5cGUpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5ub25lOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnRleHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpXS5sZWZ0U3BhY2VSZXF1aXJlPnByZXZUZXh0RW5kU3BhY2VTdGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpLTFdLmNvbnRlbnQgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmNvZGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpXS5sZWZ0U3BhY2VSZXF1aXJlPlNwYWNlU3RhdGUubm9uZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmZvcm11bGE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpXS5sZWZ0U3BhY2VSZXF1aXJlPlNwYWNlU3RhdGUubm9uZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm1kbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS53aWtpbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ldLmxlZnRTcGFjZVJlcXVpcmU+U3BhY2VTdGF0ZS5ub25lICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudXNlcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ldLmxlZnRTcGFjZVJlcXVpcmU+U3BhY2VTdGF0ZS5ub25lICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpLTFdLnJpZ2h0U3BhY2VSZXF1aXJlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIFVzZXIuMiBcdTU5ODJcdTY3OUNcdThCRTVcdTUzM0FcdTU3NTdcdTY3MDlcdTUxNDlcdTY4MDdcdUZGMENcdTUyMTlcdThCQTFcdTdCOTdcdTY3MDBcdTdFQzhcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcbiAgICAgICAgICAgICAgICAgICAgaWYoaSA9PT0gY3Vyc29yTGluZVBhcnRJbmRleClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q3Vyc29yQ2ggPSBvZmZzZXQgKyBjdXJzb3JSZWxhdGl2ZUluZGV4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIExpbmsuMyBcdTY2RjRcdTY1QjBcdTUzRDhcdTkxQ0ZcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgcHJldlBhcnRUeXBlID0gSW5saW5lVHlwZS51c2VyO1xuICAgICAgICAgICAgICAgICAgICBwcmV2VGV4dEVuZFNwYWNlU3RhdGUgPSBTcGFjZVN0YXRlLm5vbmU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yKGxldCBpPTA7aTxsaW5lUGFydHMubGVuZ3RoO2krKylcbiAgICAgICAge1xuICAgICAgICAgICAgaWYobGluZVBhcnRzW2ldLnR5cGUgPT09IElubGluZVR5cGUudGV4dCAmJiBsaW5lUGFydHNbaV0uY29udGVudCE9bGluZVBhcnRzT3JpZ2luW2ldLmNvbnRlbnQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBsaW5lUGFydHNbaV0uY29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNPcmlnaW5baV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c09yaWdpbltpXS5lbmQsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46IGxpbmVQYXJ0c09yaWdpbltpXS5jb250ZW50XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgaW5saW5lQ2hhbmdlTGlzdCA9IGlubGluZUNoYW5nZUxpc3Quc29ydCgoYSwgYik6bnVtYmVyPT5hLmJlZ2luLWIuYmVnaW4pO1xuICAgICAgICByZXR1cm4gW3Jlc3VsdExpbmUsIHJlc3VsdEN1cnNvckNoLCBpbmxpbmVDaGFuZ2VMaXN0XTtcbiAgICB9XG4gICAgXG59XG5cblxuZXhwb3J0IGNsYXNzIE1hcmtkb3duUGFyc2Vye1xuICAgIGNvbnN0cnVjdG9yKCl7fVxuXG59XG5cbmZ1bmN0aW9uIG1hdGNoV2l0aFJlZyh0ZXh0OiBzdHJpbmcsIHJlZ0V4cDogUmVnRXhwLCB0eXBlOiBJbmxpbmVUeXBlLCBpbmxpbmVUeXBlQXJyYXk6IElubGluZVBhcnRbXSxcbiAgICBjaGVja0FycmF5ID0gZmFsc2UsIGxlZnRTcGFjZVJlOiBTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lLCByaWdodFNwYWNlUmU6IFNwYWNlU3RhdGUgPSBTcGFjZVN0YXRlLm5vbmUpOiBJbmxpbmVQYXJ0W10ge1xuICAgIGxldCByZXRBcnJheSA9IGlubGluZVR5cGVBcnJheTtcbiAgICBsZXQgbWF0Y2hBcnJheTogSW5saW5lUGFydFtdID0gW107XG4gICAgcmV0QXJyYXkgPSByZXRBcnJheS5zb3J0KChhLCBiKTogbnVtYmVyID0+IGEuYmVnaW4gLSBiLmJlZ2luKTtcbiAgICAvLyBjb25zb2xlLmxvZygnYmVmb3JlLS0tLS0tLS0tLS1cXG4nLHJldEFycmF5KVxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGxldCBtYXRjaCA9IHJlZ0V4cC5leGVjKHRleHQpO1xuICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgbGV0IHZhbGlkID0gdHJ1ZTtcbiAgICAgICAgLy8gXHU2OEMwXHU2N0U1XHU1MUIyXHU3QTgxXG4gICAgICAgIGlmIChjaGVja0FycmF5KSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldEFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYocmVnRXhwLmxhc3RJbmRleD5yZXRBcnJheVtpXS5iZWdpbiAmJiByZXRBcnJheVtpXS5lbmQ+bWF0Y2guaW5kZXgpe1xuICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF2YWxpZCkgY29udGludWU7XG4gICAgICAgIG1hdGNoQXJyYXkucHVzaChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBtYXRjaFswXSxcbiAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgIGJlZ2luOiBtYXRjaC5pbmRleCxcbiAgICAgICAgICAgICAgICBlbmQ6IHJlZ0V4cC5sYXN0SW5kZXgsXG4gICAgICAgICAgICAgICAgbGVmdFNwYWNlUmVxdWlyZTogbGVmdFNwYWNlUmUsXG4gICAgICAgICAgICAgICAgcmlnaHRTcGFjZVJlcXVpcmU6IHJpZ2h0U3BhY2VSZVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbiAgICByZXRBcnJheSA9IHJldEFycmF5LmNvbmNhdChtYXRjaEFycmF5KTtcbiAgICAvLyBjb25zb2xlLmxvZygnQWZ0ZXI9PT09PT09PT09PVxcbicsIHJldEFycmF5KTtcbiAgICByZXR1cm4gcmV0QXJyYXk7XG59XG5cbmZ1bmN0aW9uIG1hdGNoV2l0aEFiYnIodGV4dDogc3RyaW5nLCB0eXBlOiBJbmxpbmVUeXBlLCBpbmxpbmVUeXBlQXJyYXk6IElubGluZVBhcnRbXSwgY2hlY2tBcnJheSA9IGZhbHNlKXtcbiAgICBsZXQgcmV0QXJyYXkgPSBpbmxpbmVUeXBlQXJyYXk7XG4gICAgbGV0IG1hdGNoQXJyYXk6IElubGluZVBhcnRbXSA9IFtdO1xuICAgIHJldEFycmF5ID0gcmV0QXJyYXkuc29ydCgoYSwgYik6IG51bWJlciA9PiBhLmJlZ2luIC0gYi5iZWdpbik7XG4gICAgbGV0IHJlZ0FiYnIgPSAvKFthLXpBLVpdXFwuKSsvZztcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBsZXQgbWF0Y2ggPSByZWdBYmJyLmV4ZWModGV4dCk7XG4gICAgICAgIGlmICghbWF0Y2gpIGJyZWFrO1xuICAgICAgICBsZXQgdmFsaWQgPSB0cnVlO1xuICAgICAgICBsZXQgaXNJbkJsb2NrQmVnaW46Ym9vbGVhbiA9IChtYXRjaC5pbmRleD09MCk7XG4gICAgICAgIC8vIFx1NjhDMFx1NjdFNVx1NTFCMlx1N0E4MVxuICAgICAgICBpZiAoY2hlY2tBcnJheSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXRBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmKG1hdGNoLmluZGV4ID09IHJldEFycmF5W2ldLmVuZCl7XG4gICAgICAgICAgICAgICAgICAgIGlzSW5CbG9ja0JlZ2luID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYocmVnQWJici5sYXN0SW5kZXg+cmV0QXJyYXlbaV0uYmVnaW4gJiYgcmV0QXJyYXlbaV0uZW5kPm1hdGNoLmluZGV4KXtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmKCFpc0luQmxvY2tCZWdpbiAmJiB2YWxpZClcbiAgICAgICAge1xuICAgICAgICAgICAgbGV0IHJlZ0NoYXIgPSAvW2EtekEtWjAtOV0vO1xuICAgICAgICAgICAgaWYocmVnQ2hhci50ZXN0KHRleHQuY2hhckF0KG1hdGNoLmluZGV4LTEpKSl7XG4gICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdmFsaWQpIGNvbnRpbnVlO1xuICAgICAgICBtYXRjaEFycmF5LnB1c2goXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udGVudDogbWF0Y2hbMF0sXG4gICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICBiZWdpbjogbWF0Y2guaW5kZXgsXG4gICAgICAgICAgICAgICAgZW5kOiByZWdBYmJyLmxhc3RJbmRleCxcbiAgICAgICAgICAgICAgICBsZWZ0U3BhY2VSZXF1aXJlOiBTcGFjZVN0YXRlLm5vbmUsXG4gICAgICAgICAgICAgICAgcmlnaHRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGUubm9uZVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbiAgICByZXRBcnJheSA9IHJldEFycmF5LmNvbmNhdChtYXRjaEFycmF5KTtcbiAgICAvLyBjb25zb2xlLmxvZygnQWZ0ZXI9PT09PT09PT09PVxcbicsIHJldEFycmF5KTtcbiAgICByZXR1cm4gcmV0QXJyYXk7XG59XG5cbi8qKlxuICogXHU1MjA2XHU1MjcyXHU0RTAwXHU4ODRDXHU2NTg3XHU2NzJDXHU0RTJEXHU3Njg0XHU5NEZFXHU2M0E1XHU1NDhDXHU3NTI4XHU2MjM3XHU4MUVBXHU1QjlBXHU0RTQ5XHU3Njg0XHU2QjYzXHU1MjE5XHU5MEU4XHU1MjA2XHVGRjBDXHU1Rjk3XHU1MjMwIElubGluZVBhcnQgXHU3Njg0XHU0RTBEXHU1NDBDXHU1MzNBXHU1N0RGXG4gKi9cbmZ1bmN0aW9uIHNwbGl0VGV4dFdpdGhMaW5rQW5kVXNlckRlZmluZWQodGV4dDogc3RyaW5nLCByZWdFeHBzPzogc3RyaW5nKTogSW5saW5lUGFydFtdIHtcbiAgICBsZXQgcmV0QXJyYXk6IElubGluZVBhcnRbXSA9IFtdO1xuICAgIGxldCByZWdXaWtpTGluayA9IC9cXCF7MCwyfVxcW1xcW1teXFxbXFxdXSo/XFxdXFxdL2c7XG4gICAgbGV0IHJlZ01kTGluayA9IC9cXCF7MCwyfVxcW1teXFxbXFxdXSo/XFxdXFwoW15cXHNcXClcXChcXFtcXF1cXHtcXH0nXSpcXCkvZztcbiAgICAvLyBsZXQgcmVnQmFyZUxpbmsgPSAvKGh0dHBzPzpcXC9cXC98ZnRwOlxcL1xcL3xvYnNpZGlhbjpcXC9cXC98em90ZXJvOlxcL1xcL3x3d3cuKVteXFxzXHVGRjA4XHVGRjA5XHUzMDBBXHUzMDBCXHUzMDAyXHVGRjBDXHVGRjAxXHVGRjFGXHVGRjFCXHVGRjFBXHUyMDFDXHUyMDFEXHUyMDE4XHUyMDE5XFwpXFwoXFxbXFxdXFx7XFx9J10rL2c7XG5cbiAgICAvLyAxLiBcdTUzMzlcdTkxNER3aWtpbGlua1xuICAgIHJldEFycmF5ID0gbWF0Y2hXaXRoUmVnKHRleHQsIHJlZ1dpa2lMaW5rLCBJbmxpbmVUeXBlLndpa2lsaW5rLCByZXRBcnJheSk7XG4gICAgLy8gMi4gXHU1MzM5XHU5MTREbWRsaW5rXG4gICAgcmV0QXJyYXkgPSBtYXRjaFdpdGhSZWcodGV4dCwgcmVnTWRMaW5rLCBJbmxpbmVUeXBlLm1kbGluaywgcmV0QXJyYXkpO1xuXG4gICAgLy8gMy4gXHU1MzM5XHU5MTREXHU3NTI4XHU2MjM3XHU4MUVBXHU1QjlBXHU0RTQ5XHU2QjYzXHU1MjE5XG4gICAgbGV0IHJlZ0V4cExpc3Q6IFJlZ0V4cFtdID0gW107XG4gICAgbGV0IGxlZnRTUmVxdWlyZUxpc3Q6IFNwYWNlU3RhdGVbXSA9IFtdO1xuICAgIGxldCByaWdodFNSZXF1aXJlTGlzdDogU3BhY2VTdGF0ZVtdID0gW107XG4gICAgbGV0IHJlZ051bGwgPSAvXlxccyokL2c7XG4gICAgbGV0IHJlZ1NSZXF1aXJlID0gL1xcfFtcXC09XFwrXVtcXC09XFwrXSQvO1xuICAgIGlmIChyZWdFeHBzKSB7XG4gICAgICAgIGxldCByZWdzID0gcmVnRXhwcy5zcGxpdCgnXFxuJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVncy5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICBpZiAocmVnTnVsbC50ZXN0KHJlZ3NbaV0pKSBjb250aW51ZTtcblxuICAgICAgICAgICAgaWYgKCghcmVnU1JlcXVpcmUudGVzdChyZWdzW2ldKSkgfHwgcmVnc1tpXS5sZW5ndGggPD0gMykge1xuICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UoXCJFYXN5VHlwaW5nOiBcdTdCMkNcIiArIFN0cmluZyhpKSArIFwiXHU4ODRDXHU4MUVBXHU1QjlBXHU0RTQ5XHU2QjYzXHU1MjE5XHU0RTBEXHU3QjI2XHU1NDA4XHU4OUM0XHU4MzAzXFxuXCIrcmVnc1tpXSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgcmVnSXRlbSA9IHJlZ3NbaV0uc3Vic3RyaW5nKDAsIHJlZ3NbaV0ubGVuZ3RoIC0gMyk7XG4gICAgICAgICAgICBsZXQgc3BhY2VSZXFTdHJpbmcgPSByZWdzW2ldLnN1YnN0cmluZyhyZWdzW2ldLmxlbmd0aCAtIDMpO1xuXG4gICAgICAgICAgICBsZXQgaXNWYWxpZFJlZyA9IHRydWU7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCByZWdUZW1wID0gbmV3IFJlZ0V4cChyZWdJdGVtLCAnZycpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBpc1ZhbGlkUmVnID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5zZXR0aW5ncy5kZWJ1Zyl7XG4gICAgICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UoXCJFYXN1VHlwaW5nOiBCYWQgUmVnRXhwOlxcblwiICsgcmVnSXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNWYWxpZFJlZykge1xuICAgICAgICAgICAgICAgIHJlZ0V4cExpc3QucHVzaChuZXcgUmVnRXhwKHJlZ0l0ZW0sICdnJykpO1xuICAgICAgICAgICAgICAgIGxlZnRTUmVxdWlyZUxpc3QucHVzaChzdHIyU3BhY2VTdGF0ZShzcGFjZVJlcVN0cmluZy5jaGFyQXQoMSkpKTtcbiAgICAgICAgICAgICAgICByaWdodFNSZXF1aXJlTGlzdC5wdXNoKHN0cjJTcGFjZVN0YXRlKHNwYWNlUmVxU3RyaW5nLmNoYXJBdCgyKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCByZWdMZW4gPSByZWdFeHBMaXN0Lmxlbmd0aDtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlZ0xlbjsgaSsrKSB7XG4gICAgICAgICAgICByZXRBcnJheSA9IG1hdGNoV2l0aFJlZyh0ZXh0LCByZWdFeHBMaXN0W2ldLCBJbmxpbmVUeXBlLnVzZXIsIHJldEFycmF5LCB0cnVlLCBsZWZ0U1JlcXVpcmVMaXN0W2ldLCByaWdodFNSZXF1aXJlTGlzdFtpXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBcdTUzMzlcdTkxNERcdTY1RjZcdTk1RjRcdTYyMzNcbiAgICByZXRBcnJheSA9IG1hdGNoV2l0aFJlZyh0ZXh0LCAvXFxkezEsMn06XFxkezEsMn0oOlxcZHswLDJ9KXswLDF9L2csIElubGluZVR5cGUudXNlciwgcmV0QXJyYXksIHRydWUsIFNwYWNlU3RhdGUubm9uZSwgU3BhY2VTdGF0ZS5ub25lKTtcblxuICAgIC8vIDQuIFx1NTMzOVx1OTE0RFx1N0YyOVx1NTE5OVx1NTk4MiBhLm0uXG4gICAgcmV0QXJyYXkgPSBtYXRjaFdpdGhBYmJyKHRleHQsIElubGluZVR5cGUudXNlciwgcmV0QXJyYXksIHRydWUpO1xuXG4gICAgLy8gNS4gXHU1Rjk3XHU1MjMwXHU1MjY5XHU0RjU5XHU3Njg0XHU2NTg3XHU2NzJDXHU5MEU4XHU1MjA2XG4gICAgcmV0QXJyYXkgPSByZXRBcnJheS5zb3J0KChhLCBiKTogbnVtYmVyID0+IGEuYmVnaW4gLSBiLmJlZ2luKTtcblxuICAgIGxldCB0ZXh0QXJyYXk6IElubGluZVBhcnRbXSA9IFtdO1xuICAgIGxldCB0ZXh0QmVnaW4gPSAwO1xuICAgIGxldCB0ZXh0RW5kID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldEFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0ZXh0QmVnaW4gPCByZXRBcnJheVtpXS5iZWdpbikge1xuICAgICAgICAgICAgdGV4dEVuZCA9IHJldEFycmF5W2ldLmJlZ2luO1xuICAgICAgICAgICAgdGV4dEFycmF5LnB1c2goXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB0ZXh0LnN1YnN0cmluZyh0ZXh0QmVnaW4sIHRleHRFbmQpLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBJbmxpbmVUeXBlLnRleHQsXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiB0ZXh0QmVnaW4sXG4gICAgICAgICAgICAgICAgICAgIGVuZDogdGV4dEVuZCxcbiAgICAgICAgICAgICAgICAgICAgbGVmdFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZS5ub25lLFxuICAgICAgICAgICAgICAgICAgICByaWdodFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZS5ub25lXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0ZXh0QmVnaW4gPSByZXRBcnJheVtpXS5lbmQ7XG4gICAgfVxuXG4gICAgaWYgKHRleHRCZWdpbiAhPSB0ZXh0Lmxlbmd0aCkge1xuICAgICAgICB0ZXh0QXJyYXkucHVzaChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0ZXh0LnN1YnN0cmluZyh0ZXh0QmVnaW4sIHRleHQubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICB0eXBlOiBJbmxpbmVUeXBlLnRleHQsXG4gICAgICAgICAgICAgICAgYmVnaW46IHRleHRCZWdpbixcbiAgICAgICAgICAgICAgICBlbmQ6IHRleHQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIGxlZnRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGUubm9uZSxcbiAgICAgICAgICAgICAgICByaWdodFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZS5ub25lXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gNi4gXHU1NDA4XHU1RTc2XHU2NTg3XHU2NzJDXHU5MEU4XHU1MjA2XHU1NDhDXHU1MTc2XHU0RUQ2XHU5MEU4XHU1MjA2XG4gICAgcmV0QXJyYXkgPSByZXRBcnJheS5jb25jYXQodGV4dEFycmF5KTtcbiAgICByZXRBcnJheSA9IHJldEFycmF5LnNvcnQoKGEsIGIpOiBudW1iZXIgPT4gYS5iZWdpbiAtIGIuYmVnaW4pO1xuICAgIHJldHVybiByZXRBcnJheVxufVxuXG4vLyBcdTVCNTdcdTdCMjZcdThGNkNcdTUzMTZcdTYyMTBcdTdBN0FcdTY4M0NcdTcyQjZcdTYwMDFcdTg5ODFcdTZDNDJcbmZ1bmN0aW9uIHN0cjJTcGFjZVN0YXRlKHM6IHN0cmluZyk6IFNwYWNlU3RhdGUge1xuICAgIHN3aXRjaCAocykge1xuICAgICAgICBjYXNlIFwiK1wiOlxuICAgICAgICAgICAgcmV0dXJuIFNwYWNlU3RhdGUuc3RyaWN0O1xuICAgICAgICBjYXNlICc9JzpcbiAgICAgICAgICAgIHJldHVybiBTcGFjZVN0YXRlLnNvZnQ7XG4gICAgICAgIGNhc2UgJy0nOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIFNwYWNlU3RhdGUubm9uZTtcbiAgICB9XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZzJTcGFjZVN0YXRlKHM6c3RyaW5nKTpTcGFjZVN0YXRlXG57XG4gICAgaWYoTnVtYmVyKHMpPT1TcGFjZVN0YXRlLm5vbmUpIHJldHVybiBTcGFjZVN0YXRlLm5vbmU7XG4gICAgaWYoTnVtYmVyKHMpPT1TcGFjZVN0YXRlLnNvZnQpIHJldHVybiBTcGFjZVN0YXRlLnNvZnQ7XG4gICAgaWYoTnVtYmVyKHMpPT1TcGFjZVN0YXRlLnN0cmljdCkgcmV0dXJuIFNwYWNlU3RhdGUuc3RyaWN0O1xuICAgIHJldHVybiBTcGFjZVN0YXRlLm5vbmU7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvc0xpbmVUeXBlKHN0YXRlOiBFZGl0b3JTdGF0ZSwgcG9zOiBudW1iZXIpOkxpbmVUeXBlIHtcbiAgICBjb25zdCBsaW5lID0gc3RhdGUuZG9jLmxpbmVBdChwb3MpXG4gICAgbGV0IGxpbmVfbnVtYmVyID0gbGluZS5udW1iZXJcbiAgICAvLyBjb25zdCB0cmVlID0gc3ludGF4VHJlZShzdGF0ZSk7XG4gICAgY29uc3QgdHJlZSA9IGVuc3VyZVN5bnRheFRyZWUoc3RhdGUsIGxpbmUudG8pO1xuICAgIGNvbnN0IHRva2VuID0gdHJlZS5yZXNvbHZlKGxpbmUuZnJvbSwgMSkubmFtZVxuXG4gICAgLy8gZm9yIChsZXQgcD1saW5lLmZyb207IHA8bGluZS50bzsgcCs9MSl7XG4gICAgLy8gICAgIGNvbnNvbGUubG9nKHAtbGluZS5mcm9tLCB0cmVlLnJlc29sdmUocCwgMSkubmFtZSlcbiAgICAvLyB9XG5cbiAgICBpZiAodG9rZW4uY29udGFpbnMoJ3RhYmxlJykpe1xuICAgICAgICByZXR1cm4gTGluZVR5cGUudGFibGU7XG4gICAgfVxuXG4gICAgaWYgKHRva2VuLmNvbnRhaW5zKCdobWQtZnJvbnRtYXR0ZXInKSl7XG4gICAgICAgIHJldHVybiBMaW5lVHlwZS5mcm9udG1hdHRlcjtcbiAgICB9XG5cbiAgICBpZih0b2tlbi5jb250YWlucygnbWF0aCcpKXtcbiAgICAgICAgZm9yKGxldCBwPWxpbmUuZnJvbSsxO3A8bGluZS50bztwKz0xKXtcbiAgICAgICAgICAgIGlmKCF0cmVlLnJlc29sdmUocCwgMSkubmFtZS5jb250YWlucygnbWF0aCcpKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gTGluZVR5cGUudGV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTGluZVR5cGUuZm9ybXVsYVxuICAgIH1cbiAgICBlbHNlIGlmKHRva2VuLmNvbnRhaW5zKCdjb2RlJykgJiYgdG9rZW4uY29udGFpbnMoJ2Jsb2NrJykpe1xuICAgICAgICBmb3IobGV0IHA9bGluZS5mcm9tKzE7cDxsaW5lLnRvO3ArPTEpe1xuICAgICAgICAgICAgbGV0IHQgPSB0cmVlLnJlc29sdmUocCwgMSkubmFtZVxuICAgICAgICAgICAgaWYoISh0LmNvbnRhaW5zKCdjb2RlJykgJiYgdC5jb250YWlucygnYmxvY2snKSkpe1xuICAgICAgICAgICAgICAgIHJldHVybiBMaW5lVHlwZS50ZXh0XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIExpbmVUeXBlLmNvZGVibG9ja1xuICAgIH1cbiAgICBlbHNlIGlmKHRva2VuLmNvbnRhaW5zKCdxdW90ZScpICYmICF0b2tlbi5jb250YWlucygnY2FsbG91dCcpKXtcbiAgICAgICAgLy8gXHU2M0E1XHU0RTBCXHU2NzY1XHU1MjI0XHU2NUFEXHU4QkU1XHU4ODRDXHU2NjJGXHU1NDI2XHU0RTNBY2FsbG91dFx1NTc1N1x1NTE4NVx1NzY4NFx1NEVFM1x1NzgwMVx1NTc1N1xuICAgICAgICAvLyBcdTk5OTZcdTUxNDhcdTUyMjRcdTY1QURcdTY2MkZcdTU0MjZcdTRFM0FjYWxsb3V0XG4gICAgICAgIGxldCBjYWxsb3V0X3N0YXJ0X2xpbmUgPSAtMTtcbiAgICAgICAgZm9yKGxldCBsPWxpbmVfbnVtYmVyLTE7IGw+PTE7IGwtPTEpe1xuICAgICAgICAgICAgbGV0IGxfbGluZSA9IHN0YXRlLmRvYy5saW5lKGwpXG4gICAgICAgICAgICBsZXQgbF90b2tlbiA9IHRyZWUucmVzb2x2ZShsX2xpbmUuZnJvbSwgMSkubmFtZVxuICAgICAgICAgICAgaWYoIWxfdG9rZW4uY29udGFpbnMoJ3F1b3RlJykpe1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxfdG9rZW4uY29udGFpbnMoJ2NhbGxvdXQnKSl7XG4gICAgICAgICAgICAgICAgY2FsbG91dF9zdGFydF9saW5lID0gbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FsbG91dF9zdGFydF9saW5lPT0tMSkgcmV0dXJuIExpbmVUeXBlLnRleHQ7XG4gICAgICAgIFxuICAgICAgICAvLyBcdTcxMzZcdTU0MEVcdTUyMjRcdTY1QURcdTY2MkZcdTU0MjZcdTRFM0FcdTRFRTNcdTc4MDFcdTU3NTdcbiAgICAgICAgbGV0IGlzX2NvZGVfYmxvY2s6Ym9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBsZXQgcmVzZXQ6Ym9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBsZXQgcmVnX2NvZGVfYmVnaW4gPSAvXj4rIGBgYC87XG4gICAgICAgIGxldCByZWdfY29kZV9lbmQgPSAvXj4rIGBgYCQvO1xuICAgICAgICBmb3IgKGxldCBsPWNhbGxvdXRfc3RhcnRfbGluZSsxOyBsPD1saW5lX251bWJlcjsgbCs9MSl7XG4gICAgICAgICAgICBsZXQgbF9saW5lID0gc3RhdGUuZG9jLmxpbmUobClcbiAgICAgICAgICAgIGlmIChyZXNldCl7XG4gICAgICAgICAgICAgICAgaXNfY29kZV9ibG9jayA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJlc2V0ID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZihpc19jb2RlX2Jsb2NrICYmIHJlZ19jb2RlX2VuZC50ZXN0KGxfbGluZS50ZXh0KSl7XG4gICAgICAgICAgICAgICAgaXNfY29kZV9ibG9jayA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmVzZXQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZighaXNfY29kZV9ibG9jayAmJiByZWdfY29kZV9iZWdpbi50ZXN0KGxfbGluZS50ZXh0KSl7XG4gICAgICAgICAgICAgICAgaXNfY29kZV9ibG9jayA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzX2NvZGVfYmxvY2spIHtcbiAgICAgICAgICAgIHJldHVybiBMaW5lVHlwZS5jb2RlYmxvY2s7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSByZXR1cm4gTGluZVR5cGUudGV4dDtcbiAgICB9XG4gICAgZWxzZSBpZih0b2tlbi5jb250YWlucygnbGlzdCcpKXtcbiAgICAgICAgZm9yKGxldCBwPWxpbmUuZnJvbSsxO3A8bGluZS50bztwKz0xKXtcbiAgICAgICAgICAgIGxldCB0ID0gdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWVcbiAgICAgICAgICAgIGlmKCh0LmNvbnRhaW5zKCdjb2RlJykgJiYgdC5jb250YWlucygnYmxvY2snKSkpe1xuICAgICAgICAgICAgICAgIHJldHVybiBMaW5lVHlwZS5jb2RlYmxvY2tcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gTGluZVR5cGUudGV4dFxufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQb3NMaW5lVHlwZTIoc3RhdGU6IEVkaXRvclN0YXRlLCBwb3M6IG51bWJlcik6TGluZVR5cGUge1xuICAgIGNvbnN0IGxpbmUgPSBzdGF0ZS5kb2MubGluZUF0KHBvcylcbiAgICBjb25zdCB0cmVlID0gc3ludGF4VHJlZShzdGF0ZSk7XG4gICAgY29uc3QgdG9rZW4gPSB0cmVlLnJlc29sdmUobGluZS5mcm9tLCAxKS5uYW1lXG4gICAgaWYgKHRva2VuLmNvbnRhaW5zKCdobWQtZnJvbnRtYXR0ZXInKSl7XG4gICAgICAgIHJldHVybiBMaW5lVHlwZS5mcm9udG1hdHRlclxuICAgIH1cblxuICAgIGlmKHRva2VuLmNvbnRhaW5zKCdtYXRoJykpe1xuICAgICAgICBmb3IobGV0IHA9bGluZS5mcm9tKzE7cDxsaW5lLnRvO3ArPTEpe1xuICAgICAgICAgICAgaWYoIXRyZWUucmVzb2x2ZShwLCAxKS5uYW1lLmNvbnRhaW5zKCdtYXRoJykpe1xuICAgICAgICAgICAgICAgIHJldHVybiBMaW5lVHlwZS50ZXh0XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIExpbmVUeXBlLmZvcm11bGFcbiAgICB9XG4gICAgZWxzZSBpZih0b2tlbi5jb250YWlucygnY29kZScpICYmIHRva2VuLmNvbnRhaW5zKCdibG9jaycpKXtcbiAgICAgICAgZm9yKGxldCBwPWxpbmUuZnJvbSsxO3A8bGluZS50bztwKz0xKXtcbiAgICAgICAgICAgIGxldCB0ID0gdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWVcbiAgICAgICAgICAgIGlmKCEodC5jb250YWlucygnY29kZScpICYmIHQuY29udGFpbnMoJ2Jsb2NrJykpKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gTGluZVR5cGUudGV4dFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBMaW5lVHlwZS5jb2RlYmxvY2tcbiAgICB9XG5cbiAgICBmb3IobGV0IHA9bGluZS5mcm9tO3A8bGluZS50bztwKz0xKXtcbiAgICAgICAgaWYodHJlZS5yZXNvbHZlKHAsIDEpLm5hbWUuY29udGFpbnMoJ2xpc3QnKSl7XG4gICAgICAgICAgICByZXR1cm4gTGluZVR5cGUubGlzdFxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYodHJlZS5yZXNvbHZlKHAsIDEpLm5hbWUuY29udGFpbnMoJ2NhbGxvdXQnKSl7XG4gICAgICAgICAgICByZXR1cm4gTGluZVR5cGUuY2FsbG91dF90aXRsZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmKHRva2VuLmNvbnRhaW5zKCdxdW90ZScpKXtcbiAgICAgICAgcmV0dXJuIExpbmVUeXBlLnF1b3RlO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gTGluZVR5cGUudGV4dFxufSIsICJpbXBvcnQgeyBBbm5vdGF0aW9uLCBFZGl0b3JTdGF0ZSwgRXh0ZW5zaW9uLCBTdGF0ZUZpZWxkLCBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25TcGVjLCBUZXh0fSBmcm9tICdAY29kZW1pcnJvci9zdGF0ZSc7XG5pbXBvcnQgeyBFYXN5VHlwaW5nU2V0dGluZ1RhYiwgRWFzeVR5cGluZ1NldHRpbmdzLCBQYWlyU3RyaW5nLCBDb252ZXJ0UnVsZX0gZnJvbSBcIi4vc2V0dGluZ3NcIlxuaW1wb3J0IHsgQXBwLCBQbHVnaW4gfSBmcm9tICdvYnNpZGlhbidcblxubGV0IERFQlVHID0gdHJ1ZTtcblxuZXhwb3J0IGNvbnN0IHByaW50PShtZXNzYWdlPzogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pID0+e1xuICAgIGlmIChERUJVRykge1xuICAgICAgICBjb25zb2xlLmxvZyhtZXNzYWdlLCAuLi5vcHRpb25hbFBhcmFtcyk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9zVG9PZmZzZXQoZG9jOlRleHQsIHBvczp7bGluZTpudW1iZXIsIGNoOm51bWJlcn0pIHtcblx0cmV0dXJuIGRvYy5saW5lKHBvcy5saW5lICsgMSkuZnJvbSArIHBvcy5jaFxufVxuZXhwb3J0IGZ1bmN0aW9uIG9mZnNldFRvUG9zKGRvYzpUZXh0LCBvZmZzZXQ6bnVtYmVyKSB7XG5cdGxldCBsaW5lID0gZG9jLmxpbmVBdChvZmZzZXQpXG5cdHJldHVybiB7bGluZTogbGluZS5udW1iZXIgLSAxLCBjaDogb2Zmc2V0IC0gbGluZS5mcm9tfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHlwZVN0ck9mVHJhbnNhYyh0cjogVHJhbnNhY3Rpb24pOiBzdHJpbmcge1xuXHRsZXQgVHJhbnNhY1R5cGVBcnJheTpzdHJpbmdbXSA9IFtcIkVhc3lUeXBpbmcuY2hhbmdlXCIsIFwiRWFzeVR5cGluZy5wYXN0ZVwiLFxuXHRcdFx0XHRcdFx0XHRcImlucHV0LnR5cGUuY29tcG9zZVwiLCBcImlucHV0LnR5cGVcIiwgXCJpbnB1dC5wYXN0ZVwiLCBcImlucHV0LmRyb3BcIiwgXCJpbnB1dC5jb21wbGV0ZVwiLCBcImlucHV0XCIsXG5cdFx0XHRcdFx0XHRcdFwiZGVsZXRlLnNlbGVjdGlvblwiLCBcImRlbGV0ZS5mb3J3YXJkXCIsIFwiZGVsZXRlLmJhY2t3YXJkXCIsIFwiZGVsZXRlLmN1dFwiLCBcImRlbGV0ZVwiLFxuXHRcdFx0XHRcdFx0XHRcIm1vdmUuZHJvcFwiLFxuXHRcdFx0XHRcdFx0XHRcInVuZG9cIiwgXCJyZWRvXCIsXG5cdFx0XHRcdFx0XHRcdFwic2VsZWN0LnBvaW50ZXJcIl07XG5cdGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBUcmFuc2FjVHlwZUFycmF5Lmxlbmd0aDsgaSsrKVxuXHR7XG5cdFx0aWYgKHRyLmlzVXNlckV2ZW50KFRyYW5zYWNUeXBlQXJyYXlbaV0pKVxuXHRcdFx0cmV0dXJuIFRyYW5zYWNUeXBlQXJyYXlbaV07XG5cdH1cblx0cmV0dXJuIFwibm9uZVwiXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmcycGFpcnN0cmluZyhzOiBzdHJpbmcpOlBhaXJTdHJpbmd7XG5cdGxldCBjdXJzb3JJZHggPSBzLmluZGV4T2YoXCJ8XCIpO1xuXHRsZXQgbGVmdCA9IHMuc3Vic3RyaW5nKDAsIGN1cnNvcklkeCk7XG5cdGxldCByaWdodCA9IHMuc3Vic3RyaW5nKGN1cnNvcklkeCsxKTtcblx0cmV0dXJuIHtsZWZ0OmxlZnQsIHJpZ2h0OnJpZ2h0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVTdHJpbmdMaXN0MlJ1bGVMaXN0KGxpc3Q6IEFycmF5PFtzdHJpbmcsIHN0cmluZ10+KTpDb252ZXJ0UnVsZVtdIHtcblx0bGV0IHJlczpDb252ZXJ0UnVsZVtdID0gW107XG5cdGZvciAobGV0IGkgaW4gbGlzdCl7XG5cdFx0cmVzW2ldID0ge2JlZm9yZTogc3RyaW5nMnBhaXJzdHJpbmcobGlzdFtpXVswXSksIGFmdGVyOiBzdHJpbmcycGFpcnN0cmluZyhsaXN0W2ldWzFdKX1cblx0fVxuXHRyZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nRGVsZXRlQXQoc3RyOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOnN0cmluZ1xue1xuICAgIHJldHVybiBzdHIuc3Vic3RyaW5nKDAsIGluZGV4KStzdHIuc3Vic3RyaW5nKGluZGV4KzEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nSW5zZXJ0QXQoc3RyOnN0cmluZywgaW5kZXg6IG51bWJlciwgczogc3RyaW5nKTpzdHJpbmdcbntcbiAgICByZXR1cm4gc3RyLnN1YnN0cmluZygwLCBpbmRleCkrcytzdHIuc3Vic3RyaW5nKGluZGV4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGFyYW1EZWZpbmVkKHBhcmFtOiBhbnkpOmJvb2xlYW5cbntcblx0cmV0dXJuIHR5cGVvZiBwYXJhbSE9PVwidW5kZWZpbmVkXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93U3RyaW5nKHM6IHN0cmluZyk6c3RyaW5ne1xuXHRyZXR1cm4gcy5yZXBsYWNlKC9cXG4vZywgJ1xcXFxuJyk7XG59IiwgImltcG9ydCB7IFNwYWNlU3RhdGUsIHN0cmluZzJTcGFjZVN0YXRlIH0gZnJvbSAnc3JjL2NvcmUnO1xuaW1wb3J0IHsgQXBwLCBUZXh0Q29tcG9uZW50LCBNYXJrZG93blZpZXcsIE1vZGFsLCBOb3RpY2UsIFBsdWdpbiwgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZywgV29ya3NwYWNlLCBXb3Jrc3BhY2VMZWFmLCBUZXh0QXJlYUNvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCBFYXN5VHlwaW5nUGx1Z2luIGZyb20gJy4vbWFpbic7XG5pbXBvcnQgeyBzaG93U3RyaW5nIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFpclN0cmluZyB7XG5cdGxlZnQ6IHN0cmluZztcblx0cmlnaHQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb252ZXJ0UnVsZSB7XG5cdGJlZm9yZTogUGFpclN0cmluZztcblx0YWZ0ZXI6IFBhaXJTdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIFJ1bGVUeXBlIHtkZWxldGU9IFwiRGVsZXRlIFJ1bGVcIiwgY29udmVydD0nQ29udmVydCBSdWxlJ31cbmV4cG9ydCBlbnVtIFdvcmtNb2RlIHsgT25seVdoZW5UeXBpbmcgPSBcInR5cGluZ1wiLCBHbG9iYWxseSA9IFwiZ2xvYmFsXCIgfVxuXG5leHBvcnQgaW50ZXJmYWNlIEVhc3lUeXBpbmdTZXR0aW5ncyB7XG5cdFRhYm91dDogYm9vbGVhbjtcblx0U2VsZWN0aW9uRW5oYW5jZTogYm9vbGVhbjtcblx0SW50cmluc2ljU3ltYm9sUGFpcnM6IGJvb2xlYW47XG5cdEJhc2VPYkVkaXRFbmhhbmNlOiBib29sZWFuO1xuXHRGVzJIV0VuaGFuY2U6IGJvb2xlYW47XG5cdEJldHRlckNvZGVFZGl0OiBib29sZWFuO1xuXHRBdXRvRm9ybWF0OiBib29sZWFuO1xuXHRFeGNsdWRlRmlsZXM6IHN0cmluZztcblx0QXV0b0NhcGl0YWw6IGJvb2xlYW47XG5cdEF1dG9DYXBpdGFsTW9kZTogV29ya01vZGU7XG5cdENoaW5lc2VFbmdsaXNoU3BhY2U6IGJvb2xlYW47XG5cdEVuZ2xpc2hOdW1iZXJTcGFjZTogYm9vbGVhbjtcblx0Q2hpbmVzZU5vU3BhY2U6IGJvb2xlYW47XG5cdENoaW5lc2VOdW1iZXJTcGFjZTogYm9vbGVhbjtcblx0UHVuY3R1YXRpb25TcGFjZTogYm9vbGVhbjtcblx0UHVuY3R1YXRpb25TcGFjZU1vZGU6IFdvcmtNb2RlO1xuXHRJbmxpbmVDb2RlU3BhY2VNb2RlOiBTcGFjZVN0YXRlO1xuXHRJbmxpbmVGb3JtdWxhU3BhY2VNb2RlOiBTcGFjZVN0YXRlO1xuXHRJbmxpbmVMaW5rU3BhY2VNb2RlOiBTcGFjZVN0YXRlO1xuXHRJbmxpbmVMaW5rU21hcnRTcGFjZTogYm9vbGVhbjtcblx0VXNlckRlZmluZWRSZWdTd2l0Y2g6IGJvb2xlYW47XG5cdFVzZXJEZWZpbmVkUmVnRXhwOiBzdHJpbmc7XG5cdGRlYnVnOiBib29sZWFuO1xuXG5cdHVzZXJTZWxSZXBSdWxlVHJpZ2dlcjogc3RyaW5nW107XG5cdHVzZXJTZWxSZXBSdWxlVmFsdWU6IFBhaXJTdHJpbmdbXTtcblx0dXNlckRlbGV0ZVJ1bGVzU3RyTGlzdDogW3N0cmluZywgc3RyaW5nXVtdO1xuXHR1c2VyQ29udmVydFJ1bGVzU3RyTGlzdDogW3N0cmluZywgc3RyaW5nXVtdO1xuXHR1c2VyU2VsUnVsZVNldHRpbmdzT3BlbjogYm9vbGVhbjtcblx0dXNlckRlbFJ1bGVTZXR0aW5nc09wZW46IGJvb2xlYW47XG5cdHVzZXJDdnRSdWxlU2V0dGluZ3NPcGVuOiBib29sZWFuO1xuXG5cdEVudGVyVHdpY2U6IGJvb2xlYW47XG5cdFB1bmNSZWN0aWZ5OiBib29sZWFuO1xuXHRUcnlGaXhDaGluZXNlSU06IGJvb2xlYW47XG5cdEZpeE1hY09TQ29udGV4dE1lbnU6IGJvb2xlYW47XG5cdFRyeUZpeE1TSU1FOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRVRUSU5HUzogRWFzeVR5cGluZ1NldHRpbmdzID0ge1xuXHRUYWJvdXQ6IHRydWUsXG5cdFNlbGVjdGlvbkVuaGFuY2U6IHRydWUsXG5cdEludHJpbnNpY1N5bWJvbFBhaXJzOiB0cnVlLFxuXHRCYXNlT2JFZGl0RW5oYW5jZTogdHJ1ZSxcblx0RlcySFdFbmhhbmNlOiB0cnVlLFxuXHRCZXR0ZXJDb2RlRWRpdDogdHJ1ZSxcblxuXHRBdXRvRm9ybWF0OiB0cnVlLFxuXHRFeGNsdWRlRmlsZXM6IFwiXCIsXG5cdENoaW5lc2VFbmdsaXNoU3BhY2U6IHRydWUsXG5cdENoaW5lc2VOdW1iZXJTcGFjZTogdHJ1ZSxcblx0RW5nbGlzaE51bWJlclNwYWNlOiB0cnVlLFxuXHRDaGluZXNlTm9TcGFjZTogdHJ1ZSxcblx0UHVuY3R1YXRpb25TcGFjZTogdHJ1ZSxcblx0QXV0b0NhcGl0YWw6IHRydWUsXG5cdEF1dG9DYXBpdGFsTW9kZTogV29ya01vZGUuT25seVdoZW5UeXBpbmcsXG5cdFB1bmN0dWF0aW9uU3BhY2VNb2RlOiBXb3JrTW9kZS5Pbmx5V2hlblR5cGluZyxcblx0SW5saW5lQ29kZVNwYWNlTW9kZTogU3BhY2VTdGF0ZS5zb2Z0LFxuXHRJbmxpbmVGb3JtdWxhU3BhY2VNb2RlOiBTcGFjZVN0YXRlLnNvZnQsXG5cdElubGluZUxpbmtTcGFjZU1vZGU6IFNwYWNlU3RhdGUuc29mdCxcblx0SW5saW5lTGlua1NtYXJ0U3BhY2U6IHRydWUsXG5cdFVzZXJEZWZpbmVkUmVnU3dpdGNoOiB0cnVlLFxuXHRVc2VyRGVmaW5lZFJlZ0V4cDogXCJ7ey4qP319fCsrXFxuXCIrXG5cdFx0XCI8Lio/PnwtLVxcblwiICtcblx0XHRcIlxcXFxbXFxcXCEuKj9cXFxcXVstK117MCwxfXwtK1xcblwiK1xuXHRcdFwiKGZpbGU6Ly8vfGh0dHBzPzovL3xmdHA6Ly98b2JzaWRpYW46Ly98em90ZXJvOi8vfHd3dy4pW15cXFxcc1x1RkYwOFx1RkYwOVx1MzAwQVx1MzAwQlx1MzAwMixcdUZGMENcdUZGMDFcdUZGMUY7XHVGRjFCXHVGRjFBXHUyMDFDXHUyMDFEXHUyMDE4XHUyMDE5XFxcXClcXFxcKFxcXFxbXFxcXF1cXFxce1xcXFx9J10rfC0tXFxuXCIrXG5cdFx0XCJcXG5bYS16QS1aMC05X1xcXFwtLl0rQFthLXpBLVowLTlfXFxcXC0uXSt8KytcXG5cIitcblx0XHRcIig/PCEjKSNbXFxcXHU0ZTAwLVxcXFx1OWZhNVxcXFx3LVxcXFwvXSt8KytcIixcblx0ZGVidWc6IGZhbHNlLFxuXHR1c2VyU2VsUmVwUnVsZVRyaWdnZXI6IFtcIi1cIiwgXCIjXCJdLFxuXHR1c2VyU2VsUmVwUnVsZVZhbHVlOiBbe2xlZnQ6XCJ+flwiLCByaWdodDpcIn5+XCJ9LCB7bGVmdDpcIiNcIiwgcmlnaHQ6XCIgXCJ9XSxcblx0dXNlckRlbGV0ZVJ1bGVzU3RyTGlzdDogW1tcImRlbW98XCIsIFwifFwiXV0sXG5cdHVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0OiBbW1wiOil8XCIsXCJcdUQ4M0RcdURFMDB8XCJdXSxcblx0dXNlclNlbFJ1bGVTZXR0aW5nc09wZW46IHRydWUsXG5cdHVzZXJEZWxSdWxlU2V0dGluZ3NPcGVuOiB0cnVlLFxuXHR1c2VyQ3Z0UnVsZVNldHRpbmdzT3BlbjogdHJ1ZSxcblxuXHRFbnRlclR3aWNlOiBmYWxzZSxcblx0VHJ5Rml4Q2hpbmVzZUlNOiB0cnVlLFxuXHRQdW5jUmVjdGlmeTogZmFsc2UsXG5cdEZpeE1hY09TQ29udGV4dE1lbnU6IGZhbHNlLFxuXHRUcnlGaXhNU0lNRTogZmFsc2UsXG59XG5cbmV4cG9ydCBjbGFzcyBFYXN5VHlwaW5nU2V0dGluZ1RhYiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xuXHRwbHVnaW46IEVhc3lUeXBpbmdQbHVnaW47XG5cblx0Y29uc3RydWN0b3IoYXBwOiBBcHAsIHBsdWdpbjogRWFzeVR5cGluZ1BsdWdpbikge1xuXHRcdHN1cGVyKGFwcCwgcGx1Z2luKTtcblx0XHR0aGlzLnBsdWdpbiA9IHBsdWdpbjtcblx0fVxuXG5cdGRpc3BsYXkoKTogdm9pZCB7XG5cdFx0Y29uc3QgeyBjb250YWluZXJFbCB9ID0gdGhpcztcblxuXHRcdGNvbnRhaW5lckVsLmVtcHR5KCk7XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbChcImgxXCIsIHsgdGV4dDogXCJPYnNpZGlhbiBFYXN5VHlwaW5nIFBsdWdpblwiIH0pO1xuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwicFwiLCB7IHRleHQ6IFwiTW9yZSBkZXRhaWwgaXMgaW4gR2l0aHViOiBcIiB9KS5jcmVhdGVFbChcImFcIiwge1xuXHRcdFx0dGV4dDogXCJlYXN5LXR5cGluZy1vYnNpZGlhblwiLFxuXHRcdFx0aHJlZjogXCJodHRwczovL2dpdGh1Yi5jb20vWWFvemh1d2EvZWFzeS10eXBpbmctb2JzaWRpYW5cIixcblx0XHR9KTtcblxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHsgdGV4dDogJ1x1NTg5RVx1NUYzQVx1N0YxNlx1OEY5MVx1OEJCRVx1N0Y2RSAoRW5oYW5jZWQgRWRpdGluZyBTZXR0aW5nKScgfSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3ltYm9sIGF1dG8gcGFpciBhbmQgZGVsZXRlIHdpdGggcGFpclwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU4OUVcdTUyQTBcdTU5MUFcdTc5Q0RcdTdCMjZcdTUzRjdcdTkxNERcdTVCRjlcdThGOTNcdTUxNjVcdUZGMENcdTkxNERcdTVCRjlcdTUyMjBcdTk2NjRcdUZGMENcdTU5ODJcdTMwMEFcdTMwMEIsIFx1MjAxQ1x1MjAxRCwgXHUzMDBDXHUzMDBELCBcdTMwMEVcdTMwMEYsXHUzMDEwXHUzMDExXHU3QjQ5XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkludHJpbnNpY1N5bWJvbFBhaXJzKVxuXHRcdFx0XHRcdC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkludHJpbnNpY1N5bWJvbFBhaXJzID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNlbGVjdGlvbiBSZXBsYWNlIEVuaGFuY2VtZW50XCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1OTAwOVx1NEUyRFx1NjU4N1x1NjcyQ1x1NjBDNVx1NTFCNVx1NEUwQlx1NzY4NFx1N0YxNlx1OEY5MVx1NTg5RVx1NUYzQVx1RkYwQ1x1NjMwOVx1RkZFNVx1MjE5MiRcdTkwMDlcdTRFMkRcdTc2ODRcdTY1ODdcdTY3MkMkLCBcdTYzMDlcdTAwQjdcdTIxOTJgXHU5MDA5XHU0RTJEXHU3Njg0XHU2NTg3XHU2NzJDYFx1RkYwQ1x1MzAwQSBcdTIxOTIgXHUzMDBBXHU5MDA5XHU0RTJEXHU3Njg0XHU2NTg3XHU2NzJDXHUzMDBCXHU3QjQ5XHU3QjQ5XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlNlbGVjdGlvbkVuaGFuY2UpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuU2VsZWN0aW9uRW5oYW5jZSA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJDb252ZXJ0IHN1Y2Nlc3NpdmUgZnVsbCB3aWR0aCBzeW1ib2wgdG8gaGFsZiB3aWR0aCBzeW1ib2xcIilcblx0XHRcdC5zZXREZXNjKFwiXHU4RkRFXHU3RUVEXHU4RjkzXHU1MTY1XHU1MTY4XHU4OUQyXHU3QjI2XHU1M0Y3XHU4RjZDXHU1MzRBXHU4OUQyXHVGRjBDXHUzMDAyXHUzMDAyXHUyMTkyIC5cdUZGMENcdUZGMDFcdUZGMDFcdTIxOTIgIVx1RkYwQyBcdTMwMEJcdTMwMEJcdTIxOTIgPlwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5GVzJIV0VuaGFuY2UpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuRlcySFdFbmhhbmNlID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkJhc2ljIHN5bWJvbCBpbnB1dCBlbmhhbmNlIGZvciBvYnNpZGlhblwiKVxuXHRcdFx0LnNldERlc2MoXCJPYnNpZGlhbiBcdTc2ODRcdTU3RkFcdTc4NDBcdThGOTNcdTUxNjVcdTU4OUVcdTVGM0FcdUZGMENcdTU5ODJcdTMwMTBcdTMwMTB8IFx1MjE5MiBbW3xdXVx1RkYwQ1x1NTNFNVx1OTk5Nlx1NzY4NFx1MzAwMVx1MjE5MiAvXHVGRjBDXHU1M0U1XHU5OTk2XHU3Njg0XHUzMDBCXHUyMTkyID5cdUZGMENcdTAwQjdcdTAwQjd8IFx1MjE5MiBgfGBcdUZGMEMgYFx1MDBCN3xgIFx1NTNEOFx1NjIxMFx1NEVFM1x0XHU3ODAxXHU1NzU3XHVGRjBDXHVGRkU1XHVGRkU1fCBcdTIxOTIgJHwkXCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkJhc2VPYkVkaXRFbmhhbmNlKVxuXHRcdFx0XHRcdC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkJhc2VPYkVkaXRFbmhhbmNlID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkVuaGFuY2UgY29kZWJsb2NrIGVkaXRcIilcblx0XHRcdC5zZXREZXNjKFwiSW1wcm92ZSBlZGl0aW5nIGluIGNvZGVibG9jayhUYWIsIGRlbGV0ZSwgcGFzdGUsIGNtZC9jdHJsK0Egc2VsZWN0KS4gXHU1ODlFXHU1RjNBXHU0RUUzXHU3ODAxXHU1NzU3XHU1MTg1XHU3Njg0XHU3RjE2XHU4RjkxXHVGRjA4Q21kL0N0cmwrQSBcdTkwMDlcdTRFMkRcdTMwMDFUYWJcdTMwMDFcdTUyMjBcdTk2NjRcdTMwMDFcdTdDOThcdThEMzRcdUZGMDlcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuQmV0dGVyQ29kZUVkaXQpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuQmV0dGVyQ29kZUVkaXQgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiVGFib3V0XCIpXG5cdFx0XHQuc2V0RGVzYyhcIlRhYm91dCBpbmxpbmUgY29kZSBvciBwYWlyZWQgc3ltYm9scyh3aGVuIHNlbGVjdGVkKS4gVGFiIFx1OERGM1x1NTFGQVx1ODg0Q1x1NTE4NVx1NEVFM1x1NzgwMVx1NTc1N1x1NjIxNlx1OTE0RFx1NUJGOVx1N0IyNlx1NTNGN1x1NTc1NyhcdTkwMDlcdTRFMkRcdTY1RjYpXCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlRhYm91dClcblx0XHRcdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5UYWJvdXQgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDInLCB7IHRleHQ6ICdcdTgxRUFcdTVCOUFcdTRFNDlcdTdGMTZcdThGOTFcdThGNkNcdTYzNjJcdTg5QzRcdTUyMTkgKEN1c3RvbWl6ZSBFZGl0IENvbnZlcnRpb24gUnVsZSknIH0pO1xuXHRcdHRoaXMuYnVpbGRVc2VyU2VsUmVwUnVsZVNldHRpbmcodGhpcy5jb250YWluZXJFbC5jcmVhdGVFbChcImRldGFpbHNcIiwge1xuXHRcdFx0Y2xzOiBcImVhc3l0eXBpbmctbmVzdGVkLXNldHRpbmdzXCIsXG5cdFx0XHRhdHRyOiB7XG5cdFx0XHRcdC4uLih0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyU2VsUnVsZVNldHRpbmdzT3Blbj97IG9wZW46IHRydWUgfTp7fSlcblx0XHRcdH1cblx0XHR9KSlcblxuXHRcdHRoaXMuYnVpbGRVc2VyRGVsZXRlUnVsZVNldHRpbmcodGhpcy5jb250YWluZXJFbC5jcmVhdGVFbChcImRldGFpbHNcIiwge1xuXHRcdFx0Y2xzOiBcImVhc3l0eXBpbmctbmVzdGVkLXNldHRpbmdzXCIsXG5cdFx0XHRhdHRyOiB7XG5cdFx0XHRcdC4uLih0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyRGVsUnVsZVNldHRpbmdzT3Blbj97IG9wZW46IHRydWUgfTp7fSlcblx0XHRcdH1cblx0XHR9KSlcblxuXHRcdHRoaXMuYnVpbGRVc2VyQ29udmVydFJ1bGVTZXR0aW5nKHRoaXMuY29udGFpbmVyRWwuY3JlYXRlRWwoXCJkZXRhaWxzXCIsIHtcblx0XHRcdGNsczogXCJlYXN5dHlwaW5nLW5lc3RlZC1zZXR0aW5nc1wiLFxuXHRcdFx0YXR0cjoge1xuXHRcdFx0XHQuLi4odGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckN2dFJ1bGVTZXR0aW5nc09wZW4/eyBvcGVuOiB0cnVlIH06e30pXG5cdFx0XHR9XG5cdFx0fSkpXG5cdFx0XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDInLCB7IHRleHQ6ICdcdTgxRUFcdTUyQThcdTY4M0NcdTVGMEZcdTUzMTZcdThCQkVcdTdGNkUgKEF1dG9mb3JtYXQgU2V0dGluZyknIH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkF1dG8gZm9ybWF0dGluZyB3aGVuIHR5cGluZ1wiKVxuXHRcdFx0LnNldERlc2MoXCJcdTY2MkZcdTU0MjZcdTU3MjhcdTdGMTZcdThGOTFcdTY1ODdcdTY4NjNcdTY1RjZcdTgxRUFcdTUyQThcdTY4M0NcdTVGMEZcdTUzMTZcdTY1ODdcdTY3MkNcdUZGMENcdTgxRUFcdTUyQThcdTY4M0NcdTVGMEZcdTUzMTZcdTc2ODRcdTYwM0JcdTVGMDBcdTUxNzNcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuQXV0b0Zvcm1hdClcblx0XHRcdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5BdXRvRm9ybWF0ID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdwJywgeyB0ZXh0OiAnRGV0YWlsZWQgU2V0dGluZyBCZWxvdycgfSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3BhY2UgYmV0d2VlbiBDaGluZXNlIGFuZCBFbmdsaXNoXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOFx1NEUyRFx1NjU4N1x1NTQ4Q1x1ODJGMVx1NjU4N1x1OTVGNFx1N0E3QVx1NjgzQ1wiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5DaGluZXNlRW5nbGlzaFNwYWNlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5DaGluZXNlRW5nbGlzaFNwYWNlID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3BhY2UgYmV0d2VlbiBDaGluZXNlIGFuZCBOdW1iZXJcIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4XHU0RTJEXHU2NTg3XHU1NDhDXHU2NTcwXHU1QjU3XHU5NUY0XHU3QTdBXHU2ODNDXCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkNoaW5lc2VOdW1iZXJTcGFjZSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuQ2hpbmVzZU51bWJlclNwYWNlID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNwYWNlIGJldHdlZW4gRW5naWxzaCBhbmQgTnVtYmVyXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOFx1ODJGMVx1NjU4N1x1NTQ4Q1x1NjU3MFx1NUI1N1x1OTVGNFx1N0E3QVx1NjgzQ1wiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5FbmdsaXNoTnVtYmVyU3BhY2UpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkVuZ2xpc2hOdW1iZXJTcGFjZSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkRlbGV0ZSB0aGUgU3BhY2UgYmV0d2VlbiBDaGluZXNlIGNoYXJhY3RlcnNcIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4XHU0RTJEXHU2NTg3XHU1QjU3XHU3QjI2XHU5NUY0XHU1M0JCXHU5NjY0XHU3QTdBXHU2ODNDXCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkNoaW5lc2VOb1NwYWNlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5DaGluZXNlTm9TcGFjZSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkNhcGl0YWxpemUgdGhlIGZpcnN0IGxldHRlciBvZiBldmVyeSBzZW50ZW5jZVwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTgyRjFcdTY1ODdcdTZCQ0ZcdTRFMkFcdTUzRTVcdTk5OTZcdTVCNTdcdTZCQ0RcdTU5MjdcdTUxOTlcIilcblx0XHRcdC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFdvcmtNb2RlLk9ubHlXaGVuVHlwaW5nLCBcIlx1OEY5M1x1NTE2NVx1NjVGNlx1NzUxRlx1NjU0OChPbmx5IFdoZW4gVHlwaW5nKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFdvcmtNb2RlLkdsb2JhbGx5LCBcIlx1NTE2OFx1NUM0MFx1NzUxRlx1NjU0OChXb3JrIEdsb2JhbGx5KVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuQXV0b0NhcGl0YWxNb2RlKTtcblx0XHRcdFx0ZHJvcGRvd24ub25DaGFuZ2UoYXN5bmMgKHY6IFdvcmtNb2RlLk9ubHlXaGVuVHlwaW5nIHwgV29ya01vZGUuR2xvYmFsbHkpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5BdXRvQ2FwaXRhbE1vZGUgPSB2O1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VG9vbHRpcChcIlx1NTI5Rlx1ODBGRFx1NUYwMFx1NTE3MyhTd2l0Y2gpXCIpO1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuQXV0b0NhcGl0YWwpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkF1dG9DYXBpdGFsID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU21hcnRseSBpbnNlcnQgc3BhY2UgYmV0d2VlbiB0ZXh0IGFuZCBwdW5jdHVhdGlvblwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU3MjhcdTY1ODdcdTY3MkNcdTU0OENcdTY4MDdcdTcwQjlcdTk1RjRcdTZERkJcdTUyQTBcdTdBN0FcdTY4M0NcIilcblx0XHRcdC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFdvcmtNb2RlLk9ubHlXaGVuVHlwaW5nLCBcIlx1OEY5M1x1NTE2NVx1NjVGNlx1NzUxRlx1NjU0OChPbmx5IFdoZW4gVHlwaW5nKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFdvcmtNb2RlLkdsb2JhbGx5LCBcIlx1NTE2OFx1NUM0MFx1NzUxRlx1NjU0OChXb3JrIEdsb2JhbGx5KVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuUHVuY3R1YXRpb25TcGFjZU1vZGUpO1xuXHRcdFx0XHRkcm9wZG93bi5vbkNoYW5nZShhc3luYyAodjogV29ya01vZGUuT25seVdoZW5UeXBpbmcgfCBXb3JrTW9kZS5HbG9iYWxseSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2VNb2RlID0gdjtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2UpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJTcGFjZSBzdGF0ZWd5IGJldHdlZW4gaW5saW5lIGNvZGUgYW5kIHRleHRcIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4IGBcdTg4NENcdTUxODVcdTRFRTNcdTc4MDFgIFx1NTQ4Q1x1NjU4N1x1NjcyQ1x1OTVGNFx1NzY4NFx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVx1MzAwMlwiICtcblx0XHRcdFx0XCJcdTY1RTBcdTg5ODFcdTZDNDJcdUZGMUFcdTVCRjlcdTY3MkNcdTdDN0JcdTUyMkJcdTU3NTdcdTRFMEVcdTVERTZcdTUzRjNcdTY1ODdcdTY3MkNcdTZDQTFcdTY3MDlcdTdBN0FcdTY4M0NcdTc2ODRcdTg5ODFcdTZDNDJcdUZGMENcIiArXG5cdFx0XHRcdFwiXHU4RjZGXHU3QTdBXHU2ODNDXHVGRjFBXHU1QkY5XHU2NzJDXHU3QzdCXHU1MjJCXHU1NzU3XHU0RTBFXHU1NDY4XHU1NkY0XHU1MzNBXHU1NzU3XHU1M0VBXHU4OTgxXHU2QzQyXHU2NzA5XHU4RjZGXHU3QTdBXHU2ODNDXHVGRjBDXHU4RjZGXHU3QTdBXHU2ODNDXHU1OTgyXHU1RjUzXHU1MjREXHU1NzU3XHU1REU2XHU4RkI5XHU3Njg0XHU0RTM0XHU4RkQxXHU2NTg3XHU2NzJDXHU0RTNBXHUzMDAyXHVGRjBDXHVGRjFCXHVGRjFGXHU3QjQ5XHU1MTY4XHU4OUQyXHU2ODA3XHU3MEI5XHVGRjBDXHU1RjUzXHU1MjREXHU1NzU3XHU1M0YzXHU4RkI5XHU3Njg0XHU0RTM0XHU4RkQxXHU2NTg3XHU2NzJDXHU0RTNBXHU2MjQwXHU2NzA5XHU1MTY4XHU1MzRBXHU4OUQyXHU2ODA3XHU3MEI5XHVGRjBDXCIgK1xuXHRcdFx0XHRcIlx1NEUyNVx1NjgzQ1x1N0E3QVx1NjgzQ1x1RkYxQVx1NUY1M1x1NTI0RFx1NTc1N1x1NEUwRVx1NEUzNFx1OEZEMVx1NjU4N1x1NjcyQ1x1NEU0Qlx1OTVGNFx1NEUyNVx1NjgzQ1x1NkRGQlx1NTJBMFx1N0E3QVx1NjgzQ1x1MzAwMlwiXG5cdFx0XHQpXG5cdFx0XHQuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5ub25lKSwgXCJcdTY1RTBcdTg5ODFcdTZDNDIoTm8gUmVxdWlyZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5zb2Z0KSwgXCJcdThGNkZcdTdBN0FcdTY4M0MoU29mdCBTcGFjZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5zdHJpY3QpLCBcIlx1NEUyNVx1NjgzQ1x1N0E3QVx1NjgzQyhTdHJpY3QgU3BhY2UpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5zZXRWYWx1ZShTdHJpbmcodGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZSkpO1xuXHRcdFx0XHRkcm9wZG93bi5vbkNoYW5nZShhc3luYyAodjogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZSA9IHN0cmluZzJTcGFjZVN0YXRlKHYpO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KVxuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3BhY2Ugc3RhdGVneSBiZXR3ZWVuIGlubGluZSBmb3JtdWxhIGFuZCB0ZXh0XCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOCAkXHU4ODRDXHU1MTg1XHU1MTZDXHU1RjBGJCBcdTU0OENcdTY1ODdcdTY3MkNcdTk1RjRcdTc2ODRcdTdBN0FcdTY4M0NcdTdCNTZcdTc1NjVcIilcblx0XHRcdC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFN0cmluZyhTcGFjZVN0YXRlLm5vbmUpLCBcIlx1NjVFMFx1ODk4MVx1NkM0MihObyBSZXF1aXJlKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFN0cmluZyhTcGFjZVN0YXRlLnNvZnQpLCBcIlx1OEY2Rlx1N0E3QVx1NjgzQyhTb2Z0IFNwYWNlKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFN0cmluZyhTcGFjZVN0YXRlLnN0cmljdCksIFwiXHU0RTI1XHU2ODNDXHU3QTdBXHU2ODNDKFN0cmljdCBTcGFjZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLnNldFZhbHVlKFN0cmluZyh0aGlzLnBsdWdpbi5zZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlKSk7XG5cdFx0XHRcdGRyb3Bkb3duLm9uQ2hhbmdlKGFzeW5jICh2OiBzdHJpbmcpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlID0gc3RyaW5nMlNwYWNlU3RhdGUodik7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJTcGFjZSBzdHJhdGVneSBiZXR3ZWVuIGxpbmsgYW5kIHRleHRcIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4IFtbd2lraWxpbmtdXSBbbWRsaW5rXSguLi4pIFx1NTQ4Q1x1NjU4N1x1NjcyQ1x1OTVGNFx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVx1MzAwMlx1NjY3QVx1ODBGRFx1N0E3QVx1NjgzQ1x1NkEyMVx1NUYwRlx1NEUwQlx1NTIxOVx1NEYxQVx1ODAwM1x1ODY1MVx1OEJFNVx1OTRGRVx1NjNBNVx1NTc1N1x1NzY4NFx1NjYzRVx1NzkzQVx1NTE4NVx1NUJCOVx1RkYwOFx1NTk4Mndpa2lcdTk0RkVcdTYzQTVcdTc2ODRcdTUyMkJcdTU0MERcdUZGMDlcdTY3NjVcdTRFMEVcdTRFMzRcdThGRDFcdTY1ODdcdTY3MkNcdThGREJcdTg4NENcdTdBN0FcdTY4M0NcdTMwMDJcIilcblx0XHRcdC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFwiZHVtbXlcIiwgXCJcdTU0NDZcdTdBN0FcdTY4M0MoZHVtbXkpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oXCJzbWFydFwiLCBcIlx1NjY3QVx1ODBGRFx1N0E3QVx1NjgzQyhTbWFydClcIik7XG5cdFx0XHRcdGRyb3Bkb3duLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUxpbmtTbWFydFNwYWNlID8gXCJzbWFydFwiIDogXCJkdW1teVwiKTtcblx0XHRcdFx0ZHJvcGRvd24ub25DaGFuZ2UoYXN5bmMgKHY6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUxpbmtTbWFydFNwYWNlID0gdiA9PSBcInNtYXJ0XCIgPyB0cnVlIDogZmFsc2U7XG5cdFx0XHRcdFx0Ly8gbmV3IE5vdGljZShTdHJpbmcodGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lTGlua1NtYXJ0U3BhY2UpKTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0XHQuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5ub25lKSwgXCJcdTY1RTBcdTg5ODFcdTZDNDIoTm8gUmVxdWlyZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5zb2Z0KSwgXCJcdThGNkZcdTdBN0FcdTY4M0MoU29mdCBTcGFjZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5zdHJpY3QpLCBcIlx1NEUyNVx1NjgzQ1x1N0E3QVx1NjgzQyhTdHJpY3QgU3BhY2UpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5zZXRWYWx1ZShTdHJpbmcodGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZSkpO1xuXHRcdFx0XHRkcm9wZG93bi5vbkNoYW5nZShhc3luYyAodjogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZSA9IHN0cmluZzJTcGFjZVN0YXRlKHYpO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHsgdGV4dDogJ1x1ODFFQVx1NUI5QVx1NEU0OVx1NkI2M1x1NTIxOVx1NTMzQVx1NTc1NyAoQ3VzdG9tIHJlZ3VsYXIgZXhwcmVzc2lvbnMgYmxvY2spJyB9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiVXNlciBEZWZpbmVkIFJlZ0V4cCBTd2l0Y2hcIilcblx0XHRcdC5zZXREZXNjKFwiXHU4MUVBXHU1QjlBXHU0RTQ5XHU2QjYzXHU1MjE5XHU4ODY4XHU4RkJFXHU1RjBGXHU1RjAwXHU1MTczXHVGRjBDXHU1MzM5XHU5MTREXHU1MjMwXHU3Njg0XHU1MTg1XHU1QkI5XHU0RTBEXHU4RkRCXHU4ODRDXHU2ODNDXHU1RjBGXHU1MzE2XHVGRjBDXHU0RTE0XHU1M0VGXHU0RUU1XHU4QkJFXHU3RjZFXHU1MzM5XHU5MTREXHU1MjMwXHU3Njg0XHU1MTg1XHU1QkI5XHU1NzU3XHU0RTBFXHU1MTc2XHU0RUQ2XHU1MTg1XHU1QkI5XHU0RTRCXHU5NUY0XHU3Njg0XHU3QTdBXHU2ODNDXHU3QjU2XHU3NTY1XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlVzZXJEZWZpbmVkUmVnU3dpdGNoKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5Vc2VyRGVmaW5lZFJlZ1N3aXRjaCA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoXCJwXCIsIHsgdGV4dDogXCJcdTZCNjNcdTUyMTlcdTg4NjhcdThGQkVcdTVGMEZcdTc2RjhcdTUxNzNcdTc3RTVcdThCQzZcdUZGMENcdTg5QzEgXCIgfSkuY3JlYXRlRWwoXCJhXCIsIHtcblx0XHRcdHRleHQ6IFwiXHUzMDBBXHU5NjJFXHU0RTAwXHU1Q0YwXHVGRjFBXHU2QjYzXHU1MjE5XHU4ODY4XHU4RkJFXHU1RjBGXHU3QjgwXHU2NjBFXHU2NTU5XHU3QTBCXHUzMDBCXCIsXG5cdFx0XHRocmVmOiBcImh0dHBzOi8vamF2YXNjcmlwdC5ydWFueWlmZW5nLmNvbS9zdGRsaWIvcmVnZXhwLmh0bWwjXCIsXG5cdFx0fSk7XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbChcInBcIiwgeyB0ZXh0OiBcIlx1NkI2M1x1NTIxOVx1ODg2OFx1OEZCRVx1NUYwRlx1ODlDNFx1NTIxOVx1NEY3Rlx1NzUyOFx1OEJGNFx1NjYwRVx1NEUwRVx1NzkzQVx1NEY4Qlx1RkYxQVwiIH0pLmNyZWF0ZUVsKFwiYVwiLCB7XG5cdFx0XHR0ZXh0OiBcIlx1ODFFQVx1NUI5QVx1NEU0OVx1NkI2M1x1NTIxOVx1ODg2OFx1OEZCRVx1NUYwRlx1ODlDNFx1NTIxOVwiLFxuXHRcdFx0aHJlZjogXCJodHRwczovL2dpdGh1Yi5jb20vWWFvemh1d2EvZWFzeS10eXBpbmctb2JzaWRpYW4vYmxvYi9tYXN0ZXIvVXNlckRlZmluZWRSZWdFeHAubWRcIixcblx0XHR9KTtcblxuXHRcdGNvbnN0IHJlZ0NvbnRlbnRBcmVhU2V0dGluZyA9IG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKTtcblx0XHRyZWdDb250ZW50QXJlYVNldHRpbmcuc2V0dGluZ0VsLnNldEF0dHJpYnV0ZShcblx0XHRcdFwic3R5bGVcIixcblx0XHRcdFwiZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XCJcblx0XHQpO1xuXHRcdHJlZ0NvbnRlbnRBcmVhU2V0dGluZ1xuXHRcdFx0LnNldE5hbWUoXCJVc2VyLWRlZmluZWQgUmVndWxhciBFeHByZXNzaW9uLCBvbmUgZXhwcmVzc2lvbiBwZXIgbGluZVwiKVxuXHRcdFx0LnNldERlc2MoXG5cdFx0XHRcdFwiXHU3NTI4XHU2MjM3XHU4MUVBXHU1QjlBXHU0RTQ5XHU2QjYzXHU1MjE5XHU4ODY4XHU4RkJFXHU1RjBGXHVGRjBDXHU1MzM5XHU5MTREXHU1MjMwXHU3Njg0XHU1MTg1XHU1QkI5XHU0RTBEXHU4RkRCXHU4ODRDXHU2ODNDXHU1RjBGXHU1MzE2XHVGRjBDXHU2QkNGXHU4ODRDXHU0RTAwXHU0RTJBXHU4ODY4XHU4RkJFXHU1RjBGXHVGRjBDXHU4ODRDXHU1QzNFXHU0RTBEXHU4OTgxXHU5NjhGXHU2MTBGXHU1MkEwXHU3QTdBXHU2ODNDXHUzMDAyXCIgK1xuXHRcdFx0XHRcIlx1NkJDRlx1ODg0Q1x1NjcyQlx1NUMzRTNcdTRFMkFcdTVCNTdcdTdCMjZcdTc2ODRcdTU2RkFcdTVCOUFcdTRFM0F8XHU1NDhDXHU0RTI0XHU0RTJBXHU3QTdBXHU2ODNDXHU3QjU2XHU3NTY1XHU3QjI2XHU1M0Y3XHVGRjBDXHU3QTdBXHU2ODNDXHU3QjU2XHU3NTY1XHU3QjI2XHU1M0Y3XHU0RTNBLT0rXHVGRjBDXHU1MjA2XHU1MjJCXHU0RUUzXHU4ODY4XHU0RTBEXHU4OTgxXHU2QzQyXHU3QTdBXHU2ODNDKC0pXHVGRjBDXHU4RjZGXHU3QTdBXHU2ODNDKD0pXHVGRjBDXHU0RTI1XHU2ODNDXHU3QTdBXHU2ODNDKCspXHUzMDAyXCIgK1xuXHRcdFx0XHRcIlx1OEZEOVx1NEUyNFx1NEUyQVx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVx1N0IyNlx1NTNGN1x1NTIwNlx1NTIyQlx1NEUzQVx1NTMzOVx1OTE0RFx1NTMzQVx1NTc1N1x1NzY4NFx1NURFNlx1NTNGM1x1NEUyNFx1OEZCOVx1NzY4NFx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVwiXG5cdFx0XHQpO1xuXHRcdGNvbnN0IHJlZ0NvbnRlbnRBcmVhID0gbmV3IFRleHRBcmVhQ29tcG9uZW50KFxuXHRcdFx0cmVnQ29udGVudEFyZWFTZXR0aW5nLmNvbnRyb2xFbFxuXHRcdCk7XG5cblx0XHRzZXRBdHRyaWJ1dGVzKHJlZ0NvbnRlbnRBcmVhLmlucHV0RWwsIHtcblx0XHRcdHN0eWxlOiBcIm1hcmdpbi10b3A6IDEycHg7IHdpZHRoOiAxMDAlOyAgaGVpZ2h0OiAzMHZoO1wiLFxuXHRcdFx0Ly8gY2xhc3M6IFwibXMtY3NzLWVkaXRvclwiLFxuXHRcdH0pO1xuXHRcdHJlZ0NvbnRlbnRBcmVhXG5cdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuVXNlckRlZmluZWRSZWdFeHApXG5cdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlVzZXJEZWZpbmVkUmVnRXhwID0gdmFsdWU7XG5cdFx0XHRcdHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0fSk7XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDInLCB7IHRleHQ6ICdcdTYzMDdcdTVCOUFcdTY1ODdcdTRFRjZcdTRFMERcdTgxRUFcdTUyQThcdTY4M0NcdTVGMEZcdTUzMTYgKEV4Y2x1ZGUgRm9sZGVycy9GaWxlcyknIH0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJFeGNsdWRlIEZvbGRlcnMvRmlsZXNcIilcblx0XHRcdC5zZXREZXNjKFwiVGhpcyBwbHVnaW4gd2lsbCBwYXJzZSBlYWNoIGxpbmUgYXMgYSBleGx1ZGUgZm9sZGVyIG9yIGZpbGUuIEZvciBleGFtcGxlOiBEYWlseU5vdGUvLCBEYWlseU5vdGUvV2Vla05vdGVzLywgRGFpbHlOb3RlL3Rlc3QubWRcIilcblx0XHRcdC5hZGRUZXh0QXJlYSgodGV4dCkgPT5cblx0XHRcdFx0dGV4dFxuXHRcdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5FeGNsdWRlRmlsZXMpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuRXhjbHVkZUZpbGVzID0gdmFsdWU7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KVxuXHRcdFx0KTtcblx0XHRcblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDInLCB7IHRleHQ6ICdFeHBlcmltZW50YWwgRmVhdHVyZXMnIH0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJGaXggTWFjT1MgY29udGV4dC1tZW51IGN1cnNvciBwb3NpdGlvbihOZWVkIHRvIHJlc3RhcnQgT2JzaWRpYW4pXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NEZFRVx1NTkwRCBNYWNPUyBcdTlGMjBcdTY4MDdcdTUzRjNcdTk1MkVcdTU0N0NcdTUxRkFcdTgzRENcdTUzNTVcdTY1RjZcdTUxNDlcdTY4MDdcdThERjNcdTUyMzBcdTRFMEJcdTRFMDBcdTg4NENcdTc2ODRcdTk1RUVcdTk4OTgoXHU5NzAwXHU4OTgxXHU5MUNEXHU1NDJGT2JzaWRpYW5cdTc1MUZcdTY1NDgpXCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkZpeE1hY09TQ29udGV4dE1lbnUpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkZpeE1hY09TQ29udGV4dE1lbnUgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJGaXggTWljcm9Tb2Z0IElucHV0IE1ldGhvZCBJc3N1ZVwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTkwMDJcdTkxNERcdTY1RTdcdTcyNDhcdTVGQUVcdThGNkZcdThGOTNcdTUxNjVcdTZDRDVcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuVHJ5Rml4TVNJTUUpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlRyeUZpeE1TSU1FID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3RyaWN0IExpbmUgYnJlYWtzIE1vZGUgRW50ZXIgVHdpY2VcIilcblx0XHRcdC5zZXREZXNjKFwiXHU0RTI1XHU2ODNDXHU2MzYyXHU4ODRDXHU3Njg0XHU4QkJFXHU3RjZFXHU0RTBCXHVGRjBDXHU1NzI4XHU2NjZFXHU5MDFBXHU2NTg3XHU2NzJDXHU4ODRDXHU4RkRCXHU4ODRDXHU0RTAwXHU2QjIxXHU1NkRFXHU4RjY2XHU0RjFBXHU0RUE3XHU3NTFGXHU0RTI0XHU0RTJBXHU2MzYyXHU4ODRDXHU3QjI2XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkVudGVyVHdpY2UpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkVudGVyVHdpY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiUHVuYyByZWN0aWZ5XCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NEVDNVx1NTcyOFx1OEY5M1x1NTE2NVx1OEZDN1x1N0EwQlx1NEUyRFx1RkYwQ1x1NEUyRFx1NjU4N1x1OTVGNFx1NzY4NFx1ODJGMVx1NjU4N1x1NjgwN1x1NzBCOVx1RkYwOCwuPyFcdUZGMDlcdTgxRUFcdTUyQThcdThGNkNcdTYzNjJcdTRFM0FcdTUxNjhcdTg5RDJcdUZGMDhcdTUzRUZcdTY0QTRcdTk1MDBcdUZGMDlcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuUHVuY1JlY3RpZnkpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlB1bmNSZWN0aWZ5ID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiUHJpbnQgZGVidWcgaW5mbyBpbiBjb25zb2xlXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOFx1NjNBN1x1NTIzNlx1NTNGMFx1OEY5M1x1NTFGQVx1OEMwM1x1OEJENVx1NEZFMVx1NjA2RlwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5kZWJ1Zykub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuZGVidWcgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0fVxuXG5cdGJ1aWxkVXNlclNlbFJlcFJ1bGVTZXR0aW5nKGNvbnRhaW5lckVsOiBIVE1MRGV0YWlsc0VsZW1lbnQpe1xuXHRcdGNvbnRhaW5lckVsLmVtcHR5KCk7XG4gICAgICAgIGNvbnRhaW5lckVsLm9udG9nZ2xlID0gYXN5bmMgKCkgPT4ge1xuXHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlclNlbFJ1bGVTZXR0aW5nc09wZW4gPSBjb250YWluZXJFbC5vcGVuO1xuXHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgIH07XG5cdFx0Y29uc3Qgc3VtbWFyeSA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwic3VtbWFyeVwiLCB7Y2xzOiBcImVhc3l0eXBpbmctbmVzdGVkLXNldHRpbmdzXCJ9KTtcblx0XHRzdW1tYXJ5LnNldFRleHQoXCJcdTgxRUFcdTVCOUFcdTRFNDlcdTkwMDlcdTRFMkRcdTY1ODdcdTY3MkNcdTdGMTZcdThGOTFcdTU4OUVcdTVGM0FcdTg5QzRcdTUyMTkgKEN1c3RvbWl6ZSBTZWxlY3Rpb24gUmVwbGFjZSBSdWxlKVwiKVxuXG4gICAgICAgIC8vIHN1bW1hcnkuc2V0SGVhZGluZygpLnNldE5hbWUoXCJVc2VyIGRlZmluZWQgU2VsZWN0aW9uIFJlcGxhY2UgUnVsZVwiKTtcbiAgICAgICAgLy8gc3VtbWFyeS5jcmVhdGVEaXYoXCJjb2xsYXBzZXJcIikuY3JlYXRlRGl2KFwiaGFuZGxlXCIpO1xuXG5cdFx0Y29uc3Qgc2VsZWN0aW9uUnVsZVNldHRpbmcgPSBuZXcgU2V0dGluZyhjb250YWluZXJFbCk7XG5cdFx0c2VsZWN0aW9uUnVsZVNldHRpbmdcblx0XHRcdC5zZXROYW1lKFwiU2VsZWN0aW9uIFJlcGxlY2UgUnVsZVwiKVxuXG5cdFx0Y29uc3QgcmVwbGFjZVJ1bGVUcmlnZ2VyID0gbmV3IFRleHRDb21wb25lbnQoc2VsZWN0aW9uUnVsZVNldHRpbmcuY29udHJvbEVsKTtcblx0XHRyZXBsYWNlUnVsZVRyaWdnZXIuc2V0UGxhY2Vob2xkZXIoXCJUcmlnZ3IgU3ltYm9sXCIpO1xuXG5cdFx0Y29uc3QgcmVwbGFjZUxlZnRTdHJpbmcgPSBuZXcgVGV4dEFyZWFDb21wb25lbnQoc2VsZWN0aW9uUnVsZVNldHRpbmcuY29udHJvbEVsKTtcblx0XHRyZXBsYWNlTGVmdFN0cmluZy5zZXRQbGFjZWhvbGRlcihcIk5ldyBMZWZ0IFNpZGUgU3RyaW5nXCIpO1xuXG5cdFx0Y29uc3QgcmVwbGFjZVJpZ2h0U3RyaW5nID0gbmV3IFRleHRBcmVhQ29tcG9uZW50KHNlbGVjdGlvblJ1bGVTZXR0aW5nLmNvbnRyb2xFbCk7XG5cdFx0cmVwbGFjZVJpZ2h0U3RyaW5nLnNldFBsYWNlaG9sZGVyKFwiTmV3IFJpZ2h0IFNpZGUgU3RyaW5nXCIpO1xuXG5cdFx0c2VsZWN0aW9uUnVsZVNldHRpbmdcblx0XHRcdC5hZGRCdXR0b24oKGJ1dHRvbikgPT4ge1xuXHRcdFx0XHRidXR0b25cblx0XHRcdFx0XHQuc2V0QnV0dG9uVGV4dChcIitcIilcblx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIkFkZCBSdWxlXCIpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soYXN5bmMgKGJ1dHRvbkVsOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdGxldCB0cmlnZ2VyID0gcmVwbGFjZVJ1bGVUcmlnZ2VyLmlucHV0RWwudmFsdWU7XG5cdFx0XHRcdFx0XHRsZXQgbGVmdCA9IHJlcGxhY2VMZWZ0U3RyaW5nLmlucHV0RWwudmFsdWU7XG5cdFx0XHRcdFx0XHRsZXQgcmlnaHQgPSByZXBsYWNlUmlnaHRTdHJpbmcuaW5wdXRFbC52YWx1ZTtcblx0XHRcdFx0XHRcdGlmICh0cmlnZ2VyICYmIChsZWZ0IHx8IHJpZ2h0KSkge1xuXHRcdFx0XHRcdFx0XHRpZih0cmlnZ2VyLmxlbmd0aCE9MSAmJiB0cmlnZ2VyIT1cIlx1MjAxNFx1MjAxNFwiICYmIHRyaWdnZXIhPVwiXHUyMDI2XHUyMDI2XCIpe1xuXHRcdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJJbmx2YWxpZCB0cmlnZ2VyLCB0cmlnZ2VyIG11c3QgYmUgYSBzeW1ib2wgb2YgbGVuZ3RoIDEgb3Igc3ltYm9sIFx1MjAxNFx1MjAxNCwgXHUyMDI2XHUyMDI2XCIpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5wbHVnaW4uYWRkVXNlclNlbGVjdGlvblJlcFJ1bGUodHJpZ2dlciwgbGVmdCwgcmlnaHQpKXtcblx0XHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRlbHNle1xuXHRcdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJ3YXJuaW5nISBUcmlnZ2VyIFwiICsgdHJpZ2dlciArIFwiIGlzIGFscmVhZHkgZXhpc3QhXCIpXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwibWlzc2luZyBpbnB1dFwiKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0Ly8gY29uc3Qgc2VsUmVwUnVsZUNvbnRhaW5lciA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiZGl2XCIpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVUcmlnZ2VyLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgdHJpZ2dlciA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlcltpXTtcblx0XHRcdGxldCBsZWZ0X3MgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVZhbHVlW2ldLmxlZnQ7XG5cdFx0XHRsZXQgcmlnaHRfcyA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVmFsdWVbaV0ucmlnaHQ7XG5cdFx0XHRsZXQgc2hvd1N0ciA9IFwiVHJpZ2dlcjogXCIgKyB0cmlnZ2VyICsgXCIgXHUyMTkyIFwiICsgc2hvd1N0cmluZyhsZWZ0X3MpICsgXCJzZWxlY3RlZFwiICsgc2hvd1N0cmluZyhyaWdodF9zKTtcblx0XHRcdC8vIGNvbnN0IHNldHRpbmdJdGVtID0gc2VsUmVwUnVsZUNvbnRhaW5lci5jcmVhdGVFbChcImRpdlwiKTtcblx0XHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0XHQuc2V0TmFtZShzaG93U3RyKVxuXHRcdFx0XHQuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcblx0XHRcdFx0XHRidXR0b24uc2V0SWNvbihcImdlYXJcIilcblx0XHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiRWRpdCBydWxlXCIpXG5cdFx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdG5ldyBTZWxlY3RSdWxlRWRpdE1vZGFsKHRoaXMuYXBwLCB0cmlnZ2VyLGxlZnRfcywgcmlnaHRfcywgYXN5bmMgKG5ld19sZWZ0LCBuZXdfcmlnaHQpID0+IHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi51cGRhdGVVc2VyU2VsZWN0aW9uUmVwUnVsZShpLCBuZXdfbGVmdCwgbmV3X3JpZ2h0KTtcblx0XHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdFx0fSkub3BlbigpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0fSlcblx0XHRcdFx0LmFkZEV4dHJhQnV0dG9uKGJ1dHRvbiA9PiB7XG5cdFx0XHRcdFx0YnV0dG9uLnNldEljb24oXCJ0cmFzaFwiKVxuXHRcdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJSZW1vdmUgcnVsZVwiKVxuXHRcdFx0XHRcdFx0Lm9uQ2xpY2soYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5kZWxldGVVc2VyU2VsZWN0aW9uUmVwUnVsZShpKTtcblx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0fSk7XG5cdFx0fVxuXG5cblx0fVxuXG5cdGJ1aWxkVXNlckRlbGV0ZVJ1bGVTZXR0aW5nKGNvbnRhaW5lckVsOiBIVE1MRGV0YWlsc0VsZW1lbnQpe1xuXHRcdGNvbnRhaW5lckVsLmVtcHR5KCk7XG4gICAgICAgIGNvbnRhaW5lckVsLm9udG9nZ2xlID0gYXN5bmMgKCkgPT4ge1xuXHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckRlbFJ1bGVTZXR0aW5nc09wZW4gPSBjb250YWluZXJFbC5vcGVuO1xuXHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgIH07XG5cdFx0Y29uc3Qgc3VtbWFyeSA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwic3VtbWFyeVwiLCB7Y2xzOiBcImVhc3l0eXBpbmctbmVzdGVkLXNldHRpbmdzXCJ9KTtcblx0XHRzdW1tYXJ5LnNldFRleHQoXCJcdTgxRUFcdTVCOUFcdTRFNDlcdTUyMjBcdTk2NjRcdTdGMTZcdThGOTFcdTU4OUVcdTVGM0FcdTg5QzRcdTUyMTkgKEN1c3RvbWl6ZSBEZWxldGUgUnVsZSlcIilcblxuXHRcdGNvbnN0IGRlbGV0ZVJ1bGVTZXR0aW5nID0gbmV3IFNldHRpbmcoY29udGFpbmVyRWwpO1xuXHRcdGRlbGV0ZVJ1bGVTZXR0aW5nXG5cdFx0XHQuc2V0TmFtZShcIkRlbGV0ZSBSdWxlXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1ODlDNFx1NTIxOVx1RkYxQVx1NzUyOHxcdTRFRTNcdTg4NjhcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcdUZGMENcdTVGQzVcdTk4N0JcdTUzMDVcdTU0MkJcdTUxNDlcdTY4MDdcdTMwMDIgVGlwczogVXNpbmcgfCB0byBpbmRpY2F0ZSB0aGUgY3Vyc29yIHBvc2l0aW9uLlwiKVxuXG5cdFx0Y29uc3QgcGF0dGVybkJlZm9yZSA9IG5ldyBUZXh0QXJlYUNvbXBvbmVudChkZWxldGVSdWxlU2V0dGluZy5jb250cm9sRWwpO1xuXHRcdHBhdHRlcm5CZWZvcmUuc2V0UGxhY2Vob2xkZXIoXCJCZWZvcmUgRGVsZXRlXCIpO1xuXG5cdFx0Y29uc3QgcGF0dGVybkFmdGVyID0gbmV3IFRleHRBcmVhQ29tcG9uZW50KGRlbGV0ZVJ1bGVTZXR0aW5nLmNvbnRyb2xFbCk7XG5cdFx0cGF0dGVybkFmdGVyLnNldFBsYWNlaG9sZGVyKFwiTmV3IFBhdHRlcm5cIik7XG5cblx0XHRkZWxldGVSdWxlU2V0dGluZ1xuXHRcdFx0LmFkZEJ1dHRvbigoYnV0dG9uKSA9PiB7XG5cdFx0XHRcdGJ1dHRvblxuXHRcdFx0XHRcdC5zZXRCdXR0b25UZXh0KFwiK1wiKVxuXHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiQWRkIFJ1bGVcIilcblx0XHRcdFx0XHQub25DbGljayhhc3luYyAoYnV0dG9uRWw6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0bGV0IGJlZm9yZSA9IHBhdHRlcm5CZWZvcmUuaW5wdXRFbC52YWx1ZTtcblx0XHRcdFx0XHRcdGxldCBhZnRlciA9IHBhdHRlcm5BZnRlci5pbnB1dEVsLnZhbHVlO1xuXHRcdFx0XHRcdFx0aWYgKGJlZm9yZSAmJiBhZnRlcikge1xuXHRcdFx0XHRcdFx0XHRsZXQgcmVnUnVsZSA9IC9cXHwvZztcblx0XHRcdFx0XHRcdFx0aWYoYmVmb3JlLnNlYXJjaChyZWdSdWxlKT09LTF8fGFmdGVyLnNlYXJjaChyZWdSdWxlKT09LTEpe1xuXHRcdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJJbmx2YWxpZCB0cmlnZ2VyLCBwYXR0ZXJuIG11c3QgY29udGFpbiBzeW1ib2wgXFx8IHdoaWNoIGluZGljYXRlIGN1cnNvciBwb3NpdGlvblwiKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5hZGRVc2VyRGVsZXRlUnVsZShiZWZvcmUsIGFmdGVyKTtcblx0XHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJtaXNzaW5nIGlucHV0XCIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3QubGVuZ3RoOyBpKyspe1xuXHRcdFx0bGV0IGJlZm9yZSA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3RbaV1bMF07XG5cdFx0XHRsZXQgYWZ0ZXIgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0W2ldWzFdO1xuXHRcdFx0bGV0IHNob3dTdHIgPSBcIlxcXCJcIiArIHNob3dTdHJpbmcoYmVmb3JlKSArIFwiXFxcIiAgZGVsZXRlLmJhY2t3YXJkcyAgXHUyMTkyIFxcXCJcIisgc2hvd1N0cmluZyhhZnRlcikrXCJcXFwiXCI7IFxuXHRcdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHRcdC5zZXROYW1lKHNob3dTdHIpXG5cdFx0XHRcdC5hZGRFeHRyYUJ1dHRvbihidXR0b24gPT4ge1xuXHRcdFx0XHRcdGJ1dHRvbi5zZXRJY29uKFwiZ2VhclwiKVxuXHRcdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJFZGl0IHJ1bGVcIilcblx0XHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdFx0bmV3IEVkaXRDb252ZXJ0UnVsZU1vZGFsKHRoaXMuYXBwLCBSdWxlVHlwZS5kZWxldGUsIGJlZm9yZSwgYWZ0ZXIsIGFzeW5jIChuZXdfYmVmb3JlLCBuZXdfYWZ0ZXIpID0+IHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi51cGRhdGVVc2VyRGVsZXRlUnVsZShpLCBuZXdfYmVmb3JlLCBuZXdfYWZ0ZXIpO1xuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0XHR9KS5vcGVuKCk7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcblx0XHRcdFx0XHRidXR0b24uc2V0SWNvbihcInRyYXNoXCIpXG5cdFx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIlJlbW92ZSBydWxlXCIpXG5cdFx0XHRcdFx0XHQub25DbGljayhhc3luYyAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLmRlbGV0ZVVzZXJEZWxldGVSdWxlKGkpO1xuXHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9KTtcblx0XHR9XG5cblx0fVxuXG5cdGJ1aWxkVXNlckNvbnZlcnRSdWxlU2V0dGluZyhjb250YWluZXJFbDogSFRNTERldGFpbHNFbGVtZW50KXtcblx0XHRjb250YWluZXJFbC5lbXB0eSgpO1xuICAgICAgICBjb250YWluZXJFbC5vbnRvZ2dsZSA9IGFzeW5jICgpID0+IHtcblx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJDdnRSdWxlU2V0dGluZ3NPcGVuID0gY29udGFpbmVyRWwub3Blbjtcblx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICB9O1xuXHRcdGNvbnN0IHN1bW1hcnkgPSBjb250YWluZXJFbC5jcmVhdGVFbChcInN1bW1hcnlcIiwge2NsczogXCJlYXN5dHlwaW5nLW5lc3RlZC1zZXR0aW5nc1wifSk7XG5cdFx0c3VtbWFyeS5zZXRUZXh0KFwiXHU4MUVBXHU1QjlBXHU0RTQ5XHU3RjE2XHU4RjkxXHU4RjZDXHU2MzYyXHU4OUM0XHU1MjE5IChDdXN0b21pemUgQ29udmVydCBSdWxlKVwiKVxuXG5cdFx0Y29uc3QgY29udmVydFJ1bGVTZXR0aW5nID0gbmV3IFNldHRpbmcoY29udGFpbmVyRWwpO1xuXHRcdGNvbnZlcnRSdWxlU2V0dGluZ1xuXHRcdFx0LnNldE5hbWUoXCJDb252ZXJ0IFJ1bGVcIilcblx0XHRcdC5zZXREZXNjKFwiXHU4OUM0XHU1MjE5XHVGRjFBXHU3NTI4fFx1NEVFM1x1ODg2OFx1NTE0OVx1NjgwN1x1NEY0RFx1N0Y2RVx1RkYwQ1x1NUZDNVx1OTg3Qlx1NTMwNVx1NTQyQlx1NTE0OVx1NjgwN1x1MzAwMiBUaXBzOiBVc2luZyB8IHRvIGluZGljYXRlIHRoZSBjdXJzb3IgcG9zaXRpb24uXCIpXG5cblx0XHRjb25zdCBwYXR0ZXJuQmVmb3JlID0gbmV3IFRleHRBcmVhQ29tcG9uZW50KGNvbnZlcnRSdWxlU2V0dGluZy5jb250cm9sRWwpO1xuXHRcdHBhdHRlcm5CZWZvcmUuc2V0UGxhY2Vob2xkZXIoXCJCZWZvcmUgQ29udmVydFwiKTtcblxuXHRcdGNvbnN0IHBhdHRlcm5BZnRlciA9IG5ldyBUZXh0QXJlYUNvbXBvbmVudChjb252ZXJ0UnVsZVNldHRpbmcuY29udHJvbEVsKTtcblx0XHRwYXR0ZXJuQWZ0ZXIuc2V0UGxhY2Vob2xkZXIoXCJOZXcgUGF0dGVyblwiKTtcblxuXHRcdGNvbnZlcnRSdWxlU2V0dGluZ1xuXHRcdFx0LmFkZEJ1dHRvbigoYnV0dG9uKSA9PiB7XG5cdFx0XHRcdGJ1dHRvblxuXHRcdFx0XHRcdC5zZXRCdXR0b25UZXh0KFwiK1wiKVxuXHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiQWRkIFJ1bGVcIilcblx0XHRcdFx0XHQub25DbGljayhhc3luYyAoYnV0dG9uRWw6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0bGV0IGJlZm9yZSA9IHBhdHRlcm5CZWZvcmUuaW5wdXRFbC52YWx1ZTtcblx0XHRcdFx0XHRcdGxldCBhZnRlciA9IHBhdHRlcm5BZnRlci5pbnB1dEVsLnZhbHVlO1xuXHRcdFx0XHRcdFx0aWYgKGJlZm9yZSAmJiBhZnRlcikge1xuXHRcdFx0XHRcdFx0XHRsZXQgcmVnUnVsZSA9IC9cXHwvZztcblx0XHRcdFx0XHRcdFx0aWYoYmVmb3JlLnNlYXJjaChyZWdSdWxlKT09LTF8fGFmdGVyLnNlYXJjaChyZWdSdWxlKT09LTEpe1xuXHRcdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJJbmx2YWxpZCB0cmlnZ2VyLCBwYXR0ZXJuIG11c3QgY29udGFpbiBzeW1ib2wgXFx8IHdoaWNoIGluZGljYXRlIGN1cnNvciBwb3NpdGlvblwiKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5hZGRVc2VyQ29udmVydFJ1bGUoYmVmb3JlLCBhZnRlcik7XG5cdFx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwibWlzc2luZyBpbnB1dFwiKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdC5sZW5ndGg7IGkrKyl7XG5cdFx0XHRsZXQgYmVmb3JlID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3RbaV1bMF07XG5cdFx0XHRsZXQgYWZ0ZXIgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdFtpXVsxXTtcblx0XHRcdGxldCBzaG93U3RyID0gXCJcXFwiXCIgKyBzaG93U3RyaW5nKGJlZm9yZSkgKyBcIlxcXCIgIGF1dG8gY29udmVydCB0byBcXFwiXCIrIHNob3dTdHJpbmcoYWZ0ZXIpK1wiXFxcIlwiOyBcblx0XHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0XHQuc2V0TmFtZShzaG93U3RyKVxuXHRcdFx0XHQuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcblx0XHRcdFx0XHRidXR0b24uc2V0SWNvbihcImdlYXJcIilcblx0XHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiRWRpdCBydWxlXCIpXG5cdFx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdG5ldyBFZGl0Q29udmVydFJ1bGVNb2RhbCh0aGlzLmFwcCwgUnVsZVR5cGUuY29udmVydCwgYmVmb3JlLCBhZnRlciwgYXN5bmMgKG5ld19iZWZvcmUsIG5ld19hZnRlcikgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnVwZGF0ZVVzZXJDb252ZXJ0UnVsZShpLCBuZXdfYmVmb3JlLCBuZXdfYWZ0ZXIpO1xuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0XHR9KS5vcGVuKCk7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcblx0XHRcdFx0XHRidXR0b24uc2V0SWNvbihcInRyYXNoXCIpXG5cdFx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIlJlbW92ZSBydWxlXCIpXG5cdFx0XHRcdFx0XHQub25DbGljayhhc3luYyAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLmRlbGV0ZVVzZXJDb252ZXJ0UnVsZShpKTtcblx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cbn1cblxuXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGVzKGVsZW1lbnQ6IGFueSwgYXR0cmlidXRlczogYW55KSB7XG5cdGZvciAobGV0IGtleSBpbiBhdHRyaWJ1dGVzKSB7XG5cdFx0ZWxlbWVudC5zZXRBdHRyaWJ1dGUoa2V5LCBhdHRyaWJ1dGVzW2tleV0pO1xuXHR9XG59XG5cblxuZXhwb3J0IGNsYXNzIFNlbGVjdFJ1bGVFZGl0TW9kYWwgZXh0ZW5kcyBNb2RhbCB7XG5cdHRyaWdnZXI6IHN0cmluZztcblx0b2xkX2xlZnQ6IHN0cmluZztcblx0b2xkX3JpZ2h0OiBzdHJpbmc7XG5cdG5ld19sZWZ0OiBzdHJpbmc7XG5cdG5ld19yaWdodDogc3RyaW5nO1xuXHRvblN1Ym1pdDogKG5ld19sZWZ0OiBzdHJpbmcsIG5ld19yaWdodDpzdHJpbmcpID0+IHZvaWQ7XG5cblx0Y29uc3RydWN0b3IoYXBwOiBBcHAsIHRyaWdnZXI6IHN0cmluZywgbGVmdDogc3RyaW5nLCByaWdodDogc3RyaW5nLCBvblN1Ym1pdDogKG5ld19sZWZ0OiBzdHJpbmcsIG5ld19yaWdodDpzdHJpbmcpID0+IHZvaWQpIHtcblx0XHRzdXBlcihhcHApO1xuXHRcdHRoaXMudHJpZ2dlciA9IHRyaWdnZXI7XG5cdFx0dGhpcy5vbGRfbGVmdCA9IGxlZnQ7XG5cdFx0dGhpcy5vbGRfcmlnaHQgPSByaWdodDtcblx0XHR0aGlzLm5ld19sZWZ0ID0gbGVmdDtcblx0XHR0aGlzLm5ld19yaWdodCA9IHJpZ2h0O1xuXG5cdFx0dGhpcy5vblN1Ym1pdCA9IG9uU3VibWl0O1xuXHR9XG5cblx0b25PcGVuKCkge1xuXHRcdGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xuXG5cdFx0Y29udGVudEVsLmNyZWF0ZUVsKFwiaDFcIiwgeyB0ZXh0OiBcIkVkaXQgU2VsZWN0aW9uIFJlcGxhY2UgUnVsZVwiIH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGVudEVsKVxuXHRcdFx0LnNldE5hbWUoXCJUcmlnZ2VyXCIpXG5cdFx0XHQuYWRkVGV4dCgodGV4dCkgPT4ge1xuXHRcdFx0XHR0ZXh0LnNldFZhbHVlKHRoaXMudHJpZ2dlcik7XG5cdFx0XHRcdHRleHQuc2V0RGlzYWJsZWQodHJ1ZSk7XG5cdFx0XHR9KVxuXHRcdFxuXHRcdG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcblx0XHRcdC5zZXROYW1lKFwiTGVmdFwiKVxuXHRcdFx0LmFkZFRleHRBcmVhKCh0ZXh0KSA9PiB7XG5cdFx0XHRcdHRleHQuc2V0VmFsdWUodGhpcy5vbGRfbGVmdCk7XG5cdFx0XHRcdHRleHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5uZXdfbGVmdCA9IHZhbHVlXG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXHRcdG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcblx0XHRcdC5zZXROYW1lKFwiUmlnaHRcIilcblx0XHRcdC5hZGRUZXh0QXJlYSgodGV4dCkgPT4ge1xuXHRcdFx0XHR0ZXh0LnNldFZhbHVlKHRoaXMub2xkX3JpZ2h0KTtcblx0XHRcdFx0dGV4dC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLm5ld19yaWdodCA9IHZhbHVlXG5cdFx0XHRcdH0pXG5cdFx0XHR9KTtcblxuXG5cdFx0bmV3IFNldHRpbmcoY29udGVudEVsKVxuXHRcdFx0LmFkZEJ1dHRvbigoYnRuKSA9PlxuXHRcdFx0XHRidG5cblx0XHRcdFx0XHQuc2V0QnV0dG9uVGV4dChcIlVwZGF0ZVwiKVxuXHRcdFx0XHRcdC5zZXRDdGEoKVxuXHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuY2xvc2UoKTtcblx0XHRcdFx0XHRcdHRoaXMub25TdWJtaXQodGhpcy5uZXdfbGVmdCwgdGhpcy5uZXdfcmlnaHQpO1xuXHRcdFx0XHRcdH0pKTtcblx0fVxuXG5cdG9uQ2xvc2UoKSB7XG5cdFx0bGV0IHsgY29udGVudEVsIH0gPSB0aGlzO1xuXHRcdGNvbnRlbnRFbC5lbXB0eSgpO1xuXHR9XG59XG5cblxuXG5leHBvcnQgY2xhc3MgRWRpdENvbnZlcnRSdWxlTW9kYWwgZXh0ZW5kcyBNb2RhbCB7XG5cdHR5cGU6IFJ1bGVUeXBlO1xuXHRvbGRfYmVmb3JlOiBzdHJpbmc7XG5cdG9sZF9hZnRlcjogc3RyaW5nO1xuXHRuZXdfYmVmb3JlOiBzdHJpbmc7XG5cdG5ld19hZnRlcjogc3RyaW5nO1xuXHRvblN1Ym1pdDogKG5ld19iZWZvcmU6IHN0cmluZywgbmV3X2FmdGVyOnN0cmluZykgPT4gdm9pZDtcblxuXHRjb25zdHJ1Y3RvcihhcHA6IEFwcCwgdHlwZTogUnVsZVR5cGUsIGJlZm9yZTogc3RyaW5nLCBhZnRlcjogc3RyaW5nLCBvblN1Ym1pdDogKG5ld19iZWZvcmU6IHN0cmluZywgbmV3X2FmdGVyOnN0cmluZykgPT4gdm9pZCkge1xuXHRcdHN1cGVyKGFwcCk7XG5cdFx0dGhpcy50eXBlID0gdHlwZTtcblx0XHR0aGlzLm9sZF9iZWZvcmUgPSBiZWZvcmU7XG5cdFx0dGhpcy5vbGRfYWZ0ZXIgPSBhZnRlcjtcblx0XHR0aGlzLm5ld19iZWZvcmUgPSBiZWZvcmU7XG5cdFx0dGhpcy5uZXdfYWZ0ZXIgPSBhZnRlcjtcblxuXHRcdHRoaXMub25TdWJtaXQgPSBvblN1Ym1pdDtcblx0fVxuXG5cdG9uT3BlbigpIHtcblx0XHRjb25zdCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcblxuXHRcdGNvbnRlbnRFbC5jcmVhdGVFbChcImgxXCIsIHsgdGV4dDogXCJFZGl0IFwiICsgdGhpcy50eXBlfSk7XG5cdFx0XG5cdFx0bmV3IFNldHRpbmcoY29udGVudEVsKVxuXHRcdFx0LnNldE5hbWUoXCJPbGQgUGF0dGVyblwiKVxuXHRcdFx0LmFkZFRleHRBcmVhKCh0ZXh0KSA9PiB7XG5cdFx0XHRcdHRleHQuc2V0VmFsdWUodGhpcy5vbGRfYmVmb3JlKTtcblx0XHRcdFx0dGV4dC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLm5ld19iZWZvcmUgPSB2YWx1ZVxuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblx0XHRuZXcgU2V0dGluZyhjb250ZW50RWwpXG5cdFx0XHQuc2V0TmFtZShcIk5ldyBQYXR0ZXJuXCIpXG5cdFx0XHQuYWRkVGV4dEFyZWEoKHRleHQpID0+IHtcblx0XHRcdFx0dGV4dC5zZXRWYWx1ZSh0aGlzLm9sZF9hZnRlcik7XG5cdFx0XHRcdHRleHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5uZXdfYWZ0ZXIgPSB2YWx1ZVxuXHRcdFx0XHR9KVxuXHRcdFx0fSk7XG5cblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcblx0XHRcdC5hZGRCdXR0b24oKGJ0bikgPT5cblx0XHRcdFx0YnRuXG5cdFx0XHRcdFx0LnNldEJ1dHRvblRleHQoXCJVcGRhdGVcIilcblx0XHRcdFx0XHQuc2V0Q3RhKClcblx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAodGhpcy5jaGVja0NvbnZlcnRQYXR0ZXJuU3RyaW5nKHRoaXMubmV3X2JlZm9yZSwgdGhpcy5uZXdfYWZ0ZXIpKVxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0aGlzLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMub25TdWJtaXQodGhpcy5uZXdfYmVmb3JlLCB0aGlzLm5ld19hZnRlcik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNle1xuXHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwiSW52YWxpZCBwYXR0ZXJuIHN0cmluZyFcIik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHR9KSk7XG5cdH1cblxuXHRjaGVja0NvbnZlcnRQYXR0ZXJuU3RyaW5nKGJlZm9yZTogc3RyaW5nLCBhZnRlcjpzdHJpbmcpOmJvb2xlYW57XG5cdFx0bGV0IHJlZ1J1bGUgPSAvXFx8L2c7XG5cdFx0aWYoYmVmb3JlLnNlYXJjaChyZWdSdWxlKT09LTEgfHwgYWZ0ZXIuc2VhcmNoKHJlZ1J1bGUpPT0tMSkgcmV0dXJuIGZhbHNlO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0b25DbG9zZSgpIHtcblx0XHRsZXQgeyBjb250ZW50RWwgfSA9IHRoaXM7XG5cdFx0Y29udGVudEVsLmVtcHR5KCk7XG5cdH1cbn1cblxuIiwgImltcG9ydCB7IGVuc3VyZVN5bnRheFRyZWUsIHN5bnRheFRyZWUgfSBmcm9tIFwiQGNvZGVtaXJyb3IvbGFuZ3VhZ2VcIjtcbmltcG9ydCB7IEVkaXRvclZpZXcgfSBmcm9tICdAY29kZW1pcnJvci92aWV3JztcbmltcG9ydCB7IEVkaXRvclN0YXRlIH0gZnJvbSAnQGNvZGVtaXJyb3Ivc3RhdGUnO1xuZXhwb3J0IGludGVyZmFjZSBDb2RlQmxvY2tJbmZvIHtcbiAgICBzdGFydF9wb3M6IG51bWJlcjtcbiAgICBlbmRfcG9zOiBudW1iZXI7XG4gICAgY29kZV9zdGFydF9wb3M6IG51bWJlcjtcbiAgICBjb2RlX2VuZF9wb3M6IG51bWJlcjtcbiAgICBsYW5ndWFnZTogc3RyaW5nO1xuICAgIGluZGVudDogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDb2RlQmxvY2tJblBvcyhzdGF0ZTogRWRpdG9yU3RhdGUsIHBvczogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgbGV0IGNvZGVCbG9ja0luZm9zID0gZ2V0Q29kZUJsb2Nrc0luZm9zKHN0YXRlKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvZGVCbG9ja0luZm9zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChwb3MgPj0gY29kZUJsb2NrSW5mb3NbaV0uc3RhcnRfcG9zICYmIHBvcyA8PSBjb2RlQmxvY2tJbmZvc1tpXS5lbmRfcG9zKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2RlQmxvY2tJbmZvSW5Qb3Moc3RhdGU6IEVkaXRvclN0YXRlLCBwb3M6IG51bWJlcik6IENvZGVCbG9ja0luZm8gfCBudWxsIHtcbiAgICBsZXQgY29kZUJsb2NrSW5mb3MgPSBnZXRDb2RlQmxvY2tzSW5mb3Moc3RhdGUpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29kZUJsb2NrSW5mb3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHBvcyA+PSBjb2RlQmxvY2tJbmZvc1tpXS5zdGFydF9wb3MgJiYgcG9zIDw9IGNvZGVCbG9ja0luZm9zW2ldLmVuZF9wb3MpIHtcbiAgICAgICAgICAgIHJldHVybiBjb2RlQmxvY2tJbmZvc1tpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdENvZGVCbG9ja0luUG9zKHZpZXc6IEVkaXRvclZpZXcsIHBvczogbnVtYmVyKTpib29sZWFuIHtcbiAgICBsZXQgY29kZUJsb2NrSW5mb3MgPSBnZXRDb2RlQmxvY2tzSW5mb3Modmlldy5zdGF0ZSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2RlQmxvY2tJbmZvcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAocG9zID49IGNvZGVCbG9ja0luZm9zW2ldLnN0YXJ0X3BvcyAmJiBwb3MgPD0gY29kZUJsb2NrSW5mb3NbaV0uZW5kX3Bvcykge1xuICAgICAgICAgICAgdmlldy5kaXNwYXRjaCh7XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgIGFuY2hvcjogY29kZUJsb2NrSW5mb3NbaV0uY29kZV9zdGFydF9wb3MsXG4gICAgICAgICAgICAgICAgICAgIGhlYWQ6IGNvZGVCbG9ja0luZm9zW2ldLmNvZGVfZW5kX3Bvc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29kZUJsb2Nrc0luZm9zKHN0YXRlOiBFZGl0b3JTdGF0ZSk6IENvZGVCbG9ja0luZm9bXXtcbiAgICBsZXQgaXNDb2RlQmxvY2tCZWdpbiA9IGZhbHNlO1xuICAgIGxldCBjb2RlQmxvY2tJbmZvczogQ29kZUJsb2NrSW5mb1tdID0gW107XG4gICAgbGV0IGN1ckNvZGVCbG9ja0luZm86IENvZGVCbG9ja0luZm8gfCBudWxsID0gbnVsbDtcbiAgICBjb25zdCBkb2MgPSBzdGF0ZS5kb2M7XG5cbiAgICBzeW50YXhUcmVlKHN0YXRlKS5pdGVyYXRlKHtcbiAgICAgICAgZW50ZXIobm9kZSkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZU5hbWUgPSBub2RlLm5hbWU7XG4gICAgICAgICAgICBjb25zdCBub2RlRnJvbSA9IG5vZGUuZnJvbTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVUbyA9IG5vZGUudG87XG4gICAgICAgICAgICBjb25zdCBub2RlVGV4dCA9IHN0YXRlLnNsaWNlRG9jKG5vZGVGcm9tLCBub2RlVG8pO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2cobm9kZU5hbWUsIG5vZGVGcm9tLCBub2RlVG8sIG5vZGVUZXh0KTtcbiAgICAgICAgICAgIGlmIChub2RlTmFtZS5pbmNsdWRlcygnY29kZWJsb2NrLWJlZ2luJykpIHtcbiAgICAgICAgICAgICAgICBpc0NvZGVCbG9ja0JlZ2luID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBsZXQgc3RhcnRfcG9zID0gbm9kZUZyb20gKyBub2RlVGV4dC5pbmRleE9mKCdgJyk7XG4gICAgICAgICAgICAgICAgbGV0IGluZGVudCA9IHN0YXJ0X3BvcyAtIHN0YXRlLmRvYy5saW5lQXQoc3RhcnRfcG9zKS5mcm9tO1xuICAgICAgICAgICAgICAgIGxldCBsYW5ndWFnZSA9IG5vZGVUZXh0LnRyaW0oKS5zdWJzdHJpbmcoMyk7XG4gICAgICAgICAgICAgICAgY3VyQ29kZUJsb2NrSW5mbyA9IHtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRfcG9zOiBzdGFydF9wb3MsXG4gICAgICAgICAgICAgICAgICAgIGVuZF9wb3M6IC0xLFxuICAgICAgICAgICAgICAgICAgICBjb2RlX3N0YXJ0X3BvczogLTEsXG4gICAgICAgICAgICAgICAgICAgIGNvZGVfZW5kX3BvczogLTEsXG4gICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgaW5kZW50OiBpbmRlbnRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVOYW1lLmluY2x1ZGVzKCdjb2RlYmxvY2stZW5kJykpIHtcbiAgICAgICAgICAgICAgICBpc0NvZGVCbG9ja0JlZ2luID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKGN1ckNvZGVCbG9ja0luZm8gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjdXJDb2RlQmxvY2tJbmZvLmVuZF9wb3MgPSBub2RlVG87XG4gICAgICAgICAgICAgICAgICAgIGlmIChkb2MubGluZUF0KGN1ckNvZGVCbG9ja0luZm8uc3RhcnRfcG9zKS5udW1iZXIgPT1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRvYy5saW5lQXQoY3VyQ29kZUJsb2NrSW5mby5lbmRfcG9zKS5udW1iZXIgLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJDb2RlQmxvY2tJbmZvLmNvZGVfc3RhcnRfcG9zID0gZG9jLmxpbmVBdChjdXJDb2RlQmxvY2tJbmZvLnN0YXJ0X3BvcykudG87XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJDb2RlQmxvY2tJbmZvLmNvZGVfZW5kX3BvcyA9IGRvYy5saW5lQXQoY3VyQ29kZUJsb2NrSW5mby5zdGFydF9wb3MpLnRvO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvZGVfc3RhcnRfbGluZSA9IGRvYy5saW5lQXQoY3VyQ29kZUJsb2NrSW5mby5zdGFydF9wb3MpLm51bWJlciArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29kZV9lbmRfbGluZSA9IGRvYy5saW5lQXQoY3VyQ29kZUJsb2NrSW5mby5lbmRfcG9zKS5udW1iZXIgLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VyQ29kZUJsb2NrSW5mby5jb2RlX3N0YXJ0X3BvcyA9IGRvYy5saW5lKGNvZGVfc3RhcnRfbGluZSkuZnJvbSArIGN1ckNvZGVCbG9ja0luZm8uaW5kZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VyQ29kZUJsb2NrSW5mby5jb2RlX2VuZF9wb3MgPSBkb2MubGluZShjb2RlX2VuZF9saW5lKS50bztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb2RlQmxvY2tJbmZvcy5wdXNoKGN1ckNvZGVCbG9ja0luZm8pO1xuICAgICAgICAgICAgICAgICAgICBjdXJDb2RlQmxvY2tJbmZvID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChpc0NvZGVCbG9ja0JlZ2luICYmIGN1ckNvZGVCbG9ja0luZm8pIHtcbiAgICAgICAgY3VyQ29kZUJsb2NrSW5mby5lbmRfcG9zID0gZG9jLmxlbmd0aDtcbiAgICAgICAgY3VyQ29kZUJsb2NrSW5mby5jb2RlX2VuZF9wb3MgPSBkb2MubGVuZ3RoO1xuICAgICAgICBpZiAoZG9jLmxpbmVzID4gZG9jLmxpbmVBdChjdXJDb2RlQmxvY2tJbmZvLnN0YXJ0X3BvcykubnVtYmVyKSB7XG4gICAgICAgICAgICBsZXQgc3RhcnRfbGluZSA9IGRvYy5saW5lQXQoY3VyQ29kZUJsb2NrSW5mby5zdGFydF9wb3MpLm51bWJlciArIDE7XG4gICAgICAgICAgICBsZXQgY29kZV9zdGFydF9wb3MgPSBkb2MubGluZShzdGFydF9saW5lKS5mcm9tICsgY3VyQ29kZUJsb2NrSW5mby5pbmRlbnQ7XG4gICAgICAgICAgICBjdXJDb2RlQmxvY2tJbmZvLmNvZGVfc3RhcnRfcG9zID0gY29kZV9zdGFydF9wb3MgPCBkb2MubGVuZ3RoID8gY29kZV9zdGFydF9wb3MgOlxuICAgICAgICAgICAgICAgIGRvYy5saW5lQXQoY3VyQ29kZUJsb2NrSW5mby5zdGFydF9wb3MgKyAxKS5mcm9tIDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGN1ckNvZGVCbG9ja0luZm8uY29kZV9zdGFydF9wb3MgPSBkb2MubGluZUF0KGN1ckNvZGVCbG9ja0luZm8uc3RhcnRfcG9zKS50bztcbiAgICAgICAgfVxuICAgICAgICBjb2RlQmxvY2tJbmZvcy5wdXNoKGN1ckNvZGVCbG9ja0luZm8pO1xuICAgICAgICBjdXJDb2RlQmxvY2tJbmZvID0gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNvZGVCbG9ja0luZm9zO1xufVxuXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsdUJBQWtGO0FBQ2xGLG1CQUErRTs7O0FDRC9FLHNCQUFzQjs7O0FDSXRCLElBQUksUUFBUTtBQUVMLElBQU0sUUFBTSxDQUFDLFlBQWtCLG1CQUF5QjtBQUMzRCxNQUFJLE9BQU87QUFDUCxZQUFRLElBQUksU0FBUyxHQUFHLGNBQWM7QUFBQSxFQUMxQztBQUNKO0FBS08scUJBQXFCLEtBQVUsUUFBZTtBQUNwRCxNQUFJLE9BQU8sSUFBSSxPQUFPLE1BQU07QUFDNUIsU0FBTyxFQUFDLE1BQU0sS0FBSyxTQUFTLEdBQUcsSUFBSSxTQUFTLEtBQUssS0FBSTtBQUN0RDtBQUVPLDZCQUE2QixJQUF5QjtBQUM1RCxNQUFJLG1CQUE0QjtBQUFBLElBQUM7QUFBQSxJQUFxQjtBQUFBLElBQ2hEO0FBQUEsSUFBc0I7QUFBQSxJQUFjO0FBQUEsSUFBZTtBQUFBLElBQWM7QUFBQSxJQUFrQjtBQUFBLElBQ25GO0FBQUEsSUFBb0I7QUFBQSxJQUFrQjtBQUFBLElBQW1CO0FBQUEsSUFBYztBQUFBLElBQ3ZFO0FBQUEsSUFDQTtBQUFBLElBQVE7QUFBQSxJQUNSO0FBQUEsRUFBZ0I7QUFDdEIsV0FBUyxJQUFZLEdBQUcsSUFBSSxpQkFBaUIsUUFBUSxLQUNyRDtBQUNDLFFBQUksR0FBRyxZQUFZLGlCQUFpQixFQUFFO0FBQ3JDLGFBQU8saUJBQWlCO0FBQUEsRUFDMUI7QUFDQSxTQUFPO0FBQ1I7QUFFTywyQkFBMkIsR0FBcUI7QUFDdEQsTUFBSSxZQUFZLEVBQUUsUUFBUSxHQUFHO0FBQzdCLE1BQUksT0FBTyxFQUFFLFVBQVUsR0FBRyxTQUFTO0FB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 diff --git a/.obsidian/plugins/easy-typing-obsidian/manifest.json b/.obsidian/plugins/easy-typing-obsidian/manifest.json index 4836ec7..8853682 100644 --- a/.obsidian/plugins/easy-typing-obsidian/manifest.json +++ b/.obsidian/plugins/easy-typing-obsidian/manifest.json @@ -1,7 +1,7 @@ { "id": "easy-typing-obsidian", "name": "Easy Typing", - "version": "5.1.10", + "version": "5.3.3", "minAppVersion": "0.15.0", "description": "Autoformat your note as typing.(Auto captalize, autospace)", "author": "yaozhuwa", diff --git a/.obsidian/plugins/obsidian42-brat/data.json b/.obsidian/plugins/obsidian42-brat/data.json new file mode 100644 index 0000000..24b2db0 --- /dev/null +++ b/.obsidian/plugins/obsidian42-brat/data.json @@ -0,0 +1,16 @@ +{ + "pluginList": [ + "Yaozhuwa/AttachFlow" + ], + "pluginSubListFrozenVersion": [], + "themesList": [], + "updateAtStartup": true, + "updateThemesAtStartup": true, + "enableAfterInstall": true, + "loggingEnabled": false, + "loggingPath": "BRAT-log", + "loggingVerboseEnabled": false, + "debuggingMode": false, + "notificationsEnabled": true, + "personalAccessToken": "" +} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian42-brat/main.js b/.obsidian/plugins/obsidian42-brat/main.js new file mode 100644 index 0000000..d576bdb --- /dev/null +++ b/.obsidian/plugins/obsidian42-brat/main.js @@ -0,0 +1,2419 @@ +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +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 __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// node_modules/obsidian-daily-notes-interface/dist/main.js +var require_main = __commonJS({ + "node_modules/obsidian-daily-notes-interface/dist/main.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var obsidian = require("obsidian"); + var DEFAULT_DAILY_NOTE_FORMAT = "YYYY-MM-DD"; + var DEFAULT_WEEKLY_NOTE_FORMAT = "gggg-[W]ww"; + var DEFAULT_MONTHLY_NOTE_FORMAT = "YYYY-MM"; + var DEFAULT_QUARTERLY_NOTE_FORMAT = "YYYY-[Q]Q"; + var DEFAULT_YEARLY_NOTE_FORMAT = "YYYY"; + function shouldUsePeriodicNotesSettings(periodicity) { + var _a, _b; + const periodicNotes = window.app.plugins.getPlugin("periodic-notes"); + return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a[periodicity]) == null ? void 0 : _b.enabled); + } + function getDailyNoteSettings2() { + var _a, _b, _c, _d; + try { + const { internalPlugins, plugins } = window.app; + if (shouldUsePeriodicNotesSettings("daily")) { + const { format: format2, folder: folder2, template: template2 } = ((_b = (_a = plugins.getPlugin("periodic-notes")) == null ? void 0 : _a.settings) == null ? void 0 : _b.daily) || {}; + return { + format: format2 || DEFAULT_DAILY_NOTE_FORMAT, + folder: (folder2 == null ? void 0 : folder2.trim()) || "", + template: (template2 == null ? void 0 : template2.trim()) || "" + }; + } + const { folder, format, template } = ((_d = (_c = internalPlugins.getPluginById("daily-notes")) == null ? void 0 : _c.instance) == null ? void 0 : _d.options) || {}; + return { + format: format || DEFAULT_DAILY_NOTE_FORMAT, + folder: (folder == null ? void 0 : folder.trim()) || "", + template: (template == null ? void 0 : template.trim()) || "" + }; + } catch (err) { + console.info("No custom daily note settings found!", err); + } + } + function getWeeklyNoteSettings() { + var _a, _b, _c, _d, _e, _f, _g; + try { + const pluginManager = window.app.plugins; + const calendarSettings = (_a = pluginManager.getPlugin("calendar")) == null ? void 0 : _a.options; + const periodicNotesSettings = (_c = (_b = pluginManager.getPlugin("periodic-notes")) == null ? void 0 : _b.settings) == null ? void 0 : _c.weekly; + if (shouldUsePeriodicNotesSettings("weekly")) { + return { + format: periodicNotesSettings.format || DEFAULT_WEEKLY_NOTE_FORMAT, + folder: ((_d = periodicNotesSettings.folder) == null ? void 0 : _d.trim()) || "", + template: ((_e = periodicNotesSettings.template) == null ? void 0 : _e.trim()) || "" + }; + } + const settings = calendarSettings || {}; + return { + format: settings.weeklyNoteFormat || DEFAULT_WEEKLY_NOTE_FORMAT, + folder: ((_f = settings.weeklyNoteFolder) == null ? void 0 : _f.trim()) || "", + template: ((_g = settings.weeklyNoteTemplate) == null ? void 0 : _g.trim()) || "" + }; + } catch (err) { + console.info("No custom weekly note settings found!", err); + } + } + function getMonthlyNoteSettings() { + var _a, _b, _c, _d; + const pluginManager = window.app.plugins; + try { + const settings = shouldUsePeriodicNotesSettings("monthly") && ((_b = (_a = pluginManager.getPlugin("periodic-notes")) == null ? void 0 : _a.settings) == null ? void 0 : _b.monthly) || {}; + return { + format: settings.format || DEFAULT_MONTHLY_NOTE_FORMAT, + folder: ((_c = settings.folder) == null ? void 0 : _c.trim()) || "", + template: ((_d = settings.template) == null ? void 0 : _d.trim()) || "" + }; + } catch (err) { + console.info("No custom monthly note settings found!", err); + } + } + function getQuarterlyNoteSettings() { + var _a, _b, _c, _d; + const pluginManager = window.app.plugins; + try { + const settings = shouldUsePeriodicNotesSettings("quarterly") && ((_b = (_a = pluginManager.getPlugin("periodic-notes")) == null ? void 0 : _a.settings) == null ? void 0 : _b.quarterly) || {}; + return { + format: settings.format || DEFAULT_QUARTERLY_NOTE_FORMAT, + folder: ((_c = settings.folder) == null ? void 0 : _c.trim()) || "", + template: ((_d = settings.template) == null ? void 0 : _d.trim()) || "" + }; + } catch (err) { + console.info("No custom quarterly note settings found!", err); + } + } + function getYearlyNoteSettings() { + var _a, _b, _c, _d; + const pluginManager = window.app.plugins; + try { + const settings = shouldUsePeriodicNotesSettings("yearly") && ((_b = (_a = pluginManager.getPlugin("periodic-notes")) == null ? void 0 : _a.settings) == null ? void 0 : _b.yearly) || {}; + return { + format: settings.format || DEFAULT_YEARLY_NOTE_FORMAT, + folder: ((_c = settings.folder) == null ? void 0 : _c.trim()) || "", + template: ((_d = settings.template) == null ? void 0 : _d.trim()) || "" + }; + } catch (err) { + console.info("No custom yearly note settings found!", err); + } + } + function join(...partSegments) { + let parts = []; + for (let i = 0, l = partSegments.length; i < l; i++) { + parts = parts.concat(partSegments[i].split("/")); + } + const newParts = []; + for (let i = 0, l = parts.length; i < l; i++) { + const part = parts[i]; + if (!part || part === ".") + continue; + else + newParts.push(part); + } + if (parts[0] === "") + newParts.unshift(""); + return newParts.join("/"); + } + function basename(fullPath) { + let base = fullPath.substring(fullPath.lastIndexOf("/") + 1); + if (base.lastIndexOf(".") != -1) + base = base.substring(0, base.lastIndexOf(".")); + return base; + } + async function ensureFolderExists(path) { + const dirs = path.replace(/\\/g, "/").split("/"); + dirs.pop(); + if (dirs.length) { + const dir = join(...dirs); + if (!window.app.vault.getAbstractFileByPath(dir)) { + await window.app.vault.createFolder(dir); + } + } + } + async function getNotePath(directory, filename) { + if (!filename.endsWith(".md")) { + filename += ".md"; + } + const path = obsidian.normalizePath(join(directory, filename)); + await ensureFolderExists(path); + return path; + } + async function getTemplateInfo(template) { + const { metadataCache, vault } = window.app; + const templatePath = obsidian.normalizePath(template); + if (templatePath === "/") { + return Promise.resolve(["", null]); + } + try { + const templateFile = metadataCache.getFirstLinkpathDest(templatePath, ""); + const contents = await vault.cachedRead(templateFile); + const IFoldInfo = window.app.foldManager.load(templateFile); + return [contents, IFoldInfo]; + } catch (err) { + console.error(`Failed to read the daily note template '${templatePath}'`, err); + new obsidian.Notice("Failed to read the daily note template"); + return ["", null]; + } + } + function getDateUID(date, granularity = "day") { + const ts = date.clone().startOf(granularity).format(); + return `${granularity}-${ts}`; + } + function removeEscapedCharacters(format) { + return format.replace(/\[[^\]]*\]/g, ""); + } + function isFormatAmbiguous(format, granularity) { + if (granularity === "week") { + const cleanFormat = removeEscapedCharacters(format); + return /w{1,2}/i.test(cleanFormat) && (/M{1,4}/.test(cleanFormat) || /D{1,4}/.test(cleanFormat)); + } + return false; + } + function getDateFromFile(file, granularity) { + return getDateFromFilename(file.basename, granularity); + } + function getDateFromPath(path, granularity) { + return getDateFromFilename(basename(path), granularity); + } + function getDateFromFilename(filename, granularity) { + const getSettings = { + day: getDailyNoteSettings2, + week: getWeeklyNoteSettings, + month: getMonthlyNoteSettings, + quarter: getQuarterlyNoteSettings, + year: getYearlyNoteSettings + }; + const format = getSettings[granularity]().format.split("/").pop(); + const noteDate = window.moment(filename, format, true); + if (!noteDate.isValid()) { + return null; + } + if (isFormatAmbiguous(format, granularity)) { + if (granularity === "week") { + const cleanFormat = removeEscapedCharacters(format); + if (/w{1,2}/i.test(cleanFormat)) { + return window.moment( + filename, + // If format contains week, remove day & month formatting + format.replace(/M{1,4}/g, "").replace(/D{1,4}/g, ""), + false + ); + } + } + } + return noteDate; + } + var DailyNotesFolderMissingError = class extends Error { + }; + async function createDailyNote(date) { + const app = window.app; + const { vault } = app; + const moment2 = window.moment; + const { template, format, folder } = getDailyNoteSettings2(); + const [templateContents, IFoldInfo] = await getTemplateInfo(template); + const filename = date.format(format); + const normalizedPath = await getNotePath(folder, filename); + try { + const createdFile = await vault.create(normalizedPath, templateContents.replace(/{{\s*date\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, moment2().format("HH:mm")).replace(/{{\s*title\s*}}/gi, filename).replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now = moment2(); + const currentDate = date.clone().set({ + hour: now.get("hour"), + minute: now.get("minute"), + second: now.get("second") + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }).replace(/{{\s*yesterday\s*}}/gi, date.clone().subtract(1, "day").format(format)).replace(/{{\s*tomorrow\s*}}/gi, date.clone().add(1, "d").format(format))); + app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian.Notice("Unable to create new file."); + } + } + function getDailyNote(date, dailyNotes) { + var _a; + return (_a = dailyNotes[getDateUID(date, "day")]) != null ? _a : null; + } + function getAllDailyNotes() { + const { vault } = window.app; + const { folder } = getDailyNoteSettings2(); + const dailyNotesFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder)); + if (!dailyNotesFolder) { + throw new DailyNotesFolderMissingError("Failed to find daily notes folder"); + } + const dailyNotes = {}; + obsidian.Vault.recurseChildren(dailyNotesFolder, (note) => { + if (note instanceof obsidian.TFile) { + const date = getDateFromFile(note, "day"); + if (date) { + const dateString = getDateUID(date, "day"); + dailyNotes[dateString] = note; + } + } + }); + return dailyNotes; + } + var WeeklyNotesFolderMissingError = class extends Error { + }; + function getDaysOfWeek() { + const { moment: moment2 } = window; + let weekStart = moment2.localeData()._week.dow; + const daysOfWeek = [ + "sunday", + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday" + ]; + while (weekStart) { + daysOfWeek.push(daysOfWeek.shift()); + weekStart--; + } + return daysOfWeek; + } + function getDayOfWeekNumericalValue(dayOfWeekName) { + return getDaysOfWeek().indexOf(dayOfWeekName.toLowerCase()); + } + async function createWeeklyNote(date) { + const { vault } = window.app; + const { template, format, folder } = getWeeklyNoteSettings(); + const [templateContents, IFoldInfo] = await getTemplateInfo(template); + const filename = date.format(format); + const normalizedPath = await getNotePath(folder, filename); + try { + const createdFile = await vault.create(normalizedPath, templateContents.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now = window.moment(); + const currentDate = date.clone().set({ + hour: now.get("hour"), + minute: now.get("minute"), + second: now.get("second") + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }).replace(/{{\s*title\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")).replace(/{{\s*(sunday|monday|tuesday|wednesday|thursday|friday|saturday)\s*:(.*?)}}/gi, (_, dayOfWeek, momentFormat) => { + const day = getDayOfWeekNumericalValue(dayOfWeek); + return date.weekday(day).format(momentFormat.trim()); + })); + window.app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian.Notice("Unable to create new file."); + } + } + function getWeeklyNote(date, weeklyNotes) { + var _a; + return (_a = weeklyNotes[getDateUID(date, "week")]) != null ? _a : null; + } + function getAllWeeklyNotes() { + const weeklyNotes = {}; + if (!appHasWeeklyNotesPluginLoaded()) { + return weeklyNotes; + } + const { vault } = window.app; + const { folder } = getWeeklyNoteSettings(); + const weeklyNotesFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder)); + if (!weeklyNotesFolder) { + throw new WeeklyNotesFolderMissingError("Failed to find weekly notes folder"); + } + obsidian.Vault.recurseChildren(weeklyNotesFolder, (note) => { + if (note instanceof obsidian.TFile) { + const date = getDateFromFile(note, "week"); + if (date) { + const dateString = getDateUID(date, "week"); + weeklyNotes[dateString] = note; + } + } + }); + return weeklyNotes; + } + var MonthlyNotesFolderMissingError = class extends Error { + }; + async function createMonthlyNote(date) { + const { vault } = window.app; + const { template, format, folder } = getMonthlyNoteSettings(); + const [templateContents, IFoldInfo] = await getTemplateInfo(template); + const filename = date.format(format); + const normalizedPath = await getNotePath(folder, filename); + try { + const createdFile = await vault.create(normalizedPath, templateContents.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now = window.moment(); + const currentDate = date.clone().set({ + hour: now.get("hour"), + minute: now.get("minute"), + second: now.get("second") + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }).replace(/{{\s*date\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi, filename)); + window.app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian.Notice("Unable to create new file."); + } + } + function getMonthlyNote(date, monthlyNotes) { + var _a; + return (_a = monthlyNotes[getDateUID(date, "month")]) != null ? _a : null; + } + function getAllMonthlyNotes() { + const monthlyNotes = {}; + if (!appHasMonthlyNotesPluginLoaded()) { + return monthlyNotes; + } + const { vault } = window.app; + const { folder } = getMonthlyNoteSettings(); + const monthlyNotesFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder)); + if (!monthlyNotesFolder) { + throw new MonthlyNotesFolderMissingError("Failed to find monthly notes folder"); + } + obsidian.Vault.recurseChildren(monthlyNotesFolder, (note) => { + if (note instanceof obsidian.TFile) { + const date = getDateFromFile(note, "month"); + if (date) { + const dateString = getDateUID(date, "month"); + monthlyNotes[dateString] = note; + } + } + }); + return monthlyNotes; + } + var QuarterlyNotesFolderMissingError = class extends Error { + }; + async function createQuarterlyNote(date) { + const { vault } = window.app; + const { template, format, folder } = getQuarterlyNoteSettings(); + const [templateContents, IFoldInfo] = await getTemplateInfo(template); + const filename = date.format(format); + const normalizedPath = await getNotePath(folder, filename); + try { + const createdFile = await vault.create(normalizedPath, templateContents.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now = window.moment(); + const currentDate = date.clone().set({ + hour: now.get("hour"), + minute: now.get("minute"), + second: now.get("second") + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }).replace(/{{\s*date\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi, filename)); + window.app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian.Notice("Unable to create new file."); + } + } + function getQuarterlyNote(date, quarterly) { + var _a; + return (_a = quarterly[getDateUID(date, "quarter")]) != null ? _a : null; + } + function getAllQuarterlyNotes() { + const quarterly = {}; + if (!appHasQuarterlyNotesPluginLoaded()) { + return quarterly; + } + const { vault } = window.app; + const { folder } = getQuarterlyNoteSettings(); + const quarterlyFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder)); + if (!quarterlyFolder) { + throw new QuarterlyNotesFolderMissingError("Failed to find quarterly notes folder"); + } + obsidian.Vault.recurseChildren(quarterlyFolder, (note) => { + if (note instanceof obsidian.TFile) { + const date = getDateFromFile(note, "quarter"); + if (date) { + const dateString = getDateUID(date, "quarter"); + quarterly[dateString] = note; + } + } + }); + return quarterly; + } + var YearlyNotesFolderMissingError = class extends Error { + }; + async function createYearlyNote(date) { + const { vault } = window.app; + const { template, format, folder } = getYearlyNoteSettings(); + const [templateContents, IFoldInfo] = await getTemplateInfo(template); + const filename = date.format(format); + const normalizedPath = await getNotePath(folder, filename); + try { + const createdFile = await vault.create(normalizedPath, templateContents.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now = window.moment(); + const currentDate = date.clone().set({ + hour: now.get("hour"), + minute: now.get("minute"), + second: now.get("second") + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }).replace(/{{\s*date\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi, filename)); + window.app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian.Notice("Unable to create new file."); + } + } + function getYearlyNote(date, yearlyNotes) { + var _a; + return (_a = yearlyNotes[getDateUID(date, "year")]) != null ? _a : null; + } + function getAllYearlyNotes() { + const yearlyNotes = {}; + if (!appHasYearlyNotesPluginLoaded()) { + return yearlyNotes; + } + const { vault } = window.app; + const { folder } = getYearlyNoteSettings(); + const yearlyNotesFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder)); + if (!yearlyNotesFolder) { + throw new YearlyNotesFolderMissingError("Failed to find yearly notes folder"); + } + obsidian.Vault.recurseChildren(yearlyNotesFolder, (note) => { + if (note instanceof obsidian.TFile) { + const date = getDateFromFile(note, "year"); + if (date) { + const dateString = getDateUID(date, "year"); + yearlyNotes[dateString] = note; + } + } + }); + return yearlyNotes; + } + function appHasDailyNotesPluginLoaded() { + var _a, _b; + const { app } = window; + const dailyNotesPlugin = app.internalPlugins.plugins["daily-notes"]; + if (dailyNotesPlugin && dailyNotesPlugin.enabled) { + return true; + } + const periodicNotes = app.plugins.getPlugin("periodic-notes"); + return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a.daily) == null ? void 0 : _b.enabled); + } + function appHasWeeklyNotesPluginLoaded() { + var _a, _b; + const { app } = window; + if (app.plugins.getPlugin("calendar")) { + return true; + } + const periodicNotes = app.plugins.getPlugin("periodic-notes"); + return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a.weekly) == null ? void 0 : _b.enabled); + } + function appHasMonthlyNotesPluginLoaded() { + var _a, _b; + const { app } = window; + const periodicNotes = app.plugins.getPlugin("periodic-notes"); + return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a.monthly) == null ? void 0 : _b.enabled); + } + function appHasQuarterlyNotesPluginLoaded() { + var _a, _b; + const { app } = window; + const periodicNotes = app.plugins.getPlugin("periodic-notes"); + return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a.quarterly) == null ? void 0 : _b.enabled); + } + function appHasYearlyNotesPluginLoaded() { + var _a, _b; + const { app } = window; + const periodicNotes = app.plugins.getPlugin("periodic-notes"); + return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a.yearly) == null ? void 0 : _b.enabled); + } + function getPeriodicNoteSettings(granularity) { + const getSettings = { + day: getDailyNoteSettings2, + week: getWeeklyNoteSettings, + month: getMonthlyNoteSettings, + quarter: getQuarterlyNoteSettings, + year: getYearlyNoteSettings + }[granularity]; + return getSettings(); + } + function createPeriodicNote(granularity, date) { + const createFn = { + day: createDailyNote, + month: createMonthlyNote, + week: createWeeklyNote + }; + return createFn[granularity](date); + } + exports.DEFAULT_DAILY_NOTE_FORMAT = DEFAULT_DAILY_NOTE_FORMAT; + exports.DEFAULT_MONTHLY_NOTE_FORMAT = DEFAULT_MONTHLY_NOTE_FORMAT; + exports.DEFAULT_QUARTERLY_NOTE_FORMAT = DEFAULT_QUARTERLY_NOTE_FORMAT; + exports.DEFAULT_WEEKLY_NOTE_FORMAT = DEFAULT_WEEKLY_NOTE_FORMAT; + exports.DEFAULT_YEARLY_NOTE_FORMAT = DEFAULT_YEARLY_NOTE_FORMAT; + exports.appHasDailyNotesPluginLoaded = appHasDailyNotesPluginLoaded; + exports.appHasMonthlyNotesPluginLoaded = appHasMonthlyNotesPluginLoaded; + exports.appHasQuarterlyNotesPluginLoaded = appHasQuarterlyNotesPluginLoaded; + exports.appHasWeeklyNotesPluginLoaded = appHasWeeklyNotesPluginLoaded; + exports.appHasYearlyNotesPluginLoaded = appHasYearlyNotesPluginLoaded; + exports.createDailyNote = createDailyNote; + exports.createMonthlyNote = createMonthlyNote; + exports.createPeriodicNote = createPeriodicNote; + exports.createQuarterlyNote = createQuarterlyNote; + exports.createWeeklyNote = createWeeklyNote; + exports.createYearlyNote = createYearlyNote; + exports.getAllDailyNotes = getAllDailyNotes; + exports.getAllMonthlyNotes = getAllMonthlyNotes; + exports.getAllQuarterlyNotes = getAllQuarterlyNotes; + exports.getAllWeeklyNotes = getAllWeeklyNotes; + exports.getAllYearlyNotes = getAllYearlyNotes; + exports.getDailyNote = getDailyNote; + exports.getDailyNoteSettings = getDailyNoteSettings2; + exports.getDateFromFile = getDateFromFile; + exports.getDateFromPath = getDateFromPath; + exports.getDateUID = getDateUID; + exports.getMonthlyNote = getMonthlyNote; + exports.getMonthlyNoteSettings = getMonthlyNoteSettings; + exports.getPeriodicNoteSettings = getPeriodicNoteSettings; + exports.getQuarterlyNote = getQuarterlyNote; + exports.getQuarterlyNoteSettings = getQuarterlyNoteSettings; + exports.getTemplateInfo = getTemplateInfo; + exports.getWeeklyNote = getWeeklyNote; + exports.getWeeklyNoteSettings = getWeeklyNoteSettings; + exports.getYearlyNote = getYearlyNote; + exports.getYearlyNoteSettings = getYearlyNoteSettings; + } +}); + +// src/main.ts +var main_exports = {}; +__export(main_exports, { + default: () => ThePlugin +}); +module.exports = __toCommonJS(main_exports); +var import_obsidian11 = require("obsidian"); + +// src/ui/SettingsTab.ts +var import_obsidian5 = require("obsidian"); + +// src/features/themes.ts +var import_obsidian3 = require("obsidian"); + +// src/features/githubUtils.ts +var import_obsidian = require("obsidian"); +var GITHUB_RAW_USERCONTENT_PATH = "https://raw.githubusercontent.com/"; +var isPrivateRepo = async (repository, debugLogging = true, personalAccessToken = "") => { + const URL2 = `https://api.github.com/repos/${repository}`; + try { + const response = await (0, import_obsidian.request)({ + url: URL2, + headers: personalAccessToken ? { + Authorization: `Token ${personalAccessToken}` + } : {} + }); + const data = await JSON.parse(response); + return data.private; + } catch (e) { + if (debugLogging) + console.log("error in isPrivateRepo", URL2, e); + return false; + } +}; +var grabReleaseFileFromRepository = async (repository, version, fileName, debugLogging = true, personalAccessToken = "") => { + try { + const isPrivate = await isPrivateRepo(repository, debugLogging, personalAccessToken); + if (isPrivate) { + const URL2 = `https://api.github.com/repos/${repository}/releases`; + const response = await (0, import_obsidian.request)({ + url: URL2, + headers: { + Authorization: `Token ${personalAccessToken}` + } + }); + const data = await JSON.parse(response); + const release = data.find((release2) => release2.tag_name === version); + if (!release) { + return null; + } + const asset = release.assets.find( + (asset2) => asset2.name === fileName + ); + if (!asset) { + return null; + } + const download = await (0, import_obsidian.request)({ + url: asset.url, + headers: { + Authorization: `Token ${personalAccessToken}`, + Accept: "application/octet-stream" + } + }); + return download === "Not Found" || download === `{"error":"Not Found"}` ? null : download; + } else { + const URL2 = `https://github.com/${repository}/releases/download/${version}/${fileName}`; + const download = await (0, import_obsidian.request)({ + url: URL2, + headers: personalAccessToken ? { + Authorization: `Token ${personalAccessToken}` + } : {} + }); + return download === "Not Found" || download === `{"error":"Not Found"}` ? null : download; + } + } catch (error) { + if (debugLogging) + console.log("error in grabReleaseFileFromRepository", URL, error); + return null; + } +}; +var grabManifestJsonFromRepository = async (repositoryPath, rootManifest = true, debugLogging = true, personalAccessToken = "") => { + const manifestJsonPath = GITHUB_RAW_USERCONTENT_PATH + repositoryPath + (rootManifest ? "/HEAD/manifest.json" : "/HEAD/manifest-beta.json"); + if (debugLogging) + console.log("grabManifestJsonFromRepository manifestJsonPath", manifestJsonPath); + try { + const response = await (0, import_obsidian.request)({ + url: manifestJsonPath, + headers: personalAccessToken ? { + Authorization: `Token ${personalAccessToken}` + } : {} + }); + if (debugLogging) + console.log("grabManifestJsonFromRepository response", response); + return response === "404: Not Found" ? null : await JSON.parse(response); + } catch (error) { + if (error !== "Error: Request failed, status 404" && debugLogging) { + console.log( + `error in grabManifestJsonFromRepository for ${manifestJsonPath}`, + error + ); + } + return null; + } +}; +var grabCommmunityPluginList = async (debugLogging = true) => { + const pluginListUrl = `https://raw.githubusercontent.com/obsidianmd/obsidian-releases/HEAD/community-plugins.json`; + try { + const response = await (0, import_obsidian.request)({ url: pluginListUrl }); + return response === "404: Not Found" ? null : await JSON.parse(response); + } catch (error) { + if (debugLogging) + console.log("error in grabCommmunityPluginList", error); + return null; + } +}; +var grabCommmunityThemesList = async (debugLogging = true) => { + const themesUrl = `https://raw.githubusercontent.com/obsidianmd/obsidian-releases/HEAD/community-css-themes.json`; + try { + const response = await (0, import_obsidian.request)({ url: themesUrl }); + return response === "404: Not Found" ? null : await JSON.parse(response); + } catch (error) { + if (debugLogging) + console.log("error in grabCommmunityThemesList", error); + return null; + } +}; +var grabCommmunityThemeCssFile = async (repositoryPath, betaVersion = false, debugLogging) => { + const themesUrl = `https://raw.githubusercontent.com/${repositoryPath}/HEAD/theme${betaVersion ? "-beta" : ""}.css`; + try { + const response = await (0, import_obsidian.request)({ url: themesUrl }); + return response === "404: Not Found" ? null : response; + } catch (error) { + if (debugLogging) + console.log("error in grabCommmunityThemeCssFile", error); + return null; + } +}; +var grabCommmunityThemeManifestFile = async (repositoryPath, debugLogging = true) => { + const themesUrl = `https://raw.githubusercontent.com/${repositoryPath}/HEAD/manifest.json`; + try { + const response = await (0, import_obsidian.request)({ url: themesUrl }); + return response === "404: Not Found" ? null : response; + } catch (error) { + if (debugLogging) + console.log("error in grabCommmunityThemeManifestFile", error); + return null; + } +}; +var checksum = (str) => { + let sum = 0; + for (let i = 0; i < str.length; i++) { + sum += str.charCodeAt(i); + } + return sum; +}; +var checksumForString = (str) => { + return checksum(str).toString(); +}; +var grabChecksumOfThemeCssFile = async (repositoryPath, betaVersion, debugLogging) => { + const themeCss = await grabCommmunityThemeCssFile( + repositoryPath, + betaVersion, + debugLogging + ); + return themeCss ? checksumForString(themeCss) : "0"; +}; +var grabLastCommitInfoForFile = async (repositoryPath, path, debugLogging = true) => { + const url = `https://api.github.com/repos/${repositoryPath}/commits?path=${path}&page=1&per_page=1`; + try { + const response = await (0, import_obsidian.request)({ url }); + return response === "404: Not Found" ? null : JSON.parse(response); + } catch (error) { + if (debugLogging) + console.log("error in grabLastCommitInfoForAFile", error); + return null; + } +}; +var grabLastCommitDateForFile = async (repositoryPath, path) => { + var _a; + const test = await grabLastCommitInfoForFile(repositoryPath, path); + if (test && test.length > 0 && ((_a = test[0].commit.committer) == null ? void 0 : _a.date)) { + return test[0].commit.committer.date; + } else { + return ""; + } +}; + +// src/settings.ts +var DEFAULT_SETTINGS = { + pluginList: [], + pluginSubListFrozenVersion: [], + themesList: [], + updateAtStartup: true, + updateThemesAtStartup: true, + enableAfterInstall: true, + loggingEnabled: false, + loggingPath: "BRAT-log", + loggingVerboseEnabled: false, + debuggingMode: false, + notificationsEnabled: true, + personalAccessToken: "" +}; +function addBetaPluginToList(plugin, repositoryPath, specifyVersion = "") { + let save = false; + if (!plugin.settings.pluginList.contains(repositoryPath)) { + plugin.settings.pluginList.unshift(repositoryPath); + save = true; + } + if (specifyVersion !== "" && plugin.settings.pluginSubListFrozenVersion.filter((x) => x.repo === repositoryPath).length === 0) { + plugin.settings.pluginSubListFrozenVersion.unshift({ + repo: repositoryPath, + version: specifyVersion + }); + save = true; + } + if (save) { + void plugin.saveSettings(); + } +} +function existBetaPluginInList(plugin, repositoryPath) { + return plugin.settings.pluginList.contains(repositoryPath); +} +function addBetaThemeToList(plugin, repositoryPath, themeCss) { + const newTheme = { + repo: repositoryPath, + lastUpdate: checksumForString(themeCss) + }; + plugin.settings.themesList.unshift(newTheme); + void plugin.saveSettings(); +} +function existBetaThemeinInList(plugin, repositoryPath) { + const testIfThemExists = plugin.settings.themesList.find( + (t) => t.repo === repositoryPath + ); + return testIfThemExists ? true : false; +} +function updateBetaThemeLastUpdateChecksum(plugin, repositoryPath, checksum2) { + plugin.settings.themesList.forEach((t) => { + if (t.repo === repositoryPath) { + t.lastUpdate = checksum2; + void plugin.saveSettings(); + } + }); +} + +// src/utils/notifications.ts +var import_obsidian2 = require("obsidian"); +function toastMessage(plugin, msg, timeoutInSeconds = 10, contextMenuCallback) { + if (!plugin.settings.notificationsEnabled) + return; + const additionalInfo = contextMenuCallback ? import_obsidian2.Platform.isDesktop ? "(click=dismiss, right-click=Info)" : "(click=dismiss)" : ""; + const newNotice = new import_obsidian2.Notice( + `BRAT +${msg} +${additionalInfo}`, + timeoutInSeconds * 1e3 + ); + if (contextMenuCallback) + newNotice.noticeEl.oncontextmenu = () => { + contextMenuCallback(); + }; +} + +// src/utils/internetconnection.ts +async function isConnectedToInternet() { + try { + const online = await fetch("https://obsidian.md/?" + Math.random()); + return online.status >= 200 && online.status < 300; + } catch (err) { + return false; + } +} + +// src/features/themes.ts +var themeSave = async (plugin, cssGithubRepository, newInstall) => { + let themeCss = await grabCommmunityThemeCssFile( + cssGithubRepository, + true, + plugin.settings.debuggingMode + ); + if (!themeCss) + themeCss = await grabCommmunityThemeCssFile( + cssGithubRepository, + false, + plugin.settings.debuggingMode + ); + if (!themeCss) { + toastMessage( + plugin, + "There is no theme.css or theme-beta.css file in the root path of this repository, so there is no theme to install." + ); + return false; + } + const themeManifest = await grabCommmunityThemeManifestFile( + cssGithubRepository, + plugin.settings.debuggingMode + ); + if (!themeManifest) { + toastMessage( + plugin, + "There is no manifest.json file in the root path of this repository, so theme cannot be installed." + ); + return false; + } + const manifestInfo = await JSON.parse(themeManifest); + const themeTargetFolderPath = (0, import_obsidian3.normalizePath)(themesRootPath(plugin) + manifestInfo.name); + const { adapter } = plugin.app.vault; + if (!await adapter.exists(themeTargetFolderPath)) + await adapter.mkdir(themeTargetFolderPath); + await adapter.write((0, import_obsidian3.normalizePath)(themeTargetFolderPath + "/theme.css"), themeCss); + await adapter.write( + (0, import_obsidian3.normalizePath)(themeTargetFolderPath + "/manifest.json"), + themeManifest + ); + updateBetaThemeLastUpdateChecksum( + plugin, + cssGithubRepository, + checksumForString(themeCss) + ); + let msg = ``; + if (newInstall) { + addBetaThemeToList(plugin, cssGithubRepository, themeCss); + msg = `${manifestInfo.name} theme installed from ${cssGithubRepository}. `; + setTimeout(() => { + plugin.app.customCss.setTheme(manifestInfo.name); + }, 500); + } else { + msg = `${manifestInfo.name} theme updated from ${cssGithubRepository}.`; + } + void plugin.log(msg + `[Theme Info](https://github.com/${cssGithubRepository})`, false); + toastMessage(plugin, msg, 20, () => { + window.open(`https://github.com/${cssGithubRepository}`); + }); + return true; +}; +var themesCheckAndUpdates = async (plugin, showInfo) => { + if (!await isConnectedToInternet()) { + console.log("BRAT: No internet detected."); + return; + } + let newNotice; + const msg1 = `Checking for beta theme updates STARTED`; + await plugin.log(msg1, true); + if (showInfo && plugin.settings.notificationsEnabled) + newNotice = new import_obsidian3.Notice(`BRAT +${msg1}`, 3e4); + for (const t of plugin.settings.themesList) { + let lastUpdateOnline = await grabChecksumOfThemeCssFile( + t.repo, + true, + plugin.settings.debuggingMode + ); + if (lastUpdateOnline === "0") + lastUpdateOnline = await grabChecksumOfThemeCssFile( + t.repo, + false, + plugin.settings.debuggingMode + ); + console.log("BRAT: lastUpdateOnline", lastUpdateOnline); + if (lastUpdateOnline !== t.lastUpdate) + await themeSave(plugin, t.repo, false); + } + const msg2 = `Checking for beta theme updates COMPLETED`; + (async () => { + await plugin.log(msg2, true); + })(); + if (showInfo) { + if (plugin.settings.notificationsEnabled && newNotice) + newNotice.hide(); + toastMessage(plugin, msg2); + } +}; +var themeDelete = (plugin, cssGithubRepository) => { + plugin.settings.themesList = plugin.settings.themesList.filter( + (t) => t.repo !== cssGithubRepository + ); + void plugin.saveSettings(); + const msg = `Removed ${cssGithubRepository} from BRAT themes list and will no longer be updated. However, the theme files still exist in the vault. To remove them, go into Settings > Appearance and remove the theme.`; + void plugin.log(msg, true); + toastMessage(plugin, msg); +}; +var themesRootPath = (plugin) => { + return (0, import_obsidian3.normalizePath)(plugin.app.vault.configDir + "/themes") + "/"; +}; + +// src/ui/AddNewTheme.ts +var import_obsidian4 = require("obsidian"); + +// src/ui/Promotional.ts +var promotionalLinks = (containerEl, settingsTab = true) => { + const linksDiv = containerEl.createEl("div"); + linksDiv.style.float = "right"; + if (!settingsTab) { + linksDiv.style.padding = "10px"; + linksDiv.style.paddingLeft = "15px"; + linksDiv.style.paddingRight = "15px"; + } else { + linksDiv.style.padding = "15px"; + linksDiv.style.paddingLeft = "15px"; + linksDiv.style.paddingRight = "15px"; + linksDiv.style.marginLeft = "15px"; + } + const twitterSpan = linksDiv.createDiv("coffee"); + twitterSpan.addClass("ex-twitter-span"); + twitterSpan.style.paddingLeft = "10px"; + const captionText = twitterSpan.createDiv(); + captionText.innerText = "Learn more about my work at:"; + twitterSpan.appendChild(captionText); + const twitterLink = twitterSpan.createEl("a", { href: "https://tfthacker.com" }); + twitterLink.innerText = "https://tfthacker.com"; + return linksDiv; +}; + +// src/ui/AddNewTheme.ts +var AddNewTheme = class extends import_obsidian4.Modal { + constructor(plugin, openSettingsTabAfterwards = false) { + super(plugin.app); + this.plugin = plugin; + this.address = ""; + this.openSettingsTabAfterwards = openSettingsTabAfterwards; + } + async submitForm() { + if (this.address === "") + return; + const scrubbedAddress = this.address.replace("https://github.com/", ""); + if (existBetaThemeinInList(this.plugin, scrubbedAddress)) { + toastMessage(this.plugin, `This theme is already in the list for beta testing`, 10); + return; + } + if (await themeSave(this.plugin, scrubbedAddress, true)) { + this.close(); + } + } + onOpen() { + this.contentEl.createEl("h4", { text: "Github repository for beta theme:" }); + this.contentEl.createEl("form", {}, (formEl) => { + formEl.addClass("brat-modal"); + new import_obsidian4.Setting(formEl).addText((textEl) => { + textEl.setPlaceholder( + "Repository (example: https://github.com/GitubUserName/repository-name" + ); + textEl.setValue(this.address); + textEl.onChange((value) => { + this.address = value.trim(); + }); + textEl.inputEl.addEventListener("keydown", (e) => { + if (e.key === "Enter" && this.address !== " ") { + e.preventDefault(); + void this.submitForm(); + } + }); + textEl.inputEl.style.width = "100%"; + window.setTimeout(() => { + const title = document.querySelector(".setting-item-info"); + if (title) + title.remove(); + textEl.inputEl.focus(); + }, 10); + }); + formEl.createDiv("modal-button-container", (buttonContainerEl) => { + buttonContainerEl.createEl("button", { attr: { type: "button" }, text: "Never mind" }).addEventListener("click", () => { + this.close(); + }); + buttonContainerEl.createEl("button", { + attr: { type: "submit" }, + cls: "mod-cta", + text: "Add Theme" + }); + }); + const newDiv = formEl.createDiv(); + newDiv.style.borderTop = "1px solid #ccc"; + newDiv.style.marginTop = "30px"; + const byTfThacker = newDiv.createSpan(); + byTfThacker.innerHTML = "BRAT by TFTHacker"; + byTfThacker.style.fontStyle = "italic"; + newDiv.appendChild(byTfThacker); + promotionalLinks(newDiv, false); + window.setTimeout(() => { + const title = formEl.querySelectorAll(".brat-modal .setting-item-info"); + title.forEach((titleEl) => { + titleEl.remove(); + }); + }, 50); + formEl.addEventListener("submit", (e) => { + e.preventDefault(); + if (this.address !== "") + void this.submitForm(); + }); + }); + } + onClose() { + if (this.openSettingsTabAfterwards) { + this.plugin.app.setting.open(); + this.plugin.app.setting.openTabById(this.plugin.APP_ID); + } + } +}; + +// src/ui/SettingsTab.ts +var createLink = (githubResource, optionalText) => { + const newLink = new DocumentFragment(); + const linkElement = document.createElement("a"); + linkElement.textContent = githubResource; + linkElement.href = `https://github.com/${githubResource}`; + newLink.appendChild(linkElement); + if (optionalText) { + const textNode = document.createTextNode(optionalText); + newLink.appendChild(textNode); + } + return newLink; +}; +var BratSettingsTab = class extends import_obsidian5.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.plugin = plugin; + } + display() { + const { containerEl } = this; + containerEl.empty(); + new import_obsidian5.Setting(containerEl).setName("Auto-enable plugins after installation").setDesc( + 'If enabled beta plugins will be automatically enabled after installtion by default. Note: you can toggle this on and off for each plugin in the "Add Plugin" form.' + ).addToggle((cb) => { + cb.setValue(this.plugin.settings.enableAfterInstall); + cb.onChange(async (value) => { + this.plugin.settings.enableAfterInstall = value; + await this.plugin.saveSettings(); + }); + }); + new import_obsidian5.Setting(containerEl).setName("Auto-update plugins at startup").setDesc( + "If enabled all beta plugins will be checked for updates each time Obsidian starts. Note: this does not update frozen version plugins." + ).addToggle((cb) => { + cb.setValue(this.plugin.settings.updateAtStartup); + cb.onChange(async (value) => { + this.plugin.settings.updateAtStartup = value; + await this.plugin.saveSettings(); + }); + }); + new import_obsidian5.Setting(containerEl).setName("Auto-update themes at startup").setDesc( + "If enabled all beta themes will be checked for updates each time Obsidian starts." + ).addToggle((cb) => { + cb.setValue(this.plugin.settings.updateThemesAtStartup); + cb.onChange(async (value) => { + this.plugin.settings.updateThemesAtStartup = value; + await this.plugin.saveSettings(); + }); + }); + promotionalLinks(containerEl, true); + containerEl.createEl("hr"); + containerEl.createEl("h2", { text: "Beta Plugin List" }); + containerEl.createEl("div", { + text: `The following is a list of beta plugins added via the command palette "Add a beta plugin for testing" or "Add a beta plugin with frozen version for testing". A frozen version is a specific release of a plugin based on its releease tag. ` + }); + containerEl.createEl("p"); + containerEl.createEl("div", { + text: `Click the x button next to a plugin to remove it from the list.` + }); + containerEl.createEl("p"); + containerEl.createEl("span").createEl("b", { text: "Note: " }); + containerEl.createSpan({ + text: "This does not delete the plugin, this should be done from the Community Plugins tab in Settings." + }); + new import_obsidian5.Setting(containerEl).addButton((cb) => { + cb.setButtonText("Add Beta plugin"); + cb.onClick(() => { + this.plugin.app.setting.close(); + this.plugin.betaPlugins.displayAddNewPluginModal(true, false); + }); + }); + const pluginSubListFrozenVersionNames = new Set( + this.plugin.settings.pluginSubListFrozenVersion.map((x) => x.repo) + ); + for (const bp of this.plugin.settings.pluginList) { + if (pluginSubListFrozenVersionNames.has(bp)) { + continue; + } + new import_obsidian5.Setting(containerEl).setName(createLink(bp)).addButton((btn) => { + btn.setIcon("cross"); + btn.setTooltip("Delete this beta plugin"); + btn.onClick(() => { + if (btn.buttonEl.textContent === "") + btn.setButtonText("Click once more to confirm removal"); + else { + const { buttonEl } = btn; + const { parentElement } = buttonEl; + if (parentElement == null ? void 0 : parentElement.parentElement) { + parentElement.parentElement.remove(); + this.plugin.betaPlugins.deletePlugin(bp); + } + } + }); + }); + } + new import_obsidian5.Setting(containerEl).addButton((cb) => { + cb.setButtonText("Add Beta plugin with frozen version"); + cb.onClick(() => { + this.plugin.app.setting.close(); + this.plugin.betaPlugins.displayAddNewPluginModal(true, true); + }); + }); + for (const bp of this.plugin.settings.pluginSubListFrozenVersion) { + new import_obsidian5.Setting(containerEl).setName(createLink(bp.repo, ` (version ${bp.version})`)).addButton((btn) => { + btn.setIcon("cross"); + btn.setTooltip("Delete this beta plugin"); + btn.onClick(() => { + if (btn.buttonEl.textContent === "") + btn.setButtonText("Click once more to confirm removal"); + else { + const { buttonEl } = btn; + const { parentElement } = buttonEl; + if (parentElement == null ? void 0 : parentElement.parentElement) { + parentElement.parentElement.remove(); + this.plugin.betaPlugins.deletePlugin(bp.repo); + } + } + }); + }); + } + containerEl.createEl("h2", { text: "Beta Themes List" }); + new import_obsidian5.Setting(containerEl).addButton((cb) => { + cb.setButtonText("Add Beta Theme"); + cb.onClick(() => { + this.plugin.app.setting.close(); + new AddNewTheme(this.plugin).open(); + }); + }); + for (const bp of this.plugin.settings.themesList) { + new import_obsidian5.Setting(containerEl).setName(createLink(bp.repo)).addButton((btn) => { + btn.setIcon("cross"); + btn.setTooltip("Delete this beta theme"); + btn.onClick(() => { + if (btn.buttonEl.textContent === "") + btn.setButtonText("Click once more to confirm removal"); + else { + const { buttonEl } = btn; + const { parentElement } = buttonEl; + if (parentElement == null ? void 0 : parentElement.parentElement) { + parentElement.parentElement.remove(); + themeDelete(this.plugin, bp.repo); + } + } + }); + }); + } + containerEl.createEl("h2", { text: "Monitoring" }); + new import_obsidian5.Setting(containerEl).setName("Enable Notifications").setDesc( + "BRAT will provide popup notifications for its various activities. Turn this off means no notifications from BRAT." + ).addToggle((cb) => { + cb.setValue(this.plugin.settings.notificationsEnabled); + cb.onChange(async (value) => { + this.plugin.settings.notificationsEnabled = value; + await this.plugin.saveSettings(); + }); + }); + new import_obsidian5.Setting(containerEl).setName("Enable Logging").setDesc("Plugin updates will be logged to a file in the log file.").addToggle((cb) => { + cb.setValue(this.plugin.settings.loggingEnabled); + cb.onChange(async (value) => { + this.plugin.settings.loggingEnabled = value; + await this.plugin.saveSettings(); + }); + }); + new import_obsidian5.Setting(this.containerEl).setName("BRAT Log File Location").setDesc("Logs will be saved to this file. Don't add .md to the file name.").addSearch((cb) => { + cb.setPlaceholder("Example: BRAT-log").setValue(this.plugin.settings.loggingPath).onChange(async (newFolder) => { + this.plugin.settings.loggingPath = newFolder; + await this.plugin.saveSettings(); + }); + }); + new import_obsidian5.Setting(containerEl).setName("Enable Verbose Logging").setDesc("Get a lot more information in the log.").addToggle((cb) => { + cb.setValue(this.plugin.settings.loggingVerboseEnabled); + cb.onChange(async (value) => { + this.plugin.settings.loggingVerboseEnabled = value; + await this.plugin.saveSettings(); + }); + }); + new import_obsidian5.Setting(containerEl).setName("Debugging Mode").setDesc( + "Atomic Bomb level console logging. Can be used for troubleshoting and development." + ).addToggle((cb) => { + cb.setValue(this.plugin.settings.debuggingMode); + cb.onChange(async (value) => { + this.plugin.settings.debuggingMode = value; + await this.plugin.saveSettings(); + }); + }); + new import_obsidian5.Setting(containerEl).setName("Personal Access Token").setDesc( + "If you need to access private repositories, enter the personal access token here." + ).addText((text) => { + var _a; + text.setPlaceholder("Enter your personal access token").setValue((_a = this.plugin.settings.personalAccessToken) != null ? _a : "").onChange(async (value) => { + this.plugin.settings.personalAccessToken = value; + await this.plugin.saveSettings(); + }); + }); + } +}; + +// src/ui/AddNewPluginModal.ts +var import_obsidian6 = require("obsidian"); +var AddNewPluginModal = class extends import_obsidian6.Modal { + constructor(plugin, betaPlugins, openSettingsTabAfterwards = false, useFrozenVersion = false) { + super(plugin.app); + this.plugin = plugin; + this.betaPlugins = betaPlugins; + this.address = ""; + this.openSettingsTabAfterwards = openSettingsTabAfterwards; + this.useFrozenVersion = useFrozenVersion; + this.enableAfterInstall = plugin.settings.enableAfterInstall; + this.version = ""; + } + async submitForm() { + if (this.address === "") + return; + let scrubbedAddress = this.address.replace("https://github.com/", ""); + if (scrubbedAddress.endsWith(".git")) + scrubbedAddress = scrubbedAddress.slice(0, -4); + if (existBetaPluginInList(this.plugin, scrubbedAddress)) { + toastMessage( + this.plugin, + `This plugin is already in the list for beta testing`, + 10 + ); + return; + } + const result = await this.betaPlugins.addPlugin( + scrubbedAddress, + false, + false, + false, + this.version, + false, + this.enableAfterInstall + ); + if (result) { + this.close(); + } + } + onOpen() { + this.contentEl.createEl("h4", { text: "Github repository for beta plugin:" }); + this.contentEl.createEl("form", {}, (formEl) => { + formEl.addClass("brat-modal"); + new import_obsidian6.Setting(formEl).addText((textEl) => { + textEl.setPlaceholder( + "Repository (example: https://github.com/GitubUserName/repository-name)" + ); + textEl.setValue(this.address); + textEl.onChange((value) => { + this.address = value.trim(); + }); + textEl.inputEl.addEventListener("keydown", (e) => { + if (e.key === "Enter" && this.address !== " ") { + if (this.useFrozenVersion && this.version !== "" || !this.useFrozenVersion) { + e.preventDefault(); + void this.submitForm(); + } + } + }); + textEl.inputEl.style.width = "100%"; + }); + if (this.useFrozenVersion) { + new import_obsidian6.Setting(formEl).addText((textEl) => { + textEl.setPlaceholder("Specify the release version tag (example: 1.0.0)"); + textEl.onChange((value) => { + this.version = value.trim(); + }); + textEl.inputEl.style.width = "100%"; + }); + } + formEl.createDiv("modal-button-container", (buttonContainerEl) => { + buttonContainerEl.createEl( + "label", + { + cls: "mod-checkbox" + }, + (labelEl) => { + const checkboxEl = labelEl.createEl("input", { + attr: { tabindex: -1 }, + type: "checkbox" + }); + checkboxEl.checked = this.enableAfterInstall; + checkboxEl.addEventListener("click", () => { + this.enableAfterInstall = checkboxEl.checked; + }); + labelEl.appendText("Enable after installing the plugin"); + } + ); + buttonContainerEl.createEl("button", { attr: { type: "button" }, text: "Never mind" }).addEventListener("click", () => { + this.close(); + }); + buttonContainerEl.createEl("button", { + attr: { type: "submit" }, + cls: "mod-cta", + text: "Add Plugin" + }); + }); + const newDiv = formEl.createDiv(); + newDiv.style.borderTop = "1px solid #ccc"; + newDiv.style.marginTop = "30px"; + const byTfThacker = newDiv.createSpan(); + byTfThacker.innerHTML = "BRAT by TFTHacker"; + byTfThacker.style.fontStyle = "italic"; + newDiv.appendChild(byTfThacker); + promotionalLinks(newDiv, false); + window.setTimeout(() => { + const title = formEl.querySelectorAll(".brat-modal .setting-item-info"); + title.forEach((titleEl) => { + titleEl.remove(); + }); + }, 50); + formEl.addEventListener("submit", (e) => { + e.preventDefault(); + if (this.address !== "") { + if (this.useFrozenVersion && this.version !== "" || !this.useFrozenVersion) { + void this.submitForm(); + } + } + }); + }); + } + onClose() { + if (this.openSettingsTabAfterwards) { + this.plugin.app.setting.open(); + this.plugin.app.setting.openTabById(this.plugin.APP_ID); + } + } +}; + +// src/features/BetaPlugins.ts +var import_obsidian7 = require("obsidian"); +var BetaPlugins = class { + constructor(plugin) { + this.plugin = plugin; + } + /** + * opens the AddNewPluginModal to get info for a new beta plugin + * @param openSettingsTabAfterwards - will open settings screen afterwards. Used when this command is called from settings tab + * @param useFrozenVersion - install the plugin using frozen version. + */ + displayAddNewPluginModal(openSettingsTabAfterwards = false, useFrozenVersion = false) { + const newPlugin = new AddNewPluginModal( + this.plugin, + this, + openSettingsTabAfterwards, + useFrozenVersion + ); + newPlugin.open(); + } + /** + * Validates that a GitHub repository is plugin + * + * @param repositoryPath - GithubUser/RepositoryName (example: TfThacker/obsidian42-brat) + * @param getBetaManifest - test the beta version of the manifest, not at the root + * @param false - [false description] + * @param reportIssues - will display notices as it finds issues + * + * @returns the manifest file if found, or null if its incomplete + */ + async validateRepository(repositoryPath, getBetaManifest = false, reportIssues = false) { + const noticeTimeout = 15; + const manifestJson = await grabManifestJsonFromRepository( + repositoryPath, + !getBetaManifest, + this.plugin.settings.debuggingMode, + this.plugin.settings.personalAccessToken + ); + if (!manifestJson) { + if (reportIssues) { + toastMessage( + this.plugin, + `${repositoryPath} +This does not seem to be an obsidian plugin, as there is no manifest.json file.`, + noticeTimeout + ); + console.error( + "BRAT: validateRepository", + repositoryPath, + getBetaManifest, + reportIssues + ); + } + return null; + } + if (!("id" in manifestJson)) { + if (reportIssues) + toastMessage( + this.plugin, + `${repositoryPath} +The plugin id attribute for the release is missing from the manifest file`, + noticeTimeout + ); + return null; + } + if (!("version" in manifestJson)) { + if (reportIssues) + toastMessage( + this.plugin, + `${repositoryPath} +The version attribute for the release is missing from the manifest file`, + noticeTimeout + ); + return null; + } + return manifestJson; + } + /** + * Gets all the release files based on the version number in the manifest + * + * @param repositoryPath - path to the GitHub repository + * @param manifest - manifest file + * @param getManifest - grab the remote manifest file + * @param specifyVersion - grab the specified version if set + * + * @returns all relase files as strings based on the ReleaseFiles interaface + */ + async getAllReleaseFiles(repositoryPath, manifest, getManifest, specifyVersion = "") { + const version = specifyVersion === "" ? manifest.version : specifyVersion; + const reallyGetManifestOrNot = getManifest || specifyVersion !== ""; + console.log({ reallyGetManifestOrNot, version }); + return { + mainJs: await grabReleaseFileFromRepository( + repositoryPath, + version, + "main.js", + this.plugin.settings.debuggingMode, + this.plugin.settings.personalAccessToken + ), + manifest: reallyGetManifestOrNot ? await grabReleaseFileFromRepository( + repositoryPath, + version, + "manifest.json", + this.plugin.settings.debuggingMode, + this.plugin.settings.personalAccessToken + ) : "", + styles: await grabReleaseFileFromRepository( + repositoryPath, + version, + "styles.css", + this.plugin.settings.debuggingMode, + this.plugin.settings.personalAccessToken + ) + }; + } + /** + * Writes the plugin release files to the local obsidian .plugins folder + * + * @param betaPluginId - the id of the plugin (not the repository path) + * @param relFiles - release file as strings, based on the ReleaseFiles interface + * + */ + async writeReleaseFilesToPluginFolder(betaPluginId, relFiles) { + var _a, _b; + const pluginTargetFolderPath = (0, import_obsidian7.normalizePath)(this.plugin.app.vault.configDir + "/plugins/" + betaPluginId) + "/"; + const { adapter } = this.plugin.app.vault; + if (!await adapter.exists(pluginTargetFolderPath) || !await adapter.exists(pluginTargetFolderPath + "manifest.json")) { + await adapter.mkdir(pluginTargetFolderPath); + } + await adapter.write(pluginTargetFolderPath + "main.js", (_a = relFiles.mainJs) != null ? _a : ""); + await adapter.write( + pluginTargetFolderPath + "manifest.json", + (_b = relFiles.manifest) != null ? _b : "" + ); + if (relFiles.styles) + await adapter.write(pluginTargetFolderPath + "styles.css", relFiles.styles); + } + /** + * Primary function for adding a new beta plugin to Obsidian. + * Also this function is used for updating existing plugins. + * + * @param repositoryPath - path to GitHub repository formated as USERNAME/repository + * @param updatePluginFiles - true if this is just an update not an install + * @param seeIfUpdatedOnly - if true, and updatePluginFiles true, will just check for updates, but not do the update. will report to user that there is a new plugin + * @param reportIfNotUpdted - if true, report if an update has not succed + * @param specifyVersion - if not empty, need to install a specified version instead of the value in manifest-beta.json + * @param forceReinstall - if true, will force a reinstall of the plugin, even if it is already installed + * + * @returns true if succeeds + */ + async addPlugin(repositoryPath, updatePluginFiles = false, seeIfUpdatedOnly = false, reportIfNotUpdted = false, specifyVersion = "", forceReinstall = false, enableAfterInstall = this.plugin.settings.enableAfterInstall) { + if (this.plugin.settings.debuggingMode) + console.log( + "BRAT: addPlugin", + repositoryPath, + updatePluginFiles, + seeIfUpdatedOnly, + reportIfNotUpdted, + specifyVersion, + forceReinstall, + enableAfterInstall + ); + const noticeTimeout = 10; + let primaryManifest = await this.validateRepository(repositoryPath, true, false); + const usingBetaManifest = primaryManifest ? true : false; + if (!usingBetaManifest) + primaryManifest = await this.validateRepository(repositoryPath, false, true); + if (primaryManifest === null) { + const msg = `${repositoryPath} +A manifest.json or manifest-beta.json file does not exist in the root directory of the repository. This plugin cannot be installed.`; + await this.plugin.log(msg, true); + toastMessage(this.plugin, msg, noticeTimeout); + return false; + } + if (!Object.hasOwn(primaryManifest, "version")) { + const msg = `${repositoryPath} +The manifest${usingBetaManifest ? "-beta" : ""}.json file in the root directory of the repository does not have a version number in the file. This plugin cannot be installed.`; + await this.plugin.log(msg, true); + toastMessage(this.plugin, msg, noticeTimeout); + return false; + } + if (!Object.hasOwn(primaryManifest, "minAppVersion")) { + if (!(0, import_obsidian7.requireApiVersion)(primaryManifest.minAppVersion)) { + const msg = `Plugin: ${repositoryPath} + +The manifest${usingBetaManifest ? "-beta" : ""}.json for this plugin indicates that the Obsidian version of the app needs to be ${primaryManifest.minAppVersion}, but this installation of Obsidian is ${import_obsidian7.apiVersion}. + +You will need to update your Obsidian to use this plugin or contact the plugin developer for more information.`; + await this.plugin.log(msg, true); + toastMessage(this.plugin, msg, 30); + return false; + } + } + const getRelease = async () => { + const rFiles = await this.getAllReleaseFiles( + repositoryPath, + // @ts-expect-error typescript will complain that this can be null, but in this case it won't be + primaryManifest, + usingBetaManifest, + specifyVersion + ); + console.log("rFiles", rFiles); + if (usingBetaManifest || rFiles.manifest === "") + rFiles.manifest = JSON.stringify(primaryManifest); + if (this.plugin.settings.debuggingMode) + console.log("BRAT: rFiles.manifest", usingBetaManifest, rFiles); + if (rFiles.mainJs === null) { + const msg = `${repositoryPath} +The release is not complete and cannot be download. main.js is missing from the Release`; + await this.plugin.log(msg, true); + toastMessage(this.plugin, msg, noticeTimeout); + return null; + } + return rFiles; + }; + if (!updatePluginFiles || forceReinstall) { + const releaseFiles = await getRelease(); + if (releaseFiles === null) + return false; + await this.writeReleaseFilesToPluginFolder(primaryManifest.id, releaseFiles); + if (!forceReinstall) + addBetaPluginToList(this.plugin, repositoryPath, specifyVersion); + if (enableAfterInstall) { + const { plugins } = this.plugin.app; + const pluginTargetFolderPath = (0, import_obsidian7.normalizePath)( + plugins.getPluginFolder() + "/" + primaryManifest.id + ); + await plugins.loadManifest(pluginTargetFolderPath); + await plugins.enablePluginAndSave(primaryManifest.id); + } + await this.plugin.app.plugins.loadManifests(); + if (forceReinstall) { + await this.reloadPlugin(primaryManifest.id); + await this.plugin.log(`${repositoryPath} reinstalled`, true); + toastMessage( + this.plugin, + `${repositoryPath} +Plugin has been reinstalled and reloaded.`, + noticeTimeout + ); + } else { + const versionText = specifyVersion === "" ? "" : ` (version: ${specifyVersion})`; + let msg = `${repositoryPath}${versionText} +The plugin has been registered with BRAT.`; + if (!enableAfterInstall) { + msg += " You may still need to enable it the Community Plugin List."; + } + await this.plugin.log(msg, true); + toastMessage(this.plugin, msg, noticeTimeout); + } + } else { + const pluginTargetFolderPath = this.plugin.app.vault.configDir + "/plugins/" + primaryManifest.id + "/"; + let localManifestContents = ""; + try { + localManifestContents = await this.plugin.app.vault.adapter.read( + pluginTargetFolderPath + "manifest.json" + ); + } catch (e) { + if (e.errno === -4058 || e.errno === -2) { + await this.addPlugin( + repositoryPath, + false, + usingBetaManifest, + false, + specifyVersion + ); + return true; + } else + console.log( + "BRAT - Local Manifest Load", + primaryManifest.id, + JSON.stringify(e, null, 2) + ); + } + if (specifyVersion !== "" || this.plugin.settings.pluginSubListFrozenVersion.map((x) => x.repo).includes(repositoryPath)) { + toastMessage( + this.plugin, + `The version of ${repositoryPath} is frozen, not updating.`, + 3 + ); + return false; + } + const localManifestJson = await JSON.parse( + localManifestContents + ); + if (localManifestJson.version !== primaryManifest.version) { + const releaseFiles = await getRelease(); + if (releaseFiles === null) + return false; + if (seeIfUpdatedOnly) { + const msg = `There is an update available for ${primaryManifest.id} from version ${localManifestJson.version} to ${primaryManifest.version}. `; + await this.plugin.log( + msg + `[Release Info](https://github.com/${repositoryPath}/releases/tag/${primaryManifest.version})`, + true + ); + toastMessage(this.plugin, msg, 30, () => { + if (primaryManifest) { + window.open( + `https://github.com/${repositoryPath}/releases/tag/${primaryManifest.version}` + ); + } + }); + } else { + await this.writeReleaseFilesToPluginFolder(primaryManifest.id, releaseFiles); + await this.plugin.app.plugins.loadManifests(); + await this.reloadPlugin(primaryManifest.id); + const msg = `${primaryManifest.id} +Plugin has been updated from version ${localManifestJson.version} to ${primaryManifest.version}. `; + await this.plugin.log( + msg + `[Release Info](https://github.com/${repositoryPath}/releases/tag/${primaryManifest.version})`, + true + ); + toastMessage(this.plugin, msg, 30, () => { + if (primaryManifest) { + window.open( + `https://github.com/${repositoryPath}/releases/tag/${primaryManifest.version}` + ); + } + }); + } + } else if (reportIfNotUpdted) + toastMessage(this.plugin, `No update available for ${repositoryPath}`, 3); + } + return true; + } + /** + * reloads a plugin (assuming it has been enabled by user) + * pjeby, Thanks Bro https://github.com/pjeby/hot-reload/blob/master/main.js + * + * @param pluginName - name of plugin + * + */ + async reloadPlugin(pluginName) { + const { plugins } = this.plugin.app; + try { + await plugins.disablePlugin(pluginName); + await plugins.enablePlugin(pluginName); + } catch (e) { + if (this.plugin.settings.debuggingMode) + console.log("reload plugin", e); + } + } + /** + * updates a beta plugin + * + * @param repositoryPath - repository path on GitHub + * @param onlyCheckDontUpdate - only looks for update + * + */ + async updatePlugin(repositoryPath, onlyCheckDontUpdate = false, reportIfNotUpdted = false, forceReinstall = false) { + const result = await this.addPlugin( + repositoryPath, + true, + onlyCheckDontUpdate, + reportIfNotUpdted, + "", + forceReinstall + ); + if (!result && !onlyCheckDontUpdate) + toastMessage(this.plugin, `${repositoryPath} +Update of plugin failed.`); + return result; + } + /** + * walks through the list of plugins without frozen version and performs an update + * + * @param showInfo - should this with a started/completed message - useful when ran from CP + * + */ + async checkForPluginUpdatesAndInstallUpdates(showInfo = false, onlyCheckDontUpdate = false) { + if (!await isConnectedToInternet()) { + console.log("BRAT: No internet detected."); + return; + } + let newNotice; + const msg1 = `Checking for plugin updates STARTED`; + await this.plugin.log(msg1, true); + if (showInfo && this.plugin.settings.notificationsEnabled) + newNotice = new import_obsidian7.Notice(`BRAT +${msg1}`, 3e4); + const pluginSubListFrozenVersionNames = new Set( + this.plugin.settings.pluginSubListFrozenVersion.map((f) => f.repo) + ); + for (const bp of this.plugin.settings.pluginList) { + if (pluginSubListFrozenVersionNames.has(bp)) { + continue; + } + await this.updatePlugin(bp, onlyCheckDontUpdate); + } + const msg2 = `Checking for plugin updates COMPLETED`; + await this.plugin.log(msg2, true); + if (showInfo) { + if (newNotice) { + newNotice.hide(); + } + toastMessage(this.plugin, msg2, 10); + } + } + /** + * Removes the beta plugin from the list of beta plugins (does not delete them from disk) + * + * @param betaPluginID - repository path + * + */ + deletePlugin(repositoryPath) { + const msg = `Removed ${repositoryPath} from BRAT plugin list`; + void this.plugin.log(msg, true); + this.plugin.settings.pluginList = this.plugin.settings.pluginList.filter( + (b) => b !== repositoryPath + ); + this.plugin.settings.pluginSubListFrozenVersion = this.plugin.settings.pluginSubListFrozenVersion.filter( + (b) => b.repo !== repositoryPath + ); + void this.plugin.saveSettings(); + } + /** + * Returns a list of plugins that are currently enabled or currently disabled + * + * @param enabled - true for enabled plugins, false for disabled plutings + * + * @returns manifests of plugins + */ + getEnabledDisabledPlugins(enabled) { + const pl = this.plugin.app.plugins; + const manifests = Object.values(pl.manifests); + const enabledPlugins = Object.values(pl.plugins).map( + (p) => p.manifest + ); + return enabled ? manifests.filter( + (manifest) => enabledPlugins.find((pluginName) => manifest.id === pluginName.id) + ) : manifests.filter( + (manifest) => !enabledPlugins.find((pluginName) => manifest.id === pluginName.id) + ); + } +}; + +// src/ui/icons.ts +var import_obsidian8 = require("obsidian"); +function addIcons() { + (0, import_obsidian8.addIcon)( + "BratIcon", + `` + ); +} + +// src/utils/logging.ts +var import_obsidian9 = require("obsidian"); +var import_obsidian_daily_notes_interface = __toESM(require_main()); +async function logger(plugin, textToLog, verboseLoggingOn = false) { + if (plugin.settings.debuggingMode) + console.log("BRAT: " + textToLog); + if (plugin.settings.loggingEnabled) { + if (!plugin.settings.loggingVerboseEnabled && verboseLoggingOn) { + return; + } else { + const fileName = plugin.settings.loggingPath + ".md"; + const dateOutput = "[[" + (0, import_obsidian9.moment)().format((0, import_obsidian_daily_notes_interface.getDailyNoteSettings)().format).toString() + "]] " + (0, import_obsidian9.moment)().format("HH:mm"); + const os = window.require("os"); + const machineName = import_obsidian9.Platform.isDesktop ? os.hostname() : "MOBILE"; + let output = dateOutput + " " + machineName + " " + textToLog.replace("\n", " ") + "\n\n"; + if (await plugin.app.vault.adapter.exists(fileName)) { + const fileContents = await plugin.app.vault.adapter.read(fileName); + output = output + fileContents; + const file = plugin.app.vault.getAbstractFileByPath(fileName); + await plugin.app.vault.modify(file, output); + } else + await plugin.app.vault.create(fileName, output); + } + } +} + +// src/ui/GenericFuzzySuggester.ts +var import_obsidian10 = require("obsidian"); +var GenericFuzzySuggester = class extends import_obsidian10.FuzzySuggestModal { + constructor(plugin) { + super(plugin.app); + this.data = []; + this.scope.register(["Shift"], "Enter", (evt) => { + this.enterTrigger(evt); + }); + this.scope.register(["Ctrl"], "Enter", (evt) => { + this.enterTrigger(evt); + }); + } + setSuggesterData(suggesterData) { + this.data = suggesterData; + } + display(callBack) { + this.callbackFunction = callBack; + this.open(); + } + getItems() { + return this.data; + } + getItemText(item) { + return item.display; + } + onChooseItem() { + return; + } + renderSuggestion(item, el) { + el.createEl("div", { text: item.item.display }); + } + enterTrigger(evt) { + var _a; + const selectedText = (_a = document.querySelector(".suggestion-item.is-selected div")) == null ? void 0 : _a.textContent; + const item = this.data.find((i) => i.display === selectedText); + if (item) { + this.invokeCallback(item, evt); + this.close(); + } + } + onChooseSuggestion(item, evt) { + this.invokeCallback(item.item, evt); + } + invokeCallback(item, evt) { + if (typeof this.callbackFunction === "function") { + this.callbackFunction(item, evt); + } + } +}; + +// src/ui/PluginCommands.ts +var PluginCommands = class { + constructor(plugin) { + this.bratCommands = [ + { + id: "BRAT-AddBetaPlugin", + icon: "BratIcon", + name: "Plugins: Add a beta plugin for testing", + showInRibbon: true, + callback: () => { + this.plugin.betaPlugins.displayAddNewPluginModal(false, false); + } + }, + { + id: "BRAT-AddBetaPluginWithFrozenVersion", + icon: "BratIcon", + name: "Plugins: Add a beta plugin with frozen version based on a release tag", + showInRibbon: true, + callback: () => { + this.plugin.betaPlugins.displayAddNewPluginModal(false, true); + } + }, + { + id: "BRAT-checkForUpdatesAndUpdate", + icon: "BratIcon", + name: "Plugins: Check for updates to all beta plugins and UPDATE", + showInRibbon: true, + callback: async () => { + await this.plugin.betaPlugins.checkForPluginUpdatesAndInstallUpdates(true, false); + } + }, + { + id: "BRAT-checkForUpdatesAndDontUpdate", + icon: "BratIcon", + name: "Plugins: Only check for updates to beta plugins, but don't Update", + showInRibbon: true, + callback: async () => { + await this.plugin.betaPlugins.checkForPluginUpdatesAndInstallUpdates(true, true); + } + }, + { + id: "BRAT-updateOnePlugin", + icon: "BratIcon", + name: "Plugins: Choose a single plugin version to update", + showInRibbon: true, + callback: () => { + const pluginSubListFrozenVersionNames = new Set( + this.plugin.settings.pluginSubListFrozenVersion.map((f) => f.repo) + ); + const pluginList = Object.values(this.plugin.settings.pluginList).filter((f) => !pluginSubListFrozenVersionNames.has(f)).map((m) => { + return { display: m, info: m }; + }); + const gfs = new GenericFuzzySuggester(this.plugin); + gfs.setSuggesterData(pluginList); + gfs.display((results) => { + const msg = `Checking for updates for ${results.info}`; + void this.plugin.log(msg, true); + toastMessage(this.plugin, ` +${msg}`, 3); + void this.plugin.betaPlugins.updatePlugin(results.info, false, true); + }); + } + }, + { + id: "BRAT-reinstallOnePlugin", + icon: "BratIcon", + name: "Plugins: Choose a single plugin to reinstall", + showInRibbon: true, + callback: () => { + const pluginSubListFrozenVersionNames = new Set( + this.plugin.settings.pluginSubListFrozenVersion.map((f) => f.repo) + ); + const pluginList = Object.values(this.plugin.settings.pluginList).filter((f) => !pluginSubListFrozenVersionNames.has(f)).map((m) => { + return { display: m, info: m }; + }); + const gfs = new GenericFuzzySuggester(this.plugin); + gfs.setSuggesterData(pluginList); + gfs.display((results) => { + const msg = `Reinstalling ${results.info}`; + toastMessage(this.plugin, ` +${msg}`, 3); + void this.plugin.log(msg, true); + void this.plugin.betaPlugins.updatePlugin( + results.info, + false, + false, + true + ); + }); + } + }, + { + id: "BRAT-restartPlugin", + icon: "BratIcon", + name: "Plugins: Restart a plugin that is already installed", + showInRibbon: true, + callback: () => { + const pluginList = Object.values( + this.plugin.app.plugins.manifests + ).map((m) => { + return { display: m.id, info: m.id }; + }); + const gfs = new GenericFuzzySuggester(this.plugin); + gfs.setSuggesterData(pluginList); + gfs.display((results) => { + toastMessage( + this.plugin, + `${results.info} +Plugin reloading .....`, + 5 + ); + void this.plugin.betaPlugins.reloadPlugin(results.info); + }); + } + }, + { + id: "BRAT-disablePlugin", + icon: "BratIcon", + name: "Plugins: Disable a plugin - toggle it off", + showInRibbon: true, + callback: () => { + const pluginList = this.plugin.betaPlugins.getEnabledDisabledPlugins(true).map((manifest) => { + return { display: `${manifest.name} (${manifest.id})`, info: manifest.id }; + }); + const gfs = new GenericFuzzySuggester(this.plugin); + gfs.setSuggesterData(pluginList); + gfs.display((results) => { + void this.plugin.log(`${results.display} plugin disabled`, false); + if (this.plugin.settings.debuggingMode) + console.log(results.info); + void this.plugin.app.plugins.disablePluginAndSave(results.info); + }); + } + }, + { + id: "BRAT-enablePlugin", + icon: "BratIcon", + name: "Plugins: Enable a plugin - toggle it on", + showInRibbon: true, + callback: () => { + const pluginList = this.plugin.betaPlugins.getEnabledDisabledPlugins(false).map((manifest) => { + return { display: `${manifest.name} (${manifest.id})`, info: manifest.id }; + }); + const gfs = new GenericFuzzySuggester(this.plugin); + gfs.setSuggesterData(pluginList); + gfs.display((results) => { + void this.plugin.log(`${results.display} plugin enabled`, false); + void this.plugin.app.plugins.enablePluginAndSave(results.info); + }); + } + }, + { + id: "BRAT-openGitHubZRepository", + icon: "BratIcon", + name: "Plugins: Open the GitHub repository for a plugin", + showInRibbon: true, + callback: async () => { + const communityPlugins = await grabCommmunityPluginList( + this.plugin.settings.debuggingMode + ); + if (communityPlugins) { + const communityPluginList = Object.values( + communityPlugins + ).map((p) => { + return { display: `Plugin: ${p.name} (${p.repo})`, info: p.repo }; + }); + const bratList = Object.values( + this.plugin.settings.pluginList + ).map((p) => { + return { display: "BRAT: " + p, info: p }; + }); + communityPluginList.forEach((si) => bratList.push(si)); + const gfs = new GenericFuzzySuggester(this.plugin); + gfs.setSuggesterData(bratList); + gfs.display((results) => { + if (results.info) + window.open(`https://github.com/${results.info}`); + }); + } + } + }, + { + id: "BRAT-openGitHubRepoTheme", + icon: "BratIcon", + name: "Themes: Open the GitHub repository for a theme (appearance)", + showInRibbon: true, + callback: async () => { + const communityTheme = await grabCommmunityThemesList( + this.plugin.settings.debuggingMode + ); + if (communityTheme) { + const communityThemeList = Object.values(communityTheme).map( + (p) => { + return { display: `Theme: ${p.name} (${p.repo})`, info: p.repo }; + } + ); + const gfs = new GenericFuzzySuggester(this.plugin); + gfs.setSuggesterData(communityThemeList); + gfs.display((results) => { + if (results.info) + window.open(`https://github.com/${results.info}`); + }); + } + } + }, + { + id: "BRAT-opentPluginSettings", + icon: "BratIcon", + name: "Plugins: Open Plugin Settings Tab", + showInRibbon: true, + callback: () => { + const settings = this.plugin.app.setting; + const listOfPluginSettingsTabs = Object.values( + settings.pluginTabs + ).map((t) => { + return { display: "Plugin: " + t.name, info: t.id }; + }); + const gfs = new GenericFuzzySuggester(this.plugin); + const listOfCoreSettingsTabs = Object.values( + settings.settingTabs + ).map((t) => { + return { display: "Core: " + t.name, info: t.id }; + }); + listOfPluginSettingsTabs.forEach((si) => listOfCoreSettingsTabs.push(si)); + gfs.setSuggesterData(listOfCoreSettingsTabs); + gfs.display((results) => { + settings.open(); + settings.openTabById(results.info); + }); + } + }, + { + id: "BRAT-GrabBetaTheme", + icon: "BratIcon", + name: "Themes: Grab a beta theme for testing from a Github repository", + showInRibbon: true, + callback: () => { + new AddNewTheme(this.plugin).open(); + } + }, + { + id: "BRAT-updateBetaThemes", + icon: "BratIcon", + name: "Themes: Update beta themes", + showInRibbon: true, + callback: async () => { + await themesCheckAndUpdates(this.plugin, true); + } + }, + { + id: "BRAT-allCommands", + icon: "BratIcon", + name: "All Commands list", + showInRibbon: false, + callback: () => { + this.ribbonDisplayCommands(); + } + } + ]; + this.plugin = plugin; + this.bratCommands.forEach((item) => { + this.plugin.addCommand({ + id: item.id, + name: item.name, + icon: item.icon, + callback: () => { + item.callback(); + } + }); + }); + } + ribbonDisplayCommands() { + const bratCommandList = []; + this.bratCommands.forEach((cmd) => { + if (cmd.showInRibbon) + bratCommandList.push({ display: cmd.name, info: cmd.callback }); + }); + const gfs = new GenericFuzzySuggester(this.plugin); + const settings = this.plugin.app.setting; + const listOfCoreSettingsTabs = Object.values( + settings.settingTabs + ).map((t) => { + return { + display: "Core: " + t.name, + info: () => { + settings.open(); + settings.openTabById(t.id); + } + }; + }); + const listOfPluginSettingsTabs = Object.values( + settings.pluginTabs + ).map((t) => { + return { + display: "Plugin: " + t.name, + info: () => { + settings.open(); + settings.openTabById(t.id); + } + }; + }); + bratCommandList.push({ + display: "---- Core Plugin Settings ----", + info: () => { + this.ribbonDisplayCommands(); + } + }); + listOfCoreSettingsTabs.forEach((si) => bratCommandList.push(si)); + bratCommandList.push({ + display: "---- Plugin Settings ----", + info: () => { + this.ribbonDisplayCommands(); + } + }); + listOfPluginSettingsTabs.forEach((si) => bratCommandList.push(si)); + gfs.setSuggesterData(bratCommandList); + gfs.display((results) => { + if (typeof results.info === "function") { + results.info(); + } + }); + } +}; + +// src/utils/BratAPI.ts +var BratAPI = class { + constructor(plugin) { + this.console = (logDescription, ...outputs) => { + console.log("BRAT: " + logDescription, ...outputs); + }; + this.themes = { + themeseCheckAndUpates: async (showInfo) => { + await themesCheckAndUpdates(this.plugin, showInfo); + }, + themeInstallTheme: async (cssGithubRepository) => { + const scrubbedAddress = cssGithubRepository.replace("https://github.com/", ""); + await themeSave(this.plugin, scrubbedAddress, true); + }, + themesDelete: (cssGithubRepository) => { + const scrubbedAddress = cssGithubRepository.replace("https://github.com/", ""); + themeDelete(this.plugin, scrubbedAddress); + }, + grabCommmunityThemeCssFile: async (repositoryPath, betaVersion = false) => { + return await grabCommmunityThemeCssFile( + repositoryPath, + betaVersion, + this.plugin.settings.debuggingMode + ); + }, + grabChecksumOfThemeCssFile: async (repositoryPath, betaVersion = false) => { + return await grabChecksumOfThemeCssFile( + repositoryPath, + betaVersion, + this.plugin.settings.debuggingMode + ); + }, + grabLastCommitDateForFile: async (repositoryPath, path) => { + return await grabLastCommitDateForFile(repositoryPath, path); + } + }; + this.plugin = plugin; + } +}; + +// src/main.ts +var ThePlugin = class extends import_obsidian11.Plugin { + constructor() { + super(...arguments); + this.APP_NAME = "BRAT"; + this.APP_ID = "obsidian42-brat"; + this.settings = DEFAULT_SETTINGS; + this.betaPlugins = new BetaPlugins(this); + this.commands = new PluginCommands(this); + this.bratApi = new BratAPI(this); + this.obsidianProtocolHandler = (params) => { + if (!params.plugin && !params.theme) { + toastMessage(this, `Could not locate the repository from the URL.`, 10); + return; + } + for (const which of ["plugin", "theme"]) { + if (params[which]) { + const modal = which === "plugin" ? new AddNewPluginModal(this, this.betaPlugins) : new AddNewTheme(this); + modal.address = params[which]; + modal.open(); + return; + } + } + }; + } + async onload() { + console.log("loading " + this.APP_NAME); + await this.loadSettings(); + this.addSettingTab(new BratSettingsTab(this.app, this)); + addIcons(); + this.showRibbonButton(); + this.registerObsidianProtocolHandler("brat", this.obsidianProtocolHandler); + this.app.workspace.onLayoutReady(() => { + if (this.settings.updateAtStartup) { + setTimeout(() => { + void this.betaPlugins.checkForPluginUpdatesAndInstallUpdates(false); + }, 6e4); + } + if (this.settings.updateThemesAtStartup) { + setTimeout(() => { + void themesCheckAndUpdates(this, false); + }, 12e4); + } + setTimeout(() => { + window.bratAPI = this.bratApi; + }, 500); + }); + } + showRibbonButton() { + this.addRibbonIcon("BratIcon", "BRAT", () => { + this.commands.ribbonDisplayCommands(); + }); + } + async log(textToLog, verbose = false) { + await logger(this, textToLog, verbose); + } + onunload() { + console.log("unloading " + this.APP_NAME); + } + async loadSettings() { + this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()); + } + async saveSettings() { + await this.saveData(this.settings); + } +}; diff --git a/.obsidian/plugins/obsidian42-brat/manifest.json b/.obsidian/plugins/obsidian42-brat/manifest.json new file mode 100644 index 0000000..b7291c2 --- /dev/null +++ b/.obsidian/plugins/obsidian42-brat/manifest.json @@ -0,0 +1,15 @@ +{ + "id": "obsidian42-brat", + "name": "BRAT", + "version": "1.0.1", + "minAppVersion": "1.4.16", + "description": "Easily install a beta version of a plugin for testing.", + "author": "TfTHacker", + "authorUrl": "https://github.com/TfTHacker/obsidian42-brat", + "helpUrl": "https://tfthacker.com/BRAT", + "isDesktopOnly": false, + "fundingUrl": { + "Buy Me a Coffee": "https://bit.ly/o42-kofi", + "Visit my site": "https://tfthacker.com" + } +} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian42-brat/styles.css b/.obsidian/plugins/obsidian42-brat/styles.css new file mode 100644 index 0000000..596067a --- /dev/null +++ b/.obsidian/plugins/obsidian42-brat/styles.css @@ -0,0 +1,3 @@ +.brat-modal .modal-button-container { + margin-top: 5px !important; +} diff --git a/.obsidian/plugins/remotely-save/.gitignore b/.obsidian/plugins/remotely-save/.gitignore new file mode 100644 index 0000000..2d46485 --- /dev/null +++ b/.obsidian/plugins/remotely-save/.gitignore @@ -0,0 +1 @@ +data.json diff --git a/.obsidian/plugins/remotely-save/main.js b/.obsidian/plugins/remotely-save/main.js new file mode 100644 index 0000000..b4a17cc --- /dev/null +++ b/.obsidian/plugins/remotely-save/main.js @@ -0,0 +1,335 @@ +(()=>{var e={35456:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AwsCrc32=void 0;var r=n(81478),i=n(65388),o=n(53465),s=function(){function e(){this.crc32=new o.Crc32}return e.prototype.update=function(e){(0,i.isEmptyData)(e)||this.crc32.update((0,i.convertToBuffer)(e))},e.prototype.digest=function(){return r.__awaiter(this,void 0,void 0,(function(){return r.__generator(this,(function(e){return[2,(0,i.numToUint8)(this.crc32.digest())]}))}))},e.prototype.reset=function(){this.crc32=new o.Crc32},e}();t.AwsCrc32=s},53465:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AwsCrc32=t.Crc32=t.crc32=void 0;var r=n(81478),i=n(65388);t.crc32=function(e){return(new o).update(e).digest()};var o=function(){function e(){this.checksum=4294967295}return e.prototype.update=function(e){var t,n;try{for(var i=r.__values(e),o=i.next();!o.done;o=i.next()){var a=o.value;this.checksum=this.checksum>>>8^s[255&(this.checksum^a)]}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}return this},e.prototype.digest=function(){return(4294967295^this.checksum)>>>0},e}();t.Crc32=o;var s=(0,i.uint32ArrayFrom)([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]),a=n(35456);Object.defineProperty(t,"AwsCrc32",{enumerable:!0,get:function(){return a.AwsCrc32}})},81478:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__assign:()=>o,__asyncDelegator:()=>w,__asyncGenerator:()=>b,__asyncValues:()=>_,__await:()=>v,__awaiter:()=>d,__classPrivateFieldGet:()=>M,__classPrivateFieldSet:()=>A,__createBinding:()=>h,__decorate:()=>a,__exportStar:()=>f,__extends:()=>i,__generator:()=>l,__importDefault:()=>E,__importStar:()=>D,__makeTemplateObject:()=>x,__metadata:()=>c,__param:()=>u,__read:()=>m,__rest:()=>s,__spread:()=>g,__spreadArrays:()=>y,__values:()=>p}); +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},r(e,t)};function i(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s}function u(e,t){return function(n,r){t(n,r,e)}}function c(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function d(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))}function l(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(i=s.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function m(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s}function g(){for(var e=[],t=0;t1||a(e,t)}))})}function a(e,t){try{(n=i[e](t)).value instanceof v?Promise.resolve(n.value.v).then(u,c):d(o[0][2],n)}catch(e){d(o[0][3],e)}var n}function u(e){a("next",e)}function c(e){a("throw",e)}function d(e,t){e(t),o.shift(),o.length&&a(o[0][0],o[0][1])}}function w(e){var t,n;return t={},r("next"),r("throw",(function(e){throw e})),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,i){t[r]=e[r]?function(t){return(n=!n)?{value:v(e[r](t)),done:"return"===r}:i?i(t):t}:i}}function _(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=p(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,i){(function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)})(r,i,(t=e[n](t)).done,t.value)}))}}}function x(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}function D(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function E(e){return e&&e.__esModule?e:{default:e}}function M(e,t){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return t.get(e)}function A(e,t,n){if(!t.has(e))throw new TypeError("attempted to set private field on non-instance");return t.set(e,n),n}},55776:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AwsCrc32c=void 0;var r=n(21525),i=n(65388),o=n(69728),s=function(){function e(){this.crc32c=new o.Crc32c}return e.prototype.update=function(e){(0,i.isEmptyData)(e)||this.crc32c.update((0,i.convertToBuffer)(e))},e.prototype.digest=function(){return r.__awaiter(this,void 0,void 0,(function(){return r.__generator(this,(function(e){return[2,(0,i.numToUint8)(this.crc32c.digest())]}))}))},e.prototype.reset=function(){this.crc32c=new o.Crc32c},e}();t.AwsCrc32c=s},69728:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AwsCrc32c=t.Crc32c=t.crc32c=void 0;var r=n(21525),i=n(65388);t.crc32c=function(e){return(new o).update(e).digest()};var o=function(){function e(){this.checksum=4294967295}return e.prototype.update=function(e){var t,n;try{for(var i=r.__values(e),o=i.next();!o.done;o=i.next()){var a=o.value;this.checksum=this.checksum>>>8^s[255&(this.checksum^a)]}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}return this},e.prototype.digest=function(){return(4294967295^this.checksum)>>>0},e}();t.Crc32c=o;var s=(0,i.uint32ArrayFrom)([0,4067132163,3778769143,324072436,3348797215,904991772,648144872,3570033899,2329499855,2024987596,1809983544,2575936315,1296289744,3207089363,2893594407,1578318884,274646895,3795141740,4049975192,51262619,3619967088,632279923,922689671,3298075524,2592579488,1760304291,2075979607,2312596564,1562183871,2943781820,3156637768,1313733451,549293790,3537243613,3246849577,871202090,3878099393,357341890,102525238,4101499445,2858735121,1477399826,1264559846,3107202533,1845379342,2677391885,2361733625,2125378298,820201905,3263744690,3520608582,598981189,4151959214,85089709,373468761,3827903834,3124367742,1213305469,1526817161,2842354314,2107672161,2412447074,2627466902,1861252501,1098587580,3004210879,2688576843,1378610760,2262928035,1955203488,1742404180,2511436119,3416409459,969524848,714683780,3639785095,205050476,4266873199,3976438427,526918040,1361435347,2739821008,2954799652,1114974503,2529119692,1691668175,2005155131,2247081528,3690758684,697762079,986182379,3366744552,476452099,3993867776,4250756596,255256311,1640403810,2477592673,2164122517,1922457750,2791048317,1412925310,1197962378,3037525897,3944729517,427051182,170179418,4165941337,746937522,3740196785,3451792453,1070968646,1905808397,2213795598,2426610938,1657317369,3053634322,1147748369,1463399397,2773627110,4215344322,153784257,444234805,3893493558,1021025245,3467647198,3722505002,797665321,2197175160,1889384571,1674398607,2443626636,1164749927,3070701412,2757221520,1446797203,137323447,4198817972,3910406976,461344835,3484808360,1037989803,781091935,3705997148,2460548119,1623424788,1939049696,2180517859,1429367560,2807687179,3020495871,1180866812,410100952,3927582683,4182430767,186734380,3756733383,763408580,1053836080,3434856499,2722870694,1344288421,1131464017,2971354706,1708204729,2545590714,2229949006,1988219213,680717673,3673779818,3383336350,1002577565,4010310262,493091189,238226049,4233660802,2987750089,1082061258,1395524158,2705686845,1972364758,2279892693,2494862625,1725896226,952904198,3399985413,3656866545,731699698,4283874585,222117402,510512622,3959836397,3280807620,837199303,582374963,3504198960,68661723,4135334616,3844915500,390545967,1230274059,3141532936,2825850620,1510247935,2395924756,2091215383,1878366691,2644384480,3553878443,565732008,854102364,3229815391,340358836,3861050807,4117890627,119113024,1493875044,2875275879,3090270611,1247431312,2660249211,1828433272,2141937292,2378227087,3811616794,291187481,34330861,4032846830,615137029,3603020806,3314634738,939183345,1776939221,2609017814,2295496738,2058945313,2926798794,1545135305,1330124605,3173225534,4084100981,17165430,307568514,3762199681,888469610,3332340585,3587147933,665062302,2042050490,2346497209,2559330125,1793573966,3190661285,1279665062,1595330642,2910671697]),a=n(55776);Object.defineProperty(t,"AwsCrc32c",{enumerable:!0,get:function(){return a.AwsCrc32c}})},21525:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__assign:()=>o,__asyncDelegator:()=>w,__asyncGenerator:()=>b,__asyncValues:()=>_,__await:()=>v,__awaiter:()=>d,__classPrivateFieldGet:()=>M,__classPrivateFieldSet:()=>A,__createBinding:()=>h,__decorate:()=>a,__exportStar:()=>f,__extends:()=>i,__generator:()=>l,__importDefault:()=>E,__importStar:()=>D,__makeTemplateObject:()=>x,__metadata:()=>c,__param:()=>u,__read:()=>m,__rest:()=>s,__spread:()=>g,__spreadArrays:()=>y,__values:()=>p}); +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},r(e,t)};function i(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s}function u(e,t){return function(n,r){t(n,r,e)}}function c(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function d(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))}function l(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(i=s.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function m(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s}function g(){for(var e=[],t=0;t1||a(e,t)}))})}function a(e,t){try{(n=i[e](t)).value instanceof v?Promise.resolve(n.value.v).then(u,c):d(o[0][2],n)}catch(e){d(o[0][3],e)}var n}function u(e){a("next",e)}function c(e){a("throw",e)}function d(e,t){e(t),o.shift(),o.length&&a(o[0][0],o[0][1])}}function w(e){var t,n;return t={},r("next"),r("throw",(function(e){throw e})),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,i){t[r]=e[r]?function(t){return(n=!n)?{value:v(e[r](t)),done:"return"===r}:i?i(t):t}:i}}function _(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=p(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,i){(function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)})(r,i,(t=e[n](t)).done,t.value)}))}}}function x(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}function D(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function E(e){return e&&e.__esModule?e:{default:e}}function M(e,t){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return t.get(e)}function A(e,t,n){if(!t.has(e))throw new TypeError("attempted to set private field on non-instance");return t.set(e,n),n}},28904:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},58145:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},90304:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},39116:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},35660:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isMsWindow=void 0;var n=["decrypt","digest","encrypt","exportKey","generateKey","importKey","sign","verify"];t.isMsWindow=function(e){if(function(e){return"MSInputMethodContext"in e&&"msCrypto"in e}(e)&&void 0!==e.msCrypto.subtle){var t=e.msCrypto,r=t.getRandomValues,i=t.subtle;return n.map((function(e){return i[e]})).concat(r).every((function(e){return"function"==typeof e}))}return!1}},18086:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(72779);r.__exportStar(n(28904),t),r.__exportStar(n(58145),t),r.__exportStar(n(90304),t),r.__exportStar(n(39116),t),r.__exportStar(n(35660),t)},72779:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__assign:()=>o,__asyncDelegator:()=>w,__asyncGenerator:()=>b,__asyncValues:()=>_,__await:()=>v,__awaiter:()=>d,__classPrivateFieldGet:()=>M,__classPrivateFieldSet:()=>A,__createBinding:()=>h,__decorate:()=>a,__exportStar:()=>f,__extends:()=>i,__generator:()=>l,__importDefault:()=>E,__importStar:()=>D,__makeTemplateObject:()=>x,__metadata:()=>c,__param:()=>u,__read:()=>m,__rest:()=>s,__spread:()=>g,__spreadArrays:()=>y,__values:()=>p}); +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},r(e,t)};function i(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s}function u(e,t){return function(n,r){t(n,r,e)}}function c(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function d(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))}function l(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(i=s.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function m(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s}function g(){for(var e=[],t=0;t1||a(e,t)}))})}function a(e,t){try{(n=i[e](t)).value instanceof v?Promise.resolve(n.value.v).then(u,c):d(o[0][2],n)}catch(e){d(o[0][3],e)}var n}function u(e){a("next",e)}function c(e){a("throw",e)}function d(e,t){e(t),o.shift(),o.length&&a(o[0][0],o[0][1])}}function w(e){var t,n;return t={},r("next"),r("throw",(function(e){throw e})),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,i){t[r]=e[r]?function(t){return(n=!n)?{value:v(e[r](t)),done:"return"===r}:i?i(t):t}:i}}function _(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=p(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,i){(function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)})(r,i,(t=e[n](t)).done,t.value)}))}}}function x(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}function D(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function E(e){return e&&e.__esModule?e:{default:e}}function M(e,t){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return t.get(e)}function A(e,t,n){if(!t.has(e))throw new TypeError("attempted to set private field on non-instance");return t.set(e,n),n}},10309:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EMPTY_DATA_SHA_1=t.SHA_1_HMAC_ALGO=t.SHA_1_HASH=void 0,t.SHA_1_HASH={name:"SHA-1"},t.SHA_1_HMAC_ALGO={name:"HMAC",hash:t.SHA_1_HASH},t.EMPTY_DATA_SHA_1=new Uint8Array([218,57,163,238,94,107,75,13,50,85,191,239,149,96,24,144,175,216,7,9])},7754:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Sha1=void 0;var r=n(25075),i=n(37234),o=n(23469),s=n(18086),a=n(77226),u=n(65388),c=function(){function e(e){if((0,o.supportsWebCrypto)((0,a.locateWindow)()))this.hash=new i.Sha1(e);else{if(!(0,s.isMsWindow)((0,a.locateWindow)()))throw new Error("SHA1 not supported");this.hash=new r.Sha1(e)}}return e.prototype.update=function(e,t){this.hash.update((0,u.convertToBuffer)(e))},e.prototype.digest=function(){return this.hash.digest()},e.prototype.reset=function(){this.hash.reset()},e}();t.Sha1=c},25075:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Sha1=void 0;var r=n(12841),i=n(10309),o=n(84006),s=n(77226),a=function(){function e(e){this.secret=e,this.reset()}return e.prototype.update=function(e){var t=this;(0,r.isEmptyData)(e)||(this.operation=this.operation.then((function(n){return n.onerror=function(){t.operation=Promise.reject(new Error("Error encountered updating hash"))},n.process(u(e)),n})),this.operation.catch((function(){})))},e.prototype.digest=function(){return this.operation.then((function(e){return new Promise((function(t,n){e.onerror=function(){n(new Error("Error encountered finalizing hash"))},e.oncomplete=function(){e.result&&t(new Uint8Array(e.result)),n(new Error("Error encountered finalizing hash"))},e.finish()}))}))},e.prototype.reset=function(){var e;this.secret?(this.operation=(e=this.secret,new Promise((function(t,n){var r=(0,s.locateWindow)().msCrypto.subtle.importKey("raw",u(e),i.SHA_1_HMAC_ALGO,!1,["sign"]);r.oncomplete=function(){r.result&&t(r.result),n(new Error("ImportKey completed without importing key."))},r.onerror=function(){n(new Error("ImportKey failed to import key."))}}))).then((function(e){return(0,s.locateWindow)().msCrypto.subtle.sign(i.SHA_1_HMAC_ALGO,e)})),this.operation.catch((function(){}))):this.operation=Promise.resolve((0,s.locateWindow)().msCrypto.subtle.digest("SHA-1"))},e}();function u(e){return"string"==typeof e?(0,o.fromUtf8)(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}t.Sha1=a},91888:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WebCryptoSha1=t.Ie11Sha1=void 0,n(34981).__exportStar(n(7754),t);var r=n(25075);Object.defineProperty(t,"Ie11Sha1",{enumerable:!0,get:function(){return r.Sha1}});var i=n(37234);Object.defineProperty(t,"WebCryptoSha1",{enumerable:!0,get:function(){return i.Sha1}})},12841:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isEmptyData=void 0,t.isEmptyData=function(e){return"string"==typeof e?0===e.length:0===e.byteLength}},37234:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Sha1=void 0;var r=n(84006),i=n(12841),o=n(10309),s=n(77226),a=function(){function e(e){this.toHash=new Uint8Array(0),void 0!==e&&(this.key=new Promise((function(t,n){(0,s.locateWindow)().crypto.subtle.importKey("raw",u(e),o.SHA_1_HMAC_ALGO,!1,["sign"]).then(t,n)})),this.key.catch((function(){})))}return e.prototype.update=function(e){if(!(0,i.isEmptyData)(e)){var t=u(e),n=new Uint8Array(this.toHash.byteLength+t.byteLength);n.set(this.toHash,0),n.set(t,this.toHash.byteLength),this.toHash=n}},e.prototype.digest=function(){var e=this;return this.key?this.key.then((function(t){return(0,s.locateWindow)().crypto.subtle.sign(o.SHA_1_HMAC_ALGO,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):(0,i.isEmptyData)(this.toHash)?Promise.resolve(o.EMPTY_DATA_SHA_1):Promise.resolve().then((function(){return(0,s.locateWindow)().crypto.subtle.digest(o.SHA_1_HASH,e.toHash)})).then((function(e){return Promise.resolve(new Uint8Array(e))}))},e.prototype.reset=function(){this.toHash=new Uint8Array(0)},e}();function u(e){return"string"==typeof e?(0,r.fromUtf8)(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}t.Sha1=a},34981:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__assign:()=>o,__asyncDelegator:()=>w,__asyncGenerator:()=>b,__asyncValues:()=>_,__await:()=>v,__awaiter:()=>d,__classPrivateFieldGet:()=>M,__classPrivateFieldSet:()=>A,__createBinding:()=>h,__decorate:()=>a,__exportStar:()=>f,__extends:()=>i,__generator:()=>l,__importDefault:()=>E,__importStar:()=>D,__makeTemplateObject:()=>x,__metadata:()=>c,__param:()=>u,__read:()=>m,__rest:()=>s,__spread:()=>g,__spreadArrays:()=>y,__values:()=>p}); +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},r(e,t)};function i(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s}function u(e,t){return function(n,r){t(n,r,e)}}function c(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function d(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))}function l(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(i=s.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function m(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s}function g(){for(var e=[],t=0;t1||a(e,t)}))})}function a(e,t){try{(n=i[e](t)).value instanceof v?Promise.resolve(n.value.v).then(u,c):d(o[0][2],n)}catch(e){d(o[0][3],e)}var n}function u(e){a("next",e)}function c(e){a("throw",e)}function d(e,t){e(t),o.shift(),o.length&&a(o[0][0],o[0][1])}}function w(e){var t,n;return t={},r("next"),r("throw",(function(e){throw e})),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,i){t[r]=e[r]?function(t){return(n=!n)?{value:v(e[r](t)),done:"return"===r}:i?i(t):t}:i}}function _(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=p(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,i){(function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)})(r,i,(t=e[n](t)).done,t.value)}))}}}function x(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}function D(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function E(e){return e&&e.__esModule?e:{default:e}}function M(e,t){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return t.get(e)}function A(e,t,n){if(!t.has(e))throw new TypeError("attempted to set private field on non-instance");return t.set(e,n),n}},14955:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EMPTY_DATA_SHA_256=t.SHA_256_HMAC_ALGO=t.SHA_256_HASH=void 0,t.SHA_256_HASH={name:"SHA-256"},t.SHA_256_HMAC_ALGO={name:"HMAC",hash:t.SHA_256_HASH},t.EMPTY_DATA_SHA_256=new Uint8Array([227,176,196,66,152,252,28,20,154,251,244,200,153,111,185,36,39,174,65,228,100,155,147,76,164,149,153,27,120,82,184,85])},69258:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Sha256=void 0;var r=n(71195),i=n(32038),o=n(33523),s=n(23469),a=n(18086),u=n(77226),c=n(65388),d=function(){function e(e){(0,s.supportsWebCrypto)((0,u.locateWindow)())?this.hash=new i.Sha256(e):(0,a.isMsWindow)((0,u.locateWindow)())?this.hash=new r.Sha256(e):this.hash=new o.Sha256(e)}return e.prototype.update=function(e,t){this.hash.update((0,c.convertToBuffer)(e))},e.prototype.digest=function(){return this.hash.digest()},e.prototype.reset=function(){this.hash.reset()},e}();t.Sha256=d},71195:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Sha256=void 0;var r=n(85787),i=n(14955),o=n(84006),s=n(77226),a=function(){function e(e){this.secret=e,this.reset()}return e.prototype.update=function(e){var t=this;(0,r.isEmptyData)(e)||(this.operation=this.operation.then((function(n){return n.onerror=function(){t.operation=Promise.reject(new Error("Error encountered updating hash"))},n.process(u(e)),n})),this.operation.catch((function(){})))},e.prototype.digest=function(){return this.operation.then((function(e){return new Promise((function(t,n){e.onerror=function(){n(new Error("Error encountered finalizing hash"))},e.oncomplete=function(){e.result&&t(new Uint8Array(e.result)),n(new Error("Error encountered finalizing hash"))},e.finish()}))}))},e.prototype.reset=function(){var e;this.secret?(this.operation=(e=this.secret,new Promise((function(t,n){var r=(0,s.locateWindow)().msCrypto.subtle.importKey("raw",u(e),i.SHA_256_HMAC_ALGO,!1,["sign"]);r.oncomplete=function(){r.result&&t(r.result),n(new Error("ImportKey completed without importing key."))},r.onerror=function(){n(new Error("ImportKey failed to import key."))}}))).then((function(e){return(0,s.locateWindow)().msCrypto.subtle.sign(i.SHA_256_HMAC_ALGO,e)})),this.operation.catch((function(){}))):this.operation=Promise.resolve((0,s.locateWindow)().msCrypto.subtle.digest("SHA-256"))},e}();function u(e){return"string"==typeof e?(0,o.fromUtf8)(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}t.Sha256=a},36634:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WebCryptoSha256=t.Ie11Sha256=void 0,n(19455).__exportStar(n(69258),t);var r=n(71195);Object.defineProperty(t,"Ie11Sha256",{enumerable:!0,get:function(){return r.Sha256}});var i=n(32038);Object.defineProperty(t,"WebCryptoSha256",{enumerable:!0,get:function(){return i.Sha256}})},85787:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isEmptyData=void 0,t.isEmptyData=function(e){return"string"==typeof e?0===e.length:0===e.byteLength}},32038:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Sha256=void 0;var r=n(65388),i=n(14955),o=n(77226),s=function(){function e(e){this.toHash=new Uint8Array(0),this.secret=e,this.reset()}return e.prototype.update=function(e){if(!(0,r.isEmptyData)(e)){var t=(0,r.convertToBuffer)(e),n=new Uint8Array(this.toHash.byteLength+t.byteLength);n.set(this.toHash,0),n.set(t,this.toHash.byteLength),this.toHash=n}},e.prototype.digest=function(){var e=this;return this.key?this.key.then((function(t){return(0,o.locateWindow)().crypto.subtle.sign(i.SHA_256_HMAC_ALGO,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):(0,r.isEmptyData)(this.toHash)?Promise.resolve(i.EMPTY_DATA_SHA_256):Promise.resolve().then((function(){return(0,o.locateWindow)().crypto.subtle.digest(i.SHA_256_HASH,e.toHash)})).then((function(e){return Promise.resolve(new Uint8Array(e))}))},e.prototype.reset=function(){var e=this;this.toHash=new Uint8Array(0),this.secret&&void 0!==this.secret&&(this.key=new Promise((function(t,n){(0,o.locateWindow)().crypto.subtle.importKey("raw",(0,r.convertToBuffer)(e.secret),i.SHA_256_HMAC_ALGO,!1,["sign"]).then(t,n)})),this.key.catch((function(){})))},e}();t.Sha256=s},19455:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__assign:()=>o,__asyncDelegator:()=>w,__asyncGenerator:()=>b,__asyncValues:()=>_,__await:()=>v,__awaiter:()=>d,__classPrivateFieldGet:()=>M,__classPrivateFieldSet:()=>A,__createBinding:()=>h,__decorate:()=>a,__exportStar:()=>f,__extends:()=>i,__generator:()=>l,__importDefault:()=>E,__importStar:()=>D,__makeTemplateObject:()=>x,__metadata:()=>c,__param:()=>u,__read:()=>m,__rest:()=>s,__spread:()=>g,__spreadArrays:()=>y,__values:()=>p}); +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},r(e,t)};function i(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s}function u(e,t){return function(n,r){t(n,r,e)}}function c(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function d(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))}function l(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(i=s.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function m(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s}function g(){for(var e=[],t=0;t1||a(e,t)}))})}function a(e,t){try{(n=i[e](t)).value instanceof v?Promise.resolve(n.value.v).then(u,c):d(o[0][2],n)}catch(e){d(o[0][3],e)}var n}function u(e){a("next",e)}function c(e){a("throw",e)}function d(e,t){e(t),o.shift(),o.length&&a(o[0][0],o[0][1])}}function w(e){var t,n;return t={},r("next"),r("throw",(function(e){throw e})),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,i){t[r]=e[r]?function(t){return(n=!n)?{value:v(e[r](t)),done:"return"===r}:i?i(t):t}:i}}function _(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=p(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,i){(function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)})(r,i,(t=e[n](t)).done,t.value)}))}}}function x(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}function D(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function E(e){return e&&e.__esModule?e:{default:e}}function M(e,t){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return t.get(e)}function A(e,t,n){if(!t.has(e))throw new TypeError("attempted to set private field on non-instance");return t.set(e,n),n}},34602:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RawSha256=void 0;var r=n(65494),i=function(){function e(){this.state=Int32Array.from(r.INIT),this.temp=new Int32Array(64),this.buffer=new Uint8Array(64),this.bufferLength=0,this.bytesHashed=0,this.finished=!1}return e.prototype.update=function(e){if(this.finished)throw new Error("Attempted to update an already finished hash.");var t=0,n=e.byteLength;if(this.bytesHashed+=n,8*this.bytesHashed>r.MAX_HASHABLE_LENGTH)throw new Error("Cannot hash more than 2^53 - 1 bits");for(;n>0;)this.buffer[this.bufferLength++]=e[t++],n--,this.bufferLength===r.BLOCK_SIZE&&(this.hashBuffer(),this.bufferLength=0)},e.prototype.digest=function(){if(!this.finished){var e=8*this.bytesHashed,t=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),n=this.bufferLength;if(t.setUint8(this.bufferLength++,128),n%r.BLOCK_SIZE>=r.BLOCK_SIZE-8){for(var i=this.bufferLength;i>>24&255,o[4*i+1]=this.state[i]>>>16&255,o[4*i+2]=this.state[i]>>>8&255,o[4*i+3]=this.state[i]>>>0&255;return o},e.prototype.hashBuffer=function(){for(var e=this.buffer,t=this.state,n=t[0],i=t[1],o=t[2],s=t[3],a=t[4],u=t[5],c=t[6],d=t[7],l=0;l>>17|h<<15)^(h>>>19|h<<13)^h>>>10,p=((h=this.temp[l-15])>>>7|h<<25)^(h>>>18|h<<14)^h>>>3;this.temp[l]=(f+this.temp[l-7]|0)+(p+this.temp[l-16]|0)}var m=(((a>>>6|a<<26)^(a>>>11|a<<21)^(a>>>25|a<<7))+(a&u^~a&c)|0)+(d+(r.KEY[l]+this.temp[l]|0)|0)|0,g=((n>>>2|n<<30)^(n>>>13|n<<19)^(n>>>22|n<<10))+(n&i^n&o^i&o)|0;d=c,c=u,u=a,a=s+m|0,s=o,o=i,i=n,n=m+g|0}t[0]+=n,t[1]+=i,t[2]+=o,t[3]+=s,t[4]+=a,t[5]+=u,t[6]+=c,t[7]+=d},e}();t.RawSha256=i},65494:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MAX_HASHABLE_LENGTH=t.INIT=t.KEY=t.DIGEST_LENGTH=t.BLOCK_SIZE=void 0,t.BLOCK_SIZE=64,t.DIGEST_LENGTH=32,t.KEY=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),t.INIT=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],t.MAX_HASHABLE_LENGTH=Math.pow(2,53)-1},33523:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(44520).__exportStar(n(20871),t)},20871:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Sha256=void 0;var r=n(44520),i=n(65494),o=n(34602),s=n(65388),a=function(){function e(e){this.secret=e,this.hash=new o.RawSha256,this.reset()}return e.prototype.update=function(e){if(!(0,s.isEmptyData)(e)&&!this.error)try{this.hash.update((0,s.convertToBuffer)(e))}catch(e){this.error=e}},e.prototype.digestSync=function(){if(this.error)throw this.error;return this.outer?(this.outer.finished||this.outer.update(this.hash.digest()),this.outer.digest()):this.hash.digest()},e.prototype.digest=function(){return r.__awaiter(this,void 0,void 0,(function(){return r.__generator(this,(function(e){return[2,this.digestSync()]}))}))},e.prototype.reset=function(){if(this.hash=new o.RawSha256,this.secret){this.outer=new o.RawSha256;var e=function(e){var t=(0,s.convertToBuffer)(e);if(t.byteLength>i.BLOCK_SIZE){var n=new o.RawSha256;n.update(t),t=n.digest()}var r=new Uint8Array(i.BLOCK_SIZE);return r.set(t),r}(this.secret),t=new Uint8Array(i.BLOCK_SIZE);t.set(e);for(var n=0;n{"use strict";n.r(t),n.d(t,{__assign:()=>o,__asyncDelegator:()=>w,__asyncGenerator:()=>b,__asyncValues:()=>_,__await:()=>v,__awaiter:()=>d,__classPrivateFieldGet:()=>M,__classPrivateFieldSet:()=>A,__createBinding:()=>h,__decorate:()=>a,__exportStar:()=>f,__extends:()=>i,__generator:()=>l,__importDefault:()=>E,__importStar:()=>D,__makeTemplateObject:()=>x,__metadata:()=>c,__param:()=>u,__read:()=>m,__rest:()=>s,__spread:()=>g,__spreadArrays:()=>y,__values:()=>p}); +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},r(e,t)};function i(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s}function u(e,t){return function(n,r){t(n,r,e)}}function c(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function d(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))}function l(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(i=s.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function m(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s}function g(){for(var e=[],t=0;t1||a(e,t)}))})}function a(e,t){try{(n=i[e](t)).value instanceof v?Promise.resolve(n.value.v).then(u,c):d(o[0][2],n)}catch(e){d(o[0][3],e)}var n}function u(e){a("next",e)}function c(e){a("throw",e)}function d(e,t){e(t),o.shift(),o.length&&a(o[0][0],o[0][1])}}function w(e){var t,n;return t={},r("next"),r("throw",(function(e){throw e})),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,i){t[r]=e[r]?function(t){return(n=!n)?{value:v(e[r](t)),done:"return"===r}:i?i(t):t}:i}}function _(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=p(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,i){(function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)})(r,i,(t=e[n](t)).done,t.value)}))}}}function x(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}function D(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function E(e){return e&&e.__esModule?e:{default:e}}function M(e,t){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return t.get(e)}function A(e,t,n){if(!t.has(e))throw new TypeError("attempted to set private field on non-instance");return t.set(e,n),n}},23469:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(30986).__exportStar(n(13526),t)},13526:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.supportsZeroByteGCM=t.supportsSubtleCrypto=t.supportsSecureRandom=t.supportsWebCrypto=void 0;var r=n(30986),i=["decrypt","digest","encrypt","exportKey","generateKey","importKey","sign","verify"];function o(e){return"object"==typeof e&&"object"==typeof e.crypto&&"function"==typeof e.crypto.getRandomValues}function s(e){return e&&i.every((function(t){return"function"==typeof e[t]}))}t.supportsWebCrypto=function(e){return!(!o(e)||"object"!=typeof e.crypto.subtle)&&s(e.crypto.subtle)},t.supportsSecureRandom=o,t.supportsSubtleCrypto=s,t.supportsZeroByteGCM=function(e){return r.__awaiter(this,void 0,void 0,(function(){var t;return r.__generator(this,(function(n){switch(n.label){case 0:if(!s(e))return[2,!1];n.label=1;case 1:return n.trys.push([1,4,,5]),[4,e.generateKey({name:"AES-GCM",length:128},!1,["encrypt"])];case 2:return t=n.sent(),[4,e.encrypt({name:"AES-GCM",iv:new Uint8Array(Array(12)),additionalData:new Uint8Array(Array(16)),tagLength:128},t,new Uint8Array(0))];case 3:return[2,16===n.sent().byteLength];case 4:return n.sent(),[2,!1];case 5:return[2]}}))}))}},30986:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__assign:()=>o,__asyncDelegator:()=>w,__asyncGenerator:()=>b,__asyncValues:()=>_,__await:()=>v,__awaiter:()=>d,__classPrivateFieldGet:()=>M,__classPrivateFieldSet:()=>A,__createBinding:()=>h,__decorate:()=>a,__exportStar:()=>f,__extends:()=>i,__generator:()=>l,__importDefault:()=>E,__importStar:()=>D,__makeTemplateObject:()=>x,__metadata:()=>c,__param:()=>u,__read:()=>m,__rest:()=>s,__spread:()=>g,__spreadArrays:()=>y,__values:()=>p}); +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},r(e,t)};function i(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s}function u(e,t){return function(n,r){t(n,r,e)}}function c(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function d(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))}function l(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(i=s.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function m(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s}function g(){for(var e=[],t=0;t1||a(e,t)}))})}function a(e,t){try{(n=i[e](t)).value instanceof v?Promise.resolve(n.value.v).then(u,c):d(o[0][2],n)}catch(e){d(o[0][3],e)}var n}function u(e){a("next",e)}function c(e){a("throw",e)}function d(e,t){e(t),o.shift(),o.length&&a(o[0][0],o[0][1])}}function w(e){var t,n;return t={},r("next"),r("throw",(function(e){throw e})),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,i){t[r]=e[r]?function(t){return(n=!n)?{value:v(e[r](t)),done:"return"===r}:i?i(t):t}:i}}function _(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=p(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,i){(function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)})(r,i,(t=e[n](t)).done,t.value)}))}}}function x(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}function D(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function E(e){return e&&e.__esModule?e:{default:e}}function M(e,t){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return t.get(e)}function A(e,t,n){if(!t.has(e))throw new TypeError("attempted to set private field on non-instance");return t.set(e,n),n}},51024:(e,t,n)=>{"use strict";var r=n(48287).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.convertToBuffer=void 0;var i=n(84006),o=void 0!==r&&r.from?function(e){return r.from(e,"utf8")}:i.fromUtf8;t.convertToBuffer=function(e){return e instanceof Uint8Array?e:"string"==typeof e?o(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}},65388:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uint32ArrayFrom=t.numToUint8=t.isEmptyData=t.convertToBuffer=void 0;var r=n(51024);Object.defineProperty(t,"convertToBuffer",{enumerable:!0,get:function(){return r.convertToBuffer}});var i=n(70165);Object.defineProperty(t,"isEmptyData",{enumerable:!0,get:function(){return i.isEmptyData}});var o=n(15413);Object.defineProperty(t,"numToUint8",{enumerable:!0,get:function(){return o.numToUint8}});var s=n(82110);Object.defineProperty(t,"uint32ArrayFrom",{enumerable:!0,get:function(){return s.uint32ArrayFrom}})},70165:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isEmptyData=void 0,t.isEmptyData=function(e){return"string"==typeof e?0===e.length:0===e.byteLength}},15413:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.numToUint8=void 0,t.numToUint8=function(e){return new Uint8Array([(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e])}},82110:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uint32ArrayFrom=void 0,t.uint32ArrayFrom=function(e){if(!Uint32Array.from){for(var t=new Uint32Array(e.length),n=0;n{"use strict";var r=n(67526),i=n(251),o="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null; +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */t.hp=u,t.IS=50;var s=2147483647;function a(e){if(e>s)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,u.prototype),t}function u(e,t,n){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return l(e)}return c(e,t,n)}function c(e,t,n){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!u.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var n=0|m(e,t),r=a(n),i=r.write(e,t);i!==n&&(r=r.slice(0,i));return r}(e,t);if(ArrayBuffer.isView(e))return h(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if($(e,ArrayBuffer)||e&&$(e.buffer,ArrayBuffer))return f(e,t,n);if("undefined"!=typeof SharedArrayBuffer&&($(e,SharedArrayBuffer)||e&&$(e.buffer,SharedArrayBuffer)))return f(e,t,n);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var r=e.valueOf&&e.valueOf();if(null!=r&&r!==e)return u.from(r,t,n);var i=function(e){if(u.isBuffer(e)){var t=0|p(e.length),n=a(t);return 0===n.length||e.copy(n,0,0,t),n}if(void 0!==e.length)return"number"!=typeof e.length||z(e.length)?a(0):h(e);if("Buffer"===e.type&&Array.isArray(e.data))return h(e.data)}(e);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return u.from(e[Symbol.toPrimitive]("string"),t,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function d(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function l(e){return d(e),a(e<0?0:0|p(e))}function h(e){for(var t=e.length<0?0:0|p(e.length),n=a(t),r=0;r=s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s.toString(16)+" bytes");return 0|e}function m(e,t){if(u.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||$(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var n=e.length,r=arguments.length>2&&!0===arguments[2];if(!r&&0===n)return 0;for(var i=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return L(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return U(e).length;default:if(i)return r?-1:L(e).length;t=(""+t).toLowerCase(),i=!0}}function g(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return I(this,t,n);case"utf8":case"utf-8":return S(this,t,n);case"ascii":return k(this,t,n);case"latin1":case"binary":return T(this,t,n);case"base64":return A(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function y(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function v(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),z(n=+n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=u.from(t,r)),u.isBuffer(t))return 0===t.length?-1:b(e,t,n,r,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):b(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function b(e,t,n,r,i){var o,s=1,a=e.length,u=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;s=2,a/=2,u/=2,n/=2}function c(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(i){var d=-1;for(o=n;oa&&(n=a-u),o=n;o>=0;o--){for(var l=!0,h=0;hi&&(r=i):r=i;var o=t.length;r>o/2&&(r=o/2);for(var s=0;s>8,i=n%256,o.push(i),o.push(r);return o}(t,e.length-n),e,n,r)}function A(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function S(e,t,n){n=Math.min(e.length,n);for(var r=[],i=t;i239?4:c>223?3:c>191?2:1;if(i+l<=n)switch(l){case 1:c<128&&(d=c);break;case 2:128==(192&(o=e[i+1]))&&(u=(31&c)<<6|63&o)>127&&(d=u);break;case 3:o=e[i+1],s=e[i+2],128==(192&o)&&128==(192&s)&&(u=(15&c)<<12|(63&o)<<6|63&s)>2047&&(u<55296||u>57343)&&(d=u);break;case 4:o=e[i+1],s=e[i+2],a=e[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(u=(15&c)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&u<1114112&&(d=u)}null===d?(d=65533,l=1):d>65535&&(d-=65536,r.push(d>>>10&1023|55296),d=56320|1023&d),r.push(d),i+=l}return function(e){var t=e.length;if(t<=C)return String.fromCharCode.apply(String,e);var n="",r=0;for(;rn&&(e+=" ... "),""},o&&(u.prototype[o]=u.prototype.inspect),u.prototype.compare=function(e,t,n,r,i){if($(e,Uint8Array)&&(e=u.from(e,e.offset,e.byteLength)),!u.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(r>>>=0),s=(n>>>=0)-(t>>>=0),a=Math.min(o,s),c=this.slice(r,i),d=e.slice(t,n),l=0;l>>=0,isFinite(n)?(n>>>=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-t;if((void 0===n||n>i)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return w(this,e,t,n);case"utf8":case"utf-8":return _(this,e,t,n);case"ascii":return x(this,e,t,n);case"latin1":case"binary":return D(this,e,t,n);case"base64":return E(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return M(this,e,t,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var C=4096;function k(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;ir)&&(n=r);for(var i="",o=t;on)throw new RangeError("Trying to access beyond buffer length")}function O(e,t,n,r,i,o){if(!u.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function B(e,t,n,r,i,o){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function P(e,t,n,r,o){return t=+t,n>>>=0,o||B(e,0,n,4),i.write(e,t,n,r,23,4),n+4}function N(e,t,n,r,o){return t=+t,n>>>=0,o||B(e,0,n,8),i.write(e,t,n,r,52,8),n+8}u.prototype.slice=function(e,t){var n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t>>=0,t>>>=0,n||F(e,t,this.length);for(var r=this[e],i=1,o=0;++o>>=0,t>>>=0,n||F(e,t,this.length);for(var r=this[e+--t],i=1;t>0&&(i*=256);)r+=this[e+--t]*i;return r},u.prototype.readUInt8=function(e,t){return e>>>=0,t||F(e,1,this.length),this[e]},u.prototype.readUInt16LE=function(e,t){return e>>>=0,t||F(e,2,this.length),this[e]|this[e+1]<<8},u.prototype.readUInt16BE=function(e,t){return e>>>=0,t||F(e,2,this.length),this[e]<<8|this[e+1]},u.prototype.readUInt32LE=function(e,t){return e>>>=0,t||F(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},u.prototype.readUInt32BE=function(e,t){return e>>>=0,t||F(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},u.prototype.readIntLE=function(e,t,n){e>>>=0,t>>>=0,n||F(e,t,this.length);for(var r=this[e],i=1,o=0;++o=(i*=128)&&(r-=Math.pow(2,8*t)),r},u.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||F(e,t,this.length);for(var r=t,i=1,o=this[e+--r];r>0&&(i*=256);)o+=this[e+--r]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*t)),o},u.prototype.readInt8=function(e,t){return e>>>=0,t||F(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},u.prototype.readInt16LE=function(e,t){e>>>=0,t||F(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt16BE=function(e,t){e>>>=0,t||F(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt32LE=function(e,t){return e>>>=0,t||F(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},u.prototype.readInt32BE=function(e,t){return e>>>=0,t||F(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},u.prototype.readFloatLE=function(e,t){return e>>>=0,t||F(e,4,this.length),i.read(this,e,!0,23,4)},u.prototype.readFloatBE=function(e,t){return e>>>=0,t||F(e,4,this.length),i.read(this,e,!1,23,4)},u.prototype.readDoubleLE=function(e,t){return e>>>=0,t||F(e,8,this.length),i.read(this,e,!0,52,8)},u.prototype.readDoubleBE=function(e,t){return e>>>=0,t||F(e,8,this.length),i.read(this,e,!1,52,8)},u.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t>>>=0,n>>>=0,r)||O(this,e,t,n,Math.pow(2,8*n)-1,0);var i=1,o=0;for(this[t]=255&e;++o>>=0,n>>>=0,r)||O(this,e,t,n,Math.pow(2,8*n)-1,0);var i=n-1,o=1;for(this[t+i]=255&e;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+n},u.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,1,255,0),this[t]=255&e,t+1},u.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},u.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},u.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},u.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},u.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var i=Math.pow(2,8*n-1);O(this,e,t,n,i-1,-i)}var o=0,s=1,a=0;for(this[t]=255&e;++o>>=0,!r){var i=Math.pow(2,8*n-1);O(this,e,t,n,i-1,-i)}var o=n-1,s=1,a=0;for(this[t+o]=255&e;--o>=0&&(s*=256);)e<0&&0===a&&0!==this[t+o+1]&&(a=1),this[t+o]=(e/s|0)-a&255;return t+n},u.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},u.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},u.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},u.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},u.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},u.prototype.writeFloatLE=function(e,t,n){return P(this,e,t,!0,n)},u.prototype.writeFloatBE=function(e,t,n){return P(this,e,t,!1,n)},u.prototype.writeDoubleLE=function(e,t,n){return N(this,e,t,!0,n)},u.prototype.writeDoubleBE=function(e,t,n){return N(this,e,t,!1,n)},u.prototype.copy=function(e,t,n,r){if(!u.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--o)e[o+t]=this[o+n];else Uint8Array.prototype.set.call(e,this.subarray(n,r),t);return i},u.prototype.fill=function(e,t,n,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!u.isEncoding(r))throw new TypeError("Unknown encoding: "+r);if(1===e.length){var i=e.charCodeAt(0);("utf8"===r&&i<128||"latin1"===r)&&(e=i)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(t<0||this.length>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(o=t;o55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(s+1===r){(t-=3)>-1&&o.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&o.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;o.push(n)}else if(n<2048){if((t-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function U(e){return r.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(j,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function q(e,t,n,r){for(var i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}function $(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function z(e){return e!=e}var H=function(){for(var e="0123456789abcdef",t=new Array(256),n=0;n<16;++n)for(var r=16*n,i=0;i<16;++i)t[r+i]=e[n]+e[i];return t}()},77226:(e,t,n)=>{"use strict";n.r(t),n.d(t,{locateWindow:()=>i});const r={};function i(){return"undefined"!=typeof window?window:"undefined"!=typeof self?self:r}},84006:(e,t,n)=>{"use strict";n.r(t),n.d(t,{fromUtf8:()=>r,toUtf8:()=>i});const r=e=>"function"==typeof TextEncoder?function(e){return(new TextEncoder).encode(e)}(e):(e=>{const t=[];for(let n=0,r=e.length;n>6|192,63&r|128);else if(n+1>18|240,i>>12&63|128,i>>6&63|128,63&i|128)}else t.push(r>>12|224,r>>6&63|128,63&r|128)}return Uint8Array.from(t)})(e),i=e=>"function"==typeof TextDecoder?function(e){return new TextDecoder("utf-8").decode(e)}(e):(e=>{let t="";for(let n=0,r=e.length;ne.toString(16))).join("%");t+=decodeURIComponent(i)}else t+=String.fromCharCode((15&r)<<12|(63&e[++n])<<6|63&e[++n])}return t})(e)},64114:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AESCipherBlock=t.EMECipher=void 0;const i=n(80469);function o(e,t){if(16!==t.length)throw Error("len must be 16");const n=new Uint8Array(16);n[0]=2*t[0],t[15]>=128&&(n[0]=135^n[0]);for(let e=1;e<16;e++)n[e]=2*t[e],t[e-1]>=128&&(n[e]=n[e]+1);e.set(n)}function s(e,t,n){if(t.length!==n.length)throw Error(`input1.length=${t.length} is not equal to input2.length=${n.length}`);for(let r=0;r128)throw Error(`EME operates on 1 to 128 block-cipher blocks, you passed ${d}`);const l=new Uint8Array(c.length),h=yield function(e,t){return r(this,void 0,void 0,(function*(){const n=new Uint8Array(16),r=new Uint8Array(16);yield e.encrypt(r,n);const i=new Array(t);for(let e=0;e=n)break}}function _(e){return w(0,e)}function x(e){const t=Math.floor(e/y),n=e%y;let r=32+t*(g+y);return 0!==n&&(r+=g+n),r}function D(e){let n=e;if(n-=32,n<0)throw new Error(t.msgErrorEncryptedFileTooShort);const r=Math.floor(n/v);let i=n%v,o=r*y;if(0!==i&&(i-=g,i<=0))throw new Error(t.msgErrorEncryptedFileBadHeader);return o+=i,o}t.Cipher=class{constructor(e){this.dataKey=new Uint8Array(32),this.nameKey=new Uint8Array(32),this.nameTweak=new Uint8Array(16),this.dirNameEncrypt=!0,this.fileNameEnc=e}toString(){return`\ndataKey=${this.dataKey} \nnameKey=${this.nameKey}\nnameTweak=${this.nameTweak}\ndirNameEncrypt=${this.dirNameEncrypt}\nfileNameEnc=${this.fileNameEnc}\n`}encodeToString(e){if("base32"===this.fileNameEnc)return h.base32hex.stringify(e,{pad:!1}).toLowerCase();if("base64"===this.fileNameEnc)return h.base64url.stringify(e,{pad:!1});if("base32768"===this.fileNameEnc)return f.encode(e);throw Error(`unknown fileNameEnc=${this.fileNameEnc}`)}decodeString(e){if("base32"===this.fileNameEnc){if(e.endsWith("="))throw new Error(t.msgErrorBadBase32Encoding);return h.base32hex.parse(e.toUpperCase(),{loose:!0})}if("base64"===this.fileNameEnc)return h.base64url.parse(e,{loose:!0});if("base32768"===this.fileNameEnc)return f.decode(e);throw Error(`unknown fileNameEnc=${this.fileNameEnc}`)}key(e,t){return s(this,void 0,void 0,(function*(){const n=this.dataKey.length+this.nameKey.length+this.nameTweak.length;let r,i=b;return""!==t&&(i=(new TextEncoder).encode(t)),r=""===e?new Uint8Array(n):yield(0,a.scryptAsync)((new TextEncoder).encode(e),i,{N:16384,r:8,p:1,dkLen:n}),this.dataKey.set(r.slice(0,this.dataKey.length)),this.nameKey.set(r.slice(this.dataKey.length,this.dataKey.length+this.nameKey.length)),this.nameTweak.set(r.slice(this.dataKey.length+this.nameKey.length)),this}))}updateInternalKey(e,t,n){return this.dataKey=e,this.nameKey=t,this.nameTweak=n,this}getInternalKey(){return{dataKey:this.dataKey,nameKey:this.nameKey,nameTweak:this.nameTweak}}encryptSegment(e){return s(this,void 0,void 0,(function*(){if(""===e)return"";const t=(0,d.pad)((new TextEncoder).encode(e),16),n=new l.AESCipherBlock(this.nameKey),r=new l.EMECipher(n),i=yield r.encrypt(this.nameTweak,t);return this.encodeToString(i)}))}encryptFileName(e){return s(this,void 0,void 0,(function*(){const t=e.split("/");for(let e=0;e>=BigInt(8),r=r+BigInt(i)+BigInt(o),t[e]=Number(r),r>>=BigInt(8)}r!==BigInt(0)&&w(8,t)},t.encryptedSize=x,t.decryptedSize=D},19409:(e,t)=>{"use strict";t.op=void 0;t.op=class{constructor(e){if(void 0===e)this.stackBack=[],this.stackFront=[],this.length=0;else{this.stackFront=[];for(let t=e.length-1;t>=0;t--)this.stackFront.push(e[t]);this.stackBack=[],this.length=this.stackFront.length}}push(e){this.stackBack.push(e),this.length+=1}pop(){if(0!==this.length){if(0===this.stackFront.length)for(;this.stackBack.length>0;)this.stackFront.push(this.stackBack.pop());return this.length-=1,this.stackFront.pop()}}shift(){return this.pop()}size(){return this.length}front(){if(0!==this.length){if(0===this.stackFront.length)for(;this.stackBack.length>0;)this.stackFront.push(this.stackBack.pop());return this.stackFront[this.stackFront.length-1]}}back(){if(0!==this.length)return this.stackBack.length>0?this.stackBack[this.stackBack.length-1]:this.stackFront[0]}}},32506:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createCipher=t.rotl=t.sigma=void 0;const r=n(24605),i=n(36527),o=e=>Uint8Array.from(e.split("").map((e=>e.charCodeAt(0)))),s=o("expand 16-byte k"),a=o("expand 32-byte k"),u=(0,i.u32)(s),c=(0,i.u32)(a);function d(e){return e.byteOffset%4==0}t.sigma=c.slice(),t.rotl=function(e,t){return e<>>32-t};const l=64,h=16,f=2**32-1,p=new Uint32Array;t.createCipher=function(e,t){const{allowShortKeys:n,extendNonceFn:o,counterLength:s,counterRight:a,rounds:m}=(0,i.checkOpts)({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},t);if("function"!=typeof e)throw new Error("core must be a function");return(0,r.number)(s),(0,r.number)(m),(0,r.bool)(a),(0,r.bool)(n),(t,g,y,v,b=0)=>{(0,r.bytes)(t),(0,r.bytes)(g),(0,r.bytes)(y);const w=y.length;if(v||(v=new Uint8Array(w)),(0,r.bytes)(v),(0,r.number)(b),b<0||b>=f)throw new Error("arx: counter overflow");if(v.length=f)throw new Error("arx: counter overflow");const d=Math.min(l,c-i);if(y&&d===l){const e=i/4;if(i%4!=0)throw new Error("arx: invalid block position");for(let t,n=0;n0;)_.pop().fill(0);return v}}},24605:(e,t)=>{"use strict";function n(e){if(!Number.isSafeInteger(e)||e<0)throw new Error(`positive integer expected, not ${e}`)}function r(e){if("boolean"!=typeof e)throw new Error(`boolean expected, not ${e}`)}function i(e){return e instanceof Uint8Array||null!=e&&"object"==typeof e&&"Uint8Array"===e.constructor.name}function o(e,...t){if(!i(e))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(e.length))throw new Error(`Uint8Array expected of length ${t}, not of length=${e.length}`)}function s(e){if("function"!=typeof e||"function"!=typeof e.create)throw new Error("hash must be wrapped by utils.wrapConstructor");n(e.outputLen),n(e.blockLen)}function a(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function u(e,t){o(e);const n=t.outputLen;if(e.length{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.poly1305=t.wrapConstructorWithKey=void 0;const r=n(24605),i=n(36527),o=(e,t)=>255&e[t++]|(255&e[t++])<<8;class s{constructor(e){this.blockLen=16,this.outputLen=16,this.buffer=new Uint8Array(16),this.r=new Uint16Array(10),this.h=new Uint16Array(10),this.pad=new Uint16Array(8),this.pos=0,this.finished=!1,e=(0,i.toBytes)(e),(0,r.bytes)(e,32);const t=o(e,0),n=o(e,2),s=o(e,4),a=o(e,6),u=o(e,8),c=o(e,10),d=o(e,12),l=o(e,14);this.r[0]=8191&t,this.r[1]=8191&(t>>>13|n<<3),this.r[2]=7939&(n>>>10|s<<6),this.r[3]=8191&(s>>>7|a<<9),this.r[4]=255&(a>>>4|u<<12),this.r[5]=u>>>1&8190,this.r[6]=8191&(u>>>14|c<<2),this.r[7]=8065&(c>>>11|d<<5),this.r[8]=8191&(d>>>8|l<<8),this.r[9]=l>>>5&127;for(let t=0;t<8;t++)this.pad[t]=o(e,16+2*t)}process(e,t,n=!1){const r=n?0:2048,{h:i,r:s}=this,a=s[0],u=s[1],c=s[2],d=s[3],l=s[4],h=s[5],f=s[6],p=s[7],m=s[8],g=s[9],y=o(e,t+0),v=o(e,t+2),b=o(e,t+4),w=o(e,t+6),_=o(e,t+8),x=o(e,t+10),D=o(e,t+12),E=o(e,t+14);let M=i[0]+(8191&y),A=i[1]+(8191&(y>>>13|v<<3)),S=i[2]+(8191&(v>>>10|b<<6)),C=i[3]+(8191&(b>>>7|w<<9)),k=i[4]+(8191&(w>>>4|_<<12)),T=i[5]+(_>>>1&8191),I=i[6]+(8191&(_>>>14|x<<2)),R=i[7]+(8191&(x>>>11|D<<5)),F=i[8]+(8191&(D>>>8|E<<8)),O=i[9]+(E>>>5|r),B=0,P=B+M*a+A*(5*g)+S*(5*m)+C*(5*p)+k*(5*f);B=P>>>13,P&=8191,P+=T*(5*h)+I*(5*l)+R*(5*d)+F*(5*c)+O*(5*u),B+=P>>>13,P&=8191;let N=B+M*u+A*a+S*(5*g)+C*(5*m)+k*(5*p);B=N>>>13,N&=8191,N+=T*(5*f)+I*(5*h)+R*(5*l)+F*(5*d)+O*(5*c),B+=N>>>13,N&=8191;let j=B+M*c+A*u+S*a+C*(5*g)+k*(5*m);B=j>>>13,j&=8191,j+=T*(5*p)+I*(5*f)+R*(5*h)+F*(5*l)+O*(5*d),B+=j>>>13,j&=8191;let L=B+M*d+A*c+S*u+C*a+k*(5*g);B=L>>>13,L&=8191,L+=T*(5*m)+I*(5*p)+R*(5*f)+F*(5*h)+O*(5*l),B+=L>>>13,L&=8191;let U=B+M*l+A*d+S*c+C*u+k*a;B=U>>>13,U&=8191,U+=T*(5*g)+I*(5*m)+R*(5*p)+F*(5*f)+O*(5*h),B+=U>>>13,U&=8191;let q=B+M*h+A*l+S*d+C*c+k*u;B=q>>>13,q&=8191,q+=T*a+I*(5*g)+R*(5*m)+F*(5*p)+O*(5*f),B+=q>>>13,q&=8191;let $=B+M*f+A*h+S*l+C*d+k*c;B=$>>>13,$&=8191,$+=T*u+I*a+R*(5*g)+F*(5*m)+O*(5*p),B+=$>>>13,$&=8191;let z=B+M*p+A*f+S*h+C*l+k*d;B=z>>>13,z&=8191,z+=T*c+I*u+R*a+F*(5*g)+O*(5*m),B+=z>>>13,z&=8191;let H=B+M*m+A*p+S*f+C*h+k*l;B=H>>>13,H&=8191,H+=T*d+I*c+R*u+F*a+O*(5*g),B+=H>>>13,H&=8191;let K=B+M*g+A*m+S*p+C*f+k*h;B=K>>>13,K&=8191,K+=T*l+I*d+R*c+F*u+O*a,B+=K>>>13,K&=8191,B=(B<<2)+B|0,B=B+P|0,P=8191&B,B>>>=13,N+=B,i[0]=P,i[1]=N,i[2]=j,i[3]=L,i[4]=U,i[5]=q,i[6]=$,i[7]=z,i[8]=H,i[9]=K}finalize(){const{h:e,pad:t}=this,n=new Uint16Array(10);let r=e[1]>>>13;e[1]&=8191;for(let t=2;t<10;t++)e[t]+=r,r=e[t]>>>13,e[t]&=8191;e[0]+=5*r,r=e[0]>>>13,e[0]&=8191,e[1]+=r,r=e[1]>>>13,e[1]&=8191,e[2]+=r,n[0]=e[0]+5,r=n[0]>>>13,n[0]&=8191;for(let t=1;t<10;t++)n[t]=e[t]+r,r=n[t]>>>13,n[t]&=8191;n[9]-=8192;let i=(1^r)-1;for(let e=0;e<10;e++)n[e]&=i;i=~i;for(let t=0;t<10;t++)e[t]=e[t]&i|n[t];e[0]=65535&(e[0]|e[1]<<13),e[1]=65535&(e[1]>>>3|e[2]<<10),e[2]=65535&(e[2]>>>6|e[3]<<7),e[3]=65535&(e[3]>>>9|e[4]<<4),e[4]=65535&(e[4]>>>12|e[5]<<1|e[6]<<14),e[5]=65535&(e[6]>>>2|e[7]<<11),e[6]=65535&(e[7]>>>5|e[8]<<8),e[7]=65535&(e[8]>>>8|e[9]<<5);let o=e[0]+t[0];e[0]=65535&o;for(let n=1;n<8;n++)o=(e[n]+t[n]|0)+(o>>>16)|0,e[n]=65535&o}update(e){(0,r.exists)(this);const{buffer:t,blockLen:n}=this,o=(e=(0,i.toBytes)(e)).length;for(let r=0;r>>0,e[o++]=n[t]>>>8;return e}digest(){const{buffer:e,outputLen:t}=this;this.digestInto(e);const n=e.slice(0,t);return this.destroy(),n}}function a(e){const t=(t,n)=>e(n).update((0,i.toBytes)(t)).digest(),n=e(new Uint8Array(32));return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=t=>e(t),t}t.wrapConstructorWithKey=a,t.poly1305=a((e=>new s(e)))},60022:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.polyval=t.ghash=t._toGHASHKey=void 0;const r=n(36527),i=n(24605),o=16,s=new Uint8Array(16),a=(0,r.u32)(s),u=e=>(e>>>0&255)<<24|(e>>>8&255)<<16|(e>>>16&255)<<8|e>>>24&255;function c(e){e.reverse();const t=1&e[15];let n=0;for(let t=0;t>>1|n,n=(1&r)<<7}return e[0]^=225&-t,e}t._toGHASHKey=c;class d{constructor(e,t){this.blockLen=o,this.outputLen=o,this.s0=0,this.s1=0,this.s2=0,this.s3=0,this.finished=!1,e=(0,r.toBytes)(e),(0,i.bytes)(e,16);const n=(0,r.createView)(e);let s=n.getUint32(0,!1),a=n.getUint32(4,!1),c=n.getUint32(8,!1),d=n.getUint32(12,!1);const l=[];for(let e=0;e<128;e++)l.push({s0:u(s),s1:u(a),s2:u(c),s3:u(d)}),({s0:s,s1:a,s2:c,s3:d}={s3:(p=c)<<31|(m=d)>>>1,s2:(f=a)<<31|p>>>1,s1:(h=s)<<31|f>>>1,s0:h>>>1^225<<24&-(1&m)});var h,f,p,m;const g=(y=t||1024)>65536?8:y>1024?4:2;var y;if(![1,2,4,8].includes(g))throw new Error(`ghash: wrong window size=${g}, should be 2, 4 or 8`);this.W=g;const v=128/g,b=this.windowSize=2**g,w=[];for(let e=0;e>>g-s-1&1))continue;const{s0:a,s1:u,s2:c,s3:d}=l[g*e+s];n^=a,r^=u,i^=c,o^=d}w.push({s0:n,s1:r,s2:i,s3:o})}this.t=w}_updateBlock(e,t,n,r){e^=this.s0,t^=this.s1,n^=this.s2,r^=this.s3;const{W:i,t:o,windowSize:s}=this;let a=0,u=0,c=0,d=0;const l=(1<>>8*e&255;for(let e=8/i-1;e>=0;e--){const n=t>>>i*e&l,{s0:r,s1:f,s2:p,s3:m}=o[h*s+n];a^=r,u^=f,c^=p,d^=m,h+=1}}this.s0=a,this.s1=u,this.s2=c,this.s3=d}update(e){e=(0,r.toBytes)(e),(0,i.exists)(this);const t=(0,r.u32)(e),n=Math.floor(e.length/o),u=e.length%o;for(let e=0;ee(n,t.length).update((0,r.toBytes)(t)).digest(),n=e(new Uint8Array(16),0);return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=(t,n)=>e(t,n),t}t.ghash=h(((e,t)=>new d(e,t))),t.polyval=h(((e,t)=>new l(e,t)))},80469:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.unsafe=t.siv=t.gcm=t.cfb=t.cbc=t.ecb=t.ctr=t.expandKeyDecLE=t.expandKeyLE=void 0;const r=n(36527),i=n(60022),o=n(24605),s=16,a=new Uint8Array(s),u=283;function c(e){return e<<1^u&-(e>>7)}function d(e,t){let n=0;for(;t>0;t>>=1)n^=e&-(1&t),e=c(e);return n}const l=(()=>{let e=new Uint8Array(256);for(let t=0,n=1;t<256;t++,n^=c(n))e[t]=n;const t=new Uint8Array(256);t[0]=99;for(let n=0;n<255;n++){let r=e[255-n];r|=r<<8,t[e[n]]=255&(r^r>>4^r>>5^r>>6^r>>7^99)}return t})(),h=l.map(((e,t)=>l.indexOf(t))),f=e=>e<<24|e>>>8,p=e=>e<<8|e>>>24;function m(e,t){if(256!==e.length)throw new Error("Wrong sbox length");const n=new Uint32Array(256).map(((n,r)=>t(e[r]))),r=n.map(p),i=r.map(p),o=i.map(p),s=new Uint32Array(65536),a=new Uint32Array(65536),u=new Uint16Array(65536);for(let t=0;t<256;t++)for(let c=0;c<256;c++){const d=256*t+c;s[d]=n[t]^r[c],a[d]=i[t]^o[c],u[d]=e[t]<<8|e[c]}return{sbox:e,sbox2:u,T0:n,T1:r,T2:i,T3:o,T01:s,T23:a}}const g=m(l,(e=>d(e,3)<<24|e<<16|e<<8|d(e,2))),y=m(h,(e=>d(e,11)<<24|d(e,13)<<16|d(e,9)<<8|d(e,14))),v=(()=>{const e=new Uint8Array(16);for(let t=0,n=1;t<16;t++,n=c(n))e[t]=n;return e})();function b(e){(0,o.bytes)(e);const t=e.length;if(![16,24,32].includes(t))throw new Error(`aes: wrong key size: should be 16, 24 or 32, got: ${t}`);const{sbox2:n}=g,i=(0,r.u32)(e),s=i.length,a=e=>x(n,e,e,e,e),u=new Uint32Array(t+28);u.set(i);for(let e=s;e6&&e%s==4&&(t=a(t)),u[e]=u[e-s]^t}return u}function w(e){const t=b(e),n=t.slice(),r=t.length,{sbox2:i}=g,{T0:o,T1:s,T2:a,T3:u}=y;for(let e=0;e>>8&255]^a[r>>>16&255]^u[r>>>24]}return n}function _(e,t,n,r,i,o){return e[n<<8&65280|r>>>8&255]^t[i>>>8&65280|o>>>24&255]}function x(e,t,n,r,i){return e[255&t|65280&n]|e[r>>>16&255|i>>>16&65280]<<16}function D(e,t,n,r,i){const{sbox2:o,T01:s,T23:a}=g;let u=0;t^=e[u++],n^=e[u++],r^=e[u++],i^=e[u++];const c=e.length/4-2;for(let o=0;o=0;e--)n=n+(255&u[e])|0,u[e]=255&n,n>>>=8;({s0:d,s1:l,s2:h,s3:f}=D(e,c[0],c[1],c[2],c[3]))}const g=s*Math.floor(p.length/4);if(g>>0,d.setUint32(f,m,t),({s0:g,s1:y,s2:v,s3:b}=D(e,c[0],c[1],c[2],c[3]));const w=s*Math.floor(l.length/4);if(w16)throw new Error(`aes/pcks5: wrong padding byte: ${r}`);const i=e.subarray(0,-r);for(let t=0;tn(e,t),decrypt:(e,t)=>n(e,t)}})),t.ecb=(0,r.wrapCipher)({blockSize:16},(function(e,t={}){(0,o.bytes)(e);const n=!t.disablePadding;return{encrypt:(t,r)=>{(0,o.bytes)(t);const{b:i,o:s,out:a}=k(t,n,r),u=b(e);let c=0;for(;c+4<=i.length;){const{s0:e,s1:t,s2:n,s3:r}=D(u,i[c+0],i[c+1],i[c+2],i[c+3]);s[c++]=e,s[c++]=t,s[c++]=n,s[c++]=r}if(n){const e=I(t.subarray(4*c)),{s0:n,s1:r,s2:i,s3:o}=D(u,e[0],e[1],e[2],e[3]);s[c++]=n,s[c++]=r,s[c++]=i,s[c++]=o}return u.fill(0),a},decrypt:(t,i)=>{C(t);const o=w(e),s=M(t.length,i),a=(0,r.u32)(t),u=(0,r.u32)(s);for(let e=0;e+4<=a.length;){const{s0:t,s1:n,s2:r,s3:i}=E(o,a[e+0],a[e+1],a[e+2],a[e+3]);u[e++]=t,u[e++]=n,u[e++]=r,u[e++]=i}return o.fill(0),T(s,n)}}})),t.cbc=(0,r.wrapCipher)({blockSize:16,nonceLength:16},(function(e,t,n={}){(0,o.bytes)(e),(0,o.bytes)(t,16);const i=!n.disablePadding;return{encrypt:(n,o)=>{const s=b(e),{b:a,o:u,out:c}=k(n,i,o),d=(0,r.u32)(t);let l=d[0],h=d[1],f=d[2],p=d[3],m=0;for(;m+4<=a.length;)l^=a[m+0],h^=a[m+1],f^=a[m+2],p^=a[m+3],({s0:l,s1:h,s2:f,s3:p}=D(s,l,h,f,p)),u[m++]=l,u[m++]=h,u[m++]=f,u[m++]=p;if(i){const e=I(n.subarray(4*m));l^=e[0],h^=e[1],f^=e[2],p^=e[3],({s0:l,s1:h,s2:f,s3:p}=D(s,l,h,f,p)),u[m++]=l,u[m++]=h,u[m++]=f,u[m++]=p}return s.fill(0),c},decrypt:(n,o)=>{C(n);const s=w(e),a=(0,r.u32)(t),u=M(n.length,o),c=(0,r.u32)(n),d=(0,r.u32)(u);let l=a[0],h=a[1],f=a[2],p=a[3];for(let e=0;e+4<=c.length;){const t=l,n=h,r=f,i=p;l=c[e+0],h=c[e+1],f=c[e+2],p=c[e+3];const{s0:o,s1:a,s2:u,s3:m}=E(s,l,h,f,p);d[e++]=o^t,d[e++]=a^n,d[e++]=u^r,d[e++]=m^i}return s.fill(0),T(u,i)}}})),t.cfb=(0,r.wrapCipher)({blockSize:16,nonceLength:16},(function(e,t){function n(n,i,o){const a=b(e),u=n.length;o=M(u,o);const c=(0,r.u32)(n),d=(0,r.u32)(o),l=i?d:c,h=(0,r.u32)(t);let f=h[0],p=h[1],m=h[2],g=h[3];for(let e=0;e+4<=c.length;){const{s0:t,s1:n,s2:r,s3:i}=D(a,f,p,m,g);d[e+0]=c[e+0]^t,d[e+1]=c[e+1]^n,d[e+2]=c[e+2]^r,d[e+3]=c[e+3]^i,f=l[e++],p=l[e++],m=l[e++],g=l[e++]}const y=s*Math.floor(c.length/4);if(yn(e,!0,t),decrypt:(e,t)=>n(e,!1,t)}})),t.gcm=(0,r.wrapCipher)({blockSize:16,nonceLength:12,tagLength:16},(function(e,t,n){if((0,o.bytes)(t),0===t.length)throw new Error("aes/gcm: empty nonce");const s=16;function u(e,t,r){const o=R(i.ghash,!1,e,r,n);for(let e=0;e{(0,o.bytes)(e);const{xk:t,authKey:n,counter:r,tagMask:i}=c(),a=new Uint8Array(e.length+s);S(t,!1,r,e,a);const d=u(n,i,a.subarray(0,a.length-s));return a.set(d,e.length),t.fill(0),a},decrypt:e=>{if((0,o.bytes)(e),e.lengthr=>{if(!Number.isSafeInteger(r)||t>r||r>n)throw new Error(`${e}: invalid value=${r}, must be [${t}..${n}]`)};function O(e){return null!=e&&"object"==typeof e&&(e instanceof Uint32Array||"Uint32Array"===e.constructor.name)}t.siv=(0,r.wrapCipher)({blockSize:16,nonceLength:12,tagLength:16},(function(e,t,n){const s=F("AAD",0,2**36),a=F("plaintext",0,2**36),u=F("nonce",12,12),c=F("ciphertext",16,2**36+16);function d(){const n=e.length;if(16!==n&&24!==n&&32!==n)throw new Error(`key length must be 16, 24 or 32 bytes, got: ${n} bytes`);const i=b(e),o=new Uint8Array(n),s=new Uint8Array(16),a=(0,r.u32)(t);let u=0,c=a[0],d=a[1],l=a[2],h=0;for(const e of[s,o].map(r.u32)){const t=(0,r.u32)(e);for(let e=0;e{(0,o.bytes)(e),a(e.length);const{encKey:t,authKey:n}=d(),r=l(t,n,e),i=new Uint8Array(e.length+16);return i.set(r,e.length),i.set(h(t,r,e)),t.fill(0),n.fill(0),i},decrypt:e=>{(0,o.bytes)(e),c(e.length);const t=e.subarray(-16),{encKey:n,authKey:i}=d(),s=h(n,t,e.subarray(0,-16)),a=l(n,i,s);if(n.fill(0),i.fill(0),!(0,r.equalBytes)(t,a))throw new Error("invalid polyval tag");return s}}})),t.unsafe={expandKeyLE:b,expandKeyDecLE:w,encrypt:D,decrypt:E,encryptBlock:function(e,t){if((0,o.bytes)(t,16),!O(e))throw new Error("_encryptBlock accepts result of expandKeyLE");const n=(0,r.u32)(t);let{s0:i,s1:s,s2:a,s3:u}=D(e,n[0],n[1],n[2],n[3]);return n[0]=i,n[1]=s,n[2]=a,n[3]=u,t},decryptBlock:function(e,t){if((0,o.bytes)(t,16),!O(e))throw new Error("_decryptBlock accepts result of expandKeyLE");const n=(0,r.u32)(t);let{s0:i,s1:s,s2:a,s3:u}=E(e,n[0],n[1],n[2],n[3]);return n[0]=i,n[1]=s,n[2]=a,n[3]=u,t},ctrCounter:A,ctr32:S}},25297:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getWebcryptoSubtle=t.randomBytes=void 0;const n="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0;t.randomBytes=function(e=32){if(n&&"function"==typeof n.getRandomValues)return n.getRandomValues(new Uint8Array(e));throw new Error("crypto.getRandomValues must be defined")},t.getWebcryptoSubtle=function(){if(n&&"object"==typeof n.subtle&&null!=n.subtle)return n.subtle;throw new Error("crypto.subtle must be defined")}},71190:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.secretbox=t.xsalsa20poly1305=t.xsalsa20=t.salsa20=t.hsalsa=void 0;const r=n(24605),i=n(32506),o=n(31210),s=n(36527);function a(e,t,n,r,o,s=20){let a=e[0],u=t[0],c=t[1],d=t[2],l=t[3],h=e[1],f=n[0],p=n[1],m=o,g=e[2],y=t[4],v=t[5],b=t[6],w=t[7],_=e[3],x=a,D=u,E=c,M=d,A=l,S=h,C=f,k=p,T=m,I=0,R=g,F=y,O=v,B=b,P=w,N=_;for(let e=0;e{const i=16;return(0,r.bytes)(e,32),(0,r.bytes)(n,24),{encrypt:(s,a)=>{(0,r.bytes)(s);const u=s.length+32;a?(0,r.bytes)(a,u):a=new Uint8Array(u),a.set(s,32),(0,t.xsalsa20)(e,n,a,a);const c=a.subarray(0,32),d=(0,o.poly1305)(a.subarray(32),c);return a.set(d,i),a.subarray(0,i).fill(0),a.subarray(i)},decrypt:a=>{(0,r.bytes)(a);const u=a.length;if(u{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.u64Lengths=t.setBigUint64=t.wrapCipher=t.Hash=t.equalBytes=t.checkOpts=t.concatBytes=t.toBytes=t.bytesToUtf8=t.utf8ToBytes=t.asyncLoop=t.nextTick=t.numberToBytesBE=t.bytesToNumberBE=t.hexToNumber=t.hexToBytes=t.bytesToHex=t.isLE=t.createView=t.u32=t.u16=t.u8=void 0; +/*! noble-ciphers - MIT License (c) 2023 Paul Miller (paulmillr.com) */ +const r=n(24605);t.u8=e=>new Uint8Array(e.buffer,e.byteOffset,e.byteLength);t.u16=e=>new Uint16Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/2));t.u32=e=>new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4));if(t.createView=e=>new DataView(e.buffer,e.byteOffset,e.byteLength),t.isLE=68===new Uint8Array(new Uint32Array([287454020]).buffer)[0],!t.isLE)throw new Error("Non little-endian hardware is not supported");const i=Array.from({length:256},((e,t)=>t.toString(16).padStart(2,"0")));function o(e){(0,r.bytes)(e);let t="";for(let n=0;n=s._0&&e<=s._9?e-s._0:e>=s._A&&e<=s._F?e-(s._A-10):e>=s._a&&e<=s._f?e-(s._a-10):void 0}function u(e){if("string"!=typeof e)throw new Error("hex string expected, got "+typeof e);const t=e.length,n=t/2;if(t%2)throw new Error("padded hex string expected, got unpadded hex of length "+t);const r=new Uint8Array(n);for(let t=0,i=0;t{},t.asyncLoop=async function(e,n,r){let i=Date.now();for(let o=0;o=0&&e>i&o),a=Number(n&o),u=r?4:0,c=r?0:4;e.setUint32(t+u,s,r),e.setUint32(t+c,a,r)}t.wrapCipher=(e,t)=>(Object.assign(t,e),t),t.setBigUint64=l,t.u64Lengths=function(e,n){const r=new Uint8Array(16),i=(0,t.createView)(r);return l(i,0,BigInt(n?n.length:0),!0),l(i,8,BigInt(e.length),!0),r}},68489:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.gcm=t.ctr=t.cbc=t.utils=t.managedNonce=t.getWebcryptoSubtle=t.randomBytes=void 0;const r=n(25297);Object.defineProperty(t,"randomBytes",{enumerable:!0,get:function(){return r.randomBytes}}),Object.defineProperty(t,"getWebcryptoSubtle",{enumerable:!0,get:function(){return r.getWebcryptoSubtle}});const i=n(36527),o=n(24605);t.managedNonce=function(e){return(0,o.number)(e.nonceLength),(t,...n)=>({encrypt:(o,...s)=>{const{nonceLength:a}=e,u=(0,r.randomBytes)(a),c=e(t,u,...n).encrypt(o,...s),d=(0,i.concatBytes)(u,c);return c.fill(0),d},decrypt:(r,...i)=>{const{nonceLength:o}=e,s=r.subarray(0,o),a=r.subarray(o);return e(t,s,...n).decrypt(a,...i)}})},t.utils={async encrypt(e,t,n,i){const o=(0,r.getWebcryptoSubtle)(),s=await o.importKey("raw",e,t,!0,["encrypt"]),a=await o.encrypt(n,s,i);return new Uint8Array(a)},async decrypt(e,t,n,i){const o=(0,r.getWebcryptoSubtle)(),s=await o.importKey("raw",e,t,!0,["decrypt"]),a=await o.decrypt(n,s,i);return new Uint8Array(a)}};const s={CBC:"AES-CBC",CTR:"AES-CTR",GCM:"AES-GCM"};function a(e){return(n,r,i)=>{(0,o.bytes)(n),(0,o.bytes)(r);const a={name:e,length:8*n.length},u=function(e,t,n){if(e===s.CBC)return{name:s.CBC,iv:t};if(e===s.CTR)return{name:s.CTR,counter:t,length:64};if(e===s.GCM)return n?{name:s.GCM,iv:t,additionalData:n}:{name:s.GCM,iv:t};throw new Error("unknown aes block mode")}(e,r,i);return{encrypt:e=>((0,o.bytes)(e),t.utils.encrypt(n,a,u,e)),decrypt:e=>((0,o.bytes)(e),t.utils.decrypt(n,a,u,e))}}}t.cbc=a(s.CBC),t.ctr=a(s.CTR),t.gcm=a(s.GCM)},67557:(e,t)=>{"use strict";function n(e){if(!Number.isSafeInteger(e)||e<0)throw new Error(`positive integer expected, not ${e}`)}function r(e){if("boolean"!=typeof e)throw new Error(`boolean expected, not ${e}`)}function i(e){return e instanceof Uint8Array||null!=e&&"object"==typeof e&&"Uint8Array"===e.constructor.name}function o(e,...t){if(!i(e))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(e.length))throw new Error(`Uint8Array expected of length ${t}, not of length=${e.length}`)}function s(e){if("function"!=typeof e||"function"!=typeof e.create)throw new Error("Hash should be wrapped by utils.wrapConstructor");n(e.outputLen),n(e.blockLen)}function a(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function u(e,t){o(e);const n=t.outputLen;if(e.length{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.HashMD=t.Maj=t.Chi=void 0;const r=n(67557),i=n(99175);t.Chi=(e,t,n)=>e&t^~e&n;t.Maj=(e,t,n)=>e&t^e&n^t&n;class o extends i.Hash{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=(0,i.createView)(this.buffer)}update(e){(0,r.exists)(this);const{view:t,buffer:n,blockLen:o}=this,s=(e=(0,i.toBytes)(e)).length;for(let r=0;ro-a&&(this.process(n,0),a=0);for(let e=a;e>i&o),a=Number(n&o),u=r?4:0,c=r?0:4;e.setUint32(t+u,s,r),e.setUint32(t+c,a,r)}(n,o-8,BigInt(8*this.length),s),this.process(n,0);const u=(0,i.createView)(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const d=c/4,l=this.get();if(d>l.length)throw new Error("_sha2: outputLen bigger than state");for(let e=0;e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.crypto=void 0,t.crypto="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0},39615:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hmac=t.HMAC=void 0;const r=n(67557),i=n(99175);class o extends i.Hash{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,(0,r.hash)(e);const n=(0,i.toBytes)(t);if(this.iHash=e.create(),"function"!=typeof this.iHash.update)throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const o=this.blockLen,s=new Uint8Array(o);s.set(n.length>o?e.create().update(n).digest():n);for(let e=0;enew o(e,t).update(n).digest(),t.hmac.create=(e,t)=>new o(e,t)},18941:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.pbkdf2Async=t.pbkdf2=void 0;const r=n(67557),i=n(39615),o=n(99175);function s(e,t,n,s){(0,r.hash)(e);const a=(0,o.checkOpts)({dkLen:32,asyncTick:10},s),{c:u,dkLen:c,asyncTick:d}=a;if((0,r.number)(u),(0,r.number)(c),(0,r.number)(d),u<1)throw new Error("PBKDF2: iterations (c) should be >= 1");const l=(0,o.toBytes)(t),h=(0,o.toBytes)(n),f=new Uint8Array(c),p=i.hmac.create(e,l),m=p._cloneInto().update(h);return{c:u,dkLen:c,asyncTick:d,DK:f,PRF:p,PRFSalt:m}}function a(e,t,n,r,i){return e.destroy(),t.destroy(),r&&r.destroy(),i.fill(0),n}t.pbkdf2=function(e,t,n,r){const{c:i,dkLen:u,DK:c,PRF:d,PRFSalt:l}=s(e,t,n,r);let h;const f=new Uint8Array(4),p=(0,o.createView)(f),m=new Uint8Array(d.outputLen);for(let e=1,t=0;t{l._cloneInto(f).update(g).digestInto(g);for(let e=0;e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.scryptAsync=t.scrypt=void 0;const r=n(67557),i=n(22623),o=n(18941),s=n(99175);function a(e,t,n,r,i,o){let a=e[t++]^n[r++],u=e[t++]^n[r++],c=e[t++]^n[r++],d=e[t++]^n[r++],l=e[t++]^n[r++],h=e[t++]^n[r++],f=e[t++]^n[r++],p=e[t++]^n[r++],m=e[t++]^n[r++],g=e[t++]^n[r++],y=e[t++]^n[r++],v=e[t++]^n[r++],b=e[t++]^n[r++],w=e[t++]^n[r++],_=e[t++]^n[r++],x=e[t++]^n[r++],D=a,E=u,M=c,A=d,S=l,C=h,k=f,T=p,I=m,R=g,F=y,O=v,B=b,P=w,N=_,j=x;for(let e=0;e<8;e+=2)S^=(0,s.rotl)(D+B|0,7),I^=(0,s.rotl)(S+D|0,9),B^=(0,s.rotl)(I+S|0,13),D^=(0,s.rotl)(B+I|0,18),R^=(0,s.rotl)(C+E|0,7),P^=(0,s.rotl)(R+C|0,9),E^=(0,s.rotl)(P+R|0,13),C^=(0,s.rotl)(E+P|0,18),N^=(0,s.rotl)(F+k|0,7),M^=(0,s.rotl)(N+F|0,9),k^=(0,s.rotl)(M+N|0,13),F^=(0,s.rotl)(k+M|0,18),A^=(0,s.rotl)(j+O|0,7),T^=(0,s.rotl)(A+j|0,9),O^=(0,s.rotl)(T+A|0,13),j^=(0,s.rotl)(O+T|0,18),E^=(0,s.rotl)(D+A|0,7),M^=(0,s.rotl)(E+D|0,9),A^=(0,s.rotl)(M+E|0,13),D^=(0,s.rotl)(A+M|0,18),k^=(0,s.rotl)(C+S|0,7),T^=(0,s.rotl)(k+C|0,9),S^=(0,s.rotl)(T+k|0,13),C^=(0,s.rotl)(S+T|0,18),O^=(0,s.rotl)(F+R|0,7),I^=(0,s.rotl)(O+F|0,9),R^=(0,s.rotl)(I+O|0,13),F^=(0,s.rotl)(R+I|0,18),B^=(0,s.rotl)(j+N|0,7),P^=(0,s.rotl)(B+j|0,9),N^=(0,s.rotl)(P+B|0,13),j^=(0,s.rotl)(N+P|0,18);i[o++]=a+D|0,i[o++]=u+E|0,i[o++]=c+M|0,i[o++]=d+A|0,i[o++]=l+S|0,i[o++]=h+C|0,i[o++]=f+k|0,i[o++]=p+T|0,i[o++]=m+I|0,i[o++]=g+R|0,i[o++]=y+F|0,i[o++]=v+O|0,i[o++]=b+B|0,i[o++]=w+P|0,i[o++]=_+N|0,i[o++]=x+j|0}function u(e,t,n,r,i){let o=r+0,s=r+16*i;for(let r=0;r<16;r++)n[s+r]=e[t+16*(2*i-1)+r];for(let r=0;r0&&(s+=16),a(n,o,e,t+=16,n,s)}function c(e,t,n){const a=(0,s.checkOpts)({dkLen:32,asyncTick:10,maxmem:1073742848},n),{N:u,r:c,p:d,dkLen:l,asyncTick:h,maxmem:f,onProgress:p}=a;if((0,r.number)(u),(0,r.number)(c),(0,r.number)(d),(0,r.number)(l),(0,r.number)(h),(0,r.number)(f),void 0!==p&&"function"!=typeof p)throw new Error("progressCb should be function");const m=128*c,g=m/4;if(u<=1||u&u-1||u>=2**(m/8)||u>2**32)throw new Error("Scrypt: N must be larger than 1, a power of 2, less than 2^(128 * r / 8) and less than 2^32");if(d<0||d>137438953440/m)throw new Error("Scrypt: p must be a positive integer less than or equal to ((2^32 - 1) * 32) / (128 * r)");if(l<0||l>137438953440)throw new Error("Scrypt: dkLen should be positive integer less than or equal to (2^32 - 1) * 32");const y=m*(u+d);if(y>f)throw new Error(`Scrypt: parameters too large, ${y} (128 * r * (N + p)) > ${f} (maxmem)`);const v=(0,o.pbkdf2)(i.sha256,e,t,{c:1,dkLen:m*d}),b=(0,s.u32)(v),w=(0,s.u32)(new Uint8Array(m*u)),_=(0,s.u32)(new Uint8Array(m));let x=()=>{};if(p){const e=2*u*d,t=Math.max(Math.floor(e/1e4),1);let n=0;x=()=>{n++,!p||n%t&&n!==e||p(n/e)}}return{N:u,r:c,p:d,dkLen:l,blockSize32:g,V:w,B32:b,B:v,tmp:_,blockMixCb:x,asyncTick:h}}function d(e,t,n,r,s){const a=(0,o.pbkdf2)(i.sha256,e,n,{c:1,dkLen:t});return n.fill(0),r.fill(0),s.fill(0),a}t.scrypt=function(e,t,n){const{N:r,r:i,p:o,dkLen:a,blockSize32:l,V:h,B32:f,B:p,tmp:m,blockMixCb:g}=c(e,t,n);s.isLE||(0,s.byteSwap32)(f);for(let e=0;e{u(h,n,h,n+=l,i),g()})),u(h,(r-1)*l,f,t,i),g(),await(0,s.asyncLoop)(r,y,(()=>{const e=f[t+l-16]%r;for(let n=0;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.sha224=t.sha256=void 0;const r=n(37202),i=n(99175),o=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),s=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),a=new Uint32Array(64);class u extends r.HashMD{constructor(){super(64,32,8,!1),this.A=0|s[0],this.B=0|s[1],this.C=0|s[2],this.D=0|s[3],this.E=0|s[4],this.F=0|s[5],this.G=0|s[6],this.H=0|s[7]}get(){const{A:e,B:t,C:n,D:r,E:i,F:o,G:s,H:a}=this;return[e,t,n,r,i,o,s,a]}set(e,t,n,r,i,o,s,a){this.A=0|e,this.B=0|t,this.C=0|n,this.D=0|r,this.E=0|i,this.F=0|o,this.G=0|s,this.H=0|a}process(e,t){for(let n=0;n<16;n++,t+=4)a[n]=e.getUint32(t,!1);for(let e=16;e<64;e++){const t=a[e-15],n=a[e-2],r=(0,i.rotr)(t,7)^(0,i.rotr)(t,18)^t>>>3,o=(0,i.rotr)(n,17)^(0,i.rotr)(n,19)^n>>>10;a[e]=o+a[e-7]+r+a[e-16]|0}let{A:n,B:s,C:u,D:c,E:d,F:l,G:h,H:f}=this;for(let e=0;e<64;e++){const t=f+((0,i.rotr)(d,6)^(0,i.rotr)(d,11)^(0,i.rotr)(d,25))+(0,r.Chi)(d,l,h)+o[e]+a[e]|0,p=((0,i.rotr)(n,2)^(0,i.rotr)(n,13)^(0,i.rotr)(n,22))+(0,r.Maj)(n,s,u)|0;f=h,h=l,l=d,d=c+t|0,c=u,u=s,s=n,n=t+p|0}n=n+this.A|0,s=s+this.B|0,u=u+this.C|0,c=c+this.D|0,d=d+this.E|0,l=l+this.F|0,h=h+this.G|0,f=f+this.H|0,this.set(n,s,u,c,d,l,h,f)}roundClean(){a.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}class c extends u{constructor(){super(),this.A=-1056596264,this.B=914150663,this.C=812702999,this.D=-150054599,this.E=-4191439,this.F=1750603025,this.G=1694076839,this.H=-1090891868,this.outputLen=28}}t.sha256=(0,i.wrapConstructor)((()=>new u)),t.sha224=(0,i.wrapConstructor)((()=>new c))},99175:(e,t,n)=>{"use strict"; +/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */Object.defineProperty(t,"__esModule",{value:!0}),t.randomBytes=t.wrapXOFConstructorWithOpts=t.wrapConstructorWithOpts=t.wrapConstructor=t.checkOpts=t.Hash=t.concatBytes=t.toBytes=t.utf8ToBytes=t.asyncLoop=t.nextTick=t.hexToBytes=t.bytesToHex=t.byteSwap32=t.byteSwapIfBE=t.byteSwap=t.isLE=t.rotl=t.rotr=t.createView=t.u32=t.u8=t.isBytes=void 0;const r=n(25145),i=n(67557);t.isBytes=function(e){return e instanceof Uint8Array||null!=e&&"object"==typeof e&&"Uint8Array"===e.constructor.name};t.u8=e=>new Uint8Array(e.buffer,e.byteOffset,e.byteLength);t.u32=e=>new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4));t.createView=e=>new DataView(e.buffer,e.byteOffset,e.byteLength);t.rotr=(e,t)=>e<<32-t|e>>>t;t.rotl=(e,t)=>e<>>32-t>>>0,t.isLE=68===new Uint8Array(new Uint32Array([287454020]).buffer)[0];t.byteSwap=e=>e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255,t.byteSwapIfBE=t.isLE?e=>e:e=>(0,t.byteSwap)(e),t.byteSwap32=function(e){for(let n=0;nt.toString(16).padStart(2,"0")));t.bytesToHex=function(e){(0,i.bytes)(e);let t="";for(let n=0;n=s._0&&e<=s._9?e-s._0:e>=s._A&&e<=s._F?e-(s._A-10):e>=s._a&&e<=s._f?e-(s._a-10):void 0}t.hexToBytes=function(e){if("string"!=typeof e)throw new Error("hex string expected, got "+typeof e);const t=e.length,n=t/2;if(t%2)throw new Error("padded hex string expected, got unpadded hex of length "+t);const r=new Uint8Array(n);for(let t=0,i=0;t{},t.asyncLoop=async function(e,n,r){let i=Date.now();for(let o=0;o=0&&ee().update(c(t)).digest(),n=e();return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=()=>e(),t},t.wrapConstructorWithOpts=function(e){const t=(t,n)=>e(n).update(c(t)).digest(),n=e({});return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=t=>e(t),t},t.wrapXOFConstructorWithOpts=function(e){const t=(t,n)=>e(n).update(c(t)).digest(),n=e({});return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=t=>e(t),t},t.randomBytes=function(e=32){if(r.crypto&&"function"==typeof r.crypto.getRandomValues)return r.crypto.getRandomValues(new Uint8Array(e));throw new Error("crypto.getRandomValues must be defined")}},87568:(e,t,n)=>{var r=t;r.bignum=n(72344),r.define=n(47363).define,r.base=n(9673),r.constants=n(22153),r.decoders=n(22853),r.encoders=n(24669)},47363:(e,t,n)=>{var r=n(87568),i=n(56698);function o(e,t){this.name=e,this.body=t,this.decoders={},this.encoders={}}t.define=function(e,t){return new o(e,t)},o.prototype._createNamed=function(e){var t;try{t=n(18950).runInThisContext("(function "+this.name+"(entity) {\n this._initNamed(entity);\n})")}catch(e){t=function(e){this._initNamed(e)}}return i(t,e),t.prototype._initNamed=function(t){e.call(this,t)},new t(this)},o.prototype._getDecoder=function(e){return e=e||"der",this.decoders.hasOwnProperty(e)||(this.decoders[e]=this._createNamed(r.decoders[e])),this.decoders[e]},o.prototype.decode=function(e,t,n){return this._getDecoder(t).decode(e,n)},o.prototype._getEncoder=function(e){return e=e||"der",this.encoders.hasOwnProperty(e)||(this.encoders[e]=this._createNamed(r.encoders[e])),this.encoders[e]},o.prototype.encode=function(e,t,n){return this._getEncoder(t).encode(e,n)}},47227:(e,t,n)=>{var r=n(56698),i=n(9673).Reporter,o=n(48287).Buffer;function s(e,t){i.call(this,t),o.isBuffer(e)?(this.base=e,this.offset=0,this.length=e.length):this.error("Input not Buffer")}function a(e,t){if(Array.isArray(e))this.length=0,this.value=e.map((function(e){return e instanceof a||(e=new a(e,t)),this.length+=e.length,e}),this);else if("number"==typeof e){if(!(0<=e&&e<=255))return t.error("non-byte EncoderBuffer value");this.value=e,this.length=1}else if("string"==typeof e)this.value=e,this.length=o.byteLength(e);else{if(!o.isBuffer(e))return t.error("Unsupported type: "+typeof e);this.value=e,this.length=e.length}}r(s,i),t.t=s,s.prototype.save=function(){return{offset:this.offset,reporter:i.prototype.save.call(this)}},s.prototype.restore=function(e){var t=new s(this.base);return t.offset=e.offset,t.length=this.offset,this.offset=e.offset,i.prototype.restore.call(this,e.reporter),t},s.prototype.isEmpty=function(){return this.offset===this.length},s.prototype.readUInt8=function(e){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(e||"DecoderBuffer overrun")},s.prototype.skip=function(e,t){if(!(this.offset+e<=this.length))return this.error(t||"DecoderBuffer overrun");var n=new s(this.base);return n._reporterState=this._reporterState,n.offset=this.offset,n.length=this.offset+e,this.offset+=e,n},s.prototype.raw=function(e){return this.base.slice(e?e.offset:this.offset,this.length)},t.d=a,a.prototype.join=function(e,t){return e||(e=new o(this.length)),t||(t=0),0===this.length||(Array.isArray(this.value)?this.value.forEach((function(n){n.join(e,t),t+=n.length})):("number"==typeof this.value?e[t]=this.value:"string"==typeof this.value?e.write(this.value,t):o.isBuffer(this.value)&&this.value.copy(e,t),t+=this.length)),e}},9673:(e,t,n)=>{var r=t;r.Reporter=n(89220).a,r.DecoderBuffer=n(47227).t,r.EncoderBuffer=n(47227).d,r.Node=n(90993)},90993:(e,t,n)=>{var r=n(9673).Reporter,i=n(9673).EncoderBuffer,o=n(9673).DecoderBuffer,s=n(43349),a=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],u=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(a);function c(e,t){var n={};this._baseState=n,n.enc=e,n.parent=t||null,n.children=null,n.tag=null,n.args=null,n.reverseArgs=null,n.choice=null,n.optional=!1,n.any=!1,n.obj=!1,n.use=null,n.useDecoder=null,n.key=null,n.default=null,n.explicit=null,n.implicit=null,n.contains=null,n.parent||(n.children=[],this._wrap())}e.exports=c;var d=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];c.prototype.clone=function(){var e=this._baseState,t={};d.forEach((function(n){t[n]=e[n]}));var n=new this.constructor(t.parent);return n._baseState=t,n},c.prototype._wrap=function(){var e=this._baseState;u.forEach((function(t){this[t]=function(){var n=new this.constructor(this);return e.children.push(n),n[t].apply(n,arguments)}}),this)},c.prototype._init=function(e){var t=this._baseState;s(null===t.parent),e.call(this),t.children=t.children.filter((function(e){return e._baseState.parent===this}),this),s.equal(t.children.length,1,"Root node can have only one child")},c.prototype._useArgs=function(e){var t=this._baseState,n=e.filter((function(e){return e instanceof this.constructor}),this);e=e.filter((function(e){return!(e instanceof this.constructor)}),this),0!==n.length&&(s(null===t.children),t.children=n,n.forEach((function(e){e._baseState.parent=this}),this)),0!==e.length&&(s(null===t.args),t.args=e,t.reverseArgs=e.map((function(e){if("object"!=typeof e||e.constructor!==Object)return e;var t={};return Object.keys(e).forEach((function(n){n==(0|n)&&(n|=0);var r=e[n];t[r]=n})),t})))},["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"].forEach((function(e){c.prototype[e]=function(){var t=this._baseState;throw new Error(e+" not implemented for encoding: "+t.enc)}})),a.forEach((function(e){c.prototype[e]=function(){var t=this._baseState,n=Array.prototype.slice.call(arguments);return s(null===t.tag),t.tag=e,this._useArgs(n),this}})),c.prototype.use=function(e){s(e);var t=this._baseState;return s(null===t.use),t.use=e,this},c.prototype.optional=function(){return this._baseState.optional=!0,this},c.prototype.def=function(e){var t=this._baseState;return s(null===t.default),t.default=e,t.optional=!0,this},c.prototype.explicit=function(e){var t=this._baseState;return s(null===t.explicit&&null===t.implicit),t.explicit=e,this},c.prototype.implicit=function(e){var t=this._baseState;return s(null===t.explicit&&null===t.implicit),t.implicit=e,this},c.prototype.obj=function(){var e=this._baseState,t=Array.prototype.slice.call(arguments);return e.obj=!0,0!==t.length&&this._useArgs(t),this},c.prototype.key=function(e){var t=this._baseState;return s(null===t.key),t.key=e,this},c.prototype.any=function(){return this._baseState.any=!0,this},c.prototype.choice=function(e){var t=this._baseState;return s(null===t.choice),t.choice=e,this._useArgs(Object.keys(e).map((function(t){return e[t]}))),this},c.prototype.contains=function(e){var t=this._baseState;return s(null===t.use),t.contains=e,this},c.prototype._decode=function(e,t){var n=this._baseState;if(null===n.parent)return e.wrapResult(n.children[0]._decode(e,t));var r,i=n.default,s=!0,a=null;if(null!==n.key&&(a=e.enterKey(n.key)),n.optional){var u=null;if(null!==n.explicit?u=n.explicit:null!==n.implicit?u=n.implicit:null!==n.tag&&(u=n.tag),null!==u||n.any){if(s=this._peekTag(e,u,n.any),e.isError(s))return s}else{var c=e.save();try{null===n.choice?this._decodeGeneric(n.tag,e,t):this._decodeChoice(e,t),s=!0}catch(e){s=!1}e.restore(c)}}if(n.obj&&s&&(r=e.enterObject()),s){if(null!==n.explicit){var d=this._decodeTag(e,n.explicit);if(e.isError(d))return d;e=d}var l=e.offset;if(null===n.use&&null===n.choice){if(n.any)c=e.save();var h=this._decodeTag(e,null!==n.implicit?n.implicit:n.tag,n.any);if(e.isError(h))return h;n.any?i=e.raw(c):e=h}if(t&&t.track&&null!==n.tag&&t.track(e.path(),l,e.length,"tagged"),t&&t.track&&null!==n.tag&&t.track(e.path(),e.offset,e.length,"content"),n.any||(i=null===n.choice?this._decodeGeneric(n.tag,e,t):this._decodeChoice(e,t)),e.isError(i))return i;if(n.any||null!==n.choice||null===n.children||n.children.forEach((function(n){n._decode(e,t)})),n.contains&&("octstr"===n.tag||"bitstr"===n.tag)){var f=new o(i);i=this._getUse(n.contains,e._reporterState.obj)._decode(f,t)}}return n.obj&&s&&(i=e.leaveObject(r)),null===n.key||null===i&&!0!==s?null!==a&&e.exitKey(a):e.leaveKey(a,n.key,i),i},c.prototype._decodeGeneric=function(e,t,n){var r=this._baseState;return"seq"===e||"set"===e?null:"seqof"===e||"setof"===e?this._decodeList(t,e,r.args[0],n):/str$/.test(e)?this._decodeStr(t,e,n):"objid"===e&&r.args?this._decodeObjid(t,r.args[0],r.args[1],n):"objid"===e?this._decodeObjid(t,null,null,n):"gentime"===e||"utctime"===e?this._decodeTime(t,e,n):"null_"===e?this._decodeNull(t,n):"bool"===e?this._decodeBool(t,n):"objDesc"===e?this._decodeStr(t,e,n):"int"===e||"enum"===e?this._decodeInt(t,r.args&&r.args[0],n):null!==r.use?this._getUse(r.use,t._reporterState.obj)._decode(t,n):t.error("unknown tag: "+e)},c.prototype._getUse=function(e,t){var n=this._baseState;return n.useDecoder=this._use(e,t),s(null===n.useDecoder._baseState.parent),n.useDecoder=n.useDecoder._baseState.children[0],n.implicit!==n.useDecoder._baseState.implicit&&(n.useDecoder=n.useDecoder.clone(),n.useDecoder._baseState.implicit=n.implicit),n.useDecoder},c.prototype._decodeChoice=function(e,t){var n=this._baseState,r=null,i=!1;return Object.keys(n.choice).some((function(o){var s=e.save(),a=n.choice[o];try{var u=a._decode(e,t);if(e.isError(u))return!1;r={type:o,value:u},i=!0}catch(t){return e.restore(s),!1}return!0}),this),i?r:e.error("Choice not matched")},c.prototype._createEncoderBuffer=function(e){return new i(e,this.reporter)},c.prototype._encode=function(e,t,n){var r=this._baseState;if(null===r.default||r.default!==e){var i=this._encodeValue(e,t,n);if(void 0!==i&&!this._skipDefault(i,t,n))return i}},c.prototype._encodeValue=function(e,t,n){var i=this._baseState;if(null===i.parent)return i.children[0]._encode(e,t||new r);var o=null;if(this.reporter=t,i.optional&&void 0===e){if(null===i.default)return;e=i.default}var s=null,a=!1;if(i.any)o=this._createEncoderBuffer(e);else if(i.choice)o=this._encodeChoice(e,t);else if(i.contains)s=this._getUse(i.contains,n)._encode(e,t),a=!0;else if(i.children)s=i.children.map((function(n){if("null_"===n._baseState.tag)return n._encode(null,t,e);if(null===n._baseState.key)return t.error("Child should have a key");var r=t.enterKey(n._baseState.key);if("object"!=typeof e)return t.error("Child expected, but input is not object");var i=n._encode(e[n._baseState.key],t,e);return t.leaveKey(r),i}),this).filter((function(e){return e})),s=this._createEncoderBuffer(s);else if("seqof"===i.tag||"setof"===i.tag){if(!i.args||1!==i.args.length)return t.error("Too many args for : "+i.tag);if(!Array.isArray(e))return t.error("seqof/setof, but data is not Array");var u=this.clone();u._baseState.implicit=null,s=this._createEncoderBuffer(e.map((function(n){var r=this._baseState;return this._getUse(r.args[0],e)._encode(n,t)}),u))}else null!==i.use?o=this._getUse(i.use,n)._encode(e,t):(s=this._encodePrimitive(i.tag,e),a=!0);if(!i.any&&null===i.choice){var c=null!==i.implicit?i.implicit:i.tag,d=null===i.implicit?"universal":"context";null===c?null===i.use&&t.error("Tag could be omitted only for .use()"):null===i.use&&(o=this._encodeComposite(c,a,d,s))}return null!==i.explicit&&(o=this._encodeComposite(i.explicit,!1,"context",o)),o},c.prototype._encodeChoice=function(e,t){var n=this._baseState,r=n.choice[e.type];return r||s(!1,e.type+" not found in "+JSON.stringify(Object.keys(n.choice))),r._encode(e.value,t)},c.prototype._encodePrimitive=function(e,t){var n=this._baseState;if(/str$/.test(e))return this._encodeStr(t,e);if("objid"===e&&n.args)return this._encodeObjid(t,n.reverseArgs[0],n.args[1]);if("objid"===e)return this._encodeObjid(t,null,null);if("gentime"===e||"utctime"===e)return this._encodeTime(t,e);if("null_"===e)return this._encodeNull();if("int"===e||"enum"===e)return this._encodeInt(t,n.args&&n.reverseArgs[0]);if("bool"===e)return this._encodeBool(t);if("objDesc"===e)return this._encodeStr(t,e);throw new Error("Unsupported tag: "+e)},c.prototype._isNumstr=function(e){return/^[0-9 ]*$/.test(e)},c.prototype._isPrintstr=function(e){return/^[A-Za-z0-9 '\(\)\+,\-\.\/:=\?]*$/.test(e)}},89220:(e,t,n)=>{var r=n(56698);function i(e){this._reporterState={obj:null,path:[],options:e||{},errors:[]}}function o(e,t){this.path=e,this.rethrow(t)}t.a=i,i.prototype.isError=function(e){return e instanceof o},i.prototype.save=function(){var e=this._reporterState;return{obj:e.obj,pathLen:e.path.length}},i.prototype.restore=function(e){var t=this._reporterState;t.obj=e.obj,t.path=t.path.slice(0,e.pathLen)},i.prototype.enterKey=function(e){return this._reporterState.path.push(e)},i.prototype.exitKey=function(e){var t=this._reporterState;t.path=t.path.slice(0,e-1)},i.prototype.leaveKey=function(e,t,n){var r=this._reporterState;this.exitKey(e),null!==r.obj&&(r.obj[t]=n)},i.prototype.path=function(){return this._reporterState.path.join("/")},i.prototype.enterObject=function(){var e=this._reporterState,t=e.obj;return e.obj={},t},i.prototype.leaveObject=function(e){var t=this._reporterState,n=t.obj;return t.obj=e,n},i.prototype.error=function(e){var t,n=this._reporterState,r=e instanceof o;if(t=r?e:new o(n.path.map((function(e){return"["+JSON.stringify(e)+"]"})).join(""),e.message||e,e.stack),!n.options.partial)throw t;return r||n.errors.push(t),t},i.prototype.wrapResult=function(e){var t=this._reporterState;return t.options.partial?{result:this.isError(e)?null:e,errors:t.errors}:e},r(o,Error),o.prototype.rethrow=function(e){if(this.message=e+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,o),!this.stack)try{throw new Error(this.message)}catch(e){this.stack=e.stack}return this}},74598:(e,t,n)=>{var r=n(22153);t.tagClass={0:"universal",1:"application",2:"context",3:"private"},t.tagClassByName=r._reverse(t.tagClass),t.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"},t.tagByName=r._reverse(t.tag)},22153:(e,t,n)=>{var r=t;r._reverse=function(e){var t={};return Object.keys(e).forEach((function(n){(0|n)==n&&(n|=0);var r=e[n];t[r]=n})),t},r.der=n(74598)},62010:(e,t,n)=>{var r=n(56698),i=n(87568),o=i.base,s=i.bignum,a=i.constants.der;function u(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new c,this.tree._init(e.body)}function c(e){o.Node.call(this,"der",e)}function d(e,t){var n=e.readUInt8(t);if(e.isError(n))return n;var r=a.tagClass[n>>6],i=!(32&n);if(31&~n)n&=31;else{var o=n;for(n=0;!(128&~o);){if(o=e.readUInt8(t),e.isError(o))return o;n<<=7,n|=127&o}}return{cls:r,primitive:i,tag:n,tagStr:a.tag[n]}}function l(e,t,n){var r=e.readUInt8(n);if(e.isError(r))return r;if(!t&&128===r)return null;if(!(128&r))return r;var i=127&r;if(i>4)return e.error("length octect is too long");r=0;for(var o=0;o{var r=t;r.der=n(62010),r.pem=n(58903)},58903:(e,t,n)=>{var r=n(56698),i=n(48287).Buffer,o=n(62010);function s(e){o.call(this,e),this.enc="pem"}r(s,o),e.exports=s,s.prototype.decode=function(e,t){for(var n=e.toString().split(/[\r\n]+/g),r=t.label.toUpperCase(),s=/^-----(BEGIN|END) ([^-]+)-----$/,a=-1,u=-1,c=0;c{var r=n(56698),i=n(48287).Buffer,o=n(87568),s=o.base,a=o.constants.der;function u(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new c,this.tree._init(e.body)}function c(e){s.Node.call(this,"der",e)}function d(e){return e<10?"0"+e:e}e.exports=u,u.prototype.encode=function(e,t){return this.tree._encode(e,t).join()},r(c,s.Node),c.prototype._encodeComposite=function(e,t,n,r){var o,s=function(e,t,n,r){var i;"seqof"===e?e="seq":"setof"===e&&(e="set");if(a.tagByName.hasOwnProperty(e))i=a.tagByName[e];else{if("number"!=typeof e||(0|e)!==e)return r.error("Unknown tag: "+e);i=e}if(i>=31)return r.error("Multi-octet tag encoding unsupported");t||(i|=32);return i|=a.tagClassByName[n||"universal"]<<6,i}(e,t,n,this.reporter);if(r.length<128)return(o=new i(2))[0]=s,o[1]=r.length,this._createEncoderBuffer([o,r]);for(var u=1,c=r.length;c>=256;c>>=8)u++;(o=new i(2+u))[0]=s,o[1]=128|u;c=1+u;for(var d=r.length;d>0;c--,d>>=8)o[c]=255&d;return this._createEncoderBuffer([o,r])},c.prototype._encodeStr=function(e,t){if("bitstr"===t)return this._createEncoderBuffer([0|e.unused,e.data]);if("bmpstr"===t){for(var n=new i(2*e.length),r=0;r=40)return this.reporter.error("Second objid identifier OOB");e.splice(0,2,40*e[0]+e[1])}var o=0;for(r=0;r=128;s>>=7)o++}var a=new i(o),u=a.length-1;for(r=e.length-1;r>=0;r--){s=e[r];for(a[u--]=127&s;(s>>=7)>0;)a[u--]=128|127&s}return this._createEncoderBuffer(a)},c.prototype._encodeTime=function(e,t){var n,r=new Date(e);return"gentime"===t?n=[d(r.getFullYear()),d(r.getUTCMonth()+1),d(r.getUTCDate()),d(r.getUTCHours()),d(r.getUTCMinutes()),d(r.getUTCSeconds()),"Z"].join(""):"utctime"===t?n=[d(r.getFullYear()%100),d(r.getUTCMonth()+1),d(r.getUTCDate()),d(r.getUTCHours()),d(r.getUTCMinutes()),d(r.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+t+" time is not supported yet"),this._encodeStr(n,"octstr")},c.prototype._encodeNull=function(){return this._createEncoderBuffer("")},c.prototype._encodeInt=function(e,t){if("string"==typeof e){if(!t)return this.reporter.error("String int or enum given, but no values map");if(!t.hasOwnProperty(e))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(e));e=t[e]}if("number"!=typeof e&&!i.isBuffer(e)){var n=e.toArray();!e.sign&&128&n[0]&&n.unshift(0),e=new i(n)}if(i.isBuffer(e)){var r=e.length;0===e.length&&r++;var o=new i(r);return e.copy(o),0===e.length&&(o[0]=0),this._createEncoderBuffer(o)}if(e<128)return this._createEncoderBuffer(e);if(e<256)return this._createEncoderBuffer([0,e]);r=1;for(var s=e;s>=256;s>>=8)r++;for(s=(o=new Array(r)).length-1;s>=0;s--)o[s]=255&e,e>>=8;return 128&o[0]&&o.unshift(0),this._createEncoderBuffer(new i(o))},c.prototype._encodeBool=function(e){return this._createEncoderBuffer(e?255:0)},c.prototype._use=function(e,t){return"function"==typeof e&&(e=e(t)),e._getEncoder("der").tree},c.prototype._skipDefault=function(e,t,n){var r,i=this._baseState;if(null===i.default)return!1;var o=e.join();if(void 0===i.defaultBuffer&&(i.defaultBuffer=this._encodeValue(i.default,t,n).join()),o.length!==i.defaultBuffer.length)return!1;for(r=0;r{var r=t;r.der=n(70082),r.pem=n(90735)},90735:(e,t,n)=>{var r=n(56698),i=n(70082);function o(e){i.call(this,e),this.enc="pem"}r(o,i),e.exports=o,o.prototype.encode=function(e,t){for(var n=i.prototype.encode.call(this,e).toString("base64"),r=["-----BEGIN "+t.label+"-----"],o=0;o=65&&n<=70?n-55:n>=97&&n<=102?n-87:n-48&15}function u(e,t,n){var r=a(e,n);return n-1>=t&&(r|=a(e,n-1)<<4),r}function c(e,t,n,r){for(var i=0,o=Math.min(e.length,n),s=t;s=49?a-49+10:a>=17?a-17+10:a}return i}o.isBN=function(e){return e instanceof o||null!==e&&"object"==typeof e&&e.constructor.wordSize===o.wordSize&&Array.isArray(e.words)},o.max=function(e,t){return e.cmp(t)>0?e:t},o.min=function(e,t){return e.cmp(t)<0?e:t},o.prototype._init=function(e,t,n){if("number"==typeof e)return this._initNumber(e,t,n);if("object"==typeof e)return this._initArray(e,t,n);"hex"===t&&(t=16),r(t===(0|t)&&t>=2&&t<=36);var i=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(i++,this.negative=1),i=0;i-=3)s=e[i]|e[i-1]<<8|e[i-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===n)for(i=0,o=0;i>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(e,t,n){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var r=0;r=t;r-=2)i=u(e,t,r)<=18?(o-=18,s+=1,this.words[s]|=i>>>26):o+=8;else for(r=(e.length-t)%2==0?t+1:t;r=18?(o-=18,s+=1,this.words[s]|=i>>>26):o+=8;this.strip()},o.prototype._parseBase=function(e,t,n){this.words=[0],this.length=1;for(var r=0,i=1;i<=67108863;i*=t)r++;r--,i=i/t|0;for(var o=e.length-n,s=o%r,a=Math.min(o,o-s)+n,u=0,d=n;d1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var d=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],h=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(e,t,n){n.negative=t.negative^e.negative;var r=e.length+t.length|0;n.length=r,r=r-1|0;var i=0|e.words[0],o=0|t.words[0],s=i*o,a=67108863&s,u=s/67108864|0;n.words[0]=a;for(var c=1;c>>26,l=67108863&u,h=Math.min(c,t.length-1),f=Math.max(0,c-e.length+1);f<=h;f++){var p=c-f|0;d+=(s=(i=0|e.words[p])*(o=0|t.words[f])+l)/67108864|0,l=67108863&s}n.words[c]=0|l,u=0|d}return 0!==u?n.words[c]=0|u:n.length--,n.strip()}o.prototype.toString=function(e,t){var n;if(t=0|t||1,16===(e=e||10)||"hex"===e){n="";for(var i=0,o=0,s=0;s>>24-i&16777215)||s!==this.length-1?d[6-u.length]+u+n:u+n,(i+=2)>=26&&(i-=26,s--)}for(0!==o&&(n=o.toString(16)+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(e===(0|e)&&e>=2&&e<=36){var c=l[e],f=h[e];n="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modn(f).toString(e);n=(p=p.idivn(f)).isZero()?m+n:d[c-m.length]+m+n}for(this.isZero()&&(n="0"+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}r(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(e,t){return r(void 0!==s),this.toArrayLike(s,e,t)},o.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},o.prototype.toArrayLike=function(e,t,n){var i=this.byteLength(),o=n||Math.max(1,i);r(i<=o,"byte array longer than desired length"),r(o>0,"Requested array length <= 0"),this.strip();var s,a,u="le"===t,c=new e(o),d=this.clone();if(u){for(a=0;!d.isZero();a++)s=d.andln(255),d.iushrn(8),c[a]=s;for(;a=4096&&(n+=13,t>>>=13),t>=64&&(n+=7,t>>>=7),t>=8&&(n+=4,t>>>=4),t>=2&&(n+=2,t>>>=2),n+t},o.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,n=0;return 8191&t||(n+=13,t>>>=13),127&t||(n+=7,t>>>=7),15&t||(n+=4,t>>>=4),3&t||(n+=2,t>>>=2),1&t||n++,n},o.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},o.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},o.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var n=0;ne.length?this.clone().iand(e):e.clone().iand(this)},o.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},o.prototype.iuxor=function(e){var t,n;this.length>e.length?(t=this,n=e):(t=e,n=this);for(var r=0;re.length?this.clone().ixor(e):e.clone().ixor(this)},o.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},o.prototype.inotn=function(e){r("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),n=e%26;this._expand(t),n>0&&t--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-n),this.strip()},o.prototype.notn=function(e){return this.clone().inotn(e)},o.prototype.setn=function(e,t){r("number"==typeof e&&e>=0);var n=e/26|0,i=e%26;return this._expand(n+1),this.words[n]=t?this.words[n]|1<e.length?(n=this,r=e):(n=e,r=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=n.length,0!==i)this.words[this.length]=i,this.length++;else if(n!==this)for(;oe.length?this.clone().iadd(e):e.clone().iadd(this)},o.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var n,r,i=this.cmp(e);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(n=this,r=e):(n=e,r=this);for(var o=0,s=0;s>26,this.words[s]=67108863&t;for(;0!==o&&s>26,this.words[s]=67108863&t;if(0===o&&s>>13,f=0|s[1],p=8191&f,m=f>>>13,g=0|s[2],y=8191&g,v=g>>>13,b=0|s[3],w=8191&b,_=b>>>13,x=0|s[4],D=8191&x,E=x>>>13,M=0|s[5],A=8191&M,S=M>>>13,C=0|s[6],k=8191&C,T=C>>>13,I=0|s[7],R=8191&I,F=I>>>13,O=0|s[8],B=8191&O,P=O>>>13,N=0|s[9],j=8191&N,L=N>>>13,U=0|a[0],q=8191&U,$=U>>>13,z=0|a[1],H=8191&z,K=z>>>13,W=0|a[2],G=8191&W,V=W>>>13,Y=0|a[3],Z=8191&Y,J=Y>>>13,X=0|a[4],Q=8191&X,ee=X>>>13,te=0|a[5],ne=8191&te,re=te>>>13,ie=0|a[6],oe=8191&ie,se=ie>>>13,ae=0|a[7],ue=8191&ae,ce=ae>>>13,de=0|a[8],le=8191&de,he=de>>>13,fe=0|a[9],pe=8191&fe,me=fe>>>13;n.negative=e.negative^t.negative,n.length=19;var ge=(c+(r=Math.imul(l,q))|0)+((8191&(i=(i=Math.imul(l,$))+Math.imul(h,q)|0))<<13)|0;c=((o=Math.imul(h,$))+(i>>>13)|0)+(ge>>>26)|0,ge&=67108863,r=Math.imul(p,q),i=(i=Math.imul(p,$))+Math.imul(m,q)|0,o=Math.imul(m,$);var ye=(c+(r=r+Math.imul(l,H)|0)|0)+((8191&(i=(i=i+Math.imul(l,K)|0)+Math.imul(h,H)|0))<<13)|0;c=((o=o+Math.imul(h,K)|0)+(i>>>13)|0)+(ye>>>26)|0,ye&=67108863,r=Math.imul(y,q),i=(i=Math.imul(y,$))+Math.imul(v,q)|0,o=Math.imul(v,$),r=r+Math.imul(p,H)|0,i=(i=i+Math.imul(p,K)|0)+Math.imul(m,H)|0,o=o+Math.imul(m,K)|0;var ve=(c+(r=r+Math.imul(l,G)|0)|0)+((8191&(i=(i=i+Math.imul(l,V)|0)+Math.imul(h,G)|0))<<13)|0;c=((o=o+Math.imul(h,V)|0)+(i>>>13)|0)+(ve>>>26)|0,ve&=67108863,r=Math.imul(w,q),i=(i=Math.imul(w,$))+Math.imul(_,q)|0,o=Math.imul(_,$),r=r+Math.imul(y,H)|0,i=(i=i+Math.imul(y,K)|0)+Math.imul(v,H)|0,o=o+Math.imul(v,K)|0,r=r+Math.imul(p,G)|0,i=(i=i+Math.imul(p,V)|0)+Math.imul(m,G)|0,o=o+Math.imul(m,V)|0;var be=(c+(r=r+Math.imul(l,Z)|0)|0)+((8191&(i=(i=i+Math.imul(l,J)|0)+Math.imul(h,Z)|0))<<13)|0;c=((o=o+Math.imul(h,J)|0)+(i>>>13)|0)+(be>>>26)|0,be&=67108863,r=Math.imul(D,q),i=(i=Math.imul(D,$))+Math.imul(E,q)|0,o=Math.imul(E,$),r=r+Math.imul(w,H)|0,i=(i=i+Math.imul(w,K)|0)+Math.imul(_,H)|0,o=o+Math.imul(_,K)|0,r=r+Math.imul(y,G)|0,i=(i=i+Math.imul(y,V)|0)+Math.imul(v,G)|0,o=o+Math.imul(v,V)|0,r=r+Math.imul(p,Z)|0,i=(i=i+Math.imul(p,J)|0)+Math.imul(m,Z)|0,o=o+Math.imul(m,J)|0;var we=(c+(r=r+Math.imul(l,Q)|0)|0)+((8191&(i=(i=i+Math.imul(l,ee)|0)+Math.imul(h,Q)|0))<<13)|0;c=((o=o+Math.imul(h,ee)|0)+(i>>>13)|0)+(we>>>26)|0,we&=67108863,r=Math.imul(A,q),i=(i=Math.imul(A,$))+Math.imul(S,q)|0,o=Math.imul(S,$),r=r+Math.imul(D,H)|0,i=(i=i+Math.imul(D,K)|0)+Math.imul(E,H)|0,o=o+Math.imul(E,K)|0,r=r+Math.imul(w,G)|0,i=(i=i+Math.imul(w,V)|0)+Math.imul(_,G)|0,o=o+Math.imul(_,V)|0,r=r+Math.imul(y,Z)|0,i=(i=i+Math.imul(y,J)|0)+Math.imul(v,Z)|0,o=o+Math.imul(v,J)|0,r=r+Math.imul(p,Q)|0,i=(i=i+Math.imul(p,ee)|0)+Math.imul(m,Q)|0,o=o+Math.imul(m,ee)|0;var _e=(c+(r=r+Math.imul(l,ne)|0)|0)+((8191&(i=(i=i+Math.imul(l,re)|0)+Math.imul(h,ne)|0))<<13)|0;c=((o=o+Math.imul(h,re)|0)+(i>>>13)|0)+(_e>>>26)|0,_e&=67108863,r=Math.imul(k,q),i=(i=Math.imul(k,$))+Math.imul(T,q)|0,o=Math.imul(T,$),r=r+Math.imul(A,H)|0,i=(i=i+Math.imul(A,K)|0)+Math.imul(S,H)|0,o=o+Math.imul(S,K)|0,r=r+Math.imul(D,G)|0,i=(i=i+Math.imul(D,V)|0)+Math.imul(E,G)|0,o=o+Math.imul(E,V)|0,r=r+Math.imul(w,Z)|0,i=(i=i+Math.imul(w,J)|0)+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,r=r+Math.imul(y,Q)|0,i=(i=i+Math.imul(y,ee)|0)+Math.imul(v,Q)|0,o=o+Math.imul(v,ee)|0,r=r+Math.imul(p,ne)|0,i=(i=i+Math.imul(p,re)|0)+Math.imul(m,ne)|0,o=o+Math.imul(m,re)|0;var xe=(c+(r=r+Math.imul(l,oe)|0)|0)+((8191&(i=(i=i+Math.imul(l,se)|0)+Math.imul(h,oe)|0))<<13)|0;c=((o=o+Math.imul(h,se)|0)+(i>>>13)|0)+(xe>>>26)|0,xe&=67108863,r=Math.imul(R,q),i=(i=Math.imul(R,$))+Math.imul(F,q)|0,o=Math.imul(F,$),r=r+Math.imul(k,H)|0,i=(i=i+Math.imul(k,K)|0)+Math.imul(T,H)|0,o=o+Math.imul(T,K)|0,r=r+Math.imul(A,G)|0,i=(i=i+Math.imul(A,V)|0)+Math.imul(S,G)|0,o=o+Math.imul(S,V)|0,r=r+Math.imul(D,Z)|0,i=(i=i+Math.imul(D,J)|0)+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,r=r+Math.imul(w,Q)|0,i=(i=i+Math.imul(w,ee)|0)+Math.imul(_,Q)|0,o=o+Math.imul(_,ee)|0,r=r+Math.imul(y,ne)|0,i=(i=i+Math.imul(y,re)|0)+Math.imul(v,ne)|0,o=o+Math.imul(v,re)|0,r=r+Math.imul(p,oe)|0,i=(i=i+Math.imul(p,se)|0)+Math.imul(m,oe)|0,o=o+Math.imul(m,se)|0;var De=(c+(r=r+Math.imul(l,ue)|0)|0)+((8191&(i=(i=i+Math.imul(l,ce)|0)+Math.imul(h,ue)|0))<<13)|0;c=((o=o+Math.imul(h,ce)|0)+(i>>>13)|0)+(De>>>26)|0,De&=67108863,r=Math.imul(B,q),i=(i=Math.imul(B,$))+Math.imul(P,q)|0,o=Math.imul(P,$),r=r+Math.imul(R,H)|0,i=(i=i+Math.imul(R,K)|0)+Math.imul(F,H)|0,o=o+Math.imul(F,K)|0,r=r+Math.imul(k,G)|0,i=(i=i+Math.imul(k,V)|0)+Math.imul(T,G)|0,o=o+Math.imul(T,V)|0,r=r+Math.imul(A,Z)|0,i=(i=i+Math.imul(A,J)|0)+Math.imul(S,Z)|0,o=o+Math.imul(S,J)|0,r=r+Math.imul(D,Q)|0,i=(i=i+Math.imul(D,ee)|0)+Math.imul(E,Q)|0,o=o+Math.imul(E,ee)|0,r=r+Math.imul(w,ne)|0,i=(i=i+Math.imul(w,re)|0)+Math.imul(_,ne)|0,o=o+Math.imul(_,re)|0,r=r+Math.imul(y,oe)|0,i=(i=i+Math.imul(y,se)|0)+Math.imul(v,oe)|0,o=o+Math.imul(v,se)|0,r=r+Math.imul(p,ue)|0,i=(i=i+Math.imul(p,ce)|0)+Math.imul(m,ue)|0,o=o+Math.imul(m,ce)|0;var Ee=(c+(r=r+Math.imul(l,le)|0)|0)+((8191&(i=(i=i+Math.imul(l,he)|0)+Math.imul(h,le)|0))<<13)|0;c=((o=o+Math.imul(h,he)|0)+(i>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,r=Math.imul(j,q),i=(i=Math.imul(j,$))+Math.imul(L,q)|0,o=Math.imul(L,$),r=r+Math.imul(B,H)|0,i=(i=i+Math.imul(B,K)|0)+Math.imul(P,H)|0,o=o+Math.imul(P,K)|0,r=r+Math.imul(R,G)|0,i=(i=i+Math.imul(R,V)|0)+Math.imul(F,G)|0,o=o+Math.imul(F,V)|0,r=r+Math.imul(k,Z)|0,i=(i=i+Math.imul(k,J)|0)+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,r=r+Math.imul(A,Q)|0,i=(i=i+Math.imul(A,ee)|0)+Math.imul(S,Q)|0,o=o+Math.imul(S,ee)|0,r=r+Math.imul(D,ne)|0,i=(i=i+Math.imul(D,re)|0)+Math.imul(E,ne)|0,o=o+Math.imul(E,re)|0,r=r+Math.imul(w,oe)|0,i=(i=i+Math.imul(w,se)|0)+Math.imul(_,oe)|0,o=o+Math.imul(_,se)|0,r=r+Math.imul(y,ue)|0,i=(i=i+Math.imul(y,ce)|0)+Math.imul(v,ue)|0,o=o+Math.imul(v,ce)|0,r=r+Math.imul(p,le)|0,i=(i=i+Math.imul(p,he)|0)+Math.imul(m,le)|0,o=o+Math.imul(m,he)|0;var Me=(c+(r=r+Math.imul(l,pe)|0)|0)+((8191&(i=(i=i+Math.imul(l,me)|0)+Math.imul(h,pe)|0))<<13)|0;c=((o=o+Math.imul(h,me)|0)+(i>>>13)|0)+(Me>>>26)|0,Me&=67108863,r=Math.imul(j,H),i=(i=Math.imul(j,K))+Math.imul(L,H)|0,o=Math.imul(L,K),r=r+Math.imul(B,G)|0,i=(i=i+Math.imul(B,V)|0)+Math.imul(P,G)|0,o=o+Math.imul(P,V)|0,r=r+Math.imul(R,Z)|0,i=(i=i+Math.imul(R,J)|0)+Math.imul(F,Z)|0,o=o+Math.imul(F,J)|0,r=r+Math.imul(k,Q)|0,i=(i=i+Math.imul(k,ee)|0)+Math.imul(T,Q)|0,o=o+Math.imul(T,ee)|0,r=r+Math.imul(A,ne)|0,i=(i=i+Math.imul(A,re)|0)+Math.imul(S,ne)|0,o=o+Math.imul(S,re)|0,r=r+Math.imul(D,oe)|0,i=(i=i+Math.imul(D,se)|0)+Math.imul(E,oe)|0,o=o+Math.imul(E,se)|0,r=r+Math.imul(w,ue)|0,i=(i=i+Math.imul(w,ce)|0)+Math.imul(_,ue)|0,o=o+Math.imul(_,ce)|0,r=r+Math.imul(y,le)|0,i=(i=i+Math.imul(y,he)|0)+Math.imul(v,le)|0,o=o+Math.imul(v,he)|0;var Ae=(c+(r=r+Math.imul(p,pe)|0)|0)+((8191&(i=(i=i+Math.imul(p,me)|0)+Math.imul(m,pe)|0))<<13)|0;c=((o=o+Math.imul(m,me)|0)+(i>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,r=Math.imul(j,G),i=(i=Math.imul(j,V))+Math.imul(L,G)|0,o=Math.imul(L,V),r=r+Math.imul(B,Z)|0,i=(i=i+Math.imul(B,J)|0)+Math.imul(P,Z)|0,o=o+Math.imul(P,J)|0,r=r+Math.imul(R,Q)|0,i=(i=i+Math.imul(R,ee)|0)+Math.imul(F,Q)|0,o=o+Math.imul(F,ee)|0,r=r+Math.imul(k,ne)|0,i=(i=i+Math.imul(k,re)|0)+Math.imul(T,ne)|0,o=o+Math.imul(T,re)|0,r=r+Math.imul(A,oe)|0,i=(i=i+Math.imul(A,se)|0)+Math.imul(S,oe)|0,o=o+Math.imul(S,se)|0,r=r+Math.imul(D,ue)|0,i=(i=i+Math.imul(D,ce)|0)+Math.imul(E,ue)|0,o=o+Math.imul(E,ce)|0,r=r+Math.imul(w,le)|0,i=(i=i+Math.imul(w,he)|0)+Math.imul(_,le)|0,o=o+Math.imul(_,he)|0;var Se=(c+(r=r+Math.imul(y,pe)|0)|0)+((8191&(i=(i=i+Math.imul(y,me)|0)+Math.imul(v,pe)|0))<<13)|0;c=((o=o+Math.imul(v,me)|0)+(i>>>13)|0)+(Se>>>26)|0,Se&=67108863,r=Math.imul(j,Z),i=(i=Math.imul(j,J))+Math.imul(L,Z)|0,o=Math.imul(L,J),r=r+Math.imul(B,Q)|0,i=(i=i+Math.imul(B,ee)|0)+Math.imul(P,Q)|0,o=o+Math.imul(P,ee)|0,r=r+Math.imul(R,ne)|0,i=(i=i+Math.imul(R,re)|0)+Math.imul(F,ne)|0,o=o+Math.imul(F,re)|0,r=r+Math.imul(k,oe)|0,i=(i=i+Math.imul(k,se)|0)+Math.imul(T,oe)|0,o=o+Math.imul(T,se)|0,r=r+Math.imul(A,ue)|0,i=(i=i+Math.imul(A,ce)|0)+Math.imul(S,ue)|0,o=o+Math.imul(S,ce)|0,r=r+Math.imul(D,le)|0,i=(i=i+Math.imul(D,he)|0)+Math.imul(E,le)|0,o=o+Math.imul(E,he)|0;var Ce=(c+(r=r+Math.imul(w,pe)|0)|0)+((8191&(i=(i=i+Math.imul(w,me)|0)+Math.imul(_,pe)|0))<<13)|0;c=((o=o+Math.imul(_,me)|0)+(i>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,r=Math.imul(j,Q),i=(i=Math.imul(j,ee))+Math.imul(L,Q)|0,o=Math.imul(L,ee),r=r+Math.imul(B,ne)|0,i=(i=i+Math.imul(B,re)|0)+Math.imul(P,ne)|0,o=o+Math.imul(P,re)|0,r=r+Math.imul(R,oe)|0,i=(i=i+Math.imul(R,se)|0)+Math.imul(F,oe)|0,o=o+Math.imul(F,se)|0,r=r+Math.imul(k,ue)|0,i=(i=i+Math.imul(k,ce)|0)+Math.imul(T,ue)|0,o=o+Math.imul(T,ce)|0,r=r+Math.imul(A,le)|0,i=(i=i+Math.imul(A,he)|0)+Math.imul(S,le)|0,o=o+Math.imul(S,he)|0;var ke=(c+(r=r+Math.imul(D,pe)|0)|0)+((8191&(i=(i=i+Math.imul(D,me)|0)+Math.imul(E,pe)|0))<<13)|0;c=((o=o+Math.imul(E,me)|0)+(i>>>13)|0)+(ke>>>26)|0,ke&=67108863,r=Math.imul(j,ne),i=(i=Math.imul(j,re))+Math.imul(L,ne)|0,o=Math.imul(L,re),r=r+Math.imul(B,oe)|0,i=(i=i+Math.imul(B,se)|0)+Math.imul(P,oe)|0,o=o+Math.imul(P,se)|0,r=r+Math.imul(R,ue)|0,i=(i=i+Math.imul(R,ce)|0)+Math.imul(F,ue)|0,o=o+Math.imul(F,ce)|0,r=r+Math.imul(k,le)|0,i=(i=i+Math.imul(k,he)|0)+Math.imul(T,le)|0,o=o+Math.imul(T,he)|0;var Te=(c+(r=r+Math.imul(A,pe)|0)|0)+((8191&(i=(i=i+Math.imul(A,me)|0)+Math.imul(S,pe)|0))<<13)|0;c=((o=o+Math.imul(S,me)|0)+(i>>>13)|0)+(Te>>>26)|0,Te&=67108863,r=Math.imul(j,oe),i=(i=Math.imul(j,se))+Math.imul(L,oe)|0,o=Math.imul(L,se),r=r+Math.imul(B,ue)|0,i=(i=i+Math.imul(B,ce)|0)+Math.imul(P,ue)|0,o=o+Math.imul(P,ce)|0,r=r+Math.imul(R,le)|0,i=(i=i+Math.imul(R,he)|0)+Math.imul(F,le)|0,o=o+Math.imul(F,he)|0;var Ie=(c+(r=r+Math.imul(k,pe)|0)|0)+((8191&(i=(i=i+Math.imul(k,me)|0)+Math.imul(T,pe)|0))<<13)|0;c=((o=o+Math.imul(T,me)|0)+(i>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,r=Math.imul(j,ue),i=(i=Math.imul(j,ce))+Math.imul(L,ue)|0,o=Math.imul(L,ce),r=r+Math.imul(B,le)|0,i=(i=i+Math.imul(B,he)|0)+Math.imul(P,le)|0,o=o+Math.imul(P,he)|0;var Re=(c+(r=r+Math.imul(R,pe)|0)|0)+((8191&(i=(i=i+Math.imul(R,me)|0)+Math.imul(F,pe)|0))<<13)|0;c=((o=o+Math.imul(F,me)|0)+(i>>>13)|0)+(Re>>>26)|0,Re&=67108863,r=Math.imul(j,le),i=(i=Math.imul(j,he))+Math.imul(L,le)|0,o=Math.imul(L,he);var Fe=(c+(r=r+Math.imul(B,pe)|0)|0)+((8191&(i=(i=i+Math.imul(B,me)|0)+Math.imul(P,pe)|0))<<13)|0;c=((o=o+Math.imul(P,me)|0)+(i>>>13)|0)+(Fe>>>26)|0,Fe&=67108863;var Oe=(c+(r=Math.imul(j,pe))|0)+((8191&(i=(i=Math.imul(j,me))+Math.imul(L,pe)|0))<<13)|0;return c=((o=Math.imul(L,me))+(i>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,u[0]=ge,u[1]=ye,u[2]=ve,u[3]=be,u[4]=we,u[5]=_e,u[6]=xe,u[7]=De,u[8]=Ee,u[9]=Me,u[10]=Ae,u[11]=Se,u[12]=Ce,u[13]=ke,u[14]=Te,u[15]=Ie,u[16]=Re,u[17]=Fe,u[18]=Oe,0!==c&&(u[19]=c,n.length++),n};function m(e,t,n){return(new g).mulp(e,t,n)}function g(e,t){this.x=e,this.y=t}Math.imul||(p=f),o.prototype.mulTo=function(e,t){var n,r=this.length+e.length;return n=10===this.length&&10===e.length?p(this,e,t):r<63?f(this,e,t):r<1024?function(e,t,n){n.negative=t.negative^e.negative,n.length=e.length+t.length;for(var r=0,i=0,o=0;o>>26)|0)>>>26,s&=67108863}n.words[o]=a,r=s,s=i}return 0!==r?n.words[o]=r:n.length--,n.strip()}(this,e,t):m(this,e,t),n},g.prototype.makeRBT=function(e){for(var t=new Array(e),n=o.prototype._countBits(e)-1,r=0;r>=1;return r},g.prototype.permute=function(e,t,n,r,i,o){for(var s=0;s>>=1)i++;return 1<>>=13,n[2*s+1]=8191&o,o>>>=13;for(s=2*t;s>=26,t+=i/67108864|0,t+=o>>>26,this.words[n]=67108863&o}return 0!==t&&(this.words[n]=t,this.length++),this},o.prototype.muln=function(e){return this.clone().imuln(e)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),n=0;n>>i}return t}(e);if(0===t.length)return new o(1);for(var n=this,r=0;r=0);var t,n=e%26,i=(e-n)/26,o=67108863>>>26-n<<26-n;if(0!==n){var s=0;for(t=0;t>>26-n}s&&(this.words[t]=s,this.length++)}if(0!==i){for(t=this.length-1;t>=0;t--)this.words[t+i]=this.words[t];for(t=0;t=0),i=t?(t-t%26)/26:0;var o=e%26,s=Math.min((e-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,c=0;c=0&&(0!==d||c>=i);c--){var l=0|this.words[c];this.words[c]=d<<26-o|l>>>o,d=l&a}return u&&0!==d&&(u.words[u.length++]=d),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(e,t,n){return r(0===this.negative),this.iushrn(e,t,n)},o.prototype.shln=function(e){return this.clone().ishln(e)},o.prototype.ushln=function(e){return this.clone().iushln(e)},o.prototype.shrn=function(e){return this.clone().ishrn(e)},o.prototype.ushrn=function(e){return this.clone().iushrn(e)},o.prototype.testn=function(e){r("number"==typeof e&&e>=0);var t=e%26,n=(e-t)/26,i=1<=0);var t=e%26,n=(e-t)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==t&&n++,this.length=Math.min(n,this.length),0!==t){var i=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},o.prototype.isubn=function(e){if(r("number"==typeof e),r(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[i+n]=67108863&o}for(;i>26,this.words[i+n]=67108863&o;if(0===a)return this.strip();for(r(-1===a),a=0,i=0;i>26,this.words[i]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(e,t){var n=(this.length,e.length),r=this.clone(),i=e,s=0|i.words[i.length-1];0!==(n=26-this._countBits(s))&&(i=i.ushln(n),r.iushln(n),s=0|i.words[i.length-1]);var a,u=r.length-i.length;if("mod"!==t){(a=new o(null)).length=u+1,a.words=new Array(a.length);for(var c=0;c=0;l--){var h=67108864*(0|r.words[i.length+l])+(0|r.words[i.length+l-1]);for(h=Math.min(h/s|0,67108863),r._ishlnsubmul(i,h,l);0!==r.negative;)h--,r.negative=0,r._ishlnsubmul(i,1,l),r.isZero()||(r.negative^=1);a&&(a.words[l]=h)}return a&&a.strip(),r.strip(),"div"!==t&&0!==n&&r.iushrn(n),{div:a||null,mod:r}},o.prototype.divmod=function(e,t,n){return r(!e.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===e.negative?(a=this.neg().divmod(e,t),"mod"!==t&&(i=a.div.neg()),"div"!==t&&(s=a.mod.neg(),n&&0!==s.negative&&s.iadd(e)),{div:i,mod:s}):0===this.negative&&0!==e.negative?(a=this.divmod(e.neg(),t),"mod"!==t&&(i=a.div.neg()),{div:i,mod:a.mod}):this.negative&e.negative?(a=this.neg().divmod(e.neg(),t),"div"!==t&&(s=a.mod.neg(),n&&0!==s.negative&&s.isub(e)),{div:a.div,mod:s}):e.length>this.length||this.cmp(e)<0?{div:new o(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new o(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new o(this.modn(e.words[0]))}:this._wordDiv(e,t);var i,s,a},o.prototype.div=function(e){return this.divmod(e,"div",!1).div},o.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},o.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},o.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var n=0!==t.div.negative?t.mod.isub(e):t.mod,r=e.ushrn(1),i=e.andln(1),o=n.cmp(r);return o<0||1===i&&0===o?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},o.prototype.modn=function(e){r(e<=67108863);for(var t=(1<<26)%e,n=0,i=this.length-1;i>=0;i--)n=(t*n+(0|this.words[i]))%e;return n},o.prototype.idivn=function(e){r(e<=67108863);for(var t=0,n=this.length-1;n>=0;n--){var i=(0|this.words[n])+67108864*t;this.words[n]=i/e|0,t=i%e}return this.strip()},o.prototype.divn=function(e){return this.clone().idivn(e)},o.prototype.egcd=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i=new o(1),s=new o(0),a=new o(0),u=new o(1),c=0;t.isEven()&&n.isEven();)t.iushrn(1),n.iushrn(1),++c;for(var d=n.clone(),l=t.clone();!t.isZero();){for(var h=0,f=1;!(t.words[0]&f)&&h<26;++h,f<<=1);if(h>0)for(t.iushrn(h);h-- >0;)(i.isOdd()||s.isOdd())&&(i.iadd(d),s.isub(l)),i.iushrn(1),s.iushrn(1);for(var p=0,m=1;!(n.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(n.iushrn(p);p-- >0;)(a.isOdd()||u.isOdd())&&(a.iadd(d),u.isub(l)),a.iushrn(1),u.iushrn(1);t.cmp(n)>=0?(t.isub(n),i.isub(a),s.isub(u)):(n.isub(t),a.isub(i),u.isub(s))}return{a,b:u,gcd:n.iushln(c)}},o.prototype._invmp=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i,s=new o(1),a=new o(0),u=n.clone();t.cmpn(1)>0&&n.cmpn(1)>0;){for(var c=0,d=1;!(t.words[0]&d)&&c<26;++c,d<<=1);if(c>0)for(t.iushrn(c);c-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);for(var l=0,h=1;!(n.words[0]&h)&&l<26;++l,h<<=1);if(l>0)for(n.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(u),a.iushrn(1);t.cmp(n)>=0?(t.isub(n),s.isub(a)):(n.isub(t),a.isub(s))}return(i=0===t.cmpn(1)?s:a).cmpn(0)<0&&i.iadd(e),i},o.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),n=e.clone();t.negative=0,n.negative=0;for(var r=0;t.isEven()&&n.isEven();r++)t.iushrn(1),n.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;n.isEven();)n.iushrn(1);var i=t.cmp(n);if(i<0){var o=t;t=n,n=o}else if(0===i||0===n.cmpn(1))break;t.isub(n)}return n.iushln(r)},o.prototype.invm=function(e){return this.egcd(e).a.umod(e)},o.prototype.isEven=function(){return!(1&this.words[0])},o.prototype.isOdd=function(){return!(1&~this.words[0])},o.prototype.andln=function(e){return this.words[0]&e},o.prototype.bincn=function(e){r("number"==typeof e);var t=e%26,n=(e-t)/26,i=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(e){var t,n=e<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this.strip(),this.length>1)t=1;else{n&&(e=-e),r(e<=67108863,"Number is too big");var i=0|this.words[0];t=i===e?0:ie.length)return 1;if(this.length=0;n--){var r=0|this.words[n],i=0|e.words[n];if(r!==i){ri&&(t=1);break}}return t},o.prototype.gtn=function(e){return 1===this.cmpn(e)},o.prototype.gt=function(e){return 1===this.cmp(e)},o.prototype.gten=function(e){return this.cmpn(e)>=0},o.prototype.gte=function(e){return this.cmp(e)>=0},o.prototype.ltn=function(e){return-1===this.cmpn(e)},o.prototype.lt=function(e){return-1===this.cmp(e)},o.prototype.lten=function(e){return this.cmpn(e)<=0},o.prototype.lte=function(e){return this.cmp(e)<=0},o.prototype.eqn=function(e){return 0===this.cmpn(e)},o.prototype.eq=function(e){return 0===this.cmp(e)},o.red=function(e){return new D(e)},o.prototype.toRed=function(e){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},o.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(e){return this.red=e,this},o.prototype.forceRed=function(e){return r(!this.red,"Already a number in reduction context"),this._forceRed(e)},o.prototype.redAdd=function(e){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},o.prototype.redIAdd=function(e){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},o.prototype.redSub=function(e){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},o.prototype.redISub=function(e){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},o.prototype.redShl=function(e){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},o.prototype.redMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},o.prototype.redIMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},o.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(e){return r(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var y={k256:null,p224:null,p192:null,p25519:null};function v(e,t){this.name=e,this.p=new o(t,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function b(){v.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function w(){v.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function _(){v.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function x(){v.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function D(e){if("string"==typeof e){var t=o._prime(e);this.m=t.p,this.prime=t}else r(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function E(e){D.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}v.prototype._tmp=function(){var e=new o(null);return e.words=new Array(Math.ceil(this.n/13)),e},v.prototype.ireduce=function(e){var t,n=e;do{this.split(n,this.tmp),t=(n=(n=this.imulK(n)).iadd(this.tmp)).bitLength()}while(t>this.n);var r=t0?n.isub(this.p):void 0!==n.strip?n.strip():n._strip(),n},v.prototype.split=function(e,t){e.iushrn(this.n,0,t)},v.prototype.imulK=function(e){return e.imul(this.k)},i(b,v),b.prototype.split=function(e,t){for(var n=4194303,r=Math.min(e.length,9),i=0;i>>22,o=s}o>>>=22,e.words[i-10]=o,0===o&&e.length>10?e.length-=10:e.length-=9},b.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,n=0;n>>=26,e.words[n]=i,t=r}return 0!==t&&(e.words[e.length++]=t),e},o._prime=function(e){if(y[e])return y[e];var t;if("k256"===e)t=new b;else if("p224"===e)t=new w;else if("p192"===e)t=new _;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new x}return y[e]=t,t},D.prototype._verify1=function(e){r(0===e.negative,"red works only with positives"),r(e.red,"red works only with red numbers")},D.prototype._verify2=function(e,t){r(!(e.negative|t.negative),"red works only with positives"),r(e.red&&e.red===t.red,"red works only with red numbers")},D.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},D.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},D.prototype.add=function(e,t){this._verify2(e,t);var n=e.add(t);return n.cmp(this.m)>=0&&n.isub(this.m),n._forceRed(this)},D.prototype.iadd=function(e,t){this._verify2(e,t);var n=e.iadd(t);return n.cmp(this.m)>=0&&n.isub(this.m),n},D.prototype.sub=function(e,t){this._verify2(e,t);var n=e.sub(t);return n.cmpn(0)<0&&n.iadd(this.m),n._forceRed(this)},D.prototype.isub=function(e,t){this._verify2(e,t);var n=e.isub(t);return n.cmpn(0)<0&&n.iadd(this.m),n},D.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},D.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},D.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},D.prototype.isqr=function(e){return this.imul(e,e.clone())},D.prototype.sqr=function(e){return this.mul(e,e)},D.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(r(t%2==1),3===t){var n=this.m.add(new o(1)).iushrn(2);return this.pow(e,n)}for(var i=this.m.subn(1),s=0;!i.isZero()&&0===i.andln(1);)s++,i.iushrn(1);r(!i.isZero());var a=new o(1).toRed(this),u=a.redNeg(),c=this.m.subn(1).iushrn(1),d=this.m.bitLength();for(d=new o(2*d*d).toRed(this);0!==this.pow(d,c).cmp(u);)d.redIAdd(u);for(var l=this.pow(d,i),h=this.pow(e,i.addn(1).iushrn(1)),f=this.pow(e,i),p=s;0!==f.cmp(a);){for(var m=f,g=0;0!==m.cmp(a);g++)m=m.redSqr();r(g=0;r--){for(var c=t.words[r],d=u-1;d>=0;d--){var l=c>>d&1;i!==n[0]&&(i=this.sqr(i)),0!==l||0!==s?(s<<=1,s|=l,(4===++a||0===r&&0===d)&&(i=this.mul(i,n[s]),a=0,s=0)):a=0}u=26}return i},D.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},D.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},o.mont=function(e){return new E(e)},i(E,D),E.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},E.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},E.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var n=e.imul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=n.isub(r).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},E.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new o(0)._forceRed(this);var n=e.mul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=n.isub(r).iushrn(this.shift),s=i;return i.cmp(this.m)>=0?s=i.isub(this.m):i.cmpn(0)<0&&(s=i.iadd(this.m)),s._forceRed(this)},E.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=n.nmd(e),this)},67526:(e,t)=>{"use strict";t.byteLength=function(e){var t=a(e),n=t[0],r=t[1];return 3*(n+r)/4-r},t.toByteArray=function(e){var t,n,o=a(e),s=o[0],u=o[1],c=new i(function(e,t,n){return 3*(t+n)/4-n}(0,s,u)),d=0,l=u>0?s-4:s;for(n=0;n>16&255,c[d++]=t>>8&255,c[d++]=255&t;2===u&&(t=r[e.charCodeAt(n)]<<2|r[e.charCodeAt(n+1)]>>4,c[d++]=255&t);1===u&&(t=r[e.charCodeAt(n)]<<10|r[e.charCodeAt(n+1)]<<4|r[e.charCodeAt(n+2)]>>2,c[d++]=t>>8&255,c[d++]=255&t);return c},t.fromByteArray=function(e){for(var t,r=e.length,i=r%3,o=[],s=16383,a=0,c=r-i;ac?c:a+s));1===i?(t=e[r-1],o.push(n[t>>2]+n[t<<4&63]+"==")):2===i&&(t=(e[r-2]<<8)+e[r-1],o.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"="));return o.join("")};for(var n=[],r=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0;s<64;++s)n[s]=o[s],r[o.charCodeAt(s)]=s;function a(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function u(e,t,r){for(var i,o,s=[],a=t;a>18&63]+n[o>>12&63]+n[o>>6&63]+n[63&o]);return s.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},39404:function(e,t,n){!function(e,t){"use strict";function r(e,t){if(!e)throw new Error(t||"Assertion failed")}function i(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}function o(e,t,n){if(o.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(n=t,t=10),this._init(e||0,t||10,n||"be"))}var s;"object"==typeof e?e.exports=o:t.BN=o,o.BN=o,o.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:n(47790).Buffer}catch(e){}function a(e,t){var n=e.charCodeAt(t);return n>=48&&n<=57?n-48:n>=65&&n<=70?n-55:n>=97&&n<=102?n-87:void r(!1,"Invalid character in "+e)}function u(e,t,n){var r=a(e,n);return n-1>=t&&(r|=a(e,n-1)<<4),r}function c(e,t,n,i){for(var o=0,s=0,a=Math.min(e.length,n),u=t;u=49?c-49+10:c>=17?c-17+10:c,r(c>=0&&s0?e:t},o.min=function(e,t){return e.cmp(t)<0?e:t},o.prototype._init=function(e,t,n){if("number"==typeof e)return this._initNumber(e,t,n);if("object"==typeof e)return this._initArray(e,t,n);"hex"===t&&(t=16),r(t===(0|t)&&t>=2&&t<=36);var i=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(i++,this.negative=1),i=0;i-=3)s=e[i]|e[i-1]<<8|e[i-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===n)for(i=0,o=0;i>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this._strip()},o.prototype._parseHex=function(e,t,n){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var r=0;r=t;r-=2)i=u(e,t,r)<=18?(o-=18,s+=1,this.words[s]|=i>>>26):o+=8;else for(r=(e.length-t)%2==0?t+1:t;r=18?(o-=18,s+=1,this.words[s]|=i>>>26):o+=8;this._strip()},o.prototype._parseBase=function(e,t,n){this.words=[0],this.length=1;for(var r=0,i=1;i<=67108863;i*=t)r++;r--,i=i/t|0;for(var o=e.length-n,s=o%r,a=Math.min(o,o-s)+n,u=0,d=n;d1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{o.prototype[Symbol.for("nodejs.util.inspect.custom")]=l}catch(e){o.prototype.inspect=l}else o.prototype.inspect=l;function l(){return(this.red?""}var h=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],f=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(e,t){var n;if(t=0|t||1,16===(e=e||10)||"hex"===e){n="";for(var i=0,o=0,s=0;s>>24-i&16777215,(i+=2)>=26&&(i-=26,s--),n=0!==o||s!==this.length-1?h[6-u.length]+u+n:u+n}for(0!==o&&(n=o.toString(16)+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(e===(0|e)&&e>=2&&e<=36){var c=f[e],d=p[e];n="";var l=this.clone();for(l.negative=0;!l.isZero();){var m=l.modrn(d).toString(e);n=(l=l.idivn(d)).isZero()?m+n:h[c-m.length]+m+n}for(this.isZero()&&(n="0"+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}r(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},o.prototype.toJSON=function(){return this.toString(16,2)},s&&(o.prototype.toBuffer=function(e,t){return this.toArrayLike(s,e,t)}),o.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)};function m(e,t,n){n.negative=t.negative^e.negative;var r=e.length+t.length|0;n.length=r,r=r-1|0;var i=0|e.words[0],o=0|t.words[0],s=i*o,a=67108863&s,u=s/67108864|0;n.words[0]=a;for(var c=1;c>>26,l=67108863&u,h=Math.min(c,t.length-1),f=Math.max(0,c-e.length+1);f<=h;f++){var p=c-f|0;d+=(s=(i=0|e.words[p])*(o=0|t.words[f])+l)/67108864|0,l=67108863&s}n.words[c]=0|l,u=0|d}return 0!==u?n.words[c]=0|u:n.length--,n._strip()}o.prototype.toArrayLike=function(e,t,n){this._strip();var i=this.byteLength(),o=n||Math.max(1,i);r(i<=o,"byte array longer than desired length"),r(o>0,"Requested array length <= 0");var s=function(e,t){return e.allocUnsafe?e.allocUnsafe(t):new e(t)}(e,o);return this["_toArrayLike"+("le"===t?"LE":"BE")](s,i),s},o.prototype._toArrayLikeLE=function(e,t){for(var n=0,r=0,i=0,o=0;i>8&255),n>16&255),6===o?(n>24&255),r=0,o=0):(r=s>>>24,o+=2)}if(n=0&&(e[n--]=s>>8&255),n>=0&&(e[n--]=s>>16&255),6===o?(n>=0&&(e[n--]=s>>24&255),r=0,o=0):(r=s>>>24,o+=2)}if(n>=0)for(e[n--]=r;n>=0;)e[n--]=0},Math.clz32?o.prototype._countBits=function(e){return 32-Math.clz32(e)}:o.prototype._countBits=function(e){var t=e,n=0;return t>=4096&&(n+=13,t>>>=13),t>=64&&(n+=7,t>>>=7),t>=8&&(n+=4,t>>>=4),t>=2&&(n+=2,t>>>=2),n+t},o.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,n=0;return 8191&t||(n+=13,t>>>=13),127&t||(n+=7,t>>>=7),15&t||(n+=4,t>>>=4),3&t||(n+=2,t>>>=2),1&t||n++,n},o.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},o.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},o.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var n=0;ne.length?this.clone().iand(e):e.clone().iand(this)},o.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},o.prototype.iuxor=function(e){var t,n;this.length>e.length?(t=this,n=e):(t=e,n=this);for(var r=0;re.length?this.clone().ixor(e):e.clone().ixor(this)},o.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},o.prototype.inotn=function(e){r("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),n=e%26;this._expand(t),n>0&&t--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-n),this._strip()},o.prototype.notn=function(e){return this.clone().inotn(e)},o.prototype.setn=function(e,t){r("number"==typeof e&&e>=0);var n=e/26|0,i=e%26;return this._expand(n+1),this.words[n]=t?this.words[n]|1<e.length?(n=this,r=e):(n=e,r=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=n.length,0!==i)this.words[this.length]=i,this.length++;else if(n!==this)for(;oe.length?this.clone().iadd(e):e.clone().iadd(this)},o.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var n,r,i=this.cmp(e);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(n=this,r=e):(n=e,r=this);for(var o=0,s=0;s>26,this.words[s]=67108863&t;for(;0!==o&&s>26,this.words[s]=67108863&t;if(0===o&&s>>13,f=0|s[1],p=8191&f,m=f>>>13,g=0|s[2],y=8191&g,v=g>>>13,b=0|s[3],w=8191&b,_=b>>>13,x=0|s[4],D=8191&x,E=x>>>13,M=0|s[5],A=8191&M,S=M>>>13,C=0|s[6],k=8191&C,T=C>>>13,I=0|s[7],R=8191&I,F=I>>>13,O=0|s[8],B=8191&O,P=O>>>13,N=0|s[9],j=8191&N,L=N>>>13,U=0|a[0],q=8191&U,$=U>>>13,z=0|a[1],H=8191&z,K=z>>>13,W=0|a[2],G=8191&W,V=W>>>13,Y=0|a[3],Z=8191&Y,J=Y>>>13,X=0|a[4],Q=8191&X,ee=X>>>13,te=0|a[5],ne=8191&te,re=te>>>13,ie=0|a[6],oe=8191&ie,se=ie>>>13,ae=0|a[7],ue=8191&ae,ce=ae>>>13,de=0|a[8],le=8191&de,he=de>>>13,fe=0|a[9],pe=8191&fe,me=fe>>>13;n.negative=e.negative^t.negative,n.length=19;var ge=(c+(r=Math.imul(l,q))|0)+((8191&(i=(i=Math.imul(l,$))+Math.imul(h,q)|0))<<13)|0;c=((o=Math.imul(h,$))+(i>>>13)|0)+(ge>>>26)|0,ge&=67108863,r=Math.imul(p,q),i=(i=Math.imul(p,$))+Math.imul(m,q)|0,o=Math.imul(m,$);var ye=(c+(r=r+Math.imul(l,H)|0)|0)+((8191&(i=(i=i+Math.imul(l,K)|0)+Math.imul(h,H)|0))<<13)|0;c=((o=o+Math.imul(h,K)|0)+(i>>>13)|0)+(ye>>>26)|0,ye&=67108863,r=Math.imul(y,q),i=(i=Math.imul(y,$))+Math.imul(v,q)|0,o=Math.imul(v,$),r=r+Math.imul(p,H)|0,i=(i=i+Math.imul(p,K)|0)+Math.imul(m,H)|0,o=o+Math.imul(m,K)|0;var ve=(c+(r=r+Math.imul(l,G)|0)|0)+((8191&(i=(i=i+Math.imul(l,V)|0)+Math.imul(h,G)|0))<<13)|0;c=((o=o+Math.imul(h,V)|0)+(i>>>13)|0)+(ve>>>26)|0,ve&=67108863,r=Math.imul(w,q),i=(i=Math.imul(w,$))+Math.imul(_,q)|0,o=Math.imul(_,$),r=r+Math.imul(y,H)|0,i=(i=i+Math.imul(y,K)|0)+Math.imul(v,H)|0,o=o+Math.imul(v,K)|0,r=r+Math.imul(p,G)|0,i=(i=i+Math.imul(p,V)|0)+Math.imul(m,G)|0,o=o+Math.imul(m,V)|0;var be=(c+(r=r+Math.imul(l,Z)|0)|0)+((8191&(i=(i=i+Math.imul(l,J)|0)+Math.imul(h,Z)|0))<<13)|0;c=((o=o+Math.imul(h,J)|0)+(i>>>13)|0)+(be>>>26)|0,be&=67108863,r=Math.imul(D,q),i=(i=Math.imul(D,$))+Math.imul(E,q)|0,o=Math.imul(E,$),r=r+Math.imul(w,H)|0,i=(i=i+Math.imul(w,K)|0)+Math.imul(_,H)|0,o=o+Math.imul(_,K)|0,r=r+Math.imul(y,G)|0,i=(i=i+Math.imul(y,V)|0)+Math.imul(v,G)|0,o=o+Math.imul(v,V)|0,r=r+Math.imul(p,Z)|0,i=(i=i+Math.imul(p,J)|0)+Math.imul(m,Z)|0,o=o+Math.imul(m,J)|0;var we=(c+(r=r+Math.imul(l,Q)|0)|0)+((8191&(i=(i=i+Math.imul(l,ee)|0)+Math.imul(h,Q)|0))<<13)|0;c=((o=o+Math.imul(h,ee)|0)+(i>>>13)|0)+(we>>>26)|0,we&=67108863,r=Math.imul(A,q),i=(i=Math.imul(A,$))+Math.imul(S,q)|0,o=Math.imul(S,$),r=r+Math.imul(D,H)|0,i=(i=i+Math.imul(D,K)|0)+Math.imul(E,H)|0,o=o+Math.imul(E,K)|0,r=r+Math.imul(w,G)|0,i=(i=i+Math.imul(w,V)|0)+Math.imul(_,G)|0,o=o+Math.imul(_,V)|0,r=r+Math.imul(y,Z)|0,i=(i=i+Math.imul(y,J)|0)+Math.imul(v,Z)|0,o=o+Math.imul(v,J)|0,r=r+Math.imul(p,Q)|0,i=(i=i+Math.imul(p,ee)|0)+Math.imul(m,Q)|0,o=o+Math.imul(m,ee)|0;var _e=(c+(r=r+Math.imul(l,ne)|0)|0)+((8191&(i=(i=i+Math.imul(l,re)|0)+Math.imul(h,ne)|0))<<13)|0;c=((o=o+Math.imul(h,re)|0)+(i>>>13)|0)+(_e>>>26)|0,_e&=67108863,r=Math.imul(k,q),i=(i=Math.imul(k,$))+Math.imul(T,q)|0,o=Math.imul(T,$),r=r+Math.imul(A,H)|0,i=(i=i+Math.imul(A,K)|0)+Math.imul(S,H)|0,o=o+Math.imul(S,K)|0,r=r+Math.imul(D,G)|0,i=(i=i+Math.imul(D,V)|0)+Math.imul(E,G)|0,o=o+Math.imul(E,V)|0,r=r+Math.imul(w,Z)|0,i=(i=i+Math.imul(w,J)|0)+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,r=r+Math.imul(y,Q)|0,i=(i=i+Math.imul(y,ee)|0)+Math.imul(v,Q)|0,o=o+Math.imul(v,ee)|0,r=r+Math.imul(p,ne)|0,i=(i=i+Math.imul(p,re)|0)+Math.imul(m,ne)|0,o=o+Math.imul(m,re)|0;var xe=(c+(r=r+Math.imul(l,oe)|0)|0)+((8191&(i=(i=i+Math.imul(l,se)|0)+Math.imul(h,oe)|0))<<13)|0;c=((o=o+Math.imul(h,se)|0)+(i>>>13)|0)+(xe>>>26)|0,xe&=67108863,r=Math.imul(R,q),i=(i=Math.imul(R,$))+Math.imul(F,q)|0,o=Math.imul(F,$),r=r+Math.imul(k,H)|0,i=(i=i+Math.imul(k,K)|0)+Math.imul(T,H)|0,o=o+Math.imul(T,K)|0,r=r+Math.imul(A,G)|0,i=(i=i+Math.imul(A,V)|0)+Math.imul(S,G)|0,o=o+Math.imul(S,V)|0,r=r+Math.imul(D,Z)|0,i=(i=i+Math.imul(D,J)|0)+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,r=r+Math.imul(w,Q)|0,i=(i=i+Math.imul(w,ee)|0)+Math.imul(_,Q)|0,o=o+Math.imul(_,ee)|0,r=r+Math.imul(y,ne)|0,i=(i=i+Math.imul(y,re)|0)+Math.imul(v,ne)|0,o=o+Math.imul(v,re)|0,r=r+Math.imul(p,oe)|0,i=(i=i+Math.imul(p,se)|0)+Math.imul(m,oe)|0,o=o+Math.imul(m,se)|0;var De=(c+(r=r+Math.imul(l,ue)|0)|0)+((8191&(i=(i=i+Math.imul(l,ce)|0)+Math.imul(h,ue)|0))<<13)|0;c=((o=o+Math.imul(h,ce)|0)+(i>>>13)|0)+(De>>>26)|0,De&=67108863,r=Math.imul(B,q),i=(i=Math.imul(B,$))+Math.imul(P,q)|0,o=Math.imul(P,$),r=r+Math.imul(R,H)|0,i=(i=i+Math.imul(R,K)|0)+Math.imul(F,H)|0,o=o+Math.imul(F,K)|0,r=r+Math.imul(k,G)|0,i=(i=i+Math.imul(k,V)|0)+Math.imul(T,G)|0,o=o+Math.imul(T,V)|0,r=r+Math.imul(A,Z)|0,i=(i=i+Math.imul(A,J)|0)+Math.imul(S,Z)|0,o=o+Math.imul(S,J)|0,r=r+Math.imul(D,Q)|0,i=(i=i+Math.imul(D,ee)|0)+Math.imul(E,Q)|0,o=o+Math.imul(E,ee)|0,r=r+Math.imul(w,ne)|0,i=(i=i+Math.imul(w,re)|0)+Math.imul(_,ne)|0,o=o+Math.imul(_,re)|0,r=r+Math.imul(y,oe)|0,i=(i=i+Math.imul(y,se)|0)+Math.imul(v,oe)|0,o=o+Math.imul(v,se)|0,r=r+Math.imul(p,ue)|0,i=(i=i+Math.imul(p,ce)|0)+Math.imul(m,ue)|0,o=o+Math.imul(m,ce)|0;var Ee=(c+(r=r+Math.imul(l,le)|0)|0)+((8191&(i=(i=i+Math.imul(l,he)|0)+Math.imul(h,le)|0))<<13)|0;c=((o=o+Math.imul(h,he)|0)+(i>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,r=Math.imul(j,q),i=(i=Math.imul(j,$))+Math.imul(L,q)|0,o=Math.imul(L,$),r=r+Math.imul(B,H)|0,i=(i=i+Math.imul(B,K)|0)+Math.imul(P,H)|0,o=o+Math.imul(P,K)|0,r=r+Math.imul(R,G)|0,i=(i=i+Math.imul(R,V)|0)+Math.imul(F,G)|0,o=o+Math.imul(F,V)|0,r=r+Math.imul(k,Z)|0,i=(i=i+Math.imul(k,J)|0)+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,r=r+Math.imul(A,Q)|0,i=(i=i+Math.imul(A,ee)|0)+Math.imul(S,Q)|0,o=o+Math.imul(S,ee)|0,r=r+Math.imul(D,ne)|0,i=(i=i+Math.imul(D,re)|0)+Math.imul(E,ne)|0,o=o+Math.imul(E,re)|0,r=r+Math.imul(w,oe)|0,i=(i=i+Math.imul(w,se)|0)+Math.imul(_,oe)|0,o=o+Math.imul(_,se)|0,r=r+Math.imul(y,ue)|0,i=(i=i+Math.imul(y,ce)|0)+Math.imul(v,ue)|0,o=o+Math.imul(v,ce)|0,r=r+Math.imul(p,le)|0,i=(i=i+Math.imul(p,he)|0)+Math.imul(m,le)|0,o=o+Math.imul(m,he)|0;var Me=(c+(r=r+Math.imul(l,pe)|0)|0)+((8191&(i=(i=i+Math.imul(l,me)|0)+Math.imul(h,pe)|0))<<13)|0;c=((o=o+Math.imul(h,me)|0)+(i>>>13)|0)+(Me>>>26)|0,Me&=67108863,r=Math.imul(j,H),i=(i=Math.imul(j,K))+Math.imul(L,H)|0,o=Math.imul(L,K),r=r+Math.imul(B,G)|0,i=(i=i+Math.imul(B,V)|0)+Math.imul(P,G)|0,o=o+Math.imul(P,V)|0,r=r+Math.imul(R,Z)|0,i=(i=i+Math.imul(R,J)|0)+Math.imul(F,Z)|0,o=o+Math.imul(F,J)|0,r=r+Math.imul(k,Q)|0,i=(i=i+Math.imul(k,ee)|0)+Math.imul(T,Q)|0,o=o+Math.imul(T,ee)|0,r=r+Math.imul(A,ne)|0,i=(i=i+Math.imul(A,re)|0)+Math.imul(S,ne)|0,o=o+Math.imul(S,re)|0,r=r+Math.imul(D,oe)|0,i=(i=i+Math.imul(D,se)|0)+Math.imul(E,oe)|0,o=o+Math.imul(E,se)|0,r=r+Math.imul(w,ue)|0,i=(i=i+Math.imul(w,ce)|0)+Math.imul(_,ue)|0,o=o+Math.imul(_,ce)|0,r=r+Math.imul(y,le)|0,i=(i=i+Math.imul(y,he)|0)+Math.imul(v,le)|0,o=o+Math.imul(v,he)|0;var Ae=(c+(r=r+Math.imul(p,pe)|0)|0)+((8191&(i=(i=i+Math.imul(p,me)|0)+Math.imul(m,pe)|0))<<13)|0;c=((o=o+Math.imul(m,me)|0)+(i>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,r=Math.imul(j,G),i=(i=Math.imul(j,V))+Math.imul(L,G)|0,o=Math.imul(L,V),r=r+Math.imul(B,Z)|0,i=(i=i+Math.imul(B,J)|0)+Math.imul(P,Z)|0,o=o+Math.imul(P,J)|0,r=r+Math.imul(R,Q)|0,i=(i=i+Math.imul(R,ee)|0)+Math.imul(F,Q)|0,o=o+Math.imul(F,ee)|0,r=r+Math.imul(k,ne)|0,i=(i=i+Math.imul(k,re)|0)+Math.imul(T,ne)|0,o=o+Math.imul(T,re)|0,r=r+Math.imul(A,oe)|0,i=(i=i+Math.imul(A,se)|0)+Math.imul(S,oe)|0,o=o+Math.imul(S,se)|0,r=r+Math.imul(D,ue)|0,i=(i=i+Math.imul(D,ce)|0)+Math.imul(E,ue)|0,o=o+Math.imul(E,ce)|0,r=r+Math.imul(w,le)|0,i=(i=i+Math.imul(w,he)|0)+Math.imul(_,le)|0,o=o+Math.imul(_,he)|0;var Se=(c+(r=r+Math.imul(y,pe)|0)|0)+((8191&(i=(i=i+Math.imul(y,me)|0)+Math.imul(v,pe)|0))<<13)|0;c=((o=o+Math.imul(v,me)|0)+(i>>>13)|0)+(Se>>>26)|0,Se&=67108863,r=Math.imul(j,Z),i=(i=Math.imul(j,J))+Math.imul(L,Z)|0,o=Math.imul(L,J),r=r+Math.imul(B,Q)|0,i=(i=i+Math.imul(B,ee)|0)+Math.imul(P,Q)|0,o=o+Math.imul(P,ee)|0,r=r+Math.imul(R,ne)|0,i=(i=i+Math.imul(R,re)|0)+Math.imul(F,ne)|0,o=o+Math.imul(F,re)|0,r=r+Math.imul(k,oe)|0,i=(i=i+Math.imul(k,se)|0)+Math.imul(T,oe)|0,o=o+Math.imul(T,se)|0,r=r+Math.imul(A,ue)|0,i=(i=i+Math.imul(A,ce)|0)+Math.imul(S,ue)|0,o=o+Math.imul(S,ce)|0,r=r+Math.imul(D,le)|0,i=(i=i+Math.imul(D,he)|0)+Math.imul(E,le)|0,o=o+Math.imul(E,he)|0;var Ce=(c+(r=r+Math.imul(w,pe)|0)|0)+((8191&(i=(i=i+Math.imul(w,me)|0)+Math.imul(_,pe)|0))<<13)|0;c=((o=o+Math.imul(_,me)|0)+(i>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,r=Math.imul(j,Q),i=(i=Math.imul(j,ee))+Math.imul(L,Q)|0,o=Math.imul(L,ee),r=r+Math.imul(B,ne)|0,i=(i=i+Math.imul(B,re)|0)+Math.imul(P,ne)|0,o=o+Math.imul(P,re)|0,r=r+Math.imul(R,oe)|0,i=(i=i+Math.imul(R,se)|0)+Math.imul(F,oe)|0,o=o+Math.imul(F,se)|0,r=r+Math.imul(k,ue)|0,i=(i=i+Math.imul(k,ce)|0)+Math.imul(T,ue)|0,o=o+Math.imul(T,ce)|0,r=r+Math.imul(A,le)|0,i=(i=i+Math.imul(A,he)|0)+Math.imul(S,le)|0,o=o+Math.imul(S,he)|0;var ke=(c+(r=r+Math.imul(D,pe)|0)|0)+((8191&(i=(i=i+Math.imul(D,me)|0)+Math.imul(E,pe)|0))<<13)|0;c=((o=o+Math.imul(E,me)|0)+(i>>>13)|0)+(ke>>>26)|0,ke&=67108863,r=Math.imul(j,ne),i=(i=Math.imul(j,re))+Math.imul(L,ne)|0,o=Math.imul(L,re),r=r+Math.imul(B,oe)|0,i=(i=i+Math.imul(B,se)|0)+Math.imul(P,oe)|0,o=o+Math.imul(P,se)|0,r=r+Math.imul(R,ue)|0,i=(i=i+Math.imul(R,ce)|0)+Math.imul(F,ue)|0,o=o+Math.imul(F,ce)|0,r=r+Math.imul(k,le)|0,i=(i=i+Math.imul(k,he)|0)+Math.imul(T,le)|0,o=o+Math.imul(T,he)|0;var Te=(c+(r=r+Math.imul(A,pe)|0)|0)+((8191&(i=(i=i+Math.imul(A,me)|0)+Math.imul(S,pe)|0))<<13)|0;c=((o=o+Math.imul(S,me)|0)+(i>>>13)|0)+(Te>>>26)|0,Te&=67108863,r=Math.imul(j,oe),i=(i=Math.imul(j,se))+Math.imul(L,oe)|0,o=Math.imul(L,se),r=r+Math.imul(B,ue)|0,i=(i=i+Math.imul(B,ce)|0)+Math.imul(P,ue)|0,o=o+Math.imul(P,ce)|0,r=r+Math.imul(R,le)|0,i=(i=i+Math.imul(R,he)|0)+Math.imul(F,le)|0,o=o+Math.imul(F,he)|0;var Ie=(c+(r=r+Math.imul(k,pe)|0)|0)+((8191&(i=(i=i+Math.imul(k,me)|0)+Math.imul(T,pe)|0))<<13)|0;c=((o=o+Math.imul(T,me)|0)+(i>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,r=Math.imul(j,ue),i=(i=Math.imul(j,ce))+Math.imul(L,ue)|0,o=Math.imul(L,ce),r=r+Math.imul(B,le)|0,i=(i=i+Math.imul(B,he)|0)+Math.imul(P,le)|0,o=o+Math.imul(P,he)|0;var Re=(c+(r=r+Math.imul(R,pe)|0)|0)+((8191&(i=(i=i+Math.imul(R,me)|0)+Math.imul(F,pe)|0))<<13)|0;c=((o=o+Math.imul(F,me)|0)+(i>>>13)|0)+(Re>>>26)|0,Re&=67108863,r=Math.imul(j,le),i=(i=Math.imul(j,he))+Math.imul(L,le)|0,o=Math.imul(L,he);var Fe=(c+(r=r+Math.imul(B,pe)|0)|0)+((8191&(i=(i=i+Math.imul(B,me)|0)+Math.imul(P,pe)|0))<<13)|0;c=((o=o+Math.imul(P,me)|0)+(i>>>13)|0)+(Fe>>>26)|0,Fe&=67108863;var Oe=(c+(r=Math.imul(j,pe))|0)+((8191&(i=(i=Math.imul(j,me))+Math.imul(L,pe)|0))<<13)|0;return c=((o=Math.imul(L,me))+(i>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,u[0]=ge,u[1]=ye,u[2]=ve,u[3]=be,u[4]=we,u[5]=_e,u[6]=xe,u[7]=De,u[8]=Ee,u[9]=Me,u[10]=Ae,u[11]=Se,u[12]=Ce,u[13]=ke,u[14]=Te,u[15]=Ie,u[16]=Re,u[17]=Fe,u[18]=Oe,0!==c&&(u[19]=c,n.length++),n};function y(e,t,n){n.negative=t.negative^e.negative,n.length=e.length+t.length;for(var r=0,i=0,o=0;o>>26)|0)>>>26,s&=67108863}n.words[o]=a,r=s,s=i}return 0!==r?n.words[o]=r:n.length--,n._strip()}function v(e,t,n){return y(e,t,n)}function b(e,t){this.x=e,this.y=t}Math.imul||(g=m),o.prototype.mulTo=function(e,t){var n=this.length+e.length;return 10===this.length&&10===e.length?g(this,e,t):n<63?m(this,e,t):n<1024?y(this,e,t):v(this,e,t)},b.prototype.makeRBT=function(e){for(var t=new Array(e),n=o.prototype._countBits(e)-1,r=0;r>=1;return r},b.prototype.permute=function(e,t,n,r,i,o){for(var s=0;s>>=1)i++;return 1<>>=13,n[2*s+1]=8191&o,o>>>=13;for(s=2*t;s>=26,n+=o/67108864|0,n+=s>>>26,this.words[i]=67108863&s}return 0!==n&&(this.words[i]=n,this.length++),t?this.ineg():this},o.prototype.muln=function(e){return this.clone().imuln(e)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),n=0;n>>i&1}return t}(e);if(0===t.length)return new o(1);for(var n=this,r=0;r=0);var t,n=e%26,i=(e-n)/26,o=67108863>>>26-n<<26-n;if(0!==n){var s=0;for(t=0;t>>26-n}s&&(this.words[t]=s,this.length++)}if(0!==i){for(t=this.length-1;t>=0;t--)this.words[t+i]=this.words[t];for(t=0;t=0),i=t?(t-t%26)/26:0;var o=e%26,s=Math.min((e-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,c=0;c=0&&(0!==d||c>=i);c--){var l=0|this.words[c];this.words[c]=d<<26-o|l>>>o,d=l&a}return u&&0!==d&&(u.words[u.length++]=d),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},o.prototype.ishrn=function(e,t,n){return r(0===this.negative),this.iushrn(e,t,n)},o.prototype.shln=function(e){return this.clone().ishln(e)},o.prototype.ushln=function(e){return this.clone().iushln(e)},o.prototype.shrn=function(e){return this.clone().ishrn(e)},o.prototype.ushrn=function(e){return this.clone().iushrn(e)},o.prototype.testn=function(e){r("number"==typeof e&&e>=0);var t=e%26,n=(e-t)/26,i=1<=0);var t=e%26,n=(e-t)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==t&&n++,this.length=Math.min(n,this.length),0!==t){var i=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},o.prototype.isubn=function(e){if(r("number"==typeof e),r(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[i+n]=67108863&o}for(;i>26,this.words[i+n]=67108863&o;if(0===a)return this._strip();for(r(-1===a),a=0,i=0;i>26,this.words[i]=67108863&o;return this.negative=1,this._strip()},o.prototype._wordDiv=function(e,t){var n=(this.length,e.length),r=this.clone(),i=e,s=0|i.words[i.length-1];0!==(n=26-this._countBits(s))&&(i=i.ushln(n),r.iushln(n),s=0|i.words[i.length-1]);var a,u=r.length-i.length;if("mod"!==t){(a=new o(null)).length=u+1,a.words=new Array(a.length);for(var c=0;c=0;l--){var h=67108864*(0|r.words[i.length+l])+(0|r.words[i.length+l-1]);for(h=Math.min(h/s|0,67108863),r._ishlnsubmul(i,h,l);0!==r.negative;)h--,r.negative=0,r._ishlnsubmul(i,1,l),r.isZero()||(r.negative^=1);a&&(a.words[l]=h)}return a&&a._strip(),r._strip(),"div"!==t&&0!==n&&r.iushrn(n),{div:a||null,mod:r}},o.prototype.divmod=function(e,t,n){return r(!e.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===e.negative?(a=this.neg().divmod(e,t),"mod"!==t&&(i=a.div.neg()),"div"!==t&&(s=a.mod.neg(),n&&0!==s.negative&&s.iadd(e)),{div:i,mod:s}):0===this.negative&&0!==e.negative?(a=this.divmod(e.neg(),t),"mod"!==t&&(i=a.div.neg()),{div:i,mod:a.mod}):this.negative&e.negative?(a=this.neg().divmod(e.neg(),t),"div"!==t&&(s=a.mod.neg(),n&&0!==s.negative&&s.isub(e)),{div:a.div,mod:s}):e.length>this.length||this.cmp(e)<0?{div:new o(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new o(this.modrn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new o(this.modrn(e.words[0]))}:this._wordDiv(e,t);var i,s,a},o.prototype.div=function(e){return this.divmod(e,"div",!1).div},o.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},o.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},o.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var n=0!==t.div.negative?t.mod.isub(e):t.mod,r=e.ushrn(1),i=e.andln(1),o=n.cmp(r);return o<0||1===i&&0===o?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},o.prototype.modrn=function(e){var t=e<0;t&&(e=-e),r(e<=67108863);for(var n=(1<<26)%e,i=0,o=this.length-1;o>=0;o--)i=(n*i+(0|this.words[o]))%e;return t?-i:i},o.prototype.modn=function(e){return this.modrn(e)},o.prototype.idivn=function(e){var t=e<0;t&&(e=-e),r(e<=67108863);for(var n=0,i=this.length-1;i>=0;i--){var o=(0|this.words[i])+67108864*n;this.words[i]=o/e|0,n=o%e}return this._strip(),t?this.ineg():this},o.prototype.divn=function(e){return this.clone().idivn(e)},o.prototype.egcd=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i=new o(1),s=new o(0),a=new o(0),u=new o(1),c=0;t.isEven()&&n.isEven();)t.iushrn(1),n.iushrn(1),++c;for(var d=n.clone(),l=t.clone();!t.isZero();){for(var h=0,f=1;!(t.words[0]&f)&&h<26;++h,f<<=1);if(h>0)for(t.iushrn(h);h-- >0;)(i.isOdd()||s.isOdd())&&(i.iadd(d),s.isub(l)),i.iushrn(1),s.iushrn(1);for(var p=0,m=1;!(n.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(n.iushrn(p);p-- >0;)(a.isOdd()||u.isOdd())&&(a.iadd(d),u.isub(l)),a.iushrn(1),u.iushrn(1);t.cmp(n)>=0?(t.isub(n),i.isub(a),s.isub(u)):(n.isub(t),a.isub(i),u.isub(s))}return{a,b:u,gcd:n.iushln(c)}},o.prototype._invmp=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i,s=new o(1),a=new o(0),u=n.clone();t.cmpn(1)>0&&n.cmpn(1)>0;){for(var c=0,d=1;!(t.words[0]&d)&&c<26;++c,d<<=1);if(c>0)for(t.iushrn(c);c-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);for(var l=0,h=1;!(n.words[0]&h)&&l<26;++l,h<<=1);if(l>0)for(n.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(u),a.iushrn(1);t.cmp(n)>=0?(t.isub(n),s.isub(a)):(n.isub(t),a.isub(s))}return(i=0===t.cmpn(1)?s:a).cmpn(0)<0&&i.iadd(e),i},o.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),n=e.clone();t.negative=0,n.negative=0;for(var r=0;t.isEven()&&n.isEven();r++)t.iushrn(1),n.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;n.isEven();)n.iushrn(1);var i=t.cmp(n);if(i<0){var o=t;t=n,n=o}else if(0===i||0===n.cmpn(1))break;t.isub(n)}return n.iushln(r)},o.prototype.invm=function(e){return this.egcd(e).a.umod(e)},o.prototype.isEven=function(){return!(1&this.words[0])},o.prototype.isOdd=function(){return!(1&~this.words[0])},o.prototype.andln=function(e){return this.words[0]&e},o.prototype.bincn=function(e){r("number"==typeof e);var t=e%26,n=(e-t)/26,i=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(e){var t,n=e<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this._strip(),this.length>1)t=1;else{n&&(e=-e),r(e<=67108863,"Number is too big");var i=0|this.words[0];t=i===e?0:ie.length)return 1;if(this.length=0;n--){var r=0|this.words[n],i=0|e.words[n];if(r!==i){ri&&(t=1);break}}return t},o.prototype.gtn=function(e){return 1===this.cmpn(e)},o.prototype.gt=function(e){return 1===this.cmp(e)},o.prototype.gten=function(e){return this.cmpn(e)>=0},o.prototype.gte=function(e){return this.cmp(e)>=0},o.prototype.ltn=function(e){return-1===this.cmpn(e)},o.prototype.lt=function(e){return-1===this.cmp(e)},o.prototype.lten=function(e){return this.cmpn(e)<=0},o.prototype.lte=function(e){return this.cmp(e)<=0},o.prototype.eqn=function(e){return 0===this.cmpn(e)},o.prototype.eq=function(e){return 0===this.cmp(e)},o.red=function(e){return new A(e)},o.prototype.toRed=function(e){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},o.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(e){return this.red=e,this},o.prototype.forceRed=function(e){return r(!this.red,"Already a number in reduction context"),this._forceRed(e)},o.prototype.redAdd=function(e){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},o.prototype.redIAdd=function(e){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},o.prototype.redSub=function(e){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},o.prototype.redISub=function(e){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},o.prototype.redShl=function(e){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},o.prototype.redMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},o.prototype.redIMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},o.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(e){return r(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var w={k256:null,p224:null,p192:null,p25519:null};function _(e,t){this.name=e,this.p=new o(t,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function x(){_.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function D(){_.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function E(){_.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function M(){_.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function A(e){if("string"==typeof e){var t=o._prime(e);this.m=t.p,this.prime=t}else r(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function S(e){A.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}_.prototype._tmp=function(){var e=new o(null);return e.words=new Array(Math.ceil(this.n/13)),e},_.prototype.ireduce=function(e){var t,n=e;do{this.split(n,this.tmp),t=(n=(n=this.imulK(n)).iadd(this.tmp)).bitLength()}while(t>this.n);var r=t0?n.isub(this.p):void 0!==n.strip?n.strip():n._strip(),n},_.prototype.split=function(e,t){e.iushrn(this.n,0,t)},_.prototype.imulK=function(e){return e.imul(this.k)},i(x,_),x.prototype.split=function(e,t){for(var n=4194303,r=Math.min(e.length,9),i=0;i>>22,o=s}o>>>=22,e.words[i-10]=o,0===o&&e.length>10?e.length-=10:e.length-=9},x.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,n=0;n>>=26,e.words[n]=i,t=r}return 0!==t&&(e.words[e.length++]=t),e},o._prime=function(e){if(w[e])return w[e];var t;if("k256"===e)t=new x;else if("p224"===e)t=new D;else if("p192"===e)t=new E;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new M}return w[e]=t,t},A.prototype._verify1=function(e){r(0===e.negative,"red works only with positives"),r(e.red,"red works only with red numbers")},A.prototype._verify2=function(e,t){r(!(e.negative|t.negative),"red works only with positives"),r(e.red&&e.red===t.red,"red works only with red numbers")},A.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):(d(e,e.umod(this.m)._forceRed(this)),e)},A.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},A.prototype.add=function(e,t){this._verify2(e,t);var n=e.add(t);return n.cmp(this.m)>=0&&n.isub(this.m),n._forceRed(this)},A.prototype.iadd=function(e,t){this._verify2(e,t);var n=e.iadd(t);return n.cmp(this.m)>=0&&n.isub(this.m),n},A.prototype.sub=function(e,t){this._verify2(e,t);var n=e.sub(t);return n.cmpn(0)<0&&n.iadd(this.m),n._forceRed(this)},A.prototype.isub=function(e,t){this._verify2(e,t);var n=e.isub(t);return n.cmpn(0)<0&&n.iadd(this.m),n},A.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},A.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},A.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},A.prototype.isqr=function(e){return this.imul(e,e.clone())},A.prototype.sqr=function(e){return this.mul(e,e)},A.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(r(t%2==1),3===t){var n=this.m.add(new o(1)).iushrn(2);return this.pow(e,n)}for(var i=this.m.subn(1),s=0;!i.isZero()&&0===i.andln(1);)s++,i.iushrn(1);r(!i.isZero());var a=new o(1).toRed(this),u=a.redNeg(),c=this.m.subn(1).iushrn(1),d=this.m.bitLength();for(d=new o(2*d*d).toRed(this);0!==this.pow(d,c).cmp(u);)d.redIAdd(u);for(var l=this.pow(d,i),h=this.pow(e,i.addn(1).iushrn(1)),f=this.pow(e,i),p=s;0!==f.cmp(a);){for(var m=f,g=0;0!==m.cmp(a);g++)m=m.redSqr();r(g=0;r--){for(var c=t.words[r],d=u-1;d>=0;d--){var l=c>>d&1;i!==n[0]&&(i=this.sqr(i)),0!==l||0!==s?(s<<=1,s|=l,(4===++a||0===r&&0===d)&&(i=this.mul(i,n[s]),a=0,s=0)):a=0}u=26}return i},A.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},A.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},o.mont=function(e){return new S(e)},i(S,A),S.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},S.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},S.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var n=e.imul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=n.isub(r).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},S.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new o(0)._forceRed(this);var n=e.mul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=n.isub(r).iushrn(this.shift),s=i;return i.cmp(this.m)>=0?s=i.isub(this.m):i.cmpn(0)<0&&(s=i.iadd(this.m)),s._forceRed(this)},S.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=n.nmd(e),this)},46880:function(e){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=90)}({17:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=n(18),i=function(){function e(){}return e.getFirstMatch=function(e,t){var n=t.match(e);return n&&n.length>0&&n[1]||""},e.getSecondMatch=function(e,t){var n=t.match(e);return n&&n.length>1&&n[2]||""},e.matchAndReturnConst=function(e,t,n){if(e.test(t))return n},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,n,r){void 0===r&&(r=!1);var i=e.getVersionPrecision(t),o=e.getVersionPrecision(n),s=Math.max(i,o),a=0,u=e.map([t,n],(function(t){var n=s-e.getVersionPrecision(t),r=t+new Array(n+1).join(".0");return e.map(r.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(r&&(a=s-Math.min(i,o)),s-=1;s>=a;){if(u[0][s]>u[1][s])return 1;if(u[0][s]===u[1][s]){if(s===a)return 0;s-=1}else if(u[0][s]1?i-1:0),s=1;s0){var s=Object.keys(n),u=a.default.find(s,(function(e){return t.isOS(e)}));if(u){var c=this.satisfies(n[u]);if(void 0!==c)return c}var d=a.default.find(s,(function(e){return t.isPlatform(e)}));if(d){var l=this.satisfies(n[d]);if(void 0!==l)return l}}if(o>0){var h=Object.keys(i),f=a.default.find(h,(function(e){return t.isBrowser(e,!0)}));if(void 0!==f)return this.compareVersion(i[f])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var n=this.getBrowserName().toLowerCase(),r=e.toLowerCase(),i=a.default.getBrowserTypeByAlias(r);return t&&i&&(r=i.toLowerCase()),r===n},t.compareVersion=function(e){var t=[0],n=e,r=!1,i=this.getBrowserVersion();if("string"==typeof i)return">"===e[0]||"<"===e[0]?(n=e.substr(1),"="===e[1]?(r=!0,n=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?n=e.substr(1):"~"===e[0]&&(r=!0,n=e.substr(1)),t.indexOf(a.default.compareVersions(i,n,r))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=c,e.exports=t.default},92:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r},o=/version\/(\d+(\.?_?\d+)+)/i,s=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},n=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||i.default.getFirstMatch(o,e);return n&&(t.version=n),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},n=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},n=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||i.default.getFirstMatch(o,e);return n&&(t.version=n),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},n=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},n=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},n=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return n&&(t.version=n),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},n=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return n&&(t.version=n),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},n=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return n&&(t.version=n),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},n=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},n=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return n&&(t.version=n),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},n=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return n&&(t.version=n),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},n=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},n=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},n=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},n=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},n=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},n=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},n=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return n&&(t.version=n),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},n=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return n&&(t.version=n),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},n=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},n=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},n=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},n=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},n=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},n=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return n&&(t.version=n),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},n=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},n=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},n=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},n=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},n=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},n=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},n=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return n&&(t.version=n),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},n=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return n&&(t.version=n),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},n=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},n=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},n=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},n=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return n&&(t.version=n),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},n=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},n=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:function(e){var t=!e.test(/like android/i),n=e.test(/android/i);return t&&n},describe:function(e){var t={name:"Android Browser"},n=i.default.getFirstMatch(o,e);return n&&(t.version=n),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},n=i.default.getFirstMatch(o,e);return n&&(t.version=n),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},n=i.default.getFirstMatch(o,e);return n&&(t.version=n),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}];t.default=s,e.exports=t.default},93:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r},o=n(18),s=[{test:[/Roku\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:o.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),n=i.default.getWindowsVersionName(t);return{name:o.OS_MAP.Windows,version:t,versionName:n}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:o.OS_MAP.iOS},n=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return n&&(t.version=n),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),n=i.default.getMacOSVersionName(t),r={name:o.OS_MAP.MacOS,version:t};return n&&(r.versionName=n),r}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:o.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),n=e.test(/android/i);return t&&n},describe:function(e){var t=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),n=i.default.getAndroidVersionName(t),r={name:o.OS_MAP.Android,version:t};return n&&(r.versionName=n),r}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),n={name:o.OS_MAP.WebOS};return t&&t.length&&(n.version=t),n}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||i.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:o.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:o.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:o.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.PlayStation4,version:t}}}];t.default=s,e.exports=t.default},94:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r},o=n(18),s=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",n={type:o.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(n.model=t),n}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),n=e.test(/like (ipod|iphone)/i);return t&&!n},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:o.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}}];t.default=s,e.exports=t.default},95:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r},o=n(18),s=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:o.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:o.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:o.ENGINE_MAP.Trident},n=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:o.ENGINE_MAP.Presto},n=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:function(e){var t=e.test(/gecko/i),n=e.test(/like gecko/i);return t&&!n},describe:function(e){var t={name:o.ENGINE_MAP.Gecko},n=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:o.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:o.ENGINE_MAP.WebKit},n=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}}];t.default=s,e.exports=t.default}})},15037:(e,t,n)=>{var r;function i(e){this.rand=e}if(e.exports=function(e){return r||(r=new i(null)),r.generate(e)},e.exports.Rand=i,i.prototype.generate=function(e){return this._rand(e)},i.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var t=new Uint8Array(e),n=0;n{var r=n(92861).Buffer;function i(e){r.isBuffer(e)||(e=r.from(e));for(var t=e.length/4|0,n=new Array(t),i=0;i>>24]^d[p>>>16&255]^l[m>>>8&255]^h[255&g]^t[y++],s=c[p>>>24]^d[m>>>16&255]^l[g>>>8&255]^h[255&f]^t[y++],a=c[m>>>24]^d[g>>>16&255]^l[f>>>8&255]^h[255&p]^t[y++],u=c[g>>>24]^d[f>>>16&255]^l[p>>>8&255]^h[255&m]^t[y++],f=o,p=s,m=a,g=u;return o=(r[f>>>24]<<24|r[p>>>16&255]<<16|r[m>>>8&255]<<8|r[255&g])^t[y++],s=(r[p>>>24]<<24|r[m>>>16&255]<<16|r[g>>>8&255]<<8|r[255&f])^t[y++],a=(r[m>>>24]<<24|r[g>>>16&255]<<16|r[f>>>8&255]<<8|r[255&p])^t[y++],u=(r[g>>>24]<<24|r[f>>>16&255]<<16|r[p>>>8&255]<<8|r[255&m])^t[y++],[o>>>=0,s>>>=0,a>>>=0,u>>>=0]}var a=[0,1,2,4,8,16,32,64,128,27,54],u=function(){for(var e=new Array(256),t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;for(var n=[],r=[],i=[[],[],[],[]],o=[[],[],[],[]],s=0,a=0,u=0;u<256;++u){var c=a^a<<1^a<<2^a<<3^a<<4;c=c>>>8^255&c^99,n[s]=c,r[c]=s;var d=e[s],l=e[d],h=e[l],f=257*e[c]^16843008*c;i[0][s]=f<<24|f>>>8,i[1][s]=f<<16|f>>>16,i[2][s]=f<<8|f>>>24,i[3][s]=f,f=16843009*h^65537*l^257*d^16843008*s,o[0][c]=f<<24|f>>>8,o[1][c]=f<<16|f>>>16,o[2][c]=f<<8|f>>>24,o[3][c]=f,0===s?s=a=1:(s=d^e[e[e[h^d]]],a^=e[e[a]])}return{SBOX:n,INV_SBOX:r,SUB_MIX:i,INV_SUB_MIX:o}}();function c(e){this._key=i(e),this._reset()}c.blockSize=16,c.keySize=32,c.prototype.blockSize=c.blockSize,c.prototype.keySize=c.keySize,c.prototype._reset=function(){for(var e=this._key,t=e.length,n=t+6,r=4*(n+1),i=[],o=0;o>>24,s=u.SBOX[s>>>24]<<24|u.SBOX[s>>>16&255]<<16|u.SBOX[s>>>8&255]<<8|u.SBOX[255&s],s^=a[o/t|0]<<24):t>6&&o%t==4&&(s=u.SBOX[s>>>24]<<24|u.SBOX[s>>>16&255]<<16|u.SBOX[s>>>8&255]<<8|u.SBOX[255&s]),i[o]=i[o-t]^s}for(var c=[],d=0;d>>24]]^u.INV_SUB_MIX[1][u.SBOX[h>>>16&255]]^u.INV_SUB_MIX[2][u.SBOX[h>>>8&255]]^u.INV_SUB_MIX[3][u.SBOX[255&h]]}this._nRounds=n,this._keySchedule=i,this._invKeySchedule=c},c.prototype.encryptBlockRaw=function(e){return s(e=i(e),this._keySchedule,u.SUB_MIX,u.SBOX,this._nRounds)},c.prototype.encryptBlock=function(e){var t=this.encryptBlockRaw(e),n=r.allocUnsafe(16);return n.writeUInt32BE(t[0],0),n.writeUInt32BE(t[1],4),n.writeUInt32BE(t[2],8),n.writeUInt32BE(t[3],12),n},c.prototype.decryptBlock=function(e){var t=(e=i(e))[1];e[1]=e[3],e[3]=t;var n=s(e,this._invKeySchedule,u.INV_SUB_MIX,u.INV_SBOX,this._nRounds),o=r.allocUnsafe(16);return o.writeUInt32BE(n[0],0),o.writeUInt32BE(n[3],4),o.writeUInt32BE(n[2],8),o.writeUInt32BE(n[1],12),o},c.prototype.scrub=function(){o(this._keySchedule),o(this._invKeySchedule),o(this._key)},e.exports.AES=c},92356:(e,t,n)=>{var r=n(50462),i=n(92861).Buffer,o=n(56168),s=n(56698),a=n(25892),u=n(30295),c=n(45122);function d(e,t,n,s){o.call(this);var u=i.alloc(4,0);this._cipher=new r.AES(t);var d=this._cipher.encryptBlock(u);this._ghash=new a(d),n=function(e,t,n){if(12===t.length)return e._finID=i.concat([t,i.from([0,0,0,1])]),i.concat([t,i.from([0,0,0,2])]);var r=new a(n),o=t.length,s=o%16;r.update(t),s&&(s=16-s,r.update(i.alloc(s,0))),r.update(i.alloc(8,0));var u=8*o,d=i.alloc(8);d.writeUIntBE(u,0,8),r.update(d),e._finID=r.state;var l=i.from(e._finID);return c(l),l}(this,n,d),this._prev=i.from(n),this._cache=i.allocUnsafe(0),this._secCache=i.allocUnsafe(0),this._decrypt=s,this._alen=0,this._len=0,this._mode=e,this._authTag=null,this._called=!1}s(d,o),d.prototype._update=function(e){if(!this._called&&this._alen){var t=16-this._alen%16;t<16&&(t=i.alloc(t,0),this._ghash.update(t))}this._called=!0;var n=this._mode.encrypt(this,e);return this._decrypt?this._ghash.update(e):this._ghash.update(n),this._len+=e.length,n},d.prototype._final=function(){if(this._decrypt&&!this._authTag)throw new Error("Unsupported state or unable to authenticate data");var e=u(this._ghash.final(8*this._alen,8*this._len),this._cipher.encryptBlock(this._finID));if(this._decrypt&&function(e,t){var n=0;e.length!==t.length&&n++;for(var r=Math.min(e.length,t.length),i=0;i{var r=n(25799),i=n(36171),o=n(3219);t.createCipher=t.Cipher=r.createCipher,t.createCipheriv=t.Cipheriv=r.createCipheriv,t.createDecipher=t.Decipher=i.createDecipher,t.createDecipheriv=t.Decipheriv=i.createDecipheriv,t.listCiphers=t.getCiphers=function(){return Object.keys(o)}},36171:(e,t,n)=>{var r=n(92356),i=n(92861).Buffer,o=n(530),s=n(50650),a=n(56168),u=n(50462),c=n(68078);function d(e,t,n){a.call(this),this._cache=new l,this._last=void 0,this._cipher=new u.AES(t),this._prev=i.from(n),this._mode=e,this._autopadding=!0}function l(){this.cache=i.allocUnsafe(0)}function h(e,t,n){var a=o[e.toLowerCase()];if(!a)throw new TypeError("invalid suite type");if("string"==typeof n&&(n=i.from(n)),"GCM"!==a.mode&&n.length!==a.iv)throw new TypeError("invalid iv length "+n.length);if("string"==typeof t&&(t=i.from(t)),t.length!==a.key/8)throw new TypeError("invalid key length "+t.length);return"stream"===a.type?new s(a.module,t,n,!0):"auth"===a.type?new r(a.module,t,n,!0):new d(a.module,t,n)}n(56698)(d,a),d.prototype._update=function(e){var t,n;this._cache.add(e);for(var r=[];t=this._cache.get(this._autopadding);)n=this._mode.decrypt(this,t),r.push(n);return i.concat(r)},d.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return function(e){var t=e[15];if(t<1||t>16)throw new Error("unable to decrypt data");var n=-1;for(;++n16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t}else if(this.cache.length>=16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t;return null},l.prototype.flush=function(){if(this.cache.length)return this.cache},t.createDecipher=function(e,t){var n=o[e.toLowerCase()];if(!n)throw new TypeError("invalid suite type");var r=c(t,!1,n.key,n.iv);return h(e,r.key,r.iv)},t.createDecipheriv=h},25799:(e,t,n)=>{var r=n(530),i=n(92356),o=n(92861).Buffer,s=n(50650),a=n(56168),u=n(50462),c=n(68078);function d(e,t,n){a.call(this),this._cache=new h,this._cipher=new u.AES(t),this._prev=o.from(n),this._mode=e,this._autopadding=!0}n(56698)(d,a),d.prototype._update=function(e){var t,n;this._cache.add(e);for(var r=[];t=this._cache.get();)n=this._mode.encrypt(this,t),r.push(n);return o.concat(r)};var l=o.alloc(16,16);function h(){this.cache=o.allocUnsafe(0)}function f(e,t,n){var a=r[e.toLowerCase()];if(!a)throw new TypeError("invalid suite type");if("string"==typeof t&&(t=o.from(t)),t.length!==a.key/8)throw new TypeError("invalid key length "+t.length);if("string"==typeof n&&(n=o.from(n)),"GCM"!==a.mode&&n.length!==a.iv)throw new TypeError("invalid iv length "+n.length);return"stream"===a.type?new s(a.module,t,n):"auth"===a.type?new i(a.module,t,n):new d(a.module,t,n)}d.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return e=this._mode.encrypt(this,e),this._cipher.scrub(),e;if(!e.equals(l))throw this._cipher.scrub(),new Error("data not multiple of block length")},d.prototype.setAutoPadding=function(e){return this._autopadding=!!e,this},h.prototype.add=function(e){this.cache=o.concat([this.cache,e])},h.prototype.get=function(){if(this.cache.length>15){var e=this.cache.slice(0,16);return this.cache=this.cache.slice(16),e}return null},h.prototype.flush=function(){for(var e=16-this.cache.length,t=o.allocUnsafe(e),n=-1;++n{var r=n(92861).Buffer,i=r.alloc(16,0);function o(e){var t=r.allocUnsafe(16);return t.writeUInt32BE(e[0]>>>0,0),t.writeUInt32BE(e[1]>>>0,4),t.writeUInt32BE(e[2]>>>0,8),t.writeUInt32BE(e[3]>>>0,12),t}function s(e){this.h=e,this.state=r.alloc(16,0),this.cache=r.allocUnsafe(0)}s.prototype.ghash=function(e){for(var t=-1;++t0;t--)r[t]=r[t]>>>1|(1&r[t-1])<<31;r[0]=r[0]>>>1,n&&(r[0]=r[0]^225<<24)}this.state=o(i)},s.prototype.update=function(e){var t;for(this.cache=r.concat([this.cache,e]);this.cache.length>=16;)t=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(t)},s.prototype.final=function(e,t){return this.cache.length&&this.ghash(r.concat([this.cache,i],16)),this.ghash(o([0,e,0,t])),this.state},e.exports=s},45122:e=>{e.exports=function(e){for(var t,n=e.length;n--;){if(255!==(t=e.readUInt8(n))){t++,e.writeUInt8(t,n);break}e.writeUInt8(0,n)}}},92884:(e,t,n)=>{var r=n(30295);t.encrypt=function(e,t){var n=r(t,e._prev);return e._prev=e._cipher.encryptBlock(n),e._prev},t.decrypt=function(e,t){var n=e._prev;e._prev=t;var i=e._cipher.decryptBlock(t);return r(i,n)}},46383:(e,t,n)=>{var r=n(92861).Buffer,i=n(30295);function o(e,t,n){var o=t.length,s=i(t,e._cache);return e._cache=e._cache.slice(o),e._prev=r.concat([e._prev,n?t:s]),s}t.encrypt=function(e,t,n){for(var i,s=r.allocUnsafe(0);t.length;){if(0===e._cache.length&&(e._cache=e._cipher.encryptBlock(e._prev),e._prev=r.allocUnsafe(0)),!(e._cache.length<=t.length)){s=r.concat([s,o(e,t,n)]);break}i=e._cache.length,s=r.concat([s,o(e,t.slice(0,i),n)]),t=t.slice(i)}return s}},32883:(e,t,n)=>{var r=n(92861).Buffer;function i(e,t,n){for(var r,i,s=-1,a=0;++s<8;)r=t&1<<7-s?128:0,a+=(128&(i=e._cipher.encryptBlock(e._prev)[0]^r))>>s%8,e._prev=o(e._prev,n?r:i);return a}function o(e,t){var n=e.length,i=-1,o=r.allocUnsafe(e.length);for(e=r.concat([e,r.from([t])]);++i>7;return o}t.encrypt=function(e,t,n){for(var o=t.length,s=r.allocUnsafe(o),a=-1;++a{var r=n(92861).Buffer;function i(e,t,n){var i=e._cipher.encryptBlock(e._prev)[0]^t;return e._prev=r.concat([e._prev.slice(1),r.from([n?t:i])]),i}t.encrypt=function(e,t,n){for(var o=t.length,s=r.allocUnsafe(o),a=-1;++a{var r=n(30295),i=n(92861).Buffer,o=n(45122);function s(e){var t=e._cipher.encryptBlockRaw(e._prev);return o(e._prev),t}t.encrypt=function(e,t){var n=Math.ceil(t.length/16),o=e._cache.length;e._cache=i.concat([e._cache,i.allocUnsafe(16*n)]);for(var a=0;a{t.encrypt=function(e,t){return e._cipher.encryptBlock(t)},t.decrypt=function(e,t){return e._cipher.decryptBlock(t)}},530:(e,t,n)=>{var r={ECB:n(52632),CBC:n(92884),CFB:n(46383),CFB8:n(86975),CFB1:n(32883),OFB:n(46843),CTR:n(63053),GCM:n(63053)},i=n(3219);for(var o in i)i[o].module=r[i[o].mode];e.exports=i},46843:(e,t,n)=>{var r=n(48287).Buffer,i=n(30295);function o(e){return e._prev=e._cipher.encryptBlock(e._prev),e._prev}t.encrypt=function(e,t){for(;e._cache.length{var r=n(50462),i=n(92861).Buffer,o=n(56168);function s(e,t,n,s){o.call(this),this._cipher=new r.AES(t),this._prev=i.from(n),this._cache=i.allocUnsafe(0),this._secCache=i.allocUnsafe(0),this._decrypt=s,this._mode=e}n(56698)(s,o),s.prototype._update=function(e){return this._mode.encrypt(this,e,this._decrypt)},s.prototype._final=function(){this._cipher.scrub()},e.exports=s},30125:(e,t,n)=>{var r=n(84050),i=n(1241),o=n(530),s=n(32438),a=n(68078);function u(e,t,n){if(e=e.toLowerCase(),o[e])return i.createCipheriv(e,t,n);if(s[e])return new r({key:t,iv:n,mode:e});throw new TypeError("invalid suite type")}function c(e,t,n){if(e=e.toLowerCase(),o[e])return i.createDecipheriv(e,t,n);if(s[e])return new r({key:t,iv:n,mode:e,decrypt:!0});throw new TypeError("invalid suite type")}t.createCipher=t.Cipher=function(e,t){var n,r;if(e=e.toLowerCase(),o[e])n=o[e].key,r=o[e].iv;else{if(!s[e])throw new TypeError("invalid suite type");n=8*s[e].key,r=s[e].iv}var i=a(t,!1,n,r);return u(e,i.key,i.iv)},t.createCipheriv=t.Cipheriv=u,t.createDecipher=t.Decipher=function(e,t){var n,r;if(e=e.toLowerCase(),o[e])n=o[e].key,r=o[e].iv;else{if(!s[e])throw new TypeError("invalid suite type");n=8*s[e].key,r=s[e].iv}var i=a(t,!1,n,r);return c(e,i.key,i.iv)},t.createDecipheriv=t.Decipheriv=c,t.listCiphers=t.getCiphers=function(){return Object.keys(s).concat(i.getCiphers())}},84050:(e,t,n)=>{var r=n(56168),i=n(29560),o=n(56698),s=n(92861).Buffer,a={"des-ede3-cbc":i.CBC.instantiate(i.EDE),"des-ede3":i.EDE,"des-ede-cbc":i.CBC.instantiate(i.EDE),"des-ede":i.EDE,"des-cbc":i.CBC.instantiate(i.DES),"des-ecb":i.DES};function u(e){r.call(this);var t,n=e.mode.toLowerCase(),i=a[n];t=e.decrypt?"decrypt":"encrypt";var o=e.key;s.isBuffer(o)||(o=s.from(o)),"des-ede"!==n&&"des-ede-cbc"!==n||(o=s.concat([o,o.slice(0,8)]));var u=e.iv;s.isBuffer(u)||(u=s.from(u)),this._des=i.create({key:o,iv:u,type:t})}a.des=a["des-cbc"],a.des3=a["des-ede3-cbc"],e.exports=u,o(u,r),u.prototype._update=function(e){return s.from(this._des.update(e))},u.prototype._final=function(){return s.from(this._des.final())}},32438:(e,t)=>{t["des-ecb"]={key:8,iv:0},t["des-cbc"]=t.des={key:8,iv:8},t["des-ede3-cbc"]=t.des3={key:24,iv:8},t["des-ede3"]={key:24,iv:0},t["des-ede-cbc"]={key:16,iv:8},t["des-ede"]={key:16,iv:0}},67332:(e,t,n)=>{var r=n(48287).Buffer,i=n(39404),o=n(53209);function s(e){var t,n=e.modulus.byteLength();do{t=new i(o(n))}while(t.cmp(e.modulus)>=0||!t.umod(e.prime1)||!t.umod(e.prime2));return t}function a(e,t){var n=function(e){var t=s(e);return{blinder:t.toRed(i.mont(e.modulus)).redPow(new i(e.publicExponent)).fromRed(),unblinder:t.invm(e.modulus)}}(t),o=t.modulus.byteLength(),a=new i(e).mul(n.blinder).umod(t.modulus),u=a.toRed(i.mont(t.prime1)),c=a.toRed(i.mont(t.prime2)),d=t.coefficient,l=t.prime1,h=t.prime2,f=u.redPow(t.exponent1).fromRed(),p=c.redPow(t.exponent2).fromRed(),m=f.isub(p).imul(d).umod(l).imul(h);return p.iadd(m).imul(n.unblinder).umod(t.modulus).toArrayLike(r,"be",o)}a.getr=s,e.exports=a},55715:(e,t,n)=>{"use strict";e.exports=n(62951)},20:(e,t,n)=>{"use strict";var r=n(92861).Buffer,i=n(47108),o=n(28399),s=n(56698),a=n(35359),u=n(74847),c=n(62951);function d(e){o.Writable.call(this);var t=c[e];if(!t)throw new Error("Unknown message digest");this._hashType=t.hash,this._hash=i(t.hash),this._tag=t.id,this._signType=t.sign}function l(e){o.Writable.call(this);var t=c[e];if(!t)throw new Error("Unknown message digest");this._hash=i(t.hash),this._tag=t.id,this._signType=t.sign}function h(e){return new d(e)}function f(e){return new l(e)}Object.keys(c).forEach((function(e){c[e].id=r.from(c[e].id,"hex"),c[e.toLowerCase()]=c[e]})),s(d,o.Writable),d.prototype._write=function(e,t,n){this._hash.update(e),n()},d.prototype.update=function(e,t){return this._hash.update("string"==typeof e?r.from(e,t):e),this},d.prototype.sign=function(e,t){this.end();var n=this._hash.digest(),r=a(n,e,this._hashType,this._signType,this._tag);return t?r.toString(t):r},s(l,o.Writable),l.prototype._write=function(e,t,n){this._hash.update(e),n()},l.prototype.update=function(e,t){return this._hash.update("string"==typeof e?r.from(e,t):e),this},l.prototype.verify=function(e,t,n){var i="string"==typeof t?r.from(t,n):t;this.end();var o=this._hash.digest();return u(i,o,e,this._signType,this._tag)},e.exports={Sign:h,Verify:f,createSign:h,createVerify:f}},35359:(e,t,n)=>{"use strict";var r=n(92861).Buffer,i=n(83507),o=n(67332),s=n(86729).ec,a=n(39404),u=n(78170),c=n(64589);function d(e,t,n,o){if((e=r.from(e.toArray())).length0&&n.ishrn(r),n}function h(e,t,n){var o,s;do{for(o=r.alloc(0);8*o.length{"use strict";var r=n(92861).Buffer,i=n(39404),o=n(86729).ec,s=n(78170),a=n(64589);function u(e,t){if(e.cmpn(0)<=0)throw new Error("invalid sig");if(e.cmp(t)>=0)throw new Error("invalid sig")}e.exports=function(e,t,n,c,d){var l=s(n);if("ec"===l.type){if("ecdsa"!==c&&"ecdsa/rsa"!==c)throw new Error("wrong public key type");return function(e,t,n){var r=a[n.data.algorithm.curve.join(".")];if(!r)throw new Error("unknown curve "+n.data.algorithm.curve.join("."));var i=new o(r),s=n.data.subjectPrivateKey.data;return i.verify(t,e,s)}(e,t,l)}if("dsa"===l.type){if("dsa"!==c)throw new Error("wrong public key type");return function(e,t,n){var r=n.data.p,o=n.data.q,a=n.data.g,c=n.data.pub_key,d=s.signature.decode(e,"der"),l=d.s,h=d.r;u(l,o),u(h,o);var f=i.mont(r),p=l.invm(o),m=a.toRed(f).redPow(new i(t).mul(p).mod(o)).fromRed().mul(c.toRed(f).redPow(h.mul(p).mod(o)).fromRed()).mod(r).mod(o);return 0===m.cmp(h)}(e,t,l)}if("rsa"!==c&&"ecdsa/rsa"!==c)throw new Error("wrong public key type");t=r.concat([d,t]);for(var h=l.modulus.byteLength(),f=[1],p=0;t.length+f.length+2{"use strict";var r=n(48287).Buffer,i=n(48287).SlowBuffer;function o(e,t){if(!r.isBuffer(e)||!r.isBuffer(t))return!1;if(e.length!==t.length)return!1;for(var n=0,i=0;i{var r=n(48287).Buffer;e.exports=function(e,t){for(var n=Math.min(e.length,t.length),i=new r(n),o=0;o{"use strict"; +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */const r=n(67526),i=n(251),o="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=u,t.SlowBuffer=function(e){+e!=e&&(e=0);return u.alloc(+e)},t.INSPECT_MAX_BYTES=50;const s=2147483647;function a(e){if(e>s)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,u.prototype),t}function u(e,t,n){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return l(e)}return c(e,t,n)}function c(e,t,n){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!u.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const n=0|m(e,t);let r=a(n);const i=r.write(e,t);i!==n&&(r=r.slice(0,i));return r}(e,t);if(ArrayBuffer.isView(e))return function(e){if(Y(e,Uint8Array)){const t=new Uint8Array(e);return f(t.buffer,t.byteOffset,t.byteLength)}return h(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(Y(e,ArrayBuffer)||e&&Y(e.buffer,ArrayBuffer))return f(e,t,n);if("undefined"!=typeof SharedArrayBuffer&&(Y(e,SharedArrayBuffer)||e&&Y(e.buffer,SharedArrayBuffer)))return f(e,t,n);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const r=e.valueOf&&e.valueOf();if(null!=r&&r!==e)return u.from(r,t,n);const i=function(e){if(u.isBuffer(e)){const t=0|p(e.length),n=a(t);return 0===n.length||e.copy(n,0,0,t),n}if(void 0!==e.length)return"number"!=typeof e.length||Z(e.length)?a(0):h(e);if("Buffer"===e.type&&Array.isArray(e.data))return h(e.data)}(e);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return u.from(e[Symbol.toPrimitive]("string"),t,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function d(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function l(e){return d(e),a(e<0?0:0|p(e))}function h(e){const t=e.length<0?0:0|p(e.length),n=a(t);for(let r=0;r=s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s.toString(16)+" bytes");return 0|e}function m(e,t){if(u.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||Y(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const n=e.length,r=arguments.length>2&&!0===arguments[2];if(!r&&0===n)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return W(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return G(e).length;default:if(i)return r?-1:W(e).length;t=(""+t).toLowerCase(),i=!0}}function g(e,t,n){let r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return T(this,t,n);case"utf8":case"utf-8":return A(this,t,n);case"ascii":return C(this,t,n);case"latin1":case"binary":return k(this,t,n);case"base64":return M(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function y(e,t,n){const r=e[t];e[t]=e[n],e[n]=r}function v(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),Z(n=+n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=u.from(t,r)),u.isBuffer(t))return 0===t.length?-1:b(e,t,n,r,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):b(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function b(e,t,n,r,i){let o,s=1,a=e.length,u=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;s=2,a/=2,u/=2,n/=2}function c(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(i){let r=-1;for(o=n;oa&&(n=a-u),o=n;o>=0;o--){let n=!0;for(let r=0;ri&&(r=i):r=i;const o=t.length;let s;for(r>o/2&&(r=o/2),s=0;s>8,i=n%256,o.push(i),o.push(r);return o}(t,e.length-n),e,n,r)}function M(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function A(e,t,n){n=Math.min(e.length,n);const r=[];let i=t;for(;i239?4:t>223?3:t>191?2:1;if(i+s<=n){let n,r,a,u;switch(s){case 1:t<128&&(o=t);break;case 2:n=e[i+1],128==(192&n)&&(u=(31&t)<<6|63&n,u>127&&(o=u));break;case 3:n=e[i+1],r=e[i+2],128==(192&n)&&128==(192&r)&&(u=(15&t)<<12|(63&n)<<6|63&r,u>2047&&(u<55296||u>57343)&&(o=u));break;case 4:n=e[i+1],r=e[i+2],a=e[i+3],128==(192&n)&&128==(192&r)&&128==(192&a)&&(u=(15&t)<<18|(63&n)<<12|(63&r)<<6|63&a,u>65535&&u<1114112&&(o=u))}}null===o?(o=65533,s=1):o>65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o),i+=s}return function(e){const t=e.length;if(t<=S)return String.fromCharCode.apply(String,e);let n="",r=0;for(;rr.length?(u.isBuffer(t)||(t=u.from(t)),t.copy(r,i)):Uint8Array.prototype.set.call(r,t,i);else{if(!u.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(r,i)}i+=t.length}return r},u.byteLength=m,u.prototype._isBuffer=!0,u.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tn&&(e+=" ... "),""},o&&(u.prototype[o]=u.prototype.inspect),u.prototype.compare=function(e,t,n,r,i){if(Y(e,Uint8Array)&&(e=u.from(e,e.offset,e.byteLength)),!u.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(this===e)return 0;let o=(i>>>=0)-(r>>>=0),s=(n>>>=0)-(t>>>=0);const a=Math.min(o,s),c=this.slice(r,i),d=e.slice(t,n);for(let e=0;e>>=0,isFinite(n)?(n>>>=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}const i=this.length-t;if((void 0===n||n>i)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");let o=!1;for(;;)switch(r){case"hex":return w(this,e,t,n);case"utf8":case"utf-8":return _(this,e,t,n);case"ascii":case"latin1":case"binary":return x(this,e,t,n);case"base64":return D(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,e,t,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const S=4096;function C(e,t,n){let r="";n=Math.min(e.length,n);for(let i=t;ir)&&(n=r);let i="";for(let r=t;rn)throw new RangeError("Trying to access beyond buffer length")}function F(e,t,n,r,i,o){if(!u.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function O(e,t,n,r,i){$(t,r,i,e,n,7);let o=Number(t&BigInt(4294967295));e[n++]=o,o>>=8,e[n++]=o,o>>=8,e[n++]=o,o>>=8,e[n++]=o;let s=Number(t>>BigInt(32)&BigInt(4294967295));return e[n++]=s,s>>=8,e[n++]=s,s>>=8,e[n++]=s,s>>=8,e[n++]=s,n}function B(e,t,n,r,i){$(t,r,i,e,n,7);let o=Number(t&BigInt(4294967295));e[n+7]=o,o>>=8,e[n+6]=o,o>>=8,e[n+5]=o,o>>=8,e[n+4]=o;let s=Number(t>>BigInt(32)&BigInt(4294967295));return e[n+3]=s,s>>=8,e[n+2]=s,s>>=8,e[n+1]=s,s>>=8,e[n]=s,n+8}function P(e,t,n,r,i,o){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function N(e,t,n,r,o){return t=+t,n>>>=0,o||P(e,0,n,4),i.write(e,t,n,r,23,4),n+4}function j(e,t,n,r,o){return t=+t,n>>>=0,o||P(e,0,n,8),i.write(e,t,n,r,52,8),n+8}u.prototype.slice=function(e,t){const n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t>>=0,t>>>=0,n||R(e,t,this.length);let r=this[e],i=1,o=0;for(;++o>>=0,t>>>=0,n||R(e,t,this.length);let r=this[e+--t],i=1;for(;t>0&&(i*=256);)r+=this[e+--t]*i;return r},u.prototype.readUint8=u.prototype.readUInt8=function(e,t){return e>>>=0,t||R(e,1,this.length),this[e]},u.prototype.readUint16LE=u.prototype.readUInt16LE=function(e,t){return e>>>=0,t||R(e,2,this.length),this[e]|this[e+1]<<8},u.prototype.readUint16BE=u.prototype.readUInt16BE=function(e,t){return e>>>=0,t||R(e,2,this.length),this[e]<<8|this[e+1]},u.prototype.readUint32LE=u.prototype.readUInt32LE=function(e,t){return e>>>=0,t||R(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},u.prototype.readUint32BE=u.prototype.readUInt32BE=function(e,t){return e>>>=0,t||R(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},u.prototype.readBigUInt64LE=X((function(e){z(e>>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||H(e,this.length-8);const r=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,i=this[++e]+256*this[++e]+65536*this[++e]+n*2**24;return BigInt(r)+(BigInt(i)<>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||H(e,this.length-8);const r=t*2**24+65536*this[++e]+256*this[++e]+this[++e],i=this[++e]*2**24+65536*this[++e]+256*this[++e]+n;return(BigInt(r)<>>=0,t>>>=0,n||R(e,t,this.length);let r=this[e],i=1,o=0;for(;++o=i&&(r-=Math.pow(2,8*t)),r},u.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||R(e,t,this.length);let r=t,i=1,o=this[e+--r];for(;r>0&&(i*=256);)o+=this[e+--r]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*t)),o},u.prototype.readInt8=function(e,t){return e>>>=0,t||R(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},u.prototype.readInt16LE=function(e,t){e>>>=0,t||R(e,2,this.length);const n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt16BE=function(e,t){e>>>=0,t||R(e,2,this.length);const n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt32LE=function(e,t){return e>>>=0,t||R(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},u.prototype.readInt32BE=function(e,t){return e>>>=0,t||R(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},u.prototype.readBigInt64LE=X((function(e){z(e>>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||H(e,this.length-8);const r=this[e+4]+256*this[e+5]+65536*this[e+6]+(n<<24);return(BigInt(r)<>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||H(e,this.length-8);const r=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(r)<>>=0,t||R(e,4,this.length),i.read(this,e,!0,23,4)},u.prototype.readFloatBE=function(e,t){return e>>>=0,t||R(e,4,this.length),i.read(this,e,!1,23,4)},u.prototype.readDoubleLE=function(e,t){return e>>>=0,t||R(e,8,this.length),i.read(this,e,!0,52,8)},u.prototype.readDoubleBE=function(e,t){return e>>>=0,t||R(e,8,this.length),i.read(this,e,!1,52,8)},u.prototype.writeUintLE=u.prototype.writeUIntLE=function(e,t,n,r){if(e=+e,t>>>=0,n>>>=0,!r){F(this,e,t,n,Math.pow(2,8*n)-1,0)}let i=1,o=0;for(this[t]=255&e;++o>>=0,n>>>=0,!r){F(this,e,t,n,Math.pow(2,8*n)-1,0)}let i=n-1,o=1;for(this[t+i]=255&e;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+n},u.prototype.writeUint8=u.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||F(this,e,t,1,255,0),this[t]=255&e,t+1},u.prototype.writeUint16LE=u.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||F(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},u.prototype.writeUint16BE=u.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||F(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},u.prototype.writeUint32LE=u.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||F(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},u.prototype.writeUint32BE=u.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||F(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},u.prototype.writeBigUInt64LE=X((function(e,t=0){return O(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),u.prototype.writeBigUInt64BE=X((function(e,t=0){return B(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),u.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t>>>=0,!r){const r=Math.pow(2,8*n-1);F(this,e,t,n,r-1,-r)}let i=0,o=1,s=0;for(this[t]=255&e;++i>>=0,!r){const r=Math.pow(2,8*n-1);F(this,e,t,n,r-1,-r)}let i=n-1,o=1,s=0;for(this[t+i]=255&e;--i>=0&&(o*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/o|0)-s&255;return t+n},u.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||F(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},u.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||F(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},u.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||F(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},u.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||F(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},u.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||F(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},u.prototype.writeBigInt64LE=X((function(e,t=0){return O(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),u.prototype.writeBigInt64BE=X((function(e,t=0){return B(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),u.prototype.writeFloatLE=function(e,t,n){return N(this,e,t,!0,n)},u.prototype.writeFloatBE=function(e,t,n){return N(this,e,t,!1,n)},u.prototype.writeDoubleLE=function(e,t,n){return j(this,e,t,!0,n)},u.prototype.writeDoubleBE=function(e,t,n){return j(this,e,t,!1,n)},u.prototype.copy=function(e,t,n,r){if(!u.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i=r+4;n-=3)t=`_${e.slice(n-3,n)}${t}`;return`${e.slice(0,n)}${t}`}function $(e,t,n,r,i,o){if(e>n||e3?0===t||t===BigInt(0)?`>= 0${r} and < 2${r} ** ${8*(o+1)}${r}`:`>= -(2${r} ** ${8*(o+1)-1}${r}) and < 2 ** ${8*(o+1)-1}${r}`:`>= ${t}${r} and <= ${n}${r}`,new L.ERR_OUT_OF_RANGE("value",i,e)}!function(e,t,n){z(t,"offset"),void 0!==e[t]&&void 0!==e[t+n]||H(t,e.length-(n+1))}(r,i,o)}function z(e,t){if("number"!=typeof e)throw new L.ERR_INVALID_ARG_TYPE(t,"number",e)}function H(e,t,n){if(Math.floor(e)!==e)throw z(e,n),new L.ERR_OUT_OF_RANGE(n||"offset","an integer",e);if(t<0)throw new L.ERR_BUFFER_OUT_OF_BOUNDS;throw new L.ERR_OUT_OF_RANGE(n||"offset",`>= ${n?1:0} and <= ${t}`,e)}U("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),U("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),U("ERR_OUT_OF_RANGE",(function(e,t,n){let r=`The value of "${e}" is out of range.`,i=n;return Number.isInteger(n)&&Math.abs(n)>2**32?i=q(String(n)):"bigint"==typeof n&&(i=String(n),(n>BigInt(2)**BigInt(32)||n<-(BigInt(2)**BigInt(32)))&&(i=q(i)),i+="n"),r+=` It must be ${t}. Received ${i}`,r}),RangeError);const K=/[^+/0-9A-Za-z-_]/g;function W(e,t){let n;t=t||1/0;const r=e.length;let i=null;const o=[];for(let s=0;s55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(s+1===r){(t-=3)>-1&&o.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&o.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;o.push(n)}else if(n<2048){if((t-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function G(e){return r.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(K,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function V(e,t,n,r){let i;for(i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}function Y(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function Z(e){return e!=e}const J=function(){const e="0123456789abcdef",t=new Array(256);for(let n=0;n<16;++n){const r=16*n;for(let i=0;i<16;++i)t[r+i]=e[n]+e[i]}return t}();function X(e){return"undefined"==typeof BigInt?Q:e}function Q(){throw new Error("BigInt not supported")}},38075:(e,t,n)=>{"use strict";var r=n(70453),i=n(10487),o=i(r("String.prototype.indexOf"));e.exports=function(e,t){var n=r(e,!!t);return"function"==typeof n&&o(e,".prototype.")>-1?i(n):n}},10487:(e,t,n)=>{"use strict";var r=n(66743),i=n(70453),o=n(96897),s=n(69675),a=i("%Function.prototype.apply%"),u=i("%Function.prototype.call%"),c=i("%Reflect.apply%",!0)||r.call(u,a),d=n(30655),l=i("%Math.max%");e.exports=function(e){if("function"!=typeof e)throw new s("a function is required");var t=c(r,u,arguments);return o(t,1+l(0,e.length-(arguments.length-1)),!0)};var h=function(){return c(r,a,arguments)};d?d(e.exports,"apply",{value:h}):e.exports.apply=h},56168:(e,t,n)=>{var r=n(92861).Buffer,i=n(88310).Transform,o=n(83141).I;function s(e){i.call(this),this.hashMode="string"==typeof e,this.hashMode?this[e]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}n(56698)(s,i),s.prototype.update=function(e,t,n){"string"==typeof e&&(e=r.from(e,t));var i=this._update(e);return this.hashMode?this:(n&&(i=this._toString(i,n)),i)},s.prototype.setAutoPadding=function(){},s.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")},s.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")},s.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")},s.prototype._transform=function(e,t,n){var r;try{this.hashMode?this._update(e):this.push(this._update(e))}catch(e){r=e}finally{n(r)}},s.prototype._flush=function(e){var t;try{this.push(this.__final())}catch(e){t=e}e(t)},s.prototype._finalOrDigest=function(e){var t=this.__final()||r.alloc(0);return e&&(t=this._toString(t,e,!0)),t},s.prototype._toString=function(e,t,n){if(this._decoder||(this._decoder=new o(t),this._encoding=t),this._encoding!==t)throw new Error("can't switch encodings");var r=this._decoder.write(e);return n&&(r+=this._decoder.end()),r},e.exports=s},15622:(e,t,n)=>{function r(e){return Object.prototype.toString.call(e)}t.isArray=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===r(e)},t.isBoolean=function(e){return"boolean"==typeof e},t.isNull=function(e){return null===e},t.isNullOrUndefined=function(e){return null==e},t.isNumber=function(e){return"number"==typeof e},t.isString=function(e){return"string"==typeof e},t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=function(e){return void 0===e},t.isRegExp=function(e){return"[object RegExp]"===r(e)},t.isObject=function(e){return"object"==typeof e&&null!==e},t.isDate=function(e){return"[object Date]"===r(e)},t.isError=function(e){return"[object Error]"===r(e)||e instanceof Error},t.isFunction=function(e){return"function"==typeof e},t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=n(48287).Buffer.isBuffer},61324:(e,t,n)=>{var r=n(48287).Buffer,i=n(86729),o=n(92801);e.exports=function(e){return new a(e)};var s={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};function a(e){this.curveType=s[e],this.curveType||(this.curveType={name:e}),this.curve=new i.ec(this.curveType.name),this.keys=void 0}function u(e,t,n){Array.isArray(e)||(e=e.toArray());var i=new r(e);if(n&&i.length=65&&n<=70?n-55:n>=97&&n<=102?n-87:n-48&15}function u(e,t,n){var r=a(e,n);return n-1>=t&&(r|=a(e,n-1)<<4),r}function c(e,t,n,r){for(var i=0,o=Math.min(e.length,n),s=t;s=49?a-49+10:a>=17?a-17+10:a}return i}o.isBN=function(e){return e instanceof o||null!==e&&"object"==typeof e&&e.constructor.wordSize===o.wordSize&&Array.isArray(e.words)},o.max=function(e,t){return e.cmp(t)>0?e:t},o.min=function(e,t){return e.cmp(t)<0?e:t},o.prototype._init=function(e,t,n){if("number"==typeof e)return this._initNumber(e,t,n);if("object"==typeof e)return this._initArray(e,t,n);"hex"===t&&(t=16),r(t===(0|t)&&t>=2&&t<=36);var i=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(i++,this.negative=1),i=0;i-=3)s=e[i]|e[i-1]<<8|e[i-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===n)for(i=0,o=0;i>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(e,t,n){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var r=0;r=t;r-=2)i=u(e,t,r)<=18?(o-=18,s+=1,this.words[s]|=i>>>26):o+=8;else for(r=(e.length-t)%2==0?t+1:t;r=18?(o-=18,s+=1,this.words[s]|=i>>>26):o+=8;this.strip()},o.prototype._parseBase=function(e,t,n){this.words=[0],this.length=1;for(var r=0,i=1;i<=67108863;i*=t)r++;r--,i=i/t|0;for(var o=e.length-n,s=o%r,a=Math.min(o,o-s)+n,u=0,d=n;d1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var d=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],h=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(e,t,n){n.negative=t.negative^e.negative;var r=e.length+t.length|0;n.length=r,r=r-1|0;var i=0|e.words[0],o=0|t.words[0],s=i*o,a=67108863&s,u=s/67108864|0;n.words[0]=a;for(var c=1;c>>26,l=67108863&u,h=Math.min(c,t.length-1),f=Math.max(0,c-e.length+1);f<=h;f++){var p=c-f|0;d+=(s=(i=0|e.words[p])*(o=0|t.words[f])+l)/67108864|0,l=67108863&s}n.words[c]=0|l,u=0|d}return 0!==u?n.words[c]=0|u:n.length--,n.strip()}o.prototype.toString=function(e,t){var n;if(t=0|t||1,16===(e=e||10)||"hex"===e){n="";for(var i=0,o=0,s=0;s>>24-i&16777215)||s!==this.length-1?d[6-u.length]+u+n:u+n,(i+=2)>=26&&(i-=26,s--)}for(0!==o&&(n=o.toString(16)+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(e===(0|e)&&e>=2&&e<=36){var c=l[e],f=h[e];n="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modn(f).toString(e);n=(p=p.idivn(f)).isZero()?m+n:d[c-m.length]+m+n}for(this.isZero()&&(n="0"+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}r(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(e,t){return r(void 0!==s),this.toArrayLike(s,e,t)},o.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},o.prototype.toArrayLike=function(e,t,n){var i=this.byteLength(),o=n||Math.max(1,i);r(i<=o,"byte array longer than desired length"),r(o>0,"Requested array length <= 0"),this.strip();var s,a,u="le"===t,c=new e(o),d=this.clone();if(u){for(a=0;!d.isZero();a++)s=d.andln(255),d.iushrn(8),c[a]=s;for(;a=4096&&(n+=13,t>>>=13),t>=64&&(n+=7,t>>>=7),t>=8&&(n+=4,t>>>=4),t>=2&&(n+=2,t>>>=2),n+t},o.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,n=0;return 8191&t||(n+=13,t>>>=13),127&t||(n+=7,t>>>=7),15&t||(n+=4,t>>>=4),3&t||(n+=2,t>>>=2),1&t||n++,n},o.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},o.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},o.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var n=0;ne.length?this.clone().iand(e):e.clone().iand(this)},o.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},o.prototype.iuxor=function(e){var t,n;this.length>e.length?(t=this,n=e):(t=e,n=this);for(var r=0;re.length?this.clone().ixor(e):e.clone().ixor(this)},o.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},o.prototype.inotn=function(e){r("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),n=e%26;this._expand(t),n>0&&t--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-n),this.strip()},o.prototype.notn=function(e){return this.clone().inotn(e)},o.prototype.setn=function(e,t){r("number"==typeof e&&e>=0);var n=e/26|0,i=e%26;return this._expand(n+1),this.words[n]=t?this.words[n]|1<e.length?(n=this,r=e):(n=e,r=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=n.length,0!==i)this.words[this.length]=i,this.length++;else if(n!==this)for(;oe.length?this.clone().iadd(e):e.clone().iadd(this)},o.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var n,r,i=this.cmp(e);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(n=this,r=e):(n=e,r=this);for(var o=0,s=0;s>26,this.words[s]=67108863&t;for(;0!==o&&s>26,this.words[s]=67108863&t;if(0===o&&s>>13,f=0|s[1],p=8191&f,m=f>>>13,g=0|s[2],y=8191&g,v=g>>>13,b=0|s[3],w=8191&b,_=b>>>13,x=0|s[4],D=8191&x,E=x>>>13,M=0|s[5],A=8191&M,S=M>>>13,C=0|s[6],k=8191&C,T=C>>>13,I=0|s[7],R=8191&I,F=I>>>13,O=0|s[8],B=8191&O,P=O>>>13,N=0|s[9],j=8191&N,L=N>>>13,U=0|a[0],q=8191&U,$=U>>>13,z=0|a[1],H=8191&z,K=z>>>13,W=0|a[2],G=8191&W,V=W>>>13,Y=0|a[3],Z=8191&Y,J=Y>>>13,X=0|a[4],Q=8191&X,ee=X>>>13,te=0|a[5],ne=8191&te,re=te>>>13,ie=0|a[6],oe=8191&ie,se=ie>>>13,ae=0|a[7],ue=8191&ae,ce=ae>>>13,de=0|a[8],le=8191&de,he=de>>>13,fe=0|a[9],pe=8191&fe,me=fe>>>13;n.negative=e.negative^t.negative,n.length=19;var ge=(c+(r=Math.imul(l,q))|0)+((8191&(i=(i=Math.imul(l,$))+Math.imul(h,q)|0))<<13)|0;c=((o=Math.imul(h,$))+(i>>>13)|0)+(ge>>>26)|0,ge&=67108863,r=Math.imul(p,q),i=(i=Math.imul(p,$))+Math.imul(m,q)|0,o=Math.imul(m,$);var ye=(c+(r=r+Math.imul(l,H)|0)|0)+((8191&(i=(i=i+Math.imul(l,K)|0)+Math.imul(h,H)|0))<<13)|0;c=((o=o+Math.imul(h,K)|0)+(i>>>13)|0)+(ye>>>26)|0,ye&=67108863,r=Math.imul(y,q),i=(i=Math.imul(y,$))+Math.imul(v,q)|0,o=Math.imul(v,$),r=r+Math.imul(p,H)|0,i=(i=i+Math.imul(p,K)|0)+Math.imul(m,H)|0,o=o+Math.imul(m,K)|0;var ve=(c+(r=r+Math.imul(l,G)|0)|0)+((8191&(i=(i=i+Math.imul(l,V)|0)+Math.imul(h,G)|0))<<13)|0;c=((o=o+Math.imul(h,V)|0)+(i>>>13)|0)+(ve>>>26)|0,ve&=67108863,r=Math.imul(w,q),i=(i=Math.imul(w,$))+Math.imul(_,q)|0,o=Math.imul(_,$),r=r+Math.imul(y,H)|0,i=(i=i+Math.imul(y,K)|0)+Math.imul(v,H)|0,o=o+Math.imul(v,K)|0,r=r+Math.imul(p,G)|0,i=(i=i+Math.imul(p,V)|0)+Math.imul(m,G)|0,o=o+Math.imul(m,V)|0;var be=(c+(r=r+Math.imul(l,Z)|0)|0)+((8191&(i=(i=i+Math.imul(l,J)|0)+Math.imul(h,Z)|0))<<13)|0;c=((o=o+Math.imul(h,J)|0)+(i>>>13)|0)+(be>>>26)|0,be&=67108863,r=Math.imul(D,q),i=(i=Math.imul(D,$))+Math.imul(E,q)|0,o=Math.imul(E,$),r=r+Math.imul(w,H)|0,i=(i=i+Math.imul(w,K)|0)+Math.imul(_,H)|0,o=o+Math.imul(_,K)|0,r=r+Math.imul(y,G)|0,i=(i=i+Math.imul(y,V)|0)+Math.imul(v,G)|0,o=o+Math.imul(v,V)|0,r=r+Math.imul(p,Z)|0,i=(i=i+Math.imul(p,J)|0)+Math.imul(m,Z)|0,o=o+Math.imul(m,J)|0;var we=(c+(r=r+Math.imul(l,Q)|0)|0)+((8191&(i=(i=i+Math.imul(l,ee)|0)+Math.imul(h,Q)|0))<<13)|0;c=((o=o+Math.imul(h,ee)|0)+(i>>>13)|0)+(we>>>26)|0,we&=67108863,r=Math.imul(A,q),i=(i=Math.imul(A,$))+Math.imul(S,q)|0,o=Math.imul(S,$),r=r+Math.imul(D,H)|0,i=(i=i+Math.imul(D,K)|0)+Math.imul(E,H)|0,o=o+Math.imul(E,K)|0,r=r+Math.imul(w,G)|0,i=(i=i+Math.imul(w,V)|0)+Math.imul(_,G)|0,o=o+Math.imul(_,V)|0,r=r+Math.imul(y,Z)|0,i=(i=i+Math.imul(y,J)|0)+Math.imul(v,Z)|0,o=o+Math.imul(v,J)|0,r=r+Math.imul(p,Q)|0,i=(i=i+Math.imul(p,ee)|0)+Math.imul(m,Q)|0,o=o+Math.imul(m,ee)|0;var _e=(c+(r=r+Math.imul(l,ne)|0)|0)+((8191&(i=(i=i+Math.imul(l,re)|0)+Math.imul(h,ne)|0))<<13)|0;c=((o=o+Math.imul(h,re)|0)+(i>>>13)|0)+(_e>>>26)|0,_e&=67108863,r=Math.imul(k,q),i=(i=Math.imul(k,$))+Math.imul(T,q)|0,o=Math.imul(T,$),r=r+Math.imul(A,H)|0,i=(i=i+Math.imul(A,K)|0)+Math.imul(S,H)|0,o=o+Math.imul(S,K)|0,r=r+Math.imul(D,G)|0,i=(i=i+Math.imul(D,V)|0)+Math.imul(E,G)|0,o=o+Math.imul(E,V)|0,r=r+Math.imul(w,Z)|0,i=(i=i+Math.imul(w,J)|0)+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,r=r+Math.imul(y,Q)|0,i=(i=i+Math.imul(y,ee)|0)+Math.imul(v,Q)|0,o=o+Math.imul(v,ee)|0,r=r+Math.imul(p,ne)|0,i=(i=i+Math.imul(p,re)|0)+Math.imul(m,ne)|0,o=o+Math.imul(m,re)|0;var xe=(c+(r=r+Math.imul(l,oe)|0)|0)+((8191&(i=(i=i+Math.imul(l,se)|0)+Math.imul(h,oe)|0))<<13)|0;c=((o=o+Math.imul(h,se)|0)+(i>>>13)|0)+(xe>>>26)|0,xe&=67108863,r=Math.imul(R,q),i=(i=Math.imul(R,$))+Math.imul(F,q)|0,o=Math.imul(F,$),r=r+Math.imul(k,H)|0,i=(i=i+Math.imul(k,K)|0)+Math.imul(T,H)|0,o=o+Math.imul(T,K)|0,r=r+Math.imul(A,G)|0,i=(i=i+Math.imul(A,V)|0)+Math.imul(S,G)|0,o=o+Math.imul(S,V)|0,r=r+Math.imul(D,Z)|0,i=(i=i+Math.imul(D,J)|0)+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,r=r+Math.imul(w,Q)|0,i=(i=i+Math.imul(w,ee)|0)+Math.imul(_,Q)|0,o=o+Math.imul(_,ee)|0,r=r+Math.imul(y,ne)|0,i=(i=i+Math.imul(y,re)|0)+Math.imul(v,ne)|0,o=o+Math.imul(v,re)|0,r=r+Math.imul(p,oe)|0,i=(i=i+Math.imul(p,se)|0)+Math.imul(m,oe)|0,o=o+Math.imul(m,se)|0;var De=(c+(r=r+Math.imul(l,ue)|0)|0)+((8191&(i=(i=i+Math.imul(l,ce)|0)+Math.imul(h,ue)|0))<<13)|0;c=((o=o+Math.imul(h,ce)|0)+(i>>>13)|0)+(De>>>26)|0,De&=67108863,r=Math.imul(B,q),i=(i=Math.imul(B,$))+Math.imul(P,q)|0,o=Math.imul(P,$),r=r+Math.imul(R,H)|0,i=(i=i+Math.imul(R,K)|0)+Math.imul(F,H)|0,o=o+Math.imul(F,K)|0,r=r+Math.imul(k,G)|0,i=(i=i+Math.imul(k,V)|0)+Math.imul(T,G)|0,o=o+Math.imul(T,V)|0,r=r+Math.imul(A,Z)|0,i=(i=i+Math.imul(A,J)|0)+Math.imul(S,Z)|0,o=o+Math.imul(S,J)|0,r=r+Math.imul(D,Q)|0,i=(i=i+Math.imul(D,ee)|0)+Math.imul(E,Q)|0,o=o+Math.imul(E,ee)|0,r=r+Math.imul(w,ne)|0,i=(i=i+Math.imul(w,re)|0)+Math.imul(_,ne)|0,o=o+Math.imul(_,re)|0,r=r+Math.imul(y,oe)|0,i=(i=i+Math.imul(y,se)|0)+Math.imul(v,oe)|0,o=o+Math.imul(v,se)|0,r=r+Math.imul(p,ue)|0,i=(i=i+Math.imul(p,ce)|0)+Math.imul(m,ue)|0,o=o+Math.imul(m,ce)|0;var Ee=(c+(r=r+Math.imul(l,le)|0)|0)+((8191&(i=(i=i+Math.imul(l,he)|0)+Math.imul(h,le)|0))<<13)|0;c=((o=o+Math.imul(h,he)|0)+(i>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,r=Math.imul(j,q),i=(i=Math.imul(j,$))+Math.imul(L,q)|0,o=Math.imul(L,$),r=r+Math.imul(B,H)|0,i=(i=i+Math.imul(B,K)|0)+Math.imul(P,H)|0,o=o+Math.imul(P,K)|0,r=r+Math.imul(R,G)|0,i=(i=i+Math.imul(R,V)|0)+Math.imul(F,G)|0,o=o+Math.imul(F,V)|0,r=r+Math.imul(k,Z)|0,i=(i=i+Math.imul(k,J)|0)+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,r=r+Math.imul(A,Q)|0,i=(i=i+Math.imul(A,ee)|0)+Math.imul(S,Q)|0,o=o+Math.imul(S,ee)|0,r=r+Math.imul(D,ne)|0,i=(i=i+Math.imul(D,re)|0)+Math.imul(E,ne)|0,o=o+Math.imul(E,re)|0,r=r+Math.imul(w,oe)|0,i=(i=i+Math.imul(w,se)|0)+Math.imul(_,oe)|0,o=o+Math.imul(_,se)|0,r=r+Math.imul(y,ue)|0,i=(i=i+Math.imul(y,ce)|0)+Math.imul(v,ue)|0,o=o+Math.imul(v,ce)|0,r=r+Math.imul(p,le)|0,i=(i=i+Math.imul(p,he)|0)+Math.imul(m,le)|0,o=o+Math.imul(m,he)|0;var Me=(c+(r=r+Math.imul(l,pe)|0)|0)+((8191&(i=(i=i+Math.imul(l,me)|0)+Math.imul(h,pe)|0))<<13)|0;c=((o=o+Math.imul(h,me)|0)+(i>>>13)|0)+(Me>>>26)|0,Me&=67108863,r=Math.imul(j,H),i=(i=Math.imul(j,K))+Math.imul(L,H)|0,o=Math.imul(L,K),r=r+Math.imul(B,G)|0,i=(i=i+Math.imul(B,V)|0)+Math.imul(P,G)|0,o=o+Math.imul(P,V)|0,r=r+Math.imul(R,Z)|0,i=(i=i+Math.imul(R,J)|0)+Math.imul(F,Z)|0,o=o+Math.imul(F,J)|0,r=r+Math.imul(k,Q)|0,i=(i=i+Math.imul(k,ee)|0)+Math.imul(T,Q)|0,o=o+Math.imul(T,ee)|0,r=r+Math.imul(A,ne)|0,i=(i=i+Math.imul(A,re)|0)+Math.imul(S,ne)|0,o=o+Math.imul(S,re)|0,r=r+Math.imul(D,oe)|0,i=(i=i+Math.imul(D,se)|0)+Math.imul(E,oe)|0,o=o+Math.imul(E,se)|0,r=r+Math.imul(w,ue)|0,i=(i=i+Math.imul(w,ce)|0)+Math.imul(_,ue)|0,o=o+Math.imul(_,ce)|0,r=r+Math.imul(y,le)|0,i=(i=i+Math.imul(y,he)|0)+Math.imul(v,le)|0,o=o+Math.imul(v,he)|0;var Ae=(c+(r=r+Math.imul(p,pe)|0)|0)+((8191&(i=(i=i+Math.imul(p,me)|0)+Math.imul(m,pe)|0))<<13)|0;c=((o=o+Math.imul(m,me)|0)+(i>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,r=Math.imul(j,G),i=(i=Math.imul(j,V))+Math.imul(L,G)|0,o=Math.imul(L,V),r=r+Math.imul(B,Z)|0,i=(i=i+Math.imul(B,J)|0)+Math.imul(P,Z)|0,o=o+Math.imul(P,J)|0,r=r+Math.imul(R,Q)|0,i=(i=i+Math.imul(R,ee)|0)+Math.imul(F,Q)|0,o=o+Math.imul(F,ee)|0,r=r+Math.imul(k,ne)|0,i=(i=i+Math.imul(k,re)|0)+Math.imul(T,ne)|0,o=o+Math.imul(T,re)|0,r=r+Math.imul(A,oe)|0,i=(i=i+Math.imul(A,se)|0)+Math.imul(S,oe)|0,o=o+Math.imul(S,se)|0,r=r+Math.imul(D,ue)|0,i=(i=i+Math.imul(D,ce)|0)+Math.imul(E,ue)|0,o=o+Math.imul(E,ce)|0,r=r+Math.imul(w,le)|0,i=(i=i+Math.imul(w,he)|0)+Math.imul(_,le)|0,o=o+Math.imul(_,he)|0;var Se=(c+(r=r+Math.imul(y,pe)|0)|0)+((8191&(i=(i=i+Math.imul(y,me)|0)+Math.imul(v,pe)|0))<<13)|0;c=((o=o+Math.imul(v,me)|0)+(i>>>13)|0)+(Se>>>26)|0,Se&=67108863,r=Math.imul(j,Z),i=(i=Math.imul(j,J))+Math.imul(L,Z)|0,o=Math.imul(L,J),r=r+Math.imul(B,Q)|0,i=(i=i+Math.imul(B,ee)|0)+Math.imul(P,Q)|0,o=o+Math.imul(P,ee)|0,r=r+Math.imul(R,ne)|0,i=(i=i+Math.imul(R,re)|0)+Math.imul(F,ne)|0,o=o+Math.imul(F,re)|0,r=r+Math.imul(k,oe)|0,i=(i=i+Math.imul(k,se)|0)+Math.imul(T,oe)|0,o=o+Math.imul(T,se)|0,r=r+Math.imul(A,ue)|0,i=(i=i+Math.imul(A,ce)|0)+Math.imul(S,ue)|0,o=o+Math.imul(S,ce)|0,r=r+Math.imul(D,le)|0,i=(i=i+Math.imul(D,he)|0)+Math.imul(E,le)|0,o=o+Math.imul(E,he)|0;var Ce=(c+(r=r+Math.imul(w,pe)|0)|0)+((8191&(i=(i=i+Math.imul(w,me)|0)+Math.imul(_,pe)|0))<<13)|0;c=((o=o+Math.imul(_,me)|0)+(i>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,r=Math.imul(j,Q),i=(i=Math.imul(j,ee))+Math.imul(L,Q)|0,o=Math.imul(L,ee),r=r+Math.imul(B,ne)|0,i=(i=i+Math.imul(B,re)|0)+Math.imul(P,ne)|0,o=o+Math.imul(P,re)|0,r=r+Math.imul(R,oe)|0,i=(i=i+Math.imul(R,se)|0)+Math.imul(F,oe)|0,o=o+Math.imul(F,se)|0,r=r+Math.imul(k,ue)|0,i=(i=i+Math.imul(k,ce)|0)+Math.imul(T,ue)|0,o=o+Math.imul(T,ce)|0,r=r+Math.imul(A,le)|0,i=(i=i+Math.imul(A,he)|0)+Math.imul(S,le)|0,o=o+Math.imul(S,he)|0;var ke=(c+(r=r+Math.imul(D,pe)|0)|0)+((8191&(i=(i=i+Math.imul(D,me)|0)+Math.imul(E,pe)|0))<<13)|0;c=((o=o+Math.imul(E,me)|0)+(i>>>13)|0)+(ke>>>26)|0,ke&=67108863,r=Math.imul(j,ne),i=(i=Math.imul(j,re))+Math.imul(L,ne)|0,o=Math.imul(L,re),r=r+Math.imul(B,oe)|0,i=(i=i+Math.imul(B,se)|0)+Math.imul(P,oe)|0,o=o+Math.imul(P,se)|0,r=r+Math.imul(R,ue)|0,i=(i=i+Math.imul(R,ce)|0)+Math.imul(F,ue)|0,o=o+Math.imul(F,ce)|0,r=r+Math.imul(k,le)|0,i=(i=i+Math.imul(k,he)|0)+Math.imul(T,le)|0,o=o+Math.imul(T,he)|0;var Te=(c+(r=r+Math.imul(A,pe)|0)|0)+((8191&(i=(i=i+Math.imul(A,me)|0)+Math.imul(S,pe)|0))<<13)|0;c=((o=o+Math.imul(S,me)|0)+(i>>>13)|0)+(Te>>>26)|0,Te&=67108863,r=Math.imul(j,oe),i=(i=Math.imul(j,se))+Math.imul(L,oe)|0,o=Math.imul(L,se),r=r+Math.imul(B,ue)|0,i=(i=i+Math.imul(B,ce)|0)+Math.imul(P,ue)|0,o=o+Math.imul(P,ce)|0,r=r+Math.imul(R,le)|0,i=(i=i+Math.imul(R,he)|0)+Math.imul(F,le)|0,o=o+Math.imul(F,he)|0;var Ie=(c+(r=r+Math.imul(k,pe)|0)|0)+((8191&(i=(i=i+Math.imul(k,me)|0)+Math.imul(T,pe)|0))<<13)|0;c=((o=o+Math.imul(T,me)|0)+(i>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,r=Math.imul(j,ue),i=(i=Math.imul(j,ce))+Math.imul(L,ue)|0,o=Math.imul(L,ce),r=r+Math.imul(B,le)|0,i=(i=i+Math.imul(B,he)|0)+Math.imul(P,le)|0,o=o+Math.imul(P,he)|0;var Re=(c+(r=r+Math.imul(R,pe)|0)|0)+((8191&(i=(i=i+Math.imul(R,me)|0)+Math.imul(F,pe)|0))<<13)|0;c=((o=o+Math.imul(F,me)|0)+(i>>>13)|0)+(Re>>>26)|0,Re&=67108863,r=Math.imul(j,le),i=(i=Math.imul(j,he))+Math.imul(L,le)|0,o=Math.imul(L,he);var Fe=(c+(r=r+Math.imul(B,pe)|0)|0)+((8191&(i=(i=i+Math.imul(B,me)|0)+Math.imul(P,pe)|0))<<13)|0;c=((o=o+Math.imul(P,me)|0)+(i>>>13)|0)+(Fe>>>26)|0,Fe&=67108863;var Oe=(c+(r=Math.imul(j,pe))|0)+((8191&(i=(i=Math.imul(j,me))+Math.imul(L,pe)|0))<<13)|0;return c=((o=Math.imul(L,me))+(i>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,u[0]=ge,u[1]=ye,u[2]=ve,u[3]=be,u[4]=we,u[5]=_e,u[6]=xe,u[7]=De,u[8]=Ee,u[9]=Me,u[10]=Ae,u[11]=Se,u[12]=Ce,u[13]=ke,u[14]=Te,u[15]=Ie,u[16]=Re,u[17]=Fe,u[18]=Oe,0!==c&&(u[19]=c,n.length++),n};function m(e,t,n){return(new g).mulp(e,t,n)}function g(e,t){this.x=e,this.y=t}Math.imul||(p=f),o.prototype.mulTo=function(e,t){var n,r=this.length+e.length;return n=10===this.length&&10===e.length?p(this,e,t):r<63?f(this,e,t):r<1024?function(e,t,n){n.negative=t.negative^e.negative,n.length=e.length+t.length;for(var r=0,i=0,o=0;o>>26)|0)>>>26,s&=67108863}n.words[o]=a,r=s,s=i}return 0!==r?n.words[o]=r:n.length--,n.strip()}(this,e,t):m(this,e,t),n},g.prototype.makeRBT=function(e){for(var t=new Array(e),n=o.prototype._countBits(e)-1,r=0;r>=1;return r},g.prototype.permute=function(e,t,n,r,i,o){for(var s=0;s>>=1)i++;return 1<>>=13,n[2*s+1]=8191&o,o>>>=13;for(s=2*t;s>=26,t+=i/67108864|0,t+=o>>>26,this.words[n]=67108863&o}return 0!==t&&(this.words[n]=t,this.length++),this},o.prototype.muln=function(e){return this.clone().imuln(e)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),n=0;n>>i}return t}(e);if(0===t.length)return new o(1);for(var n=this,r=0;r=0);var t,n=e%26,i=(e-n)/26,o=67108863>>>26-n<<26-n;if(0!==n){var s=0;for(t=0;t>>26-n}s&&(this.words[t]=s,this.length++)}if(0!==i){for(t=this.length-1;t>=0;t--)this.words[t+i]=this.words[t];for(t=0;t=0),i=t?(t-t%26)/26:0;var o=e%26,s=Math.min((e-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,c=0;c=0&&(0!==d||c>=i);c--){var l=0|this.words[c];this.words[c]=d<<26-o|l>>>o,d=l&a}return u&&0!==d&&(u.words[u.length++]=d),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(e,t,n){return r(0===this.negative),this.iushrn(e,t,n)},o.prototype.shln=function(e){return this.clone().ishln(e)},o.prototype.ushln=function(e){return this.clone().iushln(e)},o.prototype.shrn=function(e){return this.clone().ishrn(e)},o.prototype.ushrn=function(e){return this.clone().iushrn(e)},o.prototype.testn=function(e){r("number"==typeof e&&e>=0);var t=e%26,n=(e-t)/26,i=1<=0);var t=e%26,n=(e-t)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==t&&n++,this.length=Math.min(n,this.length),0!==t){var i=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},o.prototype.isubn=function(e){if(r("number"==typeof e),r(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[i+n]=67108863&o}for(;i>26,this.words[i+n]=67108863&o;if(0===a)return this.strip();for(r(-1===a),a=0,i=0;i>26,this.words[i]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(e,t){var n=(this.length,e.length),r=this.clone(),i=e,s=0|i.words[i.length-1];0!==(n=26-this._countBits(s))&&(i=i.ushln(n),r.iushln(n),s=0|i.words[i.length-1]);var a,u=r.length-i.length;if("mod"!==t){(a=new o(null)).length=u+1,a.words=new Array(a.length);for(var c=0;c=0;l--){var h=67108864*(0|r.words[i.length+l])+(0|r.words[i.length+l-1]);for(h=Math.min(h/s|0,67108863),r._ishlnsubmul(i,h,l);0!==r.negative;)h--,r.negative=0,r._ishlnsubmul(i,1,l),r.isZero()||(r.negative^=1);a&&(a.words[l]=h)}return a&&a.strip(),r.strip(),"div"!==t&&0!==n&&r.iushrn(n),{div:a||null,mod:r}},o.prototype.divmod=function(e,t,n){return r(!e.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===e.negative?(a=this.neg().divmod(e,t),"mod"!==t&&(i=a.div.neg()),"div"!==t&&(s=a.mod.neg(),n&&0!==s.negative&&s.iadd(e)),{div:i,mod:s}):0===this.negative&&0!==e.negative?(a=this.divmod(e.neg(),t),"mod"!==t&&(i=a.div.neg()),{div:i,mod:a.mod}):this.negative&e.negative?(a=this.neg().divmod(e.neg(),t),"div"!==t&&(s=a.mod.neg(),n&&0!==s.negative&&s.isub(e)),{div:a.div,mod:s}):e.length>this.length||this.cmp(e)<0?{div:new o(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new o(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new o(this.modn(e.words[0]))}:this._wordDiv(e,t);var i,s,a},o.prototype.div=function(e){return this.divmod(e,"div",!1).div},o.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},o.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},o.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var n=0!==t.div.negative?t.mod.isub(e):t.mod,r=e.ushrn(1),i=e.andln(1),o=n.cmp(r);return o<0||1===i&&0===o?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},o.prototype.modn=function(e){r(e<=67108863);for(var t=(1<<26)%e,n=0,i=this.length-1;i>=0;i--)n=(t*n+(0|this.words[i]))%e;return n},o.prototype.idivn=function(e){r(e<=67108863);for(var t=0,n=this.length-1;n>=0;n--){var i=(0|this.words[n])+67108864*t;this.words[n]=i/e|0,t=i%e}return this.strip()},o.prototype.divn=function(e){return this.clone().idivn(e)},o.prototype.egcd=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i=new o(1),s=new o(0),a=new o(0),u=new o(1),c=0;t.isEven()&&n.isEven();)t.iushrn(1),n.iushrn(1),++c;for(var d=n.clone(),l=t.clone();!t.isZero();){for(var h=0,f=1;!(t.words[0]&f)&&h<26;++h,f<<=1);if(h>0)for(t.iushrn(h);h-- >0;)(i.isOdd()||s.isOdd())&&(i.iadd(d),s.isub(l)),i.iushrn(1),s.iushrn(1);for(var p=0,m=1;!(n.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(n.iushrn(p);p-- >0;)(a.isOdd()||u.isOdd())&&(a.iadd(d),u.isub(l)),a.iushrn(1),u.iushrn(1);t.cmp(n)>=0?(t.isub(n),i.isub(a),s.isub(u)):(n.isub(t),a.isub(i),u.isub(s))}return{a,b:u,gcd:n.iushln(c)}},o.prototype._invmp=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i,s=new o(1),a=new o(0),u=n.clone();t.cmpn(1)>0&&n.cmpn(1)>0;){for(var c=0,d=1;!(t.words[0]&d)&&c<26;++c,d<<=1);if(c>0)for(t.iushrn(c);c-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);for(var l=0,h=1;!(n.words[0]&h)&&l<26;++l,h<<=1);if(l>0)for(n.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(u),a.iushrn(1);t.cmp(n)>=0?(t.isub(n),s.isub(a)):(n.isub(t),a.isub(s))}return(i=0===t.cmpn(1)?s:a).cmpn(0)<0&&i.iadd(e),i},o.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),n=e.clone();t.negative=0,n.negative=0;for(var r=0;t.isEven()&&n.isEven();r++)t.iushrn(1),n.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;n.isEven();)n.iushrn(1);var i=t.cmp(n);if(i<0){var o=t;t=n,n=o}else if(0===i||0===n.cmpn(1))break;t.isub(n)}return n.iushln(r)},o.prototype.invm=function(e){return this.egcd(e).a.umod(e)},o.prototype.isEven=function(){return!(1&this.words[0])},o.prototype.isOdd=function(){return!(1&~this.words[0])},o.prototype.andln=function(e){return this.words[0]&e},o.prototype.bincn=function(e){r("number"==typeof e);var t=e%26,n=(e-t)/26,i=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(e){var t,n=e<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this.strip(),this.length>1)t=1;else{n&&(e=-e),r(e<=67108863,"Number is too big");var i=0|this.words[0];t=i===e?0:ie.length)return 1;if(this.length=0;n--){var r=0|this.words[n],i=0|e.words[n];if(r!==i){ri&&(t=1);break}}return t},o.prototype.gtn=function(e){return 1===this.cmpn(e)},o.prototype.gt=function(e){return 1===this.cmp(e)},o.prototype.gten=function(e){return this.cmpn(e)>=0},o.prototype.gte=function(e){return this.cmp(e)>=0},o.prototype.ltn=function(e){return-1===this.cmpn(e)},o.prototype.lt=function(e){return-1===this.cmp(e)},o.prototype.lten=function(e){return this.cmpn(e)<=0},o.prototype.lte=function(e){return this.cmp(e)<=0},o.prototype.eqn=function(e){return 0===this.cmpn(e)},o.prototype.eq=function(e){return 0===this.cmp(e)},o.red=function(e){return new D(e)},o.prototype.toRed=function(e){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},o.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(e){return this.red=e,this},o.prototype.forceRed=function(e){return r(!this.red,"Already a number in reduction context"),this._forceRed(e)},o.prototype.redAdd=function(e){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},o.prototype.redIAdd=function(e){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},o.prototype.redSub=function(e){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},o.prototype.redISub=function(e){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},o.prototype.redShl=function(e){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},o.prototype.redMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},o.prototype.redIMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},o.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(e){return r(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var y={k256:null,p224:null,p192:null,p25519:null};function v(e,t){this.name=e,this.p=new o(t,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function b(){v.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function w(){v.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function _(){v.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function x(){v.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function D(e){if("string"==typeof e){var t=o._prime(e);this.m=t.p,this.prime=t}else r(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function E(e){D.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}v.prototype._tmp=function(){var e=new o(null);return e.words=new Array(Math.ceil(this.n/13)),e},v.prototype.ireduce=function(e){var t,n=e;do{this.split(n,this.tmp),t=(n=(n=this.imulK(n)).iadd(this.tmp)).bitLength()}while(t>this.n);var r=t0?n.isub(this.p):void 0!==n.strip?n.strip():n._strip(),n},v.prototype.split=function(e,t){e.iushrn(this.n,0,t)},v.prototype.imulK=function(e){return e.imul(this.k)},i(b,v),b.prototype.split=function(e,t){for(var n=4194303,r=Math.min(e.length,9),i=0;i>>22,o=s}o>>>=22,e.words[i-10]=o,0===o&&e.length>10?e.length-=10:e.length-=9},b.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,n=0;n>>=26,e.words[n]=i,t=r}return 0!==t&&(e.words[e.length++]=t),e},o._prime=function(e){if(y[e])return y[e];var t;if("k256"===e)t=new b;else if("p224"===e)t=new w;else if("p192"===e)t=new _;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new x}return y[e]=t,t},D.prototype._verify1=function(e){r(0===e.negative,"red works only with positives"),r(e.red,"red works only with red numbers")},D.prototype._verify2=function(e,t){r(!(e.negative|t.negative),"red works only with positives"),r(e.red&&e.red===t.red,"red works only with red numbers")},D.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},D.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},D.prototype.add=function(e,t){this._verify2(e,t);var n=e.add(t);return n.cmp(this.m)>=0&&n.isub(this.m),n._forceRed(this)},D.prototype.iadd=function(e,t){this._verify2(e,t);var n=e.iadd(t);return n.cmp(this.m)>=0&&n.isub(this.m),n},D.prototype.sub=function(e,t){this._verify2(e,t);var n=e.sub(t);return n.cmpn(0)<0&&n.iadd(this.m),n._forceRed(this)},D.prototype.isub=function(e,t){this._verify2(e,t);var n=e.isub(t);return n.cmpn(0)<0&&n.iadd(this.m),n},D.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},D.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},D.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},D.prototype.isqr=function(e){return this.imul(e,e.clone())},D.prototype.sqr=function(e){return this.mul(e,e)},D.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(r(t%2==1),3===t){var n=this.m.add(new o(1)).iushrn(2);return this.pow(e,n)}for(var i=this.m.subn(1),s=0;!i.isZero()&&0===i.andln(1);)s++,i.iushrn(1);r(!i.isZero());var a=new o(1).toRed(this),u=a.redNeg(),c=this.m.subn(1).iushrn(1),d=this.m.bitLength();for(d=new o(2*d*d).toRed(this);0!==this.pow(d,c).cmp(u);)d.redIAdd(u);for(var l=this.pow(d,i),h=this.pow(e,i.addn(1).iushrn(1)),f=this.pow(e,i),p=s;0!==f.cmp(a);){for(var m=f,g=0;0!==m.cmp(a);g++)m=m.redSqr();r(g=0;r--){for(var c=t.words[r],d=u-1;d>=0;d--){var l=c>>d&1;i!==n[0]&&(i=this.sqr(i)),0!==l||0!==s?(s<<=1,s|=l,(4===++a||0===r&&0===d)&&(i=this.mul(i,n[s]),a=0,s=0)):a=0}u=26}return i},D.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},D.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},o.mont=function(e){return new E(e)},i(E,D),E.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},E.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},E.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var n=e.imul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=n.isub(r).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},E.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new o(0)._forceRed(this);var n=e.mul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=n.isub(r).iushrn(this.shift),s=i;return i.cmp(this.m)>=0?s=i.isub(this.m):i.cmpn(0)<0&&(s=i.iadd(this.m)),s._forceRed(this)},E.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=n.nmd(e),this)},47108:(e,t,n)=>{"use strict";var r=n(56698),i=n(88276),o=n(66011),s=n(62802),a=n(56168);function u(e){a.call(this,"digest"),this._hash=e}r(u,a),u.prototype._update=function(e){this._hash.update(e)},u.prototype._final=function(){return this._hash.digest()},e.exports=function(e){return"md5"===(e=e.toLowerCase())?new i:"rmd160"===e||"ripemd160"===e?new o:new u(s(e))}},20320:(e,t,n)=>{var r=n(88276);e.exports=function(e){return(new r).update(e).digest()}},83507:(e,t,n)=>{"use strict";var r=n(56698),i=n(41800),o=n(56168),s=n(92861).Buffer,a=n(20320),u=n(66011),c=n(62802),d=s.alloc(128);function l(e,t){o.call(this,"digest"),"string"==typeof t&&(t=s.from(t));var n="sha512"===e||"sha384"===e?128:64;(this._alg=e,this._key=t,t.length>n)?t=("rmd160"===e?new u:c(e)).update(t).digest():t.length{"use strict";var r=n(56698),i=n(92861).Buffer,o=n(56168),s=i.alloc(128),a=64;function u(e,t){o.call(this,"digest"),"string"==typeof t&&(t=i.from(t)),this._alg=e,this._key=t,t.length>a?t=e(t):t.length{"use strict";t.randomBytes=t.rng=t.pseudoRandomBytes=t.prng=n(53209),t.createHash=t.Hash=n(47108),t.createHmac=t.Hmac=n(83507);var r=n(55715),i=Object.keys(r),o=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(i);t.getHashes=function(){return o};var s=n(78396);t.pbkdf2=s.pbkdf2,t.pbkdf2Sync=s.pbkdf2Sync;var a=n(30125);t.Cipher=a.Cipher,t.createCipher=a.createCipher,t.Cipheriv=a.Cipheriv,t.createCipheriv=a.createCipheriv,t.Decipher=a.Decipher,t.createDecipher=a.createDecipher,t.Decipheriv=a.Decipheriv,t.createDecipheriv=a.createDecipheriv,t.getCiphers=a.getCiphers,t.listCiphers=a.listCiphers;var u=n(15380);t.DiffieHellmanGroup=u.DiffieHellmanGroup,t.createDiffieHellmanGroup=u.createDiffieHellmanGroup,t.getDiffieHellman=u.getDiffieHellman,t.createDiffieHellman=u.createDiffieHellman,t.DiffieHellman=u.DiffieHellman;var c=n(20);t.createSign=c.createSign,t.Sign=c.Sign,t.createVerify=c.createVerify,t.Verify=c.Verify,t.createECDH=n(61324);var d=n(97168);t.publicEncrypt=d.publicEncrypt,t.privateEncrypt=d.privateEncrypt,t.publicDecrypt=d.publicDecrypt,t.privateDecrypt=d.privateDecrypt;var l=n(76983);t.randomFill=l.randomFill,t.randomFillSync=l.randomFillSync,t.createCredentials=function(){throw new Error(["sorry, createCredentials is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join("\n"))},t.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}},30041:(e,t,n)=>{"use strict";var r=n(30655),i=n(58068),o=n(69675),s=n(75795);e.exports=function(e,t,n){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new o("`obj` must be an object or a function`");if("string"!=typeof t&&"symbol"!=typeof t)throw new o("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new o("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new o("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new o("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!=typeof arguments[6])throw new o("`loose`, if provided, must be a boolean");var a=arguments.length>3?arguments[3]:null,u=arguments.length>4?arguments[4]:null,c=arguments.length>5?arguments[5]:null,d=arguments.length>6&&arguments[6],l=!!s&&s(e,t);if(r)r(e,t,{configurable:null===c&&l?l.configurable:!c,enumerable:null===a&&l?l.enumerable:!a,value:n,writable:null===u&&l?l.writable:!u});else{if(!d&&(a||u||c))throw new i("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");e[t]=n}}},29560:(e,t,n)=>{"use strict";t.utils=n(87626),t.Cipher=n(82808),t.DES=n(82211),t.CBC=n(3389),t.EDE=n(65279)},3389:(e,t,n)=>{"use strict";var r=n(43349),i=n(56698),o={};function s(e){r.equal(e.length,8,"Invalid IV length"),this.iv=new Array(8);for(var t=0;t{"use strict";var r=n(43349);function i(e){this.options=e,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0,this.padding=!1!==e.padding}e.exports=i,i.prototype._init=function(){},i.prototype.update=function(e){return 0===e.length?[]:"decrypt"===this.type?this._updateDecrypt(e):this._updateEncrypt(e)},i.prototype._buffer=function(e,t){for(var n=Math.min(this.buffer.length-this.bufferOff,e.length-t),r=0;r0;r--)t+=this._buffer(e,t),n+=this._flushBuffer(i,n);return t+=this._buffer(e,t),i},i.prototype.final=function(e){var t,n;return e&&(t=this.update(e)),n="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),t?t.concat(n):n},i.prototype._pad=function(e,t){if(0===t)return!1;for(;t{"use strict";var r=n(43349),i=n(56698),o=n(87626),s=n(82808);function a(){this.tmp=new Array(2),this.keys=null}function u(e){s.call(this,e);var t=new a;this._desState=t,this.deriveKeys(t,e.key)}i(u,s),e.exports=u,u.create=function(e){return new u(e)};var c=[1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];u.prototype.deriveKeys=function(e,t){e.keys=new Array(32),r.equal(t.length,this.blockSize,"Invalid key length");var n=o.readUInt32BE(t,0),i=o.readUInt32BE(t,4);o.pc1(n,i,e.tmp,0),n=e.tmp[0],i=e.tmp[1];for(var s=0;s>>1];n=o.r28shl(n,a),i=o.r28shl(i,a),o.pc2(n,i,e.keys,s)}},u.prototype._update=function(e,t,n,r){var i=this._desState,s=o.readUInt32BE(e,t),a=o.readUInt32BE(e,t+4);o.ip(s,a,i.tmp,0),s=i.tmp[0],a=i.tmp[1],"encrypt"===this.type?this._encrypt(i,s,a,i.tmp,0):this._decrypt(i,s,a,i.tmp,0),s=i.tmp[0],a=i.tmp[1],o.writeUInt32BE(n,s,r),o.writeUInt32BE(n,a,r+4)},u.prototype._pad=function(e,t){if(!1===this.padding)return!1;for(var n=e.length-t,r=t;r>>0,s=h}o.rip(a,s,r,i)},u.prototype._decrypt=function(e,t,n,r,i){for(var s=n,a=t,u=e.keys.length-2;u>=0;u-=2){var c=e.keys[u],d=e.keys[u+1];o.expand(s,e.tmp,0),c^=e.tmp[0],d^=e.tmp[1];var l=o.substitute(c,d),h=s;s=(a^o.permute(l))>>>0,a=h}o.rip(s,a,r,i)}},65279:(e,t,n)=>{"use strict";var r=n(43349),i=n(56698),o=n(82808),s=n(82211);function a(e,t){r.equal(t.length,24,"Invalid key length");var n=t.slice(0,8),i=t.slice(8,16),o=t.slice(16,24);this.ciphers="encrypt"===e?[s.create({type:"encrypt",key:n}),s.create({type:"decrypt",key:i}),s.create({type:"encrypt",key:o})]:[s.create({type:"decrypt",key:o}),s.create({type:"encrypt",key:i}),s.create({type:"decrypt",key:n})]}function u(e){o.call(this,e);var t=new a(this.type,this.options.key);this._edeState=t}i(u,o),e.exports=u,u.create=function(e){return new u(e)},u.prototype._update=function(e,t,n,r){var i=this._edeState;i.ciphers[0]._update(e,t,n,r),i.ciphers[1]._update(n,r,n,r),i.ciphers[2]._update(n,r,n,r)},u.prototype._pad=s.prototype._pad,u.prototype._unpad=s.prototype._unpad},87626:(e,t)=>{"use strict";t.readUInt32BE=function(e,t){return(e[0+t]<<24|e[1+t]<<16|e[2+t]<<8|e[3+t])>>>0},t.writeUInt32BE=function(e,t,n){e[0+n]=t>>>24,e[1+n]=t>>>16&255,e[2+n]=t>>>8&255,e[3+n]=255&t},t.ip=function(e,t,n,r){for(var i=0,o=0,s=6;s>=0;s-=2){for(var a=0;a<=24;a+=8)i<<=1,i|=t>>>a+s&1;for(a=0;a<=24;a+=8)i<<=1,i|=e>>>a+s&1}for(s=6;s>=0;s-=2){for(a=1;a<=25;a+=8)o<<=1,o|=t>>>a+s&1;for(a=1;a<=25;a+=8)o<<=1,o|=e>>>a+s&1}n[r+0]=i>>>0,n[r+1]=o>>>0},t.rip=function(e,t,n,r){for(var i=0,o=0,s=0;s<4;s++)for(var a=24;a>=0;a-=8)i<<=1,i|=t>>>a+s&1,i<<=1,i|=e>>>a+s&1;for(s=4;s<8;s++)for(a=24;a>=0;a-=8)o<<=1,o|=t>>>a+s&1,o<<=1,o|=e>>>a+s&1;n[r+0]=i>>>0,n[r+1]=o>>>0},t.pc1=function(e,t,n,r){for(var i=0,o=0,s=7;s>=5;s--){for(var a=0;a<=24;a+=8)i<<=1,i|=t>>a+s&1;for(a=0;a<=24;a+=8)i<<=1,i|=e>>a+s&1}for(a=0;a<=24;a+=8)i<<=1,i|=t>>a+s&1;for(s=1;s<=3;s++){for(a=0;a<=24;a+=8)o<<=1,o|=t>>a+s&1;for(a=0;a<=24;a+=8)o<<=1,o|=e>>a+s&1}for(a=0;a<=24;a+=8)o<<=1,o|=e>>a+s&1;n[r+0]=i>>>0,n[r+1]=o>>>0},t.r28shl=function(e,t){return e<>>28-t};var n=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];t.pc2=function(e,t,r,i){for(var o=0,s=0,a=n.length>>>1,u=0;u>>n[u]&1;for(u=a;u>>n[u]&1;r[i+0]=o>>>0,r[i+1]=s>>>0},t.expand=function(e,t,n){var r=0,i=0;r=(1&e)<<5|e>>>27;for(var o=23;o>=15;o-=4)r<<=6,r|=e>>>o&63;for(o=11;o>=3;o-=4)i|=e>>>o&63,i<<=6;i|=(31&e)<<1|e>>>31,t[n+0]=r>>>0,t[n+1]=i>>>0};var r=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];t.substitute=function(e,t){for(var n=0,i=0;i<4;i++){n<<=4,n|=r[64*i+(e>>>18-6*i&63)]}for(i=0;i<4;i++){n<<=4,n|=r[256+64*i+(t>>>18-6*i&63)]}return n>>>0};var i=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];t.permute=function(e){for(var t=0,n=0;n>>i[n]&1;return t>>>0},t.padSplit=function(e,t,n){for(var r=e.toString(2);r.length{var r=n(48287).Buffer,i=n(4934),o=n(23241),s=n(14910);var a={binary:!0,hex:!0,base64:!0};t.DiffieHellmanGroup=t.createDiffieHellmanGroup=t.getDiffieHellman=function(e){var t=new r(o[e].prime,"hex"),n=new r(o[e].gen,"hex");return new s(t,n)},t.createDiffieHellman=t.DiffieHellman=function e(t,n,o,u){return r.isBuffer(n)||void 0===a[n]?e(t,"binary",n,o):(n=n||"binary",u=u||"binary",o=o||new r([2]),r.isBuffer(o)||(o=new r(o,u)),"number"==typeof t?new s(i(t,o),o,!0):(r.isBuffer(t)||(t=new r(t,n)),new s(t,o,!0)))}},14910:(e,t,n)=>{var r=n(48287).Buffer,i=n(66473),o=new(n(52244)),s=new i(24),a=new i(11),u=new i(10),c=new i(3),d=new i(7),l=n(4934),h=n(53209);function f(e,t){return t=t||"utf8",r.isBuffer(e)||(e=new r(e,t)),this._pub=new i(e),this}function p(e,t){return t=t||"utf8",r.isBuffer(e)||(e=new r(e,t)),this._priv=new i(e),this}e.exports=g;var m={};function g(e,t,n){this.setGenerator(t),this.__prime=new i(e),this._prime=i.mont(this.__prime),this._primeLen=e.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,n?(this.setPublicKey=f,this.setPrivateKey=p):this._primeCode=8}function y(e,t){var n=new r(e.toArray());return t?n.toString(t):n}Object.defineProperty(g.prototype,"verifyError",{enumerable:!0,get:function(){return"number"!=typeof this._primeCode&&(this._primeCode=function(e,t){var n=t.toString("hex"),r=[n,e.toString(16)].join("_");if(r in m)return m[r];var i,h=0;if(e.isEven()||!l.simpleSieve||!l.fermatTest(e)||!o.test(e))return h+=1,h+="02"===n||"05"===n?8:4,m[r]=h,h;switch(o.test(e.shrn(1))||(h+=2),n){case"02":e.mod(s).cmp(a)&&(h+=8);break;case"05":(i=e.mod(u)).cmp(c)&&i.cmp(d)&&(h+=8);break;default:h+=4}return m[r]=h,h}(this.__prime,this.__gen)),this._primeCode}}),g.prototype.generateKeys=function(){return this._priv||(this._priv=new i(h(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},g.prototype.computeSecret=function(e){var t=(e=(e=new i(e)).toRed(this._prime)).redPow(this._priv).fromRed(),n=new r(t.toArray()),o=this.getPrime();if(n.length{var r=n(53209);e.exports=v,v.simpleSieve=g,v.fermatTest=y;var i=n(66473),o=new i(24),s=new(n(52244)),a=new i(1),u=new i(2),c=new i(5),d=(new i(16),new i(8),new i(10)),l=new i(3),h=(new i(7),new i(11)),f=new i(4),p=(new i(12),null);function m(){if(null!==p)return p;var e=[];e[0]=2;for(var t=1,n=3;n<1048576;n+=2){for(var r=Math.ceil(Math.sqrt(n)),i=0;ie;)n.ishrn(1);if(n.isEven()&&n.iadd(a),n.testn(1)||n.iadd(u),t.cmp(u)){if(!t.cmp(c))for(;n.mod(d).cmp(l);)n.iadd(f)}else for(;n.mod(o).cmp(h);)n.iadd(f);if(g(p=n.shrn(1))&&g(n)&&y(p)&&y(n)&&s.test(p)&&s.test(n))return n}}},66473:function(e,t,n){!function(e,t){"use strict";function r(e,t){if(!e)throw new Error(t||"Assertion failed")}function i(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}function o(e,t,n){if(o.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(n=t,t=10),this._init(e||0,t||10,n||"be"))}var s;"object"==typeof e?e.exports=o:t.BN=o,o.BN=o,o.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:n(66089).Buffer}catch(e){}function a(e,t){var n=e.charCodeAt(t);return n>=65&&n<=70?n-55:n>=97&&n<=102?n-87:n-48&15}function u(e,t,n){var r=a(e,n);return n-1>=t&&(r|=a(e,n-1)<<4),r}function c(e,t,n,r){for(var i=0,o=Math.min(e.length,n),s=t;s=49?a-49+10:a>=17?a-17+10:a}return i}o.isBN=function(e){return e instanceof o||null!==e&&"object"==typeof e&&e.constructor.wordSize===o.wordSize&&Array.isArray(e.words)},o.max=function(e,t){return e.cmp(t)>0?e:t},o.min=function(e,t){return e.cmp(t)<0?e:t},o.prototype._init=function(e,t,n){if("number"==typeof e)return this._initNumber(e,t,n);if("object"==typeof e)return this._initArray(e,t,n);"hex"===t&&(t=16),r(t===(0|t)&&t>=2&&t<=36);var i=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(i++,this.negative=1),i=0;i-=3)s=e[i]|e[i-1]<<8|e[i-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===n)for(i=0,o=0;i>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(e,t,n){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var r=0;r=t;r-=2)i=u(e,t,r)<=18?(o-=18,s+=1,this.words[s]|=i>>>26):o+=8;else for(r=(e.length-t)%2==0?t+1:t;r=18?(o-=18,s+=1,this.words[s]|=i>>>26):o+=8;this.strip()},o.prototype._parseBase=function(e,t,n){this.words=[0],this.length=1;for(var r=0,i=1;i<=67108863;i*=t)r++;r--,i=i/t|0;for(var o=e.length-n,s=o%r,a=Math.min(o,o-s)+n,u=0,d=n;d1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var d=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],h=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(e,t,n){n.negative=t.negative^e.negative;var r=e.length+t.length|0;n.length=r,r=r-1|0;var i=0|e.words[0],o=0|t.words[0],s=i*o,a=67108863&s,u=s/67108864|0;n.words[0]=a;for(var c=1;c>>26,l=67108863&u,h=Math.min(c,t.length-1),f=Math.max(0,c-e.length+1);f<=h;f++){var p=c-f|0;d+=(s=(i=0|e.words[p])*(o=0|t.words[f])+l)/67108864|0,l=67108863&s}n.words[c]=0|l,u=0|d}return 0!==u?n.words[c]=0|u:n.length--,n.strip()}o.prototype.toString=function(e,t){var n;if(t=0|t||1,16===(e=e||10)||"hex"===e){n="";for(var i=0,o=0,s=0;s>>24-i&16777215)||s!==this.length-1?d[6-u.length]+u+n:u+n,(i+=2)>=26&&(i-=26,s--)}for(0!==o&&(n=o.toString(16)+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(e===(0|e)&&e>=2&&e<=36){var c=l[e],f=h[e];n="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modn(f).toString(e);n=(p=p.idivn(f)).isZero()?m+n:d[c-m.length]+m+n}for(this.isZero()&&(n="0"+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}r(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(e,t){return r(void 0!==s),this.toArrayLike(s,e,t)},o.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},o.prototype.toArrayLike=function(e,t,n){var i=this.byteLength(),o=n||Math.max(1,i);r(i<=o,"byte array longer than desired length"),r(o>0,"Requested array length <= 0"),this.strip();var s,a,u="le"===t,c=new e(o),d=this.clone();if(u){for(a=0;!d.isZero();a++)s=d.andln(255),d.iushrn(8),c[a]=s;for(;a=4096&&(n+=13,t>>>=13),t>=64&&(n+=7,t>>>=7),t>=8&&(n+=4,t>>>=4),t>=2&&(n+=2,t>>>=2),n+t},o.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,n=0;return 8191&t||(n+=13,t>>>=13),127&t||(n+=7,t>>>=7),15&t||(n+=4,t>>>=4),3&t||(n+=2,t>>>=2),1&t||n++,n},o.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},o.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},o.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var n=0;ne.length?this.clone().iand(e):e.clone().iand(this)},o.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},o.prototype.iuxor=function(e){var t,n;this.length>e.length?(t=this,n=e):(t=e,n=this);for(var r=0;re.length?this.clone().ixor(e):e.clone().ixor(this)},o.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},o.prototype.inotn=function(e){r("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),n=e%26;this._expand(t),n>0&&t--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-n),this.strip()},o.prototype.notn=function(e){return this.clone().inotn(e)},o.prototype.setn=function(e,t){r("number"==typeof e&&e>=0);var n=e/26|0,i=e%26;return this._expand(n+1),this.words[n]=t?this.words[n]|1<e.length?(n=this,r=e):(n=e,r=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=n.length,0!==i)this.words[this.length]=i,this.length++;else if(n!==this)for(;oe.length?this.clone().iadd(e):e.clone().iadd(this)},o.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var n,r,i=this.cmp(e);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(n=this,r=e):(n=e,r=this);for(var o=0,s=0;s>26,this.words[s]=67108863&t;for(;0!==o&&s>26,this.words[s]=67108863&t;if(0===o&&s>>13,f=0|s[1],p=8191&f,m=f>>>13,g=0|s[2],y=8191&g,v=g>>>13,b=0|s[3],w=8191&b,_=b>>>13,x=0|s[4],D=8191&x,E=x>>>13,M=0|s[5],A=8191&M,S=M>>>13,C=0|s[6],k=8191&C,T=C>>>13,I=0|s[7],R=8191&I,F=I>>>13,O=0|s[8],B=8191&O,P=O>>>13,N=0|s[9],j=8191&N,L=N>>>13,U=0|a[0],q=8191&U,$=U>>>13,z=0|a[1],H=8191&z,K=z>>>13,W=0|a[2],G=8191&W,V=W>>>13,Y=0|a[3],Z=8191&Y,J=Y>>>13,X=0|a[4],Q=8191&X,ee=X>>>13,te=0|a[5],ne=8191&te,re=te>>>13,ie=0|a[6],oe=8191&ie,se=ie>>>13,ae=0|a[7],ue=8191&ae,ce=ae>>>13,de=0|a[8],le=8191&de,he=de>>>13,fe=0|a[9],pe=8191&fe,me=fe>>>13;n.negative=e.negative^t.negative,n.length=19;var ge=(c+(r=Math.imul(l,q))|0)+((8191&(i=(i=Math.imul(l,$))+Math.imul(h,q)|0))<<13)|0;c=((o=Math.imul(h,$))+(i>>>13)|0)+(ge>>>26)|0,ge&=67108863,r=Math.imul(p,q),i=(i=Math.imul(p,$))+Math.imul(m,q)|0,o=Math.imul(m,$);var ye=(c+(r=r+Math.imul(l,H)|0)|0)+((8191&(i=(i=i+Math.imul(l,K)|0)+Math.imul(h,H)|0))<<13)|0;c=((o=o+Math.imul(h,K)|0)+(i>>>13)|0)+(ye>>>26)|0,ye&=67108863,r=Math.imul(y,q),i=(i=Math.imul(y,$))+Math.imul(v,q)|0,o=Math.imul(v,$),r=r+Math.imul(p,H)|0,i=(i=i+Math.imul(p,K)|0)+Math.imul(m,H)|0,o=o+Math.imul(m,K)|0;var ve=(c+(r=r+Math.imul(l,G)|0)|0)+((8191&(i=(i=i+Math.imul(l,V)|0)+Math.imul(h,G)|0))<<13)|0;c=((o=o+Math.imul(h,V)|0)+(i>>>13)|0)+(ve>>>26)|0,ve&=67108863,r=Math.imul(w,q),i=(i=Math.imul(w,$))+Math.imul(_,q)|0,o=Math.imul(_,$),r=r+Math.imul(y,H)|0,i=(i=i+Math.imul(y,K)|0)+Math.imul(v,H)|0,o=o+Math.imul(v,K)|0,r=r+Math.imul(p,G)|0,i=(i=i+Math.imul(p,V)|0)+Math.imul(m,G)|0,o=o+Math.imul(m,V)|0;var be=(c+(r=r+Math.imul(l,Z)|0)|0)+((8191&(i=(i=i+Math.imul(l,J)|0)+Math.imul(h,Z)|0))<<13)|0;c=((o=o+Math.imul(h,J)|0)+(i>>>13)|0)+(be>>>26)|0,be&=67108863,r=Math.imul(D,q),i=(i=Math.imul(D,$))+Math.imul(E,q)|0,o=Math.imul(E,$),r=r+Math.imul(w,H)|0,i=(i=i+Math.imul(w,K)|0)+Math.imul(_,H)|0,o=o+Math.imul(_,K)|0,r=r+Math.imul(y,G)|0,i=(i=i+Math.imul(y,V)|0)+Math.imul(v,G)|0,o=o+Math.imul(v,V)|0,r=r+Math.imul(p,Z)|0,i=(i=i+Math.imul(p,J)|0)+Math.imul(m,Z)|0,o=o+Math.imul(m,J)|0;var we=(c+(r=r+Math.imul(l,Q)|0)|0)+((8191&(i=(i=i+Math.imul(l,ee)|0)+Math.imul(h,Q)|0))<<13)|0;c=((o=o+Math.imul(h,ee)|0)+(i>>>13)|0)+(we>>>26)|0,we&=67108863,r=Math.imul(A,q),i=(i=Math.imul(A,$))+Math.imul(S,q)|0,o=Math.imul(S,$),r=r+Math.imul(D,H)|0,i=(i=i+Math.imul(D,K)|0)+Math.imul(E,H)|0,o=o+Math.imul(E,K)|0,r=r+Math.imul(w,G)|0,i=(i=i+Math.imul(w,V)|0)+Math.imul(_,G)|0,o=o+Math.imul(_,V)|0,r=r+Math.imul(y,Z)|0,i=(i=i+Math.imul(y,J)|0)+Math.imul(v,Z)|0,o=o+Math.imul(v,J)|0,r=r+Math.imul(p,Q)|0,i=(i=i+Math.imul(p,ee)|0)+Math.imul(m,Q)|0,o=o+Math.imul(m,ee)|0;var _e=(c+(r=r+Math.imul(l,ne)|0)|0)+((8191&(i=(i=i+Math.imul(l,re)|0)+Math.imul(h,ne)|0))<<13)|0;c=((o=o+Math.imul(h,re)|0)+(i>>>13)|0)+(_e>>>26)|0,_e&=67108863,r=Math.imul(k,q),i=(i=Math.imul(k,$))+Math.imul(T,q)|0,o=Math.imul(T,$),r=r+Math.imul(A,H)|0,i=(i=i+Math.imul(A,K)|0)+Math.imul(S,H)|0,o=o+Math.imul(S,K)|0,r=r+Math.imul(D,G)|0,i=(i=i+Math.imul(D,V)|0)+Math.imul(E,G)|0,o=o+Math.imul(E,V)|0,r=r+Math.imul(w,Z)|0,i=(i=i+Math.imul(w,J)|0)+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,r=r+Math.imul(y,Q)|0,i=(i=i+Math.imul(y,ee)|0)+Math.imul(v,Q)|0,o=o+Math.imul(v,ee)|0,r=r+Math.imul(p,ne)|0,i=(i=i+Math.imul(p,re)|0)+Math.imul(m,ne)|0,o=o+Math.imul(m,re)|0;var xe=(c+(r=r+Math.imul(l,oe)|0)|0)+((8191&(i=(i=i+Math.imul(l,se)|0)+Math.imul(h,oe)|0))<<13)|0;c=((o=o+Math.imul(h,se)|0)+(i>>>13)|0)+(xe>>>26)|0,xe&=67108863,r=Math.imul(R,q),i=(i=Math.imul(R,$))+Math.imul(F,q)|0,o=Math.imul(F,$),r=r+Math.imul(k,H)|0,i=(i=i+Math.imul(k,K)|0)+Math.imul(T,H)|0,o=o+Math.imul(T,K)|0,r=r+Math.imul(A,G)|0,i=(i=i+Math.imul(A,V)|0)+Math.imul(S,G)|0,o=o+Math.imul(S,V)|0,r=r+Math.imul(D,Z)|0,i=(i=i+Math.imul(D,J)|0)+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,r=r+Math.imul(w,Q)|0,i=(i=i+Math.imul(w,ee)|0)+Math.imul(_,Q)|0,o=o+Math.imul(_,ee)|0,r=r+Math.imul(y,ne)|0,i=(i=i+Math.imul(y,re)|0)+Math.imul(v,ne)|0,o=o+Math.imul(v,re)|0,r=r+Math.imul(p,oe)|0,i=(i=i+Math.imul(p,se)|0)+Math.imul(m,oe)|0,o=o+Math.imul(m,se)|0;var De=(c+(r=r+Math.imul(l,ue)|0)|0)+((8191&(i=(i=i+Math.imul(l,ce)|0)+Math.imul(h,ue)|0))<<13)|0;c=((o=o+Math.imul(h,ce)|0)+(i>>>13)|0)+(De>>>26)|0,De&=67108863,r=Math.imul(B,q),i=(i=Math.imul(B,$))+Math.imul(P,q)|0,o=Math.imul(P,$),r=r+Math.imul(R,H)|0,i=(i=i+Math.imul(R,K)|0)+Math.imul(F,H)|0,o=o+Math.imul(F,K)|0,r=r+Math.imul(k,G)|0,i=(i=i+Math.imul(k,V)|0)+Math.imul(T,G)|0,o=o+Math.imul(T,V)|0,r=r+Math.imul(A,Z)|0,i=(i=i+Math.imul(A,J)|0)+Math.imul(S,Z)|0,o=o+Math.imul(S,J)|0,r=r+Math.imul(D,Q)|0,i=(i=i+Math.imul(D,ee)|0)+Math.imul(E,Q)|0,o=o+Math.imul(E,ee)|0,r=r+Math.imul(w,ne)|0,i=(i=i+Math.imul(w,re)|0)+Math.imul(_,ne)|0,o=o+Math.imul(_,re)|0,r=r+Math.imul(y,oe)|0,i=(i=i+Math.imul(y,se)|0)+Math.imul(v,oe)|0,o=o+Math.imul(v,se)|0,r=r+Math.imul(p,ue)|0,i=(i=i+Math.imul(p,ce)|0)+Math.imul(m,ue)|0,o=o+Math.imul(m,ce)|0;var Ee=(c+(r=r+Math.imul(l,le)|0)|0)+((8191&(i=(i=i+Math.imul(l,he)|0)+Math.imul(h,le)|0))<<13)|0;c=((o=o+Math.imul(h,he)|0)+(i>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,r=Math.imul(j,q),i=(i=Math.imul(j,$))+Math.imul(L,q)|0,o=Math.imul(L,$),r=r+Math.imul(B,H)|0,i=(i=i+Math.imul(B,K)|0)+Math.imul(P,H)|0,o=o+Math.imul(P,K)|0,r=r+Math.imul(R,G)|0,i=(i=i+Math.imul(R,V)|0)+Math.imul(F,G)|0,o=o+Math.imul(F,V)|0,r=r+Math.imul(k,Z)|0,i=(i=i+Math.imul(k,J)|0)+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,r=r+Math.imul(A,Q)|0,i=(i=i+Math.imul(A,ee)|0)+Math.imul(S,Q)|0,o=o+Math.imul(S,ee)|0,r=r+Math.imul(D,ne)|0,i=(i=i+Math.imul(D,re)|0)+Math.imul(E,ne)|0,o=o+Math.imul(E,re)|0,r=r+Math.imul(w,oe)|0,i=(i=i+Math.imul(w,se)|0)+Math.imul(_,oe)|0,o=o+Math.imul(_,se)|0,r=r+Math.imul(y,ue)|0,i=(i=i+Math.imul(y,ce)|0)+Math.imul(v,ue)|0,o=o+Math.imul(v,ce)|0,r=r+Math.imul(p,le)|0,i=(i=i+Math.imul(p,he)|0)+Math.imul(m,le)|0,o=o+Math.imul(m,he)|0;var Me=(c+(r=r+Math.imul(l,pe)|0)|0)+((8191&(i=(i=i+Math.imul(l,me)|0)+Math.imul(h,pe)|0))<<13)|0;c=((o=o+Math.imul(h,me)|0)+(i>>>13)|0)+(Me>>>26)|0,Me&=67108863,r=Math.imul(j,H),i=(i=Math.imul(j,K))+Math.imul(L,H)|0,o=Math.imul(L,K),r=r+Math.imul(B,G)|0,i=(i=i+Math.imul(B,V)|0)+Math.imul(P,G)|0,o=o+Math.imul(P,V)|0,r=r+Math.imul(R,Z)|0,i=(i=i+Math.imul(R,J)|0)+Math.imul(F,Z)|0,o=o+Math.imul(F,J)|0,r=r+Math.imul(k,Q)|0,i=(i=i+Math.imul(k,ee)|0)+Math.imul(T,Q)|0,o=o+Math.imul(T,ee)|0,r=r+Math.imul(A,ne)|0,i=(i=i+Math.imul(A,re)|0)+Math.imul(S,ne)|0,o=o+Math.imul(S,re)|0,r=r+Math.imul(D,oe)|0,i=(i=i+Math.imul(D,se)|0)+Math.imul(E,oe)|0,o=o+Math.imul(E,se)|0,r=r+Math.imul(w,ue)|0,i=(i=i+Math.imul(w,ce)|0)+Math.imul(_,ue)|0,o=o+Math.imul(_,ce)|0,r=r+Math.imul(y,le)|0,i=(i=i+Math.imul(y,he)|0)+Math.imul(v,le)|0,o=o+Math.imul(v,he)|0;var Ae=(c+(r=r+Math.imul(p,pe)|0)|0)+((8191&(i=(i=i+Math.imul(p,me)|0)+Math.imul(m,pe)|0))<<13)|0;c=((o=o+Math.imul(m,me)|0)+(i>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,r=Math.imul(j,G),i=(i=Math.imul(j,V))+Math.imul(L,G)|0,o=Math.imul(L,V),r=r+Math.imul(B,Z)|0,i=(i=i+Math.imul(B,J)|0)+Math.imul(P,Z)|0,o=o+Math.imul(P,J)|0,r=r+Math.imul(R,Q)|0,i=(i=i+Math.imul(R,ee)|0)+Math.imul(F,Q)|0,o=o+Math.imul(F,ee)|0,r=r+Math.imul(k,ne)|0,i=(i=i+Math.imul(k,re)|0)+Math.imul(T,ne)|0,o=o+Math.imul(T,re)|0,r=r+Math.imul(A,oe)|0,i=(i=i+Math.imul(A,se)|0)+Math.imul(S,oe)|0,o=o+Math.imul(S,se)|0,r=r+Math.imul(D,ue)|0,i=(i=i+Math.imul(D,ce)|0)+Math.imul(E,ue)|0,o=o+Math.imul(E,ce)|0,r=r+Math.imul(w,le)|0,i=(i=i+Math.imul(w,he)|0)+Math.imul(_,le)|0,o=o+Math.imul(_,he)|0;var Se=(c+(r=r+Math.imul(y,pe)|0)|0)+((8191&(i=(i=i+Math.imul(y,me)|0)+Math.imul(v,pe)|0))<<13)|0;c=((o=o+Math.imul(v,me)|0)+(i>>>13)|0)+(Se>>>26)|0,Se&=67108863,r=Math.imul(j,Z),i=(i=Math.imul(j,J))+Math.imul(L,Z)|0,o=Math.imul(L,J),r=r+Math.imul(B,Q)|0,i=(i=i+Math.imul(B,ee)|0)+Math.imul(P,Q)|0,o=o+Math.imul(P,ee)|0,r=r+Math.imul(R,ne)|0,i=(i=i+Math.imul(R,re)|0)+Math.imul(F,ne)|0,o=o+Math.imul(F,re)|0,r=r+Math.imul(k,oe)|0,i=(i=i+Math.imul(k,se)|0)+Math.imul(T,oe)|0,o=o+Math.imul(T,se)|0,r=r+Math.imul(A,ue)|0,i=(i=i+Math.imul(A,ce)|0)+Math.imul(S,ue)|0,o=o+Math.imul(S,ce)|0,r=r+Math.imul(D,le)|0,i=(i=i+Math.imul(D,he)|0)+Math.imul(E,le)|0,o=o+Math.imul(E,he)|0;var Ce=(c+(r=r+Math.imul(w,pe)|0)|0)+((8191&(i=(i=i+Math.imul(w,me)|0)+Math.imul(_,pe)|0))<<13)|0;c=((o=o+Math.imul(_,me)|0)+(i>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,r=Math.imul(j,Q),i=(i=Math.imul(j,ee))+Math.imul(L,Q)|0,o=Math.imul(L,ee),r=r+Math.imul(B,ne)|0,i=(i=i+Math.imul(B,re)|0)+Math.imul(P,ne)|0,o=o+Math.imul(P,re)|0,r=r+Math.imul(R,oe)|0,i=(i=i+Math.imul(R,se)|0)+Math.imul(F,oe)|0,o=o+Math.imul(F,se)|0,r=r+Math.imul(k,ue)|0,i=(i=i+Math.imul(k,ce)|0)+Math.imul(T,ue)|0,o=o+Math.imul(T,ce)|0,r=r+Math.imul(A,le)|0,i=(i=i+Math.imul(A,he)|0)+Math.imul(S,le)|0,o=o+Math.imul(S,he)|0;var ke=(c+(r=r+Math.imul(D,pe)|0)|0)+((8191&(i=(i=i+Math.imul(D,me)|0)+Math.imul(E,pe)|0))<<13)|0;c=((o=o+Math.imul(E,me)|0)+(i>>>13)|0)+(ke>>>26)|0,ke&=67108863,r=Math.imul(j,ne),i=(i=Math.imul(j,re))+Math.imul(L,ne)|0,o=Math.imul(L,re),r=r+Math.imul(B,oe)|0,i=(i=i+Math.imul(B,se)|0)+Math.imul(P,oe)|0,o=o+Math.imul(P,se)|0,r=r+Math.imul(R,ue)|0,i=(i=i+Math.imul(R,ce)|0)+Math.imul(F,ue)|0,o=o+Math.imul(F,ce)|0,r=r+Math.imul(k,le)|0,i=(i=i+Math.imul(k,he)|0)+Math.imul(T,le)|0,o=o+Math.imul(T,he)|0;var Te=(c+(r=r+Math.imul(A,pe)|0)|0)+((8191&(i=(i=i+Math.imul(A,me)|0)+Math.imul(S,pe)|0))<<13)|0;c=((o=o+Math.imul(S,me)|0)+(i>>>13)|0)+(Te>>>26)|0,Te&=67108863,r=Math.imul(j,oe),i=(i=Math.imul(j,se))+Math.imul(L,oe)|0,o=Math.imul(L,se),r=r+Math.imul(B,ue)|0,i=(i=i+Math.imul(B,ce)|0)+Math.imul(P,ue)|0,o=o+Math.imul(P,ce)|0,r=r+Math.imul(R,le)|0,i=(i=i+Math.imul(R,he)|0)+Math.imul(F,le)|0,o=o+Math.imul(F,he)|0;var Ie=(c+(r=r+Math.imul(k,pe)|0)|0)+((8191&(i=(i=i+Math.imul(k,me)|0)+Math.imul(T,pe)|0))<<13)|0;c=((o=o+Math.imul(T,me)|0)+(i>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,r=Math.imul(j,ue),i=(i=Math.imul(j,ce))+Math.imul(L,ue)|0,o=Math.imul(L,ce),r=r+Math.imul(B,le)|0,i=(i=i+Math.imul(B,he)|0)+Math.imul(P,le)|0,o=o+Math.imul(P,he)|0;var Re=(c+(r=r+Math.imul(R,pe)|0)|0)+((8191&(i=(i=i+Math.imul(R,me)|0)+Math.imul(F,pe)|0))<<13)|0;c=((o=o+Math.imul(F,me)|0)+(i>>>13)|0)+(Re>>>26)|0,Re&=67108863,r=Math.imul(j,le),i=(i=Math.imul(j,he))+Math.imul(L,le)|0,o=Math.imul(L,he);var Fe=(c+(r=r+Math.imul(B,pe)|0)|0)+((8191&(i=(i=i+Math.imul(B,me)|0)+Math.imul(P,pe)|0))<<13)|0;c=((o=o+Math.imul(P,me)|0)+(i>>>13)|0)+(Fe>>>26)|0,Fe&=67108863;var Oe=(c+(r=Math.imul(j,pe))|0)+((8191&(i=(i=Math.imul(j,me))+Math.imul(L,pe)|0))<<13)|0;return c=((o=Math.imul(L,me))+(i>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,u[0]=ge,u[1]=ye,u[2]=ve,u[3]=be,u[4]=we,u[5]=_e,u[6]=xe,u[7]=De,u[8]=Ee,u[9]=Me,u[10]=Ae,u[11]=Se,u[12]=Ce,u[13]=ke,u[14]=Te,u[15]=Ie,u[16]=Re,u[17]=Fe,u[18]=Oe,0!==c&&(u[19]=c,n.length++),n};function m(e,t,n){return(new g).mulp(e,t,n)}function g(e,t){this.x=e,this.y=t}Math.imul||(p=f),o.prototype.mulTo=function(e,t){var n,r=this.length+e.length;return n=10===this.length&&10===e.length?p(this,e,t):r<63?f(this,e,t):r<1024?function(e,t,n){n.negative=t.negative^e.negative,n.length=e.length+t.length;for(var r=0,i=0,o=0;o>>26)|0)>>>26,s&=67108863}n.words[o]=a,r=s,s=i}return 0!==r?n.words[o]=r:n.length--,n.strip()}(this,e,t):m(this,e,t),n},g.prototype.makeRBT=function(e){for(var t=new Array(e),n=o.prototype._countBits(e)-1,r=0;r>=1;return r},g.prototype.permute=function(e,t,n,r,i,o){for(var s=0;s>>=1)i++;return 1<>>=13,n[2*s+1]=8191&o,o>>>=13;for(s=2*t;s>=26,t+=i/67108864|0,t+=o>>>26,this.words[n]=67108863&o}return 0!==t&&(this.words[n]=t,this.length++),this},o.prototype.muln=function(e){return this.clone().imuln(e)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),n=0;n>>i}return t}(e);if(0===t.length)return new o(1);for(var n=this,r=0;r=0);var t,n=e%26,i=(e-n)/26,o=67108863>>>26-n<<26-n;if(0!==n){var s=0;for(t=0;t>>26-n}s&&(this.words[t]=s,this.length++)}if(0!==i){for(t=this.length-1;t>=0;t--)this.words[t+i]=this.words[t];for(t=0;t=0),i=t?(t-t%26)/26:0;var o=e%26,s=Math.min((e-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,c=0;c=0&&(0!==d||c>=i);c--){var l=0|this.words[c];this.words[c]=d<<26-o|l>>>o,d=l&a}return u&&0!==d&&(u.words[u.length++]=d),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(e,t,n){return r(0===this.negative),this.iushrn(e,t,n)},o.prototype.shln=function(e){return this.clone().ishln(e)},o.prototype.ushln=function(e){return this.clone().iushln(e)},o.prototype.shrn=function(e){return this.clone().ishrn(e)},o.prototype.ushrn=function(e){return this.clone().iushrn(e)},o.prototype.testn=function(e){r("number"==typeof e&&e>=0);var t=e%26,n=(e-t)/26,i=1<=0);var t=e%26,n=(e-t)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==t&&n++,this.length=Math.min(n,this.length),0!==t){var i=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},o.prototype.isubn=function(e){if(r("number"==typeof e),r(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[i+n]=67108863&o}for(;i>26,this.words[i+n]=67108863&o;if(0===a)return this.strip();for(r(-1===a),a=0,i=0;i>26,this.words[i]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(e,t){var n=(this.length,e.length),r=this.clone(),i=e,s=0|i.words[i.length-1];0!==(n=26-this._countBits(s))&&(i=i.ushln(n),r.iushln(n),s=0|i.words[i.length-1]);var a,u=r.length-i.length;if("mod"!==t){(a=new o(null)).length=u+1,a.words=new Array(a.length);for(var c=0;c=0;l--){var h=67108864*(0|r.words[i.length+l])+(0|r.words[i.length+l-1]);for(h=Math.min(h/s|0,67108863),r._ishlnsubmul(i,h,l);0!==r.negative;)h--,r.negative=0,r._ishlnsubmul(i,1,l),r.isZero()||(r.negative^=1);a&&(a.words[l]=h)}return a&&a.strip(),r.strip(),"div"!==t&&0!==n&&r.iushrn(n),{div:a||null,mod:r}},o.prototype.divmod=function(e,t,n){return r(!e.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===e.negative?(a=this.neg().divmod(e,t),"mod"!==t&&(i=a.div.neg()),"div"!==t&&(s=a.mod.neg(),n&&0!==s.negative&&s.iadd(e)),{div:i,mod:s}):0===this.negative&&0!==e.negative?(a=this.divmod(e.neg(),t),"mod"!==t&&(i=a.div.neg()),{div:i,mod:a.mod}):this.negative&e.negative?(a=this.neg().divmod(e.neg(),t),"div"!==t&&(s=a.mod.neg(),n&&0!==s.negative&&s.isub(e)),{div:a.div,mod:s}):e.length>this.length||this.cmp(e)<0?{div:new o(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new o(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new o(this.modn(e.words[0]))}:this._wordDiv(e,t);var i,s,a},o.prototype.div=function(e){return this.divmod(e,"div",!1).div},o.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},o.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},o.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var n=0!==t.div.negative?t.mod.isub(e):t.mod,r=e.ushrn(1),i=e.andln(1),o=n.cmp(r);return o<0||1===i&&0===o?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},o.prototype.modn=function(e){r(e<=67108863);for(var t=(1<<26)%e,n=0,i=this.length-1;i>=0;i--)n=(t*n+(0|this.words[i]))%e;return n},o.prototype.idivn=function(e){r(e<=67108863);for(var t=0,n=this.length-1;n>=0;n--){var i=(0|this.words[n])+67108864*t;this.words[n]=i/e|0,t=i%e}return this.strip()},o.prototype.divn=function(e){return this.clone().idivn(e)},o.prototype.egcd=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i=new o(1),s=new o(0),a=new o(0),u=new o(1),c=0;t.isEven()&&n.isEven();)t.iushrn(1),n.iushrn(1),++c;for(var d=n.clone(),l=t.clone();!t.isZero();){for(var h=0,f=1;!(t.words[0]&f)&&h<26;++h,f<<=1);if(h>0)for(t.iushrn(h);h-- >0;)(i.isOdd()||s.isOdd())&&(i.iadd(d),s.isub(l)),i.iushrn(1),s.iushrn(1);for(var p=0,m=1;!(n.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(n.iushrn(p);p-- >0;)(a.isOdd()||u.isOdd())&&(a.iadd(d),u.isub(l)),a.iushrn(1),u.iushrn(1);t.cmp(n)>=0?(t.isub(n),i.isub(a),s.isub(u)):(n.isub(t),a.isub(i),u.isub(s))}return{a,b:u,gcd:n.iushln(c)}},o.prototype._invmp=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i,s=new o(1),a=new o(0),u=n.clone();t.cmpn(1)>0&&n.cmpn(1)>0;){for(var c=0,d=1;!(t.words[0]&d)&&c<26;++c,d<<=1);if(c>0)for(t.iushrn(c);c-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);for(var l=0,h=1;!(n.words[0]&h)&&l<26;++l,h<<=1);if(l>0)for(n.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(u),a.iushrn(1);t.cmp(n)>=0?(t.isub(n),s.isub(a)):(n.isub(t),a.isub(s))}return(i=0===t.cmpn(1)?s:a).cmpn(0)<0&&i.iadd(e),i},o.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),n=e.clone();t.negative=0,n.negative=0;for(var r=0;t.isEven()&&n.isEven();r++)t.iushrn(1),n.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;n.isEven();)n.iushrn(1);var i=t.cmp(n);if(i<0){var o=t;t=n,n=o}else if(0===i||0===n.cmpn(1))break;t.isub(n)}return n.iushln(r)},o.prototype.invm=function(e){return this.egcd(e).a.umod(e)},o.prototype.isEven=function(){return!(1&this.words[0])},o.prototype.isOdd=function(){return!(1&~this.words[0])},o.prototype.andln=function(e){return this.words[0]&e},o.prototype.bincn=function(e){r("number"==typeof e);var t=e%26,n=(e-t)/26,i=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(e){var t,n=e<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this.strip(),this.length>1)t=1;else{n&&(e=-e),r(e<=67108863,"Number is too big");var i=0|this.words[0];t=i===e?0:ie.length)return 1;if(this.length=0;n--){var r=0|this.words[n],i=0|e.words[n];if(r!==i){ri&&(t=1);break}}return t},o.prototype.gtn=function(e){return 1===this.cmpn(e)},o.prototype.gt=function(e){return 1===this.cmp(e)},o.prototype.gten=function(e){return this.cmpn(e)>=0},o.prototype.gte=function(e){return this.cmp(e)>=0},o.prototype.ltn=function(e){return-1===this.cmpn(e)},o.prototype.lt=function(e){return-1===this.cmp(e)},o.prototype.lten=function(e){return this.cmpn(e)<=0},o.prototype.lte=function(e){return this.cmp(e)<=0},o.prototype.eqn=function(e){return 0===this.cmpn(e)},o.prototype.eq=function(e){return 0===this.cmp(e)},o.red=function(e){return new D(e)},o.prototype.toRed=function(e){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},o.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(e){return this.red=e,this},o.prototype.forceRed=function(e){return r(!this.red,"Already a number in reduction context"),this._forceRed(e)},o.prototype.redAdd=function(e){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},o.prototype.redIAdd=function(e){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},o.prototype.redSub=function(e){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},o.prototype.redISub=function(e){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},o.prototype.redShl=function(e){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},o.prototype.redMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},o.prototype.redIMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},o.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(e){return r(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var y={k256:null,p224:null,p192:null,p25519:null};function v(e,t){this.name=e,this.p=new o(t,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function b(){v.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function w(){v.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function _(){v.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function x(){v.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function D(e){if("string"==typeof e){var t=o._prime(e);this.m=t.p,this.prime=t}else r(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function E(e){D.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}v.prototype._tmp=function(){var e=new o(null);return e.words=new Array(Math.ceil(this.n/13)),e},v.prototype.ireduce=function(e){var t,n=e;do{this.split(n,this.tmp),t=(n=(n=this.imulK(n)).iadd(this.tmp)).bitLength()}while(t>this.n);var r=t0?n.isub(this.p):void 0!==n.strip?n.strip():n._strip(),n},v.prototype.split=function(e,t){e.iushrn(this.n,0,t)},v.prototype.imulK=function(e){return e.imul(this.k)},i(b,v),b.prototype.split=function(e,t){for(var n=4194303,r=Math.min(e.length,9),i=0;i>>22,o=s}o>>>=22,e.words[i-10]=o,0===o&&e.length>10?e.length-=10:e.length-=9},b.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,n=0;n>>=26,e.words[n]=i,t=r}return 0!==t&&(e.words[e.length++]=t),e},o._prime=function(e){if(y[e])return y[e];var t;if("k256"===e)t=new b;else if("p224"===e)t=new w;else if("p192"===e)t=new _;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new x}return y[e]=t,t},D.prototype._verify1=function(e){r(0===e.negative,"red works only with positives"),r(e.red,"red works only with red numbers")},D.prototype._verify2=function(e,t){r(!(e.negative|t.negative),"red works only with positives"),r(e.red&&e.red===t.red,"red works only with red numbers")},D.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},D.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},D.prototype.add=function(e,t){this._verify2(e,t);var n=e.add(t);return n.cmp(this.m)>=0&&n.isub(this.m),n._forceRed(this)},D.prototype.iadd=function(e,t){this._verify2(e,t);var n=e.iadd(t);return n.cmp(this.m)>=0&&n.isub(this.m),n},D.prototype.sub=function(e,t){this._verify2(e,t);var n=e.sub(t);return n.cmpn(0)<0&&n.iadd(this.m),n._forceRed(this)},D.prototype.isub=function(e,t){this._verify2(e,t);var n=e.isub(t);return n.cmpn(0)<0&&n.iadd(this.m),n},D.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},D.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},D.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},D.prototype.isqr=function(e){return this.imul(e,e.clone())},D.prototype.sqr=function(e){return this.mul(e,e)},D.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(r(t%2==1),3===t){var n=this.m.add(new o(1)).iushrn(2);return this.pow(e,n)}for(var i=this.m.subn(1),s=0;!i.isZero()&&0===i.andln(1);)s++,i.iushrn(1);r(!i.isZero());var a=new o(1).toRed(this),u=a.redNeg(),c=this.m.subn(1).iushrn(1),d=this.m.bitLength();for(d=new o(2*d*d).toRed(this);0!==this.pow(d,c).cmp(u);)d.redIAdd(u);for(var l=this.pow(d,i),h=this.pow(e,i.addn(1).iushrn(1)),f=this.pow(e,i),p=s;0!==f.cmp(a);){for(var m=f,g=0;0!==m.cmp(a);g++)m=m.redSqr();r(g=0;r--){for(var c=t.words[r],d=u-1;d>=0;d--){var l=c>>d&1;i!==n[0]&&(i=this.sqr(i)),0!==l||0!==s?(s<<=1,s|=l,(4===++a||0===r&&0===d)&&(i=this.mul(i,n[s]),a=0,s=0)):a=0}u=26}return i},D.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},D.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},o.mont=function(e){return new E(e)},i(E,D),E.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},E.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},E.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var n=e.imul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=n.isub(r).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},E.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new o(0)._forceRed(this);var n=e.mul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=n.isub(r).iushrn(this.shift),s=i;return i.cmp(this.m)>=0?s=i.isub(this.m):i.cmpn(0)<0&&(s=i.iadd(this.m)),s._forceRed(this)},E.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=n.nmd(e),this)},76320:e=>{"use strict";var t={single_source_shortest_paths:function(e,n,r){var i={},o={};o[n]=0;var s,a,u,c,d,l,h,f=t.PriorityQueue.make();for(f.push(n,0);!f.empty();)for(u in a=(s=f.pop()).value,c=s.cost,d=e[a]||{})d.hasOwnProperty(u)&&(l=c+d[u],h=o[u],(void 0===o[u]||h>l)&&(o[u]=l,f.push(u,l),i[u]=a));if(void 0!==r&&void 0===o[r]){var p=["Could not find a path from ",n," to ",r,"."].join("");throw new Error(p)}return i},extract_shortest_path_from_predecessor_list:function(e,t){for(var n=[],r=t;r;)n.push(r),e[r],r=e[r];return n.reverse(),n},find_path:function(e,n,r){var i=t.single_source_shortest_paths(e,n,r);return t.extract_shortest_path_from_predecessor_list(i,r)},PriorityQueue:{make:function(e){var n,r=t.PriorityQueue,i={};for(n in e=e||{},r)r.hasOwnProperty(n)&&(i[n]=r[n]);return i.queue=[],i.sorter=e.sorter||r.default_sorter,i},default_sorter:function(e,t){return e.cost-t.cost},push:function(e,t){var n={value:e,cost:t};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return 0===this.queue.length}}};e.exports=t},34783:function(e,t,n){var r=n(48287).Buffer;!function(e){"use strict";function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){for(var n=0;t.length>n;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function o(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),e}function s(e){return(s=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function a(e,t){return(a=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function u(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function c(e,t,n){return(c=u()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var i=new(Function.bind.apply(e,r));return n&&a(i,n.prototype),i}).apply(null,arguments)}function d(e){var t="function"==typeof Map?new Map:void 0;return(d=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return c(e,arguments,s(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),a(n,e)})(e)}function l(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}var h="app",f="user",p="team",m="dropboxapi.com",g="dropbox.com",y={api:"api",notify:"bolt",content:"api-content"},v={};function b(e){var t="000".concat(e.charCodeAt(0).toString(16)).slice(-4);return"\\u".concat(t)}v.accountSetProfilePhoto=function(e){return this.request("account/set_profile_photo",e,"user","api","rpc","account_info.write")},v.authTokenFromOauth1=function(e){return this.request("auth/token/from_oauth1",e,"app","api","rpc",null)},v.authTokenRevoke=function(){return this.request("auth/token/revoke",null,"user","api","rpc",null)},v.checkApp=function(e){return this.request("check/app",e,"app","api","rpc",null)},v.checkUser=function(e){return this.request("check/user",e,"user","api","rpc","account_info.read")},v.contactsDeleteManualContacts=function(){return this.request("contacts/delete_manual_contacts",null,"user","api","rpc","contacts.write")},v.contactsDeleteManualContactsBatch=function(e){return this.request("contacts/delete_manual_contacts_batch",e,"user","api","rpc","contacts.write")},v.filePropertiesPropertiesAdd=function(e){return this.request("file_properties/properties/add",e,"user","api","rpc","files.metadata.write")},v.filePropertiesPropertiesOverwrite=function(e){return this.request("file_properties/properties/overwrite",e,"user","api","rpc","files.metadata.write")},v.filePropertiesPropertiesRemove=function(e){return this.request("file_properties/properties/remove",e,"user","api","rpc","files.metadata.write")},v.filePropertiesPropertiesSearch=function(e){return this.request("file_properties/properties/search",e,"user","api","rpc","files.metadata.read")},v.filePropertiesPropertiesSearchContinue=function(e){return this.request("file_properties/properties/search/continue",e,"user","api","rpc","files.metadata.read")},v.filePropertiesPropertiesUpdate=function(e){return this.request("file_properties/properties/update",e,"user","api","rpc","files.metadata.write")},v.filePropertiesTemplatesAddForTeam=function(e){return this.request("file_properties/templates/add_for_team",e,"team","api","rpc","files.team_metadata.write")},v.filePropertiesTemplatesAddForUser=function(e){return this.request("file_properties/templates/add_for_user",e,"user","api","rpc","files.metadata.write")},v.filePropertiesTemplatesGetForTeam=function(e){return this.request("file_properties/templates/get_for_team",e,"team","api","rpc","files.team_metadata.write")},v.filePropertiesTemplatesGetForUser=function(e){return this.request("file_properties/templates/get_for_user",e,"user","api","rpc","files.metadata.read")},v.filePropertiesTemplatesListForTeam=function(){return this.request("file_properties/templates/list_for_team",null,"team","api","rpc","files.team_metadata.write")},v.filePropertiesTemplatesListForUser=function(){return this.request("file_properties/templates/list_for_user",null,"user","api","rpc","files.metadata.read")},v.filePropertiesTemplatesRemoveForTeam=function(e){return this.request("file_properties/templates/remove_for_team",e,"team","api","rpc","files.team_metadata.write")},v.filePropertiesTemplatesRemoveForUser=function(e){return this.request("file_properties/templates/remove_for_user",e,"user","api","rpc","files.metadata.write")},v.filePropertiesTemplatesUpdateForTeam=function(e){return this.request("file_properties/templates/update_for_team",e,"team","api","rpc","files.team_metadata.write")},v.filePropertiesTemplatesUpdateForUser=function(e){return this.request("file_properties/templates/update_for_user",e,"user","api","rpc","files.metadata.write")},v.fileRequestsCount=function(){return this.request("file_requests/count",null,"user","api","rpc","file_requests.read")},v.fileRequestsCreate=function(e){return this.request("file_requests/create",e,"user","api","rpc","file_requests.write")},v.fileRequestsDelete=function(e){return this.request("file_requests/delete",e,"user","api","rpc","file_requests.write")},v.fileRequestsDeleteAllClosed=function(){return this.request("file_requests/delete_all_closed",null,"user","api","rpc","file_requests.write")},v.fileRequestsGet=function(e){return this.request("file_requests/get",e,"user","api","rpc","file_requests.read")},v.fileRequestsListV2=function(e){return this.request("file_requests/list_v2",e,"user","api","rpc","file_requests.read")},v.fileRequestsList=function(){return this.request("file_requests/list",null,"user","api","rpc","file_requests.read")},v.fileRequestsListContinue=function(e){return this.request("file_requests/list/continue",e,"user","api","rpc","file_requests.read")},v.fileRequestsUpdate=function(e){return this.request("file_requests/update",e,"user","api","rpc","file_requests.write")},v.filesAlphaGetMetadata=function(e){return this.request("files/alpha/get_metadata",e,"user","api","rpc","files.metadata.read")},v.filesAlphaUpload=function(e){return this.request("files/alpha/upload",e,"user","content","upload","files.content.write")},v.filesCopyV2=function(e){return this.request("files/copy_v2",e,"user","api","rpc","files.content.write")},v.filesCopy=function(e){return this.request("files/copy",e,"user","api","rpc","files.content.write")},v.filesCopyBatchV2=function(e){return this.request("files/copy_batch_v2",e,"user","api","rpc","files.content.write")},v.filesCopyBatch=function(e){return this.request("files/copy_batch",e,"user","api","rpc","files.content.write")},v.filesCopyBatchCheckV2=function(e){return this.request("files/copy_batch/check_v2",e,"user","api","rpc","files.content.write")},v.filesCopyBatchCheck=function(e){return this.request("files/copy_batch/check",e,"user","api","rpc","files.content.write")},v.filesCopyReferenceGet=function(e){return this.request("files/copy_reference/get",e,"user","api","rpc","files.content.write")},v.filesCopyReferenceSave=function(e){return this.request("files/copy_reference/save",e,"user","api","rpc","files.content.write")},v.filesCreateFolderV2=function(e){return this.request("files/create_folder_v2",e,"user","api","rpc","files.content.write")},v.filesCreateFolder=function(e){return this.request("files/create_folder",e,"user","api","rpc","files.content.write")},v.filesCreateFolderBatch=function(e){return this.request("files/create_folder_batch",e,"user","api","rpc","files.content.write")},v.filesCreateFolderBatchCheck=function(e){return this.request("files/create_folder_batch/check",e,"user","api","rpc","files.content.write")},v.filesDeleteV2=function(e){return this.request("files/delete_v2",e,"user","api","rpc","files.content.write")},v.filesDelete=function(e){return this.request("files/delete",e,"user","api","rpc","files.content.write")},v.filesDeleteBatch=function(e){return this.request("files/delete_batch",e,"user","api","rpc","files.content.write")},v.filesDeleteBatchCheck=function(e){return this.request("files/delete_batch/check",e,"user","api","rpc","files.content.write")},v.filesDownload=function(e){return this.request("files/download",e,"user","content","download","files.content.read")},v.filesDownloadZip=function(e){return this.request("files/download_zip",e,"user","content","download","files.content.read")},v.filesExport=function(e){return this.request("files/export",e,"user","content","download","files.content.read")},v.filesGetFileLockBatch=function(e){return this.request("files/get_file_lock_batch",e,"user","api","rpc","files.content.read")},v.filesGetMetadata=function(e){return this.request("files/get_metadata",e,"user","api","rpc","files.metadata.read")},v.filesGetPreview=function(e){return this.request("files/get_preview",e,"user","content","download","files.content.read")},v.filesGetTemporaryLink=function(e){return this.request("files/get_temporary_link",e,"user","api","rpc","files.content.read")},v.filesGetTemporaryUploadLink=function(e){return this.request("files/get_temporary_upload_link",e,"user","api","rpc","files.content.write")},v.filesGetThumbnail=function(e){return this.request("files/get_thumbnail",e,"user","content","download","files.content.read")},v.filesGetThumbnailV2=function(e){return this.request("files/get_thumbnail_v2",e,"app, user","content","download","files.content.read")},v.filesGetThumbnailBatch=function(e){return this.request("files/get_thumbnail_batch",e,"user","content","rpc","files.content.read")},v.filesListFolder=function(e){return this.request("files/list_folder",e,"app, user","api","rpc","files.metadata.read")},v.filesListFolderContinue=function(e){return this.request("files/list_folder/continue",e,"app, user","api","rpc","files.metadata.read")},v.filesListFolderGetLatestCursor=function(e){return this.request("files/list_folder/get_latest_cursor",e,"user","api","rpc","files.metadata.read")},v.filesListFolderLongpoll=function(e){return this.request("files/list_folder/longpoll",e,"noauth","notify","rpc","files.metadata.read")},v.filesListRevisions=function(e){return this.request("files/list_revisions",e,"user","api","rpc","files.metadata.read")},v.filesLockFileBatch=function(e){return this.request("files/lock_file_batch",e,"user","api","rpc","files.content.write")},v.filesMoveV2=function(e){return this.request("files/move_v2",e,"user","api","rpc","files.content.write")},v.filesMove=function(e){return this.request("files/move",e,"user","api","rpc","files.content.write")},v.filesMoveBatchV2=function(e){return this.request("files/move_batch_v2",e,"user","api","rpc","files.content.write")},v.filesMoveBatch=function(e){return this.request("files/move_batch",e,"user","api","rpc","files.content.write")},v.filesMoveBatchCheckV2=function(e){return this.request("files/move_batch/check_v2",e,"user","api","rpc","files.content.write")},v.filesMoveBatchCheck=function(e){return this.request("files/move_batch/check",e,"user","api","rpc","files.content.write")},v.filesPaperCreate=function(e){return this.request("files/paper/create",e,"user","api","upload","files.content.write")},v.filesPaperUpdate=function(e){return this.request("files/paper/update",e,"user","api","upload","files.content.write")},v.filesPermanentlyDelete=function(e){return this.request("files/permanently_delete",e,"user","api","rpc","files.permanent_delete")},v.filesPropertiesAdd=function(e){return this.request("files/properties/add",e,"user","api","rpc","files.metadata.write")},v.filesPropertiesOverwrite=function(e){return this.request("files/properties/overwrite",e,"user","api","rpc","files.metadata.write")},v.filesPropertiesRemove=function(e){return this.request("files/properties/remove",e,"user","api","rpc","files.metadata.write")},v.filesPropertiesTemplateGet=function(e){return this.request("files/properties/template/get",e,"user","api","rpc","files.metadata.read")},v.filesPropertiesTemplateList=function(){return this.request("files/properties/template/list",null,"user","api","rpc","files.metadata.read")},v.filesPropertiesUpdate=function(e){return this.request("files/properties/update",e,"user","api","rpc","files.metadata.write")},v.filesRestore=function(e){return this.request("files/restore",e,"user","api","rpc","files.content.write")},v.filesSaveUrl=function(e){return this.request("files/save_url",e,"user","api","rpc","files.content.write")},v.filesSaveUrlCheckJobStatus=function(e){return this.request("files/save_url/check_job_status",e,"user","api","rpc","files.content.write")},v.filesSearch=function(e){return this.request("files/search",e,"user","api","rpc","files.metadata.read")},v.filesSearchV2=function(e){return this.request("files/search_v2",e,"user","api","rpc","files.metadata.read")},v.filesSearchContinueV2=function(e){return this.request("files/search/continue_v2",e,"user","api","rpc","files.metadata.read")},v.filesTagsAdd=function(e){return this.request("files/tags/add",e,"user","api","rpc","files.metadata.write")},v.filesTagsGet=function(e){return this.request("files/tags/get",e,"user","api","rpc","files.metadata.read")},v.filesTagsRemove=function(e){return this.request("files/tags/remove",e,"user","api","rpc","files.metadata.write")},v.filesUnlockFileBatch=function(e){return this.request("files/unlock_file_batch",e,"user","api","rpc","files.content.write")},v.filesUpload=function(e){return this.request("files/upload",e,"user","content","upload","files.content.write")},v.filesUploadSessionAppendV2=function(e){return this.request("files/upload_session/append_v2",e,"user","content","upload","files.content.write")},v.filesUploadSessionAppend=function(e){return this.request("files/upload_session/append",e,"user","content","upload","files.content.write")},v.filesUploadSessionFinish=function(e){return this.request("files/upload_session/finish",e,"user","content","upload","files.content.write")},v.filesUploadSessionFinishBatch=function(e){return this.request("files/upload_session/finish_batch",e,"user","api","rpc","files.content.write")},v.filesUploadSessionFinishBatchV2=function(e){return this.request("files/upload_session/finish_batch_v2",e,"user","api","rpc","files.content.write")},v.filesUploadSessionFinishBatchCheck=function(e){return this.request("files/upload_session/finish_batch/check",e,"user","api","rpc","files.content.write")},v.filesUploadSessionStart=function(e){return this.request("files/upload_session/start",e,"user","content","upload","files.content.write")},v.filesUploadSessionStartBatch=function(e){return this.request("files/upload_session/start_batch",e,"user","api","rpc","files.content.write")},v.openidUserinfo=function(e){return this.request("openid/userinfo",e,"user","api","rpc","openid")},v.paperDocsArchive=function(e){return this.request("paper/docs/archive",e,"user","api","rpc","files.content.write")},v.paperDocsCreate=function(e){return this.request("paper/docs/create",e,"user","api","upload","files.content.write")},v.paperDocsDownload=function(e){return this.request("paper/docs/download",e,"user","api","download","files.content.read")},v.paperDocsFolderUsersList=function(e){return this.request("paper/docs/folder_users/list",e,"user","api","rpc","sharing.read")},v.paperDocsFolderUsersListContinue=function(e){return this.request("paper/docs/folder_users/list/continue",e,"user","api","rpc","sharing.read")},v.paperDocsGetFolderInfo=function(e){return this.request("paper/docs/get_folder_info",e,"user","api","rpc","sharing.read")},v.paperDocsList=function(e){return this.request("paper/docs/list",e,"user","api","rpc","files.metadata.read")},v.paperDocsListContinue=function(e){return this.request("paper/docs/list/continue",e,"user","api","rpc","files.metadata.read")},v.paperDocsPermanentlyDelete=function(e){return this.request("paper/docs/permanently_delete",e,"user","api","rpc","files.permanent_delete")},v.paperDocsSharingPolicyGet=function(e){return this.request("paper/docs/sharing_policy/get",e,"user","api","rpc","sharing.read")},v.paperDocsSharingPolicySet=function(e){return this.request("paper/docs/sharing_policy/set",e,"user","api","rpc","sharing.write")},v.paperDocsUpdate=function(e){return this.request("paper/docs/update",e,"user","api","upload","files.content.write")},v.paperDocsUsersAdd=function(e){return this.request("paper/docs/users/add",e,"user","api","rpc","sharing.write")},v.paperDocsUsersList=function(e){return this.request("paper/docs/users/list",e,"user","api","rpc","sharing.read")},v.paperDocsUsersListContinue=function(e){return this.request("paper/docs/users/list/continue",e,"user","api","rpc","sharing.read")},v.paperDocsUsersRemove=function(e){return this.request("paper/docs/users/remove",e,"user","api","rpc","sharing.write")},v.paperFoldersCreate=function(e){return this.request("paper/folders/create",e,"user","api","rpc","files.content.write")},v.sharingAddFileMember=function(e){return this.request("sharing/add_file_member",e,"user","api","rpc","sharing.write")},v.sharingAddFolderMember=function(e){return this.request("sharing/add_folder_member",e,"user","api","rpc","sharing.write")},v.sharingCheckJobStatus=function(e){return this.request("sharing/check_job_status",e,"user","api","rpc","sharing.write")},v.sharingCheckRemoveMemberJobStatus=function(e){return this.request("sharing/check_remove_member_job_status",e,"user","api","rpc","sharing.write")},v.sharingCheckShareJobStatus=function(e){return this.request("sharing/check_share_job_status",e,"user","api","rpc","sharing.write")},v.sharingCreateSharedLink=function(e){return this.request("sharing/create_shared_link",e,"user","api","rpc","sharing.write")},v.sharingCreateSharedLinkWithSettings=function(e){return this.request("sharing/create_shared_link_with_settings",e,"user","api","rpc","sharing.write")},v.sharingGetFileMetadata=function(e){return this.request("sharing/get_file_metadata",e,"user","api","rpc","sharing.read")},v.sharingGetFileMetadataBatch=function(e){return this.request("sharing/get_file_metadata/batch",e,"user","api","rpc","sharing.read")},v.sharingGetFolderMetadata=function(e){return this.request("sharing/get_folder_metadata",e,"user","api","rpc","sharing.read")},v.sharingGetSharedLinkFile=function(e){return this.request("sharing/get_shared_link_file",e,"user","content","download","sharing.read")},v.sharingGetSharedLinkMetadata=function(e){return this.request("sharing/get_shared_link_metadata",e,"app, user","api","rpc","sharing.read")},v.sharingGetSharedLinks=function(e){return this.request("sharing/get_shared_links",e,"user","api","rpc","sharing.read")},v.sharingListFileMembers=function(e){return this.request("sharing/list_file_members",e,"user","api","rpc","sharing.read")},v.sharingListFileMembersBatch=function(e){return this.request("sharing/list_file_members/batch",e,"user","api","rpc","sharing.read")},v.sharingListFileMembersContinue=function(e){return this.request("sharing/list_file_members/continue",e,"user","api","rpc","sharing.read")},v.sharingListFolderMembers=function(e){return this.request("sharing/list_folder_members",e,"user","api","rpc","sharing.read")},v.sharingListFolderMembersContinue=function(e){return this.request("sharing/list_folder_members/continue",e,"user","api","rpc","sharing.read")},v.sharingListFolders=function(e){return this.request("sharing/list_folders",e,"user","api","rpc","sharing.read")},v.sharingListFoldersContinue=function(e){return this.request("sharing/list_folders/continue",e,"user","api","rpc","sharing.read")},v.sharingListMountableFolders=function(e){return this.request("sharing/list_mountable_folders",e,"user","api","rpc","sharing.read")},v.sharingListMountableFoldersContinue=function(e){return this.request("sharing/list_mountable_folders/continue",e,"user","api","rpc","sharing.read")},v.sharingListReceivedFiles=function(e){return this.request("sharing/list_received_files",e,"user","api","rpc","sharing.read")},v.sharingListReceivedFilesContinue=function(e){return this.request("sharing/list_received_files/continue",e,"user","api","rpc","sharing.read")},v.sharingListSharedLinks=function(e){return this.request("sharing/list_shared_links",e,"user","api","rpc","sharing.read")},v.sharingModifySharedLinkSettings=function(e){return this.request("sharing/modify_shared_link_settings",e,"user","api","rpc","sharing.write")},v.sharingMountFolder=function(e){return this.request("sharing/mount_folder",e,"user","api","rpc","sharing.write")},v.sharingRelinquishFileMembership=function(e){return this.request("sharing/relinquish_file_membership",e,"user","api","rpc","sharing.write")},v.sharingRelinquishFolderMembership=function(e){return this.request("sharing/relinquish_folder_membership",e,"user","api","rpc","sharing.write")},v.sharingRemoveFileMember=function(e){return this.request("sharing/remove_file_member",e,"user","api","rpc","sharing.write")},v.sharingRemoveFileMember2=function(e){return this.request("sharing/remove_file_member_2",e,"user","api","rpc","sharing.write")},v.sharingRemoveFolderMember=function(e){return this.request("sharing/remove_folder_member",e,"user","api","rpc","sharing.write")},v.sharingRevokeSharedLink=function(e){return this.request("sharing/revoke_shared_link",e,"user","api","rpc","sharing.write")},v.sharingSetAccessInheritance=function(e){return this.request("sharing/set_access_inheritance",e,"user","api","rpc","sharing.write")},v.sharingShareFolder=function(e){return this.request("sharing/share_folder",e,"user","api","rpc","sharing.write")},v.sharingTransferFolder=function(e){return this.request("sharing/transfer_folder",e,"user","api","rpc","sharing.write")},v.sharingUnmountFolder=function(e){return this.request("sharing/unmount_folder",e,"user","api","rpc","sharing.write")},v.sharingUnshareFile=function(e){return this.request("sharing/unshare_file",e,"user","api","rpc","sharing.write")},v.sharingUnshareFolder=function(e){return this.request("sharing/unshare_folder",e,"user","api","rpc","sharing.write")},v.sharingUpdateFileMember=function(e){return this.request("sharing/update_file_member",e,"user","api","rpc","sharing.write")},v.sharingUpdateFolderMember=function(e){return this.request("sharing/update_folder_member",e,"user","api","rpc","sharing.write")},v.sharingUpdateFolderPolicy=function(e){return this.request("sharing/update_folder_policy",e,"user","api","rpc","sharing.write")},v.teamDevicesListMemberDevices=function(e){return this.request("team/devices/list_member_devices",e,"team","api","rpc","sessions.list")},v.teamDevicesListMembersDevices=function(e){return this.request("team/devices/list_members_devices",e,"team","api","rpc","sessions.list")},v.teamDevicesListTeamDevices=function(e){return this.request("team/devices/list_team_devices",e,"team","api","rpc","sessions.list")},v.teamDevicesRevokeDeviceSession=function(e){return this.request("team/devices/revoke_device_session",e,"team","api","rpc","sessions.modify")},v.teamDevicesRevokeDeviceSessionBatch=function(e){return this.request("team/devices/revoke_device_session_batch",e,"team","api","rpc","sessions.modify")},v.teamFeaturesGetValues=function(e){return this.request("team/features/get_values",e,"team","api","rpc","team_info.read")},v.teamGetInfo=function(){return this.request("team/get_info",null,"team","api","rpc","team_info.read")},v.teamGroupsCreate=function(e){return this.request("team/groups/create",e,"team","api","rpc","groups.write")},v.teamGroupsDelete=function(e){return this.request("team/groups/delete",e,"team","api","rpc","groups.write")},v.teamGroupsGetInfo=function(e){return this.request("team/groups/get_info",e,"team","api","rpc","groups.read")},v.teamGroupsJobStatusGet=function(e){return this.request("team/groups/job_status/get",e,"team","api","rpc","groups.write")},v.teamGroupsList=function(e){return this.request("team/groups/list",e,"team","api","rpc","groups.read")},v.teamGroupsListContinue=function(e){return this.request("team/groups/list/continue",e,"team","api","rpc","groups.read")},v.teamGroupsMembersAdd=function(e){return this.request("team/groups/members/add",e,"team","api","rpc","groups.write")},v.teamGroupsMembersList=function(e){return this.request("team/groups/members/list",e,"team","api","rpc","groups.read")},v.teamGroupsMembersListContinue=function(e){return this.request("team/groups/members/list/continue",e,"team","api","rpc","groups.read")},v.teamGroupsMembersRemove=function(e){return this.request("team/groups/members/remove",e,"team","api","rpc","groups.write")},v.teamGroupsMembersSetAccessType=function(e){return this.request("team/groups/members/set_access_type",e,"team","api","rpc","groups.write")},v.teamGroupsUpdate=function(e){return this.request("team/groups/update",e,"team","api","rpc","groups.write")},v.teamLegalHoldsCreatePolicy=function(e){return this.request("team/legal_holds/create_policy",e,"team","api","rpc","team_data.governance.write")},v.teamLegalHoldsGetPolicy=function(e){return this.request("team/legal_holds/get_policy",e,"team","api","rpc","team_data.governance.write")},v.teamLegalHoldsListHeldRevisions=function(e){return this.request("team/legal_holds/list_held_revisions",e,"team","api","rpc","team_data.governance.write")},v.teamLegalHoldsListHeldRevisionsContinue=function(e){return this.request("team/legal_holds/list_held_revisions_continue",e,"team","api","rpc","team_data.governance.write")},v.teamLegalHoldsListPolicies=function(e){return this.request("team/legal_holds/list_policies",e,"team","api","rpc","team_data.governance.write")},v.teamLegalHoldsReleasePolicy=function(e){return this.request("team/legal_holds/release_policy",e,"team","api","rpc","team_data.governance.write")},v.teamLegalHoldsUpdatePolicy=function(e){return this.request("team/legal_holds/update_policy",e,"team","api","rpc","team_data.governance.write")},v.teamLinkedAppsListMemberLinkedApps=function(e){return this.request("team/linked_apps/list_member_linked_apps",e,"team","api","rpc","sessions.list")},v.teamLinkedAppsListMembersLinkedApps=function(e){return this.request("team/linked_apps/list_members_linked_apps",e,"team","api","rpc","sessions.list")},v.teamLinkedAppsListTeamLinkedApps=function(e){return this.request("team/linked_apps/list_team_linked_apps",e,"team","api","rpc","sessions.list")},v.teamLinkedAppsRevokeLinkedApp=function(e){return this.request("team/linked_apps/revoke_linked_app",e,"team","api","rpc","sessions.modify")},v.teamLinkedAppsRevokeLinkedAppBatch=function(e){return this.request("team/linked_apps/revoke_linked_app_batch",e,"team","api","rpc","sessions.modify")},v.teamMemberSpaceLimitsExcludedUsersAdd=function(e){return this.request("team/member_space_limits/excluded_users/add",e,"team","api","rpc","members.write")},v.teamMemberSpaceLimitsExcludedUsersList=function(e){return this.request("team/member_space_limits/excluded_users/list",e,"team","api","rpc","members.read")},v.teamMemberSpaceLimitsExcludedUsersListContinue=function(e){return this.request("team/member_space_limits/excluded_users/list/continue",e,"team","api","rpc","members.read")},v.teamMemberSpaceLimitsExcludedUsersRemove=function(e){return this.request("team/member_space_limits/excluded_users/remove",e,"team","api","rpc","members.write")},v.teamMemberSpaceLimitsGetCustomQuota=function(e){return this.request("team/member_space_limits/get_custom_quota",e,"team","api","rpc","members.read")},v.teamMemberSpaceLimitsRemoveCustomQuota=function(e){return this.request("team/member_space_limits/remove_custom_quota",e,"team","api","rpc","members.write")},v.teamMemberSpaceLimitsSetCustomQuota=function(e){return this.request("team/member_space_limits/set_custom_quota",e,"team","api","rpc","members.read")},v.teamMembersAddV2=function(e){return this.request("team/members/add_v2",e,"team","api","rpc","members.write")},v.teamMembersAdd=function(e){return this.request("team/members/add",e,"team","api","rpc","members.write")},v.teamMembersAddJobStatusGetV2=function(e){return this.request("team/members/add/job_status/get_v2",e,"team","api","rpc","members.write")},v.teamMembersAddJobStatusGet=function(e){return this.request("team/members/add/job_status/get",e,"team","api","rpc","members.write")},v.teamMembersDeleteProfilePhotoV2=function(e){return this.request("team/members/delete_profile_photo_v2",e,"team","api","rpc","members.write")},v.teamMembersDeleteProfilePhoto=function(e){return this.request("team/members/delete_profile_photo",e,"team","api","rpc","members.write")},v.teamMembersGetAvailableTeamMemberRoles=function(){return this.request("team/members/get_available_team_member_roles",null,"team","api","rpc","members.read")},v.teamMembersGetInfoV2=function(e){return this.request("team/members/get_info_v2",e,"team","api","rpc","members.read")},v.teamMembersGetInfo=function(e){return this.request("team/members/get_info",e,"team","api","rpc","members.read")},v.teamMembersListV2=function(e){return this.request("team/members/list_v2",e,"team","api","rpc","members.read")},v.teamMembersList=function(e){return this.request("team/members/list",e,"team","api","rpc","members.read")},v.teamMembersListContinueV2=function(e){return this.request("team/members/list/continue_v2",e,"team","api","rpc","members.read")},v.teamMembersListContinue=function(e){return this.request("team/members/list/continue",e,"team","api","rpc","members.read")},v.teamMembersMoveFormerMemberFiles=function(e){return this.request("team/members/move_former_member_files",e,"team","api","rpc","members.write")},v.teamMembersMoveFormerMemberFilesJobStatusCheck=function(e){return this.request("team/members/move_former_member_files/job_status/check",e,"team","api","rpc","members.write")},v.teamMembersRecover=function(e){return this.request("team/members/recover",e,"team","api","rpc","members.delete")},v.teamMembersRemove=function(e){return this.request("team/members/remove",e,"team","api","rpc","members.delete")},v.teamMembersRemoveJobStatusGet=function(e){return this.request("team/members/remove/job_status/get",e,"team","api","rpc","members.delete")},v.teamMembersSecondaryEmailsAdd=function(e){return this.request("team/members/secondary_emails/add",e,"team","api","rpc","members.write")},v.teamMembersSecondaryEmailsDelete=function(e){return this.request("team/members/secondary_emails/delete",e,"team","api","rpc","members.write")},v.teamMembersSecondaryEmailsResendVerificationEmails=function(e){return this.request("team/members/secondary_emails/resend_verification_emails",e,"team","api","rpc","members.write")},v.teamMembersSendWelcomeEmail=function(e){return this.request("team/members/send_welcome_email",e,"team","api","rpc","members.write")},v.teamMembersSetAdminPermissionsV2=function(e){return this.request("team/members/set_admin_permissions_v2",e,"team","api","rpc","members.write")},v.teamMembersSetAdminPermissions=function(e){return this.request("team/members/set_admin_permissions",e,"team","api","rpc","members.write")},v.teamMembersSetProfileV2=function(e){return this.request("team/members/set_profile_v2",e,"team","api","rpc","members.write")},v.teamMembersSetProfile=function(e){return this.request("team/members/set_profile",e,"team","api","rpc","members.write")},v.teamMembersSetProfilePhotoV2=function(e){return this.request("team/members/set_profile_photo_v2",e,"team","api","rpc","members.write")},v.teamMembersSetProfilePhoto=function(e){return this.request("team/members/set_profile_photo",e,"team","api","rpc","members.write")},v.teamMembersSuspend=function(e){return this.request("team/members/suspend",e,"team","api","rpc","members.write")},v.teamMembersUnsuspend=function(e){return this.request("team/members/unsuspend",e,"team","api","rpc","members.write")},v.teamNamespacesList=function(e){return this.request("team/namespaces/list",e,"team","api","rpc","team_data.member")},v.teamNamespacesListContinue=function(e){return this.request("team/namespaces/list/continue",e,"team","api","rpc","team_data.member")},v.teamPropertiesTemplateAdd=function(e){return this.request("team/properties/template/add",e,"team","api","rpc","files.team_metadata.write")},v.teamPropertiesTemplateGet=function(e){return this.request("team/properties/template/get",e,"team","api","rpc","files.team_metadata.write")},v.teamPropertiesTemplateList=function(){return this.request("team/properties/template/list",null,"team","api","rpc","files.team_metadata.write")},v.teamPropertiesTemplateUpdate=function(e){return this.request("team/properties/template/update",e,"team","api","rpc","files.team_metadata.write")},v.teamReportsGetActivity=function(e){return this.request("team/reports/get_activity",e,"team","api","rpc","team_info.read")},v.teamReportsGetDevices=function(e){return this.request("team/reports/get_devices",e,"team","api","rpc","team_info.read")},v.teamReportsGetMembership=function(e){return this.request("team/reports/get_membership",e,"team","api","rpc","team_info.read")},v.teamReportsGetStorage=function(e){return this.request("team/reports/get_storage",e,"team","api","rpc","team_info.read")},v.teamSharingAllowlistAdd=function(e){return this.request("team/sharing_allowlist/add",e,"team","api","rpc","team_info.write")},v.teamSharingAllowlistList=function(e){return this.request("team/sharing_allowlist/list",e,"team","api","rpc","team_info.read")},v.teamSharingAllowlistListContinue=function(e){return this.request("team/sharing_allowlist/list/continue",e,"team","api","rpc","team_info.read")},v.teamSharingAllowlistRemove=function(e){return this.request("team/sharing_allowlist/remove",e,"team","api","rpc","team_info.write")},v.teamTeamFolderActivate=function(e){return this.request("team/team_folder/activate",e,"team","api","rpc","team_data.content.write")},v.teamTeamFolderArchive=function(e){return this.request("team/team_folder/archive",e,"team","api","rpc","team_data.content.write")},v.teamTeamFolderArchiveCheck=function(e){return this.request("team/team_folder/archive/check",e,"team","api","rpc","team_data.content.write")},v.teamTeamFolderCreate=function(e){return this.request("team/team_folder/create",e,"team","api","rpc","team_data.content.write")},v.teamTeamFolderGetInfo=function(e){return this.request("team/team_folder/get_info",e,"team","api","rpc","team_data.content.read")},v.teamTeamFolderList=function(e){return this.request("team/team_folder/list",e,"team","api","rpc","team_data.content.read")},v.teamTeamFolderListContinue=function(e){return this.request("team/team_folder/list/continue",e,"team","api","rpc","team_data.content.read")},v.teamTeamFolderPermanentlyDelete=function(e){return this.request("team/team_folder/permanently_delete",e,"team","api","rpc","team_data.content.write")},v.teamTeamFolderRename=function(e){return this.request("team/team_folder/rename",e,"team","api","rpc","team_data.content.write")},v.teamTeamFolderUpdateSyncSettings=function(e){return this.request("team/team_folder/update_sync_settings",e,"team","api","rpc","team_data.content.write")},v.teamTokenGetAuthenticatedAdmin=function(){return this.request("team/token/get_authenticated_admin",null,"team","api","rpc","team_info.read")},v.teamLogGetEvents=function(e){return this.request("team_log/get_events",e,"team","api","rpc","events.read")},v.teamLogGetEventsContinue=function(e){return this.request("team_log/get_events/continue",e,"team","api","rpc","events.read")},v.usersFeaturesGetValues=function(e){return this.request("users/features/get_values",e,"user","api","rpc","account_info.read")},v.usersGetAccount=function(e){return this.request("users/get_account",e,"user","api","rpc","sharing.read")},v.usersGetAccountBatch=function(e){return this.request("users/get_account_batch",e,"user","api","rpc","sharing.read")},v.usersGetCurrentAccount=function(){return this.request("users/get_current_account",null,"user","api","rpc","account_info.read")},v.usersGetSpaceUsage=function(){return this.request("users/get_space_usage",null,"user","api","rpc","account_info.read")};var w=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:m,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:".";return n?(t!==m&&void 0!==y[e]&&(e=y[e],n="-"),"https://".concat(e).concat(n).concat(t,"/2/")):"https://".concat(t,"/2/")},_=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:g;return e!==g&&(e="meta-".concat(e)),"https://".concat(e,"/oauth2/authorize")},x=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:".",n="api";return e!==m&&(n=y[n],t="-"),"https://".concat(n).concat(t).concat(e,"/oauth2/token")};function D(e){return JSON.stringify(e).replace(/[\u007f-\uffff]/g,b)}function E(e){return new Date(Date.now()+1e3*e)}function M(){return"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope||"undefined"!=typeof window}function A(){return"undefined"!=typeof window}function S(){return"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope}function C(e){return e.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}var k,T,I,R=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&a(e,t)}(o,e);var n,r,i=(n=o,r=u(),function(){var e,t=s(n);if(r){var i=s(this).constructor;e=Reflect.construct(t,arguments,i)}else e=t.apply(this,arguments);return l(this,e)});function o(e,n,r){var s;return t(this,o),(s=i.call(this,"Response failed with a ".concat(e," code"))).name="DropboxResponseError",s.status=e,s.headers=n,s.error=r,s}return o}(d(Error)),F=function e(n,r,i){t(this,e),this.status=n,this.headers=r,this.result=i};function O(e){return e.text().then((function(t){var n;try{n=JSON.parse(t)}catch(e){n=t}throw new R(e.status,e.headers,n)}))}function B(e){return e.ok?e.text().then((function(t){var n;try{n=JSON.parse(t)}catch(e){n=t}return new F(e.status,e.headers,n)})):O(e)}var P=["legacy","offline","online"],N=["code","token"],j=["none","user","team"],L=function(){function e(r){t(this,e),r=r||{},A()?(k=window.fetch.bind(window),T=window.crypto||window.msCrypto):S()?(k=self.fetch.bind(self),T=self.crypto):(k=n(43092),T=n(91565)),I="undefined"==typeof TextEncoder?n(40537).TextEncoder:TextEncoder,this.fetch=r.fetch||k,this.accessToken=r.accessToken,this.accessTokenExpiresAt=r.accessTokenExpiresAt,this.refreshToken=r.refreshToken,this.clientId=r.clientId,this.clientSecret=r.clientSecret,this.domain=r.domain,this.domainDelimiter=r.domainDelimiter,this.customHeaders=r.customHeaders,this.dataOnBody=r.dataOnBody}return o(e,[{key:"setAccessToken",value:function(e){this.accessToken=e}},{key:"getAccessToken",value:function(){return this.accessToken}},{key:"setClientId",value:function(e){this.clientId=e}},{key:"getClientId",value:function(){return this.clientId}},{key:"setClientSecret",value:function(e){this.clientSecret=e}},{key:"getClientSecret",value:function(){return this.clientSecret}},{key:"getRefreshToken",value:function(){return this.refreshToken}},{key:"setRefreshToken",value:function(e){this.refreshToken=e}},{key:"getAccessTokenExpiresAt",value:function(){return this.accessTokenExpiresAt}},{key:"setAccessTokenExpiresAt",value:function(e){this.accessTokenExpiresAt=e}},{key:"setCodeVerifier",value:function(e){this.codeVerifier=e}},{key:"getCodeVerifier",value:function(){return this.codeVerifier}},{key:"generateCodeChallenge",value:function(){var e,t=this,n=(new I).encode(this.codeVerifier);if(A()||S())return T.subtle.digest("SHA-256",n).then((function(n){var r=btoa(String.fromCharCode.apply(null,new Uint8Array(n)));e=C(r).substr(0,128),t.codeChallenge=e}));var r=T.createHash("sha256").update(n).digest();return e=C(r),this.codeChallenge=e,Promise.resolve()}},{key:"generatePKCECodes",value:function(){var e;if(A()||S()){var t=new Uint8Array(128),n=T.getRandomValues(t);e=C(btoa(n)).substr(0,128)}else e=C(T.randomBytes(128)).substr(0,128);return this.codeVerifier=e,this.generateCodeChallenge()}},{key:"getAuthenticationUrl",value:function(e,t){var n,r=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"token",o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"none",u=arguments.length>6&&void 0!==arguments[6]&&arguments[6],c=this.getClientId(),d=_(this.domain);if(!c)throw Error("A client id is required. You can set the client id using .setClientId().");if("code"!==i&&!e)throw Error("A redirect uri is required.");if(!N.includes(i))throw Error("Authorization type must be code or token");if(o&&!P.includes(o))throw Error("Token Access Type must be legacy, offline, or online");if(s&&!(s instanceof Array))throw Error("Scope must be an array of strings");if(!j.includes(a))throw Error("includeGrantedScopes must be none, user, or team");return n="code"===i?"".concat(d,"?response_type=code&client_id=").concat(c):"".concat(d,"?response_type=token&client_id=").concat(c),e&&(n+="&redirect_uri=".concat(e)),t&&(n+="&state=".concat(t)),o&&(n+="&token_access_type=".concat(o)),s&&(n+="&scope=".concat(s.join(" "))),"none"!==a&&(n+="&include_granted_scopes=".concat(a)),u?this.generatePKCECodes().then((function(){return n+="&code_challenge_method=S256",n+="&code_challenge=".concat(r.codeChallenge)})):Promise.resolve(n)}},{key:"getAccessTokenFromCode",value:function(e,t){var n=this.getClientId(),r=this.getClientSecret();if(!n)throw Error("A client id is required. You can set the client id using .setClientId().");var i=x(this.domain,this.domainDelimiter);if(i+="?grant_type=authorization_code",i+="&code=".concat(t),i+="&client_id=".concat(n),r)i+="&client_secret=".concat(r);else{if(!this.codeVerifier)throw Error("You must use PKCE when generating the authorization URL to not include a client secret");i+="&code_verifier=".concat(this.codeVerifier)}return e&&(i+="&redirect_uri=".concat(e)),this.fetch(i,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((function(e){return B(e)}))}},{key:"checkAndRefreshAccessToken",value:function(){var e=this.getRefreshToken()&&this.getClientId(),t=!this.getAccessTokenExpiresAt()||new Date(Date.now()+3e5)>=this.getAccessTokenExpiresAt(),n=!this.getAccessToken();return(t||n)&&e?this.refreshAccessToken():Promise.resolve()}},{key:"refreshAccessToken",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=this.getClientId(),r=this.getClientSecret();if(!n)throw Error("A client id is required. You can set the client id using .setClientId().");if(t&&!(t instanceof Array))throw Error("Scope must be an array of strings");var i=x(this.domain,this.domainDelimiter),o={headers:{"Content-Type":"application/json"},method:"POST"};if(this.dataOnBody){var s={grant_type:"refresh_token",client_id:n,refresh_token:this.getRefreshToken()};r&&(s.client_secret=r),t&&(s.scope=t.join(" ")),o.body=s}else i+="?grant_type=refresh_token&refresh_token=".concat(this.getRefreshToken()),i+="&client_id=".concat(n),r&&(i+="&client_secret=".concat(r)),t&&(i+="&scope=".concat(t.join(" ")));return this.fetch(i,o).then((function(e){return B(e)})).then((function(t){e.setAccessToken(t.result.access_token),e.setAccessTokenExpiresAt(E(t.result.expires_in))}))}}]),e}(),U="undefined"==typeof btoa?function(e){return r.from(e).toString("base64")}:btoa;e.Dropbox=function(){function e(n){t(this,e),this.auth=(n=n||{}).auth?n.auth:new L(n),this.fetch=n.fetch||this.auth.fetch,this.selectUser=n.selectUser,this.selectAdmin=n.selectAdmin,this.pathRoot=n.pathRoot,this.domain=n.domain||this.auth.domain,this.domainDelimiter=n.domainDelimiter||this.auth.domainDelimiter,this.customHeaders=n.customHeaders||this.auth.customHeaders,Object.assign(this,v)}return o(e,[{key:"request",value:function(e,t,n,r,i){switch(i){case"rpc":return this.rpcRequest(e,t,n,r);case"download":return this.downloadRequest(e,t,n,r);case"upload":return this.uploadRequest(e,t,n,r);default:throw Error("Invalid request style: ".concat(i))}}},{key:"rpcRequest",value:function(e,t,n,r){var i=this;return this.auth.checkAndRefreshAccessToken().then((function(){var e={method:"POST",body:t?JSON.stringify(t):null,headers:{}};return t&&(e.headers["Content-Type"]="application/json"),i.setAuthHeaders(n,e),i.setCommonHeaders(e),e})).then((function(t){return i.fetch(w(r,i.domain,i.domainDelimiter)+e,t)})).then((function(e){return B(e)}))}},{key:"downloadRequest",value:function(e,t,n,r){var i=this;return this.auth.checkAndRefreshAccessToken().then((function(){var e={method:"POST",headers:{"Dropbox-API-Arg":D(t)}};return i.setAuthHeaders(n,e),i.setCommonHeaders(e),e})).then((function(t){return i.fetch(w(r,i.domain,i.domainDelimiter)+e,t)})).then((function(e){return function(e){return e.ok?new Promise((function(t){M()?e.blob().then((function(e){return t(e)})):e.buffer().then((function(e){return t(e)}))})).then((function(t){var n=JSON.parse(e.headers.get("dropbox-api-result"));return M()?n.fileBlob=t:n.fileBinary=t,new F(e.status,e.headers,n)})):O(e)}(e)}))}},{key:"uploadRequest",value:function(e,t,n,r){var i=this;return this.auth.checkAndRefreshAccessToken().then((function(){var e=t.contents;delete t.contents;var r={body:e,method:"POST",headers:{"Content-Type":"application/octet-stream","Dropbox-API-Arg":D(t)}};return i.setAuthHeaders(n,r),i.setCommonHeaders(r),r})).then((function(t){return i.fetch(w(r,i.domain,i.domainDelimiter)+e,t)})).then((function(e){return B(e)}))}},{key:"setAuthHeaders",value:function(e,t){if(e.split(",").length>1){var n=e.replace(" ","").split(",");n.includes(f)&&this.auth.getAccessToken()?e=f:n.includes(p)&&this.auth.getAccessToken()?e=p:n.includes(h)&&(e=h)}switch(e){case h:if(this.auth.clientId&&this.auth.clientSecret){var r=U("".concat(this.auth.clientId,":").concat(this.auth.clientSecret));t.headers.Authorization="Basic ".concat(r)}break;case p:case f:this.auth.getAccessToken()&&(t.headers.Authorization="Bearer ".concat(this.auth.getAccessToken()));break;case"noauth":case"cookie":break;default:throw Error("Unhandled auth type: ".concat(e))}}},{key:"setCommonHeaders",value:function(e){var t=this;this.selectUser&&(e.headers["Dropbox-API-Select-User"]=this.selectUser),this.selectAdmin&&(e.headers["Dropbox-API-Select-Admin"]=this.selectAdmin),this.pathRoot&&(e.headers["Dropbox-API-Path-Root"]=this.pathRoot),this.customHeaders&&Object.keys(this.customHeaders).forEach((function(n){e.headers[n]=t.customHeaders[n]}))}}]),e}(),e.DropboxAuth=L,e.DropboxResponse=F,e.DropboxResponseError=R,Object.defineProperty(e,"__esModule",{value:!0})}(t)},22010:(e,t,n)=>{"use strict";var r=n(92861).Buffer,i=n(3527),o=128;function s(e){if(r.isBuffer(e))return e;if("string"==typeof e)return r.from(e,"base64");throw new TypeError("ECDSA signature must be a Base64 string or a Buffer")}function a(e,t,n){for(var r=0;t+r=o&&--r,r}e.exports={derToJose:function(e,t){e=s(e);var n=i(t),a=n+1,u=e.length,c=0;if(48!==e[c++])throw new Error('Could not find expected "seq"');var d=e[c++];if(d===(1|o)&&(d=e[c++]),u-c{"use strict";function t(e){return(e/8|0)+(e%8==0?0:1)}var n={ES256:t(256),ES384:t(384),ES512:t(521)};e.exports=function(e){var t=n[e];if(t)return t;throw new Error('Unknown algorithm "'+e+'"')}},86729:(e,t,n)=>{"use strict";var r=t;r.version=n(1636).rE,r.utils=n(47011),r.rand=n(15037),r.curve=n(894),r.curves=n(60480),r.ec=n(57447),r.eddsa=n(8650)},36677:(e,t,n)=>{"use strict";var r=n(28490),i=n(47011),o=i.getNAF,s=i.getJSF,a=i.assert;function u(e,t){this.type=e,this.p=new r(t.p,16),this.red=t.prime?r.red(t.prime):r.mont(this.p),this.zero=new r(0).toRed(this.red),this.one=new r(1).toRed(this.red),this.two=new r(2).toRed(this.red),this.n=t.n&&new r(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var n=this.n&&this.p.div(this.n);!n||n.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function c(e,t){this.curve=e,this.type=t,this.precomputed=null}e.exports=u,u.prototype.point=function(){throw new Error("Not implemented")},u.prototype.validate=function(){throw new Error("Not implemented")},u.prototype._fixedNafMul=function(e,t){a(e.precomputed);var n=e._getDoubles(),r=o(t,1,this._bitLength),i=(1<=s;d--)u=(u<<1)+r[d];c.push(u)}for(var l=this.jpoint(null,null,null),h=this.jpoint(null,null,null),f=i;f>0;f--){for(s=0;s=0;c--){for(var d=0;c>=0&&0===s[c];c--)d++;if(c>=0&&d++,u=u.dblp(d),c<0)break;var l=s[c];a(0!==l),u="affine"===e.type?l>0?u.mixedAdd(i[l-1>>1]):u.mixedAdd(i[-l-1>>1].neg()):l>0?u.add(i[l-1>>1]):u.add(i[-l-1>>1].neg())}return"affine"===e.type?u.toP():u},u.prototype._wnafMulAdd=function(e,t,n,r,i){var a,u,c,d=this._wnafT1,l=this._wnafT2,h=this._wnafT3,f=0;for(a=0;a=1;a-=2){var m=a-1,g=a;if(1===d[m]&&1===d[g]){var y=[t[m],null,null,t[g]];0===t[m].y.cmp(t[g].y)?(y[1]=t[m].add(t[g]),y[2]=t[m].toJ().mixedAdd(t[g].neg())):0===t[m].y.cmp(t[g].y.redNeg())?(y[1]=t[m].toJ().mixedAdd(t[g]),y[2]=t[m].add(t[g].neg())):(y[1]=t[m].toJ().mixedAdd(t[g]),y[2]=t[m].toJ().mixedAdd(t[g].neg()));var v=[-3,-1,-5,-7,0,7,5,1,3],b=s(n[m],n[g]);for(f=Math.max(b[0].length,f),h[m]=new Array(f),h[g]=new Array(f),u=0;u=0;a--){for(var E=0;a>=0;){var M=!0;for(u=0;u=0&&E++,x=x.dblp(E),a<0)break;for(u=0;u0?c=l[u][A-1>>1]:A<0&&(c=l[u][-A-1>>1].neg()),x="affine"===c.type?x.mixedAdd(c):x.add(c))}}for(a=0;a=Math.ceil((e.bitLength()+1)/t.step)},c.prototype._getDoubles=function(e,t){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var n=[this],r=this,i=0;i{"use strict";var r=n(47011),i=n(28490),o=n(56698),s=n(36677),a=r.assert;function u(e){this.twisted=1!=(0|e.a),this.mOneA=this.twisted&&-1==(0|e.a),this.extended=this.mOneA,s.call(this,"edwards",e),this.a=new i(e.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new i(e.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new i(e.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),a(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|e.c)}function c(e,t,n,r,o){s.BasePoint.call(this,e,"projective"),null===t&&null===n&&null===r?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new i(t,16),this.y=new i(n,16),this.z=r?new i(r,16):this.curve.one,this.t=o&&new i(o,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}o(u,s),e.exports=u,u.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)},u.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)},u.prototype.jpoint=function(e,t,n,r){return this.point(e,t,n,r)},u.prototype.pointFromX=function(e,t){(e=new i(e,16)).red||(e=e.toRed(this.red));var n=e.redSqr(),r=this.c2.redSub(this.a.redMul(n)),o=this.one.redSub(this.c2.redMul(this.d).redMul(n)),s=r.redMul(o.redInvm()),a=s.redSqrt();if(0!==a.redSqr().redSub(s).cmp(this.zero))throw new Error("invalid point");var u=a.fromRed().isOdd();return(t&&!u||!t&&u)&&(a=a.redNeg()),this.point(e,a)},u.prototype.pointFromY=function(e,t){(e=new i(e,16)).red||(e=e.toRed(this.red));var n=e.redSqr(),r=n.redSub(this.c2),o=n.redMul(this.d).redMul(this.c2).redSub(this.a),s=r.redMul(o.redInvm());if(0===s.cmp(this.zero)){if(t)throw new Error("invalid point");return this.point(this.zero,e)}var a=s.redSqrt();if(0!==a.redSqr().redSub(s).cmp(this.zero))throw new Error("invalid point");return a.fromRed().isOdd()!==t&&(a=a.redNeg()),this.point(a,e)},u.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var t=e.x.redSqr(),n=e.y.redSqr(),r=t.redMul(this.a).redAdd(n),i=this.c2.redMul(this.one.redAdd(this.d.redMul(t).redMul(n)));return 0===r.cmp(i)},o(c,s.BasePoint),u.prototype.pointFromJSON=function(e){return c.fromJSON(this,e)},u.prototype.point=function(e,t,n,r){return new c(this,e,t,n,r)},c.fromJSON=function(e,t){return new c(e,t[0],t[1],t[2])},c.prototype.inspect=function(){return this.isInfinity()?"":""},c.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},c.prototype._extDbl=function(){var e=this.x.redSqr(),t=this.y.redSqr(),n=this.z.redSqr();n=n.redIAdd(n);var r=this.curve._mulA(e),i=this.x.redAdd(this.y).redSqr().redISub(e).redISub(t),o=r.redAdd(t),s=o.redSub(n),a=r.redSub(t),u=i.redMul(s),c=o.redMul(a),d=i.redMul(a),l=s.redMul(o);return this.curve.point(u,c,l,d)},c.prototype._projDbl=function(){var e,t,n,r,i,o,s=this.x.redAdd(this.y).redSqr(),a=this.x.redSqr(),u=this.y.redSqr();if(this.curve.twisted){var c=(r=this.curve._mulA(a)).redAdd(u);this.zOne?(e=s.redSub(a).redSub(u).redMul(c.redSub(this.curve.two)),t=c.redMul(r.redSub(u)),n=c.redSqr().redSub(c).redSub(c)):(i=this.z.redSqr(),o=c.redSub(i).redISub(i),e=s.redSub(a).redISub(u).redMul(o),t=c.redMul(r.redSub(u)),n=c.redMul(o))}else r=a.redAdd(u),i=this.curve._mulC(this.z).redSqr(),o=r.redSub(i).redSub(i),e=this.curve._mulC(s.redISub(r)).redMul(o),t=this.curve._mulC(r).redMul(a.redISub(u)),n=r.redMul(o);return this.curve.point(e,t,n)},c.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},c.prototype._extAdd=function(e){var t=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),n=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),r=this.t.redMul(this.curve.dd).redMul(e.t),i=this.z.redMul(e.z.redAdd(e.z)),o=n.redSub(t),s=i.redSub(r),a=i.redAdd(r),u=n.redAdd(t),c=o.redMul(s),d=a.redMul(u),l=o.redMul(u),h=s.redMul(a);return this.curve.point(c,d,h,l)},c.prototype._projAdd=function(e){var t,n,r=this.z.redMul(e.z),i=r.redSqr(),o=this.x.redMul(e.x),s=this.y.redMul(e.y),a=this.curve.d.redMul(o).redMul(s),u=i.redSub(a),c=i.redAdd(a),d=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(o).redISub(s),l=r.redMul(u).redMul(d);return this.curve.twisted?(t=r.redMul(c).redMul(s.redSub(this.curve._mulA(o))),n=u.redMul(c)):(t=r.redMul(c).redMul(s.redSub(o)),n=this.curve._mulC(u).redMul(c)),this.curve.point(l,t,n)},c.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)},c.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)},c.prototype.mulAdd=function(e,t,n){return this.curve._wnafMulAdd(1,[this,t],[e,n],2,!1)},c.prototype.jmulAdd=function(e,t,n){return this.curve._wnafMulAdd(1,[this,t],[e,n],2,!0)},c.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this},c.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},c.prototype.getX=function(){return this.normalize(),this.x.fromRed()},c.prototype.getY=function(){return this.normalize(),this.y.fromRed()},c.prototype.eq=function(e){return this===e||0===this.getX().cmp(e.getX())&&0===this.getY().cmp(e.getY())},c.prototype.eqXToP=function(e){var t=e.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(t))return!0;for(var n=e.clone(),r=this.curve.redN.redMul(this.z);;){if(n.iadd(this.curve.n),n.cmp(this.curve.p)>=0)return!1;if(t.redIAdd(r),0===this.x.cmp(t))return!0}},c.prototype.toP=c.prototype.normalize,c.prototype.mixedAdd=c.prototype.add},894:(e,t,n)=>{"use strict";var r=t;r.base=n(36677),r.short=n(39188),r.mont=n(30370),r.edwards=n(31298)},30370:(e,t,n)=>{"use strict";var r=n(28490),i=n(56698),o=n(36677),s=n(47011);function a(e){o.call(this,"mont",e),this.a=new r(e.a,16).toRed(this.red),this.b=new r(e.b,16).toRed(this.red),this.i4=new r(4).toRed(this.red).redInvm(),this.two=new r(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function u(e,t,n){o.BasePoint.call(this,e,"projective"),null===t&&null===n?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new r(t,16),this.z=new r(n,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}i(a,o),e.exports=a,a.prototype.validate=function(e){var t=e.normalize().x,n=t.redSqr(),r=n.redMul(t).redAdd(n.redMul(this.a)).redAdd(t);return 0===r.redSqrt().redSqr().cmp(r)},i(u,o.BasePoint),a.prototype.decodePoint=function(e,t){return this.point(s.toArray(e,t),1)},a.prototype.point=function(e,t){return new u(this,e,t)},a.prototype.pointFromJSON=function(e){return u.fromJSON(this,e)},u.prototype.precompute=function(){},u.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},u.fromJSON=function(e,t){return new u(e,t[0],t[1]||e.one)},u.prototype.inspect=function(){return this.isInfinity()?"":""},u.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},u.prototype.dbl=function(){var e=this.x.redAdd(this.z).redSqr(),t=this.x.redSub(this.z).redSqr(),n=e.redSub(t),r=e.redMul(t),i=n.redMul(t.redAdd(this.curve.a24.redMul(n)));return this.curve.point(r,i)},u.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},u.prototype.diffAdd=function(e,t){var n=this.x.redAdd(this.z),r=this.x.redSub(this.z),i=e.x.redAdd(e.z),o=e.x.redSub(e.z).redMul(n),s=i.redMul(r),a=t.z.redMul(o.redAdd(s).redSqr()),u=t.x.redMul(o.redISub(s).redSqr());return this.curve.point(a,u)},u.prototype.mul=function(e){for(var t=e.clone(),n=this,r=this.curve.point(null,null),i=[];0!==t.cmpn(0);t.iushrn(1))i.push(t.andln(1));for(var o=i.length-1;o>=0;o--)0===i[o]?(n=n.diffAdd(r,this),r=r.dbl()):(r=n.diffAdd(r,this),n=n.dbl());return r},u.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},u.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},u.prototype.eq=function(e){return 0===this.getX().cmp(e.getX())},u.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},u.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},39188:(e,t,n)=>{"use strict";var r=n(47011),i=n(28490),o=n(56698),s=n(36677),a=r.assert;function u(e){s.call(this,"short",e),this.a=new i(e.a,16).toRed(this.red),this.b=new i(e.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(e),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function c(e,t,n,r){s.BasePoint.call(this,e,"affine"),null===t&&null===n?(this.x=null,this.y=null,this.inf=!0):(this.x=new i(t,16),this.y=new i(n,16),r&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function d(e,t,n,r){s.BasePoint.call(this,e,"jacobian"),null===t&&null===n&&null===r?(this.x=this.curve.one,this.y=this.curve.one,this.z=new i(0)):(this.x=new i(t,16),this.y=new i(n,16),this.z=new i(r,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}o(u,s),e.exports=u,u.prototype._getEndomorphism=function(e){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var t,n;if(e.beta)t=new i(e.beta,16).toRed(this.red);else{var r=this._getEndoRoots(this.p);t=(t=r[0].cmp(r[1])<0?r[0]:r[1]).toRed(this.red)}if(e.lambda)n=new i(e.lambda,16);else{var o=this._getEndoRoots(this.n);0===this.g.mul(o[0]).x.cmp(this.g.x.redMul(t))?n=o[0]:(n=o[1],a(0===this.g.mul(n).x.cmp(this.g.x.redMul(t))))}return{beta:t,lambda:n,basis:e.basis?e.basis.map((function(e){return{a:new i(e.a,16),b:new i(e.b,16)}})):this._getEndoBasis(n)}}},u.prototype._getEndoRoots=function(e){var t=e===this.p?this.red:i.mont(e),n=new i(2).toRed(t).redInvm(),r=n.redNeg(),o=new i(3).toRed(t).redNeg().redSqrt().redMul(n);return[r.redAdd(o).fromRed(),r.redSub(o).fromRed()]},u.prototype._getEndoBasis=function(e){for(var t,n,r,o,s,a,u,c,d,l=this.n.ushrn(Math.floor(this.n.bitLength()/2)),h=e,f=this.n.clone(),p=new i(1),m=new i(0),g=new i(0),y=new i(1),v=0;0!==h.cmpn(0);){var b=f.div(h);c=f.sub(b.mul(h)),d=g.sub(b.mul(p));var w=y.sub(b.mul(m));if(!r&&c.cmp(l)<0)t=u.neg(),n=p,r=c.neg(),o=d;else if(r&&2==++v)break;u=c,f=h,h=c,g=p,p=d,y=m,m=w}s=c.neg(),a=d;var _=r.sqr().add(o.sqr());return s.sqr().add(a.sqr()).cmp(_)>=0&&(s=t,a=n),r.negative&&(r=r.neg(),o=o.neg()),s.negative&&(s=s.neg(),a=a.neg()),[{a:r,b:o},{a:s,b:a}]},u.prototype._endoSplit=function(e){var t=this.endo.basis,n=t[0],r=t[1],i=r.b.mul(e).divRound(this.n),o=n.b.neg().mul(e).divRound(this.n),s=i.mul(n.a),a=o.mul(r.a),u=i.mul(n.b),c=o.mul(r.b);return{k1:e.sub(s).sub(a),k2:u.add(c).neg()}},u.prototype.pointFromX=function(e,t){(e=new i(e,16)).red||(e=e.toRed(this.red));var n=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),r=n.redSqrt();if(0!==r.redSqr().redSub(n).cmp(this.zero))throw new Error("invalid point");var o=r.fromRed().isOdd();return(t&&!o||!t&&o)&&(r=r.redNeg()),this.point(e,r)},u.prototype.validate=function(e){if(e.inf)return!0;var t=e.x,n=e.y,r=this.a.redMul(t),i=t.redSqr().redMul(t).redIAdd(r).redIAdd(this.b);return 0===n.redSqr().redISub(i).cmpn(0)},u.prototype._endoWnafMulAdd=function(e,t,n){for(var r=this._endoWnafT1,i=this._endoWnafT2,o=0;o":""},c.prototype.isInfinity=function(){return this.inf},c.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(0===this.x.cmp(e.x))return this.curve.point(null,null);var t=this.y.redSub(e.y);0!==t.cmpn(0)&&(t=t.redMul(this.x.redSub(e.x).redInvm()));var n=t.redSqr().redISub(this.x).redISub(e.x),r=t.redMul(this.x.redSub(n)).redISub(this.y);return this.curve.point(n,r)},c.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(0===e.cmpn(0))return this.curve.point(null,null);var t=this.curve.a,n=this.x.redSqr(),r=e.redInvm(),i=n.redAdd(n).redIAdd(n).redIAdd(t).redMul(r),o=i.redSqr().redISub(this.x.redAdd(this.x)),s=i.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,s)},c.prototype.getX=function(){return this.x.fromRed()},c.prototype.getY=function(){return this.y.fromRed()},c.prototype.mul=function(e){return e=new i(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},c.prototype.mulAdd=function(e,t,n){var r=[this,t],i=[e,n];return this.curve.endo?this.curve._endoWnafMulAdd(r,i):this.curve._wnafMulAdd(1,r,i,2)},c.prototype.jmulAdd=function(e,t,n){var r=[this,t],i=[e,n];return this.curve.endo?this.curve._endoWnafMulAdd(r,i,!0):this.curve._wnafMulAdd(1,r,i,2,!0)},c.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||0===this.x.cmp(e.x)&&0===this.y.cmp(e.y))},c.prototype.neg=function(e){if(this.inf)return this;var t=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var n=this.precomputed,r=function(e){return e.neg()};t.precomputed={naf:n.naf&&{wnd:n.naf.wnd,points:n.naf.points.map(r)},doubles:n.doubles&&{step:n.doubles.step,points:n.doubles.points.map(r)}}}return t},c.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},o(d,s.BasePoint),u.prototype.jpoint=function(e,t,n){return new d(this,e,t,n)},d.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),t=e.redSqr(),n=this.x.redMul(t),r=this.y.redMul(t).redMul(e);return this.curve.point(n,r)},d.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},d.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var t=e.z.redSqr(),n=this.z.redSqr(),r=this.x.redMul(t),i=e.x.redMul(n),o=this.y.redMul(t.redMul(e.z)),s=e.y.redMul(n.redMul(this.z)),a=r.redSub(i),u=o.redSub(s);if(0===a.cmpn(0))return 0!==u.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var c=a.redSqr(),d=c.redMul(a),l=r.redMul(c),h=u.redSqr().redIAdd(d).redISub(l).redISub(l),f=u.redMul(l.redISub(h)).redISub(o.redMul(d)),p=this.z.redMul(e.z).redMul(a);return this.curve.jpoint(h,f,p)},d.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var t=this.z.redSqr(),n=this.x,r=e.x.redMul(t),i=this.y,o=e.y.redMul(t).redMul(this.z),s=n.redSub(r),a=i.redSub(o);if(0===s.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=s.redSqr(),c=u.redMul(s),d=n.redMul(u),l=a.redSqr().redIAdd(c).redISub(d).redISub(d),h=a.redMul(d.redISub(l)).redISub(i.redMul(c)),f=this.z.redMul(s);return this.curve.jpoint(l,h,f)},d.prototype.dblp=function(e){if(0===e)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var t;if(this.curve.zeroA||this.curve.threeA){var n=this;for(t=0;t=0)return!1;if(n.redIAdd(i),0===this.x.cmp(n))return!0}},d.prototype.inspect=function(){return this.isInfinity()?"":""},d.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},60480:(e,t,n)=>{"use strict";var r,i=t,o=n(77952),s=n(894),a=n(47011).assert;function u(e){"short"===e.type?this.curve=new s.short(e):"edwards"===e.type?this.curve=new s.edwards(e):this.curve=new s.mont(e),this.g=this.curve.g,this.n=this.curve.n,this.hash=e.hash,a(this.g.validate(),"Invalid curve"),a(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function c(e,t){Object.defineProperty(i,e,{configurable:!0,enumerable:!0,get:function(){var n=new u(t);return Object.defineProperty(i,e,{configurable:!0,enumerable:!0,value:n}),n}})}i.PresetCurve=u,c("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:o.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),c("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:o.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),c("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:o.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),c("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:o.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),c("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:o.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),c("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["9"]}),c("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{r=n(74011)}catch(e){r=void 0}c("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:o.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",r]})},57447:(e,t,n)=>{"use strict";var r=n(28490),i=n(32723),o=n(47011),s=n(60480),a=n(15037),u=o.assert,c=n(61200),d=n(28545);function l(e){if(!(this instanceof l))return new l(e);"string"==typeof e&&(u(Object.prototype.hasOwnProperty.call(s,e),"Unknown curve "+e),e=s[e]),e instanceof s.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}e.exports=l,l.prototype.keyPair=function(e){return new c(this,e)},l.prototype.keyFromPrivate=function(e,t){return c.fromPrivate(this,e,t)},l.prototype.keyFromPublic=function(e,t){return c.fromPublic(this,e,t)},l.prototype.genKeyPair=function(e){e||(e={});for(var t=new i({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||a(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),n=this.n.byteLength(),o=this.n.sub(new r(2));;){var s=new r(t.generate(n));if(!(s.cmp(o)>0))return s.iaddn(1),this.keyFromPrivate(s)}},l.prototype._truncateToN=function(e,t){var n=8*e.byteLength()-this.n.bitLength();return n>0&&(e=e.ushrn(n)),!t&&e.cmp(this.n)>=0?e.sub(this.n):e},l.prototype.sign=function(e,t,n,o){"object"==typeof n&&(o=n,n=null),o||(o={}),t=this.keyFromPrivate(t,n),e=this._truncateToN(new r(e,16));for(var s=this.n.byteLength(),a=t.getPrivate().toArray("be",s),u=e.toArray("be",s),c=new i({hash:this.hash,entropy:a,nonce:u,pers:o.pers,persEnc:o.persEnc||"utf8"}),l=this.n.sub(new r(1)),h=0;;h++){var f=o.k?o.k(h):new r(c.generate(this.n.byteLength()));if(!((f=this._truncateToN(f,!0)).cmpn(1)<=0||f.cmp(l)>=0)){var p=this.g.mul(f);if(!p.isInfinity()){var m=p.getX(),g=m.umod(this.n);if(0!==g.cmpn(0)){var y=f.invm(this.n).mul(g.mul(t.getPrivate()).iadd(e));if(0!==(y=y.umod(this.n)).cmpn(0)){var v=(p.getY().isOdd()?1:0)|(0!==m.cmp(g)?2:0);return o.canonical&&y.cmp(this.nh)>0&&(y=this.n.sub(y),v^=1),new d({r:g,s:y,recoveryParam:v})}}}}}},l.prototype.verify=function(e,t,n,i){e=this._truncateToN(new r(e,16)),n=this.keyFromPublic(n,i);var o=(t=new d(t,"hex")).r,s=t.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return!1;var a,u=s.invm(this.n),c=u.mul(e).umod(this.n),l=u.mul(o).umod(this.n);return this.curve._maxwellTrick?!(a=this.g.jmulAdd(c,n.getPublic(),l)).isInfinity()&&a.eqXToP(o):!(a=this.g.mulAdd(c,n.getPublic(),l)).isInfinity()&&0===a.getX().umod(this.n).cmp(o)},l.prototype.recoverPubKey=function(e,t,n,i){u((3&n)===n,"The recovery param is more than two bits"),t=new d(t,i);var o=this.n,s=new r(e),a=t.r,c=t.s,l=1&n,h=n>>1;if(a.cmp(this.curve.p.umod(this.curve.n))>=0&&h)throw new Error("Unable to find sencond key candinate");a=h?this.curve.pointFromX(a.add(this.curve.n),l):this.curve.pointFromX(a,l);var f=t.r.invm(o),p=o.sub(s).mul(f).umod(o),m=c.mul(f).umod(o);return this.g.mulAdd(p,a,m)},l.prototype.getKeyRecoveryParam=function(e,t,n,r){if(null!==(t=new d(t,r)).recoveryParam)return t.recoveryParam;for(var i=0;i<4;i++){var o;try{o=this.recoverPubKey(e,t,i)}catch(e){continue}if(o.eq(n))return i}throw new Error("Unable to find valid recovery factor")}},61200:(e,t,n)=>{"use strict";var r=n(28490),i=n(47011).assert;function o(e,t){this.ec=e,this.priv=null,this.pub=null,t.priv&&this._importPrivate(t.priv,t.privEnc),t.pub&&this._importPublic(t.pub,t.pubEnc)}e.exports=o,o.fromPublic=function(e,t,n){return t instanceof o?t:new o(e,{pub:t,pubEnc:n})},o.fromPrivate=function(e,t,n){return t instanceof o?t:new o(e,{priv:t,privEnc:n})},o.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},o.prototype.getPublic=function(e,t){return"string"==typeof e&&(t=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),t?this.pub.encode(t,e):this.pub},o.prototype.getPrivate=function(e){return"hex"===e?this.priv.toString(16,2):this.priv},o.prototype._importPrivate=function(e,t){this.priv=new r(e,t||16),this.priv=this.priv.umod(this.ec.curve.n)},o.prototype._importPublic=function(e,t){if(e.x||e.y)return"mont"===this.ec.curve.type?i(e.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||i(e.x&&e.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(e.x,e.y));this.pub=this.ec.curve.decodePoint(e,t)},o.prototype.derive=function(e){return e.validate()||i(e.validate(),"public point not validated"),e.mul(this.priv).getX()},o.prototype.sign=function(e,t,n){return this.ec.sign(e,this,t,n)},o.prototype.verify=function(e,t){return this.ec.verify(e,t,this)},o.prototype.inspect=function(){return""}},28545:(e,t,n)=>{"use strict";var r=n(28490),i=n(47011),o=i.assert;function s(e,t){if(e instanceof s)return e;this._importDER(e,t)||(o(e.r&&e.s,"Signature without r or s"),this.r=new r(e.r,16),this.s=new r(e.s,16),void 0===e.recoveryParam?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}function a(){this.place=0}function u(e,t){var n=e[t.place++];if(!(128&n))return n;var r=15&n;if(0===r||r>4)return!1;for(var i=0,o=0,s=t.place;o>>=0;return!(i<=127)&&(t.place=s,i)}function c(e){for(var t=0,n=e.length-1;!e[t]&&!(128&e[t+1])&&t>>3);for(e.push(128|n);--n;)e.push(t>>>(n<<3)&255);e.push(t)}}e.exports=s,s.prototype._importDER=function(e,t){e=i.toArray(e,t);var n=new a;if(48!==e[n.place++])return!1;var o=u(e,n);if(!1===o)return!1;if(o+n.place!==e.length)return!1;if(2!==e[n.place++])return!1;var s=u(e,n);if(!1===s)return!1;var c=e.slice(n.place,s+n.place);if(n.place+=s,2!==e[n.place++])return!1;var d=u(e,n);if(!1===d)return!1;if(e.length!==d+n.place)return!1;var l=e.slice(n.place,d+n.place);if(0===c[0]){if(!(128&c[1]))return!1;c=c.slice(1)}if(0===l[0]){if(!(128&l[1]))return!1;l=l.slice(1)}return this.r=new r(c),this.s=new r(l),this.recoveryParam=null,!0},s.prototype.toDER=function(e){var t=this.r.toArray(),n=this.s.toArray();for(128&t[0]&&(t=[0].concat(t)),128&n[0]&&(n=[0].concat(n)),t=c(t),n=c(n);!(n[0]||128&n[1]);)n=n.slice(1);var r=[2];d(r,t.length),(r=r.concat(t)).push(2),d(r,n.length);var o=r.concat(n),s=[48];return d(s,o.length),s=s.concat(o),i.encode(s,e)}},8650:(e,t,n)=>{"use strict";var r=n(77952),i=n(60480),o=n(47011),s=o.assert,a=o.parseBytes,u=n(46661),c=n(90220);function d(e){if(s("ed25519"===e,"only tested with ed25519 so far"),!(this instanceof d))return new d(e);e=i[e].curve,this.curve=e,this.g=e.g,this.g.precompute(e.n.bitLength()+1),this.pointClass=e.point().constructor,this.encodingLength=Math.ceil(e.n.bitLength()/8),this.hash=r.sha512}e.exports=d,d.prototype.sign=function(e,t){e=a(e);var n=this.keyFromSecret(t),r=this.hashInt(n.messagePrefix(),e),i=this.g.mul(r),o=this.encodePoint(i),s=this.hashInt(o,n.pubBytes(),e).mul(n.priv()),u=r.add(s).umod(this.curve.n);return this.makeSignature({R:i,S:u,Rencoded:o})},d.prototype.verify=function(e,t,n){e=a(e),t=this.makeSignature(t);var r=this.keyFromPublic(n),i=this.hashInt(t.Rencoded(),r.pubBytes(),e),o=this.g.mul(t.S());return t.R().add(r.pub().mul(i)).eq(o)},d.prototype.hashInt=function(){for(var e=this.hash(),t=0;t{"use strict";var r=n(47011),i=r.assert,o=r.parseBytes,s=r.cachedProperty;function a(e,t){this.eddsa=e,this._secret=o(t.secret),e.isPoint(t.pub)?this._pub=t.pub:this._pubBytes=o(t.pub)}a.fromPublic=function(e,t){return t instanceof a?t:new a(e,{pub:t})},a.fromSecret=function(e,t){return t instanceof a?t:new a(e,{secret:t})},a.prototype.secret=function(){return this._secret},s(a,"pubBytes",(function(){return this.eddsa.encodePoint(this.pub())})),s(a,"pub",(function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())})),s(a,"privBytes",(function(){var e=this.eddsa,t=this.hash(),n=e.encodingLength-1,r=t.slice(0,e.encodingLength);return r[0]&=248,r[n]&=127,r[n]|=64,r})),s(a,"priv",(function(){return this.eddsa.decodeInt(this.privBytes())})),s(a,"hash",(function(){return this.eddsa.hash().update(this.secret()).digest()})),s(a,"messagePrefix",(function(){return this.hash().slice(this.eddsa.encodingLength)})),a.prototype.sign=function(e){return i(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)},a.prototype.verify=function(e,t){return this.eddsa.verify(e,t,this)},a.prototype.getSecret=function(e){return i(this._secret,"KeyPair is public only"),r.encode(this.secret(),e)},a.prototype.getPublic=function(e){return r.encode(this.pubBytes(),e)},e.exports=a},90220:(e,t,n)=>{"use strict";var r=n(28490),i=n(47011),o=i.assert,s=i.cachedProperty,a=i.parseBytes;function u(e,t){this.eddsa=e,"object"!=typeof t&&(t=a(t)),Array.isArray(t)&&(t={R:t.slice(0,e.encodingLength),S:t.slice(e.encodingLength)}),o(t.R&&t.S,"Signature without R or S"),e.isPoint(t.R)&&(this._R=t.R),t.S instanceof r&&(this._S=t.S),this._Rencoded=Array.isArray(t.R)?t.R:t.Rencoded,this._Sencoded=Array.isArray(t.S)?t.S:t.Sencoded}s(u,"S",(function(){return this.eddsa.decodeInt(this.Sencoded())})),s(u,"R",(function(){return this.eddsa.decodePoint(this.Rencoded())})),s(u,"Rencoded",(function(){return this.eddsa.encodePoint(this.R())})),s(u,"Sencoded",(function(){return this.eddsa.encodeInt(this.S())})),u.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},u.prototype.toHex=function(){return i.encode(this.toBytes(),"hex").toUpperCase()},e.exports=u},74011:e=>{e.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}},47011:(e,t,n)=>{"use strict";var r=t,i=n(28490),o=n(43349),s=n(64367);r.assert=o,r.toArray=s.toArray,r.zero2=s.zero2,r.toHex=s.toHex,r.encode=s.encode,r.getNAF=function(e,t,n){var r,i=new Array(Math.max(e.bitLength(),n)+1);for(r=0;r(o>>1)-1?(o>>1)-u:u,s.isubn(a)):a=0,i[r]=a,s.iushrn(1)}return i},r.getJSF=function(e,t){var n=[[],[]];e=e.clone(),t=t.clone();for(var r,i=0,o=0;e.cmpn(-i)>0||t.cmpn(-o)>0;){var s,a,u=e.andln(3)+i&3,c=t.andln(3)+o&3;3===u&&(u=-1),3===c&&(c=-1),s=1&u?3!==(r=e.andln(7)+i&7)&&5!==r||2!==c?u:-u:0,n[0].push(s),a=1&c?3!==(r=t.andln(7)+o&7)&&5!==r||2!==u?c:-c:0,n[1].push(a),2*i===s+1&&(i=1-i),2*o===a+1&&(o=1-o),e.iushrn(1),t.iushrn(1)}return n},r.cachedProperty=function(e,t,n){var r="_"+t;e.prototype[t]=function(){return void 0!==this[r]?this[r]:this[r]=n.call(this)}},r.parseBytes=function(e){return"string"==typeof e?r.toArray(e,"hex"):e},r.intFromLE=function(e){return new i(e,"hex","le")}},28490:function(e,t,n){!function(e,t){"use strict";function r(e,t){if(!e)throw new Error(t||"Assertion failed")}function i(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}function o(e,t,n){if(o.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(n=t,t=10),this._init(e||0,t||10,n||"be"))}var s;"object"==typeof e?e.exports=o:t.BN=o,o.BN=o,o.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:n(79368).Buffer}catch(e){}function a(e,t){var n=e.charCodeAt(t);return n>=65&&n<=70?n-55:n>=97&&n<=102?n-87:n-48&15}function u(e,t,n){var r=a(e,n);return n-1>=t&&(r|=a(e,n-1)<<4),r}function c(e,t,n,r){for(var i=0,o=Math.min(e.length,n),s=t;s=49?a-49+10:a>=17?a-17+10:a}return i}o.isBN=function(e){return e instanceof o||null!==e&&"object"==typeof e&&e.constructor.wordSize===o.wordSize&&Array.isArray(e.words)},o.max=function(e,t){return e.cmp(t)>0?e:t},o.min=function(e,t){return e.cmp(t)<0?e:t},o.prototype._init=function(e,t,n){if("number"==typeof e)return this._initNumber(e,t,n);if("object"==typeof e)return this._initArray(e,t,n);"hex"===t&&(t=16),r(t===(0|t)&&t>=2&&t<=36);var i=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(i++,this.negative=1),i=0;i-=3)s=e[i]|e[i-1]<<8|e[i-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===n)for(i=0,o=0;i>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(e,t,n){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var r=0;r=t;r-=2)i=u(e,t,r)<=18?(o-=18,s+=1,this.words[s]|=i>>>26):o+=8;else for(r=(e.length-t)%2==0?t+1:t;r=18?(o-=18,s+=1,this.words[s]|=i>>>26):o+=8;this.strip()},o.prototype._parseBase=function(e,t,n){this.words=[0],this.length=1;for(var r=0,i=1;i<=67108863;i*=t)r++;r--,i=i/t|0;for(var o=e.length-n,s=o%r,a=Math.min(o,o-s)+n,u=0,d=n;d1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var d=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],h=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(e,t,n){n.negative=t.negative^e.negative;var r=e.length+t.length|0;n.length=r,r=r-1|0;var i=0|e.words[0],o=0|t.words[0],s=i*o,a=67108863&s,u=s/67108864|0;n.words[0]=a;for(var c=1;c>>26,l=67108863&u,h=Math.min(c,t.length-1),f=Math.max(0,c-e.length+1);f<=h;f++){var p=c-f|0;d+=(s=(i=0|e.words[p])*(o=0|t.words[f])+l)/67108864|0,l=67108863&s}n.words[c]=0|l,u=0|d}return 0!==u?n.words[c]=0|u:n.length--,n.strip()}o.prototype.toString=function(e,t){var n;if(t=0|t||1,16===(e=e||10)||"hex"===e){n="";for(var i=0,o=0,s=0;s>>24-i&16777215)||s!==this.length-1?d[6-u.length]+u+n:u+n,(i+=2)>=26&&(i-=26,s--)}for(0!==o&&(n=o.toString(16)+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(e===(0|e)&&e>=2&&e<=36){var c=l[e],f=h[e];n="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modn(f).toString(e);n=(p=p.idivn(f)).isZero()?m+n:d[c-m.length]+m+n}for(this.isZero()&&(n="0"+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}r(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(e,t){return r(void 0!==s),this.toArrayLike(s,e,t)},o.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},o.prototype.toArrayLike=function(e,t,n){var i=this.byteLength(),o=n||Math.max(1,i);r(i<=o,"byte array longer than desired length"),r(o>0,"Requested array length <= 0"),this.strip();var s,a,u="le"===t,c=new e(o),d=this.clone();if(u){for(a=0;!d.isZero();a++)s=d.andln(255),d.iushrn(8),c[a]=s;for(;a=4096&&(n+=13,t>>>=13),t>=64&&(n+=7,t>>>=7),t>=8&&(n+=4,t>>>=4),t>=2&&(n+=2,t>>>=2),n+t},o.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,n=0;return 8191&t||(n+=13,t>>>=13),127&t||(n+=7,t>>>=7),15&t||(n+=4,t>>>=4),3&t||(n+=2,t>>>=2),1&t||n++,n},o.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},o.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},o.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var n=0;ne.length?this.clone().iand(e):e.clone().iand(this)},o.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},o.prototype.iuxor=function(e){var t,n;this.length>e.length?(t=this,n=e):(t=e,n=this);for(var r=0;re.length?this.clone().ixor(e):e.clone().ixor(this)},o.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},o.prototype.inotn=function(e){r("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),n=e%26;this._expand(t),n>0&&t--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-n),this.strip()},o.prototype.notn=function(e){return this.clone().inotn(e)},o.prototype.setn=function(e,t){r("number"==typeof e&&e>=0);var n=e/26|0,i=e%26;return this._expand(n+1),this.words[n]=t?this.words[n]|1<e.length?(n=this,r=e):(n=e,r=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=n.length,0!==i)this.words[this.length]=i,this.length++;else if(n!==this)for(;oe.length?this.clone().iadd(e):e.clone().iadd(this)},o.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var n,r,i=this.cmp(e);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(n=this,r=e):(n=e,r=this);for(var o=0,s=0;s>26,this.words[s]=67108863&t;for(;0!==o&&s>26,this.words[s]=67108863&t;if(0===o&&s>>13,f=0|s[1],p=8191&f,m=f>>>13,g=0|s[2],y=8191&g,v=g>>>13,b=0|s[3],w=8191&b,_=b>>>13,x=0|s[4],D=8191&x,E=x>>>13,M=0|s[5],A=8191&M,S=M>>>13,C=0|s[6],k=8191&C,T=C>>>13,I=0|s[7],R=8191&I,F=I>>>13,O=0|s[8],B=8191&O,P=O>>>13,N=0|s[9],j=8191&N,L=N>>>13,U=0|a[0],q=8191&U,$=U>>>13,z=0|a[1],H=8191&z,K=z>>>13,W=0|a[2],G=8191&W,V=W>>>13,Y=0|a[3],Z=8191&Y,J=Y>>>13,X=0|a[4],Q=8191&X,ee=X>>>13,te=0|a[5],ne=8191&te,re=te>>>13,ie=0|a[6],oe=8191&ie,se=ie>>>13,ae=0|a[7],ue=8191&ae,ce=ae>>>13,de=0|a[8],le=8191&de,he=de>>>13,fe=0|a[9],pe=8191&fe,me=fe>>>13;n.negative=e.negative^t.negative,n.length=19;var ge=(c+(r=Math.imul(l,q))|0)+((8191&(i=(i=Math.imul(l,$))+Math.imul(h,q)|0))<<13)|0;c=((o=Math.imul(h,$))+(i>>>13)|0)+(ge>>>26)|0,ge&=67108863,r=Math.imul(p,q),i=(i=Math.imul(p,$))+Math.imul(m,q)|0,o=Math.imul(m,$);var ye=(c+(r=r+Math.imul(l,H)|0)|0)+((8191&(i=(i=i+Math.imul(l,K)|0)+Math.imul(h,H)|0))<<13)|0;c=((o=o+Math.imul(h,K)|0)+(i>>>13)|0)+(ye>>>26)|0,ye&=67108863,r=Math.imul(y,q),i=(i=Math.imul(y,$))+Math.imul(v,q)|0,o=Math.imul(v,$),r=r+Math.imul(p,H)|0,i=(i=i+Math.imul(p,K)|0)+Math.imul(m,H)|0,o=o+Math.imul(m,K)|0;var ve=(c+(r=r+Math.imul(l,G)|0)|0)+((8191&(i=(i=i+Math.imul(l,V)|0)+Math.imul(h,G)|0))<<13)|0;c=((o=o+Math.imul(h,V)|0)+(i>>>13)|0)+(ve>>>26)|0,ve&=67108863,r=Math.imul(w,q),i=(i=Math.imul(w,$))+Math.imul(_,q)|0,o=Math.imul(_,$),r=r+Math.imul(y,H)|0,i=(i=i+Math.imul(y,K)|0)+Math.imul(v,H)|0,o=o+Math.imul(v,K)|0,r=r+Math.imul(p,G)|0,i=(i=i+Math.imul(p,V)|0)+Math.imul(m,G)|0,o=o+Math.imul(m,V)|0;var be=(c+(r=r+Math.imul(l,Z)|0)|0)+((8191&(i=(i=i+Math.imul(l,J)|0)+Math.imul(h,Z)|0))<<13)|0;c=((o=o+Math.imul(h,J)|0)+(i>>>13)|0)+(be>>>26)|0,be&=67108863,r=Math.imul(D,q),i=(i=Math.imul(D,$))+Math.imul(E,q)|0,o=Math.imul(E,$),r=r+Math.imul(w,H)|0,i=(i=i+Math.imul(w,K)|0)+Math.imul(_,H)|0,o=o+Math.imul(_,K)|0,r=r+Math.imul(y,G)|0,i=(i=i+Math.imul(y,V)|0)+Math.imul(v,G)|0,o=o+Math.imul(v,V)|0,r=r+Math.imul(p,Z)|0,i=(i=i+Math.imul(p,J)|0)+Math.imul(m,Z)|0,o=o+Math.imul(m,J)|0;var we=(c+(r=r+Math.imul(l,Q)|0)|0)+((8191&(i=(i=i+Math.imul(l,ee)|0)+Math.imul(h,Q)|0))<<13)|0;c=((o=o+Math.imul(h,ee)|0)+(i>>>13)|0)+(we>>>26)|0,we&=67108863,r=Math.imul(A,q),i=(i=Math.imul(A,$))+Math.imul(S,q)|0,o=Math.imul(S,$),r=r+Math.imul(D,H)|0,i=(i=i+Math.imul(D,K)|0)+Math.imul(E,H)|0,o=o+Math.imul(E,K)|0,r=r+Math.imul(w,G)|0,i=(i=i+Math.imul(w,V)|0)+Math.imul(_,G)|0,o=o+Math.imul(_,V)|0,r=r+Math.imul(y,Z)|0,i=(i=i+Math.imul(y,J)|0)+Math.imul(v,Z)|0,o=o+Math.imul(v,J)|0,r=r+Math.imul(p,Q)|0,i=(i=i+Math.imul(p,ee)|0)+Math.imul(m,Q)|0,o=o+Math.imul(m,ee)|0;var _e=(c+(r=r+Math.imul(l,ne)|0)|0)+((8191&(i=(i=i+Math.imul(l,re)|0)+Math.imul(h,ne)|0))<<13)|0;c=((o=o+Math.imul(h,re)|0)+(i>>>13)|0)+(_e>>>26)|0,_e&=67108863,r=Math.imul(k,q),i=(i=Math.imul(k,$))+Math.imul(T,q)|0,o=Math.imul(T,$),r=r+Math.imul(A,H)|0,i=(i=i+Math.imul(A,K)|0)+Math.imul(S,H)|0,o=o+Math.imul(S,K)|0,r=r+Math.imul(D,G)|0,i=(i=i+Math.imul(D,V)|0)+Math.imul(E,G)|0,o=o+Math.imul(E,V)|0,r=r+Math.imul(w,Z)|0,i=(i=i+Math.imul(w,J)|0)+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,r=r+Math.imul(y,Q)|0,i=(i=i+Math.imul(y,ee)|0)+Math.imul(v,Q)|0,o=o+Math.imul(v,ee)|0,r=r+Math.imul(p,ne)|0,i=(i=i+Math.imul(p,re)|0)+Math.imul(m,ne)|0,o=o+Math.imul(m,re)|0;var xe=(c+(r=r+Math.imul(l,oe)|0)|0)+((8191&(i=(i=i+Math.imul(l,se)|0)+Math.imul(h,oe)|0))<<13)|0;c=((o=o+Math.imul(h,se)|0)+(i>>>13)|0)+(xe>>>26)|0,xe&=67108863,r=Math.imul(R,q),i=(i=Math.imul(R,$))+Math.imul(F,q)|0,o=Math.imul(F,$),r=r+Math.imul(k,H)|0,i=(i=i+Math.imul(k,K)|0)+Math.imul(T,H)|0,o=o+Math.imul(T,K)|0,r=r+Math.imul(A,G)|0,i=(i=i+Math.imul(A,V)|0)+Math.imul(S,G)|0,o=o+Math.imul(S,V)|0,r=r+Math.imul(D,Z)|0,i=(i=i+Math.imul(D,J)|0)+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,r=r+Math.imul(w,Q)|0,i=(i=i+Math.imul(w,ee)|0)+Math.imul(_,Q)|0,o=o+Math.imul(_,ee)|0,r=r+Math.imul(y,ne)|0,i=(i=i+Math.imul(y,re)|0)+Math.imul(v,ne)|0,o=o+Math.imul(v,re)|0,r=r+Math.imul(p,oe)|0,i=(i=i+Math.imul(p,se)|0)+Math.imul(m,oe)|0,o=o+Math.imul(m,se)|0;var De=(c+(r=r+Math.imul(l,ue)|0)|0)+((8191&(i=(i=i+Math.imul(l,ce)|0)+Math.imul(h,ue)|0))<<13)|0;c=((o=o+Math.imul(h,ce)|0)+(i>>>13)|0)+(De>>>26)|0,De&=67108863,r=Math.imul(B,q),i=(i=Math.imul(B,$))+Math.imul(P,q)|0,o=Math.imul(P,$),r=r+Math.imul(R,H)|0,i=(i=i+Math.imul(R,K)|0)+Math.imul(F,H)|0,o=o+Math.imul(F,K)|0,r=r+Math.imul(k,G)|0,i=(i=i+Math.imul(k,V)|0)+Math.imul(T,G)|0,o=o+Math.imul(T,V)|0,r=r+Math.imul(A,Z)|0,i=(i=i+Math.imul(A,J)|0)+Math.imul(S,Z)|0,o=o+Math.imul(S,J)|0,r=r+Math.imul(D,Q)|0,i=(i=i+Math.imul(D,ee)|0)+Math.imul(E,Q)|0,o=o+Math.imul(E,ee)|0,r=r+Math.imul(w,ne)|0,i=(i=i+Math.imul(w,re)|0)+Math.imul(_,ne)|0,o=o+Math.imul(_,re)|0,r=r+Math.imul(y,oe)|0,i=(i=i+Math.imul(y,se)|0)+Math.imul(v,oe)|0,o=o+Math.imul(v,se)|0,r=r+Math.imul(p,ue)|0,i=(i=i+Math.imul(p,ce)|0)+Math.imul(m,ue)|0,o=o+Math.imul(m,ce)|0;var Ee=(c+(r=r+Math.imul(l,le)|0)|0)+((8191&(i=(i=i+Math.imul(l,he)|0)+Math.imul(h,le)|0))<<13)|0;c=((o=o+Math.imul(h,he)|0)+(i>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,r=Math.imul(j,q),i=(i=Math.imul(j,$))+Math.imul(L,q)|0,o=Math.imul(L,$),r=r+Math.imul(B,H)|0,i=(i=i+Math.imul(B,K)|0)+Math.imul(P,H)|0,o=o+Math.imul(P,K)|0,r=r+Math.imul(R,G)|0,i=(i=i+Math.imul(R,V)|0)+Math.imul(F,G)|0,o=o+Math.imul(F,V)|0,r=r+Math.imul(k,Z)|0,i=(i=i+Math.imul(k,J)|0)+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,r=r+Math.imul(A,Q)|0,i=(i=i+Math.imul(A,ee)|0)+Math.imul(S,Q)|0,o=o+Math.imul(S,ee)|0,r=r+Math.imul(D,ne)|0,i=(i=i+Math.imul(D,re)|0)+Math.imul(E,ne)|0,o=o+Math.imul(E,re)|0,r=r+Math.imul(w,oe)|0,i=(i=i+Math.imul(w,se)|0)+Math.imul(_,oe)|0,o=o+Math.imul(_,se)|0,r=r+Math.imul(y,ue)|0,i=(i=i+Math.imul(y,ce)|0)+Math.imul(v,ue)|0,o=o+Math.imul(v,ce)|0,r=r+Math.imul(p,le)|0,i=(i=i+Math.imul(p,he)|0)+Math.imul(m,le)|0,o=o+Math.imul(m,he)|0;var Me=(c+(r=r+Math.imul(l,pe)|0)|0)+((8191&(i=(i=i+Math.imul(l,me)|0)+Math.imul(h,pe)|0))<<13)|0;c=((o=o+Math.imul(h,me)|0)+(i>>>13)|0)+(Me>>>26)|0,Me&=67108863,r=Math.imul(j,H),i=(i=Math.imul(j,K))+Math.imul(L,H)|0,o=Math.imul(L,K),r=r+Math.imul(B,G)|0,i=(i=i+Math.imul(B,V)|0)+Math.imul(P,G)|0,o=o+Math.imul(P,V)|0,r=r+Math.imul(R,Z)|0,i=(i=i+Math.imul(R,J)|0)+Math.imul(F,Z)|0,o=o+Math.imul(F,J)|0,r=r+Math.imul(k,Q)|0,i=(i=i+Math.imul(k,ee)|0)+Math.imul(T,Q)|0,o=o+Math.imul(T,ee)|0,r=r+Math.imul(A,ne)|0,i=(i=i+Math.imul(A,re)|0)+Math.imul(S,ne)|0,o=o+Math.imul(S,re)|0,r=r+Math.imul(D,oe)|0,i=(i=i+Math.imul(D,se)|0)+Math.imul(E,oe)|0,o=o+Math.imul(E,se)|0,r=r+Math.imul(w,ue)|0,i=(i=i+Math.imul(w,ce)|0)+Math.imul(_,ue)|0,o=o+Math.imul(_,ce)|0,r=r+Math.imul(y,le)|0,i=(i=i+Math.imul(y,he)|0)+Math.imul(v,le)|0,o=o+Math.imul(v,he)|0;var Ae=(c+(r=r+Math.imul(p,pe)|0)|0)+((8191&(i=(i=i+Math.imul(p,me)|0)+Math.imul(m,pe)|0))<<13)|0;c=((o=o+Math.imul(m,me)|0)+(i>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,r=Math.imul(j,G),i=(i=Math.imul(j,V))+Math.imul(L,G)|0,o=Math.imul(L,V),r=r+Math.imul(B,Z)|0,i=(i=i+Math.imul(B,J)|0)+Math.imul(P,Z)|0,o=o+Math.imul(P,J)|0,r=r+Math.imul(R,Q)|0,i=(i=i+Math.imul(R,ee)|0)+Math.imul(F,Q)|0,o=o+Math.imul(F,ee)|0,r=r+Math.imul(k,ne)|0,i=(i=i+Math.imul(k,re)|0)+Math.imul(T,ne)|0,o=o+Math.imul(T,re)|0,r=r+Math.imul(A,oe)|0,i=(i=i+Math.imul(A,se)|0)+Math.imul(S,oe)|0,o=o+Math.imul(S,se)|0,r=r+Math.imul(D,ue)|0,i=(i=i+Math.imul(D,ce)|0)+Math.imul(E,ue)|0,o=o+Math.imul(E,ce)|0,r=r+Math.imul(w,le)|0,i=(i=i+Math.imul(w,he)|0)+Math.imul(_,le)|0,o=o+Math.imul(_,he)|0;var Se=(c+(r=r+Math.imul(y,pe)|0)|0)+((8191&(i=(i=i+Math.imul(y,me)|0)+Math.imul(v,pe)|0))<<13)|0;c=((o=o+Math.imul(v,me)|0)+(i>>>13)|0)+(Se>>>26)|0,Se&=67108863,r=Math.imul(j,Z),i=(i=Math.imul(j,J))+Math.imul(L,Z)|0,o=Math.imul(L,J),r=r+Math.imul(B,Q)|0,i=(i=i+Math.imul(B,ee)|0)+Math.imul(P,Q)|0,o=o+Math.imul(P,ee)|0,r=r+Math.imul(R,ne)|0,i=(i=i+Math.imul(R,re)|0)+Math.imul(F,ne)|0,o=o+Math.imul(F,re)|0,r=r+Math.imul(k,oe)|0,i=(i=i+Math.imul(k,se)|0)+Math.imul(T,oe)|0,o=o+Math.imul(T,se)|0,r=r+Math.imul(A,ue)|0,i=(i=i+Math.imul(A,ce)|0)+Math.imul(S,ue)|0,o=o+Math.imul(S,ce)|0,r=r+Math.imul(D,le)|0,i=(i=i+Math.imul(D,he)|0)+Math.imul(E,le)|0,o=o+Math.imul(E,he)|0;var Ce=(c+(r=r+Math.imul(w,pe)|0)|0)+((8191&(i=(i=i+Math.imul(w,me)|0)+Math.imul(_,pe)|0))<<13)|0;c=((o=o+Math.imul(_,me)|0)+(i>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,r=Math.imul(j,Q),i=(i=Math.imul(j,ee))+Math.imul(L,Q)|0,o=Math.imul(L,ee),r=r+Math.imul(B,ne)|0,i=(i=i+Math.imul(B,re)|0)+Math.imul(P,ne)|0,o=o+Math.imul(P,re)|0,r=r+Math.imul(R,oe)|0,i=(i=i+Math.imul(R,se)|0)+Math.imul(F,oe)|0,o=o+Math.imul(F,se)|0,r=r+Math.imul(k,ue)|0,i=(i=i+Math.imul(k,ce)|0)+Math.imul(T,ue)|0,o=o+Math.imul(T,ce)|0,r=r+Math.imul(A,le)|0,i=(i=i+Math.imul(A,he)|0)+Math.imul(S,le)|0,o=o+Math.imul(S,he)|0;var ke=(c+(r=r+Math.imul(D,pe)|0)|0)+((8191&(i=(i=i+Math.imul(D,me)|0)+Math.imul(E,pe)|0))<<13)|0;c=((o=o+Math.imul(E,me)|0)+(i>>>13)|0)+(ke>>>26)|0,ke&=67108863,r=Math.imul(j,ne),i=(i=Math.imul(j,re))+Math.imul(L,ne)|0,o=Math.imul(L,re),r=r+Math.imul(B,oe)|0,i=(i=i+Math.imul(B,se)|0)+Math.imul(P,oe)|0,o=o+Math.imul(P,se)|0,r=r+Math.imul(R,ue)|0,i=(i=i+Math.imul(R,ce)|0)+Math.imul(F,ue)|0,o=o+Math.imul(F,ce)|0,r=r+Math.imul(k,le)|0,i=(i=i+Math.imul(k,he)|0)+Math.imul(T,le)|0,o=o+Math.imul(T,he)|0;var Te=(c+(r=r+Math.imul(A,pe)|0)|0)+((8191&(i=(i=i+Math.imul(A,me)|0)+Math.imul(S,pe)|0))<<13)|0;c=((o=o+Math.imul(S,me)|0)+(i>>>13)|0)+(Te>>>26)|0,Te&=67108863,r=Math.imul(j,oe),i=(i=Math.imul(j,se))+Math.imul(L,oe)|0,o=Math.imul(L,se),r=r+Math.imul(B,ue)|0,i=(i=i+Math.imul(B,ce)|0)+Math.imul(P,ue)|0,o=o+Math.imul(P,ce)|0,r=r+Math.imul(R,le)|0,i=(i=i+Math.imul(R,he)|0)+Math.imul(F,le)|0,o=o+Math.imul(F,he)|0;var Ie=(c+(r=r+Math.imul(k,pe)|0)|0)+((8191&(i=(i=i+Math.imul(k,me)|0)+Math.imul(T,pe)|0))<<13)|0;c=((o=o+Math.imul(T,me)|0)+(i>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,r=Math.imul(j,ue),i=(i=Math.imul(j,ce))+Math.imul(L,ue)|0,o=Math.imul(L,ce),r=r+Math.imul(B,le)|0,i=(i=i+Math.imul(B,he)|0)+Math.imul(P,le)|0,o=o+Math.imul(P,he)|0;var Re=(c+(r=r+Math.imul(R,pe)|0)|0)+((8191&(i=(i=i+Math.imul(R,me)|0)+Math.imul(F,pe)|0))<<13)|0;c=((o=o+Math.imul(F,me)|0)+(i>>>13)|0)+(Re>>>26)|0,Re&=67108863,r=Math.imul(j,le),i=(i=Math.imul(j,he))+Math.imul(L,le)|0,o=Math.imul(L,he);var Fe=(c+(r=r+Math.imul(B,pe)|0)|0)+((8191&(i=(i=i+Math.imul(B,me)|0)+Math.imul(P,pe)|0))<<13)|0;c=((o=o+Math.imul(P,me)|0)+(i>>>13)|0)+(Fe>>>26)|0,Fe&=67108863;var Oe=(c+(r=Math.imul(j,pe))|0)+((8191&(i=(i=Math.imul(j,me))+Math.imul(L,pe)|0))<<13)|0;return c=((o=Math.imul(L,me))+(i>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,u[0]=ge,u[1]=ye,u[2]=ve,u[3]=be,u[4]=we,u[5]=_e,u[6]=xe,u[7]=De,u[8]=Ee,u[9]=Me,u[10]=Ae,u[11]=Se,u[12]=Ce,u[13]=ke,u[14]=Te,u[15]=Ie,u[16]=Re,u[17]=Fe,u[18]=Oe,0!==c&&(u[19]=c,n.length++),n};function m(e,t,n){return(new g).mulp(e,t,n)}function g(e,t){this.x=e,this.y=t}Math.imul||(p=f),o.prototype.mulTo=function(e,t){var n,r=this.length+e.length;return n=10===this.length&&10===e.length?p(this,e,t):r<63?f(this,e,t):r<1024?function(e,t,n){n.negative=t.negative^e.negative,n.length=e.length+t.length;for(var r=0,i=0,o=0;o>>26)|0)>>>26,s&=67108863}n.words[o]=a,r=s,s=i}return 0!==r?n.words[o]=r:n.length--,n.strip()}(this,e,t):m(this,e,t),n},g.prototype.makeRBT=function(e){for(var t=new Array(e),n=o.prototype._countBits(e)-1,r=0;r>=1;return r},g.prototype.permute=function(e,t,n,r,i,o){for(var s=0;s>>=1)i++;return 1<>>=13,n[2*s+1]=8191&o,o>>>=13;for(s=2*t;s>=26,t+=i/67108864|0,t+=o>>>26,this.words[n]=67108863&o}return 0!==t&&(this.words[n]=t,this.length++),this},o.prototype.muln=function(e){return this.clone().imuln(e)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),n=0;n>>i}return t}(e);if(0===t.length)return new o(1);for(var n=this,r=0;r=0);var t,n=e%26,i=(e-n)/26,o=67108863>>>26-n<<26-n;if(0!==n){var s=0;for(t=0;t>>26-n}s&&(this.words[t]=s,this.length++)}if(0!==i){for(t=this.length-1;t>=0;t--)this.words[t+i]=this.words[t];for(t=0;t=0),i=t?(t-t%26)/26:0;var o=e%26,s=Math.min((e-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,c=0;c=0&&(0!==d||c>=i);c--){var l=0|this.words[c];this.words[c]=d<<26-o|l>>>o,d=l&a}return u&&0!==d&&(u.words[u.length++]=d),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(e,t,n){return r(0===this.negative),this.iushrn(e,t,n)},o.prototype.shln=function(e){return this.clone().ishln(e)},o.prototype.ushln=function(e){return this.clone().iushln(e)},o.prototype.shrn=function(e){return this.clone().ishrn(e)},o.prototype.ushrn=function(e){return this.clone().iushrn(e)},o.prototype.testn=function(e){r("number"==typeof e&&e>=0);var t=e%26,n=(e-t)/26,i=1<=0);var t=e%26,n=(e-t)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==t&&n++,this.length=Math.min(n,this.length),0!==t){var i=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},o.prototype.isubn=function(e){if(r("number"==typeof e),r(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[i+n]=67108863&o}for(;i>26,this.words[i+n]=67108863&o;if(0===a)return this.strip();for(r(-1===a),a=0,i=0;i>26,this.words[i]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(e,t){var n=(this.length,e.length),r=this.clone(),i=e,s=0|i.words[i.length-1];0!==(n=26-this._countBits(s))&&(i=i.ushln(n),r.iushln(n),s=0|i.words[i.length-1]);var a,u=r.length-i.length;if("mod"!==t){(a=new o(null)).length=u+1,a.words=new Array(a.length);for(var c=0;c=0;l--){var h=67108864*(0|r.words[i.length+l])+(0|r.words[i.length+l-1]);for(h=Math.min(h/s|0,67108863),r._ishlnsubmul(i,h,l);0!==r.negative;)h--,r.negative=0,r._ishlnsubmul(i,1,l),r.isZero()||(r.negative^=1);a&&(a.words[l]=h)}return a&&a.strip(),r.strip(),"div"!==t&&0!==n&&r.iushrn(n),{div:a||null,mod:r}},o.prototype.divmod=function(e,t,n){return r(!e.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===e.negative?(a=this.neg().divmod(e,t),"mod"!==t&&(i=a.div.neg()),"div"!==t&&(s=a.mod.neg(),n&&0!==s.negative&&s.iadd(e)),{div:i,mod:s}):0===this.negative&&0!==e.negative?(a=this.divmod(e.neg(),t),"mod"!==t&&(i=a.div.neg()),{div:i,mod:a.mod}):this.negative&e.negative?(a=this.neg().divmod(e.neg(),t),"div"!==t&&(s=a.mod.neg(),n&&0!==s.negative&&s.isub(e)),{div:a.div,mod:s}):e.length>this.length||this.cmp(e)<0?{div:new o(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new o(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new o(this.modn(e.words[0]))}:this._wordDiv(e,t);var i,s,a},o.prototype.div=function(e){return this.divmod(e,"div",!1).div},o.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},o.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},o.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var n=0!==t.div.negative?t.mod.isub(e):t.mod,r=e.ushrn(1),i=e.andln(1),o=n.cmp(r);return o<0||1===i&&0===o?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},o.prototype.modn=function(e){r(e<=67108863);for(var t=(1<<26)%e,n=0,i=this.length-1;i>=0;i--)n=(t*n+(0|this.words[i]))%e;return n},o.prototype.idivn=function(e){r(e<=67108863);for(var t=0,n=this.length-1;n>=0;n--){var i=(0|this.words[n])+67108864*t;this.words[n]=i/e|0,t=i%e}return this.strip()},o.prototype.divn=function(e){return this.clone().idivn(e)},o.prototype.egcd=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i=new o(1),s=new o(0),a=new o(0),u=new o(1),c=0;t.isEven()&&n.isEven();)t.iushrn(1),n.iushrn(1),++c;for(var d=n.clone(),l=t.clone();!t.isZero();){for(var h=0,f=1;!(t.words[0]&f)&&h<26;++h,f<<=1);if(h>0)for(t.iushrn(h);h-- >0;)(i.isOdd()||s.isOdd())&&(i.iadd(d),s.isub(l)),i.iushrn(1),s.iushrn(1);for(var p=0,m=1;!(n.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(n.iushrn(p);p-- >0;)(a.isOdd()||u.isOdd())&&(a.iadd(d),u.isub(l)),a.iushrn(1),u.iushrn(1);t.cmp(n)>=0?(t.isub(n),i.isub(a),s.isub(u)):(n.isub(t),a.isub(i),u.isub(s))}return{a,b:u,gcd:n.iushln(c)}},o.prototype._invmp=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i,s=new o(1),a=new o(0),u=n.clone();t.cmpn(1)>0&&n.cmpn(1)>0;){for(var c=0,d=1;!(t.words[0]&d)&&c<26;++c,d<<=1);if(c>0)for(t.iushrn(c);c-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);for(var l=0,h=1;!(n.words[0]&h)&&l<26;++l,h<<=1);if(l>0)for(n.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(u),a.iushrn(1);t.cmp(n)>=0?(t.isub(n),s.isub(a)):(n.isub(t),a.isub(s))}return(i=0===t.cmpn(1)?s:a).cmpn(0)<0&&i.iadd(e),i},o.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),n=e.clone();t.negative=0,n.negative=0;for(var r=0;t.isEven()&&n.isEven();r++)t.iushrn(1),n.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;n.isEven();)n.iushrn(1);var i=t.cmp(n);if(i<0){var o=t;t=n,n=o}else if(0===i||0===n.cmpn(1))break;t.isub(n)}return n.iushln(r)},o.prototype.invm=function(e){return this.egcd(e).a.umod(e)},o.prototype.isEven=function(){return!(1&this.words[0])},o.prototype.isOdd=function(){return!(1&~this.words[0])},o.prototype.andln=function(e){return this.words[0]&e},o.prototype.bincn=function(e){r("number"==typeof e);var t=e%26,n=(e-t)/26,i=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(e){var t,n=e<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this.strip(),this.length>1)t=1;else{n&&(e=-e),r(e<=67108863,"Number is too big");var i=0|this.words[0];t=i===e?0:ie.length)return 1;if(this.length=0;n--){var r=0|this.words[n],i=0|e.words[n];if(r!==i){ri&&(t=1);break}}return t},o.prototype.gtn=function(e){return 1===this.cmpn(e)},o.prototype.gt=function(e){return 1===this.cmp(e)},o.prototype.gten=function(e){return this.cmpn(e)>=0},o.prototype.gte=function(e){return this.cmp(e)>=0},o.prototype.ltn=function(e){return-1===this.cmpn(e)},o.prototype.lt=function(e){return-1===this.cmp(e)},o.prototype.lten=function(e){return this.cmpn(e)<=0},o.prototype.lte=function(e){return this.cmp(e)<=0},o.prototype.eqn=function(e){return 0===this.cmpn(e)},o.prototype.eq=function(e){return 0===this.cmp(e)},o.red=function(e){return new D(e)},o.prototype.toRed=function(e){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},o.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(e){return this.red=e,this},o.prototype.forceRed=function(e){return r(!this.red,"Already a number in reduction context"),this._forceRed(e)},o.prototype.redAdd=function(e){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},o.prototype.redIAdd=function(e){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},o.prototype.redSub=function(e){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},o.prototype.redISub=function(e){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},o.prototype.redShl=function(e){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},o.prototype.redMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},o.prototype.redIMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},o.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(e){return r(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var y={k256:null,p224:null,p192:null,p25519:null};function v(e,t){this.name=e,this.p=new o(t,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function b(){v.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function w(){v.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function _(){v.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function x(){v.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function D(e){if("string"==typeof e){var t=o._prime(e);this.m=t.p,this.prime=t}else r(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function E(e){D.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}v.prototype._tmp=function(){var e=new o(null);return e.words=new Array(Math.ceil(this.n/13)),e},v.prototype.ireduce=function(e){var t,n=e;do{this.split(n,this.tmp),t=(n=(n=this.imulK(n)).iadd(this.tmp)).bitLength()}while(t>this.n);var r=t0?n.isub(this.p):void 0!==n.strip?n.strip():n._strip(),n},v.prototype.split=function(e,t){e.iushrn(this.n,0,t)},v.prototype.imulK=function(e){return e.imul(this.k)},i(b,v),b.prototype.split=function(e,t){for(var n=4194303,r=Math.min(e.length,9),i=0;i>>22,o=s}o>>>=22,e.words[i-10]=o,0===o&&e.length>10?e.length-=10:e.length-=9},b.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,n=0;n>>=26,e.words[n]=i,t=r}return 0!==t&&(e.words[e.length++]=t),e},o._prime=function(e){if(y[e])return y[e];var t;if("k256"===e)t=new b;else if("p224"===e)t=new w;else if("p192"===e)t=new _;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new x}return y[e]=t,t},D.prototype._verify1=function(e){r(0===e.negative,"red works only with positives"),r(e.red,"red works only with red numbers")},D.prototype._verify2=function(e,t){r(!(e.negative|t.negative),"red works only with positives"),r(e.red&&e.red===t.red,"red works only with red numbers")},D.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},D.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},D.prototype.add=function(e,t){this._verify2(e,t);var n=e.add(t);return n.cmp(this.m)>=0&&n.isub(this.m),n._forceRed(this)},D.prototype.iadd=function(e,t){this._verify2(e,t);var n=e.iadd(t);return n.cmp(this.m)>=0&&n.isub(this.m),n},D.prototype.sub=function(e,t){this._verify2(e,t);var n=e.sub(t);return n.cmpn(0)<0&&n.iadd(this.m),n._forceRed(this)},D.prototype.isub=function(e,t){this._verify2(e,t);var n=e.isub(t);return n.cmpn(0)<0&&n.iadd(this.m),n},D.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},D.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},D.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},D.prototype.isqr=function(e){return this.imul(e,e.clone())},D.prototype.sqr=function(e){return this.mul(e,e)},D.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(r(t%2==1),3===t){var n=this.m.add(new o(1)).iushrn(2);return this.pow(e,n)}for(var i=this.m.subn(1),s=0;!i.isZero()&&0===i.andln(1);)s++,i.iushrn(1);r(!i.isZero());var a=new o(1).toRed(this),u=a.redNeg(),c=this.m.subn(1).iushrn(1),d=this.m.bitLength();for(d=new o(2*d*d).toRed(this);0!==this.pow(d,c).cmp(u);)d.redIAdd(u);for(var l=this.pow(d,i),h=this.pow(e,i.addn(1).iushrn(1)),f=this.pow(e,i),p=s;0!==f.cmp(a);){for(var m=f,g=0;0!==m.cmp(a);g++)m=m.redSqr();r(g=0;r--){for(var c=t.words[r],d=u-1;d>=0;d--){var l=c>>d&1;i!==n[0]&&(i=this.sqr(i)),0!==l||0!==s?(s<<=1,s|=l,(4===++a||0===r&&0===d)&&(i=this.mul(i,n[s]),a=0,s=0)):a=0}u=26}return i},D.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},D.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},o.mont=function(e){return new E(e)},i(E,D),E.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},E.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},E.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var n=e.imul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=n.isub(r).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},E.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new o(0)._forceRed(this);var n=e.mul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=n.isub(r).iushrn(this.shift),s=i;return i.cmp(this.m)>=0?s=i.isub(this.m):i.cmpn(0)<0&&(s=i.iadd(this.m)),s._forceRed(this)},E.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=n.nmd(e),this)},69049:e=>{"use strict";e.exports=function(e){for(var t=[],n=e.length,r=0;r=55296&&i<=56319&&n>r+1){var o=e.charCodeAt(r+1);o>=56320&&o<=57343&&(i=1024*(i-55296)+o-56320+65536,r+=1)}i<128?t.push(i):i<2048?(t.push(i>>6|192),t.push(63&i|128)):i<55296||i>=57344&&i<65536?(t.push(i>>12|224),t.push(i>>6&63|128),t.push(63&i|128)):i>=65536&&i<=1114111?(t.push(i>>18|240),t.push(i>>12&63|128),t.push(i>>6&63|128),t.push(63&i|128)):t.push(239,191,189)}return new Uint8Array(t).buffer}},30655:(e,t,n)=>{"use strict";var r=n(70453)("%Object.defineProperty%",!0)||!1;if(r)try{r({},"a",{value:1})}catch(e){r=!1}e.exports=r},41237:e=>{"use strict";e.exports=EvalError},69383:e=>{"use strict";e.exports=Error},79290:e=>{"use strict";e.exports=RangeError},79538:e=>{"use strict";e.exports=ReferenceError},58068:e=>{"use strict";e.exports=SyntaxError},69675:e=>{"use strict";e.exports=TypeError},35345:e=>{"use strict";e.exports=URIError},30228:e=>{"use strict";var t=Object.prototype.hasOwnProperty,n="~";function r(){}function i(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function o(e,t,r,o,s){if("function"!=typeof r)throw new TypeError("The listener must be a function");var a=new i(r,o||e,s),u=n?n+t:t;return e._events[u]?e._events[u].fn?e._events[u]=[e._events[u],a]:e._events[u].push(a):(e._events[u]=a,e._eventsCount++),e}function s(e,t){0==--e._eventsCount?e._events=new r:delete e._events[t]}function a(){this._events=new r,this._eventsCount=0}Object.create&&(r.prototype=Object.create(null),(new r).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,r,i=[];if(0===this._eventsCount)return i;for(r in e=this._events)t.call(e,r)&&i.push(n?r.slice(1):r);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},a.prototype.listeners=function(e){var t=n?n+e:e,r=this._events[t];if(!r)return[];if(r.fn)return[r.fn];for(var i=0,o=r.length,s=new Array(o);i{"use strict";var t,n="object"==typeof Reflect?Reflect:null,r=n&&"function"==typeof n.apply?n.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};t=n&&"function"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var i=Number.isNaN||function(e){return e!=e};function o(){o.init.call(this)}e.exports=o,e.exports.once=function(e,t){return new Promise((function(n,r){function i(n){e.removeListener(t,o),r(n)}function o(){"function"==typeof e.removeListener&&e.removeListener("error",i),n([].slice.call(arguments))}m(e,t,o,{once:!0}),"error"!==t&&function(e,t,n){"function"==typeof e.on&&m(e,"error",t,n)}(e,i,{once:!0})}))},o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var s=10;function a(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function u(e){return void 0===e._maxListeners?o.defaultMaxListeners:e._maxListeners}function c(e,t,n,r){var i,o,s,c;if(a(n),void 0===(o=e._events)?(o=e._events=Object.create(null),e._eventsCount=0):(void 0!==o.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),o=e._events),s=o[t]),void 0===s)s=o[t]=n,++e._eventsCount;else if("function"==typeof s?s=o[t]=r?[n,s]:[s,n]:r?s.unshift(n):s.push(n),(i=u(e))>0&&s.length>i&&!s.warned){s.warned=!0;var d=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");d.name="MaxListenersExceededWarning",d.emitter=e,d.type=t,d.count=s.length,c=d,console&&console.warn&&console.warn(c)}return e}function d(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function l(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},i=d.bind(r);return i.listener=n,r.wrapFn=i,i}function h(e,t,n){var r=e._events;if(void 0===r)return[];var i=r[t];return void 0===i?[]:"function"==typeof i?n?[i.listener||i]:[i]:n?function(e){for(var t=new Array(e.length),n=0;n0&&(s=t[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var u=o[e];if(void 0===u)return!1;if("function"==typeof u)r(u,this,t);else{var c=u.length,d=p(u,c);for(n=0;n=0;o--)if(n[o]===t||n[o].listener===t){s=n[o].listener,i=o;break}if(i<0)return this;0===i?n.shift():function(e,t){for(;t+1=0;r--)this.removeListener(e,t[r]);return this},o.prototype.listeners=function(e){return h(this,e,!0)},o.prototype.rawListeners=function(e){return h(this,e,!1)},o.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):f.call(e,t)},o.prototype.listenerCount=f,o.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},68078:(e,t,n)=>{var r=n(92861).Buffer,i=n(88276);e.exports=function(e,t,n,o){if(r.isBuffer(e)||(e=r.from(e,"binary")),t&&(r.isBuffer(t)||(t=r.from(t,"binary")),8!==t.length))throw new RangeError("salt should be Buffer with 8 byte length");for(var s=n/8,a=r.alloc(s),u=r.alloc(o||0),c=r.alloc(0);s>0||o>0;){var d=new i;d.update(c),d.update(e),t&&d.update(t),c=d.digest();var l=0;if(s>0){var h=a.length-s;l=Math.min(s,c.length),c.copy(a,h,0,l),s-=l}if(l0){var f=u.length-o,p=Math.min(o,c.length-l);c.copy(u,f,l,l+p),o-=p}}return c.fill(0),{key:a,iv:u}}},86454:(e,t,n)=>{"use strict";const r=n(43918),i=n(32923),o=n(8904);e.exports={XMLParser:i,XMLValidator:r,XMLBuilder:o}},35334:(e,t)=>{"use strict";const n=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",r="["+n+"]["+(n+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040")+"]*",i=new RegExp("^"+r+"$");t.isExist=function(e){return void 0!==e},t.isEmptyObject=function(e){return 0===Object.keys(e).length},t.merge=function(e,t,n){if(t){const r=Object.keys(t),i=r.length;for(let o=0;o{"use strict";const r=n(35334),i={allowBooleanAttributes:!1,unpairedTags:[]};function o(e){return" "===e||"\t"===e||"\n"===e||"\r"===e}function s(e,t){const n=t;for(;t5&&"xml"===r)return p("InvalidXml","XML declaration allowed only at the start of the document.",g(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function a(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let n=1;for(t+=8;t"===e[t]&&(n--,0===n))break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t"===e[t+2]){t+=2;break}return t}t.validate=function(e,t){t=Object.assign({},i,t);const n=[];let u=!1,c=!1;"\ufeff"===e[0]&&(e=e.substr(1));for(let i=0;i"!==e[i]&&" "!==e[i]&&"\t"!==e[i]&&"\n"!==e[i]&&"\r"!==e[i];i++)v+=e[i];if(v=v.trim(),"/"===v[v.length-1]&&(v=v.substring(0,v.length-1),i--),l=v,!r.isName(l)){let t;return t=0===v.trim().length?"Invalid space after '<'.":"Tag '"+v+"' is an invalid name.",p("InvalidTag",t,g(e,i))}const b=d(e,i);if(!1===b)return p("InvalidAttr","Attributes for '"+v+"' have open quote.",g(e,i));let w=b.value;if(i=b.index,"/"===w[w.length-1]){const n=i-w.length;w=w.substring(0,w.length-1);const r=h(w,t);if(!0!==r)return p(r.err.code,r.err.msg,g(e,n+r.err.line));u=!0}else if(y){if(!b.tagClosed)return p("InvalidTag","Closing tag '"+v+"' doesn't have proper closing.",g(e,i));if(w.trim().length>0)return p("InvalidTag","Closing tag '"+v+"' can't have attributes or invalid starting.",g(e,m));{const t=n.pop();if(v!==t.tagName){let n=g(e,t.tagStartPos);return p("InvalidTag","Expected closing tag '"+t.tagName+"' (opened in line "+n.line+", col "+n.col+") instead of closing tag '"+v+"'.",g(e,m))}0==n.length&&(c=!0)}}else{const r=h(w,t);if(!0!==r)return p(r.err.code,r.err.msg,g(e,i-w.length+r.err.line));if(!0===c)return p("InvalidXml","Multiple possible root nodes found.",g(e,i));-1!==t.unpairedTags.indexOf(v)||n.push({tagName:v,tagStartPos:m}),u=!0}for(i++;i0)||p("InvalidXml","Invalid '"+JSON.stringify(n.map((e=>e.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):p("InvalidXml","Start tag expected.",1)};const u='"',c="'";function d(e,t){let n="",r="",i=!1;for(;t"===e[t]&&""===r){i=!0;break}n+=e[t]}return""===r&&{value:n,index:t,tagClosed:i}}const l=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function h(e,t){const n=r.getAllMatches(e,l),i={};for(let e=0;e{"use strict";const r=n(12788),i={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function o(e){this.options=Object.assign({},i,e),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=u),this.processTextOrObjNode=s,this.options.format?(this.indentate=a,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function s(e,t,n){const r=this.j2x(e,n+1);return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,r.attrStr,n):this.buildObjectNode(r.val,t,r.attrStr,n)}function a(e){return this.options.indentBy.repeat(e)}function u(e){return!!e.startsWith(this.options.attributeNamePrefix)&&e.substr(this.attrPrefixLen)}o.prototype.build=function(e){return this.options.preserveOrder?r(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0).val)},o.prototype.j2x=function(e,t){let n="",r="";for(let i in e)if(void 0===e[i]);else if(null===e[i])"?"===i[0]?r+=this.indentate(t)+"<"+i+"?"+this.tagEndChar:r+=this.indentate(t)+"<"+i+"/"+this.tagEndChar;else if(e[i]instanceof Date)r+=this.buildTextValNode(e[i],i,"",t);else if("object"!=typeof e[i]){const o=this.isAttribute(i);if(o)n+=this.buildAttrPairStr(o,""+e[i]);else if(i===this.options.textNodeName){let t=this.options.tagValueProcessor(i,""+e[i]);r+=this.replaceEntitiesValue(t)}else r+=this.buildTextValNode(e[i],i,"",t)}else if(Array.isArray(e[i])){const n=e[i].length;let o="";for(let s=0;s"+e+i:!1!==this.options.commentPropName&&t===this.options.commentPropName&&0===o.length?this.indentate(r)+`\x3c!--${e}--\x3e`+this.newLine:this.indentate(r)+"<"+t+n+o+this.tagEndChar+e+this.indentate(r)+i}},o.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(r)+`\x3c!--${e}--\x3e`+this.newLine;if("?"===t[0])return this.indentate(r)+"<"+t+n+"?"+this.tagEndChar;{let i=this.options.tagValueProcessor(t,e);return i=this.replaceEntitiesValue(i),""===i?this.indentate(r)+"<"+t+n+this.closeTag(t)+this.tagEndChar:this.indentate(r)+"<"+t+n+">"+i+"0&&this.options.processEntities)for(let t=0;t{function t(e,s,a,u){let c="",d=!1;for(let l=0;l`,d=!1;continue}if(f===s.commentPropName){c+=u+`\x3c!--${h[f][0][s.textNodeName]}--\x3e`,d=!0;continue}if("?"===f[0]){const e=r(h[":@"],s),t="?xml"===f?"":u;let n=h[f][0][s.textNodeName];n=0!==n.length?" "+n:"",c+=t+`<${f}${n}${e}?>`,d=!0;continue}let m=u;""!==m&&(m+=s.indentBy);const g=u+`<${f}${r(h[":@"],s)}`,y=t(h[f],s,p,m);-1!==s.unpairedTags.indexOf(f)?s.suppressUnpairedNode?c+=g+">":c+=g+"/>":y&&0!==y.length||!s.suppressEmptyNode?y&&y.endsWith(">")?c+=g+`>${y}${u}`:(c+=g+">",y&&""!==u&&(y.includes("/>")||y.includes("`):c+=g+"/>",d=!0}return c}function n(e){const t=Object.keys(e);for(let e=0;e0&&t.processEntities)for(let n=0;n0&&(r="\n"),t(e,n,"",r)}},9400:(e,t,n)=>{const r=n(35334);function i(e,t){let n="";for(;t"===e[t]){if(h?"-"===e[t-1]&&"-"===e[t-2]&&(h=!1,r--):r--,0===r)break}else"["===e[t]?l=!0:f+=e[t];else{if(l&&s(e,t))t+=7,[entityName,val,t]=i(e,t+1),-1===val.indexOf("&")&&(n[d(entityName)]={regx:RegExp(`&${entityName};`,"g"),val});else if(l&&a(e,t))t+=8;else if(l&&u(e,t))t+=8;else if(l&&c(e,t))t+=9;else{if(!o)throw new Error("Invalid DOCTYPE");h=!0}r++,f=""}if(0!==r)throw new Error("Unclosed DOCTYPE")}return{entities:n,i:t}}},50460:(e,t)=>{const n={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,n){return e}};t.buildOptions=function(e){return Object.assign({},n,e)},t.defaultOptions=n},17680:(e,t,n)=>{"use strict";const r=n(35334),i=n(23832),o=n(9400),s=n(17983);"<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\/)(NAME)\\s*>))([^<]*)".replace(/NAME/g,r.nameRegexp);function a(e){const t=Object.keys(e);for(let n=0;n0)){s||(e=this.replaceEntitiesValue(e));const r=this.options.tagValueProcessor(t,e,n,i,o);if(null==r)return e;if(typeof r!=typeof e||r!==e)return r;if(this.options.trimValues)return w(e,this.options.parseTagValue,this.options.numberParseOptions);return e.trim()===e?w(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function c(e){if(this.options.removeNSPrefix){const t=e.split(":"),n="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=n+t[1])}return e}const d=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function l(e,t,n){if(!this.options.ignoreAttributes&&"string"==typeof e){const n=r.getAllMatches(e,d),i=n.length,o={};for(let e=0;e",a,"Closing Tag is not closed.");let i=e.substring(a+2,t).trim();if(this.options.removeNSPrefix){const e=i.indexOf(":");-1!==e&&(i=i.substr(e+1))}this.options.transformTagName&&(i=this.options.transformTagName(i)),n&&(r=this.saveTextToParentTag(r,n,s));const o=s.substring(s.lastIndexOf(".")+1);if(i&&-1!==this.options.unpairedTags.indexOf(i))throw new Error(`Unpaired tag can not be used as closing tag: `);let u=0;o&&-1!==this.options.unpairedTags.indexOf(o)?(u=s.lastIndexOf(".",s.lastIndexOf(".")-1),this.tagsNodeStack.pop()):u=s.lastIndexOf("."),s=s.substring(0,u),n=this.tagsNodeStack.pop(),r="",a=t}else if("?"===e[a+1]){let t=v(e,a,!1,"?>");if(!t)throw new Error("Pi Tag is not closed.");if(r=this.saveTextToParentTag(r,n,s),this.options.ignoreDeclaration&&"?xml"===t.tagName||this.options.ignorePiTags);else{const e=new i(t.tagName);e.add(this.options.textNodeName,""),t.tagName!==t.tagExp&&t.attrExpPresent&&(e[":@"]=this.buildAttributesMap(t.tagExp,s,t.tagName)),this.addChild(n,e,s)}a=t.closeIndex+1}else if("!--"===e.substr(a+1,3)){const t=y(e,"--\x3e",a+4,"Comment is not closed.");if(this.options.commentPropName){const i=e.substring(a+4,t-2);r=this.saveTextToParentTag(r,n,s),n.add(this.options.commentPropName,[{[this.options.textNodeName]:i}])}a=t}else if("!D"===e.substr(a+1,2)){const t=o(e,a);this.docTypeEntities=t.entities,a=t.i}else if("!["===e.substr(a+1,2)){const t=y(e,"]]>",a,"CDATA is not closed.")-2,i=e.substring(a+9,t);if(r=this.saveTextToParentTag(r,n,s),this.options.cdataPropName)n.add(this.options.cdataPropName,[{[this.options.textNodeName]:i}]);else{let e=this.parseTextData(i,n.tagname,s,!0,!1,!0);null==e&&(e=""),n.add(this.options.textNodeName,e)}a=t+2}else{let o=v(e,a,this.options.removeNSPrefix),u=o.tagName,c=o.tagExp,d=o.attrExpPresent,l=o.closeIndex;this.options.transformTagName&&(u=this.options.transformTagName(u)),n&&r&&"!xml"!==n.tagname&&(r=this.saveTextToParentTag(r,n,s,!1));const h=n;if(h&&-1!==this.options.unpairedTags.indexOf(h.tagname)&&(n=this.tagsNodeStack.pop(),s=s.substring(0,s.lastIndexOf("."))),u!==t.tagname&&(s+=s?"."+u:u),this.isItStopNode(this.options.stopNodes,s,u)){let t="";if(c.length>0&&c.lastIndexOf("/")===c.length-1)a=o.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(u))a=o.closeIndex;else{const n=this.readStopNodeData(e,u,l+1);if(!n)throw new Error(`Unexpected end of ${u}`);a=n.i,t=n.tagContent}const r=new i(u);u!==c&&d&&(r[":@"]=this.buildAttributesMap(c,s,u)),t&&(t=this.parseTextData(t,u,s,!0,d,!0,!0)),s=s.substr(0,s.lastIndexOf(".")),r.add(this.options.textNodeName,t),this.addChild(n,r,s)}else{if(c.length>0&&c.lastIndexOf("/")===c.length-1){"/"===u[u.length-1]?(u=u.substr(0,u.length-1),c=u):c=c.substr(0,c.length-1),this.options.transformTagName&&(u=this.options.transformTagName(u));const e=new i(u);u!==c&&d&&(e[":@"]=this.buildAttributesMap(c,s,u)),this.addChild(n,e,s),s=s.substr(0,s.lastIndexOf("."))}else{const e=new i(u);this.tagsNodeStack.push(n),u!==c&&d&&(e[":@"]=this.buildAttributesMap(c,s,u)),this.addChild(n,e,s),n=e}r="",a=l}}else r+=e[a]}return t.child};function f(e,t,n){const r=this.options.updateTag(t.tagname,n,t[":@"]);!1===r||("string"==typeof r?(t.tagname=r,e.addChild(t)):e.addChild(t))}const p=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const n=this.docTypeEntities[t];e=e.replace(n.regx,n.val)}for(let t in this.lastEntities){const n=this.lastEntities[t];e=e.replace(n.regex,n.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const n=this.htmlEntities[t];e=e.replace(n.regex,n.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function m(e,t,n,r){return e&&(void 0===r&&(r=0===Object.keys(t.child).length),void 0!==(e=this.parseTextData(e,t.tagname,n,!1,!!t[":@"]&&0!==Object.keys(t[":@"]).length,r))&&""!==e&&t.add(this.options.textNodeName,e),e=""),e}function g(e,t,n){const r="*."+n;for(const n in e){const i=e[n];if(r===i||t===i)return!0}return!1}function y(e,t,n,r){const i=e.indexOf(t,n);if(-1===i)throw new Error(r);return i+t.length-1}function v(e,t,n,r=">"){const i=function(e,t,n=">"){let r,i="";for(let o=t;o",n,`${t} is not closed`);if(e.substring(n+2,o).trim()===t&&(i--,0===i))return{tagContent:e.substring(r,n),i:o};n=o}else if("?"===e[n+1]){n=y(e,"?>",n+1,"StopNode is not closed.")}else if("!--"===e.substr(n+1,3)){n=y(e,"--\x3e",n+3,"StopNode is not closed.")}else if("!["===e.substr(n+1,2)){n=y(e,"]]>",n,"StopNode is not closed.")-2}else{const r=v(e,n,">");if(r){(r&&r.tagName)===t&&"/"!==r.tagExp[r.tagExp.length-1]&&i++,n=r.closeIndex}}}function w(e,t,n){if(t&&"string"==typeof e){const t=e.trim();return"true"===t||"false"!==t&&s(e,n)}return r.isExist(e)?e:""}e.exports=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"}},this.addExternalEntities=a,this.parseXml=h,this.parseTextData=u,this.resolveNameSpace=c,this.buildAttributesMap=l,this.isItStopNode=g,this.replaceEntitiesValue=p,this.readStopNodeData=b,this.saveTextToParentTag=m,this.addChild=f}}},32923:(e,t,n)=>{const{buildOptions:r}=n(50460),i=n(17680),{prettify:o}=n(75629),s=n(43918);e.exports=class{constructor(e){this.externalEntities={},this.options=r(e)}parse(e,t){if("string"==typeof e);else{if(!e.toString)throw new Error("XML data is accepted in String or Bytes[] form.");e=e.toString()}if(t){!0===t&&(t={});const n=s.validate(e,t);if(!0!==n)throw Error(`${n.err.msg}:${n.err.line}:${n.err.col}`)}const n=new i(this.options);n.addExternalEntities(this.externalEntities);const r=n.parseXml(e);return this.options.preserveOrder||void 0===r?r:o(r,this.options)}addEntity(e,t){if(-1!==t.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==e.indexOf("&")||-1!==e.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '");if("&"===t)throw new Error("An entity with value '&' is not permitted");this.externalEntities[e]=t}}},75629:(e,t)=>{"use strict";function n(e,t,s){let a;const u={};for(let c=0;c0&&(u[t.textNodeName]=a):void 0!==a&&(u[t.textNodeName]=a),u}function r(e){const t=Object.keys(e);for(let e=0;e{"use strict";e.exports=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}}},82682:(e,t,n)=>{"use strict";var r=n(69600),i=Object.prototype.toString,o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){if(!r(t))throw new TypeError("iterator must be a function");var s;arguments.length>=3&&(s=n),"[object Array]"===i.call(e)?function(e,t,n){for(var r=0,i=e.length;r{"use strict";var t=Object.prototype.toString,n=Math.max,r=function(e,t){for(var n=[],r=0;r{"use strict";var r=n(89353);e.exports=Function.prototype.bind||r},70453:(e,t,n)=>{"use strict";var r,i=n(69383),o=n(41237),s=n(79290),a=n(79538),u=n(58068),c=n(69675),d=n(35345),l=Function,h=function(e){try{return l('"use strict"; return ('+e+").constructor;")()}catch(e){}},f=Object.getOwnPropertyDescriptor;if(f)try{f({},"")}catch(e){f=null}var p=function(){throw new c},m=f?function(){try{return p}catch(e){try{return f(arguments,"callee").get}catch(e){return p}}}():p,g=n(64039)(),y=n(80024)(),v=Object.getPrototypeOf||(y?function(e){return e.__proto__}:null),b={},w="undefined"!=typeof Uint8Array&&v?v(Uint8Array):r,_={__proto__:null,"%AggregateError%":"undefined"==typeof AggregateError?r:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?r:ArrayBuffer,"%ArrayIteratorPrototype%":g&&v?v([][Symbol.iterator]()):r,"%AsyncFromSyncIteratorPrototype%":r,"%AsyncFunction%":b,"%AsyncGenerator%":b,"%AsyncGeneratorFunction%":b,"%AsyncIteratorPrototype%":b,"%Atomics%":"undefined"==typeof Atomics?r:Atomics,"%BigInt%":"undefined"==typeof BigInt?r:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?r:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?r:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?r:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":i,"%eval%":eval,"%EvalError%":o,"%Float32Array%":"undefined"==typeof Float32Array?r:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?r:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?r:FinalizationRegistry,"%Function%":l,"%GeneratorFunction%":b,"%Int8Array%":"undefined"==typeof Int8Array?r:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?r:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?r:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":g&&v?v(v([][Symbol.iterator]())):r,"%JSON%":"object"==typeof JSON?JSON:r,"%Map%":"undefined"==typeof Map?r:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&g&&v?v((new Map)[Symbol.iterator]()):r,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?r:Promise,"%Proxy%":"undefined"==typeof Proxy?r:Proxy,"%RangeError%":s,"%ReferenceError%":a,"%Reflect%":"undefined"==typeof Reflect?r:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?r:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&g&&v?v((new Set)[Symbol.iterator]()):r,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?r:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":g&&v?v(""[Symbol.iterator]()):r,"%Symbol%":g?Symbol:r,"%SyntaxError%":u,"%ThrowTypeError%":m,"%TypedArray%":w,"%TypeError%":c,"%Uint8Array%":"undefined"==typeof Uint8Array?r:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?r:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?r:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?r:Uint32Array,"%URIError%":d,"%WeakMap%":"undefined"==typeof WeakMap?r:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?r:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?r:WeakSet};if(v)try{null.error}catch(e){var x=v(v(e));_["%Error.prototype%"]=x}var D=function e(t){var n;if("%AsyncFunction%"===t)n=h("async function () {}");else if("%GeneratorFunction%"===t)n=h("function* () {}");else if("%AsyncGeneratorFunction%"===t)n=h("async function* () {}");else if("%AsyncGenerator%"===t){var r=e("%AsyncGeneratorFunction%");r&&(n=r.prototype)}else if("%AsyncIteratorPrototype%"===t){var i=e("%AsyncGenerator%");i&&v&&(n=v(i.prototype))}return _[t]=n,n},E={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},M=n(66743),A=n(9957),S=M.call(Function.call,Array.prototype.concat),C=M.call(Function.apply,Array.prototype.splice),k=M.call(Function.call,String.prototype.replace),T=M.call(Function.call,String.prototype.slice),I=M.call(Function.call,RegExp.prototype.exec),R=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,F=/\\(\\)?/g,O=function(e,t){var n,r=e;if(A(E,r)&&(r="%"+(n=E[r])[0]+"%"),A(_,r)){var i=_[r];if(i===b&&(i=D(r)),void 0===i&&!t)throw new c("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:n,name:r,value:i}}throw new u("intrinsic "+e+" does not exist!")};e.exports=function(e,t){if("string"!=typeof e||0===e.length)throw new c("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof t)throw new c('"allowMissing" argument must be a boolean');if(null===I(/^%?[^%]*%?$/,e))throw new u("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=function(e){var t=T(e,0,1),n=T(e,-1);if("%"===t&&"%"!==n)throw new u("invalid intrinsic syntax, expected closing `%`");if("%"===n&&"%"!==t)throw new u("invalid intrinsic syntax, expected opening `%`");var r=[];return k(e,R,(function(e,t,n,i){r[r.length]=n?k(i,F,"$1"):t||e})),r}(e),r=n.length>0?n[0]:"",i=O("%"+r+"%",t),o=i.name,s=i.value,a=!1,d=i.alias;d&&(r=d[0],C(n,S([0,1],d)));for(var l=1,h=!0;l=n.length){var y=f(s,p);s=(h=!!y)&&"get"in y&&!("originalValue"in y.get)?y.get:s[p]}else h=A(s,p),s=s[p];h&&!a&&(_[o]=s)}}return s}},75795:(e,t,n)=>{"use strict";var r=n(70453)("%Object.getOwnPropertyDescriptor%",!0);if(r)try{r([],"length")}catch(e){r=null}e.exports=r},30592:(e,t,n)=>{"use strict";var r=n(30655),i=function(){return!!r};i.hasArrayLengthDefineBug=function(){if(!r)return null;try{return 1!==r([],"length",{value:1}).length}catch(e){return!0}},e.exports=i},80024:e=>{"use strict";var t={__proto__:null,foo:{}},n=Object;e.exports=function(){return{__proto__:t}.foo===t.foo&&!(t instanceof n)}},64039:(e,t,n)=>{"use strict";var r="undefined"!=typeof Symbol&&Symbol,i=n(41333);e.exports=function(){return"function"==typeof r&&("function"==typeof Symbol&&("symbol"==typeof r("foo")&&("symbol"==typeof Symbol("bar")&&i())))}},41333:e=>{"use strict";e.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),n=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(n))return!1;for(t in e[t]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var r=Object.getOwnPropertySymbols(e);if(1!==r.length||r[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(e,t);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},49092:(e,t,n)=>{"use strict";var r=n(41333);e.exports=function(){return r()&&!!Symbol.toStringTag}},4729:(e,t,n)=>{"use strict";var r=n(92861).Buffer,i=n(88310).Transform;function o(e){i.call(this),this._block=r.allocUnsafe(e),this._blockSize=e,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}n(56698)(o,i),o.prototype._transform=function(e,t,n){var r=null;try{this.update(e,t)}catch(e){r=e}n(r)},o.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(e){t=e}e(t)},o.prototype.update=function(e,t){if(function(e,t){if(!r.isBuffer(e)&&"string"!=typeof e)throw new TypeError(t+" must be a string or a buffer")}(e,"Data"),this._finalized)throw new Error("Digest already called");r.isBuffer(e)||(e=r.from(e,t));for(var n=this._block,i=0;this._blockOffset+e.length-i>=this._blockSize;){for(var o=this._blockOffset;o0;++s)this._length[s]+=a,(a=this._length[s]/4294967296|0)>0&&(this._length[s]-=4294967296*a);return this},o.prototype._update=function(){throw new Error("_update is not implemented")},o.prototype.digest=function(e){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var t=this._digest();void 0!==e&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var n=0;n<4;++n)this._length[n]=0;return t},o.prototype._digest=function(){throw new Error("_digest is not implemented")},e.exports=o},77952:(e,t,n)=>{var r=t;r.utils=n(67426),r.common=n(66166),r.sha=n(46229),r.ripemd=n(46784),r.hmac=n(28948),r.sha1=r.sha.sha1,r.sha256=r.sha.sha256,r.sha224=r.sha.sha224,r.sha384=r.sha.sha384,r.sha512=r.sha.sha512,r.ripemd160=r.ripemd.ripemd160},66166:(e,t,n)=>{"use strict";var r=n(67426),i=n(43349);function o(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}t.BlockHash=o,o.prototype.update=function(e,t){if(e=r.toArray(e,t),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var n=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-n,e.length),0===this.pending.length&&(this.pending=null),e=r.join32(e,0,e.length-n,this.endian);for(var i=0;i>>24&255,r[i++]=e>>>16&255,r[i++]=e>>>8&255,r[i++]=255&e}else for(r[i++]=255&e,r[i++]=e>>>8&255,r[i++]=e>>>16&255,r[i++]=e>>>24&255,r[i++]=0,r[i++]=0,r[i++]=0,r[i++]=0,o=8;o{"use strict";var r=n(67426),i=n(43349);function o(e,t,n){if(!(this instanceof o))return new o(e,t,n);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(r.toArray(t,n))}e.exports=o,o.prototype._init=function(e){e.length>this.blockSize&&(e=(new this.Hash).update(e).digest()),i(e.length<=this.blockSize);for(var t=e.length;t{"use strict";var r=n(67426),i=n(66166),o=r.rotl32,s=r.sum32,a=r.sum32_3,u=r.sum32_4,c=i.BlockHash;function d(){if(!(this instanceof d))return new d;c.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function l(e,t,n,r){return e<=15?t^n^r:e<=31?t&n|~t&r:e<=47?(t|~n)^r:e<=63?t&r|n&~r:t^(n|~r)}function h(e){return e<=15?0:e<=31?1518500249:e<=47?1859775393:e<=63?2400959708:2840853838}function f(e){return e<=15?1352829926:e<=31?1548603684:e<=47?1836072691:e<=63?2053994217:0}r.inherits(d,c),t.ripemd160=d,d.blockSize=512,d.outSize=160,d.hmacStrength=192,d.padLength=64,d.prototype._update=function(e,t){for(var n=this.h[0],r=this.h[1],i=this.h[2],c=this.h[3],d=this.h[4],v=n,b=r,w=i,_=c,x=d,D=0;D<80;D++){var E=s(o(u(n,l(D,r,i,c),e[p[D]+t],h(D)),g[D]),d);n=d,d=c,c=o(i,10),i=r,r=E,E=s(o(u(v,l(79-D,b,w,_),e[m[D]+t],f(D)),y[D]),x),v=x,x=_,_=o(w,10),w=b,b=E}E=a(this.h[1],i,_),this.h[1]=a(this.h[2],c,x),this.h[2]=a(this.h[3],d,v),this.h[3]=a(this.h[4],n,b),this.h[4]=a(this.h[0],r,w),this.h[0]=E},d.prototype._digest=function(e){return"hex"===e?r.toHex32(this.h,"little"):r.split32(this.h,"little")};var p=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],m=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],g=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],y=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]},46229:(e,t,n)=>{"use strict";t.sha1=n(43917),t.sha224=n(47714),t.sha256=n(2287),t.sha384=n(21911),t.sha512=n(57766)},43917:(e,t,n)=>{"use strict";var r=n(67426),i=n(66166),o=n(66225),s=r.rotl32,a=r.sum32,u=r.sum32_5,c=o.ft_1,d=i.BlockHash,l=[1518500249,1859775393,2400959708,3395469782];function h(){if(!(this instanceof h))return new h;d.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}r.inherits(h,d),e.exports=h,h.blockSize=512,h.outSize=160,h.hmacStrength=80,h.padLength=64,h.prototype._update=function(e,t){for(var n=this.W,r=0;r<16;r++)n[r]=e[t+r];for(;r{"use strict";var r=n(67426),i=n(2287);function o(){if(!(this instanceof o))return new o;i.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}r.inherits(o,i),e.exports=o,o.blockSize=512,o.outSize=224,o.hmacStrength=192,o.padLength=64,o.prototype._digest=function(e){return"hex"===e?r.toHex32(this.h.slice(0,7),"big"):r.split32(this.h.slice(0,7),"big")}},2287:(e,t,n)=>{"use strict";var r=n(67426),i=n(66166),o=n(66225),s=n(43349),a=r.sum32,u=r.sum32_4,c=r.sum32_5,d=o.ch32,l=o.maj32,h=o.s0_256,f=o.s1_256,p=o.g0_256,m=o.g1_256,g=i.BlockHash,y=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function v(){if(!(this instanceof v))return new v;g.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=y,this.W=new Array(64)}r.inherits(v,g),e.exports=v,v.blockSize=512,v.outSize=256,v.hmacStrength=192,v.padLength=64,v.prototype._update=function(e,t){for(var n=this.W,r=0;r<16;r++)n[r]=e[t+r];for(;r{"use strict";var r=n(67426),i=n(57766);function o(){if(!(this instanceof o))return new o;i.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}r.inherits(o,i),e.exports=o,o.blockSize=1024,o.outSize=384,o.hmacStrength=192,o.padLength=128,o.prototype._digest=function(e){return"hex"===e?r.toHex32(this.h.slice(0,12),"big"):r.split32(this.h.slice(0,12),"big")}},57766:(e,t,n)=>{"use strict";var r=n(67426),i=n(66166),o=n(43349),s=r.rotr64_hi,a=r.rotr64_lo,u=r.shr64_hi,c=r.shr64_lo,d=r.sum64,l=r.sum64_hi,h=r.sum64_lo,f=r.sum64_4_hi,p=r.sum64_4_lo,m=r.sum64_5_hi,g=r.sum64_5_lo,y=i.BlockHash,v=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function b(){if(!(this instanceof b))return new b;y.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=v,this.W=new Array(160)}function w(e,t,n,r,i){var o=e&n^~e&i;return o<0&&(o+=4294967296),o}function _(e,t,n,r,i,o){var s=t&r^~t&o;return s<0&&(s+=4294967296),s}function x(e,t,n,r,i){var o=e&n^e&i^n&i;return o<0&&(o+=4294967296),o}function D(e,t,n,r,i,o){var s=t&r^t&o^r&o;return s<0&&(s+=4294967296),s}function E(e,t){var n=s(e,t,28)^s(t,e,2)^s(t,e,7);return n<0&&(n+=4294967296),n}function M(e,t){var n=a(e,t,28)^a(t,e,2)^a(t,e,7);return n<0&&(n+=4294967296),n}function A(e,t){var n=s(e,t,14)^s(e,t,18)^s(t,e,9);return n<0&&(n+=4294967296),n}function S(e,t){var n=a(e,t,14)^a(e,t,18)^a(t,e,9);return n<0&&(n+=4294967296),n}function C(e,t){var n=s(e,t,1)^s(e,t,8)^u(e,t,7);return n<0&&(n+=4294967296),n}function k(e,t){var n=a(e,t,1)^a(e,t,8)^c(e,t,7);return n<0&&(n+=4294967296),n}function T(e,t){var n=s(e,t,19)^s(t,e,29)^u(e,t,6);return n<0&&(n+=4294967296),n}function I(e,t){var n=a(e,t,19)^a(t,e,29)^c(e,t,6);return n<0&&(n+=4294967296),n}r.inherits(b,y),e.exports=b,b.blockSize=1024,b.outSize=512,b.hmacStrength=192,b.padLength=128,b.prototype._prepareBlock=function(e,t){for(var n=this.W,r=0;r<32;r++)n[r]=e[t+r];for(;r{"use strict";var r=n(67426).rotr32;function i(e,t,n){return e&t^~e&n}function o(e,t,n){return e&t^e&n^t&n}function s(e,t,n){return e^t^n}t.ft_1=function(e,t,n,r){return 0===e?i(t,n,r):1===e||3===e?s(t,n,r):2===e?o(t,n,r):void 0},t.ch32=i,t.maj32=o,t.p32=s,t.s0_256=function(e){return r(e,2)^r(e,13)^r(e,22)},t.s1_256=function(e){return r(e,6)^r(e,11)^r(e,25)},t.g0_256=function(e){return r(e,7)^r(e,18)^e>>>3},t.g1_256=function(e){return r(e,17)^r(e,19)^e>>>10}},67426:(e,t,n)=>{"use strict";var r=n(43349),i=n(56698);function o(e,t){return 55296==(64512&e.charCodeAt(t))&&(!(t<0||t+1>=e.length)&&56320==(64512&e.charCodeAt(t+1)))}function s(e){return(e>>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24)>>>0}function a(e){return 1===e.length?"0"+e:e}function u(e){return 7===e.length?"0"+e:6===e.length?"00"+e:5===e.length?"000"+e:4===e.length?"0000"+e:3===e.length?"00000"+e:2===e.length?"000000"+e:1===e.length?"0000000"+e:e}t.inherits=i,t.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var n=[];if("string"==typeof e)if(t){if("hex"===t)for((e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e),i=0;i>6|192,n[r++]=63&s|128):o(e,i)?(s=65536+((1023&s)<<10)+(1023&e.charCodeAt(++i)),n[r++]=s>>18|240,n[r++]=s>>12&63|128,n[r++]=s>>6&63|128,n[r++]=63&s|128):(n[r++]=s>>12|224,n[r++]=s>>6&63|128,n[r++]=63&s|128)}else for(i=0;i>>0}return s},t.split32=function(e,t){for(var n=new Array(4*e.length),r=0,i=0;r>>24,n[i+1]=o>>>16&255,n[i+2]=o>>>8&255,n[i+3]=255&o):(n[i+3]=o>>>24,n[i+2]=o>>>16&255,n[i+1]=o>>>8&255,n[i]=255&o)}return n},t.rotr32=function(e,t){return e>>>t|e<<32-t},t.rotl32=function(e,t){return e<>>32-t},t.sum32=function(e,t){return e+t>>>0},t.sum32_3=function(e,t,n){return e+t+n>>>0},t.sum32_4=function(e,t,n,r){return e+t+n+r>>>0},t.sum32_5=function(e,t,n,r,i){return e+t+n+r+i>>>0},t.sum64=function(e,t,n,r){var i=e[t],o=r+e[t+1]>>>0,s=(o>>0,e[t+1]=o},t.sum64_hi=function(e,t,n,r){return(t+r>>>0>>0},t.sum64_lo=function(e,t,n,r){return t+r>>>0},t.sum64_4_hi=function(e,t,n,r,i,o,s,a){var u=0,c=t;return u+=(c=c+r>>>0)>>0)>>0)>>0},t.sum64_4_lo=function(e,t,n,r,i,o,s,a){return t+r+o+a>>>0},t.sum64_5_hi=function(e,t,n,r,i,o,s,a,u,c){var d=0,l=t;return d+=(l=l+r>>>0)>>0)>>0)>>0)>>0},t.sum64_5_lo=function(e,t,n,r,i,o,s,a,u,c){return t+r+o+a+c>>>0},t.rotr64_hi=function(e,t,n){return(t<<32-n|e>>>n)>>>0},t.rotr64_lo=function(e,t,n){return(e<<32-n|t>>>n)>>>0},t.shr64_hi=function(e,t,n){return e>>>n},t.shr64_lo=function(e,t,n){return(e<<32-n|t>>>n)>>>0}},9957:(e,t,n)=>{"use strict";var r=Function.prototype.call,i=Object.prototype.hasOwnProperty,o=n(66743);e.exports=o.call(r,i)},32723:(e,t,n)=>{"use strict";var r=n(77952),i=n(64367),o=n(43349);function s(e){if(!(this instanceof s))return new s(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=i.toArray(e.entropy,e.entropyEnc||"hex"),n=i.toArray(e.nonce,e.nonceEnc||"hex"),r=i.toArray(e.pers,e.persEnc||"hex");o(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,n,r)}e.exports=s,s.prototype._init=function(e,t,n){var r=e.concat(t).concat(n);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(n||[])),this._reseed=1},s.prototype.generate=function(e,t,n,r){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof t&&(r=n,n=t,t=null),n&&(n=i.toArray(n,r||"hex"),this._update(n));for(var o=[];o.length{"use strict";t.Us=void 0;var r=n(34550);function i(e){var t=r.statusCodeToReasonPhrase[e.toString()];if(!t)throw new Error("Status code does not exist: "+e);return t}t.Us=i},34550:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.reasonPhraseToStatusCode=t.statusCodeToReasonPhrase=void 0,t.statusCodeToReasonPhrase={202:"Accepted",502:"Bad Gateway",400:"Bad Request",409:"Conflict",100:"Continue",201:"Created",417:"Expectation Failed",424:"Failed Dependency",403:"Forbidden",504:"Gateway Timeout",410:"Gone",505:"HTTP Version Not Supported",418:"I'm a teapot",419:"Insufficient Space on Resource",507:"Insufficient Storage",500:"Internal Server Error",411:"Length Required",423:"Locked",420:"Method Failure",405:"Method Not Allowed",301:"Moved Permanently",302:"Moved Temporarily",207:"Multi-Status",300:"Multiple Choices",511:"Network Authentication Required",204:"No Content",203:"Non Authoritative Information",406:"Not Acceptable",404:"Not Found",501:"Not Implemented",304:"Not Modified",200:"OK",206:"Partial Content",402:"Payment Required",308:"Permanent Redirect",412:"Precondition Failed",428:"Precondition Required",102:"Processing",103:"Early Hints",426:"Upgrade Required",407:"Proxy Authentication Required",431:"Request Header Fields Too Large",408:"Request Timeout",413:"Request Entity Too Large",414:"Request-URI Too Long",416:"Requested Range Not Satisfiable",205:"Reset Content",303:"See Other",503:"Service Unavailable",101:"Switching Protocols",307:"Temporary Redirect",429:"Too Many Requests",401:"Unauthorized",451:"Unavailable For Legal Reasons",422:"Unprocessable Entity",415:"Unsupported Media Type",305:"Use Proxy",421:"Misdirected Request"},t.reasonPhraseToStatusCode={Accepted:202,"Bad Gateway":502,"Bad Request":400,Conflict:409,Continue:100,Created:201,"Expectation Failed":417,"Failed Dependency":424,Forbidden:403,"Gateway Timeout":504,Gone:410,"HTTP Version Not Supported":505,"I'm a teapot":418,"Insufficient Space on Resource":419,"Insufficient Storage":507,"Internal Server Error":500,"Length Required":411,Locked:423,"Method Failure":420,"Method Not Allowed":405,"Moved Permanently":301,"Moved Temporarily":302,"Multi-Status":207,"Multiple Choices":300,"Network Authentication Required":511,"No Content":204,"Non Authoritative Information":203,"Not Acceptable":406,"Not Found":404,"Not Implemented":501,"Not Modified":304,OK:200,"Partial Content":206,"Payment Required":402,"Permanent Redirect":308,"Precondition Failed":412,"Precondition Required":428,Processing:102,"Early Hints":103,"Upgrade Required":426,"Proxy Authentication Required":407,"Request Header Fields Too Large":431,"Request Timeout":408,"Request Entity Too Large":413,"Request-URI Too Long":414,"Requested Range Not Satisfiable":416,"Reset Content":205,"See Other":303,"Service Unavailable":503,"Switching Protocols":101,"Temporary Redirect":307,"Too Many Requests":429,Unauthorized:401,"Unavailable For Legal Reasons":451,"Unprocessable Entity":422,"Unsupported Media Type":415,"Use Proxy":305,"Misdirected Request":421}},251:(e,t)=>{ +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ +t.read=function(e,t,n,r,i){var o,s,a=8*i-r-1,u=(1<>1,d=-7,l=n?i-1:0,h=n?-1:1,f=e[t+l];for(l+=h,o=f&(1<<-d)-1,f>>=-d,d+=a;d>0;o=256*o+e[t+l],l+=h,d-=8);for(s=o&(1<<-d)-1,o>>=-d,d+=r;d>0;s=256*s+e[t+l],l+=h,d-=8);if(0===o)o=1-c;else{if(o===u)return s?NaN:1/0*(f?-1:1);s+=Math.pow(2,r),o-=c}return(f?-1:1)*s*Math.pow(2,o-r)},t.write=function(e,t,n,r,i,o){var s,a,u,c=8*o-i-1,d=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=r?0:o-1,p=r?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=d):(s=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-s))<1&&(s--,u*=2),(t+=s+l>=1?h/u:h*Math.pow(2,1-l))*u>=2&&(s++,u/=2),s+l>=d?(a=0,s=d):s+l>=1?(a=(t*u-1)*Math.pow(2,i),s+=l):(a=t*Math.pow(2,l-1)*Math.pow(2,i),s=0));i>=8;e[n+f]=255&a,f+=p,a/=256,i-=8);for(s=s<0;e[n+f]=255&s,f+=p,s/=256,c-=8);e[n+f-p]|=128*m}},56698:e=>{"function"==typeof Object.create?e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}},47244:(e,t,n)=>{"use strict";var r=n(49092)(),i=n(38075)("Object.prototype.toString"),o=function(e){return!(r&&e&&"object"==typeof e&&Symbol.toStringTag in e)&&"[object Arguments]"===i(e)},s=function(e){return!!o(e)||null!==e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&"[object Array]"!==i(e)&&"[object Function]"===i(e.callee)},a=function(){return o(arguments)}();o.isLegacyArguments=s,e.exports=a?o:s},69600:e=>{"use strict";var t,n,r=Function.prototype.toString,i="object"==typeof Reflect&&null!==Reflect&&Reflect.apply;if("function"==typeof i&&"function"==typeof Object.defineProperty)try{t=Object.defineProperty({},"length",{get:function(){throw n}}),n={},i((function(){throw 42}),null,t)}catch(e){e!==n&&(i=null)}else i=null;var o=/^\s*class\b/,s=function(e){try{var t=r.call(e);return o.test(t)}catch(e){return!1}},a=function(e){try{return!s(e)&&(r.call(e),!0)}catch(e){return!1}},u=Object.prototype.toString,c="function"==typeof Symbol&&!!Symbol.toStringTag,d=!(0 in[,]),l=function(){return!1};if("object"==typeof document){var h=document.all;u.call(h)===u.call(document.all)&&(l=function(e){if((d||!e)&&(void 0===e||"object"==typeof e))try{var t=u.call(e);return("[object HTMLAllCollection]"===t||"[object HTML document.all class]"===t||"[object HTMLCollection]"===t||"[object Object]"===t)&&null==e("")}catch(e){}return!1})}e.exports=i?function(e){if(l(e))return!0;if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;try{i(e,null,t)}catch(e){if(e!==n)return!1}return!s(e)&&a(e)}:function(e){if(l(e))return!0;if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;if(c)return a(e);if(s(e))return!1;var t=u.call(e);return!("[object Function]"!==t&&"[object GeneratorFunction]"!==t&&!/^\[object HTML/.test(t))&&a(e)}},48184:(e,t,n)=>{"use strict";var r,i=Object.prototype.toString,o=Function.prototype.toString,s=/^\s*(?:function)?\*/,a=n(49092)(),u=Object.getPrototypeOf;e.exports=function(e){if("function"!=typeof e)return!1;if(s.test(o.call(e)))return!0;if(!a)return"[object GeneratorFunction]"===i.call(e);if(!u)return!1;if(void 0===r){var t=function(){if(!a)return!1;try{return Function("return function*() {}")()}catch(e){}}();r=!!t&&u(t)}return u(e)===r}},35680:(e,t,n)=>{"use strict";var r=n(25767);e.exports=function(e){return!!r(e)}},64634:e=>{var t={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==t.call(e)}},37260:(e,t,n)=>{var r=n(25747);e.exports=function(e,t){t=t||{};var n=r.decode(e,t);if(!n)return null;var i=n.payload;if("string"==typeof i)try{var o=JSON.parse(i);null!==o&&"object"==typeof o&&(i=o)}catch(e){}return!0===t.complete?{header:n.header,payload:i,signature:n.signature}:i}},44040:(e,t,n)=>{e.exports={decode:n(37260),verify:n(91691),sign:n(37651),JsonWebTokenError:n(81741),NotBeforeError:n(13726),TokenExpiredError:n(18980)}},81741:e=>{var t=function(e,t){Error.call(this,e),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor),this.name="JsonWebTokenError",this.message=e,t&&(this.inner=t)};(t.prototype=Object.create(Error.prototype)).constructor=t,e.exports=t},13726:(e,t,n)=>{var r=n(81741),i=function(e,t){r.call(this,e),this.name="NotBeforeError",this.date=t};(i.prototype=Object.create(r.prototype)).constructor=i,e.exports=i},18980:(e,t,n)=>{var r=n(81741),i=function(e,t){r.call(this,e),this.name="TokenExpiredError",this.expiredAt=t};(i.prototype=Object.create(r.prototype)).constructor=i,e.exports=i},1977:(e,t,n)=>{var r=n(65606);const i=n(99589);e.exports=i.satisfies(r.version,">=15.7.0")},74977:(e,t,n)=>{var r=n(65606),i=n(99589);e.exports=i.satisfies(r.version,"^6.12.0 || >=8.0.0")},34623:(e,t,n)=>{var r=n(65606);const i=n(99589);e.exports=i.satisfies(r.version,">=16.9.0")},40855:(e,t,n)=>{var r=n(6585);e.exports=function(e,t){var n=t||Math.floor(Date.now()/1e3);if("string"==typeof e){var i=r(e);if(void 0===i)return;return Math.floor(n+i/1e3)}return"number"==typeof e?n+e:void 0}},47019:(e,t,n)=>{const r=n(1977),i=n(34623),o={ec:["ES256","ES384","ES512"],rsa:["RS256","PS256","RS384","PS384","RS512","PS512"],"rsa-pss":["PS256","PS384","PS512"]},s={ES256:"prime256v1",ES384:"secp384r1",ES512:"secp521r1"};e.exports=function(e,t){if(!e||!t)return;const n=t.asymmetricKeyType;if(!n)return;const a=o[n];if(!a)throw new Error(`Unknown key type "${n}".`);if(!a.includes(e))throw new Error(`"alg" parameter for "${n}" key type must be one of: ${a.join(", ")}.`);if(r)switch(n){case"ec":const n=t.asymmetricKeyDetails.namedCurve,r=s[e];if(n!==r)throw new Error(`"alg" parameter "${e}" requires curve "${r}".`);break;case"rsa-pss":if(i){const n=parseInt(e.slice(-3),10),{hashAlgorithm:r,mgf1HashAlgorithm:i,saltLength:o}=t.asymmetricKeyDetails;if(r!==`sha${n}`||i!==r)throw new Error(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of "alg" ${e}.`);if(void 0!==o&&o>n>>3)throw new Error(`Invalid key for this operation, its RSA-PSS parameter saltLength does not meet the requirements of "alg" ${e}.`)}}}},37651:(e,t,n)=>{var r=n(48287).Buffer;const i=n(40855),o=n(74977),s=n(47019),a=n(25747),u=n(46111),c=n(87914),d=n(58928),l=n(73639),h=n(79001),f=n(45931),p=n(67083),{KeyObject:m,createSecretKey:g,createPrivateKey:y}=n(91565),v=["RS256","RS384","RS512","ES256","ES384","ES512","HS256","HS384","HS512","none"];o&&v.splice(3,0,"PS256","PS384","PS512");const b={expiresIn:{isValid:function(e){return d(e)||f(e)&&e},message:'"expiresIn" should be a number of seconds or string representing a timespan'},notBefore:{isValid:function(e){return d(e)||f(e)&&e},message:'"notBefore" should be a number of seconds or string representing a timespan'},audience:{isValid:function(e){return f(e)||Array.isArray(e)},message:'"audience" must be a string or array'},algorithm:{isValid:u.bind(null,v),message:'"algorithm" must be a valid string enum value'},header:{isValid:h,message:'"header" must be an object'},encoding:{isValid:f,message:'"encoding" must be a string'},issuer:{isValid:f,message:'"issuer" must be a string'},subject:{isValid:f,message:'"subject" must be a string'},jwtid:{isValid:f,message:'"jwtid" must be a string'},noTimestamp:{isValid:c,message:'"noTimestamp" must be a boolean'},keyid:{isValid:f,message:'"keyid" must be a string'},mutatePayload:{isValid:c,message:'"mutatePayload" must be a boolean'},allowInsecureKeySizes:{isValid:c,message:'"allowInsecureKeySizes" must be a boolean'},allowInvalidAsymmetricKeyTypes:{isValid:c,message:'"allowInvalidAsymmetricKeyTypes" must be a boolean'}},w={iat:{isValid:l,message:'"iat" should be a number of seconds'},exp:{isValid:l,message:'"exp" should be a number of seconds'},nbf:{isValid:l,message:'"nbf" should be a number of seconds'}};function _(e,t,n,r){if(!h(n))throw new Error('Expected "'+r+'" to be a plain object.');Object.keys(n).forEach((function(i){const o=e[i];if(o){if(!o.isValid(n[i]))throw new Error(o.message)}else if(!t)throw new Error('"'+i+'" is not allowed in "'+r+'"')}))}const x={audience:"aud",issuer:"iss",subject:"sub",jwtid:"jti"},D=["expiresIn","notBefore","noTimestamp","audience","issuer","subject","jwtid"];e.exports=function(e,t,n,o){"function"==typeof n?(o=n,n={}):n=n||{};const u="object"==typeof e&&!r.isBuffer(e),c=Object.assign({alg:n.algorithm||"HS256",typ:u?"JWT":void 0,kid:n.keyid},n.header);function d(e){if(o)return o(e);throw e}if(!t&&"none"!==n.algorithm)return d(new Error("secretOrPrivateKey must have a value"));if(null!=t&&!(t instanceof m))try{t=y(t)}catch(e){try{t=g("string"==typeof t?r.from(t):t)}catch(e){return d(new Error("secretOrPrivateKey is not valid key material"))}}if(c.alg.startsWith("HS")&&"secret"!==t.type)return d(new Error(`secretOrPrivateKey must be a symmetric key when using ${c.alg}`));if(/^(?:RS|PS|ES)/.test(c.alg)){if("private"!==t.type)return d(new Error(`secretOrPrivateKey must be an asymmetric key when using ${c.alg}`));if(!n.allowInsecureKeySizes&&!c.alg.startsWith("ES")&&void 0!==t.asymmetricKeyDetails&&t.asymmetricKeyDetails.modulusLength<2048)return d(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${c.alg}`))}if(void 0===e)return d(new Error("payload is required"));if(u){try{!function(e){_(w,!0,e,"payload")}(e)}catch(e){return d(e)}n.mutatePayload||(e=Object.assign({},e))}else{const t=D.filter((function(e){return void 0!==n[e]}));if(t.length>0)return d(new Error("invalid "+t.join(",")+" option for "+typeof e+" payload"))}if(void 0!==e.exp&&void 0!==n.expiresIn)return d(new Error('Bad "options.expiresIn" option the payload already has an "exp" property.'));if(void 0!==e.nbf&&void 0!==n.notBefore)return d(new Error('Bad "options.notBefore" option the payload already has an "nbf" property.'));try{!function(e){_(b,!1,e,"options")}(n)}catch(e){return d(e)}if(!n.allowInvalidAsymmetricKeyTypes)try{s(c.alg,t)}catch(e){return d(e)}const l=e.iat||Math.floor(Date.now()/1e3);if(n.noTimestamp?delete e.iat:u&&(e.iat=l),void 0!==n.notBefore){try{e.nbf=i(n.notBefore,l)}catch(e){return d(e)}if(void 0===e.nbf)return d(new Error('"notBefore" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60'))}if(void 0!==n.expiresIn&&"object"==typeof e){try{e.exp=i(n.expiresIn,l)}catch(e){return d(e)}if(void 0===e.exp)return d(new Error('"expiresIn" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60'))}Object.keys(x).forEach((function(t){const r=x[t];if(void 0!==n[t]){if(void 0!==e[r])return d(new Error('Bad "options.'+t+'" option. The payload already has an "'+r+'" property.'));e[r]=n[t]}}));const h=n.encoding||"utf8";if("function"!=typeof o){let r=a.sign({header:c,payload:e,secret:t,encoding:h});if(!n.allowInsecureKeySizes&&/^(?:RS|PS)/.test(c.alg)&&r.length<256)throw new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${c.alg}`);return r}o=o&&p(o),a.createSign({header:c,privateKey:t,payload:e,encoding:h}).once("error",o).once("done",(function(e){if(!n.allowInsecureKeySizes&&/^(?:RS|PS)/.test(c.alg)&&e.length<256)return o(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${c.alg}`));o(null,e)}))}},91691:(e,t,n)=>{var r=n(48287).Buffer;const i=n(81741),o=n(13726),s=n(18980),a=n(37260),u=n(40855),c=n(47019),d=n(74977),l=n(25747),{KeyObject:h,createSecretKey:f,createPublicKey:p}=n(91565),m=["RS256","RS384","RS512"],g=["ES256","ES384","ES512"],y=["RS256","RS384","RS512"],v=["HS256","HS384","HS512"];d&&(m.splice(m.length,0,"PS256","PS384","PS512"),y.splice(y.length,0,"PS256","PS384","PS512")),e.exports=function(e,t,n,d){let b;if("function"!=typeof n||d||(d=n,n={}),n||(n={}),n=Object.assign({},n),b=d||function(e,t){if(e)throw e;return t},n.clockTimestamp&&"number"!=typeof n.clockTimestamp)return b(new i("clockTimestamp must be a number"));if(void 0!==n.nonce&&("string"!=typeof n.nonce||""===n.nonce.trim()))return b(new i("nonce must be a non-empty string"));if(void 0!==n.allowInvalidAsymmetricKeyTypes&&"boolean"!=typeof n.allowInvalidAsymmetricKeyTypes)return b(new i("allowInvalidAsymmetricKeyTypes must be a boolean"));const w=n.clockTimestamp||Math.floor(Date.now()/1e3);if(!e)return b(new i("jwt must be provided"));if("string"!=typeof e)return b(new i("jwt must be a string"));const _=e.split(".");if(3!==_.length)return b(new i("jwt malformed"));let x;try{x=a(e,{complete:!0})}catch(e){return b(e)}if(!x)return b(new i("invalid token"));const D=x.header;let E;if("function"==typeof t){if(!d)return b(new i("verify must be called asynchronous if secret or public key is provided as a callback"));E=t}else E=function(e,n){return n(null,t)};return E(D,(function(t,a){if(t)return b(new i("error in secret or public key callback: "+t.message));const d=""!==_[2].trim();if(!d&&a)return b(new i("jwt signature is required"));if(d&&!a)return b(new i("secret or public key must be provided"));if(!d&&!n.algorithms)return b(new i('please specify "none" in "algorithms" to verify unsigned tokens'));if(null!=a&&!(a instanceof h))try{a=p(a)}catch(e){try{a=f("string"==typeof a?r.from(a):a)}catch(e){return b(new i("secretOrPublicKey is not valid key material"))}}if(n.algorithms||("secret"===a.type?n.algorithms=v:["rsa","rsa-pss"].includes(a.asymmetricKeyType)?n.algorithms=y:"ec"===a.asymmetricKeyType?n.algorithms=g:n.algorithms=m),-1===n.algorithms.indexOf(x.header.alg))return b(new i("invalid algorithm"));if(D.alg.startsWith("HS")&&"secret"!==a.type)return b(new i(`secretOrPublicKey must be a symmetric key when using ${D.alg}`));if(/^(?:RS|PS|ES)/.test(D.alg)&&"public"!==a.type)return b(new i(`secretOrPublicKey must be an asymmetric key when using ${D.alg}`));if(!n.allowInvalidAsymmetricKeyTypes)try{c(D.alg,a)}catch(e){return b(e)}let E;try{E=l.verify(e,x.header.alg,a)}catch(e){return b(e)}if(!E)return b(new i("invalid signature"));const M=x.payload;if(void 0!==M.nbf&&!n.ignoreNotBefore){if("number"!=typeof M.nbf)return b(new i("invalid nbf value"));if(M.nbf>w+(n.clockTolerance||0))return b(new o("jwt not active",new Date(1e3*M.nbf)))}if(void 0!==M.exp&&!n.ignoreExpiration){if("number"!=typeof M.exp)return b(new i("invalid exp value"));if(w>=M.exp+(n.clockTolerance||0))return b(new s("jwt expired",new Date(1e3*M.exp)))}if(n.audience){const e=Array.isArray(n.audience)?n.audience:[n.audience];if(!(Array.isArray(M.aud)?M.aud:[M.aud]).some((function(t){return e.some((function(e){return e instanceof RegExp?e.test(t):e===t}))})))return b(new i("jwt audience invalid. expected: "+e.join(" or ")))}if(n.issuer){if("string"==typeof n.issuer&&M.iss!==n.issuer||Array.isArray(n.issuer)&&-1===n.issuer.indexOf(M.iss))return b(new i("jwt issuer invalid. expected: "+n.issuer))}if(n.subject&&M.sub!==n.subject)return b(new i("jwt subject invalid. expected: "+n.subject));if(n.jwtid&&M.jti!==n.jwtid)return b(new i("jwt jwtid invalid. expected: "+n.jwtid));if(n.nonce&&M.nonce!==n.nonce)return b(new i("jwt nonce invalid. expected: "+n.nonce));if(n.maxAge){if("number"!=typeof M.iat)return b(new i("iat required when maxAge is specified"));const e=u(n.maxAge,M.iat);if(void 0===e)return b(new i('"maxAge" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60'));if(w>=e+(n.clockTolerance||0))return b(new s("maxAge exceeded",new Date(1e3*e)))}if(!0===n.complete){const e=x.signature;return b(null,{header:D,payload:M,signature:e})}return b(null,M)}))}},58789:(e,t,n)=>{var r=n(41045),i=n(92861).Buffer,o=n(91565),s=n(22010),a=n(40537),u="secret must be a string or buffer",c="key must be a string or a buffer",d="key must be a string, a buffer or an object",l="function"==typeof o.createPublicKey;function h(e){if(!i.isBuffer(e)&&"string"!=typeof e){if(!l)throw g(c);if("object"!=typeof e)throw g(c);if("string"!=typeof e.type)throw g(c);if("string"!=typeof e.asymmetricKeyType)throw g(c);if("function"!=typeof e.export)throw g(c)}}function f(e){if(!i.isBuffer(e)&&"string"!=typeof e&&"object"!=typeof e)throw g(d)}function p(e){return e.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function m(e){var t=4-(e=e.toString()).length%4;if(4!==t)for(var n=0;n{var r=n(13387),i=n(57599);t.ALGORITHMS=["HS256","HS384","HS512","RS256","RS384","RS512","PS256","PS384","PS512","ES256","ES384","ES512"],t.sign=r.sign,t.verify=i.verify,t.decode=i.decode,t.isValid=i.isValid,t.createSign=function(e){return new r(e)},t.createVerify=function(e){return new i(e)}},18948:(e,t,n)=>{var r=n(65606),i=n(92861).Buffer,o=n(88310);function s(e){if(this.buffer=null,this.writable=!0,this.readable=!0,!e)return this.buffer=i.alloc(0),this;if("function"==typeof e.pipe)return this.buffer=i.alloc(0),e.pipe(this),this;if(e.length||"object"==typeof e)return this.buffer=e,this.writable=!1,r.nextTick(function(){this.emit("end",e),this.readable=!1,this.emit("close")}.bind(this)),this;throw new TypeError("Unexpected data type ("+typeof e+")")}n(40537).inherits(s,o),s.prototype.write=function(e){this.buffer=i.concat([this.buffer,i.from(e)]),this.emit("data",e)},s.prototype.end=function(e){e&&this.write(e),this.emit("end",e),this.emit("close"),this.writable=!1,this.readable=!1},e.exports=s},13387:(e,t,n)=>{var r=n(92861).Buffer,i=n(18948),o=n(58789),s=n(88310),a=n(82851),u=n(40537);function c(e,t){return r.from(e,t).toString("base64").replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function d(e){var t=e.header,n=e.payload,r=e.secret||e.privateKey,i=e.encoding,s=o(t.alg),d=function(e,t,n){n=n||"utf8";var r=c(a(e),"binary"),i=c(a(t),n);return u.format("%s.%s",r,i)}(t,n,i),l=s.sign(d,r);return u.format("%s.%s",d,l)}function l(e){var t=e.secret||e.privateKey||e.key,n=new i(t);this.readable=!0,this.header=e.header,this.encoding=e.encoding,this.secret=this.privateKey=this.key=n,this.payload=new i(e.payload),this.secret.once("close",function(){!this.payload.writable&&this.readable&&this.sign()}.bind(this)),this.payload.once("close",function(){!this.secret.writable&&this.readable&&this.sign()}.bind(this))}u.inherits(l,s),l.prototype.sign=function(){try{var e=d({header:this.header,payload:this.payload.buffer,secret:this.secret.buffer,encoding:this.encoding});return this.emit("done",e),this.emit("data",e),this.emit("end"),this.readable=!1,e}catch(e){this.readable=!1,this.emit("error",e),this.emit("close")}},l.sign=d,e.exports=l},82851:(e,t,n)=>{var r=n(48287).Buffer;e.exports=function(e){return"string"==typeof e?e:"number"==typeof e||r.isBuffer(e)?e.toString():JSON.stringify(e)}},57599:(e,t,n)=>{var r=n(92861).Buffer,i=n(18948),o=n(58789),s=n(88310),a=n(82851),u=n(40537),c=/^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.([a-zA-Z0-9\-_]+)?$/;function d(e){if(function(e){return"[object Object]"===Object.prototype.toString.call(e)}(e))return e;try{return JSON.parse(e)}catch(e){return}}function l(e){var t=e.split(".",1)[0];return d(r.from(t,"base64").toString("binary"))}function h(e){return e.split(".")[2]}function f(e){return c.test(e)&&!!l(e)}function p(e,t,n){if(!t){var r=new Error("Missing algorithm parameter for jws.verify");throw r.code="MISSING_ALGORITHM",r}var i=h(e=a(e)),s=function(e){return e.split(".",2).join(".")}(e);return o(t).verify(s,i,n)}function m(e,t){if(t=t||{},!f(e=a(e)))return null;var n=l(e);if(!n)return null;var i=function(e,t){t=t||"utf8";var n=e.split(".")[1];return r.from(n,"base64").toString(t)}(e);return("JWT"===n.typ||t.json)&&(i=JSON.parse(i,t.encoding)),{header:n,payload:i,signature:h(e)}}function g(e){var t=(e=e||{}).secret||e.publicKey||e.key,n=new i(t);this.readable=!0,this.algorithm=e.algorithm,this.encoding=e.encoding,this.secret=this.publicKey=this.key=n,this.signature=new i(e.signature),this.secret.once("close",function(){!this.signature.writable&&this.readable&&this.verify()}.bind(this)),this.signature.once("close",function(){!this.secret.writable&&this.readable&&this.verify()}.bind(this))}u.inherits(g,s),g.prototype.verify=function(){try{var e=p(this.signature.buffer,this.algorithm,this.key.buffer),t=m(this.signature.buffer,this.encoding);return this.emit("done",e,t),this.emit("data",e),this.emit("end"),this.readable=!1,e}catch(e){this.readable=!1,this.emit("error",e),this.emit("close")}},g.decode=m,g.isValid=f,g.verify=p,e.exports=g},98860:function(e,t,n){!function(e,t){"use strict";function n(e){return n.result?n.result:e&&"function"==typeof e.getSerializer?(n.result=e.getSerializer(),n.result):Promise.reject(new Error("localforage.getSerializer() was not available! localforage v1.4+ is required!"))}function r(e,t){return t&&e.then((function(e){t(null,e)}),(function(e){t(e)})),e}function i(e,t){var n=this.getItem(e).then((function(t){return{key:e,value:t}}));return r(n,t),n}function o(e){var t=this,n=new Promise((function(n,r){for(var o=[],s=0,a=e.length;st?1:0}var r=new Promise((function(r,i){t.ready().then((function(){var o=t._dbInfo,s=o.db.transaction(o.storeName,"readonly").objectStore(o.storeName),a=e.sort(n),c=u.bound(e[0],e[e.length-1],!1,!1),d=s.openCursor(c),l={},h=0;d.onsuccess=function(){var e=d.result;if(e){for(var t=e.key;t>a[h];)if(++h===a.length)return void r(l);if(t===a[h]){var n=e.value;void 0===n&&(n=null),l[t]=n,e.continue()}else e.continue(a[h])}else r(l)},d.onerror=function(){i(d.error)}})).catch(i)}));return r}function d(e){var t=this,r=new Promise((function(r,i){t.ready().then((function(){return n(t)})).then((function(n){var o=t._dbInfo;o.db.transaction((function(t){for(var s=new Array(e.length),a=0,u=e.length;a{ +/*! + localForage -- Offline Storage, Improved + Version 1.10.0 + https://localforage.github.io/localForage + (c) 2013-2017 Mozilla, Apache License 2.0 +*/ +e.exports=function e(t,n,r){function i(s,a){if(!n[s]){if(!t[s]){if(o)return o(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var c=n[s]={exports:{}};t[s][0].call(c.exports,(function(e){var n=t[s][1][e];return i(n||e)}),c,c.exports,e,t,n,r)}return n[s].exports}for(var o=void 0,s=0;s=43)}})).catch((function(){return!1}))}function x(e){return"boolean"==typeof m?c.resolve(m):_(e).then((function(e){return m=e}))}function D(e){var t=g[e.name],n={};n.promise=new c((function(e,t){n.resolve=e,n.reject=t})),t.deferredOperations.push(n),t.dbReady?t.dbReady=t.dbReady.then((function(){return n.promise})):t.dbReady=n.promise}function E(e){var t=g[e.name].deferredOperations.pop();if(t)return t.resolve(),t.promise}function M(e,t){var n=g[e.name].deferredOperations.pop();if(n)return n.reject(t),n.promise}function A(e,t){return new c((function(n,r){if(g[e.name]=g[e.name]||P(),e.db){if(!t)return n(e.db);D(e),e.db.close()}var i=[e.name];t&&i.push(e.version);var o=s.open.apply(s,i);t&&(o.onupgradeneeded=function(t){var n=o.result;try{n.createObjectStore(e.storeName),t.oldVersion<=1&&n.createObjectStore(p)}catch(n){if("ConstraintError"!==n.name)throw n;console.warn('The database "'+e.name+'" has been upgraded from version '+t.oldVersion+" to version "+t.newVersion+', but the storage "'+e.storeName+'" already exists.')}}),o.onerror=function(e){e.preventDefault(),r(o.error)},o.onsuccess=function(){var t=o.result;t.onversionchange=function(e){e.target.close()},n(t),E(e)}}))}function S(e){return A(e,!1)}function C(e){return A(e,!0)}function k(e,t){if(!e.db)return!0;var n=!e.db.objectStoreNames.contains(e.storeName),r=e.versione.db.version;if(r&&(e.version!==t&&console.warn('The database "'+e.name+"\" can't be downgraded from version "+e.db.version+" to version "+e.version+"."),e.version=e.db.version),i||n){if(n){var o=e.db.version+1;o>e.version&&(e.version=o)}return!0}return!1}function T(e){return new c((function(t,n){var r=new FileReader;r.onerror=n,r.onloadend=function(n){var r=btoa(n.target.result||"");t({__local_forage_encoded_blob:!0,data:r,type:e.type})},r.readAsBinaryString(e)}))}function I(e){return u([w(atob(e.data))],{type:e.type})}function R(e){return e&&e.__local_forage_encoded_blob}function F(e){var t=this,n=t._initReady().then((function(){var e=g[t._dbInfo.name];if(e&&e.dbReady)return e.dbReady}));return l(n,e,e),n}function O(e){D(e);for(var t=g[e.name],n=t.forages,r=0;r0&&(!e.db||"InvalidStateError"===i.name||"NotFoundError"===i.name))return c.resolve().then((function(){if(!e.db||"NotFoundError"===i.name&&!e.db.objectStoreNames.contains(e.storeName)&&e.version<=e.db.version)return e.db&&(e.version=e.db.version+1),C(e)})).then((function(){return O(e).then((function(){B(e,t,n,r-1)}))})).catch(n);n(i)}}function P(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function N(e){var t=this,n={db:null};if(e)for(var r in e)n[r]=e[r];var i=g[n.name];i||(i=P(),g[n.name]=i),i.forages.push(t),t._initReady||(t._initReady=t.ready,t.ready=F);var o=[];function s(){return c.resolve()}for(var a=0;a>4,d[u++]=(15&r)<<4|i>>2,d[u++]=(3&i)<<6|63&o;return c}function pe(e){var t,n=new Uint8Array(e),r="";for(t=0;t>2],r+=Y[(3&n[t])<<4|n[t+1]>>4],r+=Y[(15&n[t+1])<<2|n[t+2]>>6],r+=Y[63&n[t+2]];return n.length%3==2?r=r.substring(0,r.length-1)+"=":n.length%3==1&&(r=r.substring(0,r.length-2)+"=="),r}function me(e,t){var n="";if(e&&(n=he.call(e)),e&&("[object ArrayBuffer]"===n||e.buffer&&"[object ArrayBuffer]"===he.call(e.buffer))){var r,i=X;e instanceof ArrayBuffer?(r=e,i+=ee):(r=e.buffer,"[object Int8Array]"===n?i+=ne:"[object Uint8Array]"===n?i+=re:"[object Uint8ClampedArray]"===n?i+=ie:"[object Int16Array]"===n?i+=oe:"[object Uint16Array]"===n?i+=ae:"[object Int32Array]"===n?i+=se:"[object Uint32Array]"===n?i+=ue:"[object Float32Array]"===n?i+=ce:"[object Float64Array]"===n?i+=de:t(new Error("Failed to get type for BinaryArray"))),t(i+pe(r))}else if("[object Blob]"===n){var o=new FileReader;o.onload=function(){var n=Z+e.type+"~"+pe(this.result);t(X+te+n)},o.readAsArrayBuffer(e)}else try{t(JSON.stringify(e))}catch(n){console.error("Couldn't convert value into a JSON string: ",e),t(null,n)}}function ge(e){if(e.substring(0,Q)!==X)return JSON.parse(e);var t,n=e.substring(le),r=e.substring(Q,le);if(r===te&&J.test(n)){var i=n.match(J);t=i[1],n=n.substring(i[0].length)}var o=fe(n);switch(r){case ee:return o;case te:return u([o],{type:t});case ne:return new Int8Array(o);case re:return new Uint8Array(o);case ie:return new Uint8ClampedArray(o);case oe:return new Int16Array(o);case ae:return new Uint16Array(o);case se:return new Int32Array(o);case ue:return new Uint32Array(o);case ce:return new Float32Array(o);case de:return new Float64Array(o);default:throw new Error("Unkown type: "+r)}}var ye={serialize:me,deserialize:ge,stringToBuffer:fe,bufferToString:pe};function ve(e,t,n,r){e.executeSql("CREATE TABLE IF NOT EXISTS "+t.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],n,r)}function be(e){var t=this,n={db:null};if(e)for(var r in e)n[r]="string"!=typeof e[r]?e[r].toString():e[r];var i=new c((function(e,r){try{n.db=openDatabase(n.name,String(n.version),n.description,n.size)}catch(e){return r(e)}n.db.transaction((function(i){ve(i,n,(function(){t._dbInfo=n,e()}),(function(e,t){r(t)}))}),r)}));return n.serializer=ye,i}function we(e,t,n,r,i,o){e.executeSql(n,r,i,(function(e,s){s.code===s.SYNTAX_ERR?e.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[t.storeName],(function(e,a){a.rows.length?o(e,s):ve(e,t,(function(){e.executeSql(n,r,i,o)}),o)}),o):o(e,s)}),o)}function _e(e,t){var n=this;e=h(e);var r=new c((function(t,r){n.ready().then((function(){var i=n._dbInfo;i.db.transaction((function(n){we(n,i,"SELECT * FROM "+i.storeName+" WHERE key = ? LIMIT 1",[e],(function(e,n){var r=n.rows.length?n.rows.item(0).value:null;r&&(r=i.serializer.deserialize(r)),t(r)}),(function(e,t){r(t)}))}))})).catch(r)}));return d(r,t),r}function xe(e,t){var n=this,r=new c((function(t,r){n.ready().then((function(){var i=n._dbInfo;i.db.transaction((function(n){we(n,i,"SELECT * FROM "+i.storeName,[],(function(n,r){for(var o=r.rows,s=o.length,a=0;a0)return void o(De.apply(i,[e,a,n,r-1]));s(t)}}))}))})).catch(s)}));return d(o,n),o}function Ee(e,t,n){return De.apply(this,[e,t,n,1])}function Me(e,t){var n=this;e=h(e);var r=new c((function(t,r){n.ready().then((function(){var i=n._dbInfo;i.db.transaction((function(n){we(n,i,"DELETE FROM "+i.storeName+" WHERE key = ?",[e],(function(){t()}),(function(e,t){r(t)}))}))})).catch(r)}));return d(r,t),r}function Ae(e){var t=this,n=new c((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){we(t,r,"DELETE FROM "+r.storeName,[],(function(){e()}),(function(e,t){n(t)}))}))})).catch(n)}));return d(n,e),n}function Se(e){var t=this,n=new c((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){we(t,r,"SELECT COUNT(key) as c FROM "+r.storeName,[],(function(t,n){var r=n.rows.item(0).c;e(r)}),(function(e,t){n(t)}))}))})).catch(n)}));return d(n,e),n}function Ce(e,t){var n=this,r=new c((function(t,r){n.ready().then((function(){var i=n._dbInfo;i.db.transaction((function(n){we(n,i,"SELECT key FROM "+i.storeName+" WHERE id = ? LIMIT 1",[e+1],(function(e,n){var r=n.rows.length?n.rows.item(0).key:null;t(r)}),(function(e,t){r(t)}))}))})).catch(r)}));return d(r,t),r}function ke(e){var t=this,n=new c((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){we(t,r,"SELECT key FROM "+r.storeName,[],(function(t,n){for(var r=[],i=0;i '__WebKitDatabaseInfoTable__'",[],(function(n,r){for(var i=[],o=0;o0}function Ne(e){var t=this,n={};if(e)for(var r in e)n[r]=e[r];return n.keyPrefix=Oe(e,t._defaultConfig),Pe()?(t._dbInfo=n,n.serializer=ye,c.resolve()):c.reject()}function je(e){var t=this,n=t.ready().then((function(){for(var e=t._dbInfo.keyPrefix,n=localStorage.length-1;n>=0;n--){var r=localStorage.key(n);0===r.indexOf(e)&&localStorage.removeItem(r)}}));return d(n,e),n}function Le(e,t){var n=this;e=h(e);var r=n.ready().then((function(){var t=n._dbInfo,r=localStorage.getItem(t.keyPrefix+e);return r&&(r=t.serializer.deserialize(r)),r}));return d(r,t),r}function Ue(e,t){var n=this,r=n.ready().then((function(){for(var t=n._dbInfo,r=t.keyPrefix,i=r.length,o=localStorage.length,s=1,a=0;a=0;t--){var n=localStorage.key(t);0===n.indexOf(e)&&localStorage.removeItem(n)}})):c.reject("Invalid arguments"),d(r,t),r}var Ge={_driver:"localStorageWrapper",_initStorage:Ne,_support:Fe(),iterate:Ue,getItem:Le,setItem:Ke,removeItem:He,clear:je,length:ze,key:qe,keys:$e,dropInstance:We},Ve=function(e,t){return e===t||"number"==typeof e&&"number"==typeof t&&isNaN(e)&&isNaN(t)},Ye=function(e,t){for(var n=e.length,r=0;r{var t=1/0,n=9007199254740991,r=17976931348623157e292,i=NaN,o="[object Arguments]",s="[object Function]",a="[object GeneratorFunction]",u="[object String]",c="[object Symbol]",d=/^\s+|\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,h=/^0b[01]+$/i,f=/^0o[0-7]+$/i,p=/^(?:0|[1-9]\d*)$/,m=parseInt;function g(e){return e!=e}function y(e,t){return function(e,t){for(var n=-1,r=e?e.length:0,i=Array(r);++n-1&&e%1==0&&e-1&&e%1==0&&e<=n}(e.length)&&!function(e){var t=I(e)?x.call(e):"";return t==s||t==a}(e)}function I(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function R(e){return!!e&&"object"==typeof e}e.exports=function(e,n,o,s){var a;e=T(e)?e:(a=e)?y(a,function(e){return T(e)?A(e):S(e)}(a)):[],o=o&&!s?function(e){var n=function(e){if(!e)return 0===e?e:0;if(e=function(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||R(e)&&x.call(e)==c}(e))return i;if(I(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=I(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(d,"");var n=h.test(e);return n||f.test(e)?m(e.slice(2),n?2:8):l.test(e)?i:+e}(e),e===t||e===-t){return(e<0?-1:1)*r}return e==e?e:0}(e),o=n%1;return n==n?o?n-o:n:0}(o):0;var p=e.length;return o<0&&(o=M(p+o,0)),function(e){return"string"==typeof e||!k(e)&&R(e)&&x.call(e)==u}(e)?o<=p&&e.indexOf(n,o)>-1:!!p&&function(e,t,n){if(t!=t)return function(e,t,n,r){for(var i=e.length,o=n+(r?1:-1);r?o--:++o-1}},87914:e=>{var t=Object.prototype.toString;e.exports=function(e){return!0===e||!1===e||function(e){return!!e&&"object"==typeof e}(e)&&"[object Boolean]"==t.call(e)}},58928:e=>{var t=1/0,n=17976931348623157e292,r=NaN,i="[object Symbol]",o=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,u=/^0o[0-7]+$/i,c=parseInt,d=Object.prototype.toString;function l(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}e.exports=function(e){return"number"==typeof e&&e==function(e){var h=function(e){if(!e)return 0===e?e:0;if(e=function(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&d.call(e)==i}(e))return r;if(l(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=l(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(o,"");var n=a.test(e);return n||u.test(e)?c(e.slice(2),n?2:8):s.test(e)?r:+e}(e),e===t||e===-t){return(e<0?-1:1)*n}return e==e?e:0}(e),f=h%1;return h==h?f?h-f:h:0}(e)}},73639:e=>{var t=Object.prototype.toString;e.exports=function(e){return"number"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&"[object Number]"==t.call(e)}},79001:e=>{var t,n,r=Function.prototype,i=Object.prototype,o=r.toString,s=i.hasOwnProperty,a=o.call(Object),u=i.toString,c=(t=Object.getPrototypeOf,n=Object,function(e){return t(n(e))});e.exports=function(e){if(!function(e){return!!e&&"object"==typeof e}(e)||"[object Object]"!=u.call(e)||function(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}(e))return!1;var t=c(e);if(null===t)return!0;var n=s.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&o.call(n)==a}},45931:e=>{var t=Object.prototype.toString,n=Array.isArray;e.exports=function(e){return"string"==typeof e||!n(e)&&function(e){return!!e&&"object"==typeof e}(e)&&"[object String]"==t.call(e)}},67083:e=>{var t="Expected a function",n=1/0,r=17976931348623157e292,i=NaN,o="[object Symbol]",s=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,c=/^0o[0-7]+$/i,d=parseInt,l=Object.prototype.toString;function h(e,h){var p;if("function"!=typeof h)throw new TypeError(t);return e=function(e){var t=function(e){if(!e)return 0===e?e:0;if(e=function(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&l.call(e)==o}(e))return i;if(f(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=f(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(s,"");var n=u.test(e);return n||c.test(e)?d(e.slice(2),n?2:8):a.test(e)?i:+e}(e),e===n||e===-n){return(e<0?-1:1)*r}return e==e?e:0}(e),h=t%1;return t==t?h?t-h:t:0}(e),function(){return--e>0&&(p=h.apply(this,arguments)),e<=1&&(h=void 0),p}}function f(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}e.exports=function(e){return h(2,e)}},55580:(e,t,n)=>{var r=n(56110)(n(9325),"DataView");e.exports=r},21549:(e,t,n)=>{var r=n(22032),i=n(63862),o=n(66721),s=n(12749),a=n(35749);function u(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t{var r=n(63702),i=n(70080),o=n(24739),s=n(48655),a=n(31175);function u(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t{var r=n(56110)(n(9325),"Map");e.exports=r},53661:(e,t,n)=>{var r=n(63040),i=n(17670),o=n(90289),s=n(4509),a=n(72949);function u(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t{var r=n(56110)(n(9325),"Promise");e.exports=r},76545:(e,t,n)=>{var r=n(56110)(n(9325),"Set");e.exports=r},38859:(e,t,n)=>{var r=n(53661),i=n(31380),o=n(51459);function s(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new r;++t{var r=n(80079),i=n(51420),o=n(90938),s=n(63605),a=n(29817),u=n(80945);function c(e){var t=this.__data__=new r(e);this.size=t.size}c.prototype.clear=i,c.prototype.delete=o,c.prototype.get=s,c.prototype.has=a,c.prototype.set=u,e.exports=c},51873:(e,t,n)=>{var r=n(9325).Symbol;e.exports=r},37828:(e,t,n)=>{var r=n(9325).Uint8Array;e.exports=r},28303:(e,t,n)=>{var r=n(56110)(n(9325),"WeakMap");e.exports=r},83729:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,i=0,o=[];++n{var r=n(78096),i=n(72428),o=n(56449),s=n(3656),a=n(30361),u=n(37167),c=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=o(e),d=!n&&i(e),l=!n&&!d&&s(e),h=!n&&!d&&!l&&u(e),f=n||d||l||h,p=f?r(e.length,String):[],m=p.length;for(var g in e)!t&&!c.call(e,g)||f&&("length"==g||l&&("offset"==g||"parent"==g)||h&&("buffer"==g||"byteLength"==g||"byteOffset"==g)||a(g,m))||p.push(g);return p}},14528:e=>{e.exports=function(e,t){for(var n=-1,r=t.length,i=e.length;++n{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n{var r=n(43360),i=n(75288),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){var s=e[t];o.call(e,t)&&i(s,n)&&(void 0!==n||t in e)||r(e,t,n)}},26025:(e,t,n)=>{var r=n(75288);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},74733:(e,t,n)=>{var r=n(21791),i=n(95950);e.exports=function(e,t){return e&&r(t,i(t),e)}},43838:(e,t,n)=>{var r=n(21791),i=n(37241);e.exports=function(e,t){return e&&r(t,i(t),e)}},43360:(e,t,n)=>{var r=n(93243);e.exports=function(e,t,n){"__proto__"==t&&r?r(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},9999:(e,t,n)=>{var r=n(37217),i=n(83729),o=n(16547),s=n(74733),a=n(43838),u=n(93290),c=n(23007),d=n(92271),l=n(48948),h=n(50002),f=n(83349),p=n(5861),m=n(76189),g=n(77199),y=n(35529),v=n(56449),b=n(3656),w=n(87730),_=n(23805),x=n(38440),D=n(95950),E=n(37241),M="[object Arguments]",A="[object Function]",S="[object Object]",C={};C[M]=C["[object Array]"]=C["[object ArrayBuffer]"]=C["[object DataView]"]=C["[object Boolean]"]=C["[object Date]"]=C["[object Float32Array]"]=C["[object Float64Array]"]=C["[object Int8Array]"]=C["[object Int16Array]"]=C["[object Int32Array]"]=C["[object Map]"]=C["[object Number]"]=C[S]=C["[object RegExp]"]=C["[object Set]"]=C["[object String]"]=C["[object Symbol]"]=C["[object Uint8Array]"]=C["[object Uint8ClampedArray]"]=C["[object Uint16Array]"]=C["[object Uint32Array]"]=!0,C["[object Error]"]=C[A]=C["[object WeakMap]"]=!1,e.exports=function e(t,n,k,T,I,R){var F,O=1&n,B=2&n,P=4&n;if(k&&(F=I?k(t,T,I,R):k(t)),void 0!==F)return F;if(!_(t))return t;var N=v(t);if(N){if(F=m(t),!O)return c(t,F)}else{var j=p(t),L=j==A||"[object GeneratorFunction]"==j;if(b(t))return u(t,O);if(j==S||j==M||L&&!I){if(F=B||L?{}:y(t),!O)return B?l(t,a(F,t)):d(t,s(F,t))}else{if(!C[j])return I?t:{};F=g(t,j,O)}}R||(R=new r);var U=R.get(t);if(U)return U;R.set(t,F),x(t)?t.forEach((function(r){F.add(e(r,n,k,r,t,R))})):w(t)&&t.forEach((function(r,i){F.set(i,e(r,n,k,i,t,R))}));var q=N?void 0:(P?B?f:h:B?E:D)(t);return i(q||t,(function(r,i){q&&(r=t[i=r]),o(F,i,e(r,n,k,i,t,R))})),F}},39344:(e,t,n)=>{var r=n(23805),i=Object.create,o=function(){function e(){}return function(t){if(!r(t))return{};if(i)return i(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();e.exports=o},83120:(e,t,n)=>{var r=n(14528),i=n(45891);e.exports=function e(t,n,o,s,a){var u=-1,c=t.length;for(o||(o=i),a||(a=[]);++u0&&o(d)?n>1?e(d,n-1,o,s,a):r(a,d):s||(a[a.length]=d)}return a}},82199:(e,t,n)=>{var r=n(14528),i=n(56449);e.exports=function(e,t,n){var o=t(e);return i(e)?o:r(o,n(e))}},72552:(e,t,n)=>{var r=n(51873),i=n(659),o=n(59350),s=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":s&&s in Object(e)?i(e):o(e)}},27534:(e,t,n)=>{var r=n(72552),i=n(40346);e.exports=function(e){return i(e)&&"[object Arguments]"==r(e)}},60270:(e,t,n)=>{var r=n(87068),i=n(40346);e.exports=function e(t,n,o,s,a){return t===n||(null==t||null==n||!i(t)&&!i(n)?t!=t&&n!=n:r(t,n,o,s,e,a))}},87068:(e,t,n)=>{var r=n(37217),i=n(25911),o=n(21986),s=n(50689),a=n(5861),u=n(56449),c=n(3656),d=n(37167),l="[object Arguments]",h="[object Array]",f="[object Object]",p=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,m,g,y){var v=u(e),b=u(t),w=v?h:a(e),_=b?h:a(t),x=(w=w==l?f:w)==f,D=(_=_==l?f:_)==f,E=w==_;if(E&&c(e)){if(!c(t))return!1;v=!0,x=!1}if(E&&!x)return y||(y=new r),v||d(e)?i(e,t,n,m,g,y):o(e,t,w,n,m,g,y);if(!(1&n)){var M=x&&p.call(e,"__wrapped__"),A=D&&p.call(t,"__wrapped__");if(M||A){var S=M?e.value():e,C=A?t.value():t;return y||(y=new r),g(S,C,n,m,y)}}return!!E&&(y||(y=new r),s(e,t,n,m,g,y))}},29172:(e,t,n)=>{var r=n(5861),i=n(40346);e.exports=function(e){return i(e)&&"[object Map]"==r(e)}},45083:(e,t,n)=>{var r=n(1882),i=n(87296),o=n(23805),s=n(47473),a=/^\[object .+?Constructor\]$/,u=Function.prototype,c=Object.prototype,d=u.toString,l=c.hasOwnProperty,h=RegExp("^"+d.call(l).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!o(e)||i(e))&&(r(e)?h:a).test(s(e))}},16038:(e,t,n)=>{var r=n(5861),i=n(40346);e.exports=function(e){return i(e)&&"[object Set]"==r(e)}},4901:(e,t,n)=>{var r=n(72552),i=n(30294),o=n(40346),s={};s["[object Float32Array]"]=s["[object Float64Array]"]=s["[object Int8Array]"]=s["[object Int16Array]"]=s["[object Int32Array]"]=s["[object Uint8Array]"]=s["[object Uint8ClampedArray]"]=s["[object Uint16Array]"]=s["[object Uint32Array]"]=!0,s["[object Arguments]"]=s["[object Array]"]=s["[object ArrayBuffer]"]=s["[object Boolean]"]=s["[object DataView]"]=s["[object Date]"]=s["[object Error]"]=s["[object Function]"]=s["[object Map]"]=s["[object Number]"]=s["[object Object]"]=s["[object RegExp]"]=s["[object Set]"]=s["[object String]"]=s["[object WeakMap]"]=!1,e.exports=function(e){return o(e)&&i(e.length)&&!!s[r(e)]}},88984:(e,t,n)=>{var r=n(55527),i=n(3650),o=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return i(e);var t=[];for(var n in Object(e))o.call(e,n)&&"constructor"!=n&&t.push(n);return t}},72903:(e,t,n)=>{var r=n(23805),i=n(55527),o=n(90181),s=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return o(e);var t=i(e),n=[];for(var a in e)("constructor"!=a||!t&&s.call(e,a))&&n.push(a);return n}},13195:e=>{var t=Math.floor,n=Math.random;e.exports=function(e,r){return e+t(n()*(r-e+1))}},25160:e=>{e.exports=function(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(i);++r{e.exports=function(e,t){for(var n=-1,r=Array(e);++n{var r=n(31800),i=/^\s+/;e.exports=function(e){return e?e.slice(0,r(e)+1).replace(i,""):e}},27301:e=>{e.exports=function(e){return function(t){return e(t)}}},19219:e=>{e.exports=function(e,t){return e.has(t)}},49653:(e,t,n)=>{var r=n(37828);e.exports=function(e){var t=new e.constructor(e.byteLength);return new r(t).set(new r(e)),t}},93290:(e,t,n)=>{e=n.nmd(e);var r=n(9325),i=t&&!t.nodeType&&t,o=i&&e&&!e.nodeType&&e,s=o&&o.exports===i?r.Buffer:void 0,a=s?s.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var n=e.length,r=a?a(n):new e.constructor(n);return e.copy(r),r}},76169:(e,t,n)=>{var r=n(49653);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}},73201:e=>{var t=/\w*$/;e.exports=function(e){var n=new e.constructor(e.source,t.exec(e));return n.lastIndex=e.lastIndex,n}},93736:(e,t,n)=>{var r=n(51873),i=r?r.prototype:void 0,o=i?i.valueOf:void 0;e.exports=function(e){return o?Object(o.call(e)):{}}},71961:(e,t,n)=>{var r=n(49653);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}},23007:e=>{e.exports=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n{var r=n(16547),i=n(43360);e.exports=function(e,t,n,o){var s=!n;n||(n={});for(var a=-1,u=t.length;++a{var r=n(21791),i=n(4664);e.exports=function(e,t){return r(e,i(e),t)}},48948:(e,t,n)=>{var r=n(21791),i=n(86375);e.exports=function(e,t){return r(e,i(e),t)}},55481:(e,t,n)=>{var r=n(9325)["__core-js_shared__"];e.exports=r},93243:(e,t,n)=>{var r=n(56110),i=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();e.exports=i},25911:(e,t,n)=>{var r=n(38859),i=n(14248),o=n(19219);e.exports=function(e,t,n,s,a,u){var c=1&n,d=e.length,l=t.length;if(d!=l&&!(c&&l>d))return!1;var h=u.get(e),f=u.get(t);if(h&&f)return h==t&&f==e;var p=-1,m=!0,g=2&n?new r:void 0;for(u.set(e,t),u.set(t,e);++p{var r=n(51873),i=n(37828),o=n(75288),s=n(25911),a=n(20317),u=n(84247),c=r?r.prototype:void 0,d=c?c.valueOf:void 0;e.exports=function(e,t,n,r,c,l,h){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!l(new i(e),new i(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return o(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var f=a;case"[object Set]":var p=1&r;if(f||(f=u),e.size!=t.size&&!p)return!1;var m=h.get(e);if(m)return m==t;r|=2,h.set(e,t);var g=s(f(e),f(t),r,c,l,h);return h.delete(e),g;case"[object Symbol]":if(d)return d.call(e)==d.call(t)}return!1}},50689:(e,t,n)=>{var r=n(50002),i=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,o,s,a){var u=1&n,c=r(e),d=c.length;if(d!=r(t).length&&!u)return!1;for(var l=d;l--;){var h=c[l];if(!(u?h in t:i.call(t,h)))return!1}var f=a.get(e),p=a.get(t);if(f&&p)return f==t&&p==e;var m=!0;a.set(e,t),a.set(t,e);for(var g=u;++l{var r="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;e.exports=r},50002:(e,t,n)=>{var r=n(82199),i=n(4664),o=n(95950);e.exports=function(e){return r(e,o,i)}},83349:(e,t,n)=>{var r=n(82199),i=n(86375),o=n(37241);e.exports=function(e){return r(e,o,i)}},12651:(e,t,n)=>{var r=n(74218);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},56110:(e,t,n)=>{var r=n(45083),i=n(10392);e.exports=function(e,t){var n=i(e,t);return r(n)?n:void 0}},28879:(e,t,n)=>{var r=n(74335)(Object.getPrototypeOf,Object);e.exports=r},659:(e,t,n)=>{var r=n(51873),i=Object.prototype,o=i.hasOwnProperty,s=i.toString,a=r?r.toStringTag:void 0;e.exports=function(e){var t=o.call(e,a),n=e[a];try{e[a]=void 0;var r=!0}catch(e){}var i=s.call(e);return r&&(t?e[a]=n:delete e[a]),i}},4664:(e,t,n)=>{var r=n(79770),i=n(63345),o=Object.prototype.propertyIsEnumerable,s=Object.getOwnPropertySymbols,a=s?function(e){return null==e?[]:(e=Object(e),r(s(e),(function(t){return o.call(e,t)})))}:i;e.exports=a},86375:(e,t,n)=>{var r=n(14528),i=n(28879),o=n(4664),s=n(63345),a=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)r(t,o(e)),e=i(e);return t}:s;e.exports=a},5861:(e,t,n)=>{var r=n(55580),i=n(68223),o=n(32804),s=n(76545),a=n(28303),u=n(72552),c=n(47473),d="[object Map]",l="[object Promise]",h="[object Set]",f="[object WeakMap]",p="[object DataView]",m=c(r),g=c(i),y=c(o),v=c(s),b=c(a),w=u;(r&&w(new r(new ArrayBuffer(1)))!=p||i&&w(new i)!=d||o&&w(o.resolve())!=l||s&&w(new s)!=h||a&&w(new a)!=f)&&(w=function(e){var t=u(e),n="[object Object]"==t?e.constructor:void 0,r=n?c(n):"";if(r)switch(r){case m:return p;case g:return d;case y:return l;case v:return h;case b:return f}return t}),e.exports=w},10392:e=>{e.exports=function(e,t){return null==e?void 0:e[t]}},22032:(e,t,n)=>{var r=n(81042);e.exports=function(){this.__data__=r?r(null):{},this.size=0}},63862:e=>{e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},66721:(e,t,n)=>{var r=n(81042),i=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(r){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return i.call(t,e)?t[e]:void 0}},12749:(e,t,n)=>{var r=n(81042),i=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return r?void 0!==t[e]:i.call(t,e)}},35749:(e,t,n)=>{var r=n(81042);e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=r&&void 0===t?"__lodash_hash_undefined__":t,this}},76189:e=>{var t=Object.prototype.hasOwnProperty;e.exports=function(e){var n=e.length,r=new e.constructor(n);return n&&"string"==typeof e[0]&&t.call(e,"index")&&(r.index=e.index,r.input=e.input),r}},77199:(e,t,n)=>{var r=n(49653),i=n(76169),o=n(73201),s=n(93736),a=n(71961);e.exports=function(e,t,n){var u=e.constructor;switch(t){case"[object ArrayBuffer]":return r(e);case"[object Boolean]":case"[object Date]":return new u(+e);case"[object DataView]":return i(e,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return a(e,n);case"[object Map]":case"[object Set]":return new u;case"[object Number]":case"[object String]":return new u(e);case"[object RegExp]":return o(e);case"[object Symbol]":return s(e)}}},35529:(e,t,n)=>{var r=n(39344),i=n(28879),o=n(55527);e.exports=function(e){return"function"!=typeof e.constructor||o(e)?{}:r(i(e))}},45891:(e,t,n)=>{var r=n(51873),i=n(72428),o=n(56449),s=r?r.isConcatSpreadable:void 0;e.exports=function(e){return o(e)||i(e)||!!(s&&e&&e[s])}},30361:e=>{var t=/^(?:0|[1-9]\d*)$/;e.exports=function(e,n){var r=typeof e;return!!(n=null==n?9007199254740991:n)&&("number"==r||"symbol"!=r&&t.test(e))&&e>-1&&e%1==0&&e{var r=n(75288),i=n(64894),o=n(30361),s=n(23805);e.exports=function(e,t,n){if(!s(n))return!1;var a=typeof t;return!!("number"==a?i(n)&&o(t,n.length):"string"==a&&t in n)&&r(n[t],e)}},74218:e=>{e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},87296:(e,t,n)=>{var r,i=n(55481),o=(r=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!o&&o in e}},55527:e=>{var t=Object.prototype;e.exports=function(e){var n=e&&e.constructor;return e===("function"==typeof n&&n.prototype||t)}},63702:e=>{e.exports=function(){this.__data__=[],this.size=0}},70080:(e,t,n)=>{var r=n(26025),i=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=r(t,e);return!(n<0)&&(n==t.length-1?t.pop():i.call(t,n,1),--this.size,!0)}},24739:(e,t,n)=>{var r=n(26025);e.exports=function(e){var t=this.__data__,n=r(t,e);return n<0?void 0:t[n][1]}},48655:(e,t,n)=>{var r=n(26025);e.exports=function(e){return r(this.__data__,e)>-1}},31175:(e,t,n)=>{var r=n(26025);e.exports=function(e,t){var n=this.__data__,i=r(n,e);return i<0?(++this.size,n.push([e,t])):n[i][1]=t,this}},63040:(e,t,n)=>{var r=n(21549),i=n(80079),o=n(68223);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(o||i),string:new r}}},17670:(e,t,n)=>{var r=n(12651);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},90289:(e,t,n)=>{var r=n(12651);e.exports=function(e){return r(this,e).get(e)}},4509:(e,t,n)=>{var r=n(12651);e.exports=function(e){return r(this,e).has(e)}},72949:(e,t,n)=>{var r=n(12651);e.exports=function(e,t){var n=r(this,e),i=n.size;return n.set(e,t),this.size+=n.size==i?0:1,this}},20317:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}},81042:(e,t,n)=>{var r=n(56110)(Object,"create");e.exports=r},3650:(e,t,n)=>{var r=n(74335)(Object.keys,Object);e.exports=r},90181:e=>{e.exports=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}},86009:(e,t,n)=>{e=n.nmd(e);var r=n(34840),i=t&&!t.nodeType&&t,o=i&&e&&!e.nodeType&&e,s=o&&o.exports===i&&r.process,a=function(){try{var e=o&&o.require&&o.require("util").types;return e||s&&s.binding&&s.binding("util")}catch(e){}}();e.exports=a},59350:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},74335:e=>{e.exports=function(e,t){return function(n){return e(t(n))}}},9325:(e,t,n)=>{var r=n(34840),i="object"==typeof self&&self&&self.Object===Object&&self,o=r||i||Function("return this")();e.exports=o},31380:e=>{e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},51459:e=>{e.exports=function(e){return this.__data__.has(e)}},84247:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},51420:(e,t,n)=>{var r=n(80079);e.exports=function(){this.__data__=new r,this.size=0}},90938:e=>{e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},63605:e=>{e.exports=function(e){return this.__data__.get(e)}},29817:e=>{e.exports=function(e){return this.__data__.has(e)}},80945:(e,t,n)=>{var r=n(80079),i=n(68223),o=n(53661);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var s=n.__data__;if(!i||s.length<199)return s.push([e,t]),this.size=++n.size,this;n=this.__data__=new o(s)}return n.set(e,t),this.size=n.size,this}},47473:e=>{var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},31800:e=>{var t=/\s/;e.exports=function(e){for(var n=e.length;n--&&t.test(e.charAt(n)););return n}},21013:(e,t,n)=>{var r=n(25160),i=n(36800),o=n(61489),s=Math.ceil,a=Math.max;e.exports=function(e,t,n){t=(n?i(e,t,n):void 0===t)?1:a(o(t),0);var u=null==e?0:e.length;if(!u||t<1)return[];for(var c=0,d=0,l=Array(s(u/t));c{var r=n(9999);e.exports=function(e){return r(e,5)}},38221:(e,t,n)=>{var r=n(23805),i=n(10124),o=n(99374),s=Math.max,a=Math.min;e.exports=function(e,t,n){var u,c,d,l,h,f,p=0,m=!1,g=!1,y=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function v(t){var n=u,r=c;return u=c=void 0,p=t,l=e.apply(r,n)}function b(e){var n=e-f;return void 0===f||n>=t||n<0||g&&e-p>=d}function w(){var e=i();if(b(e))return _(e);h=setTimeout(w,function(e){var n=t-(e-f);return g?a(n,d-(e-p)):n}(e))}function _(e){return h=void 0,y&&u?v(e):(u=c=void 0,l)}function x(){var e=i(),n=b(e);if(u=arguments,c=this,f=e,n){if(void 0===h)return function(e){return p=e,h=setTimeout(w,t),m?v(e):l}(f);if(g)return clearTimeout(h),h=setTimeout(w,t),v(f)}return void 0===h&&(h=setTimeout(w,t)),l}return t=o(t)||0,r(n)&&(m=!!n.leading,d=(g="maxWait"in n)?s(o(n.maxWait)||0,t):d,y="trailing"in n?!!n.trailing:y),x.cancel=function(){void 0!==h&&clearTimeout(h),p=0,u=f=c=h=void 0},x.flush=function(){return void 0===h?l:_(i())},x}},75288:e=>{e.exports=function(e,t){return e===t||e!=e&&t!=t}},35970:(e,t,n)=>{var r=n(83120);e.exports=function(e){return(null==e?0:e.length)?r(e,1):[]}},72428:(e,t,n)=>{var r=n(27534),i=n(40346),o=Object.prototype,s=o.hasOwnProperty,a=o.propertyIsEnumerable,u=r(function(){return arguments}())?r:function(e){return i(e)&&s.call(e,"callee")&&!a.call(e,"callee")};e.exports=u},56449:e=>{var t=Array.isArray;e.exports=t},64894:(e,t,n)=>{var r=n(1882),i=n(30294);e.exports=function(e){return null!=e&&i(e.length)&&!r(e)}},3656:(e,t,n)=>{e=n.nmd(e);var r=n(9325),i=n(89935),o=t&&!t.nodeType&&t,s=o&&e&&!e.nodeType&&e,a=s&&s.exports===o?r.Buffer:void 0,u=(a?a.isBuffer:void 0)||i;e.exports=u},2404:(e,t,n)=>{var r=n(60270);e.exports=function(e,t){return r(e,t)}},1882:(e,t,n)=>{var r=n(72552),i=n(23805);e.exports=function(e){if(!i(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},30294:e=>{e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},87730:(e,t,n)=>{var r=n(29172),i=n(27301),o=n(86009),s=o&&o.isMap,a=s?i(s):r;e.exports=a},23805:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},40346:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},38440:(e,t,n)=>{var r=n(16038),i=n(27301),o=n(86009),s=o&&o.isSet,a=s?i(s):r;e.exports=a},44394:(e,t,n)=>{var r=n(72552),i=n(40346);e.exports=function(e){return"symbol"==typeof e||i(e)&&"[object Symbol]"==r(e)}},37167:(e,t,n)=>{var r=n(4901),i=n(27301),o=n(86009),s=o&&o.isTypedArray,a=s?i(s):r;e.exports=a},95950:(e,t,n)=>{var r=n(70695),i=n(88984),o=n(64894);e.exports=function(e){return o(e)?r(e):i(e)}},37241:(e,t,n)=>{var r=n(70695),i=n(72903),o=n(64894);e.exports=function(e){return o(e)?r(e,!0):i(e)}},2543:function(e,t,n){var r; +/** + * @license + * Lodash + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */e=n.nmd(e),function(){var i,o="Expected a function",s="__lodash_hash_undefined__",a="__lodash_placeholder__",u=16,c=32,d=64,l=128,h=256,f=1/0,p=9007199254740991,m=NaN,g=4294967295,y=[["ary",l],["bind",1],["bindKey",2],["curry",8],["curryRight",u],["flip",512],["partial",c],["partialRight",d],["rearg",h]],v="[object Arguments]",b="[object Array]",w="[object Boolean]",_="[object Date]",x="[object Error]",D="[object Function]",E="[object GeneratorFunction]",M="[object Map]",A="[object Number]",S="[object Object]",C="[object Promise]",k="[object RegExp]",T="[object Set]",I="[object String]",R="[object Symbol]",F="[object WeakMap]",O="[object ArrayBuffer]",B="[object DataView]",P="[object Float32Array]",N="[object Float64Array]",j="[object Int8Array]",L="[object Int16Array]",U="[object Int32Array]",q="[object Uint8Array]",$="[object Uint8ClampedArray]",z="[object Uint16Array]",H="[object Uint32Array]",K=/\b__p \+= '';/g,W=/\b(__p \+=) '' \+/g,G=/(__e\(.*?\)|\b__t\)) \+\n'';/g,V=/&(?:amp|lt|gt|quot|#39);/g,Y=/[&<>"']/g,Z=RegExp(V.source),J=RegExp(Y.source),X=/<%-([\s\S]+?)%>/g,Q=/<%([\s\S]+?)%>/g,ee=/<%=([\s\S]+?)%>/g,te=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ne=/^\w*$/,re=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ie=/[\\^$.*+?()[\]{}|]/g,oe=RegExp(ie.source),se=/^\s+/,ae=/\s/,ue=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ce=/\{\n\/\* \[wrapped with (.+)\] \*/,de=/,? & /,le=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,he=/[()=,{}\[\]\/\s]/,fe=/\\(\\)?/g,pe=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,me=/\w*$/,ge=/^[-+]0x[0-9a-f]+$/i,ye=/^0b[01]+$/i,ve=/^\[object .+?Constructor\]$/,be=/^0o[0-7]+$/i,we=/^(?:0|[1-9]\d*)$/,_e=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,xe=/($^)/,De=/['\n\r\u2028\u2029\\]/g,Ee="\\ud800-\\udfff",Me="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Ae="\\u2700-\\u27bf",Se="a-z\\xdf-\\xf6\\xf8-\\xff",Ce="A-Z\\xc0-\\xd6\\xd8-\\xde",ke="\\ufe0e\\ufe0f",Te="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Ie="['’]",Re="["+Ee+"]",Fe="["+Te+"]",Oe="["+Me+"]",Be="\\d+",Pe="["+Ae+"]",Ne="["+Se+"]",je="[^"+Ee+Te+Be+Ae+Se+Ce+"]",Le="\\ud83c[\\udffb-\\udfff]",Ue="[^"+Ee+"]",qe="(?:\\ud83c[\\udde6-\\uddff]){2}",$e="[\\ud800-\\udbff][\\udc00-\\udfff]",ze="["+Ce+"]",He="\\u200d",Ke="(?:"+Ne+"|"+je+")",We="(?:"+ze+"|"+je+")",Ge="(?:['’](?:d|ll|m|re|s|t|ve))?",Ve="(?:['’](?:D|LL|M|RE|S|T|VE))?",Ye="(?:"+Oe+"|"+Le+")"+"?",Ze="["+ke+"]?",Je=Ze+Ye+("(?:"+He+"(?:"+[Ue,qe,$e].join("|")+")"+Ze+Ye+")*"),Xe="(?:"+[Pe,qe,$e].join("|")+")"+Je,Qe="(?:"+[Ue+Oe+"?",Oe,qe,$e,Re].join("|")+")",et=RegExp(Ie,"g"),tt=RegExp(Oe,"g"),nt=RegExp(Le+"(?="+Le+")|"+Qe+Je,"g"),rt=RegExp([ze+"?"+Ne+"+"+Ge+"(?="+[Fe,ze,"$"].join("|")+")",We+"+"+Ve+"(?="+[Fe,ze+Ke,"$"].join("|")+")",ze+"?"+Ke+"+"+Ge,ze+"+"+Ve,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Be,Xe].join("|"),"g"),it=RegExp("["+He+Ee+Me+ke+"]"),ot=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,st=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],at=-1,ut={};ut[P]=ut[N]=ut[j]=ut[L]=ut[U]=ut[q]=ut[$]=ut[z]=ut[H]=!0,ut[v]=ut[b]=ut[O]=ut[w]=ut[B]=ut[_]=ut[x]=ut[D]=ut[M]=ut[A]=ut[S]=ut[k]=ut[T]=ut[I]=ut[F]=!1;var ct={};ct[v]=ct[b]=ct[O]=ct[B]=ct[w]=ct[_]=ct[P]=ct[N]=ct[j]=ct[L]=ct[U]=ct[M]=ct[A]=ct[S]=ct[k]=ct[T]=ct[I]=ct[R]=ct[q]=ct[$]=ct[z]=ct[H]=!0,ct[x]=ct[D]=ct[F]=!1;var dt={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},lt=parseFloat,ht=parseInt,ft="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,pt="object"==typeof self&&self&&self.Object===Object&&self,mt=ft||pt||Function("return this")(),gt=t&&!t.nodeType&&t,yt=gt&&e&&!e.nodeType&&e,vt=yt&&yt.exports===gt,bt=vt&&ft.process,wt=function(){try{var e=yt&&yt.require&&yt.require("util").types;return e||bt&&bt.binding&&bt.binding("util")}catch(e){}}(),_t=wt&&wt.isArrayBuffer,xt=wt&&wt.isDate,Dt=wt&&wt.isMap,Et=wt&&wt.isRegExp,Mt=wt&&wt.isSet,At=wt&&wt.isTypedArray;function St(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function Ct(e,t,n,r){for(var i=-1,o=null==e?0:e.length;++i-1}function Ot(e,t,n){for(var r=-1,i=null==e?0:e.length;++r-1;);return n}function rn(e,t){for(var n=e.length;n--&&zt(t,e[n],0)>-1;);return n}var on=Vt({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"}),sn=Vt({"&":"&","<":"<",">":">",'"':""","'":"'"});function an(e){return"\\"+dt[e]}function un(e){return it.test(e)}function cn(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}function dn(e,t){return function(n){return e(t(n))}}function ln(e,t){for(var n=-1,r=e.length,i=0,o=[];++n",""":'"',"'":"'"});var vn=function e(t){var n,r=(t=null==t?mt:vn.defaults(mt.Object(),t,vn.pick(mt,st))).Array,ae=t.Date,Ee=t.Error,Me=t.Function,Ae=t.Math,Se=t.Object,Ce=t.RegExp,ke=t.String,Te=t.TypeError,Ie=r.prototype,Re=Me.prototype,Fe=Se.prototype,Oe=t["__core-js_shared__"],Be=Re.toString,Pe=Fe.hasOwnProperty,Ne=0,je=(n=/[^.]+$/.exec(Oe&&Oe.keys&&Oe.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",Le=Fe.toString,Ue=Be.call(Se),qe=mt._,$e=Ce("^"+Be.call(Pe).replace(ie,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),ze=vt?t.Buffer:i,He=t.Symbol,Ke=t.Uint8Array,We=ze?ze.allocUnsafe:i,Ge=dn(Se.getPrototypeOf,Se),Ve=Se.create,Ye=Fe.propertyIsEnumerable,Ze=Ie.splice,Je=He?He.isConcatSpreadable:i,Xe=He?He.iterator:i,Qe=He?He.toStringTag:i,nt=function(){try{var e=fo(Se,"defineProperty");return e({},"",{}),e}catch(e){}}(),it=t.clearTimeout!==mt.clearTimeout&&t.clearTimeout,dt=ae&&ae.now!==mt.Date.now&&ae.now,ft=t.setTimeout!==mt.setTimeout&&t.setTimeout,pt=Ae.ceil,gt=Ae.floor,yt=Se.getOwnPropertySymbols,bt=ze?ze.isBuffer:i,wt=t.isFinite,Ut=Ie.join,Vt=dn(Se.keys,Se),bn=Ae.max,wn=Ae.min,_n=ae.now,xn=t.parseInt,Dn=Ae.random,En=Ie.reverse,Mn=fo(t,"DataView"),An=fo(t,"Map"),Sn=fo(t,"Promise"),Cn=fo(t,"Set"),kn=fo(t,"WeakMap"),Tn=fo(Se,"create"),In=kn&&new kn,Rn={},Fn=Lo(Mn),On=Lo(An),Bn=Lo(Sn),Pn=Lo(Cn),Nn=Lo(kn),jn=He?He.prototype:i,Ln=jn?jn.valueOf:i,Un=jn?jn.toString:i;function qn(e){if(na(e)&&!Ks(e)&&!(e instanceof Kn)){if(e instanceof Hn)return e;if(Pe.call(e,"__wrapped__"))return Uo(e)}return new Hn(e)}var $n=function(){function e(){}return function(t){if(!ta(t))return{};if(Ve)return Ve(t);e.prototype=t;var n=new e;return e.prototype=i,n}}();function zn(){}function Hn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=i}function Kn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=g,this.__views__=[]}function Wn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function cr(e,t,n,r,o,s){var a,u=1&t,c=2&t,d=4&t;if(n&&(a=o?n(e,r,o,s):n(e)),a!==i)return a;if(!ta(e))return e;var l=Ks(e);if(l){if(a=function(e){var t=e.length,n=new e.constructor(t);t&&"string"==typeof e[0]&&Pe.call(e,"index")&&(n.index=e.index,n.input=e.input);return n}(e),!u)return Ti(e,a)}else{var h=go(e),f=h==D||h==E;if(Ys(e))return Ei(e,u);if(h==S||h==v||f&&!o){if(a=c||f?{}:vo(e),!u)return c?function(e,t){return Ii(e,mo(e),t)}(e,function(e,t){return e&&Ii(t,Fa(t),e)}(a,e)):function(e,t){return Ii(e,po(e),t)}(e,or(a,e))}else{if(!ct[h])return o?e:{};a=function(e,t,n){var r=e.constructor;switch(t){case O:return Mi(e);case w:case _:return new r(+e);case B:return function(e,t){var n=t?Mi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case P:case N:case j:case L:case U:case q:case $:case z:case H:return Ai(e,n);case M:return new r;case A:case I:return new r(e);case k:return function(e){var t=new e.constructor(e.source,me.exec(e));return t.lastIndex=e.lastIndex,t}(e);case T:return new r;case R:return i=e,Ln?Se(Ln.call(i)):{}}var i}(e,h,u)}}s||(s=new Zn);var p=s.get(e);if(p)return p;s.set(e,a),aa(e)?e.forEach((function(r){a.add(cr(r,t,n,r,e,s))})):ra(e)&&e.forEach((function(r,i){a.set(i,cr(r,t,n,i,e,s))}));var m=l?i:(d?c?oo:io:c?Fa:Ra)(e);return kt(m||e,(function(r,i){m&&(r=e[i=r]),nr(a,i,cr(r,t,n,i,e,s))})),a}function dr(e,t,n){var r=n.length;if(null==e)return!r;for(e=Se(e);r--;){var o=n[r],s=t[o],a=e[o];if(a===i&&!(o in e)||!s(a))return!1}return!0}function lr(e,t,n){if("function"!=typeof e)throw new Te(o);return Ro((function(){e.apply(i,n)}),t)}function hr(e,t,n,r){var i=-1,o=Ft,s=!0,a=e.length,u=[],c=t.length;if(!a)return u;n&&(t=Bt(t,Qt(n))),r?(o=Ot,s=!1):t.length>=200&&(o=tn,s=!1,t=new Yn(t));e:for(;++i-1},Gn.prototype.set=function(e,t){var n=this.__data__,r=rr(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Vn.prototype.clear=function(){this.size=0,this.__data__={hash:new Wn,map:new(An||Gn),string:new Wn}},Vn.prototype.delete=function(e){var t=lo(this,e).delete(e);return this.size-=t?1:0,t},Vn.prototype.get=function(e){return lo(this,e).get(e)},Vn.prototype.has=function(e){return lo(this,e).has(e)},Vn.prototype.set=function(e,t){var n=lo(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},Yn.prototype.add=Yn.prototype.push=function(e){return this.__data__.set(e,s),this},Yn.prototype.has=function(e){return this.__data__.has(e)},Zn.prototype.clear=function(){this.__data__=new Gn,this.size=0},Zn.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Zn.prototype.get=function(e){return this.__data__.get(e)},Zn.prototype.has=function(e){return this.__data__.has(e)},Zn.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Gn){var r=n.__data__;if(!An||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Vn(r)}return n.set(e,t),this.size=n.size,this};var fr=Oi(_r),pr=Oi(xr,!0);function mr(e,t){var n=!0;return fr(e,(function(e,r,i){return n=!!t(e,r,i)})),n}function gr(e,t,n){for(var r=-1,o=e.length;++r0&&n(a)?t>1?vr(a,t-1,n,r,i):Pt(i,a):r||(i[i.length]=a)}return i}var br=Bi(),wr=Bi(!0);function _r(e,t){return e&&br(e,t,Ra)}function xr(e,t){return e&&wr(e,t,Ra)}function Dr(e,t){return Rt(t,(function(t){return Xs(e[t])}))}function Er(e,t){for(var n=0,r=(t=wi(t,e)).length;null!=e&&nt}function Cr(e,t){return null!=e&&Pe.call(e,t)}function kr(e,t){return null!=e&&t in Se(e)}function Tr(e,t,n){for(var o=n?Ot:Ft,s=e[0].length,a=e.length,u=a,c=r(a),d=1/0,l=[];u--;){var h=e[u];u&&t&&(h=Bt(h,Qt(t))),d=wn(h.length,d),c[u]=!n&&(t||s>=120&&h.length>=120)?new Yn(u&&h):i}h=e[0];var f=-1,p=c[0];e:for(;++f=a?u:u*("desc"==n[r]?-1:1)}return e.index-t.index}(e,t,n)}))}function Wr(e,t,n){for(var r=-1,i=t.length,o={};++r-1;)a!==e&&Ze.call(a,u,1),Ze.call(e,u,1);return e}function Vr(e,t){for(var n=e?t.length:0,r=n-1;n--;){var i=t[n];if(n==r||i!==o){var o=i;wo(i)?Ze.call(e,i,1):hi(e,i)}}return e}function Yr(e,t){return e+gt(Dn()*(t-e+1))}function Zr(e,t){var n="";if(!e||t<1||t>p)return n;do{t%2&&(n+=e),(t=gt(t/2))&&(e+=e)}while(t);return n}function Jr(e,t){return Fo(Co(e,t,iu),e+"")}function Xr(e){return Xn(qa(e))}function Qr(e,t){var n=qa(e);return Po(n,ur(t,0,n.length))}function ei(e,t,n,r){if(!ta(e))return e;for(var o=-1,s=(t=wi(t,e)).length,a=s-1,u=e;null!=u&&++oo?0:o+t),(n=n>o?o:n)<0&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var s=r(o);++i>>1,s=e[o];null!==s&&!ca(s)&&(n?s<=t:s=200){var c=t?null:Zi(e);if(c)return hn(c);s=!1,i=tn,u=new Yn}else u=t?[]:a;e:for(;++r=r?e:ii(e,t,n)}var Di=it||function(e){return mt.clearTimeout(e)};function Ei(e,t){if(t)return e.slice();var n=e.length,r=We?We(n):new e.constructor(n);return e.copy(r),r}function Mi(e){var t=new e.constructor(e.byteLength);return new Ke(t).set(new Ke(e)),t}function Ai(e,t){var n=t?Mi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function Si(e,t){if(e!==t){var n=e!==i,r=null===e,o=e==e,s=ca(e),a=t!==i,u=null===t,c=t==t,d=ca(t);if(!u&&!d&&!s&&e>t||s&&a&&c&&!u&&!d||r&&a&&c||!n&&c||!o)return 1;if(!r&&!s&&!d&&e1?n[o-1]:i,a=o>2?n[2]:i;for(s=e.length>3&&"function"==typeof s?(o--,s):i,a&&_o(n[0],n[1],a)&&(s=o<3?i:s,o=1),t=Se(t);++r-1?o[s?t[a]:a]:i}}function Ui(e){return ro((function(t){var n=t.length,r=n,s=Hn.prototype.thru;for(e&&t.reverse();r--;){var a=t[r];if("function"!=typeof a)throw new Te(o);if(s&&!u&&"wrapper"==ao(a))var u=new Hn([],!0)}for(r=u?r:n;++r1&&w.reverse(),f&&du))return!1;var d=s.get(e),l=s.get(t);if(d&&l)return d==t&&l==e;var h=-1,f=!0,p=2&n?new Yn:i;for(s.set(e,t),s.set(t,e);++h-1&&e%1==0&&e1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(ue,"{\n/* [wrapped with "+t+"] */\n")}(r,function(e,t){return kt(y,(function(n){var r="_."+n[0];t&n[1]&&!Ft(e,r)&&e.push(r)})),e.sort()}(function(e){var t=e.match(ce);return t?t[1].split(de):[]}(r),n)))}function Bo(e){var t=0,n=0;return function(){var r=_n(),o=16-(r-n);if(n=r,o>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(i,arguments)}}function Po(e,t){var n=-1,r=e.length,o=r-1;for(t=t===i?r:t;++n1?e[t-1]:i;return n="function"==typeof n?(e.pop(),n):i,ss(e,n)}));function fs(e){var t=qn(e);return t.__chain__=!0,t}function ps(e,t){return t(e)}var ms=ro((function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,o=function(t){return ar(t,e)};return!(t>1||this.__actions__.length)&&r instanceof Kn&&wo(n)?((r=r.slice(n,+n+(t?1:0))).__actions__.push({func:ps,args:[o],thisArg:i}),new Hn(r,this.__chain__).thru((function(e){return t&&!e.length&&e.push(i),e}))):this.thru(o)}));var gs=Ri((function(e,t,n){Pe.call(e,n)?++e[n]:sr(e,n,1)}));var ys=Li(Ho),vs=Li(Ko);function bs(e,t){return(Ks(e)?kt:fr)(e,co(t,3))}function ws(e,t){return(Ks(e)?Tt:pr)(e,co(t,3))}var _s=Ri((function(e,t,n){Pe.call(e,n)?e[n].push(t):sr(e,n,[t])}));var xs=Jr((function(e,t,n){var i=-1,o="function"==typeof t,s=Gs(e)?r(e.length):[];return fr(e,(function(e){s[++i]=o?St(t,e,n):Ir(e,t,n)})),s})),Ds=Ri((function(e,t,n){sr(e,n,t)}));function Es(e,t){return(Ks(e)?Bt:Ur)(e,co(t,3))}var Ms=Ri((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]}));var As=Jr((function(e,t){if(null==e)return[];var n=t.length;return n>1&&_o(e,t[0],t[1])?t=[]:n>2&&_o(t[0],t[1],t[2])&&(t=[t[0]]),Kr(e,vr(t,1),[])})),Ss=dt||function(){return mt.Date.now()};function Cs(e,t,n){return t=n?i:t,t=e&&null==t?e.length:t,Xi(e,l,i,i,i,i,t)}function ks(e,t){var n;if("function"!=typeof t)throw new Te(o);return e=ma(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=i),n}}var Ts=Jr((function(e,t,n){var r=1;if(n.length){var i=ln(n,uo(Ts));r|=c}return Xi(e,r,t,n,i)})),Is=Jr((function(e,t,n){var r=3;if(n.length){var i=ln(n,uo(Is));r|=c}return Xi(t,r,e,n,i)}));function Rs(e,t,n){var r,s,a,u,c,d,l=0,h=!1,f=!1,p=!0;if("function"!=typeof e)throw new Te(o);function m(t){var n=r,o=s;return r=s=i,l=t,u=e.apply(o,n)}function g(e){var n=e-d;return d===i||n>=t||n<0||f&&e-l>=a}function y(){var e=Ss();if(g(e))return v(e);c=Ro(y,function(e){var n=t-(e-d);return f?wn(n,a-(e-l)):n}(e))}function v(e){return c=i,p&&r?m(e):(r=s=i,u)}function b(){var e=Ss(),n=g(e);if(r=arguments,s=this,d=e,n){if(c===i)return function(e){return l=e,c=Ro(y,t),h?m(e):u}(d);if(f)return Di(c),c=Ro(y,t),m(d)}return c===i&&(c=Ro(y,t)),u}return t=ya(t)||0,ta(n)&&(h=!!n.leading,a=(f="maxWait"in n)?bn(ya(n.maxWait)||0,t):a,p="trailing"in n?!!n.trailing:p),b.cancel=function(){c!==i&&Di(c),l=0,r=d=s=c=i},b.flush=function(){return c===i?u:v(Ss())},b}var Fs=Jr((function(e,t){return lr(e,1,t)})),Os=Jr((function(e,t,n){return lr(e,ya(t)||0,n)}));function Bs(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new Te(o);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var s=e.apply(this,r);return n.cache=o.set(i,s)||o,s};return n.cache=new(Bs.Cache||Vn),n}function Ps(e){if("function"!=typeof e)throw new Te(o);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}Bs.Cache=Vn;var Ns=_i((function(e,t){var n=(t=1==t.length&&Ks(t[0])?Bt(t[0],Qt(co())):Bt(vr(t,1),Qt(co()))).length;return Jr((function(r){for(var i=-1,o=wn(r.length,n);++i=t})),Hs=Rr(function(){return arguments}())?Rr:function(e){return na(e)&&Pe.call(e,"callee")&&!Ye.call(e,"callee")},Ks=r.isArray,Ws=_t?Qt(_t):function(e){return na(e)&&Ar(e)==O};function Gs(e){return null!=e&&ea(e.length)&&!Xs(e)}function Vs(e){return na(e)&&Gs(e)}var Ys=bt||yu,Zs=xt?Qt(xt):function(e){return na(e)&&Ar(e)==_};function Js(e){if(!na(e))return!1;var t=Ar(e);return t==x||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!oa(e)}function Xs(e){if(!ta(e))return!1;var t=Ar(e);return t==D||t==E||"[object AsyncFunction]"==t||"[object Proxy]"==t}function Qs(e){return"number"==typeof e&&e==ma(e)}function ea(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=p}function ta(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function na(e){return null!=e&&"object"==typeof e}var ra=Dt?Qt(Dt):function(e){return na(e)&&go(e)==M};function ia(e){return"number"==typeof e||na(e)&&Ar(e)==A}function oa(e){if(!na(e)||Ar(e)!=S)return!1;var t=Ge(e);if(null===t)return!0;var n=Pe.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&Be.call(n)==Ue}var sa=Et?Qt(Et):function(e){return na(e)&&Ar(e)==k};var aa=Mt?Qt(Mt):function(e){return na(e)&&go(e)==T};function ua(e){return"string"==typeof e||!Ks(e)&&na(e)&&Ar(e)==I}function ca(e){return"symbol"==typeof e||na(e)&&Ar(e)==R}var da=At?Qt(At):function(e){return na(e)&&ea(e.length)&&!!ut[Ar(e)]};var la=Gi(Lr),ha=Gi((function(e,t){return e<=t}));function fa(e){if(!e)return[];if(Gs(e))return ua(e)?mn(e):Ti(e);if(Xe&&e[Xe])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Xe]());var t=go(e);return(t==M?cn:t==T?hn:qa)(e)}function pa(e){return e?(e=ya(e))===f||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function ma(e){var t=pa(e),n=t%1;return t==t?n?t-n:t:0}function ga(e){return e?ur(ma(e),0,g):0}function ya(e){if("number"==typeof e)return e;if(ca(e))return m;if(ta(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=ta(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=Xt(e);var n=ye.test(e);return n||be.test(e)?ht(e.slice(2),n?2:8):ge.test(e)?m:+e}function va(e){return Ii(e,Fa(e))}function ba(e){return null==e?"":di(e)}var wa=Fi((function(e,t){if(Mo(t)||Gs(t))Ii(t,Ra(t),e);else for(var n in t)Pe.call(t,n)&&nr(e,n,t[n])})),_a=Fi((function(e,t){Ii(t,Fa(t),e)})),xa=Fi((function(e,t,n,r){Ii(t,Fa(t),e,r)})),Da=Fi((function(e,t,n,r){Ii(t,Ra(t),e,r)})),Ea=ro(ar);var Ma=Jr((function(e,t){e=Se(e);var n=-1,r=t.length,o=r>2?t[2]:i;for(o&&_o(t[0],t[1],o)&&(r=1);++n1),t})),Ii(e,oo(e),n),r&&(n=cr(n,7,to));for(var i=t.length;i--;)hi(n,t[i]);return n}));var Na=ro((function(e,t){return null==e?{}:function(e,t){return Wr(e,t,(function(t,n){return Ca(e,n)}))}(e,t)}));function ja(e,t){if(null==e)return{};var n=Bt(oo(e),(function(e){return[e]}));return t=co(t),Wr(e,n,(function(e,n){return t(e,n[0])}))}var La=Ji(Ra),Ua=Ji(Fa);function qa(e){return null==e?[]:en(e,Ra(e))}var $a=Ni((function(e,t,n){return t=t.toLowerCase(),e+(n?za(t):t)}));function za(e){return Ja(ba(e).toLowerCase())}function Ha(e){return(e=ba(e))&&e.replace(_e,on).replace(tt,"")}var Ka=Ni((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()})),Wa=Ni((function(e,t,n){return e+(n?" ":"")+t.toLowerCase()})),Ga=Pi("toLowerCase");var Va=Ni((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()}));var Ya=Ni((function(e,t,n){return e+(n?" ":"")+Ja(t)}));var Za=Ni((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()})),Ja=Pi("toUpperCase");function Xa(e,t,n){return e=ba(e),(t=n?i:t)===i?function(e){return ot.test(e)}(e)?function(e){return e.match(rt)||[]}(e):function(e){return e.match(le)||[]}(e):e.match(t)||[]}var Qa=Jr((function(e,t){try{return St(e,i,t)}catch(e){return Js(e)?e:new Ee(e)}})),eu=ro((function(e,t){return kt(t,(function(t){t=jo(t),sr(e,t,Ts(e[t],e))})),e}));function tu(e){return function(){return e}}var nu=Ui(),ru=Ui(!0);function iu(e){return e}function ou(e){return Pr("function"==typeof e?e:cr(e,1))}var su=Jr((function(e,t){return function(n){return Ir(n,e,t)}})),au=Jr((function(e,t){return function(n){return Ir(e,n,t)}}));function uu(e,t,n){var r=Ra(t),i=Dr(t,r);null!=n||ta(t)&&(i.length||!r.length)||(n=t,t=e,e=this,i=Dr(t,Ra(t)));var o=!(ta(n)&&"chain"in n&&!n.chain),s=Xs(e);return kt(i,(function(n){var r=t[n];e[n]=r,s&&(e.prototype[n]=function(){var t=this.__chain__;if(o||t){var n=e(this.__wrapped__);return(n.__actions__=Ti(this.__actions__)).push({func:r,args:arguments,thisArg:e}),n.__chain__=t,n}return r.apply(e,Pt([this.value()],arguments))})})),e}function cu(){}var du=Hi(Bt),lu=Hi(It),hu=Hi(Lt);function fu(e){return xo(e)?Gt(jo(e)):function(e){return function(t){return Er(t,e)}}(e)}var pu=Wi(),mu=Wi(!0);function gu(){return[]}function yu(){return!1}var vu=zi((function(e,t){return e+t}),0),bu=Yi("ceil"),wu=zi((function(e,t){return e/t}),1),_u=Yi("floor");var xu,Du=zi((function(e,t){return e*t}),1),Eu=Yi("round"),Mu=zi((function(e,t){return e-t}),0);return qn.after=function(e,t){if("function"!=typeof t)throw new Te(o);return e=ma(e),function(){if(--e<1)return t.apply(this,arguments)}},qn.ary=Cs,qn.assign=wa,qn.assignIn=_a,qn.assignInWith=xa,qn.assignWith=Da,qn.at=Ea,qn.before=ks,qn.bind=Ts,qn.bindAll=eu,qn.bindKey=Is,qn.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return Ks(e)?e:[e]},qn.chain=fs,qn.chunk=function(e,t,n){t=(n?_o(e,t,n):t===i)?1:bn(ma(t),0);var o=null==e?0:e.length;if(!o||t<1)return[];for(var s=0,a=0,u=r(pt(o/t));so?0:o+n),(r=r===i||r>o?o:ma(r))<0&&(r+=o),r=n>r?0:ga(r);n>>0)?(e=ba(e))&&("string"==typeof t||null!=t&&!sa(t))&&!(t=di(t))&&un(e)?xi(mn(e),0,n):e.split(t,n):[]},qn.spread=function(e,t){if("function"!=typeof e)throw new Te(o);return t=null==t?0:bn(ma(t),0),Jr((function(n){var r=n[t],i=xi(n,0,t);return r&&Pt(i,r),St(e,this,i)}))},qn.tail=function(e){var t=null==e?0:e.length;return t?ii(e,1,t):[]},qn.take=function(e,t,n){return e&&e.length?ii(e,0,(t=n||t===i?1:ma(t))<0?0:t):[]},qn.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?ii(e,(t=r-(t=n||t===i?1:ma(t)))<0?0:t,r):[]},qn.takeRightWhile=function(e,t){return e&&e.length?pi(e,co(t,3),!1,!0):[]},qn.takeWhile=function(e,t){return e&&e.length?pi(e,co(t,3)):[]},qn.tap=function(e,t){return t(e),e},qn.throttle=function(e,t,n){var r=!0,i=!0;if("function"!=typeof e)throw new Te(o);return ta(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),Rs(e,t,{leading:r,maxWait:t,trailing:i})},qn.thru=ps,qn.toArray=fa,qn.toPairs=La,qn.toPairsIn=Ua,qn.toPath=function(e){return Ks(e)?Bt(e,jo):ca(e)?[e]:Ti(No(ba(e)))},qn.toPlainObject=va,qn.transform=function(e,t,n){var r=Ks(e),i=r||Ys(e)||da(e);if(t=co(t,4),null==n){var o=e&&e.constructor;n=i?r?new o:[]:ta(e)&&Xs(o)?$n(Ge(e)):{}}return(i?kt:_r)(e,(function(e,r,i){return t(n,e,r,i)})),n},qn.unary=function(e){return Cs(e,1)},qn.union=ns,qn.unionBy=rs,qn.unionWith=is,qn.uniq=function(e){return e&&e.length?li(e):[]},qn.uniqBy=function(e,t){return e&&e.length?li(e,co(t,2)):[]},qn.uniqWith=function(e,t){return t="function"==typeof t?t:i,e&&e.length?li(e,i,t):[]},qn.unset=function(e,t){return null==e||hi(e,t)},qn.unzip=os,qn.unzipWith=ss,qn.update=function(e,t,n){return null==e?e:fi(e,t,bi(n))},qn.updateWith=function(e,t,n,r){return r="function"==typeof r?r:i,null==e?e:fi(e,t,bi(n),r)},qn.values=qa,qn.valuesIn=function(e){return null==e?[]:en(e,Fa(e))},qn.without=as,qn.words=Xa,qn.wrap=function(e,t){return js(bi(t),e)},qn.xor=us,qn.xorBy=cs,qn.xorWith=ds,qn.zip=ls,qn.zipObject=function(e,t){return yi(e||[],t||[],nr)},qn.zipObjectDeep=function(e,t){return yi(e||[],t||[],ei)},qn.zipWith=hs,qn.entries=La,qn.entriesIn=Ua,qn.extend=_a,qn.extendWith=xa,uu(qn,qn),qn.add=vu,qn.attempt=Qa,qn.camelCase=$a,qn.capitalize=za,qn.ceil=bu,qn.clamp=function(e,t,n){return n===i&&(n=t,t=i),n!==i&&(n=(n=ya(n))==n?n:0),t!==i&&(t=(t=ya(t))==t?t:0),ur(ya(e),t,n)},qn.clone=function(e){return cr(e,4)},qn.cloneDeep=function(e){return cr(e,5)},qn.cloneDeepWith=function(e,t){return cr(e,5,t="function"==typeof t?t:i)},qn.cloneWith=function(e,t){return cr(e,4,t="function"==typeof t?t:i)},qn.conformsTo=function(e,t){return null==t||dr(e,t,Ra(t))},qn.deburr=Ha,qn.defaultTo=function(e,t){return null==e||e!=e?t:e},qn.divide=wu,qn.endsWith=function(e,t,n){e=ba(e),t=di(t);var r=e.length,o=n=n===i?r:ur(ma(n),0,r);return(n-=t.length)>=0&&e.slice(n,o)==t},qn.eq=qs,qn.escape=function(e){return(e=ba(e))&&J.test(e)?e.replace(Y,sn):e},qn.escapeRegExp=function(e){return(e=ba(e))&&oe.test(e)?e.replace(ie,"\\$&"):e},qn.every=function(e,t,n){var r=Ks(e)?It:mr;return n&&_o(e,t,n)&&(t=i),r(e,co(t,3))},qn.find=ys,qn.findIndex=Ho,qn.findKey=function(e,t){return qt(e,co(t,3),_r)},qn.findLast=vs,qn.findLastIndex=Ko,qn.findLastKey=function(e,t){return qt(e,co(t,3),xr)},qn.floor=_u,qn.forEach=bs,qn.forEachRight=ws,qn.forIn=function(e,t){return null==e?e:br(e,co(t,3),Fa)},qn.forInRight=function(e,t){return null==e?e:wr(e,co(t,3),Fa)},qn.forOwn=function(e,t){return e&&_r(e,co(t,3))},qn.forOwnRight=function(e,t){return e&&xr(e,co(t,3))},qn.get=Sa,qn.gt=$s,qn.gte=zs,qn.has=function(e,t){return null!=e&&yo(e,t,Cr)},qn.hasIn=Ca,qn.head=Go,qn.identity=iu,qn.includes=function(e,t,n,r){e=Gs(e)?e:qa(e),n=n&&!r?ma(n):0;var i=e.length;return n<0&&(n=bn(i+n,0)),ua(e)?n<=i&&e.indexOf(t,n)>-1:!!i&&zt(e,t,n)>-1},qn.indexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:ma(n);return i<0&&(i=bn(r+i,0)),zt(e,t,i)},qn.inRange=function(e,t,n){return t=pa(t),n===i?(n=t,t=0):n=pa(n),function(e,t,n){return e>=wn(t,n)&&e=-9007199254740991&&e<=p},qn.isSet=aa,qn.isString=ua,qn.isSymbol=ca,qn.isTypedArray=da,qn.isUndefined=function(e){return e===i},qn.isWeakMap=function(e){return na(e)&&go(e)==F},qn.isWeakSet=function(e){return na(e)&&"[object WeakSet]"==Ar(e)},qn.join=function(e,t){return null==e?"":Ut.call(e,t)},qn.kebabCase=Ka,qn.last=Jo,qn.lastIndexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var o=r;return n!==i&&(o=(o=ma(n))<0?bn(r+o,0):wn(o,r-1)),t==t?function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r}(e,t,o):$t(e,Kt,o,!0)},qn.lowerCase=Wa,qn.lowerFirst=Ga,qn.lt=la,qn.lte=ha,qn.max=function(e){return e&&e.length?gr(e,iu,Sr):i},qn.maxBy=function(e,t){return e&&e.length?gr(e,co(t,2),Sr):i},qn.mean=function(e){return Wt(e,iu)},qn.meanBy=function(e,t){return Wt(e,co(t,2))},qn.min=function(e){return e&&e.length?gr(e,iu,Lr):i},qn.minBy=function(e,t){return e&&e.length?gr(e,co(t,2),Lr):i},qn.stubArray=gu,qn.stubFalse=yu,qn.stubObject=function(){return{}},qn.stubString=function(){return""},qn.stubTrue=function(){return!0},qn.multiply=Du,qn.nth=function(e,t){return e&&e.length?Hr(e,ma(t)):i},qn.noConflict=function(){return mt._===this&&(mt._=qe),this},qn.noop=cu,qn.now=Ss,qn.pad=function(e,t,n){e=ba(e);var r=(t=ma(t))?pn(e):0;if(!t||r>=t)return e;var i=(t-r)/2;return Ki(gt(i),n)+e+Ki(pt(i),n)},qn.padEnd=function(e,t,n){e=ba(e);var r=(t=ma(t))?pn(e):0;return t&&rt){var r=e;e=t,t=r}if(n||e%1||t%1){var o=Dn();return wn(e+o*(t-e+lt("1e-"+((o+"").length-1))),t)}return Yr(e,t)},qn.reduce=function(e,t,n){var r=Ks(e)?Nt:Yt,i=arguments.length<3;return r(e,co(t,4),n,i,fr)},qn.reduceRight=function(e,t,n){var r=Ks(e)?jt:Yt,i=arguments.length<3;return r(e,co(t,4),n,i,pr)},qn.repeat=function(e,t,n){return t=(n?_o(e,t,n):t===i)?1:ma(t),Zr(ba(e),t)},qn.replace=function(){var e=arguments,t=ba(e[0]);return e.length<3?t:t.replace(e[1],e[2])},qn.result=function(e,t,n){var r=-1,o=(t=wi(t,e)).length;for(o||(o=1,e=i);++rp)return[];var n=g,r=wn(e,g);t=co(t),e-=g;for(var i=Jt(r,t);++n=s)return e;var u=n-pn(r);if(u<1)return r;var c=a?xi(a,0,u).join(""):e.slice(0,u);if(o===i)return c+r;if(a&&(u+=c.length-u),sa(o)){if(e.slice(u).search(o)){var d,l=c;for(o.global||(o=Ce(o.source,ba(me.exec(o))+"g")),o.lastIndex=0;d=o.exec(l);)var h=d.index;c=c.slice(0,h===i?u:h)}}else if(e.indexOf(di(o),u)!=u){var f=c.lastIndexOf(o);f>-1&&(c=c.slice(0,f))}return c+r},qn.unescape=function(e){return(e=ba(e))&&Z.test(e)?e.replace(V,yn):e},qn.uniqueId=function(e){var t=++Ne;return ba(e)+t},qn.upperCase=Za,qn.upperFirst=Ja,qn.each=bs,qn.eachRight=ws,qn.first=Go,uu(qn,(xu={},_r(qn,(function(e,t){Pe.call(qn.prototype,t)||(xu[t]=e)})),xu),{chain:!1}),qn.VERSION="4.17.21",kt(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){qn[e].placeholder=qn})),kt(["drop","take"],(function(e,t){Kn.prototype[e]=function(n){n=n===i?1:bn(ma(n),0);var r=this.__filtered__&&!t?new Kn(this):this.clone();return r.__filtered__?r.__takeCount__=wn(n,r.__takeCount__):r.__views__.push({size:wn(n,g),type:e+(r.__dir__<0?"Right":"")}),r},Kn.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),kt(["filter","map","takeWhile"],(function(e,t){var n=t+1,r=1==n||3==n;Kn.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:co(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}})),kt(["head","last"],(function(e,t){var n="take"+(t?"Right":"");Kn.prototype[e]=function(){return this[n](1).value()[0]}})),kt(["initial","tail"],(function(e,t){var n="drop"+(t?"":"Right");Kn.prototype[e]=function(){return this.__filtered__?new Kn(this):this[n](1)}})),Kn.prototype.compact=function(){return this.filter(iu)},Kn.prototype.find=function(e){return this.filter(e).head()},Kn.prototype.findLast=function(e){return this.reverse().find(e)},Kn.prototype.invokeMap=Jr((function(e,t){return"function"==typeof e?new Kn(this):this.map((function(n){return Ir(n,e,t)}))})),Kn.prototype.reject=function(e){return this.filter(Ps(co(e)))},Kn.prototype.slice=function(e,t){e=ma(e);var n=this;return n.__filtered__&&(e>0||t<0)?new Kn(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),t!==i&&(n=(t=ma(t))<0?n.dropRight(-t):n.take(t-e)),n)},Kn.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},Kn.prototype.toArray=function(){return this.take(g)},_r(Kn.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),o=qn[r?"take"+("last"==t?"Right":""):t],s=r||/^find/.test(t);o&&(qn.prototype[t]=function(){var t=this.__wrapped__,a=r?[1]:arguments,u=t instanceof Kn,c=a[0],d=u||Ks(t),l=function(e){var t=o.apply(qn,Pt([e],a));return r&&h?t[0]:t};d&&n&&"function"==typeof c&&1!=c.length&&(u=d=!1);var h=this.__chain__,f=!!this.__actions__.length,p=s&&!h,m=u&&!f;if(!s&&d){t=m?t:new Kn(this);var g=e.apply(t,a);return g.__actions__.push({func:ps,args:[l],thisArg:i}),new Hn(g,h)}return p&&m?e.apply(this,a):(g=this.thru(l),p?r?g.value()[0]:g.value():g)})})),kt(["pop","push","shift","sort","splice","unshift"],(function(e){var t=Ie[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);qn.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var i=this.value();return t.apply(Ks(i)?i:[],e)}return this[n]((function(n){return t.apply(Ks(n)?n:[],e)}))}})),_r(Kn.prototype,(function(e,t){var n=qn[t];if(n){var r=n.name+"";Pe.call(Rn,r)||(Rn[r]=[]),Rn[r].push({name:t,func:n})}})),Rn[qi(i,2).name]=[{name:"wrapper",func:i}],Kn.prototype.clone=function(){var e=new Kn(this.__wrapped__);return e.__actions__=Ti(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=Ti(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=Ti(this.__views__),e},Kn.prototype.reverse=function(){if(this.__filtered__){var e=new Kn(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},Kn.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=Ks(e),r=t<0,i=n?e.length:0,o=function(e,t,n){var r=-1,i=n.length;for(;++r=this.__values__.length;return{done:e,value:e?i:this.__values__[this.__index__++]}},qn.prototype.plant=function(e){for(var t,n=this;n instanceof zn;){var r=Uo(n);r.__index__=0,r.__values__=i,t?o.__wrapped__=r:t=r;var o=r;n=n.__wrapped__}return o.__wrapped__=e,t},qn.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof Kn){var t=e;return this.__actions__.length&&(t=new Kn(this)),(t=t.reverse()).__actions__.push({func:ps,args:[ts],thisArg:i}),new Hn(t,this.__chain__)}return this.thru(ts)},qn.prototype.toJSON=qn.prototype.valueOf=qn.prototype.value=function(){return mi(this.__wrapped__,this.__actions__)},qn.prototype.first=qn.prototype.head,Xe&&(qn.prototype[Xe]=function(){return this}),qn}();mt._=vn,(r=function(){return vn}.call(t,n,t,e))===i||(e.exports=r)}.call(this)},10124:(e,t,n)=>{var r=n(9325);e.exports=function(){return r.Date.now()}},58253:(e,t,n)=>{var r=n(13195),i=n(36800),o=n(17400),s=parseFloat,a=Math.min,u=Math.random;e.exports=function(e,t,n){if(n&&"boolean"!=typeof n&&i(e,t,n)&&(t=n=void 0),void 0===n&&("boolean"==typeof t?(n=t,t=void 0):"boolean"==typeof e&&(n=e,e=void 0)),void 0===e&&void 0===t?(e=0,t=1):(e=o(e),void 0===t?(t=e,e=0):t=o(t)),e>t){var c=e;e=t,t=c}if(n||e%1||t%1){var d=u();return a(e+d*(t-e+s("1e-"+((d+"").length-1))),t)}return r(e,t)}},63345:e=>{e.exports=function(){return[]}},89935:e=>{e.exports=function(){return!1}},7350:(e,t,n)=>{var r=n(38221),i=n(23805);e.exports=function(e,t,n){var o=!0,s=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return i(n)&&(o="leading"in n?!!n.leading:o,s="trailing"in n?!!n.trailing:s),r(e,t,{leading:o,maxWait:t,trailing:s})}},17400:(e,t,n)=>{var r=n(99374),i=1/0;e.exports=function(e){return e?(e=r(e))===i||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},61489:(e,t,n)=>{var r=n(17400);e.exports=function(e){var t=r(e),n=t%1;return t==t?n?t-n:t:0}},99374:(e,t,n)=>{var r=n(54128),i=n(23805),o=n(44394),s=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,u=/^0o[0-7]+$/i,c=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(o(e))return NaN;if(i(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=r(e);var n=a.test(e);return n||u.test(e)?c(e.slice(2),n?2:8):s.test(e)?NaN:+e}},88276:(e,t,n)=>{"use strict";var r=n(56698),i=n(4729),o=n(92861).Buffer,s=new Array(16);function a(){i.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function u(e,t){return e<>>32-t}function c(e,t,n,r,i,o,s){return u(e+(t&n|~t&r)+i+o|0,s)+t|0}function d(e,t,n,r,i,o,s){return u(e+(t&r|n&~r)+i+o|0,s)+t|0}function l(e,t,n,r,i,o,s){return u(e+(t^n^r)+i+o|0,s)+t|0}function h(e,t,n,r,i,o,s){return u(e+(n^(t|~r))+i+o|0,s)+t|0}r(a,i),a.prototype._update=function(){for(var e=s,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);var n=this._a,r=this._b,i=this._c,o=this._d;n=c(n,r,i,o,e[0],3614090360,7),o=c(o,n,r,i,e[1],3905402710,12),i=c(i,o,n,r,e[2],606105819,17),r=c(r,i,o,n,e[3],3250441966,22),n=c(n,r,i,o,e[4],4118548399,7),o=c(o,n,r,i,e[5],1200080426,12),i=c(i,o,n,r,e[6],2821735955,17),r=c(r,i,o,n,e[7],4249261313,22),n=c(n,r,i,o,e[8],1770035416,7),o=c(o,n,r,i,e[9],2336552879,12),i=c(i,o,n,r,e[10],4294925233,17),r=c(r,i,o,n,e[11],2304563134,22),n=c(n,r,i,o,e[12],1804603682,7),o=c(o,n,r,i,e[13],4254626195,12),i=c(i,o,n,r,e[14],2792965006,17),n=d(n,r=c(r,i,o,n,e[15],1236535329,22),i,o,e[1],4129170786,5),o=d(o,n,r,i,e[6],3225465664,9),i=d(i,o,n,r,e[11],643717713,14),r=d(r,i,o,n,e[0],3921069994,20),n=d(n,r,i,o,e[5],3593408605,5),o=d(o,n,r,i,e[10],38016083,9),i=d(i,o,n,r,e[15],3634488961,14),r=d(r,i,o,n,e[4],3889429448,20),n=d(n,r,i,o,e[9],568446438,5),o=d(o,n,r,i,e[14],3275163606,9),i=d(i,o,n,r,e[3],4107603335,14),r=d(r,i,o,n,e[8],1163531501,20),n=d(n,r,i,o,e[13],2850285829,5),o=d(o,n,r,i,e[2],4243563512,9),i=d(i,o,n,r,e[7],1735328473,14),n=l(n,r=d(r,i,o,n,e[12],2368359562,20),i,o,e[5],4294588738,4),o=l(o,n,r,i,e[8],2272392833,11),i=l(i,o,n,r,e[11],1839030562,16),r=l(r,i,o,n,e[14],4259657740,23),n=l(n,r,i,o,e[1],2763975236,4),o=l(o,n,r,i,e[4],1272893353,11),i=l(i,o,n,r,e[7],4139469664,16),r=l(r,i,o,n,e[10],3200236656,23),n=l(n,r,i,o,e[13],681279174,4),o=l(o,n,r,i,e[0],3936430074,11),i=l(i,o,n,r,e[3],3572445317,16),r=l(r,i,o,n,e[6],76029189,23),n=l(n,r,i,o,e[9],3654602809,4),o=l(o,n,r,i,e[12],3873151461,11),i=l(i,o,n,r,e[15],530742520,16),n=h(n,r=l(r,i,o,n,e[2],3299628645,23),i,o,e[0],4096336452,6),o=h(o,n,r,i,e[7],1126891415,10),i=h(i,o,n,r,e[14],2878612391,15),r=h(r,i,o,n,e[5],4237533241,21),n=h(n,r,i,o,e[12],1700485571,6),o=h(o,n,r,i,e[3],2399980690,10),i=h(i,o,n,r,e[10],4293915773,15),r=h(r,i,o,n,e[1],2240044497,21),n=h(n,r,i,o,e[8],1873313359,6),o=h(o,n,r,i,e[15],4264355552,10),i=h(i,o,n,r,e[6],2734768916,15),r=h(r,i,o,n,e[13],1309151649,21),n=h(n,r,i,o,e[4],4149444226,6),o=h(o,n,r,i,e[11],3174756917,10),i=h(i,o,n,r,e[2],718787259,15),r=h(r,i,o,n,e[9],3951481745,21),this._a=this._a+n|0,this._b=this._b+r|0,this._c=this._c+i|0,this._d=this._d+o|0},a.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=o.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e},e.exports=a},52244:(e,t,n)=>{var r=n(61158),i=n(15037);function o(e){this.rand=e||new i.Rand}e.exports=o,o.create=function(e){return new o(e)},o.prototype._randbelow=function(e){var t=e.bitLength(),n=Math.ceil(t/8);do{var i=new r(this.rand.generate(n))}while(i.cmp(e)>=0);return i},o.prototype._randrange=function(e,t){var n=t.sub(e);return e.add(this._randbelow(n))},o.prototype.test=function(e,t,n){var i=e.bitLength(),o=r.mont(e),s=new r(1).toRed(o);t||(t=Math.max(1,i/48|0));for(var a=e.subn(1),u=0;!a.testn(u);u++);for(var c=e.shrn(u),d=a.toRed(o);t>0;t--){var l=this._randrange(new r(2),a);n&&n(l);var h=l.toRed(o).redPow(c);if(0!==h.cmp(s)&&0!==h.cmp(d)){for(var f=1;f0;t--){var d=this._randrange(new r(2),s),l=e.gcd(d);if(0!==l.cmpn(1))return l;var h=d.toRed(i).redPow(u);if(0!==h.cmp(o)&&0!==h.cmp(c)){for(var f=1;f=65&&n<=70?n-55:n>=97&&n<=102?n-87:n-48&15}function u(e,t,n){var r=a(e,n);return n-1>=t&&(r|=a(e,n-1)<<4),r}function c(e,t,n,r){for(var i=0,o=Math.min(e.length,n),s=t;s=49?a-49+10:a>=17?a-17+10:a}return i}o.isBN=function(e){return e instanceof o||null!==e&&"object"==typeof e&&e.constructor.wordSize===o.wordSize&&Array.isArray(e.words)},o.max=function(e,t){return e.cmp(t)>0?e:t},o.min=function(e,t){return e.cmp(t)<0?e:t},o.prototype._init=function(e,t,n){if("number"==typeof e)return this._initNumber(e,t,n);if("object"==typeof e)return this._initArray(e,t,n);"hex"===t&&(t=16),r(t===(0|t)&&t>=2&&t<=36);var i=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(i++,this.negative=1),i=0;i-=3)s=e[i]|e[i-1]<<8|e[i-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===n)for(i=0,o=0;i>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(e,t,n){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var r=0;r=t;r-=2)i=u(e,t,r)<=18?(o-=18,s+=1,this.words[s]|=i>>>26):o+=8;else for(r=(e.length-t)%2==0?t+1:t;r=18?(o-=18,s+=1,this.words[s]|=i>>>26):o+=8;this.strip()},o.prototype._parseBase=function(e,t,n){this.words=[0],this.length=1;for(var r=0,i=1;i<=67108863;i*=t)r++;r--,i=i/t|0;for(var o=e.length-n,s=o%r,a=Math.min(o,o-s)+n,u=0,d=n;d1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var d=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],h=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(e,t,n){n.negative=t.negative^e.negative;var r=e.length+t.length|0;n.length=r,r=r-1|0;var i=0|e.words[0],o=0|t.words[0],s=i*o,a=67108863&s,u=s/67108864|0;n.words[0]=a;for(var c=1;c>>26,l=67108863&u,h=Math.min(c,t.length-1),f=Math.max(0,c-e.length+1);f<=h;f++){var p=c-f|0;d+=(s=(i=0|e.words[p])*(o=0|t.words[f])+l)/67108864|0,l=67108863&s}n.words[c]=0|l,u=0|d}return 0!==u?n.words[c]=0|u:n.length--,n.strip()}o.prototype.toString=function(e,t){var n;if(t=0|t||1,16===(e=e||10)||"hex"===e){n="";for(var i=0,o=0,s=0;s>>24-i&16777215)||s!==this.length-1?d[6-u.length]+u+n:u+n,(i+=2)>=26&&(i-=26,s--)}for(0!==o&&(n=o.toString(16)+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(e===(0|e)&&e>=2&&e<=36){var c=l[e],f=h[e];n="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modn(f).toString(e);n=(p=p.idivn(f)).isZero()?m+n:d[c-m.length]+m+n}for(this.isZero()&&(n="0"+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}r(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(e,t){return r(void 0!==s),this.toArrayLike(s,e,t)},o.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},o.prototype.toArrayLike=function(e,t,n){var i=this.byteLength(),o=n||Math.max(1,i);r(i<=o,"byte array longer than desired length"),r(o>0,"Requested array length <= 0"),this.strip();var s,a,u="le"===t,c=new e(o),d=this.clone();if(u){for(a=0;!d.isZero();a++)s=d.andln(255),d.iushrn(8),c[a]=s;for(;a=4096&&(n+=13,t>>>=13),t>=64&&(n+=7,t>>>=7),t>=8&&(n+=4,t>>>=4),t>=2&&(n+=2,t>>>=2),n+t},o.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,n=0;return 8191&t||(n+=13,t>>>=13),127&t||(n+=7,t>>>=7),15&t||(n+=4,t>>>=4),3&t||(n+=2,t>>>=2),1&t||n++,n},o.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},o.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},o.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var n=0;ne.length?this.clone().iand(e):e.clone().iand(this)},o.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},o.prototype.iuxor=function(e){var t,n;this.length>e.length?(t=this,n=e):(t=e,n=this);for(var r=0;re.length?this.clone().ixor(e):e.clone().ixor(this)},o.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},o.prototype.inotn=function(e){r("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),n=e%26;this._expand(t),n>0&&t--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-n),this.strip()},o.prototype.notn=function(e){return this.clone().inotn(e)},o.prototype.setn=function(e,t){r("number"==typeof e&&e>=0);var n=e/26|0,i=e%26;return this._expand(n+1),this.words[n]=t?this.words[n]|1<e.length?(n=this,r=e):(n=e,r=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=n.length,0!==i)this.words[this.length]=i,this.length++;else if(n!==this)for(;oe.length?this.clone().iadd(e):e.clone().iadd(this)},o.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var n,r,i=this.cmp(e);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(n=this,r=e):(n=e,r=this);for(var o=0,s=0;s>26,this.words[s]=67108863&t;for(;0!==o&&s>26,this.words[s]=67108863&t;if(0===o&&s>>13,f=0|s[1],p=8191&f,m=f>>>13,g=0|s[2],y=8191&g,v=g>>>13,b=0|s[3],w=8191&b,_=b>>>13,x=0|s[4],D=8191&x,E=x>>>13,M=0|s[5],A=8191&M,S=M>>>13,C=0|s[6],k=8191&C,T=C>>>13,I=0|s[7],R=8191&I,F=I>>>13,O=0|s[8],B=8191&O,P=O>>>13,N=0|s[9],j=8191&N,L=N>>>13,U=0|a[0],q=8191&U,$=U>>>13,z=0|a[1],H=8191&z,K=z>>>13,W=0|a[2],G=8191&W,V=W>>>13,Y=0|a[3],Z=8191&Y,J=Y>>>13,X=0|a[4],Q=8191&X,ee=X>>>13,te=0|a[5],ne=8191&te,re=te>>>13,ie=0|a[6],oe=8191&ie,se=ie>>>13,ae=0|a[7],ue=8191&ae,ce=ae>>>13,de=0|a[8],le=8191&de,he=de>>>13,fe=0|a[9],pe=8191&fe,me=fe>>>13;n.negative=e.negative^t.negative,n.length=19;var ge=(c+(r=Math.imul(l,q))|0)+((8191&(i=(i=Math.imul(l,$))+Math.imul(h,q)|0))<<13)|0;c=((o=Math.imul(h,$))+(i>>>13)|0)+(ge>>>26)|0,ge&=67108863,r=Math.imul(p,q),i=(i=Math.imul(p,$))+Math.imul(m,q)|0,o=Math.imul(m,$);var ye=(c+(r=r+Math.imul(l,H)|0)|0)+((8191&(i=(i=i+Math.imul(l,K)|0)+Math.imul(h,H)|0))<<13)|0;c=((o=o+Math.imul(h,K)|0)+(i>>>13)|0)+(ye>>>26)|0,ye&=67108863,r=Math.imul(y,q),i=(i=Math.imul(y,$))+Math.imul(v,q)|0,o=Math.imul(v,$),r=r+Math.imul(p,H)|0,i=(i=i+Math.imul(p,K)|0)+Math.imul(m,H)|0,o=o+Math.imul(m,K)|0;var ve=(c+(r=r+Math.imul(l,G)|0)|0)+((8191&(i=(i=i+Math.imul(l,V)|0)+Math.imul(h,G)|0))<<13)|0;c=((o=o+Math.imul(h,V)|0)+(i>>>13)|0)+(ve>>>26)|0,ve&=67108863,r=Math.imul(w,q),i=(i=Math.imul(w,$))+Math.imul(_,q)|0,o=Math.imul(_,$),r=r+Math.imul(y,H)|0,i=(i=i+Math.imul(y,K)|0)+Math.imul(v,H)|0,o=o+Math.imul(v,K)|0,r=r+Math.imul(p,G)|0,i=(i=i+Math.imul(p,V)|0)+Math.imul(m,G)|0,o=o+Math.imul(m,V)|0;var be=(c+(r=r+Math.imul(l,Z)|0)|0)+((8191&(i=(i=i+Math.imul(l,J)|0)+Math.imul(h,Z)|0))<<13)|0;c=((o=o+Math.imul(h,J)|0)+(i>>>13)|0)+(be>>>26)|0,be&=67108863,r=Math.imul(D,q),i=(i=Math.imul(D,$))+Math.imul(E,q)|0,o=Math.imul(E,$),r=r+Math.imul(w,H)|0,i=(i=i+Math.imul(w,K)|0)+Math.imul(_,H)|0,o=o+Math.imul(_,K)|0,r=r+Math.imul(y,G)|0,i=(i=i+Math.imul(y,V)|0)+Math.imul(v,G)|0,o=o+Math.imul(v,V)|0,r=r+Math.imul(p,Z)|0,i=(i=i+Math.imul(p,J)|0)+Math.imul(m,Z)|0,o=o+Math.imul(m,J)|0;var we=(c+(r=r+Math.imul(l,Q)|0)|0)+((8191&(i=(i=i+Math.imul(l,ee)|0)+Math.imul(h,Q)|0))<<13)|0;c=((o=o+Math.imul(h,ee)|0)+(i>>>13)|0)+(we>>>26)|0,we&=67108863,r=Math.imul(A,q),i=(i=Math.imul(A,$))+Math.imul(S,q)|0,o=Math.imul(S,$),r=r+Math.imul(D,H)|0,i=(i=i+Math.imul(D,K)|0)+Math.imul(E,H)|0,o=o+Math.imul(E,K)|0,r=r+Math.imul(w,G)|0,i=(i=i+Math.imul(w,V)|0)+Math.imul(_,G)|0,o=o+Math.imul(_,V)|0,r=r+Math.imul(y,Z)|0,i=(i=i+Math.imul(y,J)|0)+Math.imul(v,Z)|0,o=o+Math.imul(v,J)|0,r=r+Math.imul(p,Q)|0,i=(i=i+Math.imul(p,ee)|0)+Math.imul(m,Q)|0,o=o+Math.imul(m,ee)|0;var _e=(c+(r=r+Math.imul(l,ne)|0)|0)+((8191&(i=(i=i+Math.imul(l,re)|0)+Math.imul(h,ne)|0))<<13)|0;c=((o=o+Math.imul(h,re)|0)+(i>>>13)|0)+(_e>>>26)|0,_e&=67108863,r=Math.imul(k,q),i=(i=Math.imul(k,$))+Math.imul(T,q)|0,o=Math.imul(T,$),r=r+Math.imul(A,H)|0,i=(i=i+Math.imul(A,K)|0)+Math.imul(S,H)|0,o=o+Math.imul(S,K)|0,r=r+Math.imul(D,G)|0,i=(i=i+Math.imul(D,V)|0)+Math.imul(E,G)|0,o=o+Math.imul(E,V)|0,r=r+Math.imul(w,Z)|0,i=(i=i+Math.imul(w,J)|0)+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,r=r+Math.imul(y,Q)|0,i=(i=i+Math.imul(y,ee)|0)+Math.imul(v,Q)|0,o=o+Math.imul(v,ee)|0,r=r+Math.imul(p,ne)|0,i=(i=i+Math.imul(p,re)|0)+Math.imul(m,ne)|0,o=o+Math.imul(m,re)|0;var xe=(c+(r=r+Math.imul(l,oe)|0)|0)+((8191&(i=(i=i+Math.imul(l,se)|0)+Math.imul(h,oe)|0))<<13)|0;c=((o=o+Math.imul(h,se)|0)+(i>>>13)|0)+(xe>>>26)|0,xe&=67108863,r=Math.imul(R,q),i=(i=Math.imul(R,$))+Math.imul(F,q)|0,o=Math.imul(F,$),r=r+Math.imul(k,H)|0,i=(i=i+Math.imul(k,K)|0)+Math.imul(T,H)|0,o=o+Math.imul(T,K)|0,r=r+Math.imul(A,G)|0,i=(i=i+Math.imul(A,V)|0)+Math.imul(S,G)|0,o=o+Math.imul(S,V)|0,r=r+Math.imul(D,Z)|0,i=(i=i+Math.imul(D,J)|0)+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,r=r+Math.imul(w,Q)|0,i=(i=i+Math.imul(w,ee)|0)+Math.imul(_,Q)|0,o=o+Math.imul(_,ee)|0,r=r+Math.imul(y,ne)|0,i=(i=i+Math.imul(y,re)|0)+Math.imul(v,ne)|0,o=o+Math.imul(v,re)|0,r=r+Math.imul(p,oe)|0,i=(i=i+Math.imul(p,se)|0)+Math.imul(m,oe)|0,o=o+Math.imul(m,se)|0;var De=(c+(r=r+Math.imul(l,ue)|0)|0)+((8191&(i=(i=i+Math.imul(l,ce)|0)+Math.imul(h,ue)|0))<<13)|0;c=((o=o+Math.imul(h,ce)|0)+(i>>>13)|0)+(De>>>26)|0,De&=67108863,r=Math.imul(B,q),i=(i=Math.imul(B,$))+Math.imul(P,q)|0,o=Math.imul(P,$),r=r+Math.imul(R,H)|0,i=(i=i+Math.imul(R,K)|0)+Math.imul(F,H)|0,o=o+Math.imul(F,K)|0,r=r+Math.imul(k,G)|0,i=(i=i+Math.imul(k,V)|0)+Math.imul(T,G)|0,o=o+Math.imul(T,V)|0,r=r+Math.imul(A,Z)|0,i=(i=i+Math.imul(A,J)|0)+Math.imul(S,Z)|0,o=o+Math.imul(S,J)|0,r=r+Math.imul(D,Q)|0,i=(i=i+Math.imul(D,ee)|0)+Math.imul(E,Q)|0,o=o+Math.imul(E,ee)|0,r=r+Math.imul(w,ne)|0,i=(i=i+Math.imul(w,re)|0)+Math.imul(_,ne)|0,o=o+Math.imul(_,re)|0,r=r+Math.imul(y,oe)|0,i=(i=i+Math.imul(y,se)|0)+Math.imul(v,oe)|0,o=o+Math.imul(v,se)|0,r=r+Math.imul(p,ue)|0,i=(i=i+Math.imul(p,ce)|0)+Math.imul(m,ue)|0,o=o+Math.imul(m,ce)|0;var Ee=(c+(r=r+Math.imul(l,le)|0)|0)+((8191&(i=(i=i+Math.imul(l,he)|0)+Math.imul(h,le)|0))<<13)|0;c=((o=o+Math.imul(h,he)|0)+(i>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,r=Math.imul(j,q),i=(i=Math.imul(j,$))+Math.imul(L,q)|0,o=Math.imul(L,$),r=r+Math.imul(B,H)|0,i=(i=i+Math.imul(B,K)|0)+Math.imul(P,H)|0,o=o+Math.imul(P,K)|0,r=r+Math.imul(R,G)|0,i=(i=i+Math.imul(R,V)|0)+Math.imul(F,G)|0,o=o+Math.imul(F,V)|0,r=r+Math.imul(k,Z)|0,i=(i=i+Math.imul(k,J)|0)+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,r=r+Math.imul(A,Q)|0,i=(i=i+Math.imul(A,ee)|0)+Math.imul(S,Q)|0,o=o+Math.imul(S,ee)|0,r=r+Math.imul(D,ne)|0,i=(i=i+Math.imul(D,re)|0)+Math.imul(E,ne)|0,o=o+Math.imul(E,re)|0,r=r+Math.imul(w,oe)|0,i=(i=i+Math.imul(w,se)|0)+Math.imul(_,oe)|0,o=o+Math.imul(_,se)|0,r=r+Math.imul(y,ue)|0,i=(i=i+Math.imul(y,ce)|0)+Math.imul(v,ue)|0,o=o+Math.imul(v,ce)|0,r=r+Math.imul(p,le)|0,i=(i=i+Math.imul(p,he)|0)+Math.imul(m,le)|0,o=o+Math.imul(m,he)|0;var Me=(c+(r=r+Math.imul(l,pe)|0)|0)+((8191&(i=(i=i+Math.imul(l,me)|0)+Math.imul(h,pe)|0))<<13)|0;c=((o=o+Math.imul(h,me)|0)+(i>>>13)|0)+(Me>>>26)|0,Me&=67108863,r=Math.imul(j,H),i=(i=Math.imul(j,K))+Math.imul(L,H)|0,o=Math.imul(L,K),r=r+Math.imul(B,G)|0,i=(i=i+Math.imul(B,V)|0)+Math.imul(P,G)|0,o=o+Math.imul(P,V)|0,r=r+Math.imul(R,Z)|0,i=(i=i+Math.imul(R,J)|0)+Math.imul(F,Z)|0,o=o+Math.imul(F,J)|0,r=r+Math.imul(k,Q)|0,i=(i=i+Math.imul(k,ee)|0)+Math.imul(T,Q)|0,o=o+Math.imul(T,ee)|0,r=r+Math.imul(A,ne)|0,i=(i=i+Math.imul(A,re)|0)+Math.imul(S,ne)|0,o=o+Math.imul(S,re)|0,r=r+Math.imul(D,oe)|0,i=(i=i+Math.imul(D,se)|0)+Math.imul(E,oe)|0,o=o+Math.imul(E,se)|0,r=r+Math.imul(w,ue)|0,i=(i=i+Math.imul(w,ce)|0)+Math.imul(_,ue)|0,o=o+Math.imul(_,ce)|0,r=r+Math.imul(y,le)|0,i=(i=i+Math.imul(y,he)|0)+Math.imul(v,le)|0,o=o+Math.imul(v,he)|0;var Ae=(c+(r=r+Math.imul(p,pe)|0)|0)+((8191&(i=(i=i+Math.imul(p,me)|0)+Math.imul(m,pe)|0))<<13)|0;c=((o=o+Math.imul(m,me)|0)+(i>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,r=Math.imul(j,G),i=(i=Math.imul(j,V))+Math.imul(L,G)|0,o=Math.imul(L,V),r=r+Math.imul(B,Z)|0,i=(i=i+Math.imul(B,J)|0)+Math.imul(P,Z)|0,o=o+Math.imul(P,J)|0,r=r+Math.imul(R,Q)|0,i=(i=i+Math.imul(R,ee)|0)+Math.imul(F,Q)|0,o=o+Math.imul(F,ee)|0,r=r+Math.imul(k,ne)|0,i=(i=i+Math.imul(k,re)|0)+Math.imul(T,ne)|0,o=o+Math.imul(T,re)|0,r=r+Math.imul(A,oe)|0,i=(i=i+Math.imul(A,se)|0)+Math.imul(S,oe)|0,o=o+Math.imul(S,se)|0,r=r+Math.imul(D,ue)|0,i=(i=i+Math.imul(D,ce)|0)+Math.imul(E,ue)|0,o=o+Math.imul(E,ce)|0,r=r+Math.imul(w,le)|0,i=(i=i+Math.imul(w,he)|0)+Math.imul(_,le)|0,o=o+Math.imul(_,he)|0;var Se=(c+(r=r+Math.imul(y,pe)|0)|0)+((8191&(i=(i=i+Math.imul(y,me)|0)+Math.imul(v,pe)|0))<<13)|0;c=((o=o+Math.imul(v,me)|0)+(i>>>13)|0)+(Se>>>26)|0,Se&=67108863,r=Math.imul(j,Z),i=(i=Math.imul(j,J))+Math.imul(L,Z)|0,o=Math.imul(L,J),r=r+Math.imul(B,Q)|0,i=(i=i+Math.imul(B,ee)|0)+Math.imul(P,Q)|0,o=o+Math.imul(P,ee)|0,r=r+Math.imul(R,ne)|0,i=(i=i+Math.imul(R,re)|0)+Math.imul(F,ne)|0,o=o+Math.imul(F,re)|0,r=r+Math.imul(k,oe)|0,i=(i=i+Math.imul(k,se)|0)+Math.imul(T,oe)|0,o=o+Math.imul(T,se)|0,r=r+Math.imul(A,ue)|0,i=(i=i+Math.imul(A,ce)|0)+Math.imul(S,ue)|0,o=o+Math.imul(S,ce)|0,r=r+Math.imul(D,le)|0,i=(i=i+Math.imul(D,he)|0)+Math.imul(E,le)|0,o=o+Math.imul(E,he)|0;var Ce=(c+(r=r+Math.imul(w,pe)|0)|0)+((8191&(i=(i=i+Math.imul(w,me)|0)+Math.imul(_,pe)|0))<<13)|0;c=((o=o+Math.imul(_,me)|0)+(i>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,r=Math.imul(j,Q),i=(i=Math.imul(j,ee))+Math.imul(L,Q)|0,o=Math.imul(L,ee),r=r+Math.imul(B,ne)|0,i=(i=i+Math.imul(B,re)|0)+Math.imul(P,ne)|0,o=o+Math.imul(P,re)|0,r=r+Math.imul(R,oe)|0,i=(i=i+Math.imul(R,se)|0)+Math.imul(F,oe)|0,o=o+Math.imul(F,se)|0,r=r+Math.imul(k,ue)|0,i=(i=i+Math.imul(k,ce)|0)+Math.imul(T,ue)|0,o=o+Math.imul(T,ce)|0,r=r+Math.imul(A,le)|0,i=(i=i+Math.imul(A,he)|0)+Math.imul(S,le)|0,o=o+Math.imul(S,he)|0;var ke=(c+(r=r+Math.imul(D,pe)|0)|0)+((8191&(i=(i=i+Math.imul(D,me)|0)+Math.imul(E,pe)|0))<<13)|0;c=((o=o+Math.imul(E,me)|0)+(i>>>13)|0)+(ke>>>26)|0,ke&=67108863,r=Math.imul(j,ne),i=(i=Math.imul(j,re))+Math.imul(L,ne)|0,o=Math.imul(L,re),r=r+Math.imul(B,oe)|0,i=(i=i+Math.imul(B,se)|0)+Math.imul(P,oe)|0,o=o+Math.imul(P,se)|0,r=r+Math.imul(R,ue)|0,i=(i=i+Math.imul(R,ce)|0)+Math.imul(F,ue)|0,o=o+Math.imul(F,ce)|0,r=r+Math.imul(k,le)|0,i=(i=i+Math.imul(k,he)|0)+Math.imul(T,le)|0,o=o+Math.imul(T,he)|0;var Te=(c+(r=r+Math.imul(A,pe)|0)|0)+((8191&(i=(i=i+Math.imul(A,me)|0)+Math.imul(S,pe)|0))<<13)|0;c=((o=o+Math.imul(S,me)|0)+(i>>>13)|0)+(Te>>>26)|0,Te&=67108863,r=Math.imul(j,oe),i=(i=Math.imul(j,se))+Math.imul(L,oe)|0,o=Math.imul(L,se),r=r+Math.imul(B,ue)|0,i=(i=i+Math.imul(B,ce)|0)+Math.imul(P,ue)|0,o=o+Math.imul(P,ce)|0,r=r+Math.imul(R,le)|0,i=(i=i+Math.imul(R,he)|0)+Math.imul(F,le)|0,o=o+Math.imul(F,he)|0;var Ie=(c+(r=r+Math.imul(k,pe)|0)|0)+((8191&(i=(i=i+Math.imul(k,me)|0)+Math.imul(T,pe)|0))<<13)|0;c=((o=o+Math.imul(T,me)|0)+(i>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,r=Math.imul(j,ue),i=(i=Math.imul(j,ce))+Math.imul(L,ue)|0,o=Math.imul(L,ce),r=r+Math.imul(B,le)|0,i=(i=i+Math.imul(B,he)|0)+Math.imul(P,le)|0,o=o+Math.imul(P,he)|0;var Re=(c+(r=r+Math.imul(R,pe)|0)|0)+((8191&(i=(i=i+Math.imul(R,me)|0)+Math.imul(F,pe)|0))<<13)|0;c=((o=o+Math.imul(F,me)|0)+(i>>>13)|0)+(Re>>>26)|0,Re&=67108863,r=Math.imul(j,le),i=(i=Math.imul(j,he))+Math.imul(L,le)|0,o=Math.imul(L,he);var Fe=(c+(r=r+Math.imul(B,pe)|0)|0)+((8191&(i=(i=i+Math.imul(B,me)|0)+Math.imul(P,pe)|0))<<13)|0;c=((o=o+Math.imul(P,me)|0)+(i>>>13)|0)+(Fe>>>26)|0,Fe&=67108863;var Oe=(c+(r=Math.imul(j,pe))|0)+((8191&(i=(i=Math.imul(j,me))+Math.imul(L,pe)|0))<<13)|0;return c=((o=Math.imul(L,me))+(i>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,u[0]=ge,u[1]=ye,u[2]=ve,u[3]=be,u[4]=we,u[5]=_e,u[6]=xe,u[7]=De,u[8]=Ee,u[9]=Me,u[10]=Ae,u[11]=Se,u[12]=Ce,u[13]=ke,u[14]=Te,u[15]=Ie,u[16]=Re,u[17]=Fe,u[18]=Oe,0!==c&&(u[19]=c,n.length++),n};function m(e,t,n){return(new g).mulp(e,t,n)}function g(e,t){this.x=e,this.y=t}Math.imul||(p=f),o.prototype.mulTo=function(e,t){var n,r=this.length+e.length;return n=10===this.length&&10===e.length?p(this,e,t):r<63?f(this,e,t):r<1024?function(e,t,n){n.negative=t.negative^e.negative,n.length=e.length+t.length;for(var r=0,i=0,o=0;o>>26)|0)>>>26,s&=67108863}n.words[o]=a,r=s,s=i}return 0!==r?n.words[o]=r:n.length--,n.strip()}(this,e,t):m(this,e,t),n},g.prototype.makeRBT=function(e){for(var t=new Array(e),n=o.prototype._countBits(e)-1,r=0;r>=1;return r},g.prototype.permute=function(e,t,n,r,i,o){for(var s=0;s>>=1)i++;return 1<>>=13,n[2*s+1]=8191&o,o>>>=13;for(s=2*t;s>=26,t+=i/67108864|0,t+=o>>>26,this.words[n]=67108863&o}return 0!==t&&(this.words[n]=t,this.length++),this},o.prototype.muln=function(e){return this.clone().imuln(e)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),n=0;n>>i}return t}(e);if(0===t.length)return new o(1);for(var n=this,r=0;r=0);var t,n=e%26,i=(e-n)/26,o=67108863>>>26-n<<26-n;if(0!==n){var s=0;for(t=0;t>>26-n}s&&(this.words[t]=s,this.length++)}if(0!==i){for(t=this.length-1;t>=0;t--)this.words[t+i]=this.words[t];for(t=0;t=0),i=t?(t-t%26)/26:0;var o=e%26,s=Math.min((e-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,c=0;c=0&&(0!==d||c>=i);c--){var l=0|this.words[c];this.words[c]=d<<26-o|l>>>o,d=l&a}return u&&0!==d&&(u.words[u.length++]=d),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(e,t,n){return r(0===this.negative),this.iushrn(e,t,n)},o.prototype.shln=function(e){return this.clone().ishln(e)},o.prototype.ushln=function(e){return this.clone().iushln(e)},o.prototype.shrn=function(e){return this.clone().ishrn(e)},o.prototype.ushrn=function(e){return this.clone().iushrn(e)},o.prototype.testn=function(e){r("number"==typeof e&&e>=0);var t=e%26,n=(e-t)/26,i=1<=0);var t=e%26,n=(e-t)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==t&&n++,this.length=Math.min(n,this.length),0!==t){var i=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},o.prototype.isubn=function(e){if(r("number"==typeof e),r(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[i+n]=67108863&o}for(;i>26,this.words[i+n]=67108863&o;if(0===a)return this.strip();for(r(-1===a),a=0,i=0;i>26,this.words[i]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(e,t){var n=(this.length,e.length),r=this.clone(),i=e,s=0|i.words[i.length-1];0!==(n=26-this._countBits(s))&&(i=i.ushln(n),r.iushln(n),s=0|i.words[i.length-1]);var a,u=r.length-i.length;if("mod"!==t){(a=new o(null)).length=u+1,a.words=new Array(a.length);for(var c=0;c=0;l--){var h=67108864*(0|r.words[i.length+l])+(0|r.words[i.length+l-1]);for(h=Math.min(h/s|0,67108863),r._ishlnsubmul(i,h,l);0!==r.negative;)h--,r.negative=0,r._ishlnsubmul(i,1,l),r.isZero()||(r.negative^=1);a&&(a.words[l]=h)}return a&&a.strip(),r.strip(),"div"!==t&&0!==n&&r.iushrn(n),{div:a||null,mod:r}},o.prototype.divmod=function(e,t,n){return r(!e.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===e.negative?(a=this.neg().divmod(e,t),"mod"!==t&&(i=a.div.neg()),"div"!==t&&(s=a.mod.neg(),n&&0!==s.negative&&s.iadd(e)),{div:i,mod:s}):0===this.negative&&0!==e.negative?(a=this.divmod(e.neg(),t),"mod"!==t&&(i=a.div.neg()),{div:i,mod:a.mod}):this.negative&e.negative?(a=this.neg().divmod(e.neg(),t),"div"!==t&&(s=a.mod.neg(),n&&0!==s.negative&&s.isub(e)),{div:a.div,mod:s}):e.length>this.length||this.cmp(e)<0?{div:new o(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new o(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new o(this.modn(e.words[0]))}:this._wordDiv(e,t);var i,s,a},o.prototype.div=function(e){return this.divmod(e,"div",!1).div},o.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},o.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},o.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var n=0!==t.div.negative?t.mod.isub(e):t.mod,r=e.ushrn(1),i=e.andln(1),o=n.cmp(r);return o<0||1===i&&0===o?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},o.prototype.modn=function(e){r(e<=67108863);for(var t=(1<<26)%e,n=0,i=this.length-1;i>=0;i--)n=(t*n+(0|this.words[i]))%e;return n},o.prototype.idivn=function(e){r(e<=67108863);for(var t=0,n=this.length-1;n>=0;n--){var i=(0|this.words[n])+67108864*t;this.words[n]=i/e|0,t=i%e}return this.strip()},o.prototype.divn=function(e){return this.clone().idivn(e)},o.prototype.egcd=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i=new o(1),s=new o(0),a=new o(0),u=new o(1),c=0;t.isEven()&&n.isEven();)t.iushrn(1),n.iushrn(1),++c;for(var d=n.clone(),l=t.clone();!t.isZero();){for(var h=0,f=1;!(t.words[0]&f)&&h<26;++h,f<<=1);if(h>0)for(t.iushrn(h);h-- >0;)(i.isOdd()||s.isOdd())&&(i.iadd(d),s.isub(l)),i.iushrn(1),s.iushrn(1);for(var p=0,m=1;!(n.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(n.iushrn(p);p-- >0;)(a.isOdd()||u.isOdd())&&(a.iadd(d),u.isub(l)),a.iushrn(1),u.iushrn(1);t.cmp(n)>=0?(t.isub(n),i.isub(a),s.isub(u)):(n.isub(t),a.isub(i),u.isub(s))}return{a,b:u,gcd:n.iushln(c)}},o.prototype._invmp=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i,s=new o(1),a=new o(0),u=n.clone();t.cmpn(1)>0&&n.cmpn(1)>0;){for(var c=0,d=1;!(t.words[0]&d)&&c<26;++c,d<<=1);if(c>0)for(t.iushrn(c);c-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);for(var l=0,h=1;!(n.words[0]&h)&&l<26;++l,h<<=1);if(l>0)for(n.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(u),a.iushrn(1);t.cmp(n)>=0?(t.isub(n),s.isub(a)):(n.isub(t),a.isub(s))}return(i=0===t.cmpn(1)?s:a).cmpn(0)<0&&i.iadd(e),i},o.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),n=e.clone();t.negative=0,n.negative=0;for(var r=0;t.isEven()&&n.isEven();r++)t.iushrn(1),n.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;n.isEven();)n.iushrn(1);var i=t.cmp(n);if(i<0){var o=t;t=n,n=o}else if(0===i||0===n.cmpn(1))break;t.isub(n)}return n.iushln(r)},o.prototype.invm=function(e){return this.egcd(e).a.umod(e)},o.prototype.isEven=function(){return!(1&this.words[0])},o.prototype.isOdd=function(){return!(1&~this.words[0])},o.prototype.andln=function(e){return this.words[0]&e},o.prototype.bincn=function(e){r("number"==typeof e);var t=e%26,n=(e-t)/26,i=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(e){var t,n=e<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this.strip(),this.length>1)t=1;else{n&&(e=-e),r(e<=67108863,"Number is too big");var i=0|this.words[0];t=i===e?0:ie.length)return 1;if(this.length=0;n--){var r=0|this.words[n],i=0|e.words[n];if(r!==i){ri&&(t=1);break}}return t},o.prototype.gtn=function(e){return 1===this.cmpn(e)},o.prototype.gt=function(e){return 1===this.cmp(e)},o.prototype.gten=function(e){return this.cmpn(e)>=0},o.prototype.gte=function(e){return this.cmp(e)>=0},o.prototype.ltn=function(e){return-1===this.cmpn(e)},o.prototype.lt=function(e){return-1===this.cmp(e)},o.prototype.lten=function(e){return this.cmpn(e)<=0},o.prototype.lte=function(e){return this.cmp(e)<=0},o.prototype.eqn=function(e){return 0===this.cmpn(e)},o.prototype.eq=function(e){return 0===this.cmp(e)},o.red=function(e){return new D(e)},o.prototype.toRed=function(e){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},o.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(e){return this.red=e,this},o.prototype.forceRed=function(e){return r(!this.red,"Already a number in reduction context"),this._forceRed(e)},o.prototype.redAdd=function(e){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},o.prototype.redIAdd=function(e){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},o.prototype.redSub=function(e){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},o.prototype.redISub=function(e){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},o.prototype.redShl=function(e){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},o.prototype.redMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},o.prototype.redIMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},o.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(e){return r(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var y={k256:null,p224:null,p192:null,p25519:null};function v(e,t){this.name=e,this.p=new o(t,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function b(){v.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function w(){v.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function _(){v.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function x(){v.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function D(e){if("string"==typeof e){var t=o._prime(e);this.m=t.p,this.prime=t}else r(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function E(e){D.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}v.prototype._tmp=function(){var e=new o(null);return e.words=new Array(Math.ceil(this.n/13)),e},v.prototype.ireduce=function(e){var t,n=e;do{this.split(n,this.tmp),t=(n=(n=this.imulK(n)).iadd(this.tmp)).bitLength()}while(t>this.n);var r=t0?n.isub(this.p):void 0!==n.strip?n.strip():n._strip(),n},v.prototype.split=function(e,t){e.iushrn(this.n,0,t)},v.prototype.imulK=function(e){return e.imul(this.k)},i(b,v),b.prototype.split=function(e,t){for(var n=4194303,r=Math.min(e.length,9),i=0;i>>22,o=s}o>>>=22,e.words[i-10]=o,0===o&&e.length>10?e.length-=10:e.length-=9},b.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,n=0;n>>=26,e.words[n]=i,t=r}return 0!==t&&(e.words[e.length++]=t),e},o._prime=function(e){if(y[e])return y[e];var t;if("k256"===e)t=new b;else if("p224"===e)t=new w;else if("p192"===e)t=new _;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new x}return y[e]=t,t},D.prototype._verify1=function(e){r(0===e.negative,"red works only with positives"),r(e.red,"red works only with red numbers")},D.prototype._verify2=function(e,t){r(!(e.negative|t.negative),"red works only with positives"),r(e.red&&e.red===t.red,"red works only with red numbers")},D.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},D.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},D.prototype.add=function(e,t){this._verify2(e,t);var n=e.add(t);return n.cmp(this.m)>=0&&n.isub(this.m),n._forceRed(this)},D.prototype.iadd=function(e,t){this._verify2(e,t);var n=e.iadd(t);return n.cmp(this.m)>=0&&n.isub(this.m),n},D.prototype.sub=function(e,t){this._verify2(e,t);var n=e.sub(t);return n.cmpn(0)<0&&n.iadd(this.m),n._forceRed(this)},D.prototype.isub=function(e,t){this._verify2(e,t);var n=e.isub(t);return n.cmpn(0)<0&&n.iadd(this.m),n},D.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},D.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},D.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},D.prototype.isqr=function(e){return this.imul(e,e.clone())},D.prototype.sqr=function(e){return this.mul(e,e)},D.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(r(t%2==1),3===t){var n=this.m.add(new o(1)).iushrn(2);return this.pow(e,n)}for(var i=this.m.subn(1),s=0;!i.isZero()&&0===i.andln(1);)s++,i.iushrn(1);r(!i.isZero());var a=new o(1).toRed(this),u=a.redNeg(),c=this.m.subn(1).iushrn(1),d=this.m.bitLength();for(d=new o(2*d*d).toRed(this);0!==this.pow(d,c).cmp(u);)d.redIAdd(u);for(var l=this.pow(d,i),h=this.pow(e,i.addn(1).iushrn(1)),f=this.pow(e,i),p=s;0!==f.cmp(a);){for(var m=f,g=0;0!==m.cmp(a);g++)m=m.redSqr();r(g=0;r--){for(var c=t.words[r],d=u-1;d>=0;d--){var l=c>>d&1;i!==n[0]&&(i=this.sqr(i)),0!==l||0!==s?(s<<=1,s|=l,(4===++a||0===r&&0===d)&&(i=this.mul(i,n[s]),a=0,s=0)):a=0}u=26}return i},D.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},D.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},o.mont=function(e){return new E(e)},i(E,D),E.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},E.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},E.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var n=e.imul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=n.isub(r).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},E.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new o(0)._forceRed(this);var n=e.mul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=n.isub(r).iushrn(this.shift),s=i;return i.cmp(this.m)>=0?s=i.isub(this.m):i.cmpn(0)<0&&(s=i.iadd(this.m)),s._forceRed(this)},E.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=n.nmd(e),this)},7598:(e,t,n)=>{ +/*! + * mime-db + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson + * MIT Licensed + */ +e.exports=n(81813)},86049:(e,t,n)=>{"use strict"; +/*! + * mime-types + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */var r,i,o,s=n(7598),a=n(57975).extname,u=/^\s*([^;\s]*)(?:;|\s|$)/,c=/^text\//i;function d(e){if(!e||"string"!=typeof e)return!1;var t=u.exec(e),n=t&&s[t[1].toLowerCase()];return n&&n.charset?n.charset:!(!t||!c.test(t[1]))&&"UTF-8"}t.charset=d,t.charsets={lookup:d},t.contentType=function(e){if(!e||"string"!=typeof e)return!1;var n=-1===e.indexOf("/")?t.lookup(e):e;if(!n)return!1;if(-1===n.indexOf("charset")){var r=t.charset(n);r&&(n+="; charset="+r.toLowerCase())}return n},t.extension=function(e){if(!e||"string"!=typeof e)return!1;var n=u.exec(e),r=n&&t.extensions[n[1].toLowerCase()];if(!r||!r.length)return!1;return r[0]},t.extensions=Object.create(null),t.lookup=function(e){if(!e||"string"!=typeof e)return!1;var n=a("x."+e).toLowerCase().substr(1);if(!n)return!1;return t.types[n]||!1},t.types=Object.create(null),r=t.extensions,i=t.types,o=["nginx","apache",void 0,"iana"],Object.keys(s).forEach((function(e){var t=s[e],n=t.extensions;if(n&&n.length){r[e]=n;for(var a=0;ad||c===d&&"application/"===i[u].substr(0,12)))continue}i[u]=e}}}))},43349:e=>{function t(e,t){if(!e)throw new Error(t||"Assertion failed")}e.exports=t,t.equal=function(e,t,n){if(e!=t)throw new Error(n||"Assertion failed: "+e+" != "+t)}},64367:(e,t)=>{"use strict";var n=t;function r(e){return 1===e.length?"0"+e:e}function i(e){for(var t="",n=0;n>8,s=255&i;o?n.push(o,s):n.push(s)}return n},n.zero2=r,n.toHex=i,n.encode=function(e,t){return"hex"===t?i(e):e}},6585:e=>{var t=1e3,n=60*t,r=60*n,i=24*r,o=7*i,s=365.25*i;function a(e,t,n,r){var i=t>=1.5*n;return Math.round(e/n)+" "+r+(i?"s":"")}e.exports=function(e,u){u=u||{};var c=typeof e;if("string"===c&&e.length>0)return function(e){if((e=String(e)).length>100)return;var a=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!a)return;var u=parseFloat(a[1]);switch((a[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return u*s;case"weeks":case"week":case"w":return u*o;case"days":case"day":case"d":return u*i;case"hours":case"hour":case"hrs":case"hr":case"h":return u*r;case"minutes":case"minute":case"mins":case"min":case"m":return u*n;case"seconds":case"second":case"secs":case"sec":case"s":return u*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return u;default:return}}(e);if("number"===c&&isFinite(e))return u.long?function(e){var o=Math.abs(e);if(o>=i)return a(e,o,i,"day");if(o>=r)return a(e,o,r,"hour");if(o>=n)return a(e,o,n,"minute");if(o>=t)return a(e,o,t,"second");return e+" ms"}(e):function(e){var o=Math.abs(e);if(o>=i)return Math.round(e/i)+"d";if(o>=r)return Math.round(e/r)+"h";if(o>=n)return Math.round(e/n)+"m";if(o>=t)return Math.round(e/t)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},43092:(e,t,n)=>{"use strict";var r=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("unable to locate global object")}();e.exports=t=r.fetch,r.fetch&&(t.default=r.fetch.bind(r)),t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response},21137:(e,t,n)=>{"use strict";var r=n(87568);t.certificate=n(36413);var i=r.define("RSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())}));t.RSAPrivateKey=i;var o=r.define("RSAPublicKey",(function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())}));t.RSAPublicKey=o;var s=r.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())})),a=r.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(s),this.key("subjectPublicKey").bitstr())}));t.PublicKey=a;var u=r.define("PrivateKeyInfo",(function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(s),this.key("subjectPrivateKey").octstr())}));t.PrivateKey=u;var c=r.define("EncryptedPrivateKeyInfo",(function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())}));t.EncryptedPrivateKey=c;var d=r.define("DSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())}));t.DSAPrivateKey=d,t.DSAparam=r.define("DSAparam",(function(){this.int()}));var l=r.define("ECParameters",(function(){this.choice({namedCurve:this.objid()})})),h=r.define("ECPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(l),this.key("publicKey").optional().explicit(1).bitstr())}));t.ECPrivateKey=h,t.signature=r.define("signature",(function(){this.seq().obj(this.key("r").int(),this.key("s").int())}))},36413:(e,t,n)=>{"use strict";var r=n(87568),i=r.define("Time",(function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})})),o=r.define("AttributeTypeValue",(function(){this.seq().obj(this.key("type").objid(),this.key("value").any())})),s=r.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())})),a=r.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(s),this.key("subjectPublicKey").bitstr())})),u=r.define("RelativeDistinguishedName",(function(){this.setof(o)})),c=r.define("RDNSequence",(function(){this.seqof(u)})),d=r.define("Name",(function(){this.choice({rdnSequence:this.use(c)})})),l=r.define("Validity",(function(){this.seq().obj(this.key("notBefore").use(i),this.key("notAfter").use(i))})),h=r.define("Extension",(function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())})),f=r.define("TBSCertificate",(function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(s),this.key("issuer").use(d),this.key("validity").use(l),this.key("subject").use(d),this.key("subjectPublicKeyInfo").use(a),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(h).optional())})),p=r.define("X509Certificate",(function(){this.seq().obj(this.key("tbsCertificate").use(f),this.key("signatureAlgorithm").use(s),this.key("signatureValue").bitstr())}));e.exports=p},24101:(e,t,n)=>{"use strict";var r=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m,i=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,o=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,s=n(68078),a=n(1241),u=n(92861).Buffer;e.exports=function(e,t){var n,c=e.toString(),d=c.match(r);if(d){var l="aes"+d[1],h=u.from(d[2],"hex"),f=u.from(d[3].replace(/[\r\n]/g,""),"base64"),p=s(t,h.slice(0,8),parseInt(d[1],10)).key,m=[],g=a.createDecipheriv(l,p,h);m.push(g.update(f)),m.push(g.final()),n=u.concat(m)}else{var y=c.match(o);n=u.from(y[2].replace(/[\r\n]/g,""),"base64")}return{tag:c.match(i)[1],data:n}}},78170:(e,t,n)=>{"use strict";var r=n(21137),i=n(15579),o=n(24101),s=n(1241),a=n(78396),u=n(92861).Buffer;function c(e){var t;"object"!=typeof e||u.isBuffer(e)||(t=e.passphrase,e=e.key),"string"==typeof e&&(e=u.from(e));var n,c,d=o(e,t),l=d.tag,h=d.data;switch(l){case"CERTIFICATE":c=r.certificate.decode(h,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(c||(c=r.PublicKey.decode(h,"der")),n=c.algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return r.RSAPublicKey.decode(c.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return c.subjectPrivateKey=c.subjectPublicKey,{type:"ec",data:c};case"1.2.840.10040.4.1":return c.algorithm.params.pub_key=r.DSAparam.decode(c.subjectPublicKey.data,"der"),{type:"dsa",data:c.algorithm.params};default:throw new Error("unknown key id "+n)}case"ENCRYPTED PRIVATE KEY":h=function(e,t){var n=e.algorithm.decrypt.kde.kdeparams.salt,r=parseInt(e.algorithm.decrypt.kde.kdeparams.iters.toString(),10),o=i[e.algorithm.decrypt.cipher.algo.join(".")],c=e.algorithm.decrypt.cipher.iv,d=e.subjectPrivateKey,l=parseInt(o.split("-")[1],10)/8,h=a.pbkdf2Sync(t,n,r,l,"sha1"),f=s.createDecipheriv(o,h,c),p=[];return p.push(f.update(d)),p.push(f.final()),u.concat(p)}(h=r.EncryptedPrivateKey.decode(h,"der"),t);case"PRIVATE KEY":switch(n=(c=r.PrivateKey.decode(h,"der")).algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return r.RSAPrivateKey.decode(c.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:c.algorithm.curve,privateKey:r.ECPrivateKey.decode(c.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return c.algorithm.params.priv_key=r.DSAparam.decode(c.subjectPrivateKey,"der"),{type:"dsa",params:c.algorithm.params};default:throw new Error("unknown key id "+n)}case"RSA PUBLIC KEY":return r.RSAPublicKey.decode(h,"der");case"RSA PRIVATE KEY":return r.RSAPrivateKey.decode(h,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:r.DSAPrivateKey.decode(h,"der")};case"EC PRIVATE KEY":return{curve:(h=r.ECPrivateKey.decode(h,"der")).parameters.value,privateKey:h.privateKey};default:throw new Error("unknown key type "+l)}}c.signature=r.signature,e.exports=c},57975:(e,t,n)=>{"use strict";var r=n(65606);function i(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function o(e,t){for(var n,r="",i=0,o=-1,s=0,a=0;a<=e.length;++a){if(a2){var u=r.lastIndexOf("/");if(u!==r.length-1){-1===u?(r="",i=0):i=(r=r.slice(0,u)).length-1-r.lastIndexOf("/"),o=a,s=0;continue}}else if(2===r.length||1===r.length){r="",i=0,o=a,s=0;continue}t&&(r.length>0?r+="/..":r="..",i=2)}else r.length>0?r+="/"+e.slice(o+1,a):r=e.slice(o+1,a),i=a-o-1;o=a,s=0}else 46===n&&-1!==s?++s:s=-1}return r}var s={resolve:function(){for(var e,t="",n=!1,s=arguments.length-1;s>=-1&&!n;s--){var a;s>=0?a=arguments[s]:(void 0===e&&(e=r.cwd()),a=e),i(a),0!==a.length&&(t=a+"/"+t,n=47===a.charCodeAt(0))}return t=o(t,!n),n?t.length>0?"/"+t:"/":t.length>0?t:"."},normalize:function(e){if(i(e),0===e.length)return".";var t=47===e.charCodeAt(0),n=47===e.charCodeAt(e.length-1);return 0!==(e=o(e,!t)).length||t||(e="."),e.length>0&&n&&(e+="/"),t?"/"+e:e},isAbsolute:function(e){return i(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,t=0;t0&&(void 0===e?e=n:e+="/"+n)}return void 0===e?".":s.normalize(e)},relative:function(e,t){if(i(e),i(t),e===t)return"";if((e=s.resolve(e))===(t=s.resolve(t)))return"";for(var n=1;nc){if(47===t.charCodeAt(a+l))return t.slice(a+l+1);if(0===l)return t.slice(a+l)}else o>c&&(47===e.charCodeAt(n+l)?d=l:0===l&&(d=0));break}var h=e.charCodeAt(n+l);if(h!==t.charCodeAt(a+l))break;47===h&&(d=l)}var f="";for(l=n+d+1;l<=r;++l)l!==r&&47!==e.charCodeAt(l)||(0===f.length?f+="..":f+="/..");return f.length>0?f+t.slice(a+d):(a+=d,47===t.charCodeAt(a)&&++a,t.slice(a))},_makeLong:function(e){return e},dirname:function(e){if(i(e),0===e.length)return".";for(var t=e.charCodeAt(0),n=47===t,r=-1,o=!0,s=e.length-1;s>=1;--s)if(47===(t=e.charCodeAt(s))){if(!o){r=s;break}}else o=!1;return-1===r?n?"/":".":n&&1===r?"//":e.slice(0,r)},basename:function(e,t){if(void 0!==t&&"string"!=typeof t)throw new TypeError('"ext" argument must be a string');i(e);var n,r=0,o=-1,s=!0;if(void 0!==t&&t.length>0&&t.length<=e.length){if(t.length===e.length&&t===e)return"";var a=t.length-1,u=-1;for(n=e.length-1;n>=0;--n){var c=e.charCodeAt(n);if(47===c){if(!s){r=n+1;break}}else-1===u&&(s=!1,u=n+1),a>=0&&(c===t.charCodeAt(a)?-1==--a&&(o=n):(a=-1,o=u))}return r===o?o=u:-1===o&&(o=e.length),e.slice(r,o)}for(n=e.length-1;n>=0;--n)if(47===e.charCodeAt(n)){if(!s){r=n+1;break}}else-1===o&&(s=!1,o=n+1);return-1===o?"":e.slice(r,o)},extname:function(e){i(e);for(var t=-1,n=0,r=-1,o=!0,s=0,a=e.length-1;a>=0;--a){var u=e.charCodeAt(a);if(47!==u)-1===r&&(o=!1,r=a+1),46===u?-1===t?t=a:1!==s&&(s=1):-1!==t&&(s=-1);else if(!o){n=a+1;break}}return-1===t||-1===r||0===s||1===s&&t===r-1&&t===n+1?"":e.slice(t,r)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,t){var n=t.dir||t.root,r=t.base||(t.name||"")+(t.ext||"");return n?n===t.root?n+r:n+e+r:r}("/",e)},parse:function(e){i(e);var t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;var n,r=e.charCodeAt(0),o=47===r;o?(t.root="/",n=1):n=0;for(var s=-1,a=0,u=-1,c=!0,d=e.length-1,l=0;d>=n;--d)if(47!==(r=e.charCodeAt(d)))-1===u&&(c=!1,u=d+1),46===r?-1===s?s=d:1!==l&&(l=1):-1!==s&&(l=-1);else if(!c){a=d+1;break}return-1===s||-1===u||0===l||1===l&&s===u-1&&s===a+1?-1!==u&&(t.base=t.name=0===a&&o?e.slice(1,u):e.slice(a,u)):(0===a&&o?(t.name=e.slice(1,s),t.base=e.slice(1,u)):(t.name=e.slice(a,s),t.base=e.slice(a,u)),t.ext=e.slice(s,u)),a>0?t.dir=e.slice(0,a-1):o&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};s.posix=s,e.exports=s},78396:(e,t,n)=>{t.pbkdf2=n(43832),t.pbkdf2Sync=n(21352)},43832:(e,t,n)=>{var r,i,o=n(92861).Buffer,s=n(64196),a=n(2455),u=n(21352),c=n(93382),d=n.g.crypto&&n.g.crypto.subtle,l={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},h=[];function f(){return i||(i=n.g.process&&n.g.process.nextTick?n.g.process.nextTick:n.g.queueMicrotask?n.g.queueMicrotask:n.g.setImmediate?n.g.setImmediate:n.g.setTimeout)}function p(e,t,n,r,i){return d.importKey("raw",e,{name:"PBKDF2"},!1,["deriveBits"]).then((function(e){return d.deriveBits({name:"PBKDF2",salt:t,iterations:n,hash:{name:i}},e,r<<3)})).then((function(e){return o.from(e)}))}e.exports=function(e,t,i,m,g,y){"function"==typeof g&&(y=g,g=void 0);var v=l[(g=g||"sha1").toLowerCase()];if(v&&"function"==typeof n.g.Promise){if(s(i,m),e=c(e,a,"Password"),t=c(t,a,"Salt"),"function"!=typeof y)throw new Error("No callback provided to pbkdf2");!function(e,t){e.then((function(e){f()((function(){t(null,e)}))}),(function(e){f()((function(){t(e)}))}))}(function(e){if(n.g.process&&!n.g.process.browser)return Promise.resolve(!1);if(!d||!d.importKey||!d.deriveBits)return Promise.resolve(!1);if(void 0!==h[e])return h[e];var t=p(r=r||o.alloc(8),r,10,128,e).then((function(){return!0})).catch((function(){return!1}));return h[e]=t,t}(v).then((function(n){return n?p(e,t,i,m,v):u(e,t,i,m,g)})),y)}else f()((function(){var n;try{n=u(e,t,i,m,g)}catch(e){return y(e)}y(null,n)}))}},2455:(e,t,n)=>{var r,i=n(65606);if(n.g.process&&n.g.process.browser)r="utf-8";else if(n.g.process&&n.g.process.version){r=parseInt(i.version.split(".")[0].slice(1),10)>=6?"utf-8":"binary"}else r="utf-8";e.exports=r},64196:e=>{var t=Math.pow(2,30)-1;e.exports=function(e,n){if("number"!=typeof e)throw new TypeError("Iterations not a number");if(e<0)throw new TypeError("Bad iterations");if("number"!=typeof n)throw new TypeError("Key length not a number");if(n<0||n>t||n!=n)throw new TypeError("Bad key length")}},21352:(e,t,n)=>{var r=n(20320),i=n(66011),o=n(62802),s=n(92861).Buffer,a=n(64196),u=n(2455),c=n(93382),d=s.alloc(128),l={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function h(e,t,n){var a=function(e){function t(t){return o(e).update(t).digest()}function n(e){return(new i).update(e).digest()}return"rmd160"===e||"ripemd160"===e?n:"md5"===e?r:t}(e),u="sha512"===e||"sha384"===e?128:64;t.length>u?t=a(t):t.length{var r=n(92861).Buffer;e.exports=function(e,t,n){if(r.isBuffer(e))return e;if("string"==typeof e)return r.from(e,t);if(ArrayBuffer.isView(e))return r.from(e.buffer);throw new TypeError(n+" must be a string, a Buffer, a typed array or a DataView")}},80819:e=>{e.exports={pad:function(e,t){var n=e;if("number"!=typeof t)t=16;else{if(t>255)throw new RangeError("pad(): PKCS#7 padding cannot be longer than 255 bytes");if(t<0)throw new RangeError("pad(): PKCS#7 padding size must be positive")}if("string"==typeof e){var r=t-e.length%t;isNaN(r)&&(r=0);for(var i=String.fromCharCode(r),o=0;o0){var n=e.charCodeAt(e.length-1);if(n>e.length)throw new Error("unpad(): cannot remove "+n+" bytes from a "+e.length+"-byte(s) string");for(var r=e.length-2,i=e.length-n;r>=i;r--)if(e.charCodeAt(r)!==n)throw new Error("unpad(): found a padding byte of "+e.charCodeAt(r)+" instead of "+n+" at position "+r);t=e.substring(0,i)}else if(e instanceof Uint8Array||e instanceof Uint8ClampedArray){var o=e.byteLength,s=o-(n=e[o-1]);if(s<0)throw new Error("unpad(): cannot remove "+n+" bytes from a "+o+"-byte(s) string");for(r=o-2;r>=s;r--)if(e[r]!==n)throw new Error("unpad(): found a padding byte of "+e[r]+" instead of "+n+" at position "+r);t=e.slice(0,s)}return t}}},76578:e=>{"use strict";e.exports=["Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array"]},33225:(e,t,n)=>{"use strict";var r=n(65606);void 0===r||!r.version||0===r.version.indexOf("v0.")||0===r.version.indexOf("v1.")&&0!==r.version.indexOf("v1.8.")?e.exports={nextTick:function(e,t,n,i){if("function"!=typeof e)throw new TypeError('"callback" argument must be a function');var o,s,a=arguments.length;switch(a){case 0:case 1:return r.nextTick(e);case 2:return r.nextTick((function(){e.call(null,t)}));case 3:return r.nextTick((function(){e.call(null,t,n)}));case 4:return r.nextTick((function(){e.call(null,t,n,i)}));default:for(o=new Array(a-1),s=0;s{var t,n,r=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(e){if(t===setTimeout)return setTimeout(e,0);if((t===i||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(n){try{return t.call(null,e,0)}catch(n){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:i}catch(e){t=i}try{n="function"==typeof clearTimeout?clearTimeout:o}catch(e){n=o}}();var a,u=[],c=!1,d=-1;function l(){c&&a&&(c=!1,a.length?u=a.concat(u):d=-1,u.length&&h())}function h(){if(!c){var e=s(l);c=!0;for(var t=u.length;t;){for(a=u,u=[];++d1)for(var n=1;n{t.publicEncrypt=n(28902),t.privateDecrypt=n(77362),t.privateEncrypt=function(e,n){return t.publicEncrypt(e,n,!0)},t.publicDecrypt=function(e,n){return t.privateDecrypt(e,n,!0)}},48206:(e,t,n)=>{var r=n(47108),i=n(92861).Buffer;function o(e){var t=i.allocUnsafe(4);return t.writeUInt32BE(e,0),t}e.exports=function(e,t){for(var n,s=i.alloc(0),a=0;s.length=65&&n<=70?n-55:n>=97&&n<=102?n-87:n-48&15}function u(e,t,n){var r=a(e,n);return n-1>=t&&(r|=a(e,n-1)<<4),r}function c(e,t,n,r){for(var i=0,o=Math.min(e.length,n),s=t;s=49?a-49+10:a>=17?a-17+10:a}return i}o.isBN=function(e){return e instanceof o||null!==e&&"object"==typeof e&&e.constructor.wordSize===o.wordSize&&Array.isArray(e.words)},o.max=function(e,t){return e.cmp(t)>0?e:t},o.min=function(e,t){return e.cmp(t)<0?e:t},o.prototype._init=function(e,t,n){if("number"==typeof e)return this._initNumber(e,t,n);if("object"==typeof e)return this._initArray(e,t,n);"hex"===t&&(t=16),r(t===(0|t)&&t>=2&&t<=36);var i=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(i++,this.negative=1),i=0;i-=3)s=e[i]|e[i-1]<<8|e[i-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===n)for(i=0,o=0;i>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(e,t,n){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var r=0;r=t;r-=2)i=u(e,t,r)<=18?(o-=18,s+=1,this.words[s]|=i>>>26):o+=8;else for(r=(e.length-t)%2==0?t+1:t;r=18?(o-=18,s+=1,this.words[s]|=i>>>26):o+=8;this.strip()},o.prototype._parseBase=function(e,t,n){this.words=[0],this.length=1;for(var r=0,i=1;i<=67108863;i*=t)r++;r--,i=i/t|0;for(var o=e.length-n,s=o%r,a=Math.min(o,o-s)+n,u=0,d=n;d1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var d=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],h=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(e,t,n){n.negative=t.negative^e.negative;var r=e.length+t.length|0;n.length=r,r=r-1|0;var i=0|e.words[0],o=0|t.words[0],s=i*o,a=67108863&s,u=s/67108864|0;n.words[0]=a;for(var c=1;c>>26,l=67108863&u,h=Math.min(c,t.length-1),f=Math.max(0,c-e.length+1);f<=h;f++){var p=c-f|0;d+=(s=(i=0|e.words[p])*(o=0|t.words[f])+l)/67108864|0,l=67108863&s}n.words[c]=0|l,u=0|d}return 0!==u?n.words[c]=0|u:n.length--,n.strip()}o.prototype.toString=function(e,t){var n;if(t=0|t||1,16===(e=e||10)||"hex"===e){n="";for(var i=0,o=0,s=0;s>>24-i&16777215)||s!==this.length-1?d[6-u.length]+u+n:u+n,(i+=2)>=26&&(i-=26,s--)}for(0!==o&&(n=o.toString(16)+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(e===(0|e)&&e>=2&&e<=36){var c=l[e],f=h[e];n="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modn(f).toString(e);n=(p=p.idivn(f)).isZero()?m+n:d[c-m.length]+m+n}for(this.isZero()&&(n="0"+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}r(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(e,t){return r(void 0!==s),this.toArrayLike(s,e,t)},o.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},o.prototype.toArrayLike=function(e,t,n){var i=this.byteLength(),o=n||Math.max(1,i);r(i<=o,"byte array longer than desired length"),r(o>0,"Requested array length <= 0"),this.strip();var s,a,u="le"===t,c=new e(o),d=this.clone();if(u){for(a=0;!d.isZero();a++)s=d.andln(255),d.iushrn(8),c[a]=s;for(;a=4096&&(n+=13,t>>>=13),t>=64&&(n+=7,t>>>=7),t>=8&&(n+=4,t>>>=4),t>=2&&(n+=2,t>>>=2),n+t},o.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,n=0;return 8191&t||(n+=13,t>>>=13),127&t||(n+=7,t>>>=7),15&t||(n+=4,t>>>=4),3&t||(n+=2,t>>>=2),1&t||n++,n},o.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},o.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},o.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var n=0;ne.length?this.clone().iand(e):e.clone().iand(this)},o.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},o.prototype.iuxor=function(e){var t,n;this.length>e.length?(t=this,n=e):(t=e,n=this);for(var r=0;re.length?this.clone().ixor(e):e.clone().ixor(this)},o.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},o.prototype.inotn=function(e){r("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),n=e%26;this._expand(t),n>0&&t--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-n),this.strip()},o.prototype.notn=function(e){return this.clone().inotn(e)},o.prototype.setn=function(e,t){r("number"==typeof e&&e>=0);var n=e/26|0,i=e%26;return this._expand(n+1),this.words[n]=t?this.words[n]|1<e.length?(n=this,r=e):(n=e,r=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=n.length,0!==i)this.words[this.length]=i,this.length++;else if(n!==this)for(;oe.length?this.clone().iadd(e):e.clone().iadd(this)},o.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var n,r,i=this.cmp(e);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(n=this,r=e):(n=e,r=this);for(var o=0,s=0;s>26,this.words[s]=67108863&t;for(;0!==o&&s>26,this.words[s]=67108863&t;if(0===o&&s>>13,f=0|s[1],p=8191&f,m=f>>>13,g=0|s[2],y=8191&g,v=g>>>13,b=0|s[3],w=8191&b,_=b>>>13,x=0|s[4],D=8191&x,E=x>>>13,M=0|s[5],A=8191&M,S=M>>>13,C=0|s[6],k=8191&C,T=C>>>13,I=0|s[7],R=8191&I,F=I>>>13,O=0|s[8],B=8191&O,P=O>>>13,N=0|s[9],j=8191&N,L=N>>>13,U=0|a[0],q=8191&U,$=U>>>13,z=0|a[1],H=8191&z,K=z>>>13,W=0|a[2],G=8191&W,V=W>>>13,Y=0|a[3],Z=8191&Y,J=Y>>>13,X=0|a[4],Q=8191&X,ee=X>>>13,te=0|a[5],ne=8191&te,re=te>>>13,ie=0|a[6],oe=8191&ie,se=ie>>>13,ae=0|a[7],ue=8191&ae,ce=ae>>>13,de=0|a[8],le=8191&de,he=de>>>13,fe=0|a[9],pe=8191&fe,me=fe>>>13;n.negative=e.negative^t.negative,n.length=19;var ge=(c+(r=Math.imul(l,q))|0)+((8191&(i=(i=Math.imul(l,$))+Math.imul(h,q)|0))<<13)|0;c=((o=Math.imul(h,$))+(i>>>13)|0)+(ge>>>26)|0,ge&=67108863,r=Math.imul(p,q),i=(i=Math.imul(p,$))+Math.imul(m,q)|0,o=Math.imul(m,$);var ye=(c+(r=r+Math.imul(l,H)|0)|0)+((8191&(i=(i=i+Math.imul(l,K)|0)+Math.imul(h,H)|0))<<13)|0;c=((o=o+Math.imul(h,K)|0)+(i>>>13)|0)+(ye>>>26)|0,ye&=67108863,r=Math.imul(y,q),i=(i=Math.imul(y,$))+Math.imul(v,q)|0,o=Math.imul(v,$),r=r+Math.imul(p,H)|0,i=(i=i+Math.imul(p,K)|0)+Math.imul(m,H)|0,o=o+Math.imul(m,K)|0;var ve=(c+(r=r+Math.imul(l,G)|0)|0)+((8191&(i=(i=i+Math.imul(l,V)|0)+Math.imul(h,G)|0))<<13)|0;c=((o=o+Math.imul(h,V)|0)+(i>>>13)|0)+(ve>>>26)|0,ve&=67108863,r=Math.imul(w,q),i=(i=Math.imul(w,$))+Math.imul(_,q)|0,o=Math.imul(_,$),r=r+Math.imul(y,H)|0,i=(i=i+Math.imul(y,K)|0)+Math.imul(v,H)|0,o=o+Math.imul(v,K)|0,r=r+Math.imul(p,G)|0,i=(i=i+Math.imul(p,V)|0)+Math.imul(m,G)|0,o=o+Math.imul(m,V)|0;var be=(c+(r=r+Math.imul(l,Z)|0)|0)+((8191&(i=(i=i+Math.imul(l,J)|0)+Math.imul(h,Z)|0))<<13)|0;c=((o=o+Math.imul(h,J)|0)+(i>>>13)|0)+(be>>>26)|0,be&=67108863,r=Math.imul(D,q),i=(i=Math.imul(D,$))+Math.imul(E,q)|0,o=Math.imul(E,$),r=r+Math.imul(w,H)|0,i=(i=i+Math.imul(w,K)|0)+Math.imul(_,H)|0,o=o+Math.imul(_,K)|0,r=r+Math.imul(y,G)|0,i=(i=i+Math.imul(y,V)|0)+Math.imul(v,G)|0,o=o+Math.imul(v,V)|0,r=r+Math.imul(p,Z)|0,i=(i=i+Math.imul(p,J)|0)+Math.imul(m,Z)|0,o=o+Math.imul(m,J)|0;var we=(c+(r=r+Math.imul(l,Q)|0)|0)+((8191&(i=(i=i+Math.imul(l,ee)|0)+Math.imul(h,Q)|0))<<13)|0;c=((o=o+Math.imul(h,ee)|0)+(i>>>13)|0)+(we>>>26)|0,we&=67108863,r=Math.imul(A,q),i=(i=Math.imul(A,$))+Math.imul(S,q)|0,o=Math.imul(S,$),r=r+Math.imul(D,H)|0,i=(i=i+Math.imul(D,K)|0)+Math.imul(E,H)|0,o=o+Math.imul(E,K)|0,r=r+Math.imul(w,G)|0,i=(i=i+Math.imul(w,V)|0)+Math.imul(_,G)|0,o=o+Math.imul(_,V)|0,r=r+Math.imul(y,Z)|0,i=(i=i+Math.imul(y,J)|0)+Math.imul(v,Z)|0,o=o+Math.imul(v,J)|0,r=r+Math.imul(p,Q)|0,i=(i=i+Math.imul(p,ee)|0)+Math.imul(m,Q)|0,o=o+Math.imul(m,ee)|0;var _e=(c+(r=r+Math.imul(l,ne)|0)|0)+((8191&(i=(i=i+Math.imul(l,re)|0)+Math.imul(h,ne)|0))<<13)|0;c=((o=o+Math.imul(h,re)|0)+(i>>>13)|0)+(_e>>>26)|0,_e&=67108863,r=Math.imul(k,q),i=(i=Math.imul(k,$))+Math.imul(T,q)|0,o=Math.imul(T,$),r=r+Math.imul(A,H)|0,i=(i=i+Math.imul(A,K)|0)+Math.imul(S,H)|0,o=o+Math.imul(S,K)|0,r=r+Math.imul(D,G)|0,i=(i=i+Math.imul(D,V)|0)+Math.imul(E,G)|0,o=o+Math.imul(E,V)|0,r=r+Math.imul(w,Z)|0,i=(i=i+Math.imul(w,J)|0)+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,r=r+Math.imul(y,Q)|0,i=(i=i+Math.imul(y,ee)|0)+Math.imul(v,Q)|0,o=o+Math.imul(v,ee)|0,r=r+Math.imul(p,ne)|0,i=(i=i+Math.imul(p,re)|0)+Math.imul(m,ne)|0,o=o+Math.imul(m,re)|0;var xe=(c+(r=r+Math.imul(l,oe)|0)|0)+((8191&(i=(i=i+Math.imul(l,se)|0)+Math.imul(h,oe)|0))<<13)|0;c=((o=o+Math.imul(h,se)|0)+(i>>>13)|0)+(xe>>>26)|0,xe&=67108863,r=Math.imul(R,q),i=(i=Math.imul(R,$))+Math.imul(F,q)|0,o=Math.imul(F,$),r=r+Math.imul(k,H)|0,i=(i=i+Math.imul(k,K)|0)+Math.imul(T,H)|0,o=o+Math.imul(T,K)|0,r=r+Math.imul(A,G)|0,i=(i=i+Math.imul(A,V)|0)+Math.imul(S,G)|0,o=o+Math.imul(S,V)|0,r=r+Math.imul(D,Z)|0,i=(i=i+Math.imul(D,J)|0)+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,r=r+Math.imul(w,Q)|0,i=(i=i+Math.imul(w,ee)|0)+Math.imul(_,Q)|0,o=o+Math.imul(_,ee)|0,r=r+Math.imul(y,ne)|0,i=(i=i+Math.imul(y,re)|0)+Math.imul(v,ne)|0,o=o+Math.imul(v,re)|0,r=r+Math.imul(p,oe)|0,i=(i=i+Math.imul(p,se)|0)+Math.imul(m,oe)|0,o=o+Math.imul(m,se)|0;var De=(c+(r=r+Math.imul(l,ue)|0)|0)+((8191&(i=(i=i+Math.imul(l,ce)|0)+Math.imul(h,ue)|0))<<13)|0;c=((o=o+Math.imul(h,ce)|0)+(i>>>13)|0)+(De>>>26)|0,De&=67108863,r=Math.imul(B,q),i=(i=Math.imul(B,$))+Math.imul(P,q)|0,o=Math.imul(P,$),r=r+Math.imul(R,H)|0,i=(i=i+Math.imul(R,K)|0)+Math.imul(F,H)|0,o=o+Math.imul(F,K)|0,r=r+Math.imul(k,G)|0,i=(i=i+Math.imul(k,V)|0)+Math.imul(T,G)|0,o=o+Math.imul(T,V)|0,r=r+Math.imul(A,Z)|0,i=(i=i+Math.imul(A,J)|0)+Math.imul(S,Z)|0,o=o+Math.imul(S,J)|0,r=r+Math.imul(D,Q)|0,i=(i=i+Math.imul(D,ee)|0)+Math.imul(E,Q)|0,o=o+Math.imul(E,ee)|0,r=r+Math.imul(w,ne)|0,i=(i=i+Math.imul(w,re)|0)+Math.imul(_,ne)|0,o=o+Math.imul(_,re)|0,r=r+Math.imul(y,oe)|0,i=(i=i+Math.imul(y,se)|0)+Math.imul(v,oe)|0,o=o+Math.imul(v,se)|0,r=r+Math.imul(p,ue)|0,i=(i=i+Math.imul(p,ce)|0)+Math.imul(m,ue)|0,o=o+Math.imul(m,ce)|0;var Ee=(c+(r=r+Math.imul(l,le)|0)|0)+((8191&(i=(i=i+Math.imul(l,he)|0)+Math.imul(h,le)|0))<<13)|0;c=((o=o+Math.imul(h,he)|0)+(i>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,r=Math.imul(j,q),i=(i=Math.imul(j,$))+Math.imul(L,q)|0,o=Math.imul(L,$),r=r+Math.imul(B,H)|0,i=(i=i+Math.imul(B,K)|0)+Math.imul(P,H)|0,o=o+Math.imul(P,K)|0,r=r+Math.imul(R,G)|0,i=(i=i+Math.imul(R,V)|0)+Math.imul(F,G)|0,o=o+Math.imul(F,V)|0,r=r+Math.imul(k,Z)|0,i=(i=i+Math.imul(k,J)|0)+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,r=r+Math.imul(A,Q)|0,i=(i=i+Math.imul(A,ee)|0)+Math.imul(S,Q)|0,o=o+Math.imul(S,ee)|0,r=r+Math.imul(D,ne)|0,i=(i=i+Math.imul(D,re)|0)+Math.imul(E,ne)|0,o=o+Math.imul(E,re)|0,r=r+Math.imul(w,oe)|0,i=(i=i+Math.imul(w,se)|0)+Math.imul(_,oe)|0,o=o+Math.imul(_,se)|0,r=r+Math.imul(y,ue)|0,i=(i=i+Math.imul(y,ce)|0)+Math.imul(v,ue)|0,o=o+Math.imul(v,ce)|0,r=r+Math.imul(p,le)|0,i=(i=i+Math.imul(p,he)|0)+Math.imul(m,le)|0,o=o+Math.imul(m,he)|0;var Me=(c+(r=r+Math.imul(l,pe)|0)|0)+((8191&(i=(i=i+Math.imul(l,me)|0)+Math.imul(h,pe)|0))<<13)|0;c=((o=o+Math.imul(h,me)|0)+(i>>>13)|0)+(Me>>>26)|0,Me&=67108863,r=Math.imul(j,H),i=(i=Math.imul(j,K))+Math.imul(L,H)|0,o=Math.imul(L,K),r=r+Math.imul(B,G)|0,i=(i=i+Math.imul(B,V)|0)+Math.imul(P,G)|0,o=o+Math.imul(P,V)|0,r=r+Math.imul(R,Z)|0,i=(i=i+Math.imul(R,J)|0)+Math.imul(F,Z)|0,o=o+Math.imul(F,J)|0,r=r+Math.imul(k,Q)|0,i=(i=i+Math.imul(k,ee)|0)+Math.imul(T,Q)|0,o=o+Math.imul(T,ee)|0,r=r+Math.imul(A,ne)|0,i=(i=i+Math.imul(A,re)|0)+Math.imul(S,ne)|0,o=o+Math.imul(S,re)|0,r=r+Math.imul(D,oe)|0,i=(i=i+Math.imul(D,se)|0)+Math.imul(E,oe)|0,o=o+Math.imul(E,se)|0,r=r+Math.imul(w,ue)|0,i=(i=i+Math.imul(w,ce)|0)+Math.imul(_,ue)|0,o=o+Math.imul(_,ce)|0,r=r+Math.imul(y,le)|0,i=(i=i+Math.imul(y,he)|0)+Math.imul(v,le)|0,o=o+Math.imul(v,he)|0;var Ae=(c+(r=r+Math.imul(p,pe)|0)|0)+((8191&(i=(i=i+Math.imul(p,me)|0)+Math.imul(m,pe)|0))<<13)|0;c=((o=o+Math.imul(m,me)|0)+(i>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,r=Math.imul(j,G),i=(i=Math.imul(j,V))+Math.imul(L,G)|0,o=Math.imul(L,V),r=r+Math.imul(B,Z)|0,i=(i=i+Math.imul(B,J)|0)+Math.imul(P,Z)|0,o=o+Math.imul(P,J)|0,r=r+Math.imul(R,Q)|0,i=(i=i+Math.imul(R,ee)|0)+Math.imul(F,Q)|0,o=o+Math.imul(F,ee)|0,r=r+Math.imul(k,ne)|0,i=(i=i+Math.imul(k,re)|0)+Math.imul(T,ne)|0,o=o+Math.imul(T,re)|0,r=r+Math.imul(A,oe)|0,i=(i=i+Math.imul(A,se)|0)+Math.imul(S,oe)|0,o=o+Math.imul(S,se)|0,r=r+Math.imul(D,ue)|0,i=(i=i+Math.imul(D,ce)|0)+Math.imul(E,ue)|0,o=o+Math.imul(E,ce)|0,r=r+Math.imul(w,le)|0,i=(i=i+Math.imul(w,he)|0)+Math.imul(_,le)|0,o=o+Math.imul(_,he)|0;var Se=(c+(r=r+Math.imul(y,pe)|0)|0)+((8191&(i=(i=i+Math.imul(y,me)|0)+Math.imul(v,pe)|0))<<13)|0;c=((o=o+Math.imul(v,me)|0)+(i>>>13)|0)+(Se>>>26)|0,Se&=67108863,r=Math.imul(j,Z),i=(i=Math.imul(j,J))+Math.imul(L,Z)|0,o=Math.imul(L,J),r=r+Math.imul(B,Q)|0,i=(i=i+Math.imul(B,ee)|0)+Math.imul(P,Q)|0,o=o+Math.imul(P,ee)|0,r=r+Math.imul(R,ne)|0,i=(i=i+Math.imul(R,re)|0)+Math.imul(F,ne)|0,o=o+Math.imul(F,re)|0,r=r+Math.imul(k,oe)|0,i=(i=i+Math.imul(k,se)|0)+Math.imul(T,oe)|0,o=o+Math.imul(T,se)|0,r=r+Math.imul(A,ue)|0,i=(i=i+Math.imul(A,ce)|0)+Math.imul(S,ue)|0,o=o+Math.imul(S,ce)|0,r=r+Math.imul(D,le)|0,i=(i=i+Math.imul(D,he)|0)+Math.imul(E,le)|0,o=o+Math.imul(E,he)|0;var Ce=(c+(r=r+Math.imul(w,pe)|0)|0)+((8191&(i=(i=i+Math.imul(w,me)|0)+Math.imul(_,pe)|0))<<13)|0;c=((o=o+Math.imul(_,me)|0)+(i>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,r=Math.imul(j,Q),i=(i=Math.imul(j,ee))+Math.imul(L,Q)|0,o=Math.imul(L,ee),r=r+Math.imul(B,ne)|0,i=(i=i+Math.imul(B,re)|0)+Math.imul(P,ne)|0,o=o+Math.imul(P,re)|0,r=r+Math.imul(R,oe)|0,i=(i=i+Math.imul(R,se)|0)+Math.imul(F,oe)|0,o=o+Math.imul(F,se)|0,r=r+Math.imul(k,ue)|0,i=(i=i+Math.imul(k,ce)|0)+Math.imul(T,ue)|0,o=o+Math.imul(T,ce)|0,r=r+Math.imul(A,le)|0,i=(i=i+Math.imul(A,he)|0)+Math.imul(S,le)|0,o=o+Math.imul(S,he)|0;var ke=(c+(r=r+Math.imul(D,pe)|0)|0)+((8191&(i=(i=i+Math.imul(D,me)|0)+Math.imul(E,pe)|0))<<13)|0;c=((o=o+Math.imul(E,me)|0)+(i>>>13)|0)+(ke>>>26)|0,ke&=67108863,r=Math.imul(j,ne),i=(i=Math.imul(j,re))+Math.imul(L,ne)|0,o=Math.imul(L,re),r=r+Math.imul(B,oe)|0,i=(i=i+Math.imul(B,se)|0)+Math.imul(P,oe)|0,o=o+Math.imul(P,se)|0,r=r+Math.imul(R,ue)|0,i=(i=i+Math.imul(R,ce)|0)+Math.imul(F,ue)|0,o=o+Math.imul(F,ce)|0,r=r+Math.imul(k,le)|0,i=(i=i+Math.imul(k,he)|0)+Math.imul(T,le)|0,o=o+Math.imul(T,he)|0;var Te=(c+(r=r+Math.imul(A,pe)|0)|0)+((8191&(i=(i=i+Math.imul(A,me)|0)+Math.imul(S,pe)|0))<<13)|0;c=((o=o+Math.imul(S,me)|0)+(i>>>13)|0)+(Te>>>26)|0,Te&=67108863,r=Math.imul(j,oe),i=(i=Math.imul(j,se))+Math.imul(L,oe)|0,o=Math.imul(L,se),r=r+Math.imul(B,ue)|0,i=(i=i+Math.imul(B,ce)|0)+Math.imul(P,ue)|0,o=o+Math.imul(P,ce)|0,r=r+Math.imul(R,le)|0,i=(i=i+Math.imul(R,he)|0)+Math.imul(F,le)|0,o=o+Math.imul(F,he)|0;var Ie=(c+(r=r+Math.imul(k,pe)|0)|0)+((8191&(i=(i=i+Math.imul(k,me)|0)+Math.imul(T,pe)|0))<<13)|0;c=((o=o+Math.imul(T,me)|0)+(i>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,r=Math.imul(j,ue),i=(i=Math.imul(j,ce))+Math.imul(L,ue)|0,o=Math.imul(L,ce),r=r+Math.imul(B,le)|0,i=(i=i+Math.imul(B,he)|0)+Math.imul(P,le)|0,o=o+Math.imul(P,he)|0;var Re=(c+(r=r+Math.imul(R,pe)|0)|0)+((8191&(i=(i=i+Math.imul(R,me)|0)+Math.imul(F,pe)|0))<<13)|0;c=((o=o+Math.imul(F,me)|0)+(i>>>13)|0)+(Re>>>26)|0,Re&=67108863,r=Math.imul(j,le),i=(i=Math.imul(j,he))+Math.imul(L,le)|0,o=Math.imul(L,he);var Fe=(c+(r=r+Math.imul(B,pe)|0)|0)+((8191&(i=(i=i+Math.imul(B,me)|0)+Math.imul(P,pe)|0))<<13)|0;c=((o=o+Math.imul(P,me)|0)+(i>>>13)|0)+(Fe>>>26)|0,Fe&=67108863;var Oe=(c+(r=Math.imul(j,pe))|0)+((8191&(i=(i=Math.imul(j,me))+Math.imul(L,pe)|0))<<13)|0;return c=((o=Math.imul(L,me))+(i>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,u[0]=ge,u[1]=ye,u[2]=ve,u[3]=be,u[4]=we,u[5]=_e,u[6]=xe,u[7]=De,u[8]=Ee,u[9]=Me,u[10]=Ae,u[11]=Se,u[12]=Ce,u[13]=ke,u[14]=Te,u[15]=Ie,u[16]=Re,u[17]=Fe,u[18]=Oe,0!==c&&(u[19]=c,n.length++),n};function m(e,t,n){return(new g).mulp(e,t,n)}function g(e,t){this.x=e,this.y=t}Math.imul||(p=f),o.prototype.mulTo=function(e,t){var n,r=this.length+e.length;return n=10===this.length&&10===e.length?p(this,e,t):r<63?f(this,e,t):r<1024?function(e,t,n){n.negative=t.negative^e.negative,n.length=e.length+t.length;for(var r=0,i=0,o=0;o>>26)|0)>>>26,s&=67108863}n.words[o]=a,r=s,s=i}return 0!==r?n.words[o]=r:n.length--,n.strip()}(this,e,t):m(this,e,t),n},g.prototype.makeRBT=function(e){for(var t=new Array(e),n=o.prototype._countBits(e)-1,r=0;r>=1;return r},g.prototype.permute=function(e,t,n,r,i,o){for(var s=0;s>>=1)i++;return 1<>>=13,n[2*s+1]=8191&o,o>>>=13;for(s=2*t;s>=26,t+=i/67108864|0,t+=o>>>26,this.words[n]=67108863&o}return 0!==t&&(this.words[n]=t,this.length++),this},o.prototype.muln=function(e){return this.clone().imuln(e)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),n=0;n>>i}return t}(e);if(0===t.length)return new o(1);for(var n=this,r=0;r=0);var t,n=e%26,i=(e-n)/26,o=67108863>>>26-n<<26-n;if(0!==n){var s=0;for(t=0;t>>26-n}s&&(this.words[t]=s,this.length++)}if(0!==i){for(t=this.length-1;t>=0;t--)this.words[t+i]=this.words[t];for(t=0;t=0),i=t?(t-t%26)/26:0;var o=e%26,s=Math.min((e-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,c=0;c=0&&(0!==d||c>=i);c--){var l=0|this.words[c];this.words[c]=d<<26-o|l>>>o,d=l&a}return u&&0!==d&&(u.words[u.length++]=d),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(e,t,n){return r(0===this.negative),this.iushrn(e,t,n)},o.prototype.shln=function(e){return this.clone().ishln(e)},o.prototype.ushln=function(e){return this.clone().iushln(e)},o.prototype.shrn=function(e){return this.clone().ishrn(e)},o.prototype.ushrn=function(e){return this.clone().iushrn(e)},o.prototype.testn=function(e){r("number"==typeof e&&e>=0);var t=e%26,n=(e-t)/26,i=1<=0);var t=e%26,n=(e-t)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==t&&n++,this.length=Math.min(n,this.length),0!==t){var i=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},o.prototype.isubn=function(e){if(r("number"==typeof e),r(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[i+n]=67108863&o}for(;i>26,this.words[i+n]=67108863&o;if(0===a)return this.strip();for(r(-1===a),a=0,i=0;i>26,this.words[i]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(e,t){var n=(this.length,e.length),r=this.clone(),i=e,s=0|i.words[i.length-1];0!==(n=26-this._countBits(s))&&(i=i.ushln(n),r.iushln(n),s=0|i.words[i.length-1]);var a,u=r.length-i.length;if("mod"!==t){(a=new o(null)).length=u+1,a.words=new Array(a.length);for(var c=0;c=0;l--){var h=67108864*(0|r.words[i.length+l])+(0|r.words[i.length+l-1]);for(h=Math.min(h/s|0,67108863),r._ishlnsubmul(i,h,l);0!==r.negative;)h--,r.negative=0,r._ishlnsubmul(i,1,l),r.isZero()||(r.negative^=1);a&&(a.words[l]=h)}return a&&a.strip(),r.strip(),"div"!==t&&0!==n&&r.iushrn(n),{div:a||null,mod:r}},o.prototype.divmod=function(e,t,n){return r(!e.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===e.negative?(a=this.neg().divmod(e,t),"mod"!==t&&(i=a.div.neg()),"div"!==t&&(s=a.mod.neg(),n&&0!==s.negative&&s.iadd(e)),{div:i,mod:s}):0===this.negative&&0!==e.negative?(a=this.divmod(e.neg(),t),"mod"!==t&&(i=a.div.neg()),{div:i,mod:a.mod}):this.negative&e.negative?(a=this.neg().divmod(e.neg(),t),"div"!==t&&(s=a.mod.neg(),n&&0!==s.negative&&s.isub(e)),{div:a.div,mod:s}):e.length>this.length||this.cmp(e)<0?{div:new o(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new o(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new o(this.modn(e.words[0]))}:this._wordDiv(e,t);var i,s,a},o.prototype.div=function(e){return this.divmod(e,"div",!1).div},o.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},o.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},o.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var n=0!==t.div.negative?t.mod.isub(e):t.mod,r=e.ushrn(1),i=e.andln(1),o=n.cmp(r);return o<0||1===i&&0===o?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},o.prototype.modn=function(e){r(e<=67108863);for(var t=(1<<26)%e,n=0,i=this.length-1;i>=0;i--)n=(t*n+(0|this.words[i]))%e;return n},o.prototype.idivn=function(e){r(e<=67108863);for(var t=0,n=this.length-1;n>=0;n--){var i=(0|this.words[n])+67108864*t;this.words[n]=i/e|0,t=i%e}return this.strip()},o.prototype.divn=function(e){return this.clone().idivn(e)},o.prototype.egcd=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i=new o(1),s=new o(0),a=new o(0),u=new o(1),c=0;t.isEven()&&n.isEven();)t.iushrn(1),n.iushrn(1),++c;for(var d=n.clone(),l=t.clone();!t.isZero();){for(var h=0,f=1;!(t.words[0]&f)&&h<26;++h,f<<=1);if(h>0)for(t.iushrn(h);h-- >0;)(i.isOdd()||s.isOdd())&&(i.iadd(d),s.isub(l)),i.iushrn(1),s.iushrn(1);for(var p=0,m=1;!(n.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(n.iushrn(p);p-- >0;)(a.isOdd()||u.isOdd())&&(a.iadd(d),u.isub(l)),a.iushrn(1),u.iushrn(1);t.cmp(n)>=0?(t.isub(n),i.isub(a),s.isub(u)):(n.isub(t),a.isub(i),u.isub(s))}return{a,b:u,gcd:n.iushln(c)}},o.prototype._invmp=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i,s=new o(1),a=new o(0),u=n.clone();t.cmpn(1)>0&&n.cmpn(1)>0;){for(var c=0,d=1;!(t.words[0]&d)&&c<26;++c,d<<=1);if(c>0)for(t.iushrn(c);c-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);for(var l=0,h=1;!(n.words[0]&h)&&l<26;++l,h<<=1);if(l>0)for(n.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(u),a.iushrn(1);t.cmp(n)>=0?(t.isub(n),s.isub(a)):(n.isub(t),a.isub(s))}return(i=0===t.cmpn(1)?s:a).cmpn(0)<0&&i.iadd(e),i},o.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),n=e.clone();t.negative=0,n.negative=0;for(var r=0;t.isEven()&&n.isEven();r++)t.iushrn(1),n.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;n.isEven();)n.iushrn(1);var i=t.cmp(n);if(i<0){var o=t;t=n,n=o}else if(0===i||0===n.cmpn(1))break;t.isub(n)}return n.iushln(r)},o.prototype.invm=function(e){return this.egcd(e).a.umod(e)},o.prototype.isEven=function(){return!(1&this.words[0])},o.prototype.isOdd=function(){return!(1&~this.words[0])},o.prototype.andln=function(e){return this.words[0]&e},o.prototype.bincn=function(e){r("number"==typeof e);var t=e%26,n=(e-t)/26,i=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(e){var t,n=e<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this.strip(),this.length>1)t=1;else{n&&(e=-e),r(e<=67108863,"Number is too big");var i=0|this.words[0];t=i===e?0:ie.length)return 1;if(this.length=0;n--){var r=0|this.words[n],i=0|e.words[n];if(r!==i){ri&&(t=1);break}}return t},o.prototype.gtn=function(e){return 1===this.cmpn(e)},o.prototype.gt=function(e){return 1===this.cmp(e)},o.prototype.gten=function(e){return this.cmpn(e)>=0},o.prototype.gte=function(e){return this.cmp(e)>=0},o.prototype.ltn=function(e){return-1===this.cmpn(e)},o.prototype.lt=function(e){return-1===this.cmp(e)},o.prototype.lten=function(e){return this.cmpn(e)<=0},o.prototype.lte=function(e){return this.cmp(e)<=0},o.prototype.eqn=function(e){return 0===this.cmpn(e)},o.prototype.eq=function(e){return 0===this.cmp(e)},o.red=function(e){return new D(e)},o.prototype.toRed=function(e){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},o.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(e){return this.red=e,this},o.prototype.forceRed=function(e){return r(!this.red,"Already a number in reduction context"),this._forceRed(e)},o.prototype.redAdd=function(e){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},o.prototype.redIAdd=function(e){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},o.prototype.redSub=function(e){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},o.prototype.redISub=function(e){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},o.prototype.redShl=function(e){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},o.prototype.redMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},o.prototype.redIMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},o.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(e){return r(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var y={k256:null,p224:null,p192:null,p25519:null};function v(e,t){this.name=e,this.p=new o(t,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function b(){v.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function w(){v.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function _(){v.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function x(){v.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function D(e){if("string"==typeof e){var t=o._prime(e);this.m=t.p,this.prime=t}else r(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function E(e){D.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}v.prototype._tmp=function(){var e=new o(null);return e.words=new Array(Math.ceil(this.n/13)),e},v.prototype.ireduce=function(e){var t,n=e;do{this.split(n,this.tmp),t=(n=(n=this.imulK(n)).iadd(this.tmp)).bitLength()}while(t>this.n);var r=t0?n.isub(this.p):void 0!==n.strip?n.strip():n._strip(),n},v.prototype.split=function(e,t){e.iushrn(this.n,0,t)},v.prototype.imulK=function(e){return e.imul(this.k)},i(b,v),b.prototype.split=function(e,t){for(var n=4194303,r=Math.min(e.length,9),i=0;i>>22,o=s}o>>>=22,e.words[i-10]=o,0===o&&e.length>10?e.length-=10:e.length-=9},b.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,n=0;n>>=26,e.words[n]=i,t=r}return 0!==t&&(e.words[e.length++]=t),e},o._prime=function(e){if(y[e])return y[e];var t;if("k256"===e)t=new b;else if("p224"===e)t=new w;else if("p192"===e)t=new _;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new x}return y[e]=t,t},D.prototype._verify1=function(e){r(0===e.negative,"red works only with positives"),r(e.red,"red works only with red numbers")},D.prototype._verify2=function(e,t){r(!(e.negative|t.negative),"red works only with positives"),r(e.red&&e.red===t.red,"red works only with red numbers")},D.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},D.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},D.prototype.add=function(e,t){this._verify2(e,t);var n=e.add(t);return n.cmp(this.m)>=0&&n.isub(this.m),n._forceRed(this)},D.prototype.iadd=function(e,t){this._verify2(e,t);var n=e.iadd(t);return n.cmp(this.m)>=0&&n.isub(this.m),n},D.prototype.sub=function(e,t){this._verify2(e,t);var n=e.sub(t);return n.cmpn(0)<0&&n.iadd(this.m),n._forceRed(this)},D.prototype.isub=function(e,t){this._verify2(e,t);var n=e.isub(t);return n.cmpn(0)<0&&n.iadd(this.m),n},D.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},D.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},D.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},D.prototype.isqr=function(e){return this.imul(e,e.clone())},D.prototype.sqr=function(e){return this.mul(e,e)},D.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(r(t%2==1),3===t){var n=this.m.add(new o(1)).iushrn(2);return this.pow(e,n)}for(var i=this.m.subn(1),s=0;!i.isZero()&&0===i.andln(1);)s++,i.iushrn(1);r(!i.isZero());var a=new o(1).toRed(this),u=a.redNeg(),c=this.m.subn(1).iushrn(1),d=this.m.bitLength();for(d=new o(2*d*d).toRed(this);0!==this.pow(d,c).cmp(u);)d.redIAdd(u);for(var l=this.pow(d,i),h=this.pow(e,i.addn(1).iushrn(1)),f=this.pow(e,i),p=s;0!==f.cmp(a);){for(var m=f,g=0;0!==m.cmp(a);g++)m=m.redSqr();r(g=0;r--){for(var c=t.words[r],d=u-1;d>=0;d--){var l=c>>d&1;i!==n[0]&&(i=this.sqr(i)),0!==l||0!==s?(s<<=1,s|=l,(4===++a||0===r&&0===d)&&(i=this.mul(i,n[s]),a=0,s=0)):a=0}u=26}return i},D.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},D.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},o.mont=function(e){return new E(e)},i(E,D),E.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},E.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},E.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var n=e.imul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=n.isub(r).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},E.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new o(0)._forceRed(this);var n=e.mul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=n.isub(r).iushrn(this.shift),s=i;return i.cmp(this.m)>=0?s=i.isub(this.m):i.cmpn(0)<0&&(s=i.iadd(this.m)),s._forceRed(this)},E.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=n.nmd(e),this)},77362:(e,t,n)=>{var r=n(78170),i=n(48206),o=n(52061),s=n(82509),a=n(67332),u=n(47108),c=n(99247),d=n(92861).Buffer;e.exports=function(e,t,n){var l;l=e.padding?e.padding:n?1:4;var h,f=r(e),p=f.modulus.byteLength();if(t.length>p||new s(t).cmp(f.modulus)>=0)throw new Error("decryption error");h=n?c(new s(t),f):a(t,f);var m=d.alloc(p-h.length);if(h=d.concat([m,h],p),4===l)return function(e,t){var n=e.modulus.byteLength(),r=u("sha1").update(d.alloc(0)).digest(),s=r.length;if(0!==t[0])throw new Error("decryption error");var a=t.slice(1,s+1),c=t.slice(s+1),l=o(a,i(c,s)),h=o(c,i(l,n-s-1));if(function(e,t){e=d.from(e),t=d.from(t);var n=0,r=e.length;e.length!==t.length&&(n++,r=Math.min(e.length,t.length));var i=-1;for(;++i=t.length){o++;break}var s=t.slice(2,i-1);("0002"!==r.toString("hex")&&!n||"0001"!==r.toString("hex")&&n)&&o++;s.length<8&&o++;if(o)throw new Error("decryption error");return t.slice(i)}(0,h,n);if(3===l)return h;throw new Error("unknown padding")}},28902:(e,t,n)=>{var r=n(78170),i=n(53209),o=n(47108),s=n(48206),a=n(52061),u=n(82509),c=n(99247),d=n(67332),l=n(92861).Buffer;e.exports=function(e,t,n){var h;h=e.padding?e.padding:n?1:4;var f,p=r(e);if(4===h)f=function(e,t){var n=e.modulus.byteLength(),r=t.length,c=o("sha1").update(l.alloc(0)).digest(),d=c.length,h=2*d;if(r>n-h-2)throw new Error("message too long");var f=l.alloc(n-r-h-2),p=n-d-1,m=i(d),g=a(l.concat([c,f,l.alloc(1,1),t],p),s(m,p)),y=a(m,s(g,d));return new u(l.concat([l.alloc(1),y,g],n))}(p,t);else if(1===h)f=function(e,t,n){var r,o=t.length,s=e.modulus.byteLength();if(o>s-11)throw new Error("message too long");r=n?l.alloc(s-o-3,255):function(e){var t,n=l.allocUnsafe(e),r=0,o=i(2*e),s=0;for(;r=0)throw new Error("data too long for modulus")}return n?d(f,p):c(f,p)}},99247:(e,t,n)=>{var r=n(82509),i=n(92861).Buffer;e.exports=function(e,t){return i.from(e.toRed(r.mont(t.modulus)).redPow(new r(t.publicExponent)).fromRed().toArray())}},52061:e=>{e.exports=function(e,t){for(var n=e.length,r=-1;++r{const r=n(91333),i=n(90157),o=n(47899),s=n(56756);function a(e,t,n,o,s){const a=[].slice.call(arguments,1),u=a.length,c="function"==typeof a[u-1];if(!c&&!r())throw new Error("Callback required as last argument");if(!c){if(u<1)throw new Error("Too few arguments provided");return 1===u?(n=t,t=o=void 0):2!==u||t.getContext||(o=n,n=t,t=void 0),new Promise((function(r,s){try{const s=i.create(n,o);r(e(s,t,o))}catch(e){s(e)}}))}if(u<2)throw new Error("Too few arguments provided");2===u?(s=n,n=t,t=o=void 0):3===u&&(t.getContext&&void 0===s?(s=o,o=void 0):(s=o,o=n,n=t,t=void 0));try{const r=i.create(n,o);s(null,e(r,t,o))}catch(e){s(e)}}t.create=i.create,t.toCanvas=a.bind(null,o.render),t.toDataURL=a.bind(null,o.renderToDataURL),t.toString=a.bind(null,(function(e,t,n){return s.render(e,n)}))},91333:e=>{e.exports=function(){return"function"==typeof Promise&&Promise.prototype&&Promise.prototype.then}},6421:(e,t,n)=>{const r=n(56886).getSymbolSize;t.getRowColCoords=function(e){if(1===e)return[];const t=Math.floor(e/7)+2,n=r(e),i=145===n?26:2*Math.ceil((n-13)/(2*t-2)),o=[n-7];for(let e=1;e{const r=n(30208),i=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function o(e){this.mode=r.ALPHANUMERIC,this.data=e}o.getBitsLength=function(e){return 11*Math.floor(e/2)+e%2*6},o.prototype.getLength=function(){return this.data.length},o.prototype.getBitsLength=function(){return o.getBitsLength(this.data.length)},o.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let n=45*i.indexOf(this.data[t]);n+=i.indexOf(this.data[t+1]),e.put(n,11)}this.data.length%2&&e.put(i.indexOf(this.data[t]),6)},e.exports=o},99899:e=>{function t(){this.buffer=[],this.length=0}t.prototype={get:function(e){const t=Math.floor(e/8);return 1==(this.buffer[t]>>>7-e%8&1)},put:function(e,t){for(let n=0;n>>t-n-1&1))},getLengthInBits:function(){return this.length},putBit:function(e){const t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},e.exports=t},8820:e=>{function t(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}t.prototype.set=function(e,t,n,r){const i=e*this.size+t;this.data[i]=n,r&&(this.reservedBit[i]=!0)},t.prototype.get=function(e,t){return this.data[e*this.size+t]},t.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},t.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},e.exports=t},25822:(e,t,n)=>{const r=n(69049),i=n(30208);function o(e){this.mode=i.BYTE,"string"==typeof e&&(e=r(e)),this.data=new Uint8Array(e)}o.getBitsLength=function(e){return 8*e},o.prototype.getLength=function(){return this.data.length},o.prototype.getBitsLength=function(){return o.getBitsLength(this.data.length)},o.prototype.write=function(e){for(let t=0,n=this.data.length;t{const r=n(49953),i=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],o=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];t.getBlocksCount=function(e,t){switch(t){case r.L:return i[4*(e-1)+0];case r.M:return i[4*(e-1)+1];case r.Q:return i[4*(e-1)+2];case r.H:return i[4*(e-1)+3];default:return}},t.getTotalCodewordsCount=function(e,t){switch(t){case r.L:return o[4*(e-1)+0];case r.M:return o[4*(e-1)+1];case r.Q:return o[4*(e-1)+2];case r.H:return o[4*(e-1)+3];default:return}}},49953:(e,t)=>{t.L={bit:1},t.M={bit:0},t.Q={bit:3},t.H={bit:2},t.isValid=function(e){return e&&void 0!==e.bit&&e.bit>=0&&e.bit<4},t.from=function(e,n){if(t.isValid(e))return e;try{return function(e){if("string"!=typeof e)throw new Error("Param is not a string");switch(e.toLowerCase()){case"l":case"low":return t.L;case"m":case"medium":return t.M;case"q":case"quartile":return t.Q;case"h":case"high":return t.H;default:throw new Error("Unknown EC Level: "+e)}}(e)}catch(e){return n}}},7756:(e,t,n)=>{const r=n(56886).getSymbolSize;t.getPositions=function(e){const t=r(e);return[[0,0],[t-7,0],[0,t-7]]}},84565:(e,t,n)=>{const r=n(56886),i=r.getBCHDigit(1335);t.getEncodedBits=function(e,t){const n=e.bit<<3|t;let o=n<<10;for(;r.getBCHDigit(o)-i>=0;)o^=1335<{const n=new Uint8Array(512),r=new Uint8Array(256);!function(){let e=1;for(let t=0;t<255;t++)n[t]=e,r[e]=t,e<<=1,256&e&&(e^=285);for(let e=255;e<512;e++)n[e]=n[e-255]}(),t.log=function(e){if(e<1)throw new Error("log("+e+")");return r[e]},t.exp=function(e){return n[e]},t.mul=function(e,t){return 0===e||0===t?0:n[r[e]+r[t]]}},24861:(e,t,n)=>{const r=n(30208),i=n(56886);function o(e){this.mode=r.KANJI,this.data=e}o.getBitsLength=function(e){return 13*e},o.prototype.getLength=function(){return this.data.length},o.prototype.getBitsLength=function(){return o.getBitsLength(this.data.length)},o.prototype.write=function(e){let t;for(t=0;t=33088&&n<=40956)n-=33088;else{if(!(n>=57408&&n<=60351))throw new Error("Invalid SJIS character: "+this.data[t]+"\nMake sure your charset is UTF-8");n-=49472}n=192*(n>>>8&255)+(255&n),e.put(n,13)}},e.exports=o},81332:(e,t)=>{t.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};const n=3,r=3,i=40,o=10;function s(e,n,r){switch(e){case t.Patterns.PATTERN000:return(n+r)%2==0;case t.Patterns.PATTERN001:return n%2==0;case t.Patterns.PATTERN010:return r%3==0;case t.Patterns.PATTERN011:return(n+r)%3==0;case t.Patterns.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2==0;case t.Patterns.PATTERN101:return n*r%2+n*r%3==0;case t.Patterns.PATTERN110:return(n*r%2+n*r%3)%2==0;case t.Patterns.PATTERN111:return(n*r%3+(n+r)%2)%2==0;default:throw new Error("bad maskPattern:"+e)}}t.isValid=function(e){return null!=e&&""!==e&&!isNaN(e)&&e>=0&&e<=7},t.from=function(e){return t.isValid(e)?parseInt(e,10):void 0},t.getPenaltyN1=function(e){const t=e.size;let r=0,i=0,o=0,s=null,a=null;for(let u=0;u=5&&(r+=n+(i-5)),s=t,i=1),t=e.get(c,u),t===a?o++:(o>=5&&(r+=n+(o-5)),a=t,o=1)}i>=5&&(r+=n+(i-5)),o>=5&&(r+=n+(o-5))}return r},t.getPenaltyN2=function(e){const t=e.size;let n=0;for(let r=0;r=10&&(1488===r||93===r)&&n++,o=o<<1&2047|e.get(s,i),s>=10&&(1488===o||93===o)&&n++}return n*i},t.getPenaltyN4=function(e){let t=0;const n=e.data.length;for(let r=0;r{const r=n(21878),i=n(67044);t.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},t.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},t.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},t.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},t.MIXED={bit:-1},t.getCharCountIndicator=function(e,t){if(!e.ccBits)throw new Error("Invalid mode: "+e);if(!r.isValid(t))throw new Error("Invalid version: "+t);return t>=1&&t<10?e.ccBits[0]:t<27?e.ccBits[1]:e.ccBits[2]},t.getBestModeForData=function(e){return i.testNumeric(e)?t.NUMERIC:i.testAlphanumeric(e)?t.ALPHANUMERIC:i.testKanji(e)?t.KANJI:t.BYTE},t.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")},t.isValid=function(e){return e&&e.bit&&e.ccBits},t.from=function(e,n){if(t.isValid(e))return e;try{return function(e){if("string"!=typeof e)throw new Error("Param is not a string");switch(e.toLowerCase()){case"numeric":return t.NUMERIC;case"alphanumeric":return t.ALPHANUMERIC;case"kanji":return t.KANJI;case"byte":return t.BYTE;default:throw new Error("Unknown mode: "+e)}}(e)}catch(e){return n}}},24357:(e,t,n)=>{const r=n(30208);function i(e){this.mode=r.NUMERIC,this.data=e.toString()}i.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t,n,r;for(t=0;t+3<=this.data.length;t+=3)n=this.data.substr(t,3),r=parseInt(n,10),e.put(r,10);const i=this.data.length-t;i>0&&(n=this.data.substr(t),r=parseInt(n,10),e.put(r,3*i+1))},e.exports=i},64713:(e,t,n)=>{const r=n(2731);t.mul=function(e,t){const n=new Uint8Array(e.length+t.length-1);for(let i=0;i=0;){const e=n[0];for(let i=0;i{const r=n(56886),i=n(49953),o=n(99899),s=n(8820),a=n(6421),u=n(7756),c=n(81332),d=n(97518),l=n(74764),h=n(31427),f=n(84565),p=n(30208),m=n(29801);function g(e,t,n){const r=e.size,i=f.getEncodedBits(t,n);let o,s;for(o=0;o<15;o++)s=1==(i>>o&1),o<6?e.set(o,8,s,!0):o<8?e.set(o+1,8,s,!0):e.set(r-15+o,8,s,!0),o<8?e.set(8,r-o-1,s,!0):o<9?e.set(8,15-o-1+1,s,!0):e.set(8,15-o-1,s,!0);e.set(r-8,8,1,!0)}function y(e,t,n){const i=new o;n.forEach((function(t){i.put(t.mode.bit,4),i.put(t.getLength(),p.getCharCountIndicator(t.mode,e)),t.write(i)}));const s=8*(r.getSymbolTotalCodewords(e)-d.getTotalCodewordsCount(e,t));for(i.getLengthInBits()+4<=s&&i.put(0,4);i.getLengthInBits()%8!=0;)i.putBit(0);const a=(s-i.getLengthInBits())/8;for(let e=0;e=0&&t<=6&&(0===r||6===r)||r>=0&&r<=6&&(0===t||6===t)||t>=2&&t<=4&&r>=2&&r<=4?e.set(i+t,o+r,!0,!0):e.set(i+t,o+r,!1,!0))}}(p,t),function(e){const t=e.size;for(let n=8;n=7&&function(e,t){const n=e.size,r=h.getEncodedBits(t);let i,o,s;for(let t=0;t<18;t++)i=Math.floor(t/3),o=t%3+n-8-3,s=1==(r>>t&1),e.set(i,o,s,!0),e.set(o,i,s,!0)}(p,t),function(e,t){const n=e.size;let r=-1,i=n-1,o=7,s=0;for(let a=n-1;a>0;a-=2)for(6===a&&a--;;){for(let n=0;n<2;n++)if(!e.isReserved(i,a-n)){let r=!1;s>>o&1)),e.set(i,a-n,r),o--,-1===o&&(s++,o=7)}if(i+=r,i<0||n<=i){i-=r,r=-r;break}}}(p,l),isNaN(i)&&(i=c.getBestMask(p,g.bind(null,p,n))),c.applyMask(i,p),g(p,n,i),{modules:p,version:t,errorCorrectionLevel:n,maskPattern:i,segments:o}}t.create=function(e,t){if(void 0===e||""===e)throw new Error("No input text");let n,o,s=i.M;return void 0!==t&&(s=i.from(t.errorCorrectionLevel,i.M),n=h.from(t.version),o=c.from(t.maskPattern),t.toSJISFunc&&r.setToSJISFunction(t.toSJISFunc)),v(e,n,s,o)}},74764:(e,t,n)=>{const r=n(64713);function i(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}i.prototype.initialize=function(e){this.degree=e,this.genPoly=r.generateECPolynomial(this.degree)},i.prototype.encode=function(e){if(!this.genPoly)throw new Error("Encoder not initialized");const t=new Uint8Array(e.length+this.degree);t.set(e);const n=r.mod(t,this.genPoly),i=this.degree-n.length;if(i>0){const e=new Uint8Array(this.degree);return e.set(n,i),e}return n},e.exports=i},67044:(e,t)=>{const n="[0-9]+";let r="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";r=r.replace(/u/g,"\\u");const i="(?:(?![A-Z0-9 $%*+\\-./:]|"+r+")(?:.|[\r\n]))+";t.KANJI=new RegExp(r,"g"),t.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),t.BYTE=new RegExp(i,"g"),t.NUMERIC=new RegExp(n,"g"),t.ALPHANUMERIC=new RegExp("[A-Z $%*+\\-./:]+","g");const o=new RegExp("^"+r+"$"),s=new RegExp("^"+n+"$"),a=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");t.testKanji=function(e){return o.test(e)},t.testNumeric=function(e){return s.test(e)},t.testAlphanumeric=function(e){return a.test(e)}},29801:(e,t,n)=>{const r=n(30208),i=n(24357),o=n(11433),s=n(25822),a=n(24861),u=n(67044),c=n(56886),d=n(76320);function l(e){return unescape(encodeURIComponent(e)).length}function h(e,t,n){const r=[];let i;for(;null!==(i=e.exec(n));)r.push({data:i[0],index:i.index,mode:t,length:i[0].length});return r}function f(e){const t=h(u.NUMERIC,r.NUMERIC,e),n=h(u.ALPHANUMERIC,r.ALPHANUMERIC,e);let i,o;c.isKanjiModeEnabled()?(i=h(u.BYTE,r.BYTE,e),o=h(u.KANJI,r.KANJI,e)):(i=h(u.BYTE_KANJI,r.BYTE,e),o=[]);return t.concat(n,i,o).sort((function(e,t){return e.index-t.index})).map((function(e){return{data:e.data,mode:e.mode,length:e.length}}))}function p(e,t){switch(t){case r.NUMERIC:return i.getBitsLength(e);case r.ALPHANUMERIC:return o.getBitsLength(e);case r.KANJI:return a.getBitsLength(e);case r.BYTE:return s.getBitsLength(e)}}function m(e,t){let n;const u=r.getBestModeForData(e);if(n=r.from(t,u),n!==r.BYTE&&n.bit=0?e[e.length-1]:null;return n&&n.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)}),[])}(a))},t.rawSplit=function(e){return t.fromArray(f(e,c.isKanjiModeEnabled()))}},56886:(e,t)=>{let n;const r=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];t.getSymbolSize=function(e){if(!e)throw new Error('"version" cannot be null or undefined');if(e<1||e>40)throw new Error('"version" should be in range from 1 to 40');return 4*e+17},t.getSymbolTotalCodewords=function(e){return r[e]},t.getBCHDigit=function(e){let t=0;for(;0!==e;)t++,e>>>=1;return t},t.setToSJISFunction=function(e){if("function"!=typeof e)throw new Error('"toSJISFunc" is not a valid function.');n=e},t.isKanjiModeEnabled=function(){return void 0!==n},t.toSJIS=function(e){return n(e)}},21878:(e,t)=>{t.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}},31427:(e,t,n)=>{const r=n(56886),i=n(97518),o=n(49953),s=n(30208),a=n(21878),u=r.getBCHDigit(7973);function c(e,t){return s.getCharCountIndicator(e,t)+4}function d(e,t){let n=0;return e.forEach((function(e){const r=c(e.mode,t);n+=r+e.getBitsLength()})),n}t.from=function(e,t){return a.isValid(e)?parseInt(e,10):t},t.getCapacity=function(e,t,n){if(!a.isValid(e))throw new Error("Invalid QR Code version");void 0===n&&(n=s.BYTE);const o=8*(r.getSymbolTotalCodewords(e)-i.getTotalCodewordsCount(e,t));if(n===s.MIXED)return o;const u=o-c(n,e);switch(n){case s.NUMERIC:return Math.floor(u/10*3);case s.ALPHANUMERIC:return Math.floor(u/11*2);case s.KANJI:return Math.floor(u/13);case s.BYTE:default:return Math.floor(u/8)}},t.getBestVersionForData=function(e,n){let r;const i=o.from(n,o.M);if(Array.isArray(e)){if(e.length>1)return function(e,n){for(let r=1;r<=40;r++)if(d(e,r)<=t.getCapacity(r,n,s.MIXED))return r}(e,i);if(0===e.length)return 1;r=e[0]}else r=e;return function(e,n,r){for(let i=1;i<=40;i++)if(n<=t.getCapacity(i,r,e))return i}(r.mode,r.getLength(),i)},t.getEncodedBits=function(e){if(!a.isValid(e)||e<7)throw new Error("Invalid QR Code version");let t=e<<12;for(;r.getBCHDigit(t)-u>=0;)t^=7973<{const r=n(92726);t.render=function(e,t,n){let i=n,o=t;void 0!==i||t&&t.getContext||(i=t,t=void 0),t||(o=function(){try{return document.createElement("canvas")}catch(e){throw new Error("You need to specify a canvas element")}}()),i=r.getOptions(i);const s=r.getImageWidth(e.modules.size,i),a=o.getContext("2d"),u=a.createImageData(s,s);return r.qrToImageData(u.data,e,i),function(e,t,n){e.clearRect(0,0,t.width,t.height),t.style||(t.style={}),t.height=n,t.width=n,t.style.height=n+"px",t.style.width=n+"px"}(a,o,s),a.putImageData(u,0,0),o},t.renderToDataURL=function(e,n,r){let i=r;void 0!==i||n&&n.getContext||(i=n,n=void 0),i||(i={});const o=t.render(e,n,i),s=i.type||"image/png",a=i.rendererOpts||{};return o.toDataURL(s,a.quality)}},56756:(e,t,n)=>{const r=n(92726);function i(e,t){const n=e.a/255,r=t+'="'+e.hex+'"';return n<1?r+" "+t+'-opacity="'+n.toFixed(2).slice(1)+'"':r}function o(e,t,n){let r=e+t;return void 0!==n&&(r+=" "+n),r}t.render=function(e,t,n){const s=r.getOptions(t),a=e.modules.size,u=e.modules.data,c=a+2*s.margin,d=s.color.light.a?"':"",l="0&&c>0&&e[u-1]||(r+=s?o("M",c+n,.5+d+n):o("m",i,0),i=0,s=!1),c+1',h='viewBox="0 0 '+c+" "+c+'"',f=''+d+l+"\n";return"function"==typeof n&&n(null,f),f}},92726:(e,t)=>{function n(e){if("number"==typeof e&&(e=e.toString()),"string"!=typeof e)throw new Error("Color should be defined as hex string");let t=e.slice().replace("#","").split("");if(t.length<3||5===t.length||t.length>8)throw new Error("Invalid hex color: "+e);3!==t.length&&4!==t.length||(t=Array.prototype.concat.apply([],t.map((function(e){return[e,e]})))),6===t.length&&t.push("F","F");const n=parseInt(t.join(""),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:255&n,hex:"#"+t.slice(0,6).join("")}}t.getOptions=function(e){e||(e={}),e.color||(e.color={});const t=void 0===e.margin||null===e.margin||e.margin<0?4:e.margin,r=e.width&&e.width>=21?e.width:void 0,i=e.scale||4;return{width:r,scale:r?4:i,margin:t,color:{dark:n(e.color.dark||"#000000ff"),light:n(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}},t.getScale=function(e,t){return t.width&&t.width>=e+2*t.margin?t.width/(e+2*t.margin):t.scale},t.getImageWidth=function(e,n){const r=t.getScale(e,n);return Math.floor((e+2*n.margin)*r)},t.qrToImageData=function(e,n,r){const i=n.modules.size,o=n.modules.data,s=t.getScale(i,r),a=Math.floor((i+2*r.margin)*s),u=r.margin*s,c=[r.color.light,r.color.dark];for(let t=0;t=u&&n>=u&&t{"use strict";var r=n(65606),i=65536,o=4294967295;var s=n(92861).Buffer,a=n.g.crypto||n.g.msCrypto;a&&a.getRandomValues?e.exports=function(e,t){if(e>o)throw new RangeError("requested too many random bytes");var n=s.allocUnsafe(e);if(e>0)if(e>i)for(var u=0;u{"use strict";var r=n(65606);function i(){throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")}var o=n(92861),s=n(53209),a=o.Buffer,u=o.kMaxLength,c=n.g.crypto||n.g.msCrypto,d=Math.pow(2,32)-1;function l(e,t){if("number"!=typeof e||e!=e)throw new TypeError("offset must be a number");if(e>d||e<0)throw new TypeError("offset must be a uint32");if(e>u||e>t)throw new RangeError("offset out of range")}function h(e,t,n){if("number"!=typeof e||e!=e)throw new TypeError("size must be a number");if(e>d||e<0)throw new TypeError("size must be a uint32");if(e+t>n||e>u)throw new RangeError("buffer too small")}function f(e,t,n,i){if(r.browser){var o=e.buffer,a=new Uint8Array(o,t,n);return c.getRandomValues(a),i?void r.nextTick((function(){i(null,e)})):e}if(!i)return s(n).copy(e,t),e;s(n,(function(n,r){if(n)return i(n);r.copy(e,t),i(null,e)}))}c&&c.getRandomValues||!r.browser?(t.randomFill=function(e,t,r,i){if(!(a.isBuffer(e)||e instanceof n.g.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if("function"==typeof t)i=t,t=0,r=e.length;else if("function"==typeof r)i=r,r=e.length-t;else if("function"!=typeof i)throw new TypeError('"cb" argument must be a function');return l(t,e.length),h(r,t,e.length),f(e,t,r,i)},t.randomFillSync=function(e,t,r){void 0===t&&(t=0);if(!(a.isBuffer(e)||e instanceof n.g.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');l(t,e.length),void 0===r&&(r=e.length-t);return h(r,t,e.length),f(e,t,r)}):(t.randomFill=i,t.randomFillSync=i)},25382:(e,t,n)=>{"use strict";var r=n(33225),i=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};e.exports=l;var o=Object.create(n(15622));o.inherits=n(56698);var s=n(45412),a=n(16708);o.inherits(l,s);for(var u=i(a.prototype),c=0;c{"use strict";e.exports=o;var r=n(74610),i=Object.create(n(15622));function o(e){if(!(this instanceof o))return new o(e);r.call(this,e)}i.inherits=n(56698),i.inherits(o,r),o.prototype._transform=function(e,t,n){n(null,e)}},45412:(e,t,n)=>{"use strict";var r=n(65606),i=n(33225);e.exports=b;var o,s=n(64634);b.ReadableState=v;n(37007).EventEmitter;var a=function(e,t){return e.listeners(t).length},u=n(40345),c=n(34106).Buffer,d=(void 0!==n.g?n.g:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};var l=Object.create(n(15622));l.inherits=n(56698);var h=n(79838),f=void 0;f=h&&h.debuglog?h.debuglog("stream"):function(){};var p,m=n(83222),g=n(75896);l.inherits(b,u);var y=["error","close","destroy","pause","resume"];function v(e,t){e=e||{};var r=t instanceof(o=o||n(25382));this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var i=e.highWaterMark,s=e.readableHighWaterMark,a=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:r&&(s||0===s)?s:a,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new m,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(p||(p=n(83141).I),this.decoder=new p(e.encoding),this.encoding=e.encoding)}function b(e){if(o=o||n(25382),!(this instanceof b))return new b(e);this._readableState=new v(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),u.call(this)}function w(e,t,n,r,i){var o,s=e._readableState;null===t?(s.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var n=t.decoder.end();n&&n.length&&(t.buffer.push(n),t.length+=t.objectMode?1:n.length)}t.ended=!0,E(e)}(e,s)):(i||(o=function(e,t){var n;r=t,c.isBuffer(r)||r instanceof d||"string"==typeof t||void 0===t||e.objectMode||(n=new TypeError("Invalid non-string/buffer chunk"));var r;return n}(s,t)),o?e.emit("error",o):s.objectMode||t&&t.length>0?("string"==typeof t||s.objectMode||Object.getPrototypeOf(t)===c.prototype||(t=function(e){return c.from(e)}(t)),r?s.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):_(e,s,t,!0):s.ended?e.emit("error",new Error("stream.push() after EOF")):(s.reading=!1,s.decoder&&!n?(t=s.decoder.write(t),s.objectMode||0!==t.length?_(e,s,t,!1):A(e,s)):_(e,s,t,!1))):r||(s.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=x?e=x:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function E(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(f("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?i.nextTick(M,e):M(e))}function M(e){f("emit readable"),e.emit("readable"),T(e)}function A(e,t){t.readingMore||(t.readingMore=!0,i.nextTick(S,e,t))}function S(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):n=function(e,t,n){var r;eo.length?o.length:e;if(s===o.length?i+=o:i+=o.slice(0,e),0===(e-=s)){s===o.length?(++r,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=o.slice(s));break}++r}return t.length-=r,i}(e,t):function(e,t){var n=c.allocUnsafe(e),r=t.head,i=1;r.data.copy(n),e-=r.data.length;for(;r=r.next;){var o=r.data,s=e>o.length?o.length:e;if(o.copy(n,n.length-e,0,s),0===(e-=s)){s===o.length?(++i,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=o.slice(s));break}++i}return t.length-=i,n}(e,t);return r}(e,t.buffer,t.decoder),n);var n}function R(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,i.nextTick(F,t,e))}function F(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function O(e,t){for(var n=0,r=e.length;n=t.highWaterMark||t.ended))return f("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?R(this):E(this),null;if(0===(e=D(e,t))&&t.ended)return 0===t.length&&R(this),null;var r,i=t.needReadable;return f("need readable",i),(0===t.length||t.length-e0?I(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&R(this)),null!==r&&this.emit("data",r),r},b.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},b.prototype.pipe=function(e,t){var n=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=e;break;case 1:o.pipes=[o.pipes,e];break;default:o.pipes.push(e)}o.pipesCount+=1,f("pipe count=%d opts=%j",o.pipesCount,t);var u=(!t||!1!==t.end)&&e!==r.stdout&&e!==r.stderr?d:b;function c(t,r){f("onunpipe"),t===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,f("cleanup"),e.removeListener("close",y),e.removeListener("finish",v),e.removeListener("drain",l),e.removeListener("error",g),e.removeListener("unpipe",c),n.removeListener("end",d),n.removeListener("end",b),n.removeListener("data",m),h=!0,!o.awaitDrain||e._writableState&&!e._writableState.needDrain||l())}function d(){f("onend"),e.end()}o.endEmitted?i.nextTick(u):n.once("end",u),e.on("unpipe",c);var l=function(e){return function(){var t=e._readableState;f("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&a(e,"data")&&(t.flowing=!0,T(e))}}(n);e.on("drain",l);var h=!1;var p=!1;function m(t){f("ondata"),p=!1,!1!==e.write(t)||p||((1===o.pipesCount&&o.pipes===e||o.pipesCount>1&&-1!==O(o.pipes,e))&&!h&&(f("false write response, pause",o.awaitDrain),o.awaitDrain++,p=!0),n.pause())}function g(t){f("onerror",t),b(),e.removeListener("error",g),0===a(e,"error")&&e.emit("error",t)}function y(){e.removeListener("finish",v),b()}function v(){f("onfinish"),e.removeListener("close",y),b()}function b(){f("unpipe"),n.unpipe(e)}return n.on("data",m),function(e,t,n){if("function"==typeof e.prependListener)return e.prependListener(t,n);e._events&&e._events[t]?s(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n)}(e,"error",g),e.once("close",y),e.once("finish",v),e.emit("pipe",n),o.flowing||(f("pipe resume"),n.resume()),e},b.prototype.unpipe=function(e){var t=this._readableState,n={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,n)),this;if(!e){var r=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o{"use strict";e.exports=s;var r=n(25382),i=Object.create(n(15622));function o(e,t){var n=this._transformState;n.transforming=!1;var r=n.writecb;if(!r)return this.emit("error",new Error("write callback called multiple times"));n.writechunk=null,n.writecb=null,null!=t&&this.push(t),r(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length{"use strict";var r=n(65606),i=n(33225);function o(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,n){var r=e.entry;e.entry=null;for(;r;){var i=r.callback;t.pendingcb--,i(n),r=r.next}t.corkedRequestsFree.next=e}(t,e)}}e.exports=y;var s,a=!r.browser&&["v0.10","v0.9."].indexOf(r.version.slice(0,5))>-1?setImmediate:i.nextTick;y.WritableState=g;var u=Object.create(n(15622));u.inherits=n(56698);var c={deprecate:n(94643)},d=n(40345),l=n(34106).Buffer,h=(void 0!==n.g?n.g:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};var f,p=n(75896);function m(){}function g(e,t){s=s||n(25382),e=e||{};var r=t instanceof s;this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var u=e.highWaterMark,c=e.writableHighWaterMark,d=this.objectMode?16:16384;this.highWaterMark=u||0===u?u:r&&(c||0===c)?c:d,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var l=!1===e.decodeStrings;this.decodeStrings=!l,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var n=e._writableState,r=n.sync,o=n.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(n),t)!function(e,t,n,r,o){--t.pendingcb,n?(i.nextTick(o,r),i.nextTick(D,e,t),e._writableState.errorEmitted=!0,e.emit("error",r)):(o(r),e._writableState.errorEmitted=!0,e.emit("error",r),D(e,t))}(e,n,r,t,o);else{var s=_(n);s||n.corked||n.bufferProcessing||!n.bufferedRequest||w(e,n),r?a(b,e,n,s,o):b(e,n,s,o)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function y(e){if(s=s||n(25382),!(f.call(y,this)||this instanceof s))return new y(e);this._writableState=new g(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),d.call(this)}function v(e,t,n,r,i,o,s){t.writelen=r,t.writecb=s,t.writing=!0,t.sync=!0,n?e._writev(i,t.onwrite):e._write(i,o,t.onwrite),t.sync=!1}function b(e,t,n,r){n||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,r(),D(e,t)}function w(e,t){t.bufferProcessing=!0;var n=t.bufferedRequest;if(e._writev&&n&&n.next){var r=t.bufferedRequestCount,i=new Array(r),s=t.corkedRequestsFree;s.entry=n;for(var a=0,u=!0;n;)i[a]=n,n.isBuf||(u=!1),n=n.next,a+=1;i.allBuffers=u,v(e,t,!0,t.length,i,"",s.finish),t.pendingcb++,t.lastBufferedRequest=null,s.next?(t.corkedRequestsFree=s.next,s.next=null):t.corkedRequestsFree=new o(t),t.bufferedRequestCount=0}else{for(;n;){var c=n.chunk,d=n.encoding,l=n.callback;if(v(e,t,!1,t.objectMode?1:c.length,c,d,l),n=n.next,t.bufferedRequestCount--,t.writing)break}null===n&&(t.lastBufferedRequest=null)}t.bufferedRequest=n,t.bufferProcessing=!1}function _(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function x(e,t){e._final((function(n){t.pendingcb--,n&&e.emit("error",n),t.prefinished=!0,e.emit("prefinish"),D(e,t)}))}function D(e,t){var n=_(t);return n&&(!function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,i.nextTick(x,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),n}u.inherits(y,d),g.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(g.prototype,"buffer",{get:c.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(f=Function.prototype[Symbol.hasInstance],Object.defineProperty(y,Symbol.hasInstance,{value:function(e){return!!f.call(this,e)||this===y&&(e&&e._writableState instanceof g)}})):f=function(e){return e instanceof this},y.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},y.prototype.write=function(e,t,n){var r,o=this._writableState,s=!1,a=!o.objectMode&&(r=e,l.isBuffer(r)||r instanceof h);return a&&!l.isBuffer(e)&&(e=function(e){return l.from(e)}(e)),"function"==typeof t&&(n=t,t=null),a?t="buffer":t||(t=o.defaultEncoding),"function"!=typeof n&&(n=m),o.ended?function(e,t){var n=new Error("write after end");e.emit("error",n),i.nextTick(t,n)}(this,n):(a||function(e,t,n,r){var o=!0,s=!1;return null===n?s=new TypeError("May not write null values to stream"):"string"==typeof n||void 0===n||t.objectMode||(s=new TypeError("Invalid non-string/buffer chunk")),s&&(e.emit("error",s),i.nextTick(r,s),o=!1),o}(this,o,e,n))&&(o.pendingcb++,s=function(e,t,n,r,i,o){if(!n){var s=function(e,t,n){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=l.from(t,n));return t}(t,r,i);r!==s&&(n=!0,i="buffer",r=s)}var a=t.objectMode?1:r.length;t.length+=a;var u=t.length-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(y.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),y.prototype._write=function(e,t,n){n(new Error("_write() is not implemented"))},y.prototype._writev=null,y.prototype.end=function(e,t,n){var r=this._writableState;"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!=e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||function(e,t,n){t.ending=!0,D(e,t),n&&(t.finished?i.nextTick(n):e.once("finish",n));t.ended=!0,e.writable=!1}(this,r,n)},Object.defineProperty(y.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),y.prototype.destroy=p.destroy,y.prototype._undestroy=p.undestroy,y.prototype._destroy=function(e,t){this.end(),t(e)}},83222:(e,t,n)=>{"use strict";var r=n(34106).Buffer,i=n(15340);e.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n},e.prototype.concat=function(e){if(0===this.length)return r.alloc(0);for(var t,n,i,o=r.allocUnsafe(e>>>0),s=this.head,a=0;s;)t=s.data,n=o,i=a,t.copy(n,i),a+=s.data.length,s=s.next;return o},e}(),i&&i.inspect&&i.inspect.custom&&(e.exports.prototype[i.inspect.custom]=function(){var e=i.inspect({length:this.length});return this.constructor.name+" "+e})},75896:(e,t,n)=>{"use strict";var r=n(33225);function i(e,t){e.emit("error",t)}e.exports={destroy:function(e,t){var n=this,o=this._readableState&&this._readableState.destroyed,s=this._writableState&&this._writableState.destroyed;return o||s?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,r.nextTick(i,this,e)):r.nextTick(i,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!t&&e?n._writableState?n._writableState.errorEmitted||(n._writableState.errorEmitted=!0,r.nextTick(i,n,e)):r.nextTick(i,n,e):t&&t(e)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},40345:(e,t,n)=>{e.exports=n(37007).EventEmitter},34106:(e,t,n)=>{var r=n(48287),i=r.Buffer;function o(e,t){for(var n in e)t[n]=e[n]}function s(e,t,n){return i(e,t,n)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?e.exports=r:(o(r,t),t.Buffer=s),o(i,s),s.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return i(e,t,n)},s.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var r=i(e);return void 0!==t?"string"==typeof n?r.fill(t,n):r.fill(t):r.fill(0),r},s.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i(e)},s.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}},28399:(e,t,n)=>{(t=e.exports=n(45412)).Stream=t,t.Readable=t,t.Writable=n(16708),t.Duplex=n(25382),t.Transform=n(74610),t.PassThrough=n(63600)},66011:(e,t,n)=>{"use strict";var r=n(48287).Buffer,i=n(56698),o=n(4729),s=new Array(16),a=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],u=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],c=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],d=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],l=[0,1518500249,1859775393,2400959708,2840853838],h=[1352829926,1548603684,1836072691,2053994217,0];function f(){o.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function p(e,t){return e<>>32-t}function m(e,t,n,r,i,o,s,a){return p(e+(t^n^r)+o+s|0,a)+i|0}function g(e,t,n,r,i,o,s,a){return p(e+(t&n|~t&r)+o+s|0,a)+i|0}function y(e,t,n,r,i,o,s,a){return p(e+((t|~n)^r)+o+s|0,a)+i|0}function v(e,t,n,r,i,o,s,a){return p(e+(t&r|n&~r)+o+s|0,a)+i|0}function b(e,t,n,r,i,o,s,a){return p(e+(t^(n|~r))+o+s|0,a)+i|0}i(f,o),f.prototype._update=function(){for(var e=s,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);for(var n=0|this._a,r=0|this._b,i=0|this._c,o=0|this._d,f=0|this._e,w=0|this._a,_=0|this._b,x=0|this._c,D=0|this._d,E=0|this._e,M=0;M<80;M+=1){var A,S;M<16?(A=m(n,r,i,o,f,e[a[M]],l[0],c[M]),S=b(w,_,x,D,E,e[u[M]],h[0],d[M])):M<32?(A=g(n,r,i,o,f,e[a[M]],l[1],c[M]),S=v(w,_,x,D,E,e[u[M]],h[1],d[M])):M<48?(A=y(n,r,i,o,f,e[a[M]],l[2],c[M]),S=y(w,_,x,D,E,e[u[M]],h[2],d[M])):M<64?(A=v(n,r,i,o,f,e[a[M]],l[3],c[M]),S=g(w,_,x,D,E,e[u[M]],h[3],d[M])):(A=b(n,r,i,o,f,e[a[M]],l[4],c[M]),S=m(w,_,x,D,E,e[u[M]],h[4],d[M])),n=f,f=o,o=p(i,10),i=r,r=A,w=E,E=D,D=p(x,10),x=_,_=S}var C=this._b+i+D|0;this._b=this._c+o+E|0,this._c=this._d+f+w|0,this._d=this._e+n+_|0,this._e=this._a+r+x|0,this._a=C},f.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=r.alloc?r.alloc(20):new r(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e},e.exports=f},92861:(e,t,n)=>{ +/*! safe-buffer. MIT License. Feross Aboukhadijeh */ +var r=n(48287),i=r.Buffer;function o(e,t){for(var n in e)t[n]=e[n]}function s(e,t,n){return i(e,t,n)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?e.exports=r:(o(r,t),t.Buffer=s),s.prototype=Object.create(i.prototype),o(i,s),s.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return i(e,t,n)},s.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var r=i(e);return void 0!==t?"string"==typeof n?r.fill(t,n):r.fill(t):r.fill(0),r},s.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i(e)},s.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}},93904:(e,t,n)=>{const r=Symbol("SemVer ANY");class i{static get ANY(){return r}constructor(e,t){if(t=o(t),e instanceof i){if(e.loose===!!t.loose)return e;e=e.value}e=e.trim().split(/\s+/).join(" "),c("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===r?this.value="":this.value=this.operator+this.semver.version,c("comp",this)}parse(e){const t=this.options.loose?s[a.COMPARATORLOOSE]:s[a.COMPARATOR],n=e.match(t);if(!n)throw new TypeError(`Invalid comparator: ${e}`);this.operator=void 0!==n[1]?n[1]:"","="===this.operator&&(this.operator=""),n[2]?this.semver=new d(n[2],this.options.loose):this.semver=r}toString(){return this.value}test(e){if(c("Comparator.test",e,this.options.loose),this.semver===r||e===r)return!0;if("string"==typeof e)try{e=new d(e,this.options)}catch(e){return!1}return u(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof i))throw new TypeError("a Comparator is required");return""===this.operator?""===this.value||new l(e.value,t).test(this.value):""===e.operator?""===e.value||new l(this.value,t).test(e.semver):(!(t=o(t)).includePrerelease||"<0.0.0-0"!==this.value&&"<0.0.0-0"!==e.value)&&(!(!t.includePrerelease&&(this.value.startsWith("<0.0.0")||e.value.startsWith("<0.0.0")))&&(!(!this.operator.startsWith(">")||!e.operator.startsWith(">"))||(!(!this.operator.startsWith("<")||!e.operator.startsWith("<"))||(!(this.semver.version!==e.semver.version||!this.operator.includes("=")||!e.operator.includes("="))||(!!(u(this.semver,"<",e.semver,t)&&this.operator.startsWith(">")&&e.operator.startsWith("<"))||!!(u(this.semver,">",e.semver,t)&&this.operator.startsWith("<")&&e.operator.startsWith(">")))))))}}e.exports=i;const o=n(98587),{safeRe:s,t:a}=n(99718),u=n(72111),c=n(57272),d=n(53908),l=n(78311)},78311:(e,t,n)=>{class r{constructor(e,t){if(t=o(t),e instanceof r)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new r(e.raw,t);if(e instanceof s)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e.trim().split(/\s+/).join(" "),this.set=this.raw.split("||").map((e=>this.parseRange(e.trim()))).filter((e=>e.length)),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){const e=this.set[0];if(this.set=this.set.filter((e=>!g(e[0]))),0===this.set.length)this.set=[e];else if(this.set.length>1)for(const e of this.set)if(1===e.length&&y(e[0])){this.set=[e];break}}this.format()}format(){return this.range=this.set.map((e=>e.join(" ").trim())).join("||").trim(),this.range}toString(){return this.range}parseRange(e){const t=((this.options.includePrerelease&&p)|(this.options.loose&&m))+":"+e,n=i.get(t);if(n)return n;const r=this.options.loose,o=r?c[d.HYPHENRANGELOOSE]:c[d.HYPHENRANGE];e=e.replace(o,k(this.options.includePrerelease)),a("hyphen replace",e),e=e.replace(c[d.COMPARATORTRIM],l),a("comparator trim",e),e=e.replace(c[d.TILDETRIM],h),a("tilde trim",e),e=e.replace(c[d.CARETTRIM],f),a("caret trim",e);let u=e.split(" ").map((e=>b(e,this.options))).join(" ").split(/\s+/).map((e=>C(e,this.options)));r&&(u=u.filter((e=>(a("loose invalid filter",e,this.options),!!e.match(c[d.COMPARATORLOOSE]))))),a("range list",u);const y=new Map,v=u.map((e=>new s(e,this.options)));for(const e of v){if(g(e))return[e];y.set(e.value,e)}y.size>1&&y.has("")&&y.delete("");const w=[...y.values()];return i.set(t,w),w}intersects(e,t){if(!(e instanceof r))throw new TypeError("a Range is required");return this.set.some((n=>v(n,t)&&e.set.some((e=>v(e,t)&&n.every((n=>e.every((e=>n.intersects(e,t)))))))))}test(e){if(!e)return!1;if("string"==typeof e)try{e=new u(e,this.options)}catch(e){return!1}for(let t=0;t"<0.0.0-0"===e.value,y=e=>""===e.value,v=(e,t)=>{let n=!0;const r=e.slice();let i=r.pop();for(;n&&r.length;)n=r.every((e=>i.intersects(e,t))),i=r.pop();return n},b=(e,t)=>(a("comp",e,t),e=D(e,t),a("caret",e),e=_(e,t),a("tildes",e),e=M(e,t),a("xrange",e),e=S(e,t),a("stars",e),e),w=e=>!e||"x"===e.toLowerCase()||"*"===e,_=(e,t)=>e.trim().split(/\s+/).map((e=>x(e,t))).join(" "),x=(e,t)=>{const n=t.loose?c[d.TILDELOOSE]:c[d.TILDE];return e.replace(n,((t,n,r,i,o)=>{let s;return a("tilde",e,t,n,r,i,o),w(n)?s="":w(r)?s=`>=${n}.0.0 <${+n+1}.0.0-0`:w(i)?s=`>=${n}.${r}.0 <${n}.${+r+1}.0-0`:o?(a("replaceTilde pr",o),s=`>=${n}.${r}.${i}-${o} <${n}.${+r+1}.0-0`):s=`>=${n}.${r}.${i} <${n}.${+r+1}.0-0`,a("tilde return",s),s}))},D=(e,t)=>e.trim().split(/\s+/).map((e=>E(e,t))).join(" "),E=(e,t)=>{a("caret",e,t);const n=t.loose?c[d.CARETLOOSE]:c[d.CARET],r=t.includePrerelease?"-0":"";return e.replace(n,((t,n,i,o,s)=>{let u;return a("caret",e,t,n,i,o,s),w(n)?u="":w(i)?u=`>=${n}.0.0${r} <${+n+1}.0.0-0`:w(o)?u="0"===n?`>=${n}.${i}.0${r} <${n}.${+i+1}.0-0`:`>=${n}.${i}.0${r} <${+n+1}.0.0-0`:s?(a("replaceCaret pr",s),u="0"===n?"0"===i?`>=${n}.${i}.${o}-${s} <${n}.${i}.${+o+1}-0`:`>=${n}.${i}.${o}-${s} <${n}.${+i+1}.0-0`:`>=${n}.${i}.${o}-${s} <${+n+1}.0.0-0`):(a("no pr"),u="0"===n?"0"===i?`>=${n}.${i}.${o}${r} <${n}.${i}.${+o+1}-0`:`>=${n}.${i}.${o}${r} <${n}.${+i+1}.0-0`:`>=${n}.${i}.${o} <${+n+1}.0.0-0`),a("caret return",u),u}))},M=(e,t)=>(a("replaceXRanges",e,t),e.split(/\s+/).map((e=>A(e,t))).join(" ")),A=(e,t)=>{e=e.trim();const n=t.loose?c[d.XRANGELOOSE]:c[d.XRANGE];return e.replace(n,((n,r,i,o,s,u)=>{a("xRange",e,n,r,i,o,s,u);const c=w(i),d=c||w(o),l=d||w(s),h=l;return"="===r&&h&&(r=""),u=t.includePrerelease?"-0":"",c?n=">"===r||"<"===r?"<0.0.0-0":"*":r&&h?(d&&(o=0),s=0,">"===r?(r=">=",d?(i=+i+1,o=0,s=0):(o=+o+1,s=0)):"<="===r&&(r="<",d?i=+i+1:o=+o+1),"<"===r&&(u="-0"),n=`${r+i}.${o}.${s}${u}`):d?n=`>=${i}.0.0${u} <${+i+1}.0.0-0`:l&&(n=`>=${i}.${o}.0${u} <${i}.${+o+1}.0-0`),a("xRange return",n),n}))},S=(e,t)=>(a("replaceStars",e,t),e.trim().replace(c[d.STAR],"")),C=(e,t)=>(a("replaceGTE0",e,t),e.trim().replace(c[t.includePrerelease?d.GTE0PRE:d.GTE0],"")),k=e=>(t,n,r,i,o,s,a,u,c,d,l,h)=>`${n=w(r)?"":w(i)?`>=${r}.0.0${e?"-0":""}`:w(o)?`>=${r}.${i}.0${e?"-0":""}`:s?`>=${n}`:`>=${n}${e?"-0":""}`} ${u=w(c)?"":w(d)?`<${+c+1}.0.0-0`:w(l)?`<${c}.${+d+1}.0-0`:h?`<=${c}.${d}.${l}-${h}`:e?`<${c}.${d}.${+l+1}-0`:`<=${u}`}`.trim(),T=(e,t,n)=>{for(let n=0;n0){const r=e[n].semver;if(r.major===t.major&&r.minor===t.minor&&r.patch===t.patch)return!0}return!1}return!0}},53908:(e,t,n)=>{const r=n(57272),{MAX_LENGTH:i,MAX_SAFE_INTEGER:o}=n(16874),{safeRe:s,t:a}=n(99718),u=n(98587),{compareIdentifiers:c}=n(61123);class d{constructor(e,t){if(t=u(t),e instanceof d){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if("string"!=typeof e)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>i)throw new TypeError(`version is longer than ${i} characters`);r("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const n=e.trim().match(t.loose?s[a.LOOSE]:s[a.FULL]);if(!n)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>o||this.major<0)throw new TypeError("Invalid major version");if(this.minor>o||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>o||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map((e=>{if(/^[0-9]+$/.test(e)){const t=+e;if(t>=0&&t=0;)"number"==typeof this.prerelease[r]&&(this.prerelease[r]++,r=-2);if(-1===r){if(t===this.prerelease.join(".")&&!1===n)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(e)}}if(t){let r=[t,e];!1===n&&(r=[t]),0===c(this.prerelease[0],t)?isNaN(this.prerelease[1])&&(this.prerelease=r):this.prerelease=r}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}e.exports=d},57414:(e,t,n)=>{const r=n(30144);e.exports=(e,t)=>{const n=r(e.trim().replace(/^[=v]+/,""),t);return n?n.version:null}},72111:(e,t,n)=>{const r=n(94641),i=n(13999),o=n(35580),s=n(54089),a=n(7059),u=n(25200);e.exports=(e,t,n,c)=>{switch(t){case"===":return"object"==typeof e&&(e=e.version),"object"==typeof n&&(n=n.version),e===n;case"!==":return"object"==typeof e&&(e=e.version),"object"==typeof n&&(n=n.version),e!==n;case"":case"=":case"==":return r(e,n,c);case"!=":return i(e,n,c);case">":return o(e,n,c);case">=":return s(e,n,c);case"<":return a(e,n,c);case"<=":return u(e,n,c);default:throw new TypeError(`Invalid operator: ${t}`)}}},46170:(e,t,n)=>{const r=n(53908),i=n(30144),{safeRe:o,t:s}=n(99718);e.exports=(e,t)=>{if(e instanceof r)return e;if("number"==typeof e&&(e=String(e)),"string"!=typeof e)return null;let n=null;if((t=t||{}).rtl){const r=t.includePrerelease?o[s.COERCERTLFULL]:o[s.COERCERTL];let i;for(;(i=r.exec(e))&&(!n||n.index+n[0].length!==e.length);)n&&i.index+i[0].length===n.index+n[0].length||(n=i),r.lastIndex=i.index+i[1].length+i[2].length;r.lastIndex=-1}else n=e.match(t.includePrerelease?o[s.COERCEFULL]:o[s.COERCE]);if(null===n)return null;const a=n[2],u=n[3]||"0",c=n[4]||"0",d=t.includePrerelease&&n[5]?`-${n[5]}`:"",l=t.includePrerelease&&n[6]?`+${n[6]}`:"";return i(`${a}.${u}.${c}${d}${l}`,t)}},40909:(e,t,n)=>{const r=n(53908);e.exports=(e,t,n)=>{const i=new r(e,n),o=new r(t,n);return i.compare(o)||i.compareBuild(o)}},11763:(e,t,n)=>{const r=n(50560);e.exports=(e,t)=>r(e,t,!0)},50560:(e,t,n)=>{const r=n(53908);e.exports=(e,t,n)=>new r(e,n).compare(new r(t,n))},51832:(e,t,n)=>{const r=n(30144);e.exports=(e,t)=>{const n=r(e,null,!0),i=r(t,null,!0),o=n.compare(i);if(0===o)return null;const s=o>0,a=s?n:i,u=s?i:n,c=!!a.prerelease.length;if(!!u.prerelease.length&&!c)return u.patch||u.minor?a.patch?"patch":a.minor?"minor":"major":"major";const d=c?"pre":"";return n.major!==i.major?d+"major":n.minor!==i.minor?d+"minor":n.patch!==i.patch?d+"patch":"prerelease"}},94641:(e,t,n)=>{const r=n(50560);e.exports=(e,t,n)=>0===r(e,t,n)},35580:(e,t,n)=>{const r=n(50560);e.exports=(e,t,n)=>r(e,t,n)>0},54089:(e,t,n)=>{const r=n(50560);e.exports=(e,t,n)=>r(e,t,n)>=0},93007:(e,t,n)=>{const r=n(53908);e.exports=(e,t,n,i,o)=>{"string"==typeof n&&(o=i,i=n,n=void 0);try{return new r(e instanceof r?e.version:e,n).inc(t,i,o).version}catch(e){return null}}},7059:(e,t,n)=>{const r=n(50560);e.exports=(e,t,n)=>r(e,t,n)<0},25200:(e,t,n)=>{const r=n(50560);e.exports=(e,t,n)=>r(e,t,n)<=0},32938:(e,t,n)=>{const r=n(53908);e.exports=(e,t)=>new r(e,t).major},46254:(e,t,n)=>{const r=n(53908);e.exports=(e,t)=>new r(e,t).minor},13999:(e,t,n)=>{const r=n(50560);e.exports=(e,t,n)=>0!==r(e,t,n)},30144:(e,t,n)=>{const r=n(53908);e.exports=(e,t,n=!1)=>{if(e instanceof r)return e;try{return new r(e,t)}catch(e){if(!n)return null;throw e}}},24493:(e,t,n)=>{const r=n(53908);e.exports=(e,t)=>new r(e,t).patch},31729:(e,t,n)=>{const r=n(30144);e.exports=(e,t)=>{const n=r(e,t);return n&&n.prerelease.length?n.prerelease:null}},9970:(e,t,n)=>{const r=n(50560);e.exports=(e,t,n)=>r(t,e,n)},74277:(e,t,n)=>{const r=n(40909);e.exports=(e,t)=>e.sort(((e,n)=>r(n,e,t)))},97638:(e,t,n)=>{const r=n(78311);e.exports=(e,t,n)=>{try{t=new r(t,n)}catch(e){return!1}return t.test(e)}},43927:(e,t,n)=>{const r=n(40909);e.exports=(e,t)=>e.sort(((e,n)=>r(e,n,t)))},56953:(e,t,n)=>{const r=n(30144);e.exports=(e,t)=>{const n=r(e,t);return n?n.version:null}},99589:(e,t,n)=>{const r=n(99718),i=n(16874),o=n(53908),s=n(61123),a=n(30144),u=n(56953),c=n(57414),d=n(93007),l=n(51832),h=n(32938),f=n(46254),p=n(24493),m=n(31729),g=n(50560),y=n(9970),v=n(11763),b=n(40909),w=n(43927),_=n(74277),x=n(35580),D=n(7059),E=n(94641),M=n(13999),A=n(54089),S=n(25200),C=n(72111),k=n(46170),T=n(93904),I=n(78311),R=n(97638),F=n(77631),O=n(19628),B=n(270),P=n(41261),N=n(13874),j=n(97075),L=n(75571),U=n(5342),q=n(76780),$=n(72525),z=n(75032);e.exports={parse:a,valid:u,clean:c,inc:d,diff:l,major:h,minor:f,patch:p,prerelease:m,compare:g,rcompare:y,compareLoose:v,compareBuild:b,sort:w,rsort:_,gt:x,lt:D,eq:E,neq:M,gte:A,lte:S,cmp:C,coerce:k,Comparator:T,Range:I,satisfies:R,toComparators:F,maxSatisfying:O,minSatisfying:B,minVersion:P,validRange:N,outside:j,gtr:L,ltr:U,intersects:q,simplifyRange:$,subset:z,SemVer:o,re:r.re,src:r.src,tokens:r.t,SEMVER_SPEC_VERSION:i.SEMVER_SPEC_VERSION,RELEASE_TYPES:i.RELEASE_TYPES,compareIdentifiers:s.compareIdentifiers,rcompareIdentifiers:s.rcompareIdentifiers}},16874:e=>{const t=Number.MAX_SAFE_INTEGER||9007199254740991;e.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:t,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}},57272:(e,t,n)=>{var r=n(65606);const i="object"==typeof r&&r.env&&r.env.NODE_DEBUG&&/\bsemver\b/i.test(r.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};e.exports=i},61123:e=>{const t=/^[0-9]+$/,n=(e,n)=>{const r=t.test(e),i=t.test(n);return r&&i&&(e=+e,n=+n),e===n?0:r&&!i?-1:i&&!r?1:en(t,e)}},68794:e=>{e.exports=class{constructor(){this.max=1e3,this.map=new Map}get(e){const t=this.map.get(e);return void 0===t?void 0:(this.map.delete(e),this.map.set(e,t),t)}delete(e){return!!this.map.has(e)&&(this.map.delete(e),!0)}set(e,t){if(!this.delete(e)&&void 0!==t){if(this.map.size>=this.max){const e=this.map.keys().next().value;this.delete(e)}this.map.set(e,t)}return this}}},98587:e=>{const t=Object.freeze({loose:!0}),n=Object.freeze({});e.exports=e=>e?"object"!=typeof e?t:e:n},99718:(e,t,n)=>{const{MAX_SAFE_COMPONENT_LENGTH:r,MAX_SAFE_BUILD_LENGTH:i,MAX_LENGTH:o}=n(16874),s=n(57272),a=(t=e.exports={}).re=[],u=t.safeRe=[],c=t.src=[],d=t.t={};let l=0;const h="[a-zA-Z0-9-]",f=[["\\s",1],["\\d",o],[h,i]],p=(e,t,n)=>{const r=(e=>{for(const[t,n]of f)e=e.split(`${t}*`).join(`${t}{0,${n}}`).split(`${t}+`).join(`${t}{1,${n}}`);return e})(t),i=l++;s(e,i,t),d[e]=i,c[i]=t,a[i]=new RegExp(t,n?"g":void 0),u[i]=new RegExp(r,n?"g":void 0)};p("NUMERICIDENTIFIER","0|[1-9]\\d*"),p("NUMERICIDENTIFIERLOOSE","\\d+"),p("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${h}*`),p("MAINVERSION",`(${c[d.NUMERICIDENTIFIER]})\\.(${c[d.NUMERICIDENTIFIER]})\\.(${c[d.NUMERICIDENTIFIER]})`),p("MAINVERSIONLOOSE",`(${c[d.NUMERICIDENTIFIERLOOSE]})\\.(${c[d.NUMERICIDENTIFIERLOOSE]})\\.(${c[d.NUMERICIDENTIFIERLOOSE]})`),p("PRERELEASEIDENTIFIER",`(?:${c[d.NUMERICIDENTIFIER]}|${c[d.NONNUMERICIDENTIFIER]})`),p("PRERELEASEIDENTIFIERLOOSE",`(?:${c[d.NUMERICIDENTIFIERLOOSE]}|${c[d.NONNUMERICIDENTIFIER]})`),p("PRERELEASE",`(?:-(${c[d.PRERELEASEIDENTIFIER]}(?:\\.${c[d.PRERELEASEIDENTIFIER]})*))`),p("PRERELEASELOOSE",`(?:-?(${c[d.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${c[d.PRERELEASEIDENTIFIERLOOSE]})*))`),p("BUILDIDENTIFIER",`${h}+`),p("BUILD",`(?:\\+(${c[d.BUILDIDENTIFIER]}(?:\\.${c[d.BUILDIDENTIFIER]})*))`),p("FULLPLAIN",`v?${c[d.MAINVERSION]}${c[d.PRERELEASE]}?${c[d.BUILD]}?`),p("FULL",`^${c[d.FULLPLAIN]}$`),p("LOOSEPLAIN",`[v=\\s]*${c[d.MAINVERSIONLOOSE]}${c[d.PRERELEASELOOSE]}?${c[d.BUILD]}?`),p("LOOSE",`^${c[d.LOOSEPLAIN]}$`),p("GTLT","((?:<|>)?=?)"),p("XRANGEIDENTIFIERLOOSE",`${c[d.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),p("XRANGEIDENTIFIER",`${c[d.NUMERICIDENTIFIER]}|x|X|\\*`),p("XRANGEPLAIN",`[v=\\s]*(${c[d.XRANGEIDENTIFIER]})(?:\\.(${c[d.XRANGEIDENTIFIER]})(?:\\.(${c[d.XRANGEIDENTIFIER]})(?:${c[d.PRERELEASE]})?${c[d.BUILD]}?)?)?`),p("XRANGEPLAINLOOSE",`[v=\\s]*(${c[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[d.XRANGEIDENTIFIERLOOSE]})(?:${c[d.PRERELEASELOOSE]})?${c[d.BUILD]}?)?)?`),p("XRANGE",`^${c[d.GTLT]}\\s*${c[d.XRANGEPLAIN]}$`),p("XRANGELOOSE",`^${c[d.GTLT]}\\s*${c[d.XRANGEPLAINLOOSE]}$`),p("COERCEPLAIN",`(^|[^\\d])(\\d{1,${r}})(?:\\.(\\d{1,${r}}))?(?:\\.(\\d{1,${r}}))?`),p("COERCE",`${c[d.COERCEPLAIN]}(?:$|[^\\d])`),p("COERCEFULL",c[d.COERCEPLAIN]+`(?:${c[d.PRERELEASE]})?`+`(?:${c[d.BUILD]})?(?:$|[^\\d])`),p("COERCERTL",c[d.COERCE],!0),p("COERCERTLFULL",c[d.COERCEFULL],!0),p("LONETILDE","(?:~>?)"),p("TILDETRIM",`(\\s*)${c[d.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",p("TILDE",`^${c[d.LONETILDE]}${c[d.XRANGEPLAIN]}$`),p("TILDELOOSE",`^${c[d.LONETILDE]}${c[d.XRANGEPLAINLOOSE]}$`),p("LONECARET","(?:\\^)"),p("CARETTRIM",`(\\s*)${c[d.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",p("CARET",`^${c[d.LONECARET]}${c[d.XRANGEPLAIN]}$`),p("CARETLOOSE",`^${c[d.LONECARET]}${c[d.XRANGEPLAINLOOSE]}$`),p("COMPARATORLOOSE",`^${c[d.GTLT]}\\s*(${c[d.LOOSEPLAIN]})$|^$`),p("COMPARATOR",`^${c[d.GTLT]}\\s*(${c[d.FULLPLAIN]})$|^$`),p("COMPARATORTRIM",`(\\s*)${c[d.GTLT]}\\s*(${c[d.LOOSEPLAIN]}|${c[d.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",p("HYPHENRANGE",`^\\s*(${c[d.XRANGEPLAIN]})\\s+-\\s+(${c[d.XRANGEPLAIN]})\\s*$`),p("HYPHENRANGELOOSE",`^\\s*(${c[d.XRANGEPLAINLOOSE]})\\s+-\\s+(${c[d.XRANGEPLAINLOOSE]})\\s*$`),p("STAR","(<|>)?=?\\s*\\*"),p("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),p("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")},75571:(e,t,n)=>{const r=n(97075);e.exports=(e,t,n)=>r(e,t,">",n)},76780:(e,t,n)=>{const r=n(78311);e.exports=(e,t,n)=>(e=new r(e,n),t=new r(t,n),e.intersects(t,n))},5342:(e,t,n)=>{const r=n(97075);e.exports=(e,t,n)=>r(e,t,"<",n)},19628:(e,t,n)=>{const r=n(53908),i=n(78311);e.exports=(e,t,n)=>{let o=null,s=null,a=null;try{a=new i(t,n)}catch(e){return null}return e.forEach((e=>{a.test(e)&&(o&&-1!==s.compare(e)||(o=e,s=new r(o,n)))})),o}},270:(e,t,n)=>{const r=n(53908),i=n(78311);e.exports=(e,t,n)=>{let o=null,s=null,a=null;try{a=new i(t,n)}catch(e){return null}return e.forEach((e=>{a.test(e)&&(o&&1!==s.compare(e)||(o=e,s=new r(o,n)))})),o}},41261:(e,t,n)=>{const r=n(53908),i=n(78311),o=n(35580);e.exports=(e,t)=>{e=new i(e,t);let n=new r("0.0.0");if(e.test(n))return n;if(n=new r("0.0.0-0"),e.test(n))return n;n=null;for(let t=0;t{const t=new r(e.semver.version);switch(e.operator){case">":0===t.prerelease.length?t.patch++:t.prerelease.push(0),t.raw=t.format();case"":case">=":s&&!o(t,s)||(s=t);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${e.operator}`)}})),!s||n&&!o(n,s)||(n=s)}return n&&e.test(n)?n:null}},97075:(e,t,n)=>{const r=n(53908),i=n(93904),{ANY:o}=i,s=n(78311),a=n(97638),u=n(35580),c=n(7059),d=n(25200),l=n(54089);e.exports=(e,t,n,h)=>{let f,p,m,g,y;switch(e=new r(e,h),t=new s(t,h),n){case">":f=u,p=d,m=c,g=">",y=">=";break;case"<":f=c,p=l,m=u,g="<",y="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(a(e,t,h))return!1;for(let n=0;n{e.semver===o&&(e=new i(">=0.0.0")),s=s||e,a=a||e,f(e.semver,s.semver,h)?s=e:m(e.semver,a.semver,h)&&(a=e)})),s.operator===g||s.operator===y)return!1;if((!a.operator||a.operator===g)&&p(e,a.semver))return!1;if(a.operator===y&&m(e,a.semver))return!1}return!0}},72525:(e,t,n)=>{const r=n(97638),i=n(50560);e.exports=(e,t,n)=>{const o=[];let s=null,a=null;const u=e.sort(((e,t)=>i(e,t,n)));for(const e of u){r(e,t,n)?(a=e,s||(s=e)):(a&&o.push([s,a]),a=null,s=null)}s&&o.push([s,null]);const c=[];for(const[e,t]of o)e===t?c.push(e):t||e!==u[0]?t?e===u[0]?c.push(`<=${t}`):c.push(`${e} - ${t}`):c.push(`>=${e}`):c.push("*");const d=c.join(" || "),l="string"==typeof t.raw?t.raw:String(t);return d.length{const r=n(78311),i=n(93904),{ANY:o}=i,s=n(97638),a=n(50560),u=[new i(">=0.0.0-0")],c=[new i(">=0.0.0")],d=(e,t,n)=>{if(e===t)return!0;if(1===e.length&&e[0].semver===o){if(1===t.length&&t[0].semver===o)return!0;e=n.includePrerelease?u:c}if(1===t.length&&t[0].semver===o){if(n.includePrerelease)return!0;t=c}const r=new Set;let i,d,f,p,m,g,y;for(const t of e)">"===t.operator||">="===t.operator?i=l(i,t,n):"<"===t.operator||"<="===t.operator?d=h(d,t,n):r.add(t.semver);if(r.size>1)return null;if(i&&d){if(f=a(i.semver,d.semver,n),f>0)return null;if(0===f&&(">="!==i.operator||"<="!==d.operator))return null}for(const e of r){if(i&&!s(e,String(i),n))return null;if(d&&!s(e,String(d),n))return null;for(const r of t)if(!s(e,String(r),n))return!1;return!0}let v=!(!d||n.includePrerelease||!d.semver.prerelease.length)&&d.semver,b=!(!i||n.includePrerelease||!i.semver.prerelease.length)&&i.semver;v&&1===v.prerelease.length&&"<"===d.operator&&0===v.prerelease[0]&&(v=!1);for(const e of t){if(y=y||">"===e.operator||">="===e.operator,g=g||"<"===e.operator||"<="===e.operator,i)if(b&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===b.major&&e.semver.minor===b.minor&&e.semver.patch===b.patch&&(b=!1),">"===e.operator||">="===e.operator){if(p=l(i,e,n),p===e&&p!==i)return!1}else if(">="===i.operator&&!s(i.semver,String(e),n))return!1;if(d)if(v&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===v.major&&e.semver.minor===v.minor&&e.semver.patch===v.patch&&(v=!1),"<"===e.operator||"<="===e.operator){if(m=h(d,e,n),m===e&&m!==d)return!1}else if("<="===d.operator&&!s(d.semver,String(e),n))return!1;if(!e.operator&&(d||i)&&0!==f)return!1}return!(i&&g&&!d&&0!==f)&&(!(d&&y&&!i&&0!==f)&&(!b&&!v))},l=(e,t,n)=>{if(!e)return t;const r=a(e.semver,t.semver,n);return r>0?e:r<0||">"===t.operator&&">="===e.operator?t:e},h=(e,t,n)=>{if(!e)return t;const r=a(e.semver,t.semver,n);return r<0?e:r>0||"<"===t.operator&&"<="===e.operator?t:e};e.exports=(e,t,n={})=>{if(e===t)return!0;e=new r(e,n),t=new r(t,n);let i=!1;e:for(const r of e.set){for(const e of t.set){const t=d(r,e,n);if(i=i||null!==t,t)continue e}if(i)return!1}return!0}},77631:(e,t,n)=>{const r=n(78311);e.exports=(e,t)=>new r(e,t).set.map((e=>e.map((e=>e.value)).join(" ").trim().split(" ")))},13874:(e,t,n)=>{const r=n(78311);e.exports=(e,t)=>{try{return new r(e,t).range||"*"}catch(e){return null}}},96897:(e,t,n)=>{"use strict";var r=n(70453),i=n(30041),o=n(30592)(),s=n(75795),a=n(69675),u=r("%Math.floor%");e.exports=function(e,t){if("function"!=typeof e)throw new a("`fn` is not a function");if("number"!=typeof t||t<0||t>4294967295||u(t)!==t)throw new a("`length` must be a positive 32-bit integer");var n=arguments.length>2&&!!arguments[2],r=!0,c=!0;if("length"in e&&s){var d=s(e,"length");d&&!d.configurable&&(r=!1),d&&!d.writable&&(c=!1)}return(r||c||!n)&&(o?i(e,"length",t,!0,!0):i(e,"length",t)),e}},90392:(e,t,n)=>{var r=n(92861).Buffer;function i(e,t){this._block=r.alloc(e),this._finalSize=t,this._blockSize=e,this._len=0}i.prototype.update=function(e,t){"string"==typeof e&&(t=t||"utf8",e=r.from(e,t));for(var n=this._block,i=this._blockSize,o=e.length,s=this._len,a=0;a=this._finalSize&&(this._update(this._block),this._block.fill(0));var n=8*this._len;if(n<=4294967295)this._block.writeUInt32BE(n,this._blockSize-4);else{var r=(4294967295&n)>>>0,i=(n-r)/4294967296;this._block.writeUInt32BE(i,this._blockSize-8),this._block.writeUInt32BE(r,this._blockSize-4)}this._update(this._block);var o=this._hash();return e?o.toString(e):o},i.prototype._update=function(){throw new Error("_update must be implemented by subclass")},e.exports=i},62802:(e,t,n)=>{var r=e.exports=function(e){e=e.toLowerCase();var t=r[e];if(!t)throw new Error(e+" is not supported (we accept pull requests)");return new t};r.sha=n(27816),r.sha1=n(63737),r.sha224=n(26710),r.sha256=n(24107),r.sha384=n(32827),r.sha512=n(82890)},27816:(e,t,n)=>{var r=n(56698),i=n(90392),o=n(92861).Buffer,s=[1518500249,1859775393,-1894007588,-899497514],a=new Array(80);function u(){this.init(),this._w=a,i.call(this,64,56)}function c(e){return e<<30|e>>>2}function d(e,t,n,r){return 0===e?t&n|~t&r:2===e?t&n|t&r|n&r:t^n^r}r(u,i),u.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},u.prototype._update=function(e){for(var t,n=this._w,r=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,u=0|this._e,l=0;l<16;++l)n[l]=e.readInt32BE(4*l);for(;l<80;++l)n[l]=n[l-3]^n[l-8]^n[l-14]^n[l-16];for(var h=0;h<80;++h){var f=~~(h/20),p=0|((t=r)<<5|t>>>27)+d(f,i,o,a)+u+n[h]+s[f];u=a,a=o,o=c(i),i=r,r=p}this._a=r+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=u+this._e|0},u.prototype._hash=function(){var e=o.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},e.exports=u},63737:(e,t,n)=>{var r=n(56698),i=n(90392),o=n(92861).Buffer,s=[1518500249,1859775393,-1894007588,-899497514],a=new Array(80);function u(){this.init(),this._w=a,i.call(this,64,56)}function c(e){return e<<5|e>>>27}function d(e){return e<<30|e>>>2}function l(e,t,n,r){return 0===e?t&n|~t&r:2===e?t&n|t&r|n&r:t^n^r}r(u,i),u.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},u.prototype._update=function(e){for(var t,n=this._w,r=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,u=0|this._e,h=0;h<16;++h)n[h]=e.readInt32BE(4*h);for(;h<80;++h)n[h]=(t=n[h-3]^n[h-8]^n[h-14]^n[h-16])<<1|t>>>31;for(var f=0;f<80;++f){var p=~~(f/20),m=c(r)+l(p,i,o,a)+u+n[f]+s[p]|0;u=a,a=o,o=d(i),i=r,r=m}this._a=r+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=u+this._e|0},u.prototype._hash=function(){var e=o.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},e.exports=u},26710:(e,t,n)=>{var r=n(56698),i=n(24107),o=n(90392),s=n(92861).Buffer,a=new Array(64);function u(){this.init(),this._w=a,o.call(this,64,56)}r(u,i),u.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},u.prototype._hash=function(){var e=s.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e},e.exports=u},24107:(e,t,n)=>{var r=n(56698),i=n(90392),o=n(92861).Buffer,s=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],a=new Array(64);function u(){this.init(),this._w=a,i.call(this,64,56)}function c(e,t,n){return n^e&(t^n)}function d(e,t,n){return e&t|n&(e|t)}function l(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function h(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function f(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}r(u,i),u.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},u.prototype._update=function(e){for(var t,n=this._w,r=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,u=0|this._e,p=0|this._f,m=0|this._g,g=0|this._h,y=0;y<16;++y)n[y]=e.readInt32BE(4*y);for(;y<64;++y)n[y]=0|(((t=n[y-2])>>>17|t<<15)^(t>>>19|t<<13)^t>>>10)+n[y-7]+f(n[y-15])+n[y-16];for(var v=0;v<64;++v){var b=g+h(u)+c(u,p,m)+s[v]+n[v]|0,w=l(r)+d(r,i,o)|0;g=m,m=p,p=u,u=a+b|0,a=o,o=i,i=r,r=b+w|0}this._a=r+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=u+this._e|0,this._f=p+this._f|0,this._g=m+this._g|0,this._h=g+this._h|0},u.prototype._hash=function(){var e=o.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e},e.exports=u},32827:(e,t,n)=>{var r=n(56698),i=n(82890),o=n(90392),s=n(92861).Buffer,a=new Array(160);function u(){this.init(),this._w=a,o.call(this,128,112)}r(u,i),u.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},u.prototype._hash=function(){var e=s.allocUnsafe(48);function t(t,n,r){e.writeInt32BE(t,r),e.writeInt32BE(n,r+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e},e.exports=u},82890:(e,t,n)=>{var r=n(56698),i=n(90392),o=n(92861).Buffer,s=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],a=new Array(160);function u(){this.init(),this._w=a,i.call(this,128,112)}function c(e,t,n){return n^e&(t^n)}function d(e,t,n){return e&t|n&(e|t)}function l(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function h(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function f(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function p(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function m(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function g(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function y(e,t){return e>>>0>>0?1:0}r(u,i),u.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},u.prototype._update=function(e){for(var t=this._w,n=0|this._ah,r=0|this._bh,i=0|this._ch,o=0|this._dh,a=0|this._eh,u=0|this._fh,v=0|this._gh,b=0|this._hh,w=0|this._al,_=0|this._bl,x=0|this._cl,D=0|this._dl,E=0|this._el,M=0|this._fl,A=0|this._gl,S=0|this._hl,C=0;C<32;C+=2)t[C]=e.readInt32BE(4*C),t[C+1]=e.readInt32BE(4*C+4);for(;C<160;C+=2){var k=t[C-30],T=t[C-30+1],I=f(k,T),R=p(T,k),F=m(k=t[C-4],T=t[C-4+1]),O=g(T,k),B=t[C-14],P=t[C-14+1],N=t[C-32],j=t[C-32+1],L=R+P|0,U=I+B+y(L,R)|0;U=(U=U+F+y(L=L+O|0,O)|0)+N+y(L=L+j|0,j)|0,t[C]=U,t[C+1]=L}for(var q=0;q<160;q+=2){U=t[q],L=t[q+1];var $=d(n,r,i),z=d(w,_,x),H=l(n,w),K=l(w,n),W=h(a,E),G=h(E,a),V=s[q],Y=s[q+1],Z=c(a,u,v),J=c(E,M,A),X=S+G|0,Q=b+W+y(X,S)|0;Q=(Q=(Q=Q+Z+y(X=X+J|0,J)|0)+V+y(X=X+Y|0,Y)|0)+U+y(X=X+L|0,L)|0;var ee=K+z|0,te=H+$+y(ee,K)|0;b=v,S=A,v=u,A=M,u=a,M=E,a=o+Q+y(E=D+X|0,D)|0,o=i,D=x,i=r,x=_,r=n,_=w,n=Q+te+y(w=X+ee|0,X)|0}this._al=this._al+w|0,this._bl=this._bl+_|0,this._cl=this._cl+x|0,this._dl=this._dl+D|0,this._el=this._el+E|0,this._fl=this._fl+M|0,this._gl=this._gl+A|0,this._hl=this._hl+S|0,this._ah=this._ah+n+y(this._al,w)|0,this._bh=this._bh+r+y(this._bl,_)|0,this._ch=this._ch+i+y(this._cl,x)|0,this._dh=this._dh+o+y(this._dl,D)|0,this._eh=this._eh+a+y(this._el,E)|0,this._fh=this._fh+u+y(this._fl,M)|0,this._gh=this._gh+v+y(this._gl,A)|0,this._hh=this._hh+b+y(this._hl,S)|0},u.prototype._hash=function(){var e=o.allocUnsafe(64);function t(t,n,r){e.writeInt32BE(t,r),e.writeInt32BE(n,r+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e},e.exports=u},88310:(e,t,n)=>{e.exports=i;var r=n(37007).EventEmitter;function i(){r.call(this)}n(56698)(i,r),i.Readable=n(46891),i.Writable=n(81999),i.Duplex=n(88101),i.Transform=n(59083),i.PassThrough=n(3681),i.finished=n(14257),i.pipeline=n(5267),i.Stream=i,i.prototype.pipe=function(e,t){var n=this;function i(t){e.writable&&!1===e.write(t)&&n.pause&&n.pause()}function o(){n.readable&&n.resume&&n.resume()}n.on("data",i),e.on("drain",o),e._isStdio||t&&!1===t.end||(n.on("end",a),n.on("close",u));var s=!1;function a(){s||(s=!0,e.end())}function u(){s||(s=!0,"function"==typeof e.destroy&&e.destroy())}function c(e){if(d(),0===r.listenerCount(this,"error"))throw e}function d(){n.removeListener("data",i),e.removeListener("drain",o),n.removeListener("end",a),n.removeListener("close",u),n.removeListener("error",c),e.removeListener("error",c),n.removeListener("end",d),n.removeListener("close",d),e.removeListener("close",d)}return n.on("error",c),e.on("error",c),n.on("end",d),n.on("close",d),e.on("close",d),e.emit("pipe",n),e}},12463:e=>{"use strict";var t={};function n(e,n,r){r||(r=Error);var i=function(e){var t,r;function i(t,r,i){return e.call(this,function(e,t,r){return"string"==typeof n?n:n(e,t,r)}(t,r,i))||this}return r=e,(t=i).prototype=Object.create(r.prototype),t.prototype.constructor=t,t.__proto__=r,i}(r);i.prototype.name=r.name,i.prototype.code=e,t[e]=i}function r(e,t){if(Array.isArray(e)){var n=e.length;return e=e.map((function(e){return String(e)})),n>2?"one of ".concat(t," ").concat(e.slice(0,n-1).join(", "),", or ")+e[n-1]:2===n?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}return"of ".concat(t," ").concat(String(e))}n("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError),n("ERR_INVALID_ARG_TYPE",(function(e,t,n){var i,o,s,a;if("string"==typeof t&&(o="not ",t.substr(!s||s<0?0:+s,o.length)===o)?(i="must not be",t=t.replace(/^not /,"")):i="must be",function(e,t,n){return(void 0===n||n>e.length)&&(n=e.length),e.substring(n-t.length,n)===t}(e," argument"))a="The ".concat(e," ").concat(i," ").concat(r(t,"type"));else{var u=function(e,t,n){return"number"!=typeof n&&(n=0),!(n+t.length>e.length)&&-1!==e.indexOf(t,n)}(e,".")?"property":"argument";a='The "'.concat(e,'" ').concat(u," ").concat(i," ").concat(r(t,"type"))}return a+=". Received type ".concat(typeof n)}),TypeError),n("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),n("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"})),n("ERR_STREAM_PREMATURE_CLOSE","Premature close"),n("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"})),n("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),n("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),n("ERR_STREAM_WRITE_AFTER_END","write after end"),n("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),n("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError),n("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),e.exports.F=t},88101:(e,t,n)=>{"use strict";var r=n(65606),i=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};e.exports=d;var o=n(46891),s=n(81999);n(56698)(d,o);for(var a=i(s.prototype),u=0;u{"use strict";e.exports=i;var r=n(59083);function i(e){if(!(this instanceof i))return new i(e);r.call(this,e)}n(56698)(i,r),i.prototype._transform=function(e,t,n){n(null,e)}},46891:(e,t,n)=>{"use strict";var r,i=n(65606);e.exports=M,M.ReadableState=E;n(37007).EventEmitter;var o=function(e,t){return e.listeners(t).length},s=n(41396),a=n(48287).Buffer,u=(void 0!==n.g?n.g:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};var c,d=n(99580);c=d&&d.debuglog?d.debuglog("stream"):function(){};var l,h,f,p=n(81766),m=n(54347),g=n(66644).getHighWaterMark,y=n(12463).F,v=y.ERR_INVALID_ARG_TYPE,b=y.ERR_STREAM_PUSH_AFTER_EOF,w=y.ERR_METHOD_NOT_IMPLEMENTED,_=y.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;n(56698)(M,s);var x=m.errorOrDestroy,D=["error","close","destroy","pause","resume"];function E(e,t,i){r=r||n(88101),e=e||{},"boolean"!=typeof i&&(i=t instanceof r),this.objectMode=!!e.objectMode,i&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=g(this,e,"readableHighWaterMark",i),this.buffer=new p,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(l||(l=n(83141).I),this.decoder=new l(e.encoding),this.encoding=e.encoding)}function M(e){if(r=r||n(88101),!(this instanceof M))return new M(e);var t=this instanceof r;this._readableState=new E(e,this,t),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),s.call(this)}function A(e,t,n,r,i){c("readableAddChunk",t);var o,s=e._readableState;if(null===t)s.reading=!1,function(e,t){if(c("onEofChunk"),t.ended)return;if(t.decoder){var n=t.decoder.end();n&&n.length&&(t.buffer.push(n),t.length+=t.objectMode?1:n.length)}t.ended=!0,t.sync?T(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,I(e)))}(e,s);else if(i||(o=function(e,t){var n;r=t,a.isBuffer(r)||r instanceof u||"string"==typeof t||void 0===t||e.objectMode||(n=new v("chunk",["string","Buffer","Uint8Array"],t));var r;return n}(s,t)),o)x(e,o);else if(s.objectMode||t&&t.length>0)if("string"==typeof t||s.objectMode||Object.getPrototypeOf(t)===a.prototype||(t=function(e){return a.from(e)}(t)),r)s.endEmitted?x(e,new _):S(e,s,t,!0);else if(s.ended)x(e,new b);else{if(s.destroyed)return!1;s.reading=!1,s.decoder&&!n?(t=s.decoder.write(t),s.objectMode||0!==t.length?S(e,s,t,!1):R(e,s)):S(e,s,t,!1)}else r||(s.reading=!1,R(e,s));return!s.ended&&(s.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=C?e=C:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function T(e){var t=e._readableState;c("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(c("emitReadable",t.flowing),t.emittedReadable=!0,i.nextTick(I,e))}function I(e){var t=e._readableState;c("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,N(e)}function R(e,t){t.readingMore||(t.readingMore=!0,i.nextTick(F,e,t))}function F(e,t){for(;!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function B(e){c("readable nexttick read 0"),e.read(0)}function P(e,t){c("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),N(e),t.flowing&&!t.reading&&e.read(0)}function N(e){var t=e._readableState;for(c("flow",t.flowing);t.flowing&&null!==e.read(););}function j(e,t){return 0===t.length?null:(t.objectMode?n=t.buffer.shift():!e||e>=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):n=t.buffer.consume(e,t.decoder),n);var n}function L(e){var t=e._readableState;c("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,i.nextTick(U,t,e))}function U(e,t){if(c("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var n=t._writableState;(!n||n.autoDestroy&&n.finished)&&t.destroy()}}function q(e,t){for(var n=0,r=e.length;n=t.highWaterMark:t.length>0)||t.ended))return c("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?L(this):T(this),null;if(0===(e=k(e,t))&&t.ended)return 0===t.length&&L(this),null;var r,i=t.needReadable;return c("need readable",i),(0===t.length||t.length-e0?j(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&L(this)),null!==r&&this.emit("data",r),r},M.prototype._read=function(e){x(this,new w("_read()"))},M.prototype.pipe=function(e,t){var n=this,r=this._readableState;switch(r.pipesCount){case 0:r.pipes=e;break;case 1:r.pipes=[r.pipes,e];break;default:r.pipes.push(e)}r.pipesCount+=1,c("pipe count=%d opts=%j",r.pipesCount,t);var s=(!t||!1!==t.end)&&e!==i.stdout&&e!==i.stderr?u:g;function a(t,i){c("onunpipe"),t===n&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,c("cleanup"),e.removeListener("close",p),e.removeListener("finish",m),e.removeListener("drain",d),e.removeListener("error",f),e.removeListener("unpipe",a),n.removeListener("end",u),n.removeListener("end",g),n.removeListener("data",h),l=!0,!r.awaitDrain||e._writableState&&!e._writableState.needDrain||d())}function u(){c("onend"),e.end()}r.endEmitted?i.nextTick(s):n.once("end",s),e.on("unpipe",a);var d=function(e){return function(){var t=e._readableState;c("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&o(e,"data")&&(t.flowing=!0,N(e))}}(n);e.on("drain",d);var l=!1;function h(t){c("ondata");var i=e.write(t);c("dest.write",i),!1===i&&((1===r.pipesCount&&r.pipes===e||r.pipesCount>1&&-1!==q(r.pipes,e))&&!l&&(c("false write response, pause",r.awaitDrain),r.awaitDrain++),n.pause())}function f(t){c("onerror",t),g(),e.removeListener("error",f),0===o(e,"error")&&x(e,t)}function p(){e.removeListener("finish",m),g()}function m(){c("onfinish"),e.removeListener("close",p),g()}function g(){c("unpipe"),n.unpipe(e)}return n.on("data",h),function(e,t,n){if("function"==typeof e.prependListener)return e.prependListener(t,n);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n)}(e,"error",f),e.once("close",p),e.once("finish",m),e.emit("pipe",n),r.flowing||(c("pipe resume"),n.resume()),e},M.prototype.unpipe=function(e){var t=this._readableState,n={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,n)),this;if(!e){var r=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o0,!1!==r.flowing&&this.resume()):"readable"===e&&(r.endEmitted||r.readableListening||(r.readableListening=r.needReadable=!0,r.flowing=!1,r.emittedReadable=!1,c("on readable",r.length,r.reading),r.length?T(this):r.reading||i.nextTick(B,this))),n},M.prototype.addListener=M.prototype.on,M.prototype.removeListener=function(e,t){var n=s.prototype.removeListener.call(this,e,t);return"readable"===e&&i.nextTick(O,this),n},M.prototype.removeAllListeners=function(e){var t=s.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||i.nextTick(O,this),t},M.prototype.resume=function(){var e=this._readableState;return e.flowing||(c("resume"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,i.nextTick(P,e,t))}(this,e)),e.paused=!1,this},M.prototype.pause=function(){return c("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(c("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},M.prototype.wrap=function(e){var t=this,n=this._readableState,r=!1;for(var i in e.on("end",(function(){if(c("wrapped end"),n.decoder&&!n.ended){var e=n.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on("data",(function(i){(c("wrapped data"),n.decoder&&(i=n.decoder.write(i)),n.objectMode&&null==i)||(n.objectMode||i&&i.length)&&(t.push(i)||(r=!0,e.pause()))})),e)void 0===this[i]&&"function"==typeof e[i]&&(this[i]=function(t){return function(){return e[t].apply(e,arguments)}}(i));for(var o=0;o{"use strict";e.exports=d;var r=n(12463).F,i=r.ERR_METHOD_NOT_IMPLEMENTED,o=r.ERR_MULTIPLE_CALLBACK,s=r.ERR_TRANSFORM_ALREADY_TRANSFORMING,a=r.ERR_TRANSFORM_WITH_LENGTH_0,u=n(88101);function c(e,t){var n=this._transformState;n.transforming=!1;var r=n.writecb;if(null===r)return this.emit("error",new o);n.writechunk=null,n.writecb=null,null!=t&&this.push(t),r(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length{"use strict";var r,i=n(65606);function o(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,n){var r=e.entry;e.entry=null;for(;r;){var i=r.callback;t.pendingcb--,i(n),r=r.next}t.corkedRequestsFree.next=e}(t,e)}}e.exports=M,M.WritableState=E;var s={deprecate:n(94643)},a=n(41396),u=n(48287).Buffer,c=(void 0!==n.g?n.g:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};var d,l=n(54347),h=n(66644).getHighWaterMark,f=n(12463).F,p=f.ERR_INVALID_ARG_TYPE,m=f.ERR_METHOD_NOT_IMPLEMENTED,g=f.ERR_MULTIPLE_CALLBACK,y=f.ERR_STREAM_CANNOT_PIPE,v=f.ERR_STREAM_DESTROYED,b=f.ERR_STREAM_NULL_VALUES,w=f.ERR_STREAM_WRITE_AFTER_END,_=f.ERR_UNKNOWN_ENCODING,x=l.errorOrDestroy;function D(){}function E(e,t,s){r=r||n(88101),e=e||{},"boolean"!=typeof s&&(s=t instanceof r),this.objectMode=!!e.objectMode,s&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=h(this,e,"writableHighWaterMark",s),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var a=!1===e.decodeStrings;this.decodeStrings=!a,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var n=e._writableState,r=n.sync,o=n.writecb;if("function"!=typeof o)throw new g;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(n),t)!function(e,t,n,r,o){--t.pendingcb,n?(i.nextTick(o,r),i.nextTick(I,e,t),e._writableState.errorEmitted=!0,x(e,r)):(o(r),e._writableState.errorEmitted=!0,x(e,r),I(e,t))}(e,n,r,t,o);else{var s=k(n)||e.destroyed;s||n.corked||n.bufferProcessing||!n.bufferedRequest||C(e,n),r?i.nextTick(S,e,n,s,o):S(e,n,s,o)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function M(e){var t=this instanceof(r=r||n(88101));if(!t&&!d.call(M,this))return new M(e);this._writableState=new E(e,this,t),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),a.call(this)}function A(e,t,n,r,i,o,s){t.writelen=r,t.writecb=s,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new v("write")):n?e._writev(i,t.onwrite):e._write(i,o,t.onwrite),t.sync=!1}function S(e,t,n,r){n||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,r(),I(e,t)}function C(e,t){t.bufferProcessing=!0;var n=t.bufferedRequest;if(e._writev&&n&&n.next){var r=t.bufferedRequestCount,i=new Array(r),s=t.corkedRequestsFree;s.entry=n;for(var a=0,u=!0;n;)i[a]=n,n.isBuf||(u=!1),n=n.next,a+=1;i.allBuffers=u,A(e,t,!0,t.length,i,"",s.finish),t.pendingcb++,t.lastBufferedRequest=null,s.next?(t.corkedRequestsFree=s.next,s.next=null):t.corkedRequestsFree=new o(t),t.bufferedRequestCount=0}else{for(;n;){var c=n.chunk,d=n.encoding,l=n.callback;if(A(e,t,!1,t.objectMode?1:c.length,c,d,l),n=n.next,t.bufferedRequestCount--,t.writing)break}null===n&&(t.lastBufferedRequest=null)}t.bufferedRequest=n,t.bufferProcessing=!1}function k(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function T(e,t){e._final((function(n){t.pendingcb--,n&&x(e,n),t.prefinished=!0,e.emit("prefinish"),I(e,t)}))}function I(e,t){var n=k(t);if(n&&(function(e,t){t.prefinished||t.finalCalled||("function"!=typeof e._final||t.destroyed?(t.prefinished=!0,e.emit("prefinish")):(t.pendingcb++,t.finalCalled=!0,i.nextTick(T,e,t)))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"),t.autoDestroy))){var r=e._readableState;(!r||r.autoDestroy&&r.endEmitted)&&e.destroy()}return n}n(56698)(M,a),E.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(E.prototype,"buffer",{get:s.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(d=Function.prototype[Symbol.hasInstance],Object.defineProperty(M,Symbol.hasInstance,{value:function(e){return!!d.call(this,e)||this===M&&(e&&e._writableState instanceof E)}})):d=function(e){return e instanceof this},M.prototype.pipe=function(){x(this,new y)},M.prototype.write=function(e,t,n){var r,o=this._writableState,s=!1,a=!o.objectMode&&(r=e,u.isBuffer(r)||r instanceof c);return a&&!u.isBuffer(e)&&(e=function(e){return u.from(e)}(e)),"function"==typeof t&&(n=t,t=null),a?t="buffer":t||(t=o.defaultEncoding),"function"!=typeof n&&(n=D),o.ending?function(e,t){var n=new w;x(e,n),i.nextTick(t,n)}(this,n):(a||function(e,t,n,r){var o;return null===n?o=new b:"string"==typeof n||t.objectMode||(o=new p("chunk",["string","Buffer"],n)),!o||(x(e,o),i.nextTick(r,o),!1)}(this,o,e,n))&&(o.pendingcb++,s=function(e,t,n,r,i,o){if(!n){var s=function(e,t,n){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=u.from(t,n));return t}(t,r,i);r!==s&&(n=!0,i="buffer",r=s)}var a=t.objectMode?1:r.length;t.length+=a;var c=t.length-1))throw new _(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(M.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(M.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),M.prototype._write=function(e,t,n){n(new m("_write()"))},M.prototype._writev=null,M.prototype.end=function(e,t,n){var r=this._writableState;return"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!=e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||function(e,t,n){t.ending=!0,I(e,t),n&&(t.finished?i.nextTick(n):e.once("finish",n));t.ended=!0,e.writable=!1}(this,r,n),this},Object.defineProperty(M.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(M.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),M.prototype.destroy=l.destroy,M.prototype._undestroy=l.undestroy,M.prototype._destroy=function(e,t){t(e)}},65034:(e,t,n)=>{"use strict";var r,i=n(65606);function o(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var s=n(14257),a=Symbol("lastResolve"),u=Symbol("lastReject"),c=Symbol("error"),d=Symbol("ended"),l=Symbol("lastPromise"),h=Symbol("handlePromise"),f=Symbol("stream");function p(e,t){return{value:e,done:t}}function m(e){var t=e[a];if(null!==t){var n=e[f].read();null!==n&&(e[l]=null,e[a]=null,e[u]=null,t(p(n,!1)))}}function g(e){i.nextTick(m,e)}var y=Object.getPrototypeOf((function(){})),v=Object.setPrototypeOf((o(r={get stream(){return this[f]},next:function(){var e=this,t=this[c];if(null!==t)return Promise.reject(t);if(this[d])return Promise.resolve(p(void 0,!0));if(this[f].destroyed)return new Promise((function(t,n){i.nextTick((function(){e[c]?n(e[c]):t(p(void 0,!0))}))}));var n,r=this[l];if(r)n=new Promise(function(e,t){return function(n,r){e.then((function(){t[d]?n(p(void 0,!0)):t[h](n,r)}),r)}}(r,this));else{var o=this[f].read();if(null!==o)return Promise.resolve(p(o,!1));n=new Promise(this[h])}return this[l]=n,n}},Symbol.asyncIterator,(function(){return this})),o(r,"return",(function(){var e=this;return new Promise((function(t,n){e[f].destroy(null,(function(e){e?n(e):t(p(void 0,!0))}))}))})),r),y);e.exports=function(e){var t,n=Object.create(v,(o(t={},f,{value:e,writable:!0}),o(t,a,{value:null,writable:!0}),o(t,u,{value:null,writable:!0}),o(t,c,{value:null,writable:!0}),o(t,d,{value:e._readableState.endEmitted,writable:!0}),o(t,h,{value:function(e,t){var r=n[f].read();r?(n[l]=null,n[a]=null,n[u]=null,e(p(r,!1))):(n[a]=e,n[u]=t)},writable:!0}),t));return n[l]=null,s(e,(function(e){if(e&&"ERR_STREAM_PREMATURE_CLOSE"!==e.code){var t=n[u];return null!==t&&(n[l]=null,n[a]=null,n[u]=null,t(e)),void(n[c]=e)}var r=n[a];null!==r&&(n[l]=null,n[a]=null,n[u]=null,r(p(void 0,!0))),n[d]=!0})),e.on("readable",g.bind(null,n)),n}},81766:(e,t,n)=>{"use strict";function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n}},{key:"concat",value:function(e){if(0===this.length)return u.alloc(0);for(var t,n,r,i=u.allocUnsafe(e>>>0),o=this.head,s=0;o;)t=o.data,n=i,r=s,u.prototype.copy.call(t,n,r),s+=o.data.length,o=o.next;return i}},{key:"consume",value:function(e,t){var n;return ei.length?i.length:e;if(o===i.length?r+=i:r+=i.slice(0,e),0==(e-=o)){o===i.length?(++n,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=i.slice(o));break}++n}return this.length-=n,r}},{key:"_getBuffer",value:function(e){var t=u.allocUnsafe(e),n=this.head,r=1;for(n.data.copy(t),e-=n.data.length;n=n.next;){var i=n.data,o=e>i.length?i.length:e;if(i.copy(t,t.length-e,0,o),0==(e-=o)){o===i.length?(++r,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=i.slice(o));break}++r}return this.length-=r,t}},{key:d,value:function(e,t){return c(this,i(i({},t),{},{depth:0,customInspect:!1}))}}],n&&s(t.prototype,n),r&&s(t,r),Object.defineProperty(t,"prototype",{writable:!1}),e}()},54347:(e,t,n)=>{"use strict";var r=n(65606);function i(e,t){s(e,t),o(e)}function o(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function s(e,t){e.emit("error",t)}e.exports={destroy:function(e,t){var n=this,a=this._readableState&&this._readableState.destroyed,u=this._writableState&&this._writableState.destroyed;return a||u?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,r.nextTick(s,this,e)):r.nextTick(s,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!t&&e?n._writableState?n._writableState.errorEmitted?r.nextTick(o,n):(n._writableState.errorEmitted=!0,r.nextTick(i,n,e)):r.nextTick(i,n,e):t?(r.nextTick(o,n),t(e)):r.nextTick(o,n)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(e,t){var n=e._readableState,r=e._writableState;n&&n.autoDestroy||r&&r.autoDestroy?e.destroy(t):e.emit("error",t)}}},14257:(e,t,n)=>{"use strict";var r=n(12463).F.ERR_STREAM_PREMATURE_CLOSE;function i(){}e.exports=function e(t,n,o){if("function"==typeof n)return e(t,null,n);n||(n={}),o=function(e){var t=!1;return function(){if(!t){t=!0;for(var n=arguments.length,r=new Array(n),i=0;i{e.exports=function(){throw new Error("Readable.from is not available in the browser")}},5267:(e,t,n)=>{"use strict";var r;var i=n(12463).F,o=i.ERR_MISSING_ARGS,s=i.ERR_STREAM_DESTROYED;function a(e){if(e)throw e}function u(e){e()}function c(e,t){return e.pipe(t)}e.exports=function(){for(var e=arguments.length,t=new Array(e),i=0;i0,(function(e){d||(d=e),e&&h.forEach(u),o||(h.forEach(u),l(d))}))}));return t.reduce(c)}},66644:(e,t,n)=>{"use strict";var r=n(12463).F.ERR_INVALID_OPT_VALUE;e.exports={getHighWaterMark:function(e,t,n,i){var o=function(e,t,n){return null!=e.highWaterMark?e.highWaterMark:t?e[n]:null}(t,i,n);if(null!=o){if(!isFinite(o)||Math.floor(o)!==o||o<0)throw new r(i?n:"highWaterMark",o);return Math.floor(o)}return e.objectMode?16:16384}}},41396:(e,t,n)=>{e.exports=n(37007).EventEmitter},83141:(e,t,n)=>{"use strict";var r=n(15003).Buffer,i=r.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(r.isEncoding===i||!i(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=u,this.end=c,t=4;break;case"utf8":this.fillLast=a,t=4;break;case"base64":this.text=d,this.end=l,t=3;break;default:return this.write=h,void(this.end=f)}this.lastNeed=0,this.lastTotal=0,this.lastChar=r.allocUnsafe(t)}function s(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function a(e){var t=this.lastTotal-this.lastNeed,n=function(e,t,n){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==n?n:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function u(e,t){if((e.length-t)%2==0){var n=e.toString("utf16le",t);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function c(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,n)}return t}function d(e,t){var n=(e.length-t)%3;return 0===n?e.toString("base64",t):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-n))}function l(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function h(e){return e.toString(this.encoding)}function f(e){return e&&e.length?this.write(e):""}t.I=o,o.prototype.write=function(e){if(0===e.length)return"";var t,n;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n=0)return i>0&&(e.lastNeed=i-1),i;if(--r=0)return i>0&&(e.lastNeed=i-2),i;if(--r=0)return i>0&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=n;var r=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},o.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},15003:(e,t,n)=>{var r=n(48287),i=r.Buffer;function o(e,t){for(var n in e)t[n]=e[n]}function s(e,t,n){return i(e,t,n)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?e.exports=r:(o(r,t),t.Buffer=s),o(i,s),s.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return i(e,t,n)},s.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var r=i(e);return void 0!==t?"string"==typeof n?r.fill(t,n):r.fill(t):r.fill(0),r},s.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i(e)},s.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}},17983:e=>{const t=/^[-+]?0x[a-fA-F0-9]+$/,n=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const r={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};e.exports=function(e,i={}){if(i=Object.assign({},r,i),!e||"string"!=typeof e)return e;let o=e.trim();if(void 0!==i.skipLike&&i.skipLike.test(o))return e;if(i.hex&&t.test(o))return Number.parseInt(o,16);{const t=n.exec(o);if(t){const n=t[1],r=t[2];let s=function(e){if(e&&-1!==e.indexOf("."))return"."===(e=e.replace(/0+$/,""))?e="0":"."===e[0]?e="0"+e:"."===e[e.length-1]&&(e=e.substr(0,e.length-1)),e;return e}(t[3]);const a=t[4]||t[6];if(!i.leadingZeros&&r.length>0&&n&&"."!==o[2])return e;if(!i.leadingZeros&&r.length>0&&!n&&"."!==o[1])return e;{const t=Number(o),u=""+t;return-1!==u.search(/[eE]/)||a?i.eNotation?t:e:-1!==o.indexOf(".")?"0"===u&&""===s||u===s||n&&u==="-"+s?t:e:r?s===u||n+s===u?t:e:o===u||o===n+u?t:e}}return e}}},94643:(e,t,n)=>{function r(e){try{if(!n.g.localStorage)return!1}catch(e){return!1}var t=n.g.localStorage[e];return null!=t&&"true"===String(t).toLowerCase()}e.exports=function(e,t){if(r("noDeprecation"))return e;var n=!1;return function(){if(!n){if(r("throwDeprecation"))throw new Error(t);r("traceDeprecation")?console.trace(t):console.warn(t),n=!0}return e.apply(this,arguments)}}},81135:e=>{e.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},49032:(e,t,n)=>{"use strict";var r=n(47244),i=n(48184),o=n(25767),s=n(35680);function a(e){return e.call.bind(e)}var u="undefined"!=typeof BigInt,c="undefined"!=typeof Symbol,d=a(Object.prototype.toString),l=a(Number.prototype.valueOf),h=a(String.prototype.valueOf),f=a(Boolean.prototype.valueOf);if(u)var p=a(BigInt.prototype.valueOf);if(c)var m=a(Symbol.prototype.valueOf);function g(e,t){if("object"!=typeof e)return!1;try{return t(e),!0}catch(e){return!1}}function y(e){return"[object Map]"===d(e)}function v(e){return"[object Set]"===d(e)}function b(e){return"[object WeakMap]"===d(e)}function w(e){return"[object WeakSet]"===d(e)}function _(e){return"[object ArrayBuffer]"===d(e)}function x(e){return"undefined"!=typeof ArrayBuffer&&(_.working?_(e):e instanceof ArrayBuffer)}function D(e){return"[object DataView]"===d(e)}function E(e){return"undefined"!=typeof DataView&&(D.working?D(e):e instanceof DataView)}t.isArgumentsObject=r,t.isGeneratorFunction=i,t.isTypedArray=s,t.isPromise=function(e){return"undefined"!=typeof Promise&&e instanceof Promise||null!==e&&"object"==typeof e&&"function"==typeof e.then&&"function"==typeof e.catch},t.isArrayBufferView=function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):s(e)||E(e)},t.isUint8Array=function(e){return"Uint8Array"===o(e)},t.isUint8ClampedArray=function(e){return"Uint8ClampedArray"===o(e)},t.isUint16Array=function(e){return"Uint16Array"===o(e)},t.isUint32Array=function(e){return"Uint32Array"===o(e)},t.isInt8Array=function(e){return"Int8Array"===o(e)},t.isInt16Array=function(e){return"Int16Array"===o(e)},t.isInt32Array=function(e){return"Int32Array"===o(e)},t.isFloat32Array=function(e){return"Float32Array"===o(e)},t.isFloat64Array=function(e){return"Float64Array"===o(e)},t.isBigInt64Array=function(e){return"BigInt64Array"===o(e)},t.isBigUint64Array=function(e){return"BigUint64Array"===o(e)},y.working="undefined"!=typeof Map&&y(new Map),t.isMap=function(e){return"undefined"!=typeof Map&&(y.working?y(e):e instanceof Map)},v.working="undefined"!=typeof Set&&v(new Set),t.isSet=function(e){return"undefined"!=typeof Set&&(v.working?v(e):e instanceof Set)},b.working="undefined"!=typeof WeakMap&&b(new WeakMap),t.isWeakMap=function(e){return"undefined"!=typeof WeakMap&&(b.working?b(e):e instanceof WeakMap)},w.working="undefined"!=typeof WeakSet&&w(new WeakSet),t.isWeakSet=function(e){return w(e)},_.working="undefined"!=typeof ArrayBuffer&&_(new ArrayBuffer),t.isArrayBuffer=x,D.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&D(new DataView(new ArrayBuffer(1),0,1)),t.isDataView=E;var M="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function A(e){return"[object SharedArrayBuffer]"===d(e)}function S(e){return void 0!==M&&(void 0===A.working&&(A.working=A(new M)),A.working?A(e):e instanceof M)}function C(e){return g(e,l)}function k(e){return g(e,h)}function T(e){return g(e,f)}function I(e){return u&&g(e,p)}function R(e){return c&&g(e,m)}t.isSharedArrayBuffer=S,t.isAsyncFunction=function(e){return"[object AsyncFunction]"===d(e)},t.isMapIterator=function(e){return"[object Map Iterator]"===d(e)},t.isSetIterator=function(e){return"[object Set Iterator]"===d(e)},t.isGeneratorObject=function(e){return"[object Generator]"===d(e)},t.isWebAssemblyCompiledModule=function(e){return"[object WebAssembly.Module]"===d(e)},t.isNumberObject=C,t.isStringObject=k,t.isBooleanObject=T,t.isBigIntObject=I,t.isSymbolObject=R,t.isBoxedPrimitive=function(e){return C(e)||k(e)||T(e)||I(e)||R(e)},t.isAnyArrayBuffer=function(e){return"undefined"!=typeof Uint8Array&&(x(e)||S(e))},["isProxy","isExternal","isModuleNamespaceObject"].forEach((function(e){Object.defineProperty(t,e,{enumerable:!1,value:function(){throw new Error(e+" is not supported in userland")}})}))},40537:(e,t,n)=>{var r=n(65606),i=Object.getOwnPropertyDescriptors||function(e){for(var t=Object.keys(e),n={},r=0;r=i)return e;switch(e){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(e){return"[Circular]"}default:return e}})),a=r[n];n=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),g(n)?r.showHidden=n:n&&t._extend(r,n),w(r.showHidden)&&(r.showHidden=!1),w(r.depth)&&(r.depth=2),w(r.colors)&&(r.colors=!1),w(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=d),h(r,e,r.depth)}function d(e,t){var n=c.styles[t];return n?"["+c.colors[n][0]+"m"+e+"["+c.colors[n][1]+"m":e}function l(e,t){return e}function h(e,n,r){if(e.customInspect&&n&&M(n.inspect)&&n.inspect!==t.inspect&&(!n.constructor||n.constructor.prototype!==n)){var i=n.inspect(r,e);return b(i)||(i=h(e,i,r)),i}var o=function(e,t){if(w(t))return e.stylize("undefined","undefined");if(b(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}if(v(t))return e.stylize(""+t,"number");if(g(t))return e.stylize(""+t,"boolean");if(y(t))return e.stylize("null","null")}(e,n);if(o)return o;var s=Object.keys(n),a=function(e){var t={};return e.forEach((function(e,n){t[e]=!0})),t}(s);if(e.showHidden&&(s=Object.getOwnPropertyNames(n)),E(n)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return f(n);if(0===s.length){if(M(n)){var u=n.name?": "+n.name:"";return e.stylize("[Function"+u+"]","special")}if(_(n))return e.stylize(RegExp.prototype.toString.call(n),"regexp");if(D(n))return e.stylize(Date.prototype.toString.call(n),"date");if(E(n))return f(n)}var c,d="",l=!1,x=["{","}"];(m(n)&&(l=!0,x=["[","]"]),M(n))&&(d=" [Function"+(n.name?": "+n.name:"")+"]");return _(n)&&(d=" "+RegExp.prototype.toString.call(n)),D(n)&&(d=" "+Date.prototype.toUTCString.call(n)),E(n)&&(d=" "+f(n)),0!==s.length||l&&0!=n.length?r<0?_(n)?e.stylize(RegExp.prototype.toString.call(n),"regexp"):e.stylize("[Object]","special"):(e.seen.push(n),c=l?function(e,t,n,r,i){for(var o=[],s=0,a=t.length;s=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1}),0);if(r>60)return n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1];return n[0]+t+" "+e.join(", ")+" "+n[1]}(c,d,x)):x[0]+d+x[1]}function f(e){return"["+Error.prototype.toString.call(e)+"]"}function p(e,t,n,r,i,o){var s,a,u;if((u=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?a=u.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):u.set&&(a=e.stylize("[Setter]","special")),k(r,i)||(s="["+i+"]"),a||(e.seen.indexOf(u.value)<0?(a=y(n)?h(e,u.value,null):h(e,u.value,n-1)).indexOf("\n")>-1&&(a=o?a.split("\n").map((function(e){return" "+e})).join("\n").slice(2):"\n"+a.split("\n").map((function(e){return" "+e})).join("\n")):a=e.stylize("[Circular]","special")),w(s)){if(o&&i.match(/^\d+$/))return a;(s=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.slice(1,-1),s=e.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=e.stylize(s,"string"))}return s+": "+a}function m(e){return Array.isArray(e)}function g(e){return"boolean"==typeof e}function y(e){return null===e}function v(e){return"number"==typeof e}function b(e){return"string"==typeof e}function w(e){return void 0===e}function _(e){return x(e)&&"[object RegExp]"===A(e)}function x(e){return"object"==typeof e&&null!==e}function D(e){return x(e)&&"[object Date]"===A(e)}function E(e){return x(e)&&("[object Error]"===A(e)||e instanceof Error)}function M(e){return"function"==typeof e}function A(e){return Object.prototype.toString.call(e)}function S(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(e=e.toUpperCase(),!s[e])if(a.test(e)){var n=r.pid;s[e]=function(){var r=t.format.apply(t,arguments);console.error("%s %d: %s",e,n,r)}}else s[e]=function(){};return s[e]},t.inspect=c,c.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},c.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.types=n(49032),t.isArray=m,t.isBoolean=g,t.isNull=y,t.isNullOrUndefined=function(e){return null==e},t.isNumber=v,t.isString=b,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=w,t.isRegExp=_,t.types.isRegExp=_,t.isObject=x,t.isDate=D,t.types.isDate=D,t.isError=E,t.types.isNativeError=E,t.isFunction=M,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=n(81135);var C=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function k(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){var e,n;console.log("%s - %s",(e=new Date,n=[S(e.getHours()),S(e.getMinutes()),S(e.getSeconds())].join(":"),[e.getDate(),C[e.getMonth()],n].join(" ")),t.format.apply(t,arguments))},t.inherits=n(56698),t._extend=function(e,t){if(!t||!x(t))return e;for(var n=Object.keys(t),r=n.length;r--;)e[n[r]]=t[n[r]];return e};var T="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function I(e,t){if(!e){var n=new Error("Promise was rejected with a falsy value");n.reason=e,e=n}return t(e)}t.promisify=function(e){if("function"!=typeof e)throw new TypeError('The "original" argument must be of type Function');if(T&&e[T]){var t;if("function"!=typeof(t=e[T]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(t,T,{value:t,enumerable:!1,writable:!1,configurable:!0}),t}function t(){for(var t,n,r=new Promise((function(e,r){t=e,n=r})),i=[],o=0;o{"use strict";var r=n(82682),i=n(39209),o=n(10487),s=n(38075),a=n(75795),u=s("Object.prototype.toString"),c=n(49092)(),d="undefined"==typeof globalThis?n.g:globalThis,l=i(),h=s("String.prototype.slice"),f=Object.getPrototypeOf,p=s("Array.prototype.indexOf",!0)||function(e,t){for(var n=0;n-1?t:"Object"===t&&function(e){var t=!1;return r(m,(function(n,r){if(!t)try{n(e),t=h(r,1)}catch(e){}})),t}(e)}return a?function(e){var t=!1;return r(m,(function(n,r){if(!t)try{"$"+n(e)===r&&(t=h(r,1))}catch(e){}})),t}(e):null}},55512:e=>{"use strict";e.exports=function(e,t,n,r){var i=self||window;try{try{var o;try{o=new i.Blob([e])}catch(t){(o=new(i.BlobBuilder||i.WebKitBlobBuilder||i.MozBlobBuilder||i.MSBlobBuilder)).append(e),o=o.getBlob()}var s=i.URL||i.webkitURL,a=s.createObjectURL(o),u=new i[t](a,n);return s.revokeObjectURL(a),u}catch(r){return new i[t]("data:application/javascript,".concat(encodeURIComponent(e)),n)}}catch(e){if(!r)throw Error("Inline worker is not supported");return new i[t](r,n)}}},26692:(e,t,n)=>{"use strict";var r=n(53930),i=n(5946);r(t,"__esModule",{value:!0}),t.default=void 0;var o=i(n(73363)),s=i(n(48079)),a=i(n(64007)),u=i(n(11393));t.default=function(e){var t="xregexp",n=/(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*\]/g,r=e.union([/\({{([\w$]+)}}\)|{{([\w$]+)}}/,n],"g",{conjunction:"or"});function i(e){var t=/^(?:\(\?:\))*\^/,n=/\$(?:\(\?:\))*$/;return t.test(e)&&n.test(e)&&n.test(e.replace(/\\[\s\S]/g,""))?e.replace(t,"").replace(n,""):e}function c(n,r){var i=r?"x":"";return e.isRegExp(n)?n[t]&&n[t].captureNames?n:e(n.source,i):e(n,i)}function d(t){return t instanceof RegExp?t:e.escape(t)}function l(e,t,n){return e["subpattern".concat(n)]=t,e}function h(e,t,n){return e+(t1?a-1:0),c=1;c")):a="(?:",g=v;var h=f[d].pattern.replace(n,(function(e,t,n){if(t){if(s=f[d].names[v-g],++v,s)return"(?<".concat(s,">")}else if(n)return c=+n-1,f[d].names[c]?"\\k<".concat(f[d].names[c],">"):"\\".concat(+n+g);return e}));return(0,u.default)(l="".concat(a)).call(l,h,")")}if(i){if(s=_[b],w[++b]=++v,s)return"(?<".concat(s,">")}else if(o)return _[c=+o-1]?"\\k<".concat(_[c],">"):"\\".concat(w[+o]);return e}));return e(x,d)}},e.exports=t.default},87409:(e,t,n)=>{"use strict";var r=n(53930),i=n(5946);r(t,"__esModule",{value:!0}),t.default=void 0;var o=i(n(64007)),s=i(n(11393)),a=i(n(18979));t.default=function(e){function t(e,t,n,r){return{name:e,value:t,start:n,end:r}}e.matchRecursive=function(n,r,i,u,c){u=u||"",c=c||{};var d,l=-1!==(0,o.default)(u).call(u,"g"),h=-1!==(0,o.default)(u).call(u,"y"),f=u.replace(/y/g,"");r=e(r,f),i=e(i,f);var p=c.escapeChar;if(p){var m,g;if(p.length>1)throw new Error("Cannot use more than one escape character");p=e.escape(p),d=new RegExp((0,s.default)(m=(0,s.default)(g="(?:".concat(p,"[\\S\\s]|(?:(?!")).call(g,e.union([r,i],"",{conjunction:"or"}).source,")[^")).call(m,p,"])+)+"),u.replace(e._hasNativeFlag("s")?/[^imsu]/g:/[^imu]/g,""))}for(var y,v,b,w,_=0,x=0,D=0,E=0,M=c.valueNames,A=[];;){if(p&&(D+=(e.exec(n,d,D,"sticky")||[""])[0].length),b=e.exec(n,r,D),w=e.exec(n,i,D),b&&w&&(b.index<=w.index?w=null:b=null),b||w)D=(x=(b||w).index)+(b||w)[0].length;else if(!_)break;if(h&&!_&&x>E)break;if(b)_||(y=x,v=D),_+=1;else if(w&&_){if(!(_-=1)&&(M?(M[0]&&y>E&&A.push(t(M[0],(0,a.default)(n).call(n,E,y),E,y)),M[1]&&A.push(t(M[1],(0,a.default)(n).call(n,y,v),y,v)),M[2]&&A.push(t(M[2],(0,a.default)(n).call(n,v,x),v,x)),M[3]&&A.push(t(M[3],(0,a.default)(n).call(n,x,D),x,D))):A.push((0,a.default)(n).call(n,v,x)),E=D,!l))break}else{var S=c.unbalanced||"error";if("skip"!==S&&"skip-lazy"!==S){if("error"===S){var C,k=w?"right":"left",T=w?x:y;throw new Error((0,s.default)(C="Unbalanced ".concat(k," delimiter found in string at position ")).call(C,T))}throw new Error("Unsupported value for unbalanced: ".concat(S))}if(w)w=null;else{if("skip"===S)D=y+(e.exec(n,r,y,"sticky")[0].length||1);else D=y+1;_=0}}x===D&&(D+=1)}return l&&A.length>0&&!h&&M&&M[0]&&n.length>E&&A.push(t(M[0],(0,a.default)(n).call(n,E),E,n.length)),A}},e.exports=t.default},77801:(e,t,n)=>{"use strict";var r=n(18979),i=n(49763),o=n(16781),s=n(62222),a=n(66615),u=n(53930),c=n(5946);u(t,"__esModule",{value:!0}),t.default=void 0;var d=c(n(34875)),l=c(n(86226)),h=c(n(11393)),f=c(n(64007));function p(e,t){var n=void 0!==o&&s(e)||e["@@iterator"];if(!n){if(a(e)||(n=function(e,t){var n;if(!e)return;if("string"==typeof e)return m(e,t);var o=r(n=Object.prototype.toString.call(e)).call(n,8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return i(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return m(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var u=0,c=function(){};return{s:c,n:function(){return u>=e.length?{done:!0}:{done:!1,value:e[u++]}},e:function(e){throw e},f:c}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var d,l=!0,h=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return l=e.done,e},e:function(e){h=!0,d=e},f:function(){try{l||null==n.return||n.return()}finally{if(h)throw d}}}}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n + * Steven Levithan (c) 2008-present MIT License + */t.default=function(e){var t={},n={},r=e._dec,i=e._hex,o=e._pad4;function s(e){return e.replace(/[- _]+/g,"").toLowerCase()}function a(e){var t=/^\\[xu](.+)/.exec(e);return t?r(t[1]):e.charCodeAt("\\"===e[0]?1:0)}function u(n){var r,s,u;return t[n]["b!"]||(t[n]["b!"]=(r=t[n].bmp,s="",u=-1,(0,l.default)(e).call(e,r,/(\\x..|\\u....|\\?[\s\S])(?:-(\\x..|\\u....|\\?[\s\S]))?/,(function(e){var t=a(e[1]);t>u+1&&(s+="\\u".concat(o(i(u+1))),t>u+2&&(s+="-\\u".concat(o(i(t-1))))),u=a(e[2]||e[1])})),u<65535&&(s+="\\u".concat(o(i(u+1))),u<65534&&(s+="-\\uFFFF")),s))}function c(e,n){var r=n?"a!":"a=";return t[e][r]||(t[e][r]=function(e,n){var r,i,o=t[e],s="";return o.bmp&&!o.isBmpLast&&(s=(0,h.default)(r="[".concat(o.bmp,"]")).call(r,o.astral?"|":"")),o.astral&&(s+=o.astral),o.isBmpLast&&o.bmp&&(s+=(0,h.default)(i="".concat(o.astral?"|":"","[")).call(i,o.bmp,"]")),n?"(?:(?!".concat(s,")(?:[\ud800-\udbff][\udc00-\udfff]|[\0-￿]))"):"(?:".concat(s,")")}(e,n))}e.addToken(/\\([pP])(?:{(\^?)(?:(\w+)=)?([^}]*)}|([A-Za-z]))/,(function(e,r,i){var o="Unknown Unicode token ",a=(0,d.default)(e,6),l=a[0],p=a[1],m=a[2],g=a[3],y=a[4],v=a[5],b="P"===p||!!m,w=-1!==(0,f.default)(i).call(i,"A"),_=s(v||y),x=t[_];if("P"===p&&m)throw new SyntaxError("Invalid double negation "+l);if(!t.hasOwnProperty(_))throw new SyntaxError(o+l);if(g&&(!n[g]||!n[g][_]))throw new SyntaxError(o+l);if(x.inverseOf){var D;if(_=s(x.inverseOf),!t.hasOwnProperty(_))throw new ReferenceError((0,h.default)(D="".concat("Unicode token missing data "+l," -> ")).call(D,x.inverseOf));x=t[_],b=!b}if(!x.bmp&&!w)throw new SyntaxError("Astral mode required for Unicode token "+l);if(w){if("class"===r)throw new SyntaxError("Astral mode does not support Unicode tokens within character classes");return c(_,b)}return"class"===r?b?u(_):x.bmp:"".concat((b?"[^":"[")+x.bmp,"]")}),{scope:"all",optionalFlags:"A",leadChar:"\\"}),e.addUnicodeData=function(r,i){i&&(n[i]={});var o,a=p(r);try{for(a.s();!(o=a.n()).done;){var u=o.value;if(!u.name)throw new Error("Unicode token requires name");if(!(u.inverseOf||u.bmp||u.astral))throw new Error("Unicode token has no character data "+u.name);var c=s(u.name);if(t[c]=u,i&&(n[i][c]=!0),u.alias){var d=s(u.alias);t[d]=u,i&&(n[i][d]=!0)}}}catch(e){a.e(e)}finally{a.f()}e.cache.flush("patterns")},e._getUnicodeProperty=function(e){var n=s(e);return t[n]}},e.exports=t.default},47884:(e,t,n)=>{"use strict";var r=n(53930),i=n(5946);r(t,"__esModule",{value:!0}),t.default=void 0;var o=i(n(4311)); +/*! + * XRegExp Unicode Categories 5.1.1 + * + * Steven Levithan (c) 2010-present MIT License + * Unicode data by Mathias Bynens + */t.default=function(e){if(!e.addUnicodeData)throw new ReferenceError("Unicode Base must be loaded before Unicode Categories");e.addUnicodeData(o.default)},e.exports=t.default},59749:(e,t,n)=>{"use strict";var r=n(53930),i=n(5946);r(t,"__esModule",{value:!0}),t.default=void 0;var o=i(n(88477)); +/*! + * XRegExp Unicode Properties 5.1.1 + * + * Steven Levithan (c) 2012-present MIT License + * Unicode data by Mathias Bynens + */t.default=function(e){if(!e.addUnicodeData)throw new ReferenceError("Unicode Base must be loaded before Unicode Properties");var t=o.default;t.push({name:"Assigned",inverseOf:"Cn"}),e.addUnicodeData(t)},e.exports=t.default},50302:(e,t,n)=>{"use strict";var r=n(53930),i=n(5946);r(t,"__esModule",{value:!0}),t.default=void 0;var o=i(n(5142)); +/*! + * XRegExp Unicode Scripts 5.1.1 + * + * Steven Levithan (c) 2010-present MIT License + * Unicode data by Mathias Bynens + */t.default=function(e){if(!e.addUnicodeData)throw new ReferenceError("Unicode Base must be loaded before Unicode Scripts");e.addUnicodeData(o.default,"Script")},e.exports=t.default},53050:(e,t,n)=>{"use strict";var r=n(53930),i=n(5946);r(t,"__esModule",{value:!0}),t.default=void 0;var o=i(n(56011)),s=i(n(26692)),a=i(n(87409)),u=i(n(77801)),c=i(n(47884)),d=i(n(59749)),l=i(n(50302));(0,s.default)(o.default),(0,a.default)(o.default),(0,u.default)(o.default),(0,c.default)(o.default),(0,d.default)(o.default),(0,l.default)(o.default);var h=o.default;t.default=h,e.exports=t.default},56011:(e,t,n)=>{"use strict";var r=n(18979),i=n(49763),o=n(16781),s=n(62222),a=n(66615),u=n(53930),c=n(5946);u(t,"__esModule",{value:!0}),t.default=void 0;var d=c(n(34875)),l=c(n(52730)),h=c(n(129)),f=c(n(18979)),p=c(n(36586)),m=c(n(64007)),g=c(n(86226)),y=c(n(27681)),v=c(n(11393));function b(e,t){var n=void 0!==o&&s(e)||e["@@iterator"];if(!n){if(a(e)||(n=function(e,t){var n;if(!e)return;if("string"==typeof e)return w(e,t);var o=r(n=Object.prototype.toString.call(e)).call(n,8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return i(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return w(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var u=0,c=function(){};return{s:c,n:function(){return u>=e.length?{done:!0}:{done:!1,value:e[u++]}},e:function(e){throw e},f:c}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var d,l=!0,h=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return l=e.done,e},e:function(e){h=!0,d=e},f:function(){try{l||null==n.return||n.return()}finally{if(h)throw d}}}}function w(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n + * Steven Levithan (c) 2007-present MIT License + */var _="xregexp",x={astral:!1,namespacing:!0},D={},E={},M={},A=[],S="default",C="class",k={default:/\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u(?:[\dA-Fa-f]{4}|{[\dA-Fa-f]+})|c[A-Za-z]|[\s\S])|\(\?(?:[:=!]|<[=!])|[?*+]\?|{\d+(?:,\d*)?}\??|[\s\S]/,class:/\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u(?:[\dA-Fa-f]{4}|{[\dA-Fa-f]+})|c[A-Za-z]|[\s\S])|[\s\S]/},T=/\$(?:\{([^\}]+)\}|<([^>]+)>|(\d\d?|[\s\S]?))/g,I=void 0===/()??/.exec("")[1],R=void 0!==(0,l.default)(/x/);function F(e){var t=!0;try{if(new RegExp("",e),"y"===e){".."===".a".replace(new RegExp("a","gy"),".")&&(t=!1)}}catch(e){t=!1}return t}var O=F("d"),B=F("s"),P=F("u"),N=F("y"),j={d:O,g:!0,i:!0,m:!0,s:B,u:P,y:N},L=B?/[^dgimsuy]+/g:/[^dgimuy]+/g;function U(e,t,n,r,i){var o;if(e[_]={captureNames:t},i)return e;if(e.__proto__)e.__proto__=ee.prototype;else for(var s in ee.prototype)e[s]=ee.prototype[s];return e[_].source=n,e[_].flags=r?(0,h.default)(o=r.split("")).call(o).join(""):r,e}function q(e){return e.replace(/([\s\S])(?=[\s\S]*\1)/g,"")}function $(e,t){var n;if(!ee.isRegExp(e))throw new TypeError("Type RegExp expected");var r=e[_]||{},i=function(e){return R?(0,l.default)(e):/\/([a-z]*)$/i.exec(RegExp.prototype.toString.call(e))[1]}(e),o="",s="",a=null,u=null;return(t=t||{}).removeG&&(s+="g"),t.removeY&&(s+="y"),s&&(i=i.replace(new RegExp("[".concat(s,"]+"),"g"),"")),t.addG&&(o+="g"),t.addY&&(o+="y"),o&&(i=q(i+o)),t.isInternalOnly||(void 0!==r.source&&(a=r.source),null!=(0,l.default)(r)&&(u=o?q((0,l.default)(r)+o):(0,l.default)(r))),e=U(new RegExp(t.source||e.source,i),function(e){return!(!e[_]||!e[_].captureNames)}(e)?(0,f.default)(n=r.captureNames).call(n,0):null,a,u,t.isInternalOnly)}function z(e){return(0,p.default)(e,16)}function H(e,t,n){var r=e.index+e[0].length,i=e.input[e.index-1],o=e.input[r];return/^[()|]$/.test(i)||/^[()|]$/.test(o)||0===e.index||r===e.input.length||/\(\?(?:[:=!]|<[=!])$/.test(e.input.substring(e.index-4,e.index))||function(e,t,n){var r=-1!==(0,m.default)(n).call(n,"x")?/^(?:\s|#[^#\n]*|\(\?#[^)]*\))*(?:[?*+]|{\d+(?:,\d*)?})/:/^(?:\(\?#[^)]*\))*(?:[?*+]|{\d+(?:,\d*)?})/;return r.test((0,f.default)(e).call(e,t))}(e.input,r,n)?"":"(?:)"}function K(e){return(0,p.default)(e,10).toString(16)}function W(e,t){return Object.prototype.toString.call(e)==="[object ".concat(t,"]")}function G(e){if(null==e)throw new TypeError("Cannot convert null or undefined to object");return e}function V(e){for(;e.length<4;)e="0".concat(e);return e}function Y(e){var t={};return W(e,"String")?((0,g.default)(ee).call(ee,e,/[^\s,]+/,(function(e){t[e]=!0})),t):e}function Z(e){if(!/^[\w$]$/.test(e))throw new Error("Flag must be a single character A-Za-z0-9_$");j[e]=!0}function J(e,t,n,r,i){for(var o,s,a=A.length,u=e[n],c=null;a--;)if(!((s=A[a]).leadChar&&s.leadChar!==u||s.scope!==r&&"all"!==s.scope||s.flag&&-1===(0,m.default)(t).call(t,s.flag))&&(o=ee.exec(e,s.regex,n,"sticky"))){c={matchLength:o[0].length,output:s.handler.call(i,o,r,t),reparse:s.reparse};break}return c}function X(e){x.astral=e}function Q(e){x.namespacing=e}function ee(e,t){if(ee.isRegExp(e)){if(void 0!==t)throw new TypeError("Cannot supply flags when copying a RegExp");return $(e)}if(e=void 0===e?"":String(e),t=void 0===t?"":String(t),ee.isInstalled("astral")&&-1===(0,m.default)(t).call(t,"A")&&(t+="A"),M[e]||(M[e]={}),!M[e][t]){for(var n,r={hasNamedCapture:!1,captureNames:[]},i=S,o="",s=0,a=function(e,t){if(q(t)!==t)throw new SyntaxError("Invalid duplicate regex flag ".concat(t));e=e.replace(/^\(\?([\w$]+)\)/,(function(e,n){if(/[dgy]/.test(n))throw new SyntaxError("Cannot use flags dgy in mode modifier ".concat(e));return t=q(t+n),""}));var n,r=b(t);try{for(r.s();!(n=r.n()).done;){var i=n.value;if(!j[i])throw new SyntaxError("Unknown regex flag ".concat(i))}}catch(e){r.e(e)}finally{r.f()}return{pattern:e,flags:t}}(e,t),u=a.pattern,c=(0,l.default)(a);s")}else if(n)return"\\".concat(+n+r);return e}if(!W(e,"Array")||!e.length)throw new TypeError("Must provide a nonempty array of patterns to merge");var u,c=/(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*\]/g,d=[],l=b(e);try{for(l.s();!(u=l.n()).done;){var h=u.value;ee.isRegExp(h)?(r=s,i=h[_]&&h[_].captureNames||[],d.push(ee(h.source).source.replace(c,a))):d.push(ee.escape(h))}}catch(e){l.e(e)}finally{l.f()}var f="none"===o?"":"|";return ee(d.join(f),t)},D.exec=function(e){var t=this.lastIndex,n=RegExp.prototype.exec.apply(this,arguments);if(n){if(!I&&n.length>1&&-1!==(0,m.default)(n).call(n,"")){var r,i=$(this,{removeG:!0,isInternalOnly:!0});(0,f.default)(r=String(e)).call(r,n.index).replace(i,(function(){for(var e=arguments.length,t=1;tn.index&&(this.lastIndex=n.index)}return this.global||(this.lastIndex=t),n},D.test=function(e){return!!D.exec.call(this,e)},D.match=function(e){if(ee.isRegExp(e)){if(e.global){var t=String.prototype.match.apply(this,arguments);return e.lastIndex=0,t}}else e=new RegExp(e);return D.exec.call(e,G(this))},D.replace=function(e,t){var n,r,i,o=ee.isRegExp(e);return o?(e[_]&&(r=e[_].captureNames),n=e.lastIndex):e+="",i=W(t,"Function")?String(this).replace(e,(function(){for(var e=arguments.length,n=new Array(e),i=0;ic)throw new SyntaxError("Backreference to undefined group ".concat(e));return n[o]||""}throw new SyntaxError("Invalid token ".concat(e))}))})),o&&(e.global?e.lastIndex=0:e.lastIndex=n),i},D.split=function(e,t){if(!ee.isRegExp(e))return String.prototype.split.apply(this,arguments);var n,r=String(this),i=[],o=e.lastIndex,s=0;return t=(void 0===t?-1:t)>>>0,(0,g.default)(ee).call(ee,r,e,(function(e){e.index+e[0].length>s&&(i.push((0,f.default)(r).call(r,s,e.index)),e.length>1&&e.indext?(0,f.default)(i).call(i,0,t):i},ee.addToken(/\\([ABCE-RTUVXYZaeg-mopqyz]|c(?![A-Za-z])|u(?![\dA-Fa-f]{4}|{[\dA-Fa-f]+})|x(?![\dA-Fa-f]{2}))/,(function(e,t){if("B"===e[1]&&t===S)return e[0];throw new SyntaxError("Invalid escape ".concat(e[0]))}),{scope:"all",leadChar:"\\"}),ee.addToken(/\\u{([\dA-Fa-f]+)}/,(function(e,t,n){var r=z(e[1]);if(r>1114111)throw new SyntaxError("Invalid Unicode code point ".concat(e[0]));if(r<=65535)return"\\u".concat(V(K(r)));if(P&&-1!==(0,m.default)(n).call(n,"u"))return e[0];throw new SyntaxError("Cannot use Unicode code point above \\u{FFFF} without flag u")}),{scope:"all",leadChar:"\\"}),ee.addToken(/\(\?#[^)]*\)/,H,{leadChar:"("}),ee.addToken(/\s+|#[^\n]*\n?/,H,{flag:"x"}),B||ee.addToken(/\./,(function(){return"[\\s\\S]"}),{flag:"s",leadChar:"."}),ee.addToken(/\\k<([^>]+)>/,(function(e){var t,n,r=isNaN(e[1])?(0,m.default)(t=this.captureNames).call(t,e[1])+1:+e[1],i=e.index+e[0].length;if(!r||r>this.captureNames.length)throw new SyntaxError("Backreference to undefined group ".concat(e[0]));return(0,v.default)(n="\\".concat(r)).call(n,i===e.input.length||isNaN(e.input[i])?"":"(?:)")}),{leadChar:"\\"}),ee.addToken(/\\(\d+)/,(function(e,t){if(!(t===S&&/^[1-9]/.test(e[1])&&+e[1]<=this.captureNames.length)&&"0"!==e[1])throw new SyntaxError("Cannot use octal escape or backreference to undefined group ".concat(e[0]));return e[0]}),{scope:"all",leadChar:"\\"}),ee.addToken(/\(\?P?<((?:[\$A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])(?:[\$0-9A-Z_a-z\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05EF-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u07FD\u0800-\u082D\u0840-\u085B\u0860-\u086A\u0870-\u0887\u0889-\u088E\u0898-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u09FE\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3C-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C5D\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDD\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D81-\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1715\u171F-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u180F-\u1819\u1820-\u1878\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1ABF-\u1ACE\u1B00-\u1B4C\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CD0-\u1CD2\u1CD4-\u1CFA\u1D00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA827\uA82C\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD27\uDD30-\uDD39\uDE80-\uDEA9\uDEAB\uDEAC\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF50\uDF70-\uDF85\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC00-\uDC46\uDC66-\uDC75\uDC7F-\uDCBA\uDCC2\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD44-\uDD47\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDC9-\uDDCC\uDDCE-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3B-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC5E-\uDC61\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF1D-\uDF2B\uDF30-\uDF39\uDF40-\uDF46]|\uD806[\uDC00-\uDC3A\uDCA0-\uDCE9\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD35\uDD37\uDD38\uDD3B-\uDD43\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD7\uDDDA-\uDDE1\uDDE3\uDDE4\uDE00-\uDE3E\uDE47\uDE50-\uDE99\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD8E\uDD90\uDD91\uDD93-\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF6\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF4F-\uDF87\uDF8F-\uDF9F\uDFE0\uDFE1\uDFE3\uDFE4\uDFF0\uDFF1]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD833[\uDF00-\uDF2D\uDF30-\uDF46]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD837[\uDF00-\uDF1E]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD00-\uDD2C\uDD30-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAE\uDEC0-\uDEF9]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4B\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A]|\uDB40[\uDD00-\uDDEF])*)>/,(function(e){var t;if(!ee.isInstalled("namespacing")&&("length"===e[1]||"__proto__"===e[1]))throw new SyntaxError("Cannot use reserved word as capture name ".concat(e[0]));if(-1!==(0,m.default)(t=this.captureNames).call(t,e[1]))throw new SyntaxError("Cannot use same name for multiple groups ".concat(e[0]));return this.captureNames.push(e[1]),this.hasNamedCapture=!0,"("}),{leadChar:"("}),ee.addToken(/\((?!\?)/,(function(e,t,n){return-1!==(0,m.default)(n).call(n,"n")?"(?:":(this.captureNames.push(null),"(")}),{optionalFlags:"n",leadChar:"("});var te=ee;t.default=te,e.exports=t.default},4311:e=>{e.exports=[{name:"C",alias:"Other",isBmpLast:!0,bmp:"\0--Ÿ­͸͹΀-΃΋΍΢԰՗՘֋֌֐׈-׏׫-׮׵-؅؜۝܎܏݋݌޲-޿߻߼࠮࠯࠿࡜࡝࡟࡫-࡯࢏-ࢗ࣢঄঍঎঑঒঩঱঳-঵঺঻৅৆৉৊৏-৖৘-৛৞৤৥৿਀਄਋-਎਑਒਩਱਴਷਺਻਽੃-੆੉੊੎-੐੒-੘੝੟-੥੷-઀઄઎઒઩઱઴઺઻૆૊૎૏૑-૟૤૥૲-૸଀଄଍଎଑଒଩଱଴଺଻୅୆୉୊୎-୔୘-୛୞୤୥୸-஁஄஋-஍஑஖-஘஛஝஠-஢஥-஧஫-஭஺-஽௃-௅௉௎௏௑-௖௘-௥௻-௿఍఑఩఺఻౅౉౎-౔౗౛౜౞౟౤౥౰-౶಍಑಩಴಺಻೅೉೎-೔೗-೜೟೤೥೰ೳ-೿഍഑൅൉൐-൓൤൥඀඄඗-඙඲඼඾඿෇-෉෋-෎෕෗෠-෥෰෱෵-฀฻-฾๜-຀຃຅຋຤຦຾຿໅໇໎໏໚໛໠-໿཈཭-཰྘྽࿍࿛-࿿჆჈-჌჎჏቉቎቏቗቙቞቟኉኎኏኱኶኷኿዁዆዇዗጑጖጗፛፜፽-፿᎚-᎟᏶᏷᏾᏿᚝-᚟᛹-᛿᜖-᜞᜷-᜿᝔-᝟᝭᝱᝴-᝿៞៟៪-៯៺-៿᠎᠚-᠟᡹-᡿᢫-᢯᣶-᣿᤟᤬-᤯᤼-᤿᥁-᥃᥮᥯᥵-᥿᦬-᦯᧊-᧏᧛-᧝᨜᨝᩟᩽᩾᪊-᪏᪚-᪟᪮᪯᫏-᫿᭍-᭏᭿᯴-᯻᰸-᰺᱊-᱌Ᲊ-᲏᲻᲼᳈-᳏᳻-᳿἖἗἞἟὆὇὎὏὘὚὜὞὾὿᾵῅῔῕῜῰῱῵῿​-‏‪-‮⁠-⁲⁳₏₝-₟⃁-⃏⃱-⃿↌-↏␧-␿⑋-⑟⭴⭵⮖⳴-⳸⴦⴨-⴬⴮⴯⵨-⵮⵱-⵾⶗-⶟⶧⶯⶷⶿⷇⷏⷗⷟⹞-⹿⺚⻴-⻿⿖-⿯⿼-⿿぀゗゘㄀-㄄㄰㆏㇤-㇯㈟꒍-꒏꓇-꓏꘬-꘿꛸-꛿Ɤ-꟏꟒꟔Ꟛ-꟱꠭-꠯꠺-꠿꡸-꡿꣆-꣍꣚-꣟꥔-꥞꥽-꥿꧎꧚-꧝꧿꨷-꨿꩎꩏꩚꩛꫃-꫚꫷-꬀꬇꬈꬏꬐꬗-꬟꬧꬯꭬-꭯꯮꯯꯺-꯿힤-힯퟇-퟊퟼-﩮﩯﫚-﫿﬇-﬒﬘-﬜﬷﬽﬿﭂﭅﯃-﯒﶐﶑﷈-﷎﷐-﷯︚-︟﹓﹧﹬-﹯﹵﻽-＀﾿-￁￈￉￐￑￘￙￝-￟￧￯-￾￿",astral:"\ud800[\udc0c\udc27\udc3b\udc3e\udc4e\udc4f\udc5e-\udc7f\udcfb-\udcff\udd03-\udd06\udd34-\udd36\udd8f\udd9d-\udd9f\udda1-\uddcf\uddfe-\ude7f\ude9d-\ude9f\uded1-\udedf\udefc-\udeff\udf24-\udf2c\udf4b-\udf4f\udf7b-\udf7f\udf9e\udfc4-\udfc7\udfd6-\udfff]|\ud801[\udc9e\udc9f\udcaa-\udcaf\udcd4-\udcd7\udcfc-\udcff\udd28-\udd2f\udd64-\udd6e\udd7b\udd8b\udd93\udd96\udda2\uddb2\uddba\uddbd-\uddff\udf37-\udf3f\udf56-\udf5f\udf68-\udf7f\udf86\udfb1\udfbb-\udfff]|\ud802[\udc06\udc07\udc09\udc36\udc39-\udc3b\udc3d\udc3e\udc56\udc9f-\udca6\udcb0-\udcdf\udcf3\udcf6-\udcfa\udd1c-\udd1e\udd3a-\udd3e\udd40-\udd7f\uddb8-\uddbb\uddd0\uddd1\ude04\ude07-\ude0b\ude14\ude18\ude36\ude37\ude3b-\ude3e\ude49-\ude4f\ude59-\ude5f\udea0-\udebf\udee7-\udeea\udef7-\udeff\udf36-\udf38\udf56\udf57\udf73-\udf77\udf92-\udf98\udf9d-\udfa8\udfb0-\udfff]|\ud803[\udc49-\udc7f\udcb3-\udcbf\udcf3-\udcf9\udd28-\udd2f\udd3a-\ude5f\ude7f\udeaa\udeae\udeaf\udeb2-\udeff\udf28-\udf2f\udf5a-\udf6f\udf8a-\udfaf\udfcc-\udfdf\udff7-\udfff]|\ud804[\udc4e-\udc51\udc76-\udc7e\udcbd\udcc3-\udccf\udce9-\udcef\udcfa-\udcff\udd35\udd48-\udd4f\udd77-\udd7f\udde0\uddf5-\uddff\ude12\ude3f-\ude7f\ude87\ude89\ude8e\ude9e\udeaa-\udeaf\udeeb-\udeef\udefa-\udeff\udf04\udf0d\udf0e\udf11\udf12\udf29\udf31\udf34\udf3a\udf45\udf46\udf49\udf4a\udf4e\udf4f\udf51-\udf56\udf58-\udf5c\udf64\udf65\udf6d-\udf6f\udf75-\udfff]|\ud805[\udc5c\udc62-\udc7f\udcc8-\udccf\udcda-\udd7f\uddb6\uddb7\uddde-\uddff\ude45-\ude4f\ude5a-\ude5f\ude6d-\ude7f\udeba-\udebf\udeca-\udeff\udf1b\udf1c\udf2c-\udf2f\udf47-\udfff]|\ud806[\udc3c-\udc9f\udcf3-\udcfe\udd07\udd08\udd0a\udd0b\udd14\udd17\udd36\udd39\udd3a\udd47-\udd4f\udd5a-\udd9f\udda8\udda9\uddd8\uddd9\udde5-\uddff\ude48-\ude4f\udea3-\udeaf\udef9-\udfff]|\ud807[\udc09\udc37\udc46-\udc4f\udc6d-\udc6f\udc90\udc91\udca8\udcb7-\udcff\udd07\udd0a\udd37-\udd39\udd3b\udd3e\udd48-\udd4f\udd5a-\udd5f\udd66\udd69\udd8f\udd92\udd99-\udd9f\uddaa-\udedf\udef9-\udfaf\udfb1-\udfbf\udff2-\udffe]|\ud808[\udf9a-\udfff]|\ud809[\udc6f\udc75-\udc7f\udd44-\udfff]|[\ud80a\ud80e-\ud810\ud812-\ud819\ud824-\ud82a\ud82d\ud82e\ud830-\ud832\ud83f\ud87b-\ud87d\ud87f\ud885-\udb3f\udb41-\udbff][\udc00-\udfff]|\ud80b[\udc00-\udf8f\udff3-\udfff]|\ud80d[\udc2f-\udfff]|\ud811[\ude47-\udfff]|\ud81a[\ude39-\ude3f\ude5f\ude6a-\ude6d\udebf\udeca-\udecf\udeee\udeef\udef6-\udeff\udf46-\udf4f\udf5a\udf62\udf78-\udf7c\udf90-\udfff]|\ud81b[\udc00-\ude3f\ude9b-\udeff\udf4b-\udf4e\udf88-\udf8e\udfa0-\udfdf\udfe5-\udfef\udff2-\udfff]|\ud821[\udff8-\udfff]|\ud823[\udcd6-\udcff\udd09-\udfff]|\ud82b[\udc00-\udfef\udff4\udffc\udfff]|\ud82c[\udd23-\udd4f\udd53-\udd63\udd68-\udd6f\udefc-\udfff]|\ud82f[\udc6b-\udc6f\udc7d-\udc7f\udc89-\udc8f\udc9a\udc9b\udca0-\udfff]|\ud833[\udc00-\udeff\udf2e\udf2f\udf47-\udf4f\udfc4-\udfff]|\ud834[\udcf6-\udcff\udd27\udd28\udd73-\udd7a\uddeb-\uddff\ude46-\udedf\udef4-\udeff\udf57-\udf5f\udf79-\udfff]|\ud835[\udc55\udc9d\udca0\udca1\udca3\udca4\udca7\udca8\udcad\udcba\udcbc\udcc4\udd06\udd0b\udd0c\udd15\udd1d\udd3a\udd3f\udd45\udd47-\udd49\udd51\udea6\udea7\udfcc\udfcd]|\ud836[\ude8c-\ude9a\udea0\udeb0-\udfff]|\ud837[\udc00-\udeff\udf1f-\udfff]|\ud838[\udc07\udc19\udc1a\udc22\udc25\udc2b-\udcff\udd2d-\udd2f\udd3e\udd3f\udd4a-\udd4d\udd50-\ude8f\udeaf-\udebf\udefa-\udefe\udf00-\udfff]|\ud839[\udc00-\udfdf\udfe7\udfec\udfef\udfff]|\ud83a[\udcc5\udcc6\udcd7-\udcff\udd4c-\udd4f\udd5a-\udd5d\udd60-\udfff]|\ud83b[\udc00-\udc70\udcb5-\udd00\udd3e-\uddff\ude04\ude20\ude23\ude25\ude26\ude28\ude33\ude38\ude3a\ude3c-\ude41\ude43-\ude46\ude48\ude4a\ude4c\ude50\ude53\ude55\ude56\ude58\ude5a\ude5c\ude5e\ude60\ude63\ude65\ude66\ude6b\ude73\ude78\ude7d\ude7f\ude8a\ude9c-\udea0\udea4\udeaa\udebc-\udeef\udef2-\udfff]|\ud83c[\udc2c-\udc2f\udc94-\udc9f\udcaf\udcb0\udcc0\udcd0\udcf6-\udcff\uddae-\udde5\ude03-\ude0f\ude3c-\ude3f\ude49-\ude4f\ude52-\ude5f\ude66-\udeff]|\ud83d[\uded8-\udedc\udeed-\udeef\udefd-\udeff\udf74-\udf7f\udfd9-\udfdf\udfec-\udfef\udff1-\udfff]|\ud83e[\udc0c-\udc0f\udc48-\udc4f\udc5a-\udc5f\udc88-\udc8f\udcae\udcaf\udcb2-\udcff\ude54-\ude5f\ude6e\ude6f\ude75-\ude77\ude7d-\ude7f\ude87-\ude8f\udead-\udeaf\udebb-\udebf\udec6-\udecf\udeda-\udedf\udee8-\udeef\udef7-\udeff\udf93\udfcb-\udfef\udffa-\udfff]|\ud869[\udee0-\udeff]|\ud86d[\udf39-\udf3f]|\ud86e[\udc1e\udc1f]|\ud873[\udea2-\udeaf]|\ud87a[\udfe1-\udfff]|\ud87e[\ude1e-\udfff]|\ud884[\udf4b-\udfff]|\udb40[\udc00-\udcff\uddf0-\udfff]"},{name:"Cc",alias:"Control",bmp:"\0--Ÿ"},{name:"Cf",alias:"Format",bmp:"­؀-؅؜۝܏࢐࢑࣢᠎​-‏‪-‮⁠-⁤⁦-\ufeff-",astral:"\ud804[\udcbd\udccd]|\ud80d[\udc30-\udc38]|\ud82f[\udca0-\udca3]|\ud834[\udd73-\udd7a]|\udb40[\udc01\udc20-\udc7f]"},{name:"Cn",alias:"Unassigned",bmp:"͸͹΀-΃΋΍΢԰՗՘֋֌֐׈-׏׫-׮׵-׿܎݋݌޲-޿߻߼࠮࠯࠿࡜࡝࡟࡫-࡯࢏࢒-ࢗ঄঍঎঑঒঩঱঳-঵঺঻৅৆৉৊৏-৖৘-৛৞৤৥৿਀਄਋-਎਑਒਩਱਴਷਺਻਽੃-੆੉੊੎-੐੒-੘੝੟-੥੷-઀઄઎઒઩઱઴઺઻૆૊૎૏૑-૟૤૥૲-૸଀଄଍଎଑଒଩଱଴଺଻୅୆୉୊୎-୔୘-୛୞୤୥୸-஁஄஋-஍஑஖-஘஛஝஠-஢஥-஧஫-஭஺-஽௃-௅௉௎௏௑-௖௘-௥௻-௿఍఑఩఺఻౅౉౎-౔౗౛౜౞౟౤౥౰-౶಍಑಩಴಺಻೅೉೎-೔೗-೜೟೤೥೰ೳ-೿഍഑൅൉൐-൓൤൥඀඄඗-඙඲඼඾඿෇-෉෋-෎෕෗෠-෥෰෱෵-฀฻-฾๜-຀຃຅຋຤຦຾຿໅໇໎໏໚໛໠-໿཈཭-཰྘྽࿍࿛-࿿჆჈-჌჎჏቉቎቏቗቙቞቟኉኎኏኱኶኷኿዁዆዇዗጑጖጗፛፜፽-፿᎚-᎟᏶᏷᏾᏿᚝-᚟᛹-᛿᜖-᜞᜷-᜿᝔-᝟᝭᝱᝴-᝿៞៟៪-៯៺-៿᠚-᠟᡹-᡿᢫-᢯᣶-᣿᤟᤬-᤯᤼-᤿᥁-᥃᥮᥯᥵-᥿᦬-᦯᧊-᧏᧛-᧝᨜᨝᩟᩽᩾᪊-᪏᪚-᪟᪮᪯᫏-᫿᭍-᭏᭿᯴-᯻᰸-᰺᱊-᱌Ᲊ-᲏᲻᲼᳈-᳏᳻-᳿἖἗἞἟὆὇὎὏὘὚὜὞὾὿᾵῅῔῕῜῰῱῵῿⁥⁲⁳₏₝-₟⃁-⃏⃱-⃿↌-↏␧-␿⑋-⑟⭴⭵⮖⳴-⳸⴦⴨-⴬⴮⴯⵨-⵮⵱-⵾⶗-⶟⶧⶯⶷⶿⷇⷏⷗⷟⹞-⹿⺚⻴-⻿⿖-⿯⿼-⿿぀゗゘㄀-㄄㄰㆏㇤-㇯㈟꒍-꒏꓇-꓏꘬-꘿꛸-꛿Ɤ-꟏꟒꟔Ꟛ-꟱꠭-꠯꠺-꠿꡸-꡿꣆-꣍꣚-꣟꥔-꥞꥽-꥿꧎꧚-꧝꧿꨷-꨿꩎꩏꩚꩛꫃-꫚꫷-꬀꬇꬈꬏꬐꬗-꬟꬧꬯꭬-꭯꯮꯯꯺-꯿힤-힯퟇-퟊퟼-퟿﩮﩯﫚-﫿﬇-﬒﬘-﬜﬷﬽﬿﭂﭅﯃-﯒﶐﶑﷈-﷎﷐-﷯︚-︟﹓﹧﹬-﹯﹵﻽﻾＀﾿-￁￈￉￐￑￘￙￝-￟￧￯-￸￾￿",astral:"\ud800[\udc0c\udc27\udc3b\udc3e\udc4e\udc4f\udc5e-\udc7f\udcfb-\udcff\udd03-\udd06\udd34-\udd36\udd8f\udd9d-\udd9f\udda1-\uddcf\uddfe-\ude7f\ude9d-\ude9f\uded1-\udedf\udefc-\udeff\udf24-\udf2c\udf4b-\udf4f\udf7b-\udf7f\udf9e\udfc4-\udfc7\udfd6-\udfff]|\ud801[\udc9e\udc9f\udcaa-\udcaf\udcd4-\udcd7\udcfc-\udcff\udd28-\udd2f\udd64-\udd6e\udd7b\udd8b\udd93\udd96\udda2\uddb2\uddba\uddbd-\uddff\udf37-\udf3f\udf56-\udf5f\udf68-\udf7f\udf86\udfb1\udfbb-\udfff]|\ud802[\udc06\udc07\udc09\udc36\udc39-\udc3b\udc3d\udc3e\udc56\udc9f-\udca6\udcb0-\udcdf\udcf3\udcf6-\udcfa\udd1c-\udd1e\udd3a-\udd3e\udd40-\udd7f\uddb8-\uddbb\uddd0\uddd1\ude04\ude07-\ude0b\ude14\ude18\ude36\ude37\ude3b-\ude3e\ude49-\ude4f\ude59-\ude5f\udea0-\udebf\udee7-\udeea\udef7-\udeff\udf36-\udf38\udf56\udf57\udf73-\udf77\udf92-\udf98\udf9d-\udfa8\udfb0-\udfff]|\ud803[\udc49-\udc7f\udcb3-\udcbf\udcf3-\udcf9\udd28-\udd2f\udd3a-\ude5f\ude7f\udeaa\udeae\udeaf\udeb2-\udeff\udf28-\udf2f\udf5a-\udf6f\udf8a-\udfaf\udfcc-\udfdf\udff7-\udfff]|\ud804[\udc4e-\udc51\udc76-\udc7e\udcc3-\udccc\udcce\udccf\udce9-\udcef\udcfa-\udcff\udd35\udd48-\udd4f\udd77-\udd7f\udde0\uddf5-\uddff\ude12\ude3f-\ude7f\ude87\ude89\ude8e\ude9e\udeaa-\udeaf\udeeb-\udeef\udefa-\udeff\udf04\udf0d\udf0e\udf11\udf12\udf29\udf31\udf34\udf3a\udf45\udf46\udf49\udf4a\udf4e\udf4f\udf51-\udf56\udf58-\udf5c\udf64\udf65\udf6d-\udf6f\udf75-\udfff]|\ud805[\udc5c\udc62-\udc7f\udcc8-\udccf\udcda-\udd7f\uddb6\uddb7\uddde-\uddff\ude45-\ude4f\ude5a-\ude5f\ude6d-\ude7f\udeba-\udebf\udeca-\udeff\udf1b\udf1c\udf2c-\udf2f\udf47-\udfff]|\ud806[\udc3c-\udc9f\udcf3-\udcfe\udd07\udd08\udd0a\udd0b\udd14\udd17\udd36\udd39\udd3a\udd47-\udd4f\udd5a-\udd9f\udda8\udda9\uddd8\uddd9\udde5-\uddff\ude48-\ude4f\udea3-\udeaf\udef9-\udfff]|\ud807[\udc09\udc37\udc46-\udc4f\udc6d-\udc6f\udc90\udc91\udca8\udcb7-\udcff\udd07\udd0a\udd37-\udd39\udd3b\udd3e\udd48-\udd4f\udd5a-\udd5f\udd66\udd69\udd8f\udd92\udd99-\udd9f\uddaa-\udedf\udef9-\udfaf\udfb1-\udfbf\udff2-\udffe]|\ud808[\udf9a-\udfff]|\ud809[\udc6f\udc75-\udc7f\udd44-\udfff]|[\ud80a\ud80e-\ud810\ud812-\ud819\ud824-\ud82a\ud82d\ud82e\ud830-\ud832\ud83f\ud87b-\ud87d\ud87f\ud885-\udb3f\udb41-\udb7f][\udc00-\udfff]|\ud80b[\udc00-\udf8f\udff3-\udfff]|\ud80d[\udc2f\udc39-\udfff]|\ud811[\ude47-\udfff]|\ud81a[\ude39-\ude3f\ude5f\ude6a-\ude6d\udebf\udeca-\udecf\udeee\udeef\udef6-\udeff\udf46-\udf4f\udf5a\udf62\udf78-\udf7c\udf90-\udfff]|\ud81b[\udc00-\ude3f\ude9b-\udeff\udf4b-\udf4e\udf88-\udf8e\udfa0-\udfdf\udfe5-\udfef\udff2-\udfff]|\ud821[\udff8-\udfff]|\ud823[\udcd6-\udcff\udd09-\udfff]|\ud82b[\udc00-\udfef\udff4\udffc\udfff]|\ud82c[\udd23-\udd4f\udd53-\udd63\udd68-\udd6f\udefc-\udfff]|\ud82f[\udc6b-\udc6f\udc7d-\udc7f\udc89-\udc8f\udc9a\udc9b\udca4-\udfff]|\ud833[\udc00-\udeff\udf2e\udf2f\udf47-\udf4f\udfc4-\udfff]|\ud834[\udcf6-\udcff\udd27\udd28\uddeb-\uddff\ude46-\udedf\udef4-\udeff\udf57-\udf5f\udf79-\udfff]|\ud835[\udc55\udc9d\udca0\udca1\udca3\udca4\udca7\udca8\udcad\udcba\udcbc\udcc4\udd06\udd0b\udd0c\udd15\udd1d\udd3a\udd3f\udd45\udd47-\udd49\udd51\udea6\udea7\udfcc\udfcd]|\ud836[\ude8c-\ude9a\udea0\udeb0-\udfff]|\ud837[\udc00-\udeff\udf1f-\udfff]|\ud838[\udc07\udc19\udc1a\udc22\udc25\udc2b-\udcff\udd2d-\udd2f\udd3e\udd3f\udd4a-\udd4d\udd50-\ude8f\udeaf-\udebf\udefa-\udefe\udf00-\udfff]|\ud839[\udc00-\udfdf\udfe7\udfec\udfef\udfff]|\ud83a[\udcc5\udcc6\udcd7-\udcff\udd4c-\udd4f\udd5a-\udd5d\udd60-\udfff]|\ud83b[\udc00-\udc70\udcb5-\udd00\udd3e-\uddff\ude04\ude20\ude23\ude25\ude26\ude28\ude33\ude38\ude3a\ude3c-\ude41\ude43-\ude46\ude48\ude4a\ude4c\ude50\ude53\ude55\ude56\ude58\ude5a\ude5c\ude5e\ude60\ude63\ude65\ude66\ude6b\ude73\ude78\ude7d\ude7f\ude8a\ude9c-\udea0\udea4\udeaa\udebc-\udeef\udef2-\udfff]|\ud83c[\udc2c-\udc2f\udc94-\udc9f\udcaf\udcb0\udcc0\udcd0\udcf6-\udcff\uddae-\udde5\ude03-\ude0f\ude3c-\ude3f\ude49-\ude4f\ude52-\ude5f\ude66-\udeff]|\ud83d[\uded8-\udedc\udeed-\udeef\udefd-\udeff\udf74-\udf7f\udfd9-\udfdf\udfec-\udfef\udff1-\udfff]|\ud83e[\udc0c-\udc0f\udc48-\udc4f\udc5a-\udc5f\udc88-\udc8f\udcae\udcaf\udcb2-\udcff\ude54-\ude5f\ude6e\ude6f\ude75-\ude77\ude7d-\ude7f\ude87-\ude8f\udead-\udeaf\udebb-\udebf\udec6-\udecf\udeda-\udedf\udee8-\udeef\udef7-\udeff\udf93\udfcb-\udfef\udffa-\udfff]|\ud869[\udee0-\udeff]|\ud86d[\udf39-\udf3f]|\ud86e[\udc1e\udc1f]|\ud873[\udea2-\udeaf]|\ud87a[\udfe1-\udfff]|\ud87e[\ude1e-\udfff]|\ud884[\udf4b-\udfff]|\udb40[\udc00\udc02-\udc1f\udc80-\udcff\uddf0-\udfff]|[\udbbf\udbff][\udffe\udfff]"},{name:"Co",alias:"Private_Use",bmp:"-",astral:"[\udb80-\udbbe\udbc0-\udbfe][\udc00-\udfff]|[\udbbf\udbff][\udc00-\udffd]"},{name:"Cs",alias:"Surrogate",bmp:"\ud800-\udfff"},{name:"L",alias:"Letter",bmp:"A-Za-zªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙՠ-ֈא-תׯ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࡠ-ࡪࡰ-ࢇࢉ-ࢎࢠ-ࣉऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱৼਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౝౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೝೞೠೡೱೲഄ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄຆ-ຊຌ-ຣລວ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛱ-ᛸᜀ-ᜑᜟ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡸᢀ-ᢄᢇ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭌᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᲐ-ᲺᲽ-Ჿᳩ-ᳬᳮ-ᳳᳵᳶᳺᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々〆〱-〵〻〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄯㄱ-ㆎㆠ-ㆿㇰ-ㇿ㐀-䶿一-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꟊꟐꟑꟓꟕ-ꟙꟲ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꣾꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭩꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",astral:"\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa\ude80-\ude9c\udea0-\uded0\udf00-\udf1f\udf2d-\udf40\udf42-\udf49\udf50-\udf75\udf80-\udf9d\udfa0-\udfc3\udfc8-\udfcf]|\ud801[\udc00-\udc9d\udcb0-\udcd3\udcd8-\udcfb\udd00-\udd27\udd30-\udd63\udd70-\udd7a\udd7c-\udd8a\udd8c-\udd92\udd94\udd95\udd97-\udda1\udda3-\uddb1\uddb3-\uddb9\uddbb\uddbc\ude00-\udf36\udf40-\udf55\udf60-\udf67\udf80-\udf85\udf87-\udfb0\udfb2-\udfba]|\ud802[\udc00-\udc05\udc08\udc0a-\udc35\udc37\udc38\udc3c\udc3f-\udc55\udc60-\udc76\udc80-\udc9e\udce0-\udcf2\udcf4\udcf5\udd00-\udd15\udd20-\udd39\udd80-\uddb7\uddbe\uddbf\ude00\ude10-\ude13\ude15-\ude17\ude19-\ude35\ude60-\ude7c\ude80-\ude9c\udec0-\udec7\udec9-\udee4\udf00-\udf35\udf40-\udf55\udf60-\udf72\udf80-\udf91]|\ud803[\udc00-\udc48\udc80-\udcb2\udcc0-\udcf2\udd00-\udd23\ude80-\udea9\udeb0\udeb1\udf00-\udf1c\udf27\udf30-\udf45\udf70-\udf81\udfb0-\udfc4\udfe0-\udff6]|\ud804[\udc03-\udc37\udc71\udc72\udc75\udc83-\udcaf\udcd0-\udce8\udd03-\udd26\udd44\udd47\udd50-\udd72\udd76\udd83-\uddb2\uddc1-\uddc4\uddda\udddc\ude00-\ude11\ude13-\ude2b\ude80-\ude86\ude88\ude8a-\ude8d\ude8f-\ude9d\ude9f-\udea8\udeb0-\udede\udf05-\udf0c\udf0f\udf10\udf13-\udf28\udf2a-\udf30\udf32\udf33\udf35-\udf39\udf3d\udf50\udf5d-\udf61]|\ud805[\udc00-\udc34\udc47-\udc4a\udc5f-\udc61\udc80-\udcaf\udcc4\udcc5\udcc7\udd80-\uddae\uddd8-\udddb\ude00-\ude2f\ude44\ude80-\udeaa\udeb8\udf00-\udf1a\udf40-\udf46]|\ud806[\udc00-\udc2b\udca0-\udcdf\udcff-\udd06\udd09\udd0c-\udd13\udd15\udd16\udd18-\udd2f\udd3f\udd41\udda0-\udda7\uddaa-\uddd0\udde1\udde3\ude00\ude0b-\ude32\ude3a\ude50\ude5c-\ude89\ude9d\udeb0-\udef8]|\ud807[\udc00-\udc08\udc0a-\udc2e\udc40\udc72-\udc8f\udd00-\udd06\udd08\udd09\udd0b-\udd30\udd46\udd60-\udd65\udd67\udd68\udd6a-\udd89\udd98\udee0-\udef2\udfb0]|\ud808[\udc00-\udf99]|\ud809[\udc80-\udd43]|\ud80b[\udf90-\udff0]|[\ud80c\ud81c-\ud820\ud822\ud840-\ud868\ud86a-\ud86c\ud86f-\ud872\ud874-\ud879\ud880-\ud883][\udc00-\udfff]|\ud80d[\udc00-\udc2e]|\ud811[\udc00-\ude46]|\ud81a[\udc00-\ude38\ude40-\ude5e\ude70-\udebe\uded0-\udeed\udf00-\udf2f\udf40-\udf43\udf63-\udf77\udf7d-\udf8f]|\ud81b[\ude40-\ude7f\udf00-\udf4a\udf50\udf93-\udf9f\udfe0\udfe1\udfe3]|\ud821[\udc00-\udff7]|\ud823[\udc00-\udcd5\udd00-\udd08]|\ud82b[\udff0-\udff3\udff5-\udffb\udffd\udffe]|\ud82c[\udc00-\udd22\udd50-\udd52\udd64-\udd67\udd70-\udefb]|\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99]|\ud835[\udc00-\udc54\udc56-\udc9c\udc9e\udc9f\udca2\udca5\udca6\udca9-\udcac\udcae-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd1e-\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd52-\udea5\udea8-\udec0\udec2-\udeda\udedc-\udefa\udefc-\udf14\udf16-\udf34\udf36-\udf4e\udf50-\udf6e\udf70-\udf88\udf8a-\udfa8\udfaa-\udfc2\udfc4-\udfcb]|\ud837[\udf00-\udf1e]|\ud838[\udd00-\udd2c\udd37-\udd3d\udd4e\ude90-\udead\udec0-\udeeb]|\ud839[\udfe0-\udfe6\udfe8-\udfeb\udfed\udfee\udff0-\udffe]|\ud83a[\udc00-\udcc4\udd00-\udd43\udd4b]|\ud83b[\ude00-\ude03\ude05-\ude1f\ude21\ude22\ude24\ude27\ude29-\ude32\ude34-\ude37\ude39\ude3b\ude42\ude47\ude49\ude4b\ude4d-\ude4f\ude51\ude52\ude54\ude57\ude59\ude5b\ude5d\ude5f\ude61\ude62\ude64\ude67-\ude6a\ude6c-\ude72\ude74-\ude77\ude79-\ude7c\ude7e\ude80-\ude89\ude8b-\ude9b\udea1-\udea3\udea5-\udea9\udeab-\udebb]|\ud869[\udc00-\udedf\udf00-\udfff]|\ud86d[\udc00-\udf38\udf40-\udfff]|\ud86e[\udc00-\udc1d\udc20-\udfff]|\ud873[\udc00-\udea1\udeb0-\udfff]|\ud87a[\udc00-\udfe0]|\ud87e[\udc00-\ude1d]|\ud884[\udc00-\udf4a]"},{name:"LC",alias:"Cased_Letter",bmp:"A-Za-zµÀ-ÖØ-öø-ƺƼ-ƿDŽ-ʓʕ-ʯͰ-ͳͶͷͻ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՠ-ֈႠ-ჅჇჍა-ჺჽ-ჿᎠ-Ᏽᏸ-ᏽᲀ-ᲈᲐ-ᲺᲽ-Ჿᴀ-ᴫᵫ-ᵷᵹ-ᶚḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℴℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-ⱻⱾ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭꙀ-ꙭꚀ-ꚛꜢ-ꝯꝱ-ꞇꞋ-ꞎꞐ-ꟊꟐꟑꟓꟕ-ꟙꟵꟶꟺꬰ-ꭚꭠ-ꭨꭰ-ꮿff-stﬓ-ﬗA-Za-z",astral:"\ud801[\udc00-\udc4f\udcb0-\udcd3\udcd8-\udcfb\udd70-\udd7a\udd7c-\udd8a\udd8c-\udd92\udd94\udd95\udd97-\udda1\udda3-\uddb1\uddb3-\uddb9\uddbb\uddbc]|\ud803[\udc80-\udcb2\udcc0-\udcf2]|\ud806[\udca0-\udcdf]|\ud81b[\ude40-\ude7f]|\ud835[\udc00-\udc54\udc56-\udc9c\udc9e\udc9f\udca2\udca5\udca6\udca9-\udcac\udcae-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd1e-\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd52-\udea5\udea8-\udec0\udec2-\udeda\udedc-\udefa\udefc-\udf14\udf16-\udf34\udf36-\udf4e\udf50-\udf6e\udf70-\udf88\udf8a-\udfa8\udfaa-\udfc2\udfc4-\udfcb]|\ud837[\udf00-\udf09\udf0b-\udf1e]|\ud83a[\udd00-\udd43]"},{name:"Ll",alias:"Lowercase_Letter",bmp:"a-zµß-öø-ÿāăąćĉċčďđēĕėęěĝğġģĥħĩīĭįıijĵķĸĺļľŀłńņňʼnŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷźżž-ƀƃƅƈƌƍƒƕƙ-ƛƞơƣƥƨƪƫƭưƴƶƹƺƽ-ƿdžljnjǎǐǒǔǖǘǚǜǝǟǡǣǥǧǩǫǭǯǰdzǵǹǻǽǿȁȃȅȇȉȋȍȏȑȓȕȗșțȝȟȡȣȥȧȩȫȭȯȱȳ-ȹȼȿɀɂɇɉɋɍɏ-ʓʕ-ʯͱͳͷͻ-ͽΐά-ώϐϑϕ-ϗϙϛϝϟϡϣϥϧϩϫϭϯ-ϳϵϸϻϼа-џѡѣѥѧѩѫѭѯѱѳѵѷѹѻѽѿҁҋҍҏґғҕҗҙқҝҟҡңҥҧҩҫҭүұҳҵҷҹһҽҿӂӄӆӈӊӌӎӏӑӓӕӗәӛӝӟӡӣӥӧөӫӭӯӱӳӵӷӹӻӽӿԁԃԅԇԉԋԍԏԑԓԕԗԙԛԝԟԡԣԥԧԩԫԭԯՠ-ֈა-ჺჽ-ჿᏸ-ᏽᲀ-ᲈᴀ-ᴫᵫ-ᵷᵹ-ᶚḁḃḅḇḉḋḍḏḑḓḕḗḙḛḝḟḡḣḥḧḩḫḭḯḱḳḵḷḹḻḽḿṁṃṅṇṉṋṍṏṑṓṕṗṙṛṝṟṡṣṥṧṩṫṭṯṱṳṵṷṹṻṽṿẁẃẅẇẉẋẍẏẑẓẕ-ẝẟạảấầẩẫậắằẳẵặẹẻẽếềểễệỉịọỏốồổỗộớờởỡợụủứừửữựỳỵỷỹỻỽỿ-ἇἐ-ἕἠ-ἧἰ-ἷὀ-ὅὐ-ὗὠ-ὧὰ-ώᾀ-ᾇᾐ-ᾗᾠ-ᾧᾰ-ᾴᾶᾷιῂ-ῄῆῇῐ-ΐῖῗῠ-ῧῲ-ῴῶῷℊℎℏℓℯℴℹℼℽⅆ-ⅉⅎↄⰰ-ⱟⱡⱥⱦⱨⱪⱬⱱⱳⱴⱶ-ⱻⲁⲃⲅⲇⲉⲋⲍⲏⲑⲓⲕⲗⲙⲛⲝⲟⲡⲣⲥⲧⲩⲫⲭⲯⲱⲳⲵⲷⲹⲻⲽⲿⳁⳃⳅⳇⳉⳋⳍⳏⳑⳓⳕⳗⳙⳛⳝⳟⳡⳣⳤⳬⳮⳳⴀ-ⴥⴧⴭꙁꙃꙅꙇꙉꙋꙍꙏꙑꙓꙕꙗꙙꙛꙝꙟꙡꙣꙥꙧꙩꙫꙭꚁꚃꚅꚇꚉꚋꚍꚏꚑꚓꚕꚗꚙꚛꜣꜥꜧꜩꜫꜭꜯ-ꜱꜳꜵꜷꜹꜻꜽꜿꝁꝃꝅꝇꝉꝋꝍꝏꝑꝓꝕꝗꝙꝛꝝꝟꝡꝣꝥꝧꝩꝫꝭꝯꝱ-ꝸꝺꝼꝿꞁꞃꞅꞇꞌꞎꞑꞓ-ꞕꞗꞙꞛꞝꞟꞡꞣꞥꞧꞩꞯꞵꞷꞹꞻꞽꞿꟁꟃꟈꟊꟑꟓꟕꟗꟙꟶꟺꬰ-ꭚꭠ-ꭨꭰ-ꮿff-stﬓ-ﬗa-z",astral:"\ud801[\udc28-\udc4f\udcd8-\udcfb\udd97-\udda1\udda3-\uddb1\uddb3-\uddb9\uddbb\uddbc]|\ud803[\udcc0-\udcf2]|\ud806[\udcc0-\udcdf]|\ud81b[\ude60-\ude7f]|\ud835[\udc1a-\udc33\udc4e-\udc54\udc56-\udc67\udc82-\udc9b\udcb6-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udccf\udcea-\udd03\udd1e-\udd37\udd52-\udd6b\udd86-\udd9f\uddba-\uddd3\uddee-\ude07\ude22-\ude3b\ude56-\ude6f\ude8a-\udea5\udec2-\udeda\udedc-\udee1\udefc-\udf14\udf16-\udf1b\udf36-\udf4e\udf50-\udf55\udf70-\udf88\udf8a-\udf8f\udfaa-\udfc2\udfc4-\udfc9\udfcb]|\ud837[\udf00-\udf09\udf0b-\udf1e]|\ud83a[\udd22-\udd43]"},{name:"Lm",alias:"Modifier_Letter",bmp:"ʰ-ˁˆ-ˑˠ-ˤˬˮʹͺՙـۥۦߴߵߺࠚࠤࠨࣉॱๆໆჼៗᡃᪧᱸ-ᱽᴬ-ᵪᵸᶛ-ᶿⁱⁿₐ-ₜⱼⱽⵯⸯ々〱-〵〻ゝゞー-ヾꀕꓸ-ꓽꘌꙿꚜꚝꜗ-ꜟꝰꞈꟲ-ꟴꟸꟹꧏꧦꩰꫝꫳꫴꭜ-ꭟꭩー゙゚",astral:"\ud801[\udf80-\udf85\udf87-\udfb0\udfb2-\udfba]|\ud81a[\udf40-\udf43]|\ud81b[\udf93-\udf9f\udfe0\udfe1\udfe3]|\ud82b[\udff0-\udff3\udff5-\udffb\udffd\udffe]|\ud838[\udd37-\udd3d]|𞥋"},{name:"Lo",alias:"Other_Letter",bmp:"ªºƻǀ-ǃʔא-תׯ-ײؠ-ؿف-يٮٯٱ-ۓەۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪࠀ-ࠕࡀ-ࡘࡠ-ࡪࡰ-ࢇࢉ-ࢎࢠ-ࣈऄ-हऽॐक़-ॡॲ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱৼਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౝౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೝೞೠೡೱೲഄ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๅກຂຄຆ-ຊຌ-ຣລວ-ະາຳຽເ-ໄໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎᄀ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛱ-ᛸᜀ-ᜑᜟ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៜᠠ-ᡂᡄ-ᡸᢀ-ᢄᢇ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᬅ-ᬳᭅ-ᭌᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱷᳩ-ᳬᳮ-ᳳᳵᳶᳺℵ-ℸⴰ-ⵧⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ〆〼ぁ-ゖゟァ-ヺヿㄅ-ㄯㄱ-ㆎㆠ-ㆿㇰ-ㇿ㐀-䶿一-ꀔꀖ-ꒌꓐ-ꓷꔀ-ꘋꘐ-ꘟꘪꘫꙮꚠ-ꛥꞏꟷꟻ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꣾꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧠ-ꧤꧧ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩯꩱ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛꫜꫠ-ꫪꫲꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎יִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼヲ-ッア-ンᅠ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",astral:"\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa\ude80-\ude9c\udea0-\uded0\udf00-\udf1f\udf2d-\udf40\udf42-\udf49\udf50-\udf75\udf80-\udf9d\udfa0-\udfc3\udfc8-\udfcf]|\ud801[\udc50-\udc9d\udd00-\udd27\udd30-\udd63\ude00-\udf36\udf40-\udf55\udf60-\udf67]|\ud802[\udc00-\udc05\udc08\udc0a-\udc35\udc37\udc38\udc3c\udc3f-\udc55\udc60-\udc76\udc80-\udc9e\udce0-\udcf2\udcf4\udcf5\udd00-\udd15\udd20-\udd39\udd80-\uddb7\uddbe\uddbf\ude00\ude10-\ude13\ude15-\ude17\ude19-\ude35\ude60-\ude7c\ude80-\ude9c\udec0-\udec7\udec9-\udee4\udf00-\udf35\udf40-\udf55\udf60-\udf72\udf80-\udf91]|\ud803[\udc00-\udc48\udd00-\udd23\ude80-\udea9\udeb0\udeb1\udf00-\udf1c\udf27\udf30-\udf45\udf70-\udf81\udfb0-\udfc4\udfe0-\udff6]|\ud804[\udc03-\udc37\udc71\udc72\udc75\udc83-\udcaf\udcd0-\udce8\udd03-\udd26\udd44\udd47\udd50-\udd72\udd76\udd83-\uddb2\uddc1-\uddc4\uddda\udddc\ude00-\ude11\ude13-\ude2b\ude80-\ude86\ude88\ude8a-\ude8d\ude8f-\ude9d\ude9f-\udea8\udeb0-\udede\udf05-\udf0c\udf0f\udf10\udf13-\udf28\udf2a-\udf30\udf32\udf33\udf35-\udf39\udf3d\udf50\udf5d-\udf61]|\ud805[\udc00-\udc34\udc47-\udc4a\udc5f-\udc61\udc80-\udcaf\udcc4\udcc5\udcc7\udd80-\uddae\uddd8-\udddb\ude00-\ude2f\ude44\ude80-\udeaa\udeb8\udf00-\udf1a\udf40-\udf46]|\ud806[\udc00-\udc2b\udcff-\udd06\udd09\udd0c-\udd13\udd15\udd16\udd18-\udd2f\udd3f\udd41\udda0-\udda7\uddaa-\uddd0\udde1\udde3\ude00\ude0b-\ude32\ude3a\ude50\ude5c-\ude89\ude9d\udeb0-\udef8]|\ud807[\udc00-\udc08\udc0a-\udc2e\udc40\udc72-\udc8f\udd00-\udd06\udd08\udd09\udd0b-\udd30\udd46\udd60-\udd65\udd67\udd68\udd6a-\udd89\udd98\udee0-\udef2\udfb0]|\ud808[\udc00-\udf99]|\ud809[\udc80-\udd43]|\ud80b[\udf90-\udff0]|[\ud80c\ud81c-\ud820\ud822\ud840-\ud868\ud86a-\ud86c\ud86f-\ud872\ud874-\ud879\ud880-\ud883][\udc00-\udfff]|\ud80d[\udc00-\udc2e]|\ud811[\udc00-\ude46]|\ud81a[\udc00-\ude38\ude40-\ude5e\ude70-\udebe\uded0-\udeed\udf00-\udf2f\udf63-\udf77\udf7d-\udf8f]|\ud81b[\udf00-\udf4a\udf50]|\ud821[\udc00-\udff7]|\ud823[\udc00-\udcd5\udd00-\udd08]|\ud82c[\udc00-\udd22\udd50-\udd52\udd64-\udd67\udd70-\udefb]|\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99]|𝼊|\ud838[\udd00-\udd2c\udd4e\ude90-\udead\udec0-\udeeb]|\ud839[\udfe0-\udfe6\udfe8-\udfeb\udfed\udfee\udff0-\udffe]|\ud83a[\udc00-\udcc4]|\ud83b[\ude00-\ude03\ude05-\ude1f\ude21\ude22\ude24\ude27\ude29-\ude32\ude34-\ude37\ude39\ude3b\ude42\ude47\ude49\ude4b\ude4d-\ude4f\ude51\ude52\ude54\ude57\ude59\ude5b\ude5d\ude5f\ude61\ude62\ude64\ude67-\ude6a\ude6c-\ude72\ude74-\ude77\ude79-\ude7c\ude7e\ude80-\ude89\ude8b-\ude9b\udea1-\udea3\udea5-\udea9\udeab-\udebb]|\ud869[\udc00-\udedf\udf00-\udfff]|\ud86d[\udc00-\udf38\udf40-\udfff]|\ud86e[\udc00-\udc1d\udc20-\udfff]|\ud873[\udc00-\udea1\udeb0-\udfff]|\ud87a[\udc00-\udfe0]|\ud87e[\udc00-\ude1d]|\ud884[\udc00-\udf4a]"},{name:"Lt",alias:"Titlecase_Letter",bmp:"DžLjNjDzᾈ-ᾏᾘ-ᾟᾨ-ᾯᾼῌῼ"},{name:"Lu",alias:"Uppercase_Letter",bmp:"A-ZÀ-ÖØ-ÞĀĂĄĆĈĊČĎĐĒĔĖĘĚĜĞĠĢĤĦĨĪĬĮİIJĴĶĹĻĽĿŁŃŅŇŊŌŎŐŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŸŹŻŽƁƂƄƆƇƉ-ƋƎ-ƑƓƔƖ-ƘƜƝƟƠƢƤƦƧƩƬƮƯƱ-ƳƵƷƸƼDŽLJNJǍǏǑǓǕǗǙǛǞǠǢǤǦǨǪǬǮDZǴǶ-ǸǺǼǾȀȂȄȆȈȊȌȎȐȒȔȖȘȚȜȞȠȢȤȦȨȪȬȮȰȲȺȻȽȾɁɃ-ɆɈɊɌɎͰͲͶͿΆΈ-ΊΌΎΏΑ-ΡΣ-ΫϏϒ-ϔϘϚϜϞϠϢϤϦϨϪϬϮϴϷϹϺϽ-ЯѠѢѤѦѨѪѬѮѰѲѴѶѸѺѼѾҀҊҌҎҐҒҔҖҘҚҜҞҠҢҤҦҨҪҬҮҰҲҴҶҸҺҼҾӀӁӃӅӇӉӋӍӐӒӔӖӘӚӜӞӠӢӤӦӨӪӬӮӰӲӴӶӸӺӼӾԀԂԄԆԈԊԌԎԐԒԔԖԘԚԜԞԠԢԤԦԨԪԬԮԱ-ՖႠ-ჅჇჍᎠ-ᏵᲐ-ᲺᲽ-ᲿḀḂḄḆḈḊḌḎḐḒḔḖḘḚḜḞḠḢḤḦḨḪḬḮḰḲḴḶḸḺḼḾṀṂṄṆṈṊṌṎṐṒṔṖṘṚṜṞṠṢṤṦṨṪṬṮṰṲṴṶṸṺṼṾẀẂẄẆẈẊẌẎẐẒẔẞẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼẾỀỂỄỆỈỊỌỎỐỒỔỖỘỚỜỞỠỢỤỦỨỪỬỮỰỲỴỶỸỺỼỾἈ-ἏἘ-ἝἨ-ἯἸ-ἿὈ-ὍὙὛὝὟὨ-ὯᾸ-ΆῈ-ΉῘ-ΊῨ-ῬῸ-Ώℂℇℋ-ℍℐ-ℒℕℙ-ℝℤΩℨK-ℭℰ-ℳℾℿⅅↃⰀ-ⰯⱠⱢ-ⱤⱧⱩⱫⱭ-ⱰⱲⱵⱾ-ⲀⲂⲄⲆⲈⲊⲌⲎⲐⲒⲔⲖⲘⲚⲜⲞⲠⲢⲤⲦⲨⲪⲬⲮⲰⲲⲴⲶⲸⲺⲼⲾⳀⳂⳄⳆⳈⳊⳌⳎⳐⳒⳔⳖⳘⳚⳜⳞⳠⳢⳫⳭⳲꙀꙂꙄꙆꙈꙊꙌꙎꙐꙒꙔꙖꙘꙚꙜꙞꙠꙢꙤꙦꙨꙪꙬꚀꚂꚄꚆꚈꚊꚌꚎꚐꚒꚔꚖꚘꚚꜢꜤꜦꜨꜪꜬꜮꜲꜴꜶꜸꜺꜼꜾꝀꝂꝄꝆꝈꝊꝌꝎꝐꝒꝔꝖꝘꝚꝜꝞꝠꝢꝤꝦꝨꝪꝬꝮꝹꝻꝽꝾꞀꞂꞄꞆꞋꞍꞐꞒꞖꞘꞚꞜꞞꞠꞢꞤꞦꞨꞪ-ꞮꞰ-ꞴꞶꞸꞺꞼꞾꟀꟂꟄ-ꟇꟉꟐꟖꟘꟵA-Z",astral:"\ud801[\udc00-\udc27\udcb0-\udcd3\udd70-\udd7a\udd7c-\udd8a\udd8c-\udd92\udd94\udd95]|\ud803[\udc80-\udcb2]|\ud806[\udca0-\udcbf]|\ud81b[\ude40-\ude5f]|\ud835[\udc00-\udc19\udc34-\udc4d\udc68-\udc81\udc9c\udc9e\udc9f\udca2\udca5\udca6\udca9-\udcac\udcae-\udcb5\udcd0-\udce9\udd04\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd38\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd6c-\udd85\udda0-\uddb9\uddd4-\udded\ude08-\ude21\ude3c-\ude55\ude70-\ude89\udea8-\udec0\udee2-\udefa\udf1c-\udf34\udf56-\udf6e\udf90-\udfa8\udfca]|\ud83a[\udd00-\udd21]"},{name:"M",alias:"Mark",bmp:"̀-ͯ҃-҉֑-ׇֽֿׁׂׅׄؐ-ًؚ-ٰٟۖ-ۜ۟-۪ۤۧۨ-ܑۭܰ-݊ަ-ް߫-߽߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛࢘-࢟࣊-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣঁ-ঃ়া-ৄেৈো-্ৗৢৣ৾ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑੰੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣૺ-૿ଁ-ଃ଼ା-ୄେୈୋ-୍୕-ୗୢୣஂா-ூெ-ைொ-்ௗఀ-ఄ఼ా-ౄె-ైొ-్ౕౖౢౣಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣഀ-ഃ഻഼ാ-ൄെ-ൈൊ-്ൗൢൣඁ-ඃ්ා-ුූෘ-ෟෲෳัิ-ฺ็-๎ັິ-ຼ່-ໍ༹༘༙༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏႚ-ႝ፝-፟ᜒ-᜕ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝᠋-᠍᠏ᢅᢆᢩᤠ-ᤫᤰ-᤻ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼᪰-ᫎᬀ-ᬄ᬴-᭄᭫-᭳ᮀ-ᮂᮡ-ᮭ᯦-᯳ᰤ-᰷᳐-᳔᳒-᳨᳭᳴᳷-᳹᷀-᷿⃐-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꙯-꙲ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧ꠬ꢀꢁꢴ-ꣅ꣠-꣱ꣿꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀ꧥꨩ-ꨶꩃꩌꩍꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭ﬞ︀-️︠-︯",astral:"\ud800[\uddfd\udee0\udf76-\udf7a]|\ud802[\ude01-\ude03\ude05\ude06\ude0c-\ude0f\ude38-\ude3a\ude3f\udee5\udee6]|\ud803[\udd24-\udd27\udeab\udeac\udf46-\udf50\udf82-\udf85]|\ud804[\udc00-\udc02\udc38-\udc46\udc70\udc73\udc74\udc7f-\udc82\udcb0-\udcba\udcc2\udd00-\udd02\udd27-\udd34\udd45\udd46\udd73\udd80-\udd82\uddb3-\uddc0\uddc9-\uddcc\uddce\uddcf\ude2c-\ude37\ude3e\udedf-\udeea\udf00-\udf03\udf3b\udf3c\udf3e-\udf44\udf47\udf48\udf4b-\udf4d\udf57\udf62\udf63\udf66-\udf6c\udf70-\udf74]|\ud805[\udc35-\udc46\udc5e\udcb0-\udcc3\uddaf-\uddb5\uddb8-\uddc0\udddc\udddd\ude30-\ude40\udeab-\udeb7\udf1d-\udf2b]|\ud806[\udc2c-\udc3a\udd30-\udd35\udd37\udd38\udd3b-\udd3e\udd40\udd42\udd43\uddd1-\uddd7\uddda-\udde0\udde4\ude01-\ude0a\ude33-\ude39\ude3b-\ude3e\ude47\ude51-\ude5b\ude8a-\ude99]|\ud807[\udc2f-\udc36\udc38-\udc3f\udc92-\udca7\udca9-\udcb6\udd31-\udd36\udd3a\udd3c\udd3d\udd3f-\udd45\udd47\udd8a-\udd8e\udd90\udd91\udd93-\udd97\udef3-\udef6]|\ud81a[\udef0-\udef4\udf30-\udf36]|\ud81b[\udf4f\udf51-\udf87\udf8f-\udf92\udfe4\udff0\udff1]|\ud82f[\udc9d\udc9e]|\ud833[\udf00-\udf2d\udf30-\udf46]|\ud834[\udd65-\udd69\udd6d-\udd72\udd7b-\udd82\udd85-\udd8b\uddaa-\uddad\ude42-\ude44]|\ud836[\ude00-\ude36\ude3b-\ude6c\ude75\ude84\ude9b-\ude9f\udea1-\udeaf]|\ud838[\udc00-\udc06\udc08-\udc18\udc1b-\udc21\udc23\udc24\udc26-\udc2a\udd30-\udd36\udeae\udeec-\udeef]|\ud83a[\udcd0-\udcd6\udd44-\udd4a]|\udb40[\udd00-\uddef]"},{name:"Mc",alias:"Spacing_Mark",bmp:"ःऻा-ीॉ-ौॎॏংঃা-ীেৈোৌৗਃਾ-ੀઃા-ીૉોૌଂଃାୀେୈୋୌୗாிுூெ-ைொ-ௌௗఁ-ఃు-ౄಂಃಾೀ-ೄೇೈೊೋೕೖംഃാ-ീെ-ൈൊ-ൌൗංඃා-ෑෘ-ෟෲෳ༾༿ཿါာေးျြၖၗၢ-ၤၧ-ၭႃႄႇ-ႌႏႚ-ႜ᜕᜴ាើ-ៅះៈᤣ-ᤦᤩ-ᤫᤰᤱᤳ-ᤸᨙᨚᩕᩗᩡᩣᩤᩭ-ᩲᬄᬵᬻᬽ-ᭁᭃ᭄ᮂᮡᮦᮧ᮪ᯧᯪ-ᯬᯮ᯲᯳ᰤ-ᰫᰴᰵ᳡᳷〮〯ꠣꠤꠧꢀꢁꢴ-ꣃꥒ꥓ꦃꦴꦵꦺꦻꦾ-꧀ꨯꨰꨳꨴꩍꩻꩽꫫꫮꫯꫵꯣꯤꯦꯧꯩꯪ꯬",astral:"\ud804[\udc00\udc02\udc82\udcb0-\udcb2\udcb7\udcb8\udd2c\udd45\udd46\udd82\uddb3-\uddb5\uddbf\uddc0\uddce\ude2c-\ude2e\ude32\ude33\ude35\udee0-\udee2\udf02\udf03\udf3e\udf3f\udf41-\udf44\udf47\udf48\udf4b-\udf4d\udf57\udf62\udf63]|\ud805[\udc35-\udc37\udc40\udc41\udc45\udcb0-\udcb2\udcb9\udcbb-\udcbe\udcc1\uddaf-\uddb1\uddb8-\uddbb\uddbe\ude30-\ude32\ude3b\ude3c\ude3e\udeac\udeae\udeaf\udeb6\udf20\udf21\udf26]|\ud806[\udc2c-\udc2e\udc38\udd30-\udd35\udd37\udd38\udd3d\udd40\udd42\uddd1-\uddd3\udddc-\udddf\udde4\ude39\ude57\ude58\ude97]|\ud807[\udc2f\udc3e\udca9\udcb1\udcb4\udd8a-\udd8e\udd93\udd94\udd96\udef5\udef6]|\ud81b[\udf51-\udf87\udff0\udff1]|\ud834[\udd65\udd66\udd6d-\udd72]"},{name:"Me",alias:"Enclosing_Mark",bmp:"҈҉᪾⃝-⃠⃢-⃤꙰-꙲"},{name:"Mn",alias:"Nonspacing_Mark",bmp:"̀-ͯ҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-ٰٟۖ-ۜ۟-۪ۤۧۨ-ܑۭܰ-݊ަ-ް߫-߽߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛࢘-࢟࣊-ࣣ࣡-ंऺ़ु-ै्॑-ॗॢॣঁ়ু-ৄ্ৢৣ৾ਁਂ਼ੁੂੇੈੋ-੍ੑੰੱੵઁં઼ુ-ૅેૈ્ૢૣૺ-૿ଁ଼ିୁ-ୄ୍୕ୖୢୣஂீ்ఀఄ఼ా-ీె-ైొ-్ౕౖౢౣಁ಼ಿೆೌ್ೢೣഀഁ഻഼ു-ൄ്ൢൣඁ්ි-ුූัิ-ฺ็-๎ັິ-ຼ່-ໍཱ༹༘༙༵༷-ཾྀ-྄྆྇ྍ-ྗྙ-ྼ࿆ိ-ူဲ-့္်ွှၘၙၞ-ၠၱ-ၴႂႅႆႍႝ፝-፟ᜒ-᜔ᜲᜳᝒᝓᝲᝳ឴឵ិ-ួំ៉-៓៝᠋-᠍᠏ᢅᢆᢩᤠ-ᤢᤧᤨᤲ᤹-᤻ᨘᨗᨛᩖᩘ-ᩞ᩠ᩢᩥ-ᩬᩳ-᩿᩼᪰-᪽ᪿ-ᫎᬀ-ᬃ᬴ᬶ-ᬺᬼᭂ᭫-᭳ᮀᮁᮢ-ᮥᮨᮩ᮫-ᮭ᯦ᯨᯩᯭᯯ-ᯱᰬ-ᰳᰶ᰷᳐-᳔᳒-᳢᳠-᳨᳭᳴᳸᳹᷀-᷿⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〭꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠥꠦ꠬꣄ꣅ꣠-꣱ꣿꤦ-꤭ꥇ-ꥑꦀ-ꦂ꦳ꦶ-ꦹꦼꦽꧥꨩ-ꨮꨱꨲꨵꨶꩃꩌꩼꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫬꫭ꫶ꯥꯨ꯭ﬞ︀-️︠-︯",astral:"\ud800[\uddfd\udee0\udf76-\udf7a]|\ud802[\ude01-\ude03\ude05\ude06\ude0c-\ude0f\ude38-\ude3a\ude3f\udee5\udee6]|\ud803[\udd24-\udd27\udeab\udeac\udf46-\udf50\udf82-\udf85]|\ud804[\udc01\udc38-\udc46\udc70\udc73\udc74\udc7f-\udc81\udcb3-\udcb6\udcb9\udcba\udcc2\udd00-\udd02\udd27-\udd2b\udd2d-\udd34\udd73\udd80\udd81\uddb6-\uddbe\uddc9-\uddcc\uddcf\ude2f-\ude31\ude34\ude36\ude37\ude3e\udedf\udee3-\udeea\udf00\udf01\udf3b\udf3c\udf40\udf66-\udf6c\udf70-\udf74]|\ud805[\udc38-\udc3f\udc42-\udc44\udc46\udc5e\udcb3-\udcb8\udcba\udcbf\udcc0\udcc2\udcc3\uddb2-\uddb5\uddbc\uddbd\uddbf\uddc0\udddc\udddd\ude33-\ude3a\ude3d\ude3f\ude40\udeab\udead\udeb0-\udeb5\udeb7\udf1d-\udf1f\udf22-\udf25\udf27-\udf2b]|\ud806[\udc2f-\udc37\udc39\udc3a\udd3b\udd3c\udd3e\udd43\uddd4-\uddd7\uddda\udddb\udde0\ude01-\ude0a\ude33-\ude38\ude3b-\ude3e\ude47\ude51-\ude56\ude59-\ude5b\ude8a-\ude96\ude98\ude99]|\ud807[\udc30-\udc36\udc38-\udc3d\udc3f\udc92-\udca7\udcaa-\udcb0\udcb2\udcb3\udcb5\udcb6\udd31-\udd36\udd3a\udd3c\udd3d\udd3f-\udd45\udd47\udd90\udd91\udd95\udd97\udef3\udef4]|\ud81a[\udef0-\udef4\udf30-\udf36]|\ud81b[\udf4f\udf8f-\udf92\udfe4]|\ud82f[\udc9d\udc9e]|\ud833[\udf00-\udf2d\udf30-\udf46]|\ud834[\udd67-\udd69\udd7b-\udd82\udd85-\udd8b\uddaa-\uddad\ude42-\ude44]|\ud836[\ude00-\ude36\ude3b-\ude6c\ude75\ude84\ude9b-\ude9f\udea1-\udeaf]|\ud838[\udc00-\udc06\udc08-\udc18\udc1b-\udc21\udc23\udc24\udc26-\udc2a\udd30-\udd36\udeae\udeec-\udeef]|\ud83a[\udcd0-\udcd6\udd44-\udd4a]|\udb40[\udd00-\uddef]"},{name:"N",alias:"Number",bmp:"0-9²³¹¼-¾٠-٩۰-۹߀-߉०-९০-৯৴-৹੦-੯૦-૯୦-୯୲-୷௦-௲౦-౯౸-౾೦-೯൘-൞൦-൸෦-෯๐-๙໐-໙༠-༳၀-၉႐-႙፩-፼ᛮ-ᛰ០-៩៰-៹᠐-᠙᥆-᥏᧐-᧚᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙⁰⁴-⁹₀-₉⅐-ↂↅ-↉①-⒛⓪-⓿❶-➓⳽〇〡-〩〸-〺㆒-㆕㈠-㈩㉈-㉏㉑-㉟㊀-㊉㊱-㊿꘠-꘩ꛦ-ꛯ꠰-꠵꣐-꣙꤀-꤉꧐-꧙꧰-꧹꩐-꩙꯰-꯹0-9",astral:"\ud800[\udd07-\udd33\udd40-\udd78\udd8a\udd8b\udee1-\udefb\udf20-\udf23\udf41\udf4a\udfd1-\udfd5]|\ud801[\udca0-\udca9]|\ud802[\udc58-\udc5f\udc79-\udc7f\udca7-\udcaf\udcfb-\udcff\udd16-\udd1b\uddbc\uddbd\uddc0-\uddcf\uddd2-\uddff\ude40-\ude48\ude7d\ude7e\ude9d-\ude9f\udeeb-\udeef\udf58-\udf5f\udf78-\udf7f\udfa9-\udfaf]|\ud803[\udcfa-\udcff\udd30-\udd39\ude60-\ude7e\udf1d-\udf26\udf51-\udf54\udfc5-\udfcb]|\ud804[\udc52-\udc6f\udcf0-\udcf9\udd36-\udd3f\uddd0-\uddd9\udde1-\uddf4\udef0-\udef9]|\ud805[\udc50-\udc59\udcd0-\udcd9\ude50-\ude59\udec0-\udec9\udf30-\udf3b]|\ud806[\udce0-\udcf2\udd50-\udd59]|\ud807[\udc50-\udc6c\udd50-\udd59\udda0-\udda9\udfc0-\udfd4]|\ud809[\udc00-\udc6e]|\ud81a[\ude60-\ude69\udec0-\udec9\udf50-\udf59\udf5b-\udf61]|\ud81b[\ude80-\ude96]|\ud834[\udee0-\udef3\udf60-\udf78]|\ud835[\udfce-\udfff]|\ud838[\udd40-\udd49\udef0-\udef9]|\ud83a[\udcc7-\udccf\udd50-\udd59]|\ud83b[\udc71-\udcab\udcad-\udcaf\udcb1-\udcb4\udd01-\udd2d\udd2f-\udd3d]|\ud83c[\udd00-\udd0c]|\ud83e[\udff0-\udff9]"},{name:"Nd",alias:"Decimal_Number",bmp:"0-9٠-٩۰-۹߀-߉०-९০-৯੦-੯૦-૯୦-୯௦-௯౦-౯೦-೯൦-൯෦-෯๐-๙໐-໙༠-༩၀-၉႐-႙០-៩᠐-᠙᥆-᥏᧐-᧙᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙꘠-꘩꣐-꣙꤀-꤉꧐-꧙꧰-꧹꩐-꩙꯰-꯹0-9",astral:"\ud801[\udca0-\udca9]|\ud803[\udd30-\udd39]|\ud804[\udc66-\udc6f\udcf0-\udcf9\udd36-\udd3f\uddd0-\uddd9\udef0-\udef9]|\ud805[\udc50-\udc59\udcd0-\udcd9\ude50-\ude59\udec0-\udec9\udf30-\udf39]|\ud806[\udce0-\udce9\udd50-\udd59]|\ud807[\udc50-\udc59\udd50-\udd59\udda0-\udda9]|\ud81a[\ude60-\ude69\udec0-\udec9\udf50-\udf59]|\ud835[\udfce-\udfff]|\ud838[\udd40-\udd49\udef0-\udef9]|\ud83a[\udd50-\udd59]|\ud83e[\udff0-\udff9]"},{name:"Nl",alias:"Letter_Number",bmp:"ᛮ-ᛰⅠ-ↂↅ-ↈ〇〡-〩〸-〺ꛦ-ꛯ",astral:"\ud800[\udd40-\udd74\udf41\udf4a\udfd1-\udfd5]|\ud809[\udc00-\udc6e]"},{name:"No",alias:"Other_Number",bmp:"²³¹¼-¾৴-৹୲-୷௰-௲౸-౾൘-൞൰-൸༪-༳፩-፼៰-៹᧚⁰⁴-⁹₀-₉⅐-⅟↉①-⒛⓪-⓿❶-➓⳽㆒-㆕㈠-㈩㉈-㉏㉑-㉟㊀-㊉㊱-㊿꠰-꠵",astral:"\ud800[\udd07-\udd33\udd75-\udd78\udd8a\udd8b\udee1-\udefb\udf20-\udf23]|\ud802[\udc58-\udc5f\udc79-\udc7f\udca7-\udcaf\udcfb-\udcff\udd16-\udd1b\uddbc\uddbd\uddc0-\uddcf\uddd2-\uddff\ude40-\ude48\ude7d\ude7e\ude9d-\ude9f\udeeb-\udeef\udf58-\udf5f\udf78-\udf7f\udfa9-\udfaf]|\ud803[\udcfa-\udcff\ude60-\ude7e\udf1d-\udf26\udf51-\udf54\udfc5-\udfcb]|\ud804[\udc52-\udc65\udde1-\uddf4]|\ud805[\udf3a\udf3b]|\ud806[\udcea-\udcf2]|\ud807[\udc5a-\udc6c\udfc0-\udfd4]|\ud81a[\udf5b-\udf61]|\ud81b[\ude80-\ude96]|\ud834[\udee0-\udef3\udf60-\udf78]|\ud83a[\udcc7-\udccf]|\ud83b[\udc71-\udcab\udcad-\udcaf\udcb1-\udcb4\udd01-\udd2d\udd2f-\udd3d]|\ud83c[\udd00-\udd0c]"},{name:"P",alias:"Punctuation",bmp:"!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}¡§«¶·»¿;·՚-՟։֊־׀׃׆׳״؉؊،؍؛؝-؟٪-٭۔܀-܍߷-߹࠰-࠾࡞।॥॰৽੶૰౷಄෴๏๚๛༄-༒༔༺-༽྅࿐-࿔࿙࿚၊-၏჻፠-፨᐀᙮᚛᚜᛫-᛭᜵᜶។-៖៘-៚᠀-᠊᥄᥅᨞᨟᪠-᪦᪨-᪭᭚-᭠᭽᭾᯼-᯿᰻-᰿᱾᱿᳀-᳇᳓‐-‧‰-⁃⁅-⁑⁓-⁞⁽⁾₍₎⌈-⌋〈〉❨-❵⟅⟆⟦-⟯⦃-⦘⧘-⧛⧼⧽⳹-⳼⳾⳿⵰⸀-⸮⸰-⹏⹒-⹝、-〃〈-】〔-〟〰〽゠・꓾꓿꘍-꘏꙳꙾꛲-꛷꡴-꡷꣎꣏꣸-꣺꣼꤮꤯꥟꧁-꧍꧞꧟꩜-꩟꫞꫟꫰꫱꯫﴾﴿︐-︙︰-﹒﹔-﹡﹣﹨﹪﹫!-#%-*,-/:;?@[-]_{}⦅-・",astral:"\ud800[\udd00-\udd02\udf9f\udfd0]|𐕯|\ud802[\udc57\udd1f\udd3f\ude50-\ude58\ude7f\udef0-\udef6\udf39-\udf3f\udf99-\udf9c]|\ud803[\udead\udf55-\udf59\udf86-\udf89]|\ud804[\udc47-\udc4d\udcbb\udcbc\udcbe-\udcc1\udd40-\udd43\udd74\udd75\uddc5-\uddc8\uddcd\udddb\udddd-\udddf\ude38-\ude3d\udea9]|\ud805[\udc4b-\udc4f\udc5a\udc5b\udc5d\udcc6\uddc1-\uddd7\ude41-\ude43\ude60-\ude6c\udeb9\udf3c-\udf3e]|\ud806[\udc3b\udd44-\udd46\udde2\ude3f-\ude46\ude9a-\ude9c\ude9e-\udea2]|\ud807[\udc41-\udc45\udc70\udc71\udef7\udef8\udfff]|\ud809[\udc70-\udc74]|\ud80b[\udff1\udff2]|\ud81a[\ude6e\ude6f\udef5\udf37-\udf3b\udf44]|\ud81b[\ude97-\ude9a\udfe2]|𛲟|\ud836[\ude87-\ude8b]|\ud83a[\udd5e\udd5f]"},{name:"Pc",alias:"Connector_Punctuation",bmp:"_‿⁀⁔︳︴﹍-﹏_"},{name:"Pd",alias:"Dash_Punctuation",bmp:"\\-֊־᐀᠆‐-―⸗⸚⸺⸻⹀⹝〜〰゠︱︲﹘﹣-",astral:"𐺭"},{name:"Pe",alias:"Close_Punctuation",bmp:"\\)\\]\\}༻༽᚜⁆⁾₎⌉⌋〉❩❫❭❯❱❳❵⟆⟧⟩⟫⟭⟯⦄⦆⦈⦊⦌⦎⦐⦒⦔⦖⦘⧙⧛⧽⸣⸥⸧⸩⹖⹘⹚⹜〉》」』】〕〗〙〛〞〟﴾︘︶︸︺︼︾﹀﹂﹄﹈﹚﹜﹞)]}⦆」"},{name:"Pf",alias:"Final_Punctuation",bmp:"»’”›⸃⸅⸊⸍⸝⸡"},{name:"Pi",alias:"Initial_Punctuation",bmp:"«‘‛“‟‹⸂⸄⸉⸌⸜⸠"},{name:"Po",alias:"Other_Punctuation",bmp:"!-#%-'\\*,\\.\\/:;\\?@\\¡§¶·¿;·՚-՟։׀׃׆׳״؉؊،؍؛؝-؟٪-٭۔܀-܍߷-߹࠰-࠾࡞।॥॰৽੶૰౷಄෴๏๚๛༄-༒༔྅࿐-࿔࿙࿚၊-၏჻፠-፨᙮᛫-᛭᜵᜶។-៖៘-៚᠀-᠅᠇-᠊᥄᥅᨞᨟᪠-᪦᪨-᪭᭚-᭠᭽᭾᯼-᯿᰻-᰿᱾᱿᳀-᳇᳓‖‗†-‧‰-‸※-‾⁁-⁃⁇-⁑⁓⁕-⁞⳹-⳼⳾⳿⵰⸀⸁⸆-⸈⸋⸎-⸖⸘⸙⸛⸞⸟⸪-⸮⸰-⸹⸼-⸿⹁⹃-⹏⹒-⹔、-〃〽・꓾꓿꘍-꘏꙳꙾꛲-꛷꡴-꡷꣎꣏꣸-꣺꣼꤮꤯꥟꧁-꧍꧞꧟꩜-꩟꫞꫟꫰꫱꯫︐-︖︙︰﹅﹆﹉-﹌﹐-﹒﹔-﹗﹟-﹡﹨﹪﹫!-#%-'*,./:;?@\。、・",astral:"\ud800[\udd00-\udd02\udf9f\udfd0]|𐕯|\ud802[\udc57\udd1f\udd3f\ude50-\ude58\ude7f\udef0-\udef6\udf39-\udf3f\udf99-\udf9c]|\ud803[\udf55-\udf59\udf86-\udf89]|\ud804[\udc47-\udc4d\udcbb\udcbc\udcbe-\udcc1\udd40-\udd43\udd74\udd75\uddc5-\uddc8\uddcd\udddb\udddd-\udddf\ude38-\ude3d\udea9]|\ud805[\udc4b-\udc4f\udc5a\udc5b\udc5d\udcc6\uddc1-\uddd7\ude41-\ude43\ude60-\ude6c\udeb9\udf3c-\udf3e]|\ud806[\udc3b\udd44-\udd46\udde2\ude3f-\ude46\ude9a-\ude9c\ude9e-\udea2]|\ud807[\udc41-\udc45\udc70\udc71\udef7\udef8\udfff]|\ud809[\udc70-\udc74]|\ud80b[\udff1\udff2]|\ud81a[\ude6e\ude6f\udef5\udf37-\udf3b\udf44]|\ud81b[\ude97-\ude9a\udfe2]|𛲟|\ud836[\ude87-\ude8b]|\ud83a[\udd5e\udd5f]"},{name:"Ps",alias:"Open_Punctuation",bmp:"\\(\\[\\{༺༼᚛‚„⁅⁽₍⌈⌊〈❨❪❬❮❰❲❴⟅⟦⟨⟪⟬⟮⦃⦅⦇⦉⦋⦍⦏⦑⦓⦕⦗⧘⧚⧼⸢⸤⸦⸨⹂⹕⹗⹙⹛〈《「『【〔〖〘〚〝﴿︗︵︷︹︻︽︿﹁﹃﹇﹙﹛﹝([{⦅「"},{name:"S",alias:"Symbol",bmp:"\\$\\+<->\\^`\\|~¢-¦¨©¬®-±´¸×÷˂-˅˒-˟˥-˫˭˯-˿͵΄΅϶҂֍-֏؆-؈؋؎؏۞۩۽۾߶߾߿࢈৲৳৺৻૱୰௳-௺౿൏൹฿༁-༃༓༕-༗༚-༟༴༶༸྾-࿅࿇-࿌࿎࿏࿕-࿘႞႟᎐-᎙᙭៛᥀᧞-᧿᭡-᭪᭴-᭼᾽᾿-῁῍-῏῝-῟῭-`´῾⁄⁒⁺-⁼₊-₌₠-⃀℀℁℃-℆℈℉℔№-℘℞-℣℥℧℩℮℺℻⅀-⅄⅊-⅍⅏↊↋←-⌇⌌-⌨⌫-␦⑀-⑊⒜-ⓩ─-❧➔-⟄⟇-⟥⟰-⦂⦙-⧗⧜-⧻⧾-⭳⭶-⮕⮗-⯿⳥-⳪⹐⹑⺀-⺙⺛-⻳⼀-⿕⿰-⿻〄〒〓〠〶〷〾〿゛゜㆐㆑㆖-㆟㇀-㇣㈀-㈞㈪-㉇㉐㉠-㉿㊊-㊰㋀-㏿䷀-䷿꒐-꓆꜀-꜖꜠꜡꞉꞊꠨-꠫꠶-꠹꩷-꩹꭛꭪꭫﬩﮲-﯂﵀-﵏﷏﷼-﷿﹢﹤-﹦﹩$+<->^`|~¢-₩│-○�",astral:"\ud800[\udd37-\udd3f\udd79-\udd89\udd8c-\udd8e\udd90-\udd9c\udda0\uddd0-\uddfc]|\ud802[\udc77\udc78\udec8]|𑜿|\ud807[\udfd5-\udff1]|\ud81a[\udf3c-\udf3f\udf45]|𛲜|\ud833[\udf50-\udfc3]|\ud834[\udc00-\udcf5\udd00-\udd26\udd29-\udd64\udd6a-\udd6c\udd83\udd84\udd8c-\udda9\uddae-\uddea\ude00-\ude41\ude45\udf00-\udf56]|\ud835[\udec1\udedb\udefb\udf15\udf35\udf4f\udf6f\udf89\udfa9\udfc3]|\ud836[\udc00-\uddff\ude37-\ude3a\ude6d-\ude74\ude76-\ude83\ude85\ude86]|\ud838[\udd4f\udeff]|\ud83b[\udcac\udcb0\udd2e\udef0\udef1]|\ud83c[\udc00-\udc2b\udc30-\udc93\udca0-\udcae\udcb1-\udcbf\udcc1-\udccf\udcd1-\udcf5\udd0d-\uddad\udde6-\ude02\ude10-\ude3b\ude40-\ude48\ude50\ude51\ude60-\ude65\udf00-\udfff]|\ud83d[\udc00-\uded7\udedd-\udeec\udef0-\udefc\udf00-\udf73\udf80-\udfd8\udfe0-\udfeb\udff0]|\ud83e[\udc00-\udc0b\udc10-\udc47\udc50-\udc59\udc60-\udc87\udc90-\udcad\udcb0\udcb1\udd00-\ude53\ude60-\ude6d\ude70-\ude74\ude78-\ude7c\ude80-\ude86\ude90-\udeac\udeb0-\udeba\udec0-\udec5\uded0-\uded9\udee0-\udee7\udef0-\udef6\udf00-\udf92\udf94-\udfca]"},{name:"Sc",alias:"Currency_Symbol",bmp:"\\$¢-¥֏؋߾߿৲৳৻૱௹฿៛₠-⃀꠸﷼﹩$¢£¥₩",astral:"\ud807[\udfdd-\udfe0]|𞋿|𞲰"},{name:"Sk",alias:"Modifier_Symbol",bmp:"\\^`¨¯´¸˂-˅˒-˟˥-˫˭˯-˿͵΄΅࢈᾽᾿-῁῍-῏῝-῟῭-`´῾゛゜꜀-꜖꜠꜡꞉꞊꭛꭪꭫﮲-﯂^` ̄",astral:"\ud83c[\udffb-\udfff]"},{name:"Sm",alias:"Math_Symbol",bmp:"\\+<->\\|~¬±×÷϶؆-؈⁄⁒⁺-⁼₊-₌℘⅀-⅄⅋←-↔↚↛↠↣↦↮⇎⇏⇒⇔⇴-⋿⌠⌡⍼⎛-⎳⏜-⏡▷◁◸-◿♯⟀-⟄⟇-⟥⟰-⟿⤀-⦂⦙-⧗⧜-⧻⧾-⫿⬰-⭄⭇-⭌﬩﹢﹤-﹦+<->|~¬←-↓",astral:"\ud835[\udec1\udedb\udefb\udf15\udf35\udf4f\udf6f\udf89\udfa9\udfc3]|\ud83b[\udef0\udef1]"},{name:"So",alias:"Other_Symbol",bmp:"¦©®°҂֍֎؎؏۞۩۽۾߶৺୰௳-௸௺౿൏൹༁-༃༓༕-༗༚-༟༴༶༸྾-࿅࿇-࿌࿎࿏࿕-࿘႞႟᎐-᎙᙭᥀᧞-᧿᭡-᭪᭴-᭼℀℁℃-℆℈℉℔№℗℞-℣℥℧℩℮℺℻⅊⅌⅍⅏↊↋↕-↙↜-↟↡↢↤↥↧-↭↯-⇍⇐⇑⇓⇕-⇳⌀-⌇⌌-⌟⌢-⌨⌫-⍻⍽-⎚⎴-⏛⏢-␦⑀-⑊⒜-ⓩ─-▶▸-◀◂-◷☀-♮♰-❧➔-➿⠀-⣿⬀-⬯⭅⭆⭍-⭳⭶-⮕⮗-⯿⳥-⳪⹐⹑⺀-⺙⺛-⻳⼀-⿕⿰-⿻〄〒〓〠〶〷〾〿㆐㆑㆖-㆟㇀-㇣㈀-㈞㈪-㉇㉐㉠-㉿㊊-㊰㋀-㏿䷀-䷿꒐-꓆꠨-꠫꠶꠷꠹꩷-꩹﵀-﵏﷏﷽-﷿¦│■○�",astral:"\ud800[\udd37-\udd3f\udd79-\udd89\udd8c-\udd8e\udd90-\udd9c\udda0\uddd0-\uddfc]|\ud802[\udc77\udc78\udec8]|𑜿|\ud807[\udfd5-\udfdc\udfe1-\udff1]|\ud81a[\udf3c-\udf3f\udf45]|𛲜|\ud833[\udf50-\udfc3]|\ud834[\udc00-\udcf5\udd00-\udd26\udd29-\udd64\udd6a-\udd6c\udd83\udd84\udd8c-\udda9\uddae-\uddea\ude00-\ude41\ude45\udf00-\udf56]|\ud836[\udc00-\uddff\ude37-\ude3a\ude6d-\ude74\ude76-\ude83\ude85\ude86]|𞅏|\ud83b[\udcac\udd2e]|\ud83c[\udc00-\udc2b\udc30-\udc93\udca0-\udcae\udcb1-\udcbf\udcc1-\udccf\udcd1-\udcf5\udd0d-\uddad\udde6-\ude02\ude10-\ude3b\ude40-\ude48\ude50\ude51\ude60-\ude65\udf00-\udffa]|\ud83d[\udc00-\uded7\udedd-\udeec\udef0-\udefc\udf00-\udf73\udf80-\udfd8\udfe0-\udfeb\udff0]|\ud83e[\udc00-\udc0b\udc10-\udc47\udc50-\udc59\udc60-\udc87\udc90-\udcad\udcb0\udcb1\udd00-\ude53\ude60-\ude6d\ude70-\ude74\ude78-\ude7c\ude80-\ude86\ude90-\udeac\udeb0-\udeba\udec0-\udec5\uded0-\uded9\udee0-\udee7\udef0-\udef6\udf00-\udf92\udf94-\udfca]"},{name:"Z",alias:"Separator",bmp:"    - \u2028\u2029   "},{name:"Zl",alias:"Line_Separator",bmp:"\u2028"},{name:"Zp",alias:"Paragraph_Separator",bmp:"\u2029"},{name:"Zs",alias:"Space_Separator",bmp:"    -    "}]},88477:e=>{e.exports=[{name:"ASCII",bmp:"\0-"},{name:"Alphabetic",bmp:"A-Za-zªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͅͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙՠ-ֈְ-ׇֽֿׁׂׅׄא-תׯ-ײؐ-ؚؠ-ٗٙ-ٟٮ-ۓە-ۜۡ-ۭۨ-ۯۺ-ۼۿܐ-ܿݍ-ޱߊ-ߪߴߵߺࠀ-ࠗࠚ-ࠬࡀ-ࡘࡠ-ࡪࡰ-ࢇࢉ-ࢎࢠ-ࣉࣔ-ࣣࣟ-ࣰࣩ-ऻऽ-ौॎ-ॐॕ-ॣॱ-ঃঅ-ঌএঐও-নপ-রলশ-হঽ-ৄেৈোৌৎৗড়ঢ়য়-ৣৰৱৼਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਾ-ੂੇੈੋੌੑਖ਼-ੜਫ਼ੰ-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽ-ૅે-ૉોૌૐૠ-ૣૹ-ૼଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽ-ୄେୈୋୌୖୗଡ଼ଢ଼ୟ-ୣୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-ௌௐௗఀ-ఃఅ-ఌఎ-ఐఒ-నప-హఽ-ౄె-ైొ-ౌౕౖౘ-ౚౝౠ-ౣಀ-ಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽ-ೄೆ-ೈೊ-ೌೕೖೝೞೠ-ೣೱೲഀ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൌൎൔ-ൗൟ-ൣൺ-ൿඁ-ඃඅ-ඖක-නඳ-රලව-ෆා-ුූෘ-ෟෲෳก-ฺเ-ๆํກຂຄຆ-ຊຌ-ຣລວ-ູົ-ຽເ-ໄໆໍໜ-ໟༀཀ-ཇཉ-ཬཱ-ཱྀྈ-ྗྙ-ྼက-ံးျ-ဿၐ-ႏႚ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜓᜟ-ᜳᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-ឳា-ៈៗៜᠠ-ᡸᢀ-ᢪᢰ-ᣵᤀ-ᤞᤠ-ᤫᤰ-ᤸᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨛᨠ-ᩞᩡ-ᩴᪧᪿᫀᫌ-ᫎᬀ-ᬳᬵ-ᭃᭅ-ᭌᮀ-ᮩᮬ-ᮯᮺ-ᯥᯧ-ᯱᰀ-ᰶᱍ-ᱏᱚ-ᱽᲀ-ᲈᲐ-ᲺᲽ-Ჿᳩ-ᳬᳮ-ᳳᳵᳶᳺᴀ-ᶿᷧ-ᷴḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⒶ-ⓩⰀ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄯㄱ-ㆎㆠ-ㆿㇰ-ㇿ㐀-䶿一-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙴ-ꙻꙿ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꟊꟐꟑꟓꟕ-ꟙꟲ-ꠅꠇ-ꠧꡀ-ꡳꢀ-ꣃꣅꣲ-ꣷꣻꣽ-ꣿꤊ-ꤪꤰ-ꥒꥠ-ꥼꦀ-ꦲꦴ-ꦿꧏꧠ-ꧯꧺ-ꧾꨀ-ꨶꩀ-ꩍꩠ-ꩶꩺ-ꪾꫀꫂꫛ-ꫝꫠ-ꫯꫲ-ꫵꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭩꭰ-ꯪ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",astral:"\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa\udd40-\udd74\ude80-\ude9c\udea0-\uded0\udf00-\udf1f\udf2d-\udf4a\udf50-\udf7a\udf80-\udf9d\udfa0-\udfc3\udfc8-\udfcf\udfd1-\udfd5]|\ud801[\udc00-\udc9d\udcb0-\udcd3\udcd8-\udcfb\udd00-\udd27\udd30-\udd63\udd70-\udd7a\udd7c-\udd8a\udd8c-\udd92\udd94\udd95\udd97-\udda1\udda3-\uddb1\uddb3-\uddb9\uddbb\uddbc\ude00-\udf36\udf40-\udf55\udf60-\udf67\udf80-\udf85\udf87-\udfb0\udfb2-\udfba]|\ud802[\udc00-\udc05\udc08\udc0a-\udc35\udc37\udc38\udc3c\udc3f-\udc55\udc60-\udc76\udc80-\udc9e\udce0-\udcf2\udcf4\udcf5\udd00-\udd15\udd20-\udd39\udd80-\uddb7\uddbe\uddbf\ude00-\ude03\ude05\ude06\ude0c-\ude13\ude15-\ude17\ude19-\ude35\ude60-\ude7c\ude80-\ude9c\udec0-\udec7\udec9-\udee4\udf00-\udf35\udf40-\udf55\udf60-\udf72\udf80-\udf91]|\ud803[\udc00-\udc48\udc80-\udcb2\udcc0-\udcf2\udd00-\udd27\ude80-\udea9\udeab\udeac\udeb0\udeb1\udf00-\udf1c\udf27\udf30-\udf45\udf70-\udf81\udfb0-\udfc4\udfe0-\udff6]|\ud804[\udc00-\udc45\udc71-\udc75\udc82-\udcb8\udcc2\udcd0-\udce8\udd00-\udd32\udd44-\udd47\udd50-\udd72\udd76\udd80-\uddbf\uddc1-\uddc4\uddce\uddcf\uddda\udddc\ude00-\ude11\ude13-\ude34\ude37\ude3e\ude80-\ude86\ude88\ude8a-\ude8d\ude8f-\ude9d\ude9f-\udea8\udeb0-\udee8\udf00-\udf03\udf05-\udf0c\udf0f\udf10\udf13-\udf28\udf2a-\udf30\udf32\udf33\udf35-\udf39\udf3d-\udf44\udf47\udf48\udf4b\udf4c\udf50\udf57\udf5d-\udf63]|\ud805[\udc00-\udc41\udc43-\udc45\udc47-\udc4a\udc5f-\udc61\udc80-\udcc1\udcc4\udcc5\udcc7\udd80-\uddb5\uddb8-\uddbe\uddd8-\udddd\ude00-\ude3e\ude40\ude44\ude80-\udeb5\udeb8\udf00-\udf1a\udf1d-\udf2a\udf40-\udf46]|\ud806[\udc00-\udc38\udca0-\udcdf\udcff-\udd06\udd09\udd0c-\udd13\udd15\udd16\udd18-\udd35\udd37\udd38\udd3b\udd3c\udd3f-\udd42\udda0-\udda7\uddaa-\uddd7\uddda-\udddf\udde1\udde3\udde4\ude00-\ude32\ude35-\ude3e\ude50-\ude97\ude9d\udeb0-\udef8]|\ud807[\udc00-\udc08\udc0a-\udc36\udc38-\udc3e\udc40\udc72-\udc8f\udc92-\udca7\udca9-\udcb6\udd00-\udd06\udd08\udd09\udd0b-\udd36\udd3a\udd3c\udd3d\udd3f-\udd41\udd43\udd46\udd47\udd60-\udd65\udd67\udd68\udd6a-\udd8e\udd90\udd91\udd93-\udd96\udd98\udee0-\udef6\udfb0]|\ud808[\udc00-\udf99]|\ud809[\udc00-\udc6e\udc80-\udd43]|\ud80b[\udf90-\udff0]|[\ud80c\ud81c-\ud820\ud822\ud840-\ud868\ud86a-\ud86c\ud86f-\ud872\ud874-\ud879\ud880-\ud883][\udc00-\udfff]|\ud80d[\udc00-\udc2e]|\ud811[\udc00-\ude46]|\ud81a[\udc00-\ude38\ude40-\ude5e\ude70-\udebe\uded0-\udeed\udf00-\udf2f\udf40-\udf43\udf63-\udf77\udf7d-\udf8f]|\ud81b[\ude40-\ude7f\udf00-\udf4a\udf4f-\udf87\udf8f-\udf9f\udfe0\udfe1\udfe3\udff0\udff1]|\ud821[\udc00-\udff7]|\ud823[\udc00-\udcd5\udd00-\udd08]|\ud82b[\udff0-\udff3\udff5-\udffb\udffd\udffe]|\ud82c[\udc00-\udd22\udd50-\udd52\udd64-\udd67\udd70-\udefb]|\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99\udc9e]|\ud835[\udc00-\udc54\udc56-\udc9c\udc9e\udc9f\udca2\udca5\udca6\udca9-\udcac\udcae-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd1e-\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd52-\udea5\udea8-\udec0\udec2-\udeda\udedc-\udefa\udefc-\udf14\udf16-\udf34\udf36-\udf4e\udf50-\udf6e\udf70-\udf88\udf8a-\udfa8\udfaa-\udfc2\udfc4-\udfcb]|\ud837[\udf00-\udf1e]|\ud838[\udc00-\udc06\udc08-\udc18\udc1b-\udc21\udc23\udc24\udc26-\udc2a\udd00-\udd2c\udd37-\udd3d\udd4e\ude90-\udead\udec0-\udeeb]|\ud839[\udfe0-\udfe6\udfe8-\udfeb\udfed\udfee\udff0-\udffe]|\ud83a[\udc00-\udcc4\udd00-\udd43\udd47\udd4b]|\ud83b[\ude00-\ude03\ude05-\ude1f\ude21\ude22\ude24\ude27\ude29-\ude32\ude34-\ude37\ude39\ude3b\ude42\ude47\ude49\ude4b\ude4d-\ude4f\ude51\ude52\ude54\ude57\ude59\ude5b\ude5d\ude5f\ude61\ude62\ude64\ude67-\ude6a\ude6c-\ude72\ude74-\ude77\ude79-\ude7c\ude7e\ude80-\ude89\ude8b-\ude9b\udea1-\udea3\udea5-\udea9\udeab-\udebb]|\ud83c[\udd30-\udd49\udd50-\udd69\udd70-\udd89]|\ud869[\udc00-\udedf\udf00-\udfff]|\ud86d[\udc00-\udf38\udf40-\udfff]|\ud86e[\udc00-\udc1d\udc20-\udfff]|\ud873[\udc00-\udea1\udeb0-\udfff]|\ud87a[\udc00-\udfe0]|\ud87e[\udc00-\ude1d]|\ud884[\udc00-\udf4a]"},{name:"Any",isBmpLast:!0,bmp:"\0-￿",astral:"[\ud800-\udbff][\udc00-\udfff]"},{name:"Default_Ignorable_Code_Point",bmp:"­͏؜ᅟᅠ឴឵᠋-᠏​-‏‪-‮⁠-ㅤ︀-️\ufeffᅠ￰-￸",astral:"\ud82f[\udca0-\udca3]|\ud834[\udd73-\udd7a]|[\udb40-\udb43][\udc00-\udfff]"},{name:"Lowercase",bmp:"a-zªµºß-öø-ÿāăąćĉċčďđēĕėęěĝğġģĥħĩīĭįıijĵķĸĺļľŀłńņňʼnŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷźżž-ƀƃƅƈƌƍƒƕƙ-ƛƞơƣƥƨƪƫƭưƴƶƹƺƽ-ƿdžljnjǎǐǒǔǖǘǚǜǝǟǡǣǥǧǩǫǭǯǰdzǵǹǻǽǿȁȃȅȇȉȋȍȏȑȓȕȗșțȝȟȡȣȥȧȩȫȭȯȱȳ-ȹȼȿɀɂɇɉɋɍɏ-ʓʕ-ʸˀˁˠ-ˤͅͱͳͷͺ-ͽΐά-ώϐϑϕ-ϗϙϛϝϟϡϣϥϧϩϫϭϯ-ϳϵϸϻϼа-џѡѣѥѧѩѫѭѯѱѳѵѷѹѻѽѿҁҋҍҏґғҕҗҙқҝҟҡңҥҧҩҫҭүұҳҵҷҹһҽҿӂӄӆӈӊӌӎӏӑӓӕӗәӛӝӟӡӣӥӧөӫӭӯӱӳӵӷӹӻӽӿԁԃԅԇԉԋԍԏԑԓԕԗԙԛԝԟԡԣԥԧԩԫԭԯՠ-ֈა-ჺჽ-ჿᏸ-ᏽᲀ-ᲈᴀ-ᶿḁḃḅḇḉḋḍḏḑḓḕḗḙḛḝḟḡḣḥḧḩḫḭḯḱḳḵḷḹḻḽḿṁṃṅṇṉṋṍṏṑṓṕṗṙṛṝṟṡṣṥṧṩṫṭṯṱṳṵṷṹṻṽṿẁẃẅẇẉẋẍẏẑẓẕ-ẝẟạảấầẩẫậắằẳẵặẹẻẽếềểễệỉịọỏốồổỗộớờởỡợụủứừửữựỳỵỷỹỻỽỿ-ἇἐ-ἕἠ-ἧἰ-ἷὀ-ὅὐ-ὗὠ-ὧὰ-ώᾀ-ᾇᾐ-ᾗᾠ-ᾧᾰ-ᾴᾶᾷιῂ-ῄῆῇῐ-ΐῖῗῠ-ῧῲ-ῴῶῷⁱⁿₐ-ₜℊℎℏℓℯℴℹℼℽⅆ-ⅉⅎⅰ-ⅿↄⓐ-ⓩⰰ-ⱟⱡⱥⱦⱨⱪⱬⱱⱳⱴⱶ-ⱽⲁⲃⲅⲇⲉⲋⲍⲏⲑⲓⲕⲗⲙⲛⲝⲟⲡⲣⲥⲧⲩⲫⲭⲯⲱⲳⲵⲷⲹⲻⲽⲿⳁⳃⳅⳇⳉⳋⳍⳏⳑⳓⳕⳗⳙⳛⳝⳟⳡⳣⳤⳬⳮⳳⴀ-ⴥⴧⴭꙁꙃꙅꙇꙉꙋꙍꙏꙑꙓꙕꙗꙙꙛꙝꙟꙡꙣꙥꙧꙩꙫꙭꚁꚃꚅꚇꚉꚋꚍꚏꚑꚓꚕꚗꚙꚛ-ꚝꜣꜥꜧꜩꜫꜭꜯ-ꜱꜳꜵꜷꜹꜻꜽꜿꝁꝃꝅꝇꝉꝋꝍꝏꝑꝓꝕꝗꝙꝛꝝꝟꝡꝣꝥꝧꝩꝫꝭꝯ-ꝸꝺꝼꝿꞁꞃꞅꞇꞌꞎꞑꞓ-ꞕꞗꞙꞛꞝꞟꞡꞣꞥꞧꞩꞯꞵꞷꞹꞻꞽꞿꟁꟃꟈꟊꟑꟓꟕꟗꟙꟶꟸ-ꟺꬰ-ꭚꭜ-ꭨꭰ-ꮿff-stﬓ-ﬗa-z",astral:"\ud801[\udc28-\udc4f\udcd8-\udcfb\udd97-\udda1\udda3-\uddb1\uddb3-\uddb9\uddbb\uddbc\udf80\udf83-\udf85\udf87-\udfb0\udfb2-\udfba]|\ud803[\udcc0-\udcf2]|\ud806[\udcc0-\udcdf]|\ud81b[\ude60-\ude7f]|\ud835[\udc1a-\udc33\udc4e-\udc54\udc56-\udc67\udc82-\udc9b\udcb6-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udccf\udcea-\udd03\udd1e-\udd37\udd52-\udd6b\udd86-\udd9f\uddba-\uddd3\uddee-\ude07\ude22-\ude3b\ude56-\ude6f\ude8a-\udea5\udec2-\udeda\udedc-\udee1\udefc-\udf14\udf16-\udf1b\udf36-\udf4e\udf50-\udf55\udf70-\udf88\udf8a-\udf8f\udfaa-\udfc2\udfc4-\udfc9\udfcb]|\ud837[\udf00-\udf09\udf0b-\udf1e]|\ud83a[\udd22-\udd43]"},{name:"Noncharacter_Code_Point",bmp:"﷐-﷯￾￿",astral:"[\ud83f\ud87f\ud8bf\ud8ff\ud93f\ud97f\ud9bf\ud9ff\uda3f\uda7f\udabf\udaff\udb3f\udb7f\udbbf\udbff][\udffe\udfff]"},{name:"Uppercase",bmp:"A-ZÀ-ÖØ-ÞĀĂĄĆĈĊČĎĐĒĔĖĘĚĜĞĠĢĤĦĨĪĬĮİIJĴĶĹĻĽĿŁŃŅŇŊŌŎŐŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŸŹŻŽƁƂƄƆƇƉ-ƋƎ-ƑƓƔƖ-ƘƜƝƟƠƢƤƦƧƩƬƮƯƱ-ƳƵƷƸƼDŽLJNJǍǏǑǓǕǗǙǛǞǠǢǤǦǨǪǬǮDZǴǶ-ǸǺǼǾȀȂȄȆȈȊȌȎȐȒȔȖȘȚȜȞȠȢȤȦȨȪȬȮȰȲȺȻȽȾɁɃ-ɆɈɊɌɎͰͲͶͿΆΈ-ΊΌΎΏΑ-ΡΣ-ΫϏϒ-ϔϘϚϜϞϠϢϤϦϨϪϬϮϴϷϹϺϽ-ЯѠѢѤѦѨѪѬѮѰѲѴѶѸѺѼѾҀҊҌҎҐҒҔҖҘҚҜҞҠҢҤҦҨҪҬҮҰҲҴҶҸҺҼҾӀӁӃӅӇӉӋӍӐӒӔӖӘӚӜӞӠӢӤӦӨӪӬӮӰӲӴӶӸӺӼӾԀԂԄԆԈԊԌԎԐԒԔԖԘԚԜԞԠԢԤԦԨԪԬԮԱ-ՖႠ-ჅჇჍᎠ-ᏵᲐ-ᲺᲽ-ᲿḀḂḄḆḈḊḌḎḐḒḔḖḘḚḜḞḠḢḤḦḨḪḬḮḰḲḴḶḸḺḼḾṀṂṄṆṈṊṌṎṐṒṔṖṘṚṜṞṠṢṤṦṨṪṬṮṰṲṴṶṸṺṼṾẀẂẄẆẈẊẌẎẐẒẔẞẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼẾỀỂỄỆỈỊỌỎỐỒỔỖỘỚỜỞỠỢỤỦỨỪỬỮỰỲỴỶỸỺỼỾἈ-ἏἘ-ἝἨ-ἯἸ-ἿὈ-ὍὙὛὝὟὨ-ὯᾸ-ΆῈ-ΉῘ-ΊῨ-ῬῸ-Ώℂℇℋ-ℍℐ-ℒℕℙ-ℝℤΩℨK-ℭℰ-ℳℾℿⅅⅠ-ⅯↃⒶ-ⓏⰀ-ⰯⱠⱢ-ⱤⱧⱩⱫⱭ-ⱰⱲⱵⱾ-ⲀⲂⲄⲆⲈⲊⲌⲎⲐⲒⲔⲖⲘⲚⲜⲞⲠⲢⲤⲦⲨⲪⲬⲮⲰⲲⲴⲶⲸⲺⲼⲾⳀⳂⳄⳆⳈⳊⳌⳎⳐⳒⳔⳖⳘⳚⳜⳞⳠⳢⳫⳭⳲꙀꙂꙄꙆꙈꙊꙌꙎꙐꙒꙔꙖꙘꙚꙜꙞꙠꙢꙤꙦꙨꙪꙬꚀꚂꚄꚆꚈꚊꚌꚎꚐꚒꚔꚖꚘꚚꜢꜤꜦꜨꜪꜬꜮꜲꜴꜶꜸꜺꜼꜾꝀꝂꝄꝆꝈꝊꝌꝎꝐꝒꝔꝖꝘꝚꝜꝞꝠꝢꝤꝦꝨꝪꝬꝮꝹꝻꝽꝾꞀꞂꞄꞆꞋꞍꞐꞒꞖꞘꞚꞜꞞꞠꞢꞤꞦꞨꞪ-ꞮꞰ-ꞴꞶꞸꞺꞼꞾꟀꟂꟄ-ꟇꟉꟐꟖꟘꟵA-Z",astral:"\ud801[\udc00-\udc27\udcb0-\udcd3\udd70-\udd7a\udd7c-\udd8a\udd8c-\udd92\udd94\udd95]|\ud803[\udc80-\udcb2]|\ud806[\udca0-\udcbf]|\ud81b[\ude40-\ude5f]|\ud835[\udc00-\udc19\udc34-\udc4d\udc68-\udc81\udc9c\udc9e\udc9f\udca2\udca5\udca6\udca9-\udcac\udcae-\udcb5\udcd0-\udce9\udd04\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd38\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd6c-\udd85\udda0-\uddb9\uddd4-\udded\ude08-\ude21\ude3c-\ude55\ude70-\ude89\udea8-\udec0\udee2-\udefa\udf1c-\udf34\udf56-\udf6e\udf90-\udfa8\udfca]|\ud83a[\udd00-\udd21]|\ud83c[\udd30-\udd49\udd50-\udd69\udd70-\udd89]"},{name:"White_Space",bmp:"\t-\r …   - \u2028\u2029   "}]},5142:e=>{e.exports=[{name:"Adlam",astral:"\ud83a[\udd00-\udd4b\udd50-\udd59\udd5e\udd5f]"},{name:"Ahom",astral:"\ud805[\udf00-\udf1a\udf1d-\udf2b\udf30-\udf46]"},{name:"Anatolian_Hieroglyphs",astral:"\ud811[\udc00-\ude46]"},{name:"Arabic",bmp:"؀-؄؆-؋؍-ؚ؜-؞ؠ-ؿف-يٖ-ٯٱ-ۜ۞-ۿݐ-ݿࡰ-ࢎ࢐࢑࢘-ࣣ࣡-ࣿﭐ-﯂ﯓ-ﴽ﵀-ﶏﶒ-ﷇ﷏ﷰ-﷿ﹰ-ﹴﹶ-ﻼ",astral:"\ud803[\ude60-\ude7e]|\ud83b[\ude00-\ude03\ude05-\ude1f\ude21\ude22\ude24\ude27\ude29-\ude32\ude34-\ude37\ude39\ude3b\ude42\ude47\ude49\ude4b\ude4d-\ude4f\ude51\ude52\ude54\ude57\ude59\ude5b\ude5d\ude5f\ude61\ude62\ude64\ude67-\ude6a\ude6c-\ude72\ude74-\ude77\ude79-\ude7c\ude7e\ude80-\ude89\ude8b-\ude9b\udea1-\udea3\udea5-\udea9\udeab-\udebb\udef0\udef1]"},{name:"Armenian",bmp:"Ա-Ֆՙ-֊֍-֏ﬓ-ﬗ"},{name:"Avestan",astral:"\ud802[\udf00-\udf35\udf39-\udf3f]"},{name:"Balinese",bmp:"ᬀ-ᭌ᭐-᭾"},{name:"Bamum",bmp:"ꚠ-꛷",astral:"\ud81a[\udc00-\ude38]"},{name:"Bassa_Vah",astral:"\ud81a[\uded0-\udeed\udef0-\udef5]"},{name:"Batak",bmp:"ᯀ-᯳᯼-᯿"},{name:"Bengali",bmp:"ঀ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-৾"},{name:"Bhaiksuki",astral:"\ud807[\udc00-\udc08\udc0a-\udc36\udc38-\udc45\udc50-\udc6c]"},{name:"Bopomofo",bmp:"˪˫ㄅ-ㄯㆠ-ㆿ"},{name:"Brahmi",astral:"\ud804[\udc00-\udc4d\udc52-\udc75\udc7f]"},{name:"Braille",bmp:"⠀-⣿"},{name:"Buginese",bmp:"ᨀ-ᨛ᨞᨟"},{name:"Buhid",bmp:"ᝀ-ᝓ"},{name:"Canadian_Aboriginal",bmp:"᐀-ᙿᢰ-ᣵ",astral:"\ud806[\udeb0-\udebf]"},{name:"Carian",astral:"\ud800[\udea0-\uded0]"},{name:"Caucasian_Albanian",astral:"\ud801[\udd30-\udd63\udd6f]"},{name:"Chakma",astral:"\ud804[\udd00-\udd34\udd36-\udd47]"},{name:"Cham",bmp:"ꨀ-ꨶꩀ-ꩍ꩐-꩙꩜-꩟"},{name:"Cherokee",bmp:"Ꭰ-Ᏽᏸ-ᏽꭰ-ꮿ"},{name:"Chorasmian",astral:"\ud803[\udfb0-\udfcb]"},{name:"Common",bmp:"\0-@\\[-`\\{-©«-¹»-¿×÷ʹ-˟˥-˩ˬ-˿ʹ;΅·؅،؛؟ـ۝࣢।॥฿࿕-࿘჻᛫-᛭᜵᜶᠂᠃᠅᳓᳡ᳩ-ᳬᳮ-ᳳᳵ-᳷ᳺ -​‎-⁤⁦-⁰⁴-⁾₀-₎₠-⃀℀-℥℧-℩ℬ-ℱℳ-⅍⅏-⅟↉-↋←-␦⑀-⑊①-⟿⤀-⭳⭶-⮕⮗-⯿⸀-⹝⿰-⿻ -〄〆〈-〠〰-〷〼-〿゛゜゠・ー㆐-㆟㇀-㇣㈠-㉟㉿-㋏㋿㍘-㏿䷀-䷿꜀-꜡ꞈ-꞊꠰-꠹꤮ꧏ꭛꭪꭫﴾﴿︐-︙︰-﹒﹔-﹦﹨-﹫\ufeff!-@[-`{-・ー゙゚¢-₩│-○-�",astral:"\ud800[\udd00-\udd02\udd07-\udd33\udd37-\udd3f\udd90-\udd9c\uddd0-\uddfc\udee1-\udefb]|\ud82f[\udca0-\udca3]|\ud833[\udf50-\udfc3]|\ud834[\udc00-\udcf5\udd00-\udd26\udd29-\udd66\udd6a-\udd7a\udd83\udd84\udd8c-\udda9\uddae-\uddea\udee0-\udef3\udf00-\udf56\udf60-\udf78]|\ud835[\udc00-\udc54\udc56-\udc9c\udc9e\udc9f\udca2\udca5\udca6\udca9-\udcac\udcae-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd1e-\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd52-\udea5\udea8-\udfcb\udfce-\udfff]|\ud83b[\udc71-\udcb4\udd01-\udd3d]|\ud83c[\udc00-\udc2b\udc30-\udc93\udca0-\udcae\udcb1-\udcbf\udcc1-\udccf\udcd1-\udcf5\udd00-\uddad\udde6-\uddff\ude01\ude02\ude10-\ude3b\ude40-\ude48\ude50\ude51\ude60-\ude65\udf00-\udfff]|\ud83d[\udc00-\uded7\udedd-\udeec\udef0-\udefc\udf00-\udf73\udf80-\udfd8\udfe0-\udfeb\udff0]|\ud83e[\udc00-\udc0b\udc10-\udc47\udc50-\udc59\udc60-\udc87\udc90-\udcad\udcb0\udcb1\udd00-\ude53\ude60-\ude6d\ude70-\ude74\ude78-\ude7c\ude80-\ude86\ude90-\udeac\udeb0-\udeba\udec0-\udec5\uded0-\uded9\udee0-\udee7\udef0-\udef6\udf00-\udf92\udf94-\udfca\udff0-\udff9]|\udb40[\udc01\udc20-\udc7f]"},{name:"Coptic",bmp:"Ϣ-ϯⲀ-ⳳ⳹-⳿"},{name:"Cuneiform",astral:"\ud808[\udc00-\udf99]|\ud809[\udc00-\udc6e\udc70-\udc74\udc80-\udd43]"},{name:"Cypriot",astral:"\ud802[\udc00-\udc05\udc08\udc0a-\udc35\udc37\udc38\udc3c\udc3f]"},{name:"Cypro_Minoan",astral:"\ud80b[\udf90-\udff2]"},{name:"Cyrillic",bmp:"Ѐ-҄҇-ԯᲀ-ᲈᴫᵸⷠ-ⷿꙀ-ꚟ︮︯"},{name:"Deseret",astral:"\ud801[\udc00-\udc4f]"},{name:"Devanagari",bmp:"ऀ-ॐॕ-ॣ०-ॿ꣠-ꣿ"},{name:"Dives_Akuru",astral:"\ud806[\udd00-\udd06\udd09\udd0c-\udd13\udd15\udd16\udd18-\udd35\udd37\udd38\udd3b-\udd46\udd50-\udd59]"},{name:"Dogra",astral:"\ud806[\udc00-\udc3b]"},{name:"Duployan",astral:"\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99\udc9c-\udc9f]"},{name:"Egyptian_Hieroglyphs",astral:"\ud80c[\udc00-\udfff]|\ud80d[\udc00-\udc2e\udc30-\udc38]"},{name:"Elbasan",astral:"\ud801[\udd00-\udd27]"},{name:"Elymaic",astral:"\ud803[\udfe0-\udff6]"},{name:"Ethiopic",bmp:"ሀ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፼ᎀ-᎙ⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮ",astral:"\ud839[\udfe0-\udfe6\udfe8-\udfeb\udfed\udfee\udff0-\udffe]"},{name:"Georgian",bmp:"Ⴀ-ჅჇჍა-ჺჼ-ჿᲐ-ᲺᲽ-Ჿⴀ-ⴥⴧⴭ"},{name:"Glagolitic",bmp:"Ⰰ-ⱟ",astral:"\ud838[\udc00-\udc06\udc08-\udc18\udc1b-\udc21\udc23\udc24\udc26-\udc2a]"},{name:"Gothic",astral:"\ud800[\udf30-\udf4a]"},{name:"Grantha",astral:"\ud804[\udf00-\udf03\udf05-\udf0c\udf0f\udf10\udf13-\udf28\udf2a-\udf30\udf32\udf33\udf35-\udf39\udf3c-\udf44\udf47\udf48\udf4b-\udf4d\udf50\udf57\udf5d-\udf63\udf66-\udf6c\udf70-\udf74]"},{name:"Greek",bmp:"Ͱ-ͳ͵-ͷͺ-ͽͿ΄ΆΈ-ΊΌΎ-ΡΣ-ϡϰ-Ͽᴦ-ᴪᵝ-ᵡᵦ-ᵪᶿἀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ῄῆ-ΐῖ-Ί῝-`ῲ-ῴῶ-῾Ωꭥ",astral:"\ud800[\udd40-\udd8e\udda0]|\ud834[\ude00-\ude45]"},{name:"Gujarati",bmp:"ઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૱ૹ-૿"},{name:"Gunjala_Gondi",astral:"\ud807[\udd60-\udd65\udd67\udd68\udd6a-\udd8e\udd90\udd91\udd93-\udd98\udda0-\udda9]"},{name:"Gurmukhi",bmp:"ਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-੶"},{name:"Han",bmp:"⺀-⺙⺛-⻳⼀-⿕々〇〡-〩〸-〻㐀-䶿一-鿿豈-舘並-龎",astral:"\ud81b[\udfe2\udfe3\udff0\udff1]|[\ud840-\ud868\ud86a-\ud86c\ud86f-\ud872\ud874-\ud879\ud880-\ud883][\udc00-\udfff]|\ud869[\udc00-\udedf\udf00-\udfff]|\ud86d[\udc00-\udf38\udf40-\udfff]|\ud86e[\udc00-\udc1d\udc20-\udfff]|\ud873[\udc00-\udea1\udeb0-\udfff]|\ud87a[\udc00-\udfe0]|\ud87e[\udc00-\ude1d]|\ud884[\udc00-\udf4a]"},{name:"Hangul",bmp:"ᄀ-ᇿ〮〯ㄱ-ㆎ㈀-㈞㉠-㉾ꥠ-ꥼ가-힣ힰ-ퟆퟋ-ퟻᅠ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ"},{name:"Hanifi_Rohingya",astral:"\ud803[\udd00-\udd27\udd30-\udd39]"},{name:"Hanunoo",bmp:"ᜠ-᜴"},{name:"Hatran",astral:"\ud802[\udce0-\udcf2\udcf4\udcf5\udcfb-\udcff]"},{name:"Hebrew",bmp:"֑-ׇא-תׯ-״יִ-זּטּ-לּמּנּסּףּפּצּ-ﭏ"},{name:"Hiragana",bmp:"ぁ-ゖゝ-ゟ",astral:"\ud82c[\udc01-\udd1f\udd50-\udd52]|🈀"},{name:"Imperial_Aramaic",astral:"\ud802[\udc40-\udc55\udc57-\udc5f]"},{name:"Inherited",bmp:"̀-ًͯ҅҆-ٰٕ॑-॔᪰-ᫎ᳐-᳔᳒-᳢᳠-᳨᳭᳴᳸᳹᷀-᷿‌‍⃐-〪⃰-゙゚〭︀-️︠-︭",astral:"\ud800[\uddfd\udee0]|𑌻|\ud833[\udf00-\udf2d\udf30-\udf46]|\ud834[\udd67-\udd69\udd7b-\udd82\udd85-\udd8b\uddaa-\uddad]|\udb40[\udd00-\uddef]"},{name:"Inscriptional_Pahlavi",astral:"\ud802[\udf60-\udf72\udf78-\udf7f]"},{name:"Inscriptional_Parthian",astral:"\ud802[\udf40-\udf55\udf58-\udf5f]"},{name:"Javanese",bmp:"ꦀ-꧍꧐-꧙꧞꧟"},{name:"Kaithi",astral:"\ud804[\udc80-\udcc2\udccd]"},{name:"Kannada",bmp:"ಀ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೝೞೠ-ೣ೦-೯ೱೲ"},{name:"Katakana",bmp:"ァ-ヺヽ-ヿㇰ-ㇿ㋐-㋾㌀-㍗ヲ-ッア-ン",astral:"\ud82b[\udff0-\udff3\udff5-\udffb\udffd\udffe]|\ud82c[\udc00\udd20-\udd22\udd64-\udd67]"},{name:"Kayah_Li",bmp:"꤀-꤭꤯"},{name:"Kharoshthi",astral:"\ud802[\ude00-\ude03\ude05\ude06\ude0c-\ude13\ude15-\ude17\ude19-\ude35\ude38-\ude3a\ude3f-\ude48\ude50-\ude58]"},{name:"Khitan_Small_Script",astral:"𖿤|\ud822[\udf00-\udfff]|\ud823[\udc00-\udcd5]"},{name:"Khmer",bmp:"ក-៝០-៩៰-៹᧠-᧿"},{name:"Khojki",astral:"\ud804[\ude00-\ude11\ude13-\ude3e]"},{name:"Khudawadi",astral:"\ud804[\udeb0-\udeea\udef0-\udef9]"},{name:"Lao",bmp:"ກຂຄຆ-ຊຌ-ຣລວ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟ"},{name:"Latin",bmp:"A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꟊꟐꟑꟓꟕ-ꟙꟲ-ꟿꬰ-ꭚꭜ-ꭤꭦ-ꭩff-stA-Za-z",astral:"\ud801[\udf80-\udf85\udf87-\udfb0\udfb2-\udfba]|\ud837[\udf00-\udf1e]"},{name:"Lepcha",bmp:"ᰀ-᰷᰻-᱉ᱍ-ᱏ"},{name:"Limbu",bmp:"ᤀ-ᤞᤠ-ᤫᤰ-᤻᥀᥄-᥏"},{name:"Linear_A",astral:"\ud801[\ude00-\udf36\udf40-\udf55\udf60-\udf67]"},{name:"Linear_B",astral:"\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa]"},{name:"Lisu",bmp:"ꓐ-꓿",astral:"𑾰"},{name:"Lycian",astral:"\ud800[\ude80-\ude9c]"},{name:"Lydian",astral:"\ud802[\udd20-\udd39\udd3f]"},{name:"Mahajani",astral:"\ud804[\udd50-\udd76]"},{name:"Makasar",astral:"\ud807[\udee0-\udef8]"},{name:"Malayalam",bmp:"ഀ-ഌഎ-ഐഒ-ൄെ-ൈൊ-൏ൔ-ൣ൦-ൿ"},{name:"Mandaic",bmp:"ࡀ-࡛࡞"},{name:"Manichaean",astral:"\ud802[\udec0-\udee6\udeeb-\udef6]"},{name:"Marchen",astral:"\ud807[\udc70-\udc8f\udc92-\udca7\udca9-\udcb6]"},{name:"Masaram_Gondi",astral:"\ud807[\udd00-\udd06\udd08\udd09\udd0b-\udd36\udd3a\udd3c\udd3d\udd3f-\udd47\udd50-\udd59]"},{name:"Medefaidrin",astral:"\ud81b[\ude40-\ude9a]"},{name:"Meetei_Mayek",bmp:"ꫠ-꫶ꯀ-꯭꯰-꯹"},{name:"Mende_Kikakui",astral:"\ud83a[\udc00-\udcc4\udcc7-\udcd6]"},{name:"Meroitic_Cursive",astral:"\ud802[\udda0-\uddb7\uddbc-\uddcf\uddd2-\uddff]"},{name:"Meroitic_Hieroglyphs",astral:"\ud802[\udd80-\udd9f]"},{name:"Miao",astral:"\ud81b[\udf00-\udf4a\udf4f-\udf87\udf8f-\udf9f]"},{name:"Modi",astral:"\ud805[\ude00-\ude44\ude50-\ude59]"},{name:"Mongolian",bmp:"᠀᠁᠄᠆-᠙ᠠ-ᡸᢀ-ᢪ",astral:"\ud805[\ude60-\ude6c]"},{name:"Mro",astral:"\ud81a[\ude40-\ude5e\ude60-\ude69\ude6e\ude6f]"},{name:"Multani",astral:"\ud804[\ude80-\ude86\ude88\ude8a-\ude8d\ude8f-\ude9d\ude9f-\udea9]"},{name:"Myanmar",bmp:"က-႟ꧠ-ꧾꩠ-ꩿ"},{name:"Nabataean",astral:"\ud802[\udc80-\udc9e\udca7-\udcaf]"},{name:"Nandinagari",astral:"\ud806[\udda0-\udda7\uddaa-\uddd7\uddda-\udde4]"},{name:"New_Tai_Lue",bmp:"ᦀ-ᦫᦰ-ᧉ᧐-᧚᧞᧟"},{name:"Newa",astral:"\ud805[\udc00-\udc5b\udc5d-\udc61]"},{name:"Nko",bmp:"߀-ߺ߽-߿"},{name:"Nushu",astral:"𖿡|\ud82c[\udd70-\udefb]"},{name:"Nyiakeng_Puachue_Hmong",astral:"\ud838[\udd00-\udd2c\udd30-\udd3d\udd40-\udd49\udd4e\udd4f]"},{name:"Ogham",bmp:" -᚜"},{name:"Ol_Chiki",bmp:"᱐-᱿"},{name:"Old_Hungarian",astral:"\ud803[\udc80-\udcb2\udcc0-\udcf2\udcfa-\udcff]"},{name:"Old_Italic",astral:"\ud800[\udf00-\udf23\udf2d-\udf2f]"},{name:"Old_North_Arabian",astral:"\ud802[\ude80-\ude9f]"},{name:"Old_Permic",astral:"\ud800[\udf50-\udf7a]"},{name:"Old_Persian",astral:"\ud800[\udfa0-\udfc3\udfc8-\udfd5]"},{name:"Old_Sogdian",astral:"\ud803[\udf00-\udf27]"},{name:"Old_South_Arabian",astral:"\ud802[\ude60-\ude7f]"},{name:"Old_Turkic",astral:"\ud803[\udc00-\udc48]"},{name:"Old_Uyghur",astral:"\ud803[\udf70-\udf89]"},{name:"Oriya",bmp:"ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍୕-ୗଡ଼ଢ଼ୟ-ୣ୦-୷"},{name:"Osage",astral:"\ud801[\udcb0-\udcd3\udcd8-\udcfb]"},{name:"Osmanya",astral:"\ud801[\udc80-\udc9d\udca0-\udca9]"},{name:"Pahawh_Hmong",astral:"\ud81a[\udf00-\udf45\udf50-\udf59\udf5b-\udf61\udf63-\udf77\udf7d-\udf8f]"},{name:"Palmyrene",astral:"\ud802[\udc60-\udc7f]"},{name:"Pau_Cin_Hau",astral:"\ud806[\udec0-\udef8]"},{name:"Phags_Pa",bmp:"ꡀ-꡷"},{name:"Phoenician",astral:"\ud802[\udd00-\udd1b\udd1f]"},{name:"Psalter_Pahlavi",astral:"\ud802[\udf80-\udf91\udf99-\udf9c\udfa9-\udfaf]"},{name:"Rejang",bmp:"ꤰ-꥓꥟"},{name:"Runic",bmp:"ᚠ-ᛪᛮ-ᛸ"},{name:"Samaritan",bmp:"ࠀ-࠭࠰-࠾"},{name:"Saurashtra",bmp:"ꢀ-ꣅ꣎-꣙"},{name:"Sharada",astral:"\ud804[\udd80-\udddf]"},{name:"Shavian",astral:"\ud801[\udc50-\udc7f]"},{name:"Siddham",astral:"\ud805[\udd80-\uddb5\uddb8-\udddd]"},{name:"SignWriting",astral:"\ud836[\udc00-\ude8b\ude9b-\ude9f\udea1-\udeaf]"},{name:"Sinhala",bmp:"ඁ-ඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟ෦-෯ෲ-෴",astral:"\ud804[\udde1-\uddf4]"},{name:"Sogdian",astral:"\ud803[\udf30-\udf59]"},{name:"Sora_Sompeng",astral:"\ud804[\udcd0-\udce8\udcf0-\udcf9]"},{name:"Soyombo",astral:"\ud806[\ude50-\udea2]"},{name:"Sundanese",bmp:"ᮀ-ᮿ᳀-᳇"},{name:"Syloti_Nagri",bmp:"ꠀ-꠬"},{name:"Syriac",bmp:"܀-܍܏-݊ݍ-ݏࡠ-ࡪ"},{name:"Tagalog",bmp:"ᜀ-᜕ᜟ"},{name:"Tagbanwa",bmp:"ᝠ-ᝬᝮ-ᝰᝲᝳ"},{name:"Tai_Le",bmp:"ᥐ-ᥭᥰ-ᥴ"},{name:"Tai_Tham",bmp:"ᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪠-᪭"},{name:"Tai_Viet",bmp:"ꪀ-ꫂꫛ-꫟"},{name:"Takri",astral:"\ud805[\ude80-\udeb9\udec0-\udec9]"},{name:"Tamil",bmp:"ஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௺",astral:"\ud807[\udfc0-\udff1\udfff]"},{name:"Tangsa",astral:"\ud81a[\ude70-\udebe\udec0-\udec9]"},{name:"Tangut",astral:"𖿠|[\ud81c-\ud820][\udc00-\udfff]|\ud821[\udc00-\udff7]|\ud822[\udc00-\udeff]|\ud823[\udd00-\udd08]"},{name:"Telugu",bmp:"ఀ-ఌఎ-ఐఒ-నప-హ఼-ౄె-ైొ-్ౕౖౘ-ౚౝౠ-ౣ౦-౯౷-౿"},{name:"Thaana",bmp:"ހ-ޱ"},{name:"Thai",bmp:"ก-ฺเ-๛"},{name:"Tibetan",bmp:"ༀ-ཇཉ-ཬཱ-ྗྙ-ྼ྾-࿌࿎-࿔࿙࿚"},{name:"Tifinagh",bmp:"ⴰ-ⵧⵯ⵰⵿"},{name:"Tirhuta",astral:"\ud805[\udc80-\udcc7\udcd0-\udcd9]"},{name:"Toto",astral:"\ud838[\ude90-\udeae]"},{name:"Ugaritic",astral:"\ud800[\udf80-\udf9d\udf9f]"},{name:"Vai",bmp:"ꔀ-ꘫ"},{name:"Vithkuqi",astral:"\ud801[\udd70-\udd7a\udd7c-\udd8a\udd8c-\udd92\udd94\udd95\udd97-\udda1\udda3-\uddb1\uddb3-\uddb9\uddbb\uddbc]"},{name:"Wancho",astral:"\ud838[\udec0-\udef9\udeff]"},{name:"Warang_Citi",astral:"\ud806[\udca0-\udcf2\udcff]"},{name:"Yezidi",astral:"\ud803[\ude80-\udea9\udeab-\udead\udeb0\udeb1]"},{name:"Yi",bmp:"ꀀ-ꒌ꒐-꓆"},{name:"Zanabazar_Square",astral:"\ud806[\ude00-\ude47]"}]},23313:()=>{},35265:()=>{},70440:()=>{},18950:()=>{},78982:()=>{},47790:()=>{},73776:()=>{},77965:()=>{},66089:()=>{},79368:()=>{},64688:()=>{},51069:()=>{},15340:()=>{},79838:()=>{},63779:()=>{},99580:()=>{},49763:(e,t,n)=>{e.exports=n(86450)},66615:(e,t,n)=>{e.exports=n(18402)},11393:(e,t,n)=>{e.exports=n(50530)},52730:(e,t,n)=>{e.exports=n(64055)},86226:(e,t,n)=>{e.exports=n(24525)},64007:(e,t,n)=>{e.exports=n(77852)},48079:(e,t,n)=>{e.exports=n(98894)},73363:(e,t,n)=>{e.exports=n(79528)},18979:(e,t,n)=>{e.exports=n(6686)},129:(e,t,n)=>{e.exports=n(81086)},27681:(e,t,n)=>{e.exports=n(93658)},53930:(e,t,n)=>{e.exports=n(68251)},36586:(e,t,n)=>{e.exports=n(91921)},16781:(e,t,n)=>{e.exports=n(24139)},62222:(e,t,n)=>{e.exports=n(81519)},31607:e=>{e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n{var r=n(22382);e.exports=function(e){if(r(e))return e},e.exports.__esModule=!0,e.exports.default=e.exports},5946:e=>{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},94172:(e,t,n)=>{var r=n(93071),i=n(81519),o=n(1958);e.exports=function(e,t){var n=null==e?null:void 0!==r&&i(e)||e["@@iterator"];if(null!=n){var s,a,u,c,d=[],l=!0,h=!1;try{if(u=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(s=u.call(n)).done)&&(o(d).call(d,s.value),d.length!==t);l=!0);}catch(e){h=!0,a=e}finally{try{if(!l&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(h)throw a}}return d}},e.exports.__esModule=!0,e.exports.default=e.exports},85344:e=>{e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.__esModule=!0,e.exports.default=e.exports},34875:(e,t,n)=>{var r=n(31251),i=n(94172),o=n(90426),s=n(85344);e.exports=function(e,t){return r(e)||i(e,t)||o(e,t)||s()},e.exports.__esModule=!0,e.exports.default=e.exports},90426:(e,t,n)=>{var r=n(55186),i=n(62014),o=n(31607);e.exports=function(e,t){var n;if(e){if("string"==typeof e)return o(e,t);var s=r(n=Object.prototype.toString.call(e)).call(n,8,-1);return"Object"===s&&e.constructor&&(s=e.constructor.name),"Map"===s||"Set"===s?i(e):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?o(e,t):void 0}},e.exports.__esModule=!0,e.exports.default=e.exports},39209:(e,t,n)=>{"use strict";var r=n(76578),i="undefined"==typeof globalThis?n.g:globalThis;e.exports=function(){for(var e=[],t=0;t{"use strict";var r=n(86450);e.exports=r},77725:(e,t,n)=>{"use strict";var r=n(18402);e.exports=r},68690:(e,t,n)=>{"use strict";var r=n(33067);e.exports=r},45779:(e,t,n)=>{"use strict";var r=n(33266);e.exports=r},6221:(e,t,n)=>{"use strict";var r=n(6686);e.exports=r},57264:(e,t,n)=>{"use strict";var r=n(24139);n(20768),n(8549),n(87152),n(11372),e.exports=r},93607:(e,t,n)=>{"use strict";n(7057),n(57277);var r=n(92046);e.exports=r.Array.from},13531:(e,t,n)=>{"use strict";n(92425);var r=n(92046);e.exports=r.Array.isArray},96275:(e,t,n)=>{"use strict";n(58545);var r=n(61747);e.exports=r("Array","concat")},22092:(e,t,n)=>{"use strict";n(95650);var r=n(61747);e.exports=r("Array","forEach")},83309:(e,t,n)=>{"use strict";n(66391);var r=n(61747);e.exports=r("Array","indexOf")},28253:(e,t,n)=>{"use strict";n(6687);var r=n(61747);e.exports=r("Array","map")},21127:(e,t,n)=>{"use strict";n(85745);var r=n(61747);e.exports=r("Array","push")},16693:(e,t,n)=>{"use strict";n(46339);var r=n(61747);e.exports=r("Array","reduce")},75265:(e,t,n)=>{"use strict";n(62099);var r=n(61747);e.exports=r("Array","slice")},11263:(e,t,n)=>{"use strict";n(26737);var r=n(61747);e.exports=r("Array","sort")},54712:(e,t,n)=>{"use strict";n(99363),n(7057);var r=n(73448);e.exports=r},45837:(e,t,n)=>{"use strict";var r=n(88280),i=n(96275),o=Array.prototype;e.exports=function(e){var t=e.concat;return e===o||r(o,e)&&t===o.concat?i:t}},60974:(e,t,n)=>{"use strict";var r=n(88280),i=n(48804),o=RegExp.prototype;e.exports=function(e){return e===o||r(o,e)?i(e):e.flags}},44507:(e,t,n)=>{"use strict";var r=n(88280),i=n(83309),o=Array.prototype;e.exports=function(e){var t=e.indexOf;return e===o||r(o,e)&&t===o.indexOf?i:t}},39299:(e,t,n)=>{"use strict";var r=n(88280),i=n(28253),o=Array.prototype;e.exports=function(e){var t=e.map;return e===o||r(o,e)&&t===o.map?i:t}},78685:(e,t,n)=>{"use strict";var r=n(88280),i=n(21127),o=Array.prototype;e.exports=function(e){var t=e.push;return e===o||r(o,e)&&t===o.push?i:t}},28823:(e,t,n)=>{"use strict";var r=n(88280),i=n(16693),o=Array.prototype;e.exports=function(e){var t=e.reduce;return e===o||r(o,e)&&t===o.reduce?i:t}},40303:(e,t,n)=>{"use strict";var r=n(88280),i=n(75265),o=Array.prototype;e.exports=function(e){var t=e.slice;return e===o||r(o,e)&&t===o.slice?i:t}},12757:(e,t,n)=>{"use strict";var r=n(88280),i=n(11263),o=Array.prototype;e.exports=function(e){var t=e.sort;return e===o||r(o,e)&&t===o.sort?i:t}},80149:(e,t,n)=>{"use strict";n(25837);var r=n(92046).Object;e.exports=function(e,t){return r.create(e,t)}},21926:(e,t,n)=>{"use strict";n(46750);var r=n(92046).Object,i=e.exports=function(e,t,n){return r.defineProperty(e,t,n)};r.defineProperty.sham&&(i.sham=!0)},84326:(e,t,n)=>{"use strict";n(42193);var r=n(92046);e.exports=r.parseInt},48804:(e,t,n)=>{"use strict";n(9164);var r=n(40663);e.exports=r},83842:(e,t,n)=>{"use strict";n(58545),n(86024),n(94452),n(3997),n(75084),n(2596),n(5721),n(44954),n(44123),n(73377),n(72230),n(15344),n(51660),n(4610),n(33669),n(44810),n(93325),n(87024),n(38172),n(85205);var r=n(92046);e.exports=r.Symbol},62014:(e,t,n)=>{"use strict";e.exports=n(8980)},22382:(e,t,n)=>{"use strict";e.exports=n(31564)},81519:(e,t,n)=>{"use strict";e.exports=n(99029)},1958:(e,t,n)=>{"use strict";e.exports=n(63520)},55186:(e,t,n)=>{"use strict";e.exports=n(64908)},93071:(e,t,n)=>{"use strict";e.exports=n(32321)},8980:(e,t,n)=>{"use strict";var r=n(47985);e.exports=r},31564:(e,t,n)=>{"use strict";var r=n(77725);e.exports=r},99029:(e,t,n)=>{"use strict";var r=n(68690);e.exports=r},63520:(e,t,n)=>{"use strict";var r=n(45779);e.exports=r},64908:(e,t,n)=>{"use strict";var r=n(6221);e.exports=r},32321:(e,t,n)=>{"use strict";var r=n(57264);n(13939),n(21785),n(81697),n(84664),n(63422),n(70036),n(28703),n(86878),n(59671),n(50359),e.exports=r},82159:(e,t,n)=>{"use strict";var r=n(62250),i=n(4640),o=TypeError;e.exports=function(e){if(r(e))return e;throw new o(i(e)+" is not a function")}},10043:(e,t,n)=>{"use strict";var r=n(54018),i=String,o=TypeError;e.exports=function(e){if(r(e))return e;throw new o("Can't set "+i(e)+" as a prototype")}},42156:e=>{"use strict";e.exports=function(){}},36624:(e,t,n)=>{"use strict";var r=n(46285),i=String,o=TypeError;e.exports=function(e){if(r(e))return e;throw new o(i(e)+" is not an object")}},22914:(e,t,n)=>{"use strict";var r=n(70726).forEach,i=n(77623)("forEach");e.exports=i?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},11229:(e,t,n)=>{"use strict";var r=n(28311),i=n(13930),o=n(39298),s=n(26818),a=n(37812),u=n(25468),c=n(20575),d=n(5543),l=n(10300),h=n(73448),f=Array;e.exports=function(e){var t=o(e),n=u(this),p=arguments.length,m=p>1?arguments[1]:void 0,g=void 0!==m;g&&(m=r(m,p>2?arguments[2]:void 0));var y,v,b,w,_,x,D=h(t),E=0;if(!D||this===f&&a(D))for(y=c(t),v=n?new this(y):f(y);y>E;E++)x=g?m(t[E],E):t[E],d(v,E,x);else for(v=n?new this:[],_=(w=l(t,D)).next;!(b=i(_,w)).done;E++)x=g?s(w,m,[b.value,E],!0):b.value,d(v,E,x);return v.length=E,v}},74436:(e,t,n)=>{"use strict";var r=n(27374),i=n(34849),o=n(20575),s=function(e){return function(t,n,s){var a=r(t),u=o(a);if(0===u)return!e&&-1;var c,d=i(s,u);if(e&&n!=n){for(;u>d;)if((c=a[d++])!=c)return!0}else for(;u>d;d++)if((e||d in a)&&a[d]===n)return e||d||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},70726:(e,t,n)=>{"use strict";var r=n(28311),i=n(1907),o=n(16946),s=n(39298),a=n(20575),u=n(56968),c=i([].push),d=function(e){var t=1===e,n=2===e,i=3===e,d=4===e,l=6===e,h=7===e,f=5===e||l;return function(p,m,g,y){for(var v,b,w=s(p),_=o(w),x=a(_),D=r(m,g),E=0,M=y||u,A=t?M(p,x):n||h?M(p,0):void 0;x>E;E++)if((f||E in _)&&(b=D(v=_[E],E,w),e))if(t)A[E]=b;else if(b)switch(e){case 3:return!0;case 5:return v;case 6:return E;case 2:c(A,v)}else switch(e){case 4:return!1;case 7:c(A,v)}return l?-1:i||d?d:A}};e.exports={forEach:d(0),map:d(1),filter:d(2),some:d(3),every:d(4),find:d(5),findIndex:d(6),filterReject:d(7)}},59552:(e,t,n)=>{"use strict";var r=n(98828),i=n(76264),o=n(15683),s=i("species");e.exports=function(e){return o>=51||!r((function(){var t=[];return(t.constructor={})[s]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},77623:(e,t,n)=>{"use strict";var r=n(98828);e.exports=function(e,t){var n=[][e];return!!n&&r((function(){n.call(null,t||function(){return 1},1)}))}},35043:(e,t,n)=>{"use strict";var r=n(82159),i=n(39298),o=n(16946),s=n(20575),a=TypeError,u="Reduce of empty array with no initial value",c=function(e){return function(t,n,c,d){var l=i(t),h=o(l),f=s(l);if(r(n),0===f&&c<2)throw new a(u);var p=e?f-1:0,m=e?-1:1;if(c<2)for(;;){if(p in h){d=h[p],p+=m;break}if(p+=m,e?p<0:f<=p)throw new a(u)}for(;e?p>=0:f>p;p+=m)p in h&&(d=n(d,h[p],p,l));return d}};e.exports={left:c(!1),right:c(!0)}},3130:(e,t,n)=>{"use strict";var r=n(39447),i=n(11793),o=TypeError,s=Object.getOwnPropertyDescriptor,a=r&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();e.exports=a?function(e,t){if(i(e)&&!s(e,"length").writable)throw new o("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}},93427:(e,t,n)=>{"use strict";var r=n(1907);e.exports=r([].slice)},34321:(e,t,n)=>{"use strict";var r=n(93427),i=Math.floor,o=function(e,t){var n=e.length;if(n<8)for(var s,a,u=1;u0;)e[a]=e[--a];a!==u++&&(e[a]=s)}else for(var c=i(n/2),d=o(r(e,0,c),t),l=o(r(e,c),t),h=d.length,f=l.length,p=0,m=0;p{"use strict";var r=n(11793),i=n(25468),o=n(46285),s=n(76264)("species"),a=Array;e.exports=function(e){var t;return r(e)&&(t=e.constructor,(i(t)&&(t===a||r(t.prototype))||o(t)&&null===(t=t[s]))&&(t=void 0)),void 0===t?a:t}},56968:(e,t,n)=>{"use strict";var r=n(64010);e.exports=function(e,t){return new(r(e))(0===t?0:t)}},26818:(e,t,n)=>{"use strict";var r=n(36624),i=n(40154);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){i(e,"throw",t)}}},70473:(e,t,n)=>{"use strict";var r=n(76264)("iterator"),i=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){i=!0}};s[r]=function(){return this},Array.from(s,(function(){throw 2}))}catch(e){}e.exports=function(e,t){try{if(!t&&!i)return!1}catch(e){return!1}var n=!1;try{var o={};o[r]=function(){return{next:function(){return{done:n=!0}}}},e(o)}catch(e){}return n}},45807:(e,t,n)=>{"use strict";var r=n(1907),i=r({}.toString),o=r("".slice);e.exports=function(e){return o(i(e),8,-1)}},73948:(e,t,n)=>{"use strict";var r=n(52623),i=n(62250),o=n(45807),s=n(76264)("toStringTag"),a=Object,u="Arguments"===o(function(){return arguments}());e.exports=r?o:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=a(e),s))?n:u?o(t):"Object"===(r=o(t))&&i(t.callee)?"Arguments":r}},57382:(e,t,n)=>{"use strict";var r=n(98828);e.exports=!r((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},59550:e=>{"use strict";e.exports=function(e,t){return{value:e,done:t}}},61626:(e,t,n)=>{"use strict";var r=n(39447),i=n(74284),o=n(75817);e.exports=r?function(e,t,n){return i.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},75817:e=>{"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},5543:(e,t,n)=>{"use strict";var r=n(39447),i=n(74284),o=n(75817);e.exports=function(e,t,n){r?i.f(e,t,o(0,n)):e[t]=n}},89251:(e,t,n)=>{"use strict";var r=n(74284);e.exports=function(e,t,n){return r.f(e,t,n)}},68055:(e,t,n)=>{"use strict";var r=n(61626);e.exports=function(e,t,n,i){return i&&i.enumerable?e[t]=n:r(e,t,n),e}},2532:(e,t,n)=>{"use strict";var r=n(41010),i=Object.defineProperty;e.exports=function(e,t){try{i(r,e,{value:t,configurable:!0,writable:!0})}catch(n){r[e]=t}return t}},74535:(e,t,n)=>{"use strict";var r=n(4640),i=TypeError;e.exports=function(e,t){if(!delete e[t])throw new i("Cannot delete property "+r(t)+" of "+r(e))}},39447:(e,t,n)=>{"use strict";var r=n(98828);e.exports=!r((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))},49552:(e,t,n)=>{"use strict";var r=n(41010),i=n(46285),o=r.document,s=i(o)&&i(o.createElement);e.exports=function(e){return s?o.createElement(e):{}}},88024:e=>{"use strict";var t=TypeError;e.exports=function(e){if(e>9007199254740991)throw t("Maximum allowed index exceeded");return e}},19287:e=>{"use strict";e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},65737:(e,t,n)=>{"use strict";var r=n(64723).match(/firefox\/(\d+)/i);e.exports=!!r&&+r[1]},74775:(e,t,n)=>{"use strict";var r=n(64723);e.exports=/MSIE|Trident/.test(r)},70853:(e,t,n)=>{"use strict";var r=n(41010),i=n(45807);e.exports="process"===i(r.process)},64723:e=>{"use strict";e.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},15683:(e,t,n)=>{"use strict";var r,i,o=n(41010),s=n(64723),a=o.process,u=o.Deno,c=a&&a.versions||u&&u.version,d=c&&c.v8;d&&(i=(r=d.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!i&&s&&(!(r=s.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=s.match(/Chrome\/(\d+)/))&&(i=+r[1]),e.exports=i},60299:(e,t,n)=>{"use strict";var r=n(64723).match(/AppleWebKit\/(\d+)\./);e.exports=!!r&&+r[1]},80376:e=>{"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},11091:(e,t,n)=>{"use strict";var r=n(41010),i=n(76024),o=n(92361),s=n(62250),a=n(13846).f,u=n(7463),c=n(92046),d=n(28311),l=n(61626),h=n(49724);n(36128);var f=function(e){var t=function(n,r,o){if(this instanceof t){switch(arguments.length){case 0:return new e;case 1:return new e(n);case 2:return new e(n,r)}return new e(n,r,o)}return i(e,this,arguments)};return t.prototype=e.prototype,t};e.exports=function(e,t){var n,i,p,m,g,y,v,b,w,_=e.target,x=e.global,D=e.stat,E=e.proto,M=x?r:D?r[_]:r[_]&&r[_].prototype,A=x?c:c[_]||l(c,_,{})[_],S=A.prototype;for(m in t)i=!(n=u(x?m:_+(D?".":"#")+m,e.forced))&&M&&h(M,m),y=A[m],i&&(v=e.dontCallGetSet?(w=a(M,m))&&w.value:M[m]),g=i&&v?v:t[m],(n||E||typeof y!=typeof g)&&(b=e.bind&&i?d(g,r):e.wrap&&i?f(g):E&&s(g)?o(g):g,(e.sham||g&&g.sham||y&&y.sham)&&l(b,"sham",!0),l(A,m,b),E&&(h(c,p=_+"Prototype")||l(c,p,{}),l(c[p],m,g),e.real&&S&&(n||!S[m])&&l(S,m,g)))}},98828:e=>{"use strict";e.exports=function(e){try{return!!e()}catch(e){return!0}}},76024:(e,t,n)=>{"use strict";var r=n(41505),i=Function.prototype,o=i.apply,s=i.call;e.exports="object"==typeof Reflect&&Reflect.apply||(r?s.bind(o):function(){return s.apply(o,arguments)})},28311:(e,t,n)=>{"use strict";var r=n(92361),i=n(82159),o=n(41505),s=r(r.bind);e.exports=function(e,t){return i(e),void 0===t?e:o?s(e,t):function(){return e.apply(t,arguments)}}},41505:(e,t,n)=>{"use strict";var r=n(98828);e.exports=!r((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},13930:(e,t,n)=>{"use strict";var r=n(41505),i=Function.prototype.call;e.exports=r?i.bind(i):function(){return i.apply(i,arguments)}},36833:(e,t,n)=>{"use strict";var r=n(39447),i=n(49724),o=Function.prototype,s=r&&Object.getOwnPropertyDescriptor,a=i(o,"name"),u=a&&"something"===function(){}.name,c=a&&(!r||r&&s(o,"name").configurable);e.exports={EXISTS:a,PROPER:u,CONFIGURABLE:c}},51871:(e,t,n)=>{"use strict";var r=n(1907),i=n(82159);e.exports=function(e,t,n){try{return r(i(Object.getOwnPropertyDescriptor(e,t)[n]))}catch(e){}}},92361:(e,t,n)=>{"use strict";var r=n(45807),i=n(1907);e.exports=function(e){if("Function"===r(e))return i(e)}},1907:(e,t,n)=>{"use strict";var r=n(41505),i=Function.prototype,o=i.call,s=r&&i.bind.bind(o,o);e.exports=r?s:function(e){return function(){return o.apply(e,arguments)}}},61747:(e,t,n)=>{"use strict";var r=n(41010),i=n(92046);e.exports=function(e,t){var n=i[e+"Prototype"],o=n&&n[t];if(o)return o;var s=r[e],a=s&&s.prototype;return a&&a[t]}},85582:(e,t,n)=>{"use strict";var r=n(92046),i=n(41010),o=n(62250),s=function(e){return o(e)?e:void 0};e.exports=function(e,t){return arguments.length<2?s(r[e])||s(i[e]):r[e]&&r[e][t]||i[e]&&i[e][t]}},73448:(e,t,n)=>{"use strict";var r=n(73948),i=n(29367),o=n(87136),s=n(93742),a=n(76264)("iterator");e.exports=function(e){if(!o(e))return i(e,a)||i(e,"@@iterator")||s[r(e)]}},10300:(e,t,n)=>{"use strict";var r=n(13930),i=n(82159),o=n(36624),s=n(4640),a=n(73448),u=TypeError;e.exports=function(e,t){var n=arguments.length<2?a(e):t;if(i(n))return o(r(n,e));throw new u(s(e)+" is not iterable")}},96656:(e,t,n)=>{"use strict";var r=n(1907),i=n(11793),o=n(62250),s=n(45807),a=n(90160),u=r([].push);e.exports=function(e){if(o(e))return e;if(i(e)){for(var t=e.length,n=[],r=0;r{"use strict";var r=n(82159),i=n(87136);e.exports=function(e,t){var n=e[t];return i(n)?void 0:r(n)}},41010:function(e,t,n){"use strict";var r=function(e){return e&&e.Math===Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||r("object"==typeof this&&this)||function(){return this}()||Function("return this")()},49724:(e,t,n)=>{"use strict";var r=n(1907),i=n(39298),o=r({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return o(i(e),t)}},38530:e=>{"use strict";e.exports={}},62416:(e,t,n)=>{"use strict";var r=n(85582);e.exports=r("document","documentElement")},73648:(e,t,n)=>{"use strict";var r=n(39447),i=n(98828),o=n(49552);e.exports=!r&&!i((function(){return 7!==Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a}))},16946:(e,t,n)=>{"use strict";var r=n(1907),i=n(98828),o=n(45807),s=Object,a=r("".split);e.exports=i((function(){return!s("z").propertyIsEnumerable(0)}))?function(e){return"String"===o(e)?a(e,""):s(e)}:s},12647:(e,t,n)=>{"use strict";var r=n(1907),i=n(62250),o=n(36128),s=r(Function.toString);i(o.inspectSource)||(o.inspectSource=function(e){return s(e)}),e.exports=o.inspectSource},64932:(e,t,n)=>{"use strict";var r,i,o,s=n(40551),a=n(41010),u=n(46285),c=n(61626),d=n(49724),l=n(36128),h=n(92522),f=n(38530),p="Object already initialized",m=a.TypeError,g=a.WeakMap;if(s||l.state){var y=l.state||(l.state=new g);y.get=y.get,y.has=y.has,y.set=y.set,r=function(e,t){if(y.has(e))throw new m(p);return t.facade=e,y.set(e,t),t},i=function(e){return y.get(e)||{}},o=function(e){return y.has(e)}}else{var v=h("state");f[v]=!0,r=function(e,t){if(d(e,v))throw new m(p);return t.facade=e,c(e,v,t),t},i=function(e){return d(e,v)?e[v]:{}},o=function(e){return d(e,v)}}e.exports={set:r,get:i,has:o,enforce:function(e){return o(e)?i(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!u(t)||(n=i(t)).type!==e)throw new m("Incompatible receiver, "+e+" required");return n}}}},37812:(e,t,n)=>{"use strict";var r=n(76264),i=n(93742),o=r("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||s[o]===e)}},11793:(e,t,n)=>{"use strict";var r=n(45807);e.exports=Array.isArray||function(e){return"Array"===r(e)}},62250:e=>{"use strict";var t="object"==typeof document&&document.all;e.exports=void 0===t&&void 0!==t?function(e){return"function"==typeof e||e===t}:function(e){return"function"==typeof e}},25468:(e,t,n)=>{"use strict";var r=n(1907),i=n(98828),o=n(62250),s=n(73948),a=n(85582),u=n(12647),c=function(){},d=a("Reflect","construct"),l=/^\s*(?:class|function)\b/,h=r(l.exec),f=!l.test(c),p=function(e){if(!o(e))return!1;try{return d(c,[],e),!0}catch(e){return!1}},m=function(e){if(!o(e))return!1;switch(s(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return f||!!h(l,u(e))}catch(e){return!0}};m.sham=!0,e.exports=!d||i((function(){var e;return p(p.call)||!p(Object)||!p((function(){e=!0}))||e}))?m:p},7463:(e,t,n)=>{"use strict";var r=n(98828),i=n(62250),o=/#|\.prototype\./,s=function(e,t){var n=u[a(e)];return n===d||n!==c&&(i(t)?r(t):!!t)},a=s.normalize=function(e){return String(e).replace(o,".").toLowerCase()},u=s.data={},c=s.NATIVE="N",d=s.POLYFILL="P";e.exports=s},87136:e=>{"use strict";e.exports=function(e){return null==e}},46285:(e,t,n)=>{"use strict";var r=n(62250);e.exports=function(e){return"object"==typeof e?null!==e:r(e)}},54018:(e,t,n)=>{"use strict";var r=n(46285);e.exports=function(e){return r(e)||null===e}},7376:e=>{"use strict";e.exports=!0},25594:(e,t,n)=>{"use strict";var r=n(85582),i=n(62250),o=n(88280),s=n(51175),a=Object;e.exports=s?function(e){return"symbol"==typeof e}:function(e){var t=r("Symbol");return i(t)&&o(t.prototype,a(e))}},40154:(e,t,n)=>{"use strict";var r=n(13930),i=n(36624),o=n(29367);e.exports=function(e,t,n){var s,a;i(e);try{if(!(s=o(e,"return"))){if("throw"===t)throw n;return n}s=r(s,e)}catch(e){a=!0,s=e}if("throw"===t)throw n;if(a)throw s;return i(s),n}},47181:(e,t,n)=>{"use strict";var r=n(95116).IteratorPrototype,i=n(58075),o=n(75817),s=n(14840),a=n(93742),u=function(){return this};e.exports=function(e,t,n,c){var d=t+" Iterator";return e.prototype=i(r,{next:o(+!c,n)}),s(e,d,!1,!0),a[d]=u,e}},60183:(e,t,n)=>{"use strict";var r=n(11091),i=n(13930),o=n(7376),s=n(36833),a=n(62250),u=n(47181),c=n(15972),d=n(79192),l=n(14840),h=n(61626),f=n(68055),p=n(76264),m=n(93742),g=n(95116),y=s.PROPER,v=s.CONFIGURABLE,b=g.IteratorPrototype,w=g.BUGGY_SAFARI_ITERATORS,_=p("iterator"),x="keys",D="values",E="entries",M=function(){return this};e.exports=function(e,t,n,s,p,g,A){u(n,t,s);var S,C,k,T=function(e){if(e===p&&B)return B;if(!w&&e&&e in F)return F[e];switch(e){case x:case D:case E:return function(){return new n(this,e)}}return function(){return new n(this)}},I=t+" Iterator",R=!1,F=e.prototype,O=F[_]||F["@@iterator"]||p&&F[p],B=!w&&O||T(p),P="Array"===t&&F.entries||O;if(P&&(S=c(P.call(new e)))!==Object.prototype&&S.next&&(o||c(S)===b||(d?d(S,b):a(S[_])||f(S,_,M)),l(S,I,!0,!0),o&&(m[I]=M)),y&&p===D&&O&&O.name!==D&&(!o&&v?h(F,"name",D):(R=!0,B=function(){return i(O,this)})),p)if(C={values:T(D),keys:g?B:T(x),entries:T(E)},A)for(k in C)(w||R||!(k in F))&&f(F,k,C[k]);else r({target:t,proto:!0,forced:w||R},C);return o&&!A||F[_]===B||f(F,_,B,{name:p}),m[t]=B,C}},95116:(e,t,n)=>{"use strict";var r,i,o,s=n(98828),a=n(62250),u=n(46285),c=n(58075),d=n(15972),l=n(68055),h=n(76264),f=n(7376),p=h("iterator"),m=!1;[].keys&&("next"in(o=[].keys())?(i=d(d(o)))!==Object.prototype&&(r=i):m=!0),!u(r)||s((function(){var e={};return r[p].call(e)!==e}))?r={}:f&&(r=c(r)),a(r[p])||l(r,p,(function(){return this})),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:m}},93742:e=>{"use strict";e.exports={}},20575:(e,t,n)=>{"use strict";var r=n(3121);e.exports=function(e){return r(e.length)}},41176:e=>{"use strict";var t=Math.ceil,n=Math.floor;e.exports=Math.trunc||function(e){var r=+e;return(r>0?n:t)(r)}},72778:(e,t,n)=>{"use strict";var r=n(41010),i=n(98828),o=n(1907),s=n(90160),a=n(65993).trim,u=n(86395),c=r.parseInt,d=r.Symbol,l=d&&d.iterator,h=/^[+-]?0x/i,f=o(h.exec),p=8!==c(u+"08")||22!==c(u+"0x16")||l&&!i((function(){c(Object(l))}));e.exports=p?function(e,t){var n=a(s(e));return c(n,t>>>0||(f(h,n)?16:10))}:c},58075:(e,t,n)=>{"use strict";var r,i=n(36624),o=n(42220),s=n(80376),a=n(38530),u=n(62416),c=n(49552),d=n(92522),l="prototype",h="script",f=d("IE_PROTO"),p=function(){},m=function(e){return"<"+h+">"+e+""},g=function(e){e.write(m("")),e.close();var t=e.parentWindow.Object;return e=null,t},y=function(){try{r=new ActiveXObject("htmlfile")}catch(e){}var e,t,n;y="undefined"!=typeof document?document.domain&&r?g(r):(t=c("iframe"),n="java"+h+":",t.style.display="none",u.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(m("document.F=Object")),e.close(),e.F):g(r);for(var i=s.length;i--;)delete y[l][s[i]];return y()};a[f]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(p[l]=i(e),n=new p,p[l]=null,n[f]=e):n=y(),void 0===t?n:o.f(n,t)}},42220:(e,t,n)=>{"use strict";var r=n(39447),i=n(58661),o=n(74284),s=n(36624),a=n(27374),u=n(2875);t.f=r&&!i?Object.defineProperties:function(e,t){s(e);for(var n,r=a(t),i=u(t),c=i.length,d=0;c>d;)o.f(e,n=i[d++],r[n]);return e}},74284:(e,t,n)=>{"use strict";var r=n(39447),i=n(73648),o=n(58661),s=n(36624),a=n(70470),u=TypeError,c=Object.defineProperty,d=Object.getOwnPropertyDescriptor,l="enumerable",h="configurable",f="writable";t.f=r?o?function(e,t,n){if(s(e),t=a(t),s(n),"function"==typeof e&&"prototype"===t&&"value"in n&&f in n&&!n[f]){var r=d(e,t);r&&r[f]&&(e[t]=n.value,n={configurable:h in n?n[h]:r[h],enumerable:l in n?n[l]:r[l],writable:!1})}return c(e,t,n)}:c:function(e,t,n){if(s(e),t=a(t),s(n),i)try{return c(e,t,n)}catch(e){}if("get"in n||"set"in n)throw new u("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},13846:(e,t,n)=>{"use strict";var r=n(39447),i=n(13930),o=n(22574),s=n(75817),a=n(27374),u=n(70470),c=n(49724),d=n(73648),l=Object.getOwnPropertyDescriptor;t.f=r?l:function(e,t){if(e=a(e),t=u(t),d)try{return l(e,t)}catch(e){}if(c(e,t))return s(!i(o.f,e,t),e[t])}},25407:(e,t,n)=>{"use strict";var r=n(45807),i=n(27374),o=n(24443).f,s=n(93427),a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return a&&"Window"===r(e)?function(e){try{return o(e)}catch(e){return s(a)}}(e):o(i(e))}},24443:(e,t,n)=>{"use strict";var r=n(23045),i=n(80376).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},87170:(e,t)=>{"use strict";t.f=Object.getOwnPropertySymbols},15972:(e,t,n)=>{"use strict";var r=n(49724),i=n(62250),o=n(39298),s=n(92522),a=n(57382),u=s("IE_PROTO"),c=Object,d=c.prototype;e.exports=a?c.getPrototypeOf:function(e){var t=o(e);if(r(t,u))return t[u];var n=t.constructor;return i(n)&&t instanceof n?n.prototype:t instanceof c?d:null}},88280:(e,t,n)=>{"use strict";var r=n(1907);e.exports=r({}.isPrototypeOf)},23045:(e,t,n)=>{"use strict";var r=n(1907),i=n(49724),o=n(27374),s=n(74436).indexOf,a=n(38530),u=r([].push);e.exports=function(e,t){var n,r=o(e),c=0,d=[];for(n in r)!i(a,n)&&i(r,n)&&u(d,n);for(;t.length>c;)i(r,n=t[c++])&&(~s(d,n)||u(d,n));return d}},2875:(e,t,n)=>{"use strict";var r=n(23045),i=n(80376);e.exports=Object.keys||function(e){return r(e,i)}},22574:(e,t)=>{"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!n.call({1:2},1);t.f=i?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},79192:(e,t,n)=>{"use strict";var r=n(51871),i=n(46285),o=n(74239),s=n(10043);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=r(Object.prototype,"__proto__","set"))(n,[]),t=n instanceof Array}catch(e){}return function(n,r){return o(n),s(r),i(n)?(t?e(n,r):n.__proto__=r,n):n}}():void 0)},54878:(e,t,n)=>{"use strict";var r=n(52623),i=n(73948);e.exports=r?{}.toString:function(){return"[object "+i(this)+"]"}},60581:(e,t,n)=>{"use strict";var r=n(13930),i=n(62250),o=n(46285),s=TypeError;e.exports=function(e,t){var n,a;if("string"===t&&i(n=e.toString)&&!o(a=r(n,e)))return a;if(i(n=e.valueOf)&&!o(a=r(n,e)))return a;if("string"!==t&&i(n=e.toString)&&!o(a=r(n,e)))return a;throw new s("Can't convert object to primitive value")}},92046:e=>{"use strict";e.exports={}},85606:(e,t,n)=>{"use strict";var r=n(36624);e.exports=function(){var e=r(this),t="";return e.hasIndices&&(t+="d"),e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.unicodeSets&&(t+="v"),e.sticky&&(t+="y"),t}},40663:(e,t,n)=>{"use strict";var r=n(13930),i=n(49724),o=n(88280),s=n(85606),a=RegExp.prototype;e.exports=function(e){var t=e.flags;return void 0!==t||"flags"in a||i(e,"flags")||!o(a,e)?t:r(s,e)}},74239:(e,t,n)=>{"use strict";var r=n(87136),i=TypeError;e.exports=function(e){if(r(e))throw new i("Can't call method on "+e);return e}},14840:(e,t,n)=>{"use strict";var r=n(52623),i=n(74284).f,o=n(61626),s=n(49724),a=n(54878),u=n(76264)("toStringTag");e.exports=function(e,t,n,c){var d=n?e:e&&e.prototype;d&&(s(d,u)||i(d,u,{configurable:!0,value:t}),c&&!r&&o(d,"toString",a))}},92522:(e,t,n)=>{"use strict";var r=n(85816),i=n(6499),o=r("keys");e.exports=function(e){return o[e]||(o[e]=i(e))}},36128:(e,t,n)=>{"use strict";var r=n(7376),i=n(41010),o=n(2532),s="__core-js_shared__",a=e.exports=i[s]||o(s,{});(a.versions||(a.versions=[])).push({version:"3.37.0",mode:r?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.37.0/LICENSE",source:"https://github.com/zloirock/core-js"})},85816:(e,t,n)=>{"use strict";var r=n(36128);e.exports=function(e,t){return r[e]||(r[e]=t||{})}},11470:(e,t,n)=>{"use strict";var r=n(1907),i=n(65482),o=n(90160),s=n(74239),a=r("".charAt),u=r("".charCodeAt),c=r("".slice),d=function(e){return function(t,n){var r,d,l=o(s(t)),h=i(n),f=l.length;return h<0||h>=f?e?"":void 0:(r=u(l,h))<55296||r>56319||h+1===f||(d=u(l,h+1))<56320||d>57343?e?a(l,h):r:e?c(l,h,h+2):d-56320+(r-55296<<10)+65536}};e.exports={codeAt:d(!1),charAt:d(!0)}},65993:(e,t,n)=>{"use strict";var r=n(1907),i=n(74239),o=n(90160),s=n(86395),a=r("".replace),u=RegExp("^["+s+"]+"),c=RegExp("(^|[^"+s+"])["+s+"]+$"),d=function(e){return function(t){var n=o(i(t));return 1&e&&(n=a(n,u,"")),2&e&&(n=a(n,c,"$1")),n}};e.exports={start:d(1),end:d(2),trim:d(3)}},19846:(e,t,n)=>{"use strict";var r=n(15683),i=n(98828),o=n(41010).String;e.exports=!!Object.getOwnPropertySymbols&&!i((function(){var e=Symbol("symbol detection");return!o(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},83467:(e,t,n)=>{"use strict";var r=n(13930),i=n(85582),o=n(76264),s=n(68055);e.exports=function(){var e=i("Symbol"),t=e&&e.prototype,n=t&&t.valueOf,a=o("toPrimitive");t&&!t[a]&&s(t,a,(function(e){return r(n,this)}),{arity:1})}},12595:(e,t,n)=>{"use strict";var r=n(85582),i=n(1907),o=r("Symbol"),s=o.keyFor,a=i(o.prototype.valueOf);e.exports=o.isRegisteredSymbol||function(e){try{return void 0!==s(a(e))}catch(e){return!1}}},69197:(e,t,n)=>{"use strict";for(var r=n(85816),i=n(85582),o=n(1907),s=n(25594),a=n(76264),u=i("Symbol"),c=u.isWellKnownSymbol,d=i("Object","getOwnPropertyNames"),l=o(u.prototype.valueOf),h=r("wks"),f=0,p=d(u),m=p.length;f{"use strict";var r=n(19846);e.exports=r&&!!Symbol.for&&!!Symbol.keyFor},34849:(e,t,n)=>{"use strict";var r=n(65482),i=Math.max,o=Math.min;e.exports=function(e,t){var n=r(e);return n<0?i(n+t,0):o(n,t)}},27374:(e,t,n)=>{"use strict";var r=n(16946),i=n(74239);e.exports=function(e){return r(i(e))}},65482:(e,t,n)=>{"use strict";var r=n(41176);e.exports=function(e){var t=+e;return t!=t||0===t?0:r(t)}},3121:(e,t,n)=>{"use strict";var r=n(65482),i=Math.min;e.exports=function(e){var t=r(e);return t>0?i(t,9007199254740991):0}},39298:(e,t,n)=>{"use strict";var r=n(74239),i=Object;e.exports=function(e){return i(r(e))}},46028:(e,t,n)=>{"use strict";var r=n(13930),i=n(46285),o=n(25594),s=n(29367),a=n(60581),u=n(76264),c=TypeError,d=u("toPrimitive");e.exports=function(e,t){if(!i(e)||o(e))return e;var n,u=s(e,d);if(u){if(void 0===t&&(t="default"),n=r(u,e,t),!i(n)||o(n))return n;throw new c("Can't convert object to primitive value")}return void 0===t&&(t="number"),a(e,t)}},70470:(e,t,n)=>{"use strict";var r=n(46028),i=n(25594);e.exports=function(e){var t=r(e,"string");return i(t)?t:t+""}},52623:(e,t,n)=>{"use strict";var r={};r[n(76264)("toStringTag")]="z",e.exports="[object z]"===String(r)},90160:(e,t,n)=>{"use strict";var r=n(73948),i=String;e.exports=function(e){if("Symbol"===r(e))throw new TypeError("Cannot convert a Symbol value to a string");return i(e)}},4640:e=>{"use strict";var t=String;e.exports=function(e){try{return t(e)}catch(e){return"Object"}}},6499:(e,t,n)=>{"use strict";var r=n(1907),i=0,o=Math.random(),s=r(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+s(++i+o,36)}},51175:(e,t,n)=>{"use strict";var r=n(19846);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},58661:(e,t,n)=>{"use strict";var r=n(39447),i=n(98828);e.exports=r&&i((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},40551:(e,t,n)=>{"use strict";var r=n(41010),i=n(62250),o=r.WeakMap;e.exports=i(o)&&/native code/.test(String(o))},20366:(e,t,n)=>{"use strict";var r=n(92046),i=n(49724),o=n(80560),s=n(74284).f;e.exports=function(e){var t=r.Symbol||(r.Symbol={});i(t,e)||s(t,e,{value:o.f(e)})}},80560:(e,t,n)=>{"use strict";var r=n(76264);t.f=r},76264:(e,t,n)=>{"use strict";var r=n(41010),i=n(85816),o=n(49724),s=n(6499),a=n(19846),u=n(51175),c=r.Symbol,d=i("wks"),l=u?c.for||c:c&&c.withoutSetter||s;e.exports=function(e){return o(d,e)||(d[e]=a&&o(c,e)?c[e]:l("Symbol."+e)),d[e]}},86395:e=>{"use strict";e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},58545:(e,t,n)=>{"use strict";var r=n(11091),i=n(98828),o=n(11793),s=n(46285),a=n(39298),u=n(20575),c=n(88024),d=n(5543),l=n(56968),h=n(59552),f=n(76264),p=n(15683),m=f("isConcatSpreadable"),g=p>=51||!i((function(){var e=[];return e[m]=!1,e.concat()[0]!==e})),y=function(e){if(!s(e))return!1;var t=e[m];return void 0!==t?!!t:o(e)};r({target:"Array",proto:!0,arity:1,forced:!g||!h("concat")},{concat:function(e){var t,n,r,i,o,s=a(this),h=l(s,0),f=0;for(t=-1,r=arguments.length;t{"use strict";var r=n(11091),i=n(22914);r({target:"Array",proto:!0,forced:[].forEach!==i},{forEach:i})},57277:(e,t,n)=>{"use strict";var r=n(11091),i=n(11229);r({target:"Array",stat:!0,forced:!n(70473)((function(e){Array.from(e)}))},{from:i})},66391:(e,t,n)=>{"use strict";var r=n(11091),i=n(92361),o=n(74436).indexOf,s=n(77623),a=i([].indexOf),u=!!a&&1/a([1],1,-0)<0;r({target:"Array",proto:!0,forced:u||!s("indexOf")},{indexOf:function(e){var t=arguments.length>1?arguments[1]:void 0;return u?a(this,e,t)||0:o(this,e,t)}})},92425:(e,t,n)=>{"use strict";n(11091)({target:"Array",stat:!0},{isArray:n(11793)})},99363:(e,t,n)=>{"use strict";var r=n(27374),i=n(42156),o=n(93742),s=n(64932),a=n(74284).f,u=n(60183),c=n(59550),d=n(7376),l=n(39447),h="Array Iterator",f=s.set,p=s.getterFor(h);e.exports=u(Array,"Array",(function(e,t){f(this,{type:h,target:r(e),index:0,kind:t})}),(function(){var e=p(this),t=e.target,n=e.index++;if(!t||n>=t.length)return e.target=void 0,c(void 0,!0);switch(e.kind){case"keys":return c(n,!1);case"values":return c(t[n],!1)}return c([n,t[n]],!1)}),"values");var m=o.Arguments=o.Array;if(i("keys"),i("values"),i("entries"),!d&&l&&"values"!==m.name)try{a(m,"name",{value:"values"})}catch(e){}},6687:(e,t,n)=>{"use strict";var r=n(11091),i=n(70726).map;r({target:"Array",proto:!0,forced:!n(59552)("map")},{map:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},85745:(e,t,n)=>{"use strict";var r=n(11091),i=n(39298),o=n(20575),s=n(3130),a=n(88024);r({target:"Array",proto:!0,arity:1,forced:n(98828)((function(){return 4294967297!==[].push.call({length:4294967296},1)}))||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(e){return e instanceof TypeError}}()},{push:function(e){var t=i(this),n=o(t),r=arguments.length;a(n+r);for(var u=0;u{"use strict";var r=n(11091),i=n(35043).left,o=n(77623),s=n(15683);r({target:"Array",proto:!0,forced:!n(70853)&&s>79&&s<83||!o("reduce")},{reduce:function(e){var t=arguments.length;return i(this,e,t,t>1?arguments[1]:void 0)}})},62099:(e,t,n)=>{"use strict";var r=n(11091),i=n(11793),o=n(25468),s=n(46285),a=n(34849),u=n(20575),c=n(27374),d=n(5543),l=n(76264),h=n(59552),f=n(93427),p=h("slice"),m=l("species"),g=Array,y=Math.max;r({target:"Array",proto:!0,forced:!p},{slice:function(e,t){var n,r,l,h=c(this),p=u(h),v=a(e,p),b=a(void 0===t?p:t,p);if(i(h)&&(n=h.constructor,(o(n)&&(n===g||i(n.prototype))||s(n)&&null===(n=n[m]))&&(n=void 0),n===g||void 0===n))return f(h,v,b);for(r=new(void 0===n?g:n)(y(b-v,0)),l=0;v{"use strict";var r=n(11091),i=n(1907),o=n(82159),s=n(39298),a=n(20575),u=n(74535),c=n(90160),d=n(98828),l=n(34321),h=n(77623),f=n(65737),p=n(74775),m=n(15683),g=n(60299),y=[],v=i(y.sort),b=i(y.push),w=d((function(){y.sort(void 0)})),_=d((function(){y.sort(null)})),x=h("sort"),D=!d((function(){if(m)return m<70;if(!(f&&f>3)){if(p)return!0;if(g)return g<603;var e,t,n,r,i="";for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(r=0;r<47;r++)y.push({k:t+r,v:n})}for(y.sort((function(e,t){return t.v-e.v})),r=0;rc(n)?1:-1}}(e)),n=a(i),r=0;r{"use strict";var r=n(11091),i=n(85582),o=n(76024),s=n(13930),a=n(1907),u=n(98828),c=n(62250),d=n(25594),l=n(93427),h=n(96656),f=n(19846),p=String,m=i("JSON","stringify"),g=a(/./.exec),y=a("".charAt),v=a("".charCodeAt),b=a("".replace),w=a(1..toString),_=/[\uD800-\uDFFF]/g,x=/^[\uD800-\uDBFF]$/,D=/^[\uDC00-\uDFFF]$/,E=!f||u((function(){var e=i("Symbol")("stringify detection");return"[null]"!==m([e])||"{}"!==m({a:e})||"{}"!==m(Object(e))})),M=u((function(){return'"\\udf06\\ud834"'!==m("\udf06\ud834")||'"\\udead"'!==m("\udead")})),A=function(e,t){var n=l(arguments),r=h(t);if(c(r)||void 0!==e&&!d(e))return n[1]=function(e,t){if(c(r)&&(t=s(r,this,p(e),t)),!d(t))return t},o(m,null,n)},S=function(e,t,n){var r=y(n,t-1),i=y(n,t+1);return g(x,e)&&!g(D,i)||g(D,e)&&!g(x,r)?"\\u"+w(v(e,0),16):e};m&&r({target:"JSON",stat:!0,arity:3,forced:E||M},{stringify:function(e,t,n){var r=l(arguments),i=o(E?A:m,null,r);return M&&"string"==typeof i?b(i,_,S):i}})},87024:(e,t,n)=>{"use strict";var r=n(41010);n(14840)(r.JSON,"JSON",!0)},38172:()=>{},25837:(e,t,n)=>{"use strict";n(11091)({target:"Object",stat:!0,sham:!n(39447)},{create:n(58075)})},46750:(e,t,n)=>{"use strict";var r=n(11091),i=n(39447),o=n(74284).f;r({target:"Object",stat:!0,forced:Object.defineProperty!==o,sham:!i},{defineProperty:o})},55264:(e,t,n)=>{"use strict";var r=n(11091),i=n(19846),o=n(98828),s=n(87170),a=n(39298);r({target:"Object",stat:!0,forced:!i||o((function(){s.f(1)}))},{getOwnPropertySymbols:function(e){var t=s.f;return t?t(a(e)):[]}})},86024:()=>{},42193:(e,t,n)=>{"use strict";var r=n(11091),i=n(72778);r({global:!0,forced:parseInt!==i},{parseInt:i})},85205:()=>{},9164:()=>{},7057:(e,t,n)=>{"use strict";var r=n(11470).charAt,i=n(90160),o=n(64932),s=n(60183),a=n(59550),u="String Iterator",c=o.set,d=o.getterFor(u);s(String,"String",(function(e){c(this,{type:u,string:i(e),index:0})}),(function(){var e,t=d(this),n=t.string,i=t.index;return i>=n.length?a(void 0,!0):(e=r(n,i),t.index+=e.length,a(e,!1))}))},3997:(e,t,n)=>{"use strict";n(20366)("asyncIterator")},23674:(e,t,n)=>{"use strict";var r=n(11091),i=n(41010),o=n(13930),s=n(1907),a=n(7376),u=n(39447),c=n(19846),d=n(98828),l=n(49724),h=n(88280),f=n(36624),p=n(27374),m=n(70470),g=n(90160),y=n(75817),v=n(58075),b=n(2875),w=n(24443),_=n(25407),x=n(87170),D=n(13846),E=n(74284),M=n(42220),A=n(22574),S=n(68055),C=n(89251),k=n(85816),T=n(92522),I=n(38530),R=n(6499),F=n(76264),O=n(80560),B=n(20366),P=n(83467),N=n(14840),j=n(64932),L=n(70726).forEach,U=T("hidden"),q="Symbol",$="prototype",z=j.set,H=j.getterFor(q),K=Object[$],W=i.Symbol,G=W&&W[$],V=i.RangeError,Y=i.TypeError,Z=i.QObject,J=D.f,X=E.f,Q=_.f,ee=A.f,te=s([].push),ne=k("symbols"),re=k("op-symbols"),ie=k("wks"),oe=!Z||!Z[$]||!Z[$].findChild,se=function(e,t,n){var r=J(K,t);r&&delete K[t],X(e,t,n),r&&e!==K&&X(K,t,r)},ae=u&&d((function(){return 7!==v(X({},"a",{get:function(){return X(this,"a",{value:7}).a}})).a}))?se:X,ue=function(e,t){var n=ne[e]=v(G);return z(n,{type:q,tag:e,description:t}),u||(n.description=t),n},ce=function(e,t,n){e===K&&ce(re,t,n),f(e);var r=m(t);return f(n),l(ne,r)?(n.enumerable?(l(e,U)&&e[U][r]&&(e[U][r]=!1),n=v(n,{enumerable:y(0,!1)})):(l(e,U)||X(e,U,y(1,v(null))),e[U][r]=!0),ae(e,r,n)):X(e,r,n)},de=function(e,t){f(e);var n=p(t),r=b(n).concat(pe(n));return L(r,(function(t){u&&!o(le,n,t)||ce(e,t,n[t])})),e},le=function(e){var t=m(e),n=o(ee,this,t);return!(this===K&&l(ne,t)&&!l(re,t))&&(!(n||!l(this,t)||!l(ne,t)||l(this,U)&&this[U][t])||n)},he=function(e,t){var n=p(e),r=m(t);if(n!==K||!l(ne,r)||l(re,r)){var i=J(n,r);return!i||!l(ne,r)||l(n,U)&&n[U][r]||(i.enumerable=!0),i}},fe=function(e){var t=Q(p(e)),n=[];return L(t,(function(e){l(ne,e)||l(I,e)||te(n,e)})),n},pe=function(e){var t=e===K,n=Q(t?re:p(e)),r=[];return L(n,(function(e){!l(ne,e)||t&&!l(K,e)||te(r,ne[e])})),r};c||(S(G=(W=function(){if(h(G,this))throw new Y("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?g(arguments[0]):void 0,t=R(e),n=function(e){var r=void 0===this?i:this;r===K&&o(n,re,e),l(r,U)&&l(r[U],t)&&(r[U][t]=!1);var s=y(1,e);try{ae(r,t,s)}catch(e){if(!(e instanceof V))throw e;se(r,t,s)}};return u&&oe&&ae(K,t,{configurable:!0,set:n}),ue(t,e)})[$],"toString",(function(){return H(this).tag})),S(W,"withoutSetter",(function(e){return ue(R(e),e)})),A.f=le,E.f=ce,M.f=de,D.f=he,w.f=_.f=fe,x.f=pe,O.f=function(e){return ue(F(e),e)},u&&(C(G,"description",{configurable:!0,get:function(){return H(this).description}}),a||S(K,"propertyIsEnumerable",le,{unsafe:!0}))),r({global:!0,constructor:!0,wrap:!0,forced:!c,sham:!c},{Symbol:W}),L(b(ie),(function(e){B(e)})),r({target:q,stat:!0,forced:!c},{useSetter:function(){oe=!0},useSimple:function(){oe=!1}}),r({target:"Object",stat:!0,forced:!c,sham:!u},{create:function(e,t){return void 0===t?v(e):de(v(e),t)},defineProperty:ce,defineProperties:de,getOwnPropertyDescriptor:he}),r({target:"Object",stat:!0,forced:!c},{getOwnPropertyNames:fe}),P(),N(W,q),I[U]=!0},75084:()=>{},13313:(e,t,n)=>{"use strict";var r=n(11091),i=n(85582),o=n(49724),s=n(90160),a=n(85816),u=n(84411),c=a("string-to-symbol-registry"),d=a("symbol-to-string-registry");r({target:"Symbol",stat:!0,forced:!u},{for:function(e){var t=s(e);if(o(c,t))return c[t];var n=i("Symbol")(t);return c[t]=n,d[n]=t,n}})},2596:(e,t,n)=>{"use strict";n(20366)("hasInstance")},5721:(e,t,n)=>{"use strict";n(20366)("isConcatSpreadable")},44954:(e,t,n)=>{"use strict";n(20366)("iterator")},94452:(e,t,n)=>{"use strict";n(23674),n(13313),n(10751),n(49721),n(55264)},10751:(e,t,n)=>{"use strict";var r=n(11091),i=n(49724),o=n(25594),s=n(4640),a=n(85816),u=n(84411),c=a("symbol-to-string-registry");r({target:"Symbol",stat:!0,forced:!u},{keyFor:function(e){if(!o(e))throw new TypeError(s(e)+" is not a symbol");if(i(c,e))return c[e]}})},73377:(e,t,n)=>{"use strict";n(20366)("matchAll")},44123:(e,t,n)=>{"use strict";n(20366)("match")},72230:(e,t,n)=>{"use strict";n(20366)("replace")},15344:(e,t,n)=>{"use strict";n(20366)("search")},51660:(e,t,n)=>{"use strict";n(20366)("species")},4610:(e,t,n)=>{"use strict";n(20366)("split")},33669:(e,t,n)=>{"use strict";var r=n(20366),i=n(83467);r("toPrimitive"),i()},44810:(e,t,n)=>{"use strict";var r=n(85582),i=n(20366),o=n(14840);i("toStringTag"),o(r("Symbol"),"Symbol")},93325:(e,t,n)=>{"use strict";n(20366)("unscopables")},20768:(e,t,n)=>{"use strict";var r=n(76264),i=n(74284).f,o=r("metadata"),s=Function.prototype;void 0===s[o]&&i(s,o,{value:null})},8549:(e,t,n)=>{"use strict";n(20366)("asyncDispose")},81697:(e,t,n)=>{"use strict";n(20366)("customMatcher")},87152:(e,t,n)=>{"use strict";n(20366)("dispose")},13939:(e,t,n)=>{"use strict";n(11091)({target:"Symbol",stat:!0},{isRegisteredSymbol:n(12595)})},63422:(e,t,n)=>{"use strict";n(11091)({target:"Symbol",stat:!0,name:"isRegisteredSymbol"},{isRegistered:n(12595)})},21785:(e,t,n)=>{"use strict";n(11091)({target:"Symbol",stat:!0,forced:!0},{isWellKnownSymbol:n(69197)})},70036:(e,t,n)=>{"use strict";n(11091)({target:"Symbol",stat:!0,name:"isWellKnownSymbol",forced:!0},{isWellKnown:n(69197)})},28703:(e,t,n)=>{"use strict";n(20366)("matcher")},86878:(e,t,n)=>{"use strict";n(20366)("metadataKey")},11372:(e,t,n)=>{"use strict";n(20366)("metadata")},84664:(e,t,n)=>{"use strict";n(20366)("observable")},59671:(e,t,n)=>{"use strict";n(20366)("patternMatch")},50359:(e,t,n)=>{"use strict";n(20366)("replaceAll")},60237:()=>{},12560:(e,t,n)=>{"use strict";n(99363);var r=n(19287),i=n(41010),o=n(14840),s=n(93742);for(var a in r)o(i[a],a),s[a]=s.Array},86450:(e,t,n)=>{"use strict";var r=n(93607);e.exports=r},18402:(e,t,n)=>{"use strict";var r=n(13531);e.exports=r},41969:(e,t,n)=>{"use strict";var r=n(22092);e.exports=r},33067:(e,t,n)=>{"use strict";var r=n(54712);n(12560),e.exports=r},50530:(e,t,n)=>{"use strict";var r=n(45837);e.exports=r},64055:(e,t,n)=>{"use strict";var r=n(60974);e.exports=r},24525:(e,t,n)=>{"use strict";var r=n(73948),i=n(49724),o=n(88280),s=n(41969);n(60237);var a=Array.prototype,u={DOMTokenList:!0,NodeList:!0};e.exports=function(e){var t=e.forEach;return e===a||o(a,e)&&t===a.forEach||i(u,r(e))?s:t}},77852:(e,t,n)=>{"use strict";var r=n(44507);e.exports=r},98894:(e,t,n)=>{"use strict";var r=n(39299);e.exports=r},33266:(e,t,n)=>{"use strict";var r=n(78685);e.exports=r},79528:(e,t,n)=>{"use strict";var r=n(28823);e.exports=r},6686:(e,t,n)=>{"use strict";var r=n(40303);e.exports=r},81086:(e,t,n)=>{"use strict";var r=n(12757);e.exports=r},93658:(e,t,n)=>{"use strict";var r=n(80149);e.exports=r},68251:(e,t,n)=>{"use strict";var r=n(21926);e.exports=r},91921:(e,t,n)=>{"use strict";var r=n(84326);e.exports=r},24139:(e,t,n)=>{"use strict";var r=n(83842);n(12560),e.exports=r},99211:(e,t)=>{"use strict";function n(e,t,n){var r;if(void 0===n&&(n={}),!t.codes){t.codes={};for(var i=0;i=8&&(a-=8,s[c++]=255&u>>a)}if(a>=t.bits||255&u<<8-a)throw new SyntaxError("Unexpected end of data");return s}function r(e,t,n){void 0===n&&(n={});for(var r=n.pad,i=void 0===r||r,o=(1<t.bits;)a-=t.bits,s+=t.chars[o&u>>a];if(a&&(s+=t.chars[o&u<{"use strict";n.r(t),n.d(t,{decode:()=>s,encode:()=>o});const r={},i={};["ҠҿԀԟڀڿݠޟ߀ߟကဟႠႿᄀᅟᆀᆟᇠሿበቿዠዿጠጿᎠᏟᐠᙟᚠᛟកសᠠᡟᣀᣟᦀᦟ᧠᧿ᨠᨿᯀᯟᰀᰟᴀᴟ⇠⇿⋀⋟⍀⏟␀␟─❟➀➿⠀⥿⦠⦿⨠⩟⪀⪿⫠⭟ⰀⰟⲀⳟⴀⴟⵀⵟ⺠⻟㇀㇟㐀䶟䷀龿ꀀꑿ꒠꒿ꔀꗿꙀꙟꚠꛟ꜀ꝟꞀꞟꡀꡟ","ƀƟɀʟ"].forEach(((e,t)=>{const n=[];e.match(/../gu).forEach((e=>{const t=e.codePointAt(0),r=e.codePointAt(1);for(let e=t;e<=r;e++)n.push(String.fromCodePoint(e))}));const o=15-8*t;r[o]=n,n.forEach(((e,t)=>{i[e]=[o,t]}))}));const o=e=>{const t=e.length;let n="",i=0,o=0;for(let s=0;s=0;e--){i=(i<<1)+(t>>e&1),o++,15===o&&(n+=r[o][i],i=0,o=0)}}if(0!==o){for(;!(o in r);)i=1+(i<<1),o++;n+=r[o][i]}return n},s=e=>{const t=e.length,n=new Uint8Array(Math.floor(15*t/8));let r=0,o=0,s=0;for(let a=0;a=0;e--){o=(o<<1)+(d>>e&1),s++,8===s&&(n[r]=o,r++,o=0,s=0)}}if(o!==(1<{"use strict";e.exports=JSON.parse('{"aes-128-ecb":{"cipher":"AES","key":128,"iv":0,"mode":"ECB","type":"block"},"aes-192-ecb":{"cipher":"AES","key":192,"iv":0,"mode":"ECB","type":"block"},"aes-256-ecb":{"cipher":"AES","key":256,"iv":0,"mode":"ECB","type":"block"},"aes-128-cbc":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes-192-cbc":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes-256-cbc":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes128":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes192":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes256":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes-128-cfb":{"cipher":"AES","key":128,"iv":16,"mode":"CFB","type":"stream"},"aes-192-cfb":{"cipher":"AES","key":192,"iv":16,"mode":"CFB","type":"stream"},"aes-256-cfb":{"cipher":"AES","key":256,"iv":16,"mode":"CFB","type":"stream"},"aes-128-cfb8":{"cipher":"AES","key":128,"iv":16,"mode":"CFB8","type":"stream"},"aes-192-cfb8":{"cipher":"AES","key":192,"iv":16,"mode":"CFB8","type":"stream"},"aes-256-cfb8":{"cipher":"AES","key":256,"iv":16,"mode":"CFB8","type":"stream"},"aes-128-cfb1":{"cipher":"AES","key":128,"iv":16,"mode":"CFB1","type":"stream"},"aes-192-cfb1":{"cipher":"AES","key":192,"iv":16,"mode":"CFB1","type":"stream"},"aes-256-cfb1":{"cipher":"AES","key":256,"iv":16,"mode":"CFB1","type":"stream"},"aes-128-ofb":{"cipher":"AES","key":128,"iv":16,"mode":"OFB","type":"stream"},"aes-192-ofb":{"cipher":"AES","key":192,"iv":16,"mode":"OFB","type":"stream"},"aes-256-ofb":{"cipher":"AES","key":256,"iv":16,"mode":"OFB","type":"stream"},"aes-128-ctr":{"cipher":"AES","key":128,"iv":16,"mode":"CTR","type":"stream"},"aes-192-ctr":{"cipher":"AES","key":192,"iv":16,"mode":"CTR","type":"stream"},"aes-256-ctr":{"cipher":"AES","key":256,"iv":16,"mode":"CTR","type":"stream"},"aes-128-gcm":{"cipher":"AES","key":128,"iv":12,"mode":"GCM","type":"auth"},"aes-192-gcm":{"cipher":"AES","key":192,"iv":12,"mode":"GCM","type":"auth"},"aes-256-gcm":{"cipher":"AES","key":256,"iv":12,"mode":"GCM","type":"auth"}}')},62951:e=>{"use strict";e.exports=JSON.parse('{"sha224WithRSAEncryption":{"sign":"rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"RSA-SHA224":{"sign":"ecdsa/rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"sha256WithRSAEncryption":{"sign":"rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"RSA-SHA256":{"sign":"ecdsa/rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"sha384WithRSAEncryption":{"sign":"rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"RSA-SHA384":{"sign":"ecdsa/rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"sha512WithRSAEncryption":{"sign":"rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA512":{"sign":"ecdsa/rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA1":{"sign":"rsa","hash":"sha1","id":"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{"sign":"ecdsa","hash":"sha1","id":""},"sha256":{"sign":"ecdsa","hash":"sha256","id":""},"sha224":{"sign":"ecdsa","hash":"sha224","id":""},"sha384":{"sign":"ecdsa","hash":"sha384","id":""},"sha512":{"sign":"ecdsa","hash":"sha512","id":""},"DSA-SHA":{"sign":"dsa","hash":"sha1","id":""},"DSA-SHA1":{"sign":"dsa","hash":"sha1","id":""},"DSA":{"sign":"dsa","hash":"sha1","id":""},"DSA-WITH-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-WITH-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-WITH-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-WITH-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-RIPEMD160":{"sign":"dsa","hash":"rmd160","id":""},"ripemd160WithRSA":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"RSA-RIPEMD160":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"md5WithRSAEncryption":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"},"RSA-MD5":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"}}')},64589:e=>{"use strict";e.exports=JSON.parse('{"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}')},23241:e=>{"use strict";e.exports=JSON.parse('{"modp1":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},"modp2":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},"modp5":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},"modp14":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},"modp15":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},"modp16":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},"modp17":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},"modp18":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}')},1636:e=>{"use strict";e.exports={rE:"6.5.5"}},81813:e=>{"use strict";e.exports=JSON.parse('{"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/3gpphal+json":{"source":"iana","compressible":true},"application/3gpphalforms+json":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/ace+cbor":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/alto-updatestreamcontrol+json":{"source":"iana","compressible":true},"application/alto-updatestreamparams+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/at+jwt":{"source":"iana"},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true,"extensions":["atomdeleted"]},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atsc-dwd+xml":{"source":"iana","compressible":true,"extensions":["dwd"]},"application/atsc-dynamic-event-message":{"source":"iana"},"application/atsc-held+xml":{"source":"iana","compressible":true,"extensions":["held"]},"application/atsc-rdt+json":{"source":"iana","compressible":true},"application/atsc-rsat+xml":{"source":"iana","compressible":true,"extensions":["rsat"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true,"extensions":["xcs"]},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/captive+json":{"source":"iana","compressible":true},"application/cbor":{"source":"iana"},"application/cbor-seq":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana","compressible":true,"extensions":["cdfx"]},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/city+json":{"source":"iana","compressible":true},"application/clr":{"source":"iana"},"application/clue+xml":{"source":"iana","compressible":true},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true,"extensions":["cpl"]},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dash-patch+xml":{"source":"iana","compressible":true,"extensions":["mpp"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/dns-message":{"source":"iana"},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dots+cbor":{"source":"iana"},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["es","ecma"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/elm+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/elm+xml":{"source":"iana","compressible":true},"application/emergencycalldata.cap+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true,"extensions":["emotionml"]},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/expect-ct-report+json":{"source":"iana","compressible":true},"application/express":{"source":"iana","extensions":["exp"]},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana","compressible":true,"extensions":["fdt"]},"application/fhir+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/fhir+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/flexfec":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geopackage+sqlite3":{"source":"iana"},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true,"extensions":["its"]},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/jscalendar+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true,"extensions":["lgr"]},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana","compressible":true},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lpf+zip":{"source":"iana","compressible":false},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true,"extensions":["mpf"]},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mipc":{"source":"iana"},"application/missing-blocks+cbor-seq":{"source":"iana"},"application/mmt-aei+xml":{"source":"iana","compressible":true,"extensions":["maei"]},"application/mmt-usd+xml":{"source":"iana","compressible":true,"extensions":["musd"]},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true},"application/mrb-publish+xml":{"source":"iana","compressible":true},"application/msc-ivr+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msc-mixer+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/multipart-core":{"source":"iana"},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana","extensions":["nq"]},"application/n-triples":{"source":"iana","extensions":["nt"]},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana","charset":"US-ASCII"},"application/news-groupinfo":{"source":"iana","charset":"US-ASCII"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana","extensions":["cjs"]},"application/nss":{"source":"iana"},"application/oauth-authz-req+jwt":{"source":"iana"},"application/oblivious-dns-message":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odm+xml":{"source":"iana","compressible":true},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{"source":"iana","compressible":true},"application/oscore":{"source":"iana"},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p21":{"source":"iana"},"application/p21+zip":{"source":"iana","compressible":false},"application/p2p-overlay+xml":{"source":"iana","compressible":true,"extensions":["relo"]},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pem-certificate-chain":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana","extensions":["asc"]},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pidf-diff+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true,"extensions":["provx"]},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.cyn":{"source":"iana","charset":"7-BIT"},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/pvd+json":{"source":"iana","compressible":true},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true,"extensions":["rapd"]},"application/route-s-tsid+xml":{"source":"iana","compressible":true,"extensions":["sls"]},"application/route-usd+xml":{"source":"iana","compressible":true,"extensions":["rusd"]},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sarif+json":{"source":"iana","compressible":true},"application/sarif-external-properties+json":{"source":"iana","compressible":true},"application/sbe":{"source":"iana"},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true,"extensions":["senmlx"]},"application/senml-etch+cbor":{"source":"iana"},"application/senml-etch+json":{"source":"iana","compressible":true},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true,"extensions":["sensmlx"]},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana","extensions":["siv","sieve"]},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/sipc":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spdx+json":{"source":"iana","compressible":true},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/stix+json":{"source":"iana","compressible":true},"application/swid+xml":{"source":"iana","compressible":true,"extensions":["swidtag"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/td+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/tetra_isi":{"source":"iana"},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/token-introspection+jwt":{"source":"iana"},"application/toml":{"compressible":true,"extensions":["toml"]},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana","extensions":["trig"]},"application/ttml+xml":{"source":"iana","compressible":true,"extensions":["ttml"]},"application/tve-trigger":{"source":"iana"},"application/tzif":{"source":"iana"},"application/tzif-leap":{"source":"iana"},"application/ubjson":{"compressible":false,"extensions":["ubj"]},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true,"extensions":["rsheet"]},"application/urc-targetdesc+xml":{"source":"iana","compressible":true,"extensions":["td"]},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true,"extensions":["1km"]},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.5gnas":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gtpc":{"source":"iana"},"application/vnd.3gpp.interworking-data":{"source":"iana"},"application/vnd.3gpp.lpp":{"source":"iana"},"application/vnd.3gpp.mc-signalling-ear":{"source":"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-init-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-transmission-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ngap":{"source":"iana"},"application/vnd.3gpp.pfcp":{"source":"iana"},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.s1ap":{"source":"iana"},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.afplinedata-pagedef":{"source":"iana"},"application/vnd.afpc.cmoca-cmresource":{"source":"iana"},"application/vnd.afpc.foca-charset":{"source":"iana"},"application/vnd.afpc.foca-codedfont":{"source":"iana"},"application/vnd.afpc.foca-codepage":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.afpc.modca-cmtable":{"source":"iana"},"application/vnd.afpc.modca-formdef":{"source":"iana"},"application/vnd.afpc.modca-mediummap":{"source":"iana"},"application/vnd.afpc.modca-objectcontainer":{"source":"iana"},"application/vnd.afpc.modca-overlay":{"source":"iana"},"application/vnd.afpc.modca-pagesegment":{"source":"iana"},"application/vnd.age":{"source":"iana","extensions":["age"]},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.ota":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.arrow.file":{"source":"iana"},"application/vnd.apache.arrow.stream":{"source":"iana"},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.aplextor.warrp+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.keynote":{"source":"iana","extensions":["key"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.numbers":{"source":"iana","extensions":["numbers"]},"application/vnd.apple.pages":{"source":"iana","extensions":["pages"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true,"extensions":["bmml"]},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.error":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.bpf":{"source":"iana"},"application/vnd.bpf3":{"source":"iana"},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.ciedi":{"source":"iana"},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.cryptii.pipe+json":{"source":"iana","compressible":true},"application/vnd.crypto-shade-file":{"source":"iana"},"application/vnd.cryptomator.encrypted":{"source":"iana"},"application/vnd.cryptomator.vault":{"source":"iana"},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.cyclonedx+json":{"source":"iana","compressible":true},"application/vnd.cyclonedx+xml":{"source":"iana","compressible":true},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.d3m-dataset":{"source":"iana"},"application/vnd.d3m-problem":{"source":"iana"},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.dbf":{"source":"iana","extensions":["dbf"]},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume.movie":{"source":"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbisl+xml":{"source":"iana","compressible":true},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.eclipse.ditto+json":{"source":"iana","compressible":true},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eu.kasparian.car+json":{"source":"iana","compressible":true},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.exstream-empower+zip":{"source":"iana","compressible":false},"application/vnd.exstream-package":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.familysearch.gedcom+zip":{"source":"iana","compressible":false},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.ficlab.flb+zip":{"source":"iana","compressible":false},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujifilm.fb.docuworks":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.container":{"source":"iana"},"application/vnd.fujifilm.fb.jfi+xml":{"source":"iana","compressible":true},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.futoin+cbor":{"source":"iana"},"application/vnd.futoin+json":{"source":"iana","compressible":true},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.gentics.grd+json":{"source":"iana","compressible":true},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.slides":{"source":"iana"},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hl7cda+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hl7v2+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.iso11783-10+zip":{"source":"iana","compressible":false},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las":{"source":"iana"},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.laszip":{"source":"iana"},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.logipipe.circuit+zip":{"source":"iana","compressible":false},"application/vnd.loom":{"source":"iana"},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana","extensions":["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxar.archive.3tz+zip":{"source":"iana","compressible":false},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.nacamar.ybrid+json":{"source":"iana","compressible":true},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nebumind.line":{"source":"iana"},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true,"extensions":["ac"]},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oci.image.manifest.v1+json":{"source":"iana","compressible":true},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+cbor":{"source":"iana"},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true,"extensions":["obgx"]},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true,"extensions":["osm"]},"application/vnd.opentimestamps.ots":{"source":"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos.xml":{"source":"iana"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.patientecommsdoc":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana","extensions":["rar"]},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.resilient.logic":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sar":{"source":"iana"},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.seis+json":{"source":"iana","compressible":true},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shade-save-file":{"source":"iana"},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.shopkick+json":{"source":"iana","compressible":true},"application/vnd.shp":{"source":"iana"},"application/vnd.shx":{"source":"iana"},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.snesdev-page-table":{"source":"iana"},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true,"extensions":["fo"]},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.sycle+xml":{"source":"iana","compressible":true},"application/vnd.syft+json":{"source":"iana","compressible":true},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","charset":"UTF-8","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.veritone.aion+json":{"source":"iana","compressible":true},"application/vnd.veryant.thin":{"source":"iana"},"application/vnd.ves.encrypted":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","charset":"UTF-8","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.dpp":{"source":"iana"},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"source":"iana","compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true,"extensions":["wif"]},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-iwork-keynote-sffkey":{"extensions":["key"]},"application/x-iwork-numbers-sffnumbers":{"extensions":["numbers"]},"application/x-iwork-pages-sffpages":{"extensions":["pages"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-keepass2":{"extensions":["kdbx"]},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-pki-message":{"source":"iana"},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"iana","extensions":["der","crt","pem"]},"application/x-x509-ca-ra-cert":{"source":"iana"},"application/x-x509-next-ca-cert":{"source":"iana"},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true,"extensions":["xav"]},"application/xcap-caps+xml":{"source":"iana","compressible":true,"extensions":["xca"]},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true,"extensions":["xel"]},"application/xcap-error+xml":{"source":"iana","compressible":true},"application/xcap-ns+xml":{"source":"iana","compressible":true,"extensions":["xns"]},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true,"extensions":["xlf"]},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xsl","xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"application/zstd":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana","extensions":["amr"]},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/flexfec":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/mhas":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana","extensions":["mxmf"]},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx","opus"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/scip":{"source":"iana"},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sofa":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tetra_acelp":{"source":"iana"},"audio/tetra_acelp_bb":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/tsvcis":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dts.uhd":{"source":"iana"},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","compressible":true,"extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana","extensions":["exr"]},"image/apng":{"compressible":false,"extensions":["apng"]},"image/avci":{"source":"iana","extensions":["avci"]},"image/avcs":{"source":"iana","extensions":["avcs"]},"image/avif":{"source":"iana","compressible":false,"extensions":["avif"]},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana","extensions":["drle"]},"image/emf":{"source":"iana","extensions":["emf"]},"image/fits":{"source":"iana","extensions":["fits"]},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/heic":{"source":"iana","extensions":["heic"]},"image/heic-sequence":{"source":"iana","extensions":["heics"]},"image/heif":{"source":"iana","extensions":["heif"]},"image/heif-sequence":{"source":"iana","extensions":["heifs"]},"image/hej2k":{"source":"iana","extensions":["hej2"]},"image/hsj2":{"source":"iana","extensions":["hsj2"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana","extensions":["jls"]},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jph":{"source":"iana","extensions":["jph"]},"image/jphc":{"source":"iana","extensions":["jhc"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/jxr":{"source":"iana","extensions":["jxr"]},"image/jxra":{"source":"iana","extensions":["jxra"]},"image/jxrs":{"source":"iana","extensions":["jxrs"]},"image/jxs":{"source":"iana","extensions":["jxs"]},"image/jxsc":{"source":"iana","extensions":["jxsc"]},"image/jxsi":{"source":"iana","extensions":["jxsi"]},"image/jxss":{"source":"iana","extensions":["jxss"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/ktx2":{"source":"iana","extensions":["ktx2"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana","extensions":["pti"]},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana","extensions":["t38"]},"image/tiff":{"source":"iana","compressible":false,"extensions":["tif","tiff"]},"image/tiff-fx":{"source":"iana","extensions":["tfx"]},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana","extensions":["azv"]},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana","compressible":true,"extensions":["ico"]},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-dds":{"compressible":true,"extensions":["dds"]},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.pco.b16":{"source":"iana","extensions":["b16"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana","extensions":["tap"]},"image/vnd.valve.source.texture":{"source":"iana","extensions":["vtf"]},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana","extensions":["pcx"]},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana","extensions":["wmf"]},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana","extensions":["3mf"]},"model/e57":{"source":"iana"},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/mtl":{"source":"iana","extensions":["mtl"]},"model/obj":{"source":"iana","extensions":["obj"]},"model/step":{"source":"iana"},"model/step+xml":{"source":"iana","compressible":true,"extensions":["stpx"]},"model/step+zip":{"source":"iana","compressible":false,"extensions":["stpz"]},"model/step-xml+zip":{"source":"iana","compressible":false,"extensions":["stpxz"]},"model/stl":{"source":"iana","extensions":["stl"]},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana","extensions":["ogex"]},"model/vnd.parasolid.transmit.binary":{"source":"iana","extensions":["x_b"]},"model/vnd.parasolid.transmit.text":{"source":"iana","extensions":["x_t"]},"model/vnd.pytha.pyox":{"source":"iana"},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.sap.vds":{"source":"iana","extensions":["vds"]},"model/vnd.usdz+zip":{"source":"iana","compressible":false,"extensions":["usdz"]},"model/vnd.valve.source.compiled-map":{"source":"iana","extensions":["bsp"]},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana","extensions":["x3db"]},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana","extensions":["x3dv"]},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana"},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/cql":{"source":"iana"},"text/cql-expression":{"source":"iana"},"text/cql-identifier":{"source":"iana"},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/fhirpath":{"source":"iana"},"text/flexfec":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/gff3":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"compressible":true,"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mdx":{"compressible":true,"extensions":["mdx"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana","charset":"UTF-8"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana","charset":"UTF-8"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shaclc":{"source":"iana"},"text/shex":{"source":"iana","extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/spdx":{"source":"iana","extensions":["spdx"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana","charset":"UTF-8"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana","charset":"UTF-8"},"text/vnd.familysearch.gedcom":{"source":"iana","extensions":["ged"]},"text/vnd.ficlab.flt":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hans":{"source":"iana"},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.senx.warpscript":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sosi":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","charset":"UTF-8","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana","charset":"UTF-8"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"compressible":true,"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/av1":{"source":"iana"},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/ffv1":{"source":"iana"},"video/flexfec":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana","extensions":["m4s"]},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/jxsv":{"source":"iana"},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/scip":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vc2":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vnd.youtube.yt":{"source":"iana"},"video/vp8":{"source":"iana"},"video/vp9":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}}')},15579:e=>{"use strict";e.exports=JSON.parse('{"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}')}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var o=t[r]={id:r,loaded:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e);var r={};(()=>{"use strict";n.r(r),n.d(r,{default:()=>jE});function e(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))}Object.create;Object.create;"function"==typeof SuppressedError&&SuppressedError;var t=n(88055),i=n.n(t); +/** + * @license lucide v0.376.1 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */ +const o=(e,t,n=[])=>{const r=document.createElementNS("http://www.w3.org/2000/svg",e);return Object.keys(t).forEach((e=>{r.setAttribute(e,String(t[e]))})),n.length&&n.forEach((e=>{const t=o(...e);r.appendChild(t)})),r};var s=([e,t,n])=>o(e,t,n); +/** + * @license lucide v0.376.1 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */ +const a={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},u=["svg",a,[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"}],["path",{d:"M3 3v5h5"}]]],c=["svg",a,[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"}],["path",{d:"M3 3v5h5"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16"}],["path",{d:"M16 16h5v5"}]]],d=["svg",a,[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4"}],["path",{d:"M10 9H8"}],["path",{d:"M16 13H8"}],["path",{d:"M16 17H8"}]]],l=require("obsidian"),h="application/octet-stream",f="remotely-save",p="remotely-save-cb-onedrive",m="remotely-save-cb-dropbox",g=6912e6,y="_debug_remotely_save/",v="1.0.0",b=!l.Platform.isAndroidApp&&(0,l.requireApiVersion)("0.13.26")||l.Platform.isAndroidApp&&(0,l.requireApiVersion)("0.14.6");function w(e,t,n){var r;if(void 0===n&&(n={}),!t.codes){t.codes={};for(var i=0;i=8&&(a-=8,s[c++]=255&u>>a)}if(a>=t.bits||255&u<<8-a)throw new SyntaxError("Unexpected end of data");return s}function _(e,t,n){void 0===n&&(n={});for(var r=n.pad,i=void 0===r||r,o=(1<t.bits;)a-=t.bits,s+=t.chars[o&u>>a];if(a&&(s+=t.chars[o&u<{if(!t&&!n)throw Error("parameter error for isHiddenPath");const r=S.posix.normalize(e).split("/");for(const e of r)if("."!==e&&".."!==e&&""!==e){if(t&&"."===e[0])return!0;if(n&&"_"===e[0])return!0}return!1},I=(e,t=!1)=>{const n=[];if(""===e||"/"===e)return n;const r=e.split("/");for(let e=0;e+1e(void 0,void 0,void 0,(function*(){const e=I(t);for(const t of e){(yield n.adapter.exists(t))||(console.info(`mkdir ${t}`),yield n.adapter.mkdir(t))}})),F=e=>e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength),O=e=>void 0!==e&&!k()("\\p{Cc}|\\p{Cf}|\\p{Co}|\\p{Cn}|\\p{Zl}|\\p{Zp}","A").test(e),B=e=>/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC2\uDECE-\uDEDB\uDEE0-\uDEE8]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g.test(e),P=(e,t=!0)=>{const n={};return e.forEach(((e,r)=>{t?n[r.toLowerCase()]=e:n[r]=e})),n},N=e=>{const t=S.posix.dirname(e);return"."===t||"/"===t?"/":t.endsWith("/")?t:`${t}/`},j=e=>[...e].reverse().join(""),L=e=>{if(void 0===e||""===e||"."===e||".."===e||e.startsWith("/"))throw Error(`do not know which level for ${e}`);let t=e;return e.endsWith("/")&&(t=e.slice(0,-1)),t.split("/").length},U=e=>{if(null!=e&&!Number.isNaN(e))return window.moment(e).format()},q=(t,n)=>e(void 0,void 0,void 0,(function*(){const e=yield t.adapter.stat(n);return null==e||((void 0===e.ctime||null===e.ctime||Number.isNaN(e.ctime))&&(e.ctime=void 0),(void 0===e.mtime||null===e.mtime||Number.isNaN(e.mtime))&&(e.mtime=void 0),void 0!==e.size&&null!==e.size&&!Number.isNaN(e.size)||"folder"!==e.type||(e.size=0)),e})),$=(e,t)=>{const n=[".git",".github",".gitlab",".svn","node_modules",".DS_Store","__MACOSX ","Icon\r","desktop.ini","Desktop.ini","thumbs.db","Thumbs.db"].concat(void 0!==t?t:[]);for(const t of n)if(e===t||e===`${t}/`||e.endsWith(`/${t}`)||e.endsWith(`/${t}/`))return!0;return!1},z=e=>{const t=document.createElement("template");return t.innerHTML=e,t.content},H=e=>new Promise((t=>setTimeout(t,e))),K=(t,n)=>{const r=document.getElementsByClassName("app-container")[0],i=document.querySelector(".is-mobile .app-container .status-bar");if(void 0===r||void 0===i)return console.warn("give up watching appContainer for statusbar"),void console.warn(`appContainer=${r}, statusbar=${i}`);if("enable"===t){const t=(t,n)=>e(void 0,void 0,void 0,(function*(){for(const e of t)if("childList"===e.type&&e.addedNodes.length>0){const t=e.addedNodes[0];if(t.className.contains("mobile-navbar")||t.className.contains("mobile-toolbar")){yield H(300);const e=window.getComputedStyle(t).getPropertyValue("height");i.style.setProperty("display","flex"),i.style.setProperty("margin-bottom",e)}}})),n=new MutationObserver(t);n.observe(r,{attributes:!1,childList:!0,characterData:!1,subtree:!1});try{const e=document.getElementsByClassName("mobile-navbar")[0],t=window.getComputedStyle(e).getPropertyValue("height");i.style.setProperty("display","flex"),i.style.setProperty("margin-bottom",t)}catch(e){}return n}return void 0!==n&&(console.debug("disconnect oldAppContainerObserver"),n.disconnect(),n=void 0),i.style.removeProperty("display"),void i.style.removeProperty("margin-bottom")},W=e=>{const t=[],n=[e];let r=0;for(;n.length;){const e=n.pop();switch(typeof e){case"boolean":r+=4;break;case"string":r+=2*e.length;break;case"number":r+=8;break;case"object":if(!t.includes(e)){t.push(e);for(const t in e)e.hasOwnProperty(t)&&n.push(e[t])}}}return r};var G=n(48287).Buffer;const V=e=>{if(null==e)return console.debug("the messy config is null or undefined, skip"),e;if("readme"in e&&"d"in e){return JSON.parse(M(j(e.d),{out:G.allocUnsafe,loose:!0}).toString("utf-8"))}return e};var Y,Z=n(34783),J=n(58253),X=n.n(J);class Q{}const ee={accessToken:"",clientID:null!==(Y="uwxv4ofkrmc4zzf")?Y:"",refreshToken:"",accessTokenExpiresInSeconds:0,accessTokenExpiresAtTime:0,accountID:"",username:"",credentialsShouldBeDeletedAtTime:0},te=(e,t)=>{let n=e;return"/"===e||""===e?n=`/${t}`:e.startsWith("/")?(console.warn(`why the path ${e} starts with '/'? but we just go on.`),n=`/${t}${e}`):n=`/${t}/${e}`,n.endsWith("/")&&(n=n.slice(0,n.length-1)),n},ne=(e,t)=>{let n=((e,t)=>{if(e!==`/${t}`&&!e.startsWith(`/${t}/`))throw Error(`"${e}" doesn't starts with "/${t}/"`);return e.slice(`/${t}/`.length)})(e.path_display,t);if("folder"!==e[".tag"]||n.endsWith("/")||(n=`${n}/`),"folder"===e[".tag"])return{key:n,keyRaw:n,size:0,sizeRaw:0};if("file"===e[".tag"]){return{key:n,keyRaw:n,mtimeCli:Date.parse(e.client_modified).valueOf(),mtimeSvr:Date.parse(e.server_modified).valueOf(),size:e.size,sizeRaw:e.size,hash:e.content_hash}}throw Error("do not support deleted tag")};function re(t){return e(this,arguments,void 0,(function*(e,t=""){const n=[1,2,4,8];for(let r=0;re(void 0,void 0,void 0,(function*(){try{const e=yield fetch("https://api.dropboxapi.com/oauth2/token",{method:"POST",body:new URLSearchParams({code:r,grant_type:"authorization_code",code_verifier:n,client_id:t,redirect_uri:`obsidian://${m}`})});return yield e.json()}catch(e){console.error(e),void 0!==i&&(yield i(e))}})),oe=(t,n,r)=>e(void 0,void 0,void 0,(function*(){console.info("start updating local info of Dropbox token"),t.accessToken=n.access_token,t.accessTokenExpiresInSeconds=Number.parseInt(n.expires_in),t.accessTokenExpiresAtTime=Date.now()+1e3*Number.parseInt(n.expires_in)-1e4,t.credentialsShouldBeDeletedAtTime=Date.now()+g,void 0!==n.refresh_token&&(t.refreshToken=n.refresh_token,t.accountID=n.account_id),void 0!==r&&(yield r()),console.info("finish updating local info of Dropbox token")}));class se extends Q{constructor(e,t,n){super(),this.kind="dropbox",this.dropboxConfig=e,this.remoteBaseDir=this.dropboxConfig.remoteBaseDir||t||"",this.saveUpdatedConfigFunc=n,this.vaultFolderExists=!1,this.foldersCreatedBefore=new Set}_init(){return e(this,void 0,void 0,(function*(){if(""===this.dropboxConfig.accessToken||""===this.dropboxConfig.refreshToken)throw Error("The user has not manually auth yet.");const t=Date.now(),n={"Cache-Control":"no-cache"};if(this.dropboxConfig.accessTokenExpiresAtTime>t)this.dropbox=new Z.Dropbox({accessToken:this.dropboxConfig.accessToken,customHeaders:n});else{if(""===this.dropboxConfig.refreshToken)throw Error("We need to automatically refresh token but none is stored.");const t=yield(r=this.dropboxConfig.clientID,i=this.dropboxConfig.refreshToken,e(void 0,void 0,void 0,(function*(){try{console.info("start auto getting refreshed Dropbox access token.");const e=yield fetch("https://api.dropboxapi.com/oauth2/token",{method:"POST",body:new URLSearchParams({grant_type:"refresh_token",refresh_token:i,client_id:r})}),t=yield e.json();return console.info("finish auto getting refreshed Dropbox access token."),t}catch(e){throw console.error(e),e}})));oe(this.dropboxConfig,t,this.saveUpdatedConfigFunc),this.dropbox=new Z.Dropbox({accessToken:this.dropboxConfig.accessToken,customHeaders:n})}var r,i;if(this.vaultFolderExists);else{const e=yield this.dropbox.filesListFolder({path:"",recursive:!1});for(const t of e.result.entries)if(t.path_display===`/${this.remoteBaseDir}`){this.vaultFolderExists=!0;break}if(!this.vaultFolderExists){if(console.info(`remote does not have folder /${this.remoteBaseDir}`),B(`/${this.remoteBaseDir}`))throw new Error(`/${this.remoteBaseDir}: Error: Dropbox does not support emoji in folder names.`);yield this.dropbox.filesCreateFolderV2({path:`/${this.remoteBaseDir}`}),console.info(`remote folder /${this.remoteBaseDir} created`),this.vaultFolderExists=!0}}return this}))}walk(){return e(this,void 0,void 0,(function*(){yield this._init();let e=yield this.dropbox.filesListFolder({path:`/${this.remoteBaseDir}`,recursive:!0,include_deleted:!1,limit:1e3});if(200!==e.status)throw Error(JSON.stringify(e));const t=e.result.entries.filter((e=>"deleted"!==e[".tag"])).filter((e=>e.path_display!==`/${this.remoteBaseDir}`)).map((e=>ne(e,this.remoteBaseDir)));for(;e.result.has_more;){if(e=yield this.dropbox.filesListFolderContinue({cursor:e.result.cursor}),200!==e.status)throw Error(JSON.stringify(e));const n=e.result.entries.filter((e=>"deleted"!==e[".tag"])).filter((e=>e.path_display!==`/${this.remoteBaseDir}`)).map((e=>ne(e,this.remoteBaseDir)));t.push(...n)}return(e=>{for(const t of e)if(void 0===t.key)throw Error("dropbox list should all have key, but meet undefined");e.sort(((e,t)=>e.key.length-t.key.length));const t={"":""};for(const n of e){let e=N(n.key);"/"===e&&(e="");const r=e.toLocaleLowerCase(),i=n.key.split("/");if(n.key.endsWith("/")){if(!t.hasOwnProperty(r))throw Error(`${e} doesn't have cases record??`);{const e=`${t[r]}${i.slice(-2).join("/")}`;t[e.toLocaleLowerCase()]=e,n.key=e}}else{if(!t.hasOwnProperty(r))throw Error(`${e} doesn't have cases record??`);{const e=`${t[r]}${i.slice(-1).join("/")}`;n.key=e}}}})(t),t}))}stat(t){return e(this,void 0,void 0,(function*(){return yield this._init(),yield this._statFromRoot(te(t,this.remoteBaseDir))}))}_statFromRoot(t){return e(this,void 0,void 0,(function*(){const e=yield re((()=>this.dropbox.filesGetMetadata({path:t})));if(void 0===e)throw Error("dropbox.filesGetMetadata undefinded");if(200!==e.status)throw Error(JSON.stringify(e));return ne(e.result,this.remoteBaseDir)}))}mkdir(t,n,r){return e(this,void 0,void 0,(function*(){if(!t.endsWith("/"))throw Error(`you should not call mkdir on ${t}`);yield this._init();const e=te(t,this.remoteBaseDir);return yield this._mkdirFromRoot(e,n,r)}))}_mkdirFromRoot(t,n,r){return e(this,void 0,void 0,(function*(){var e,n,r;if(B(t))throw new Error(`${t}: Error: Dropbox does not support emoji in file / folder names.`);if(null===(e=this.foldersCreatedBefore)||void 0===e?void 0:e.has(t));else try{yield re((()=>this.dropbox.filesCreateFolderV2({path:t})),t),null===(n=this.foldersCreatedBefore)||void 0===n||n.add(t)}catch(e){const n=e;if(void 0===n.status)throw n;if(409!==n.status)throw n;null===(r=this.foldersCreatedBefore)||void 0===r||r.add(t)}return yield this._statFromRoot(t)}))}writeFile(t,n,r,i){return e(this,void 0,void 0,(function*(){if(t.endsWith("/"))throw Error(`you should not call writeFile on ${t}`);yield this._init();const e=te(t,this.remoteBaseDir);return yield this._writeFileFromRoot(e,n,r,i,t)}))}_writeFileFromRoot(t,n,r,i,o){return e(this,void 0,void 0,(function*(){var e;if(B(o))throw new Error(`${o}: Error: Dropbox does not support emoji in file / folder names.`);const s=1e3*Math.floor(r/1e3),a=(Math.floor(i/1e3),new Date(s).toISOString().replace(/\.\d{3}Z$/,"Z"));if(yield re((()=>this.dropbox.filesUpload({path:t,contents:n,mode:{".tag":"overwrite"},client_modified:a})),o),void 0!==this.foldersCreatedBefore){const t=I(o).map((e=>te(e,this.remoteBaseDir)));for(const n of t)null===(e=this.foldersCreatedBefore)||void 0===e||e.add(n)}return yield this._statFromRoot(t)}))}readFile(t){return e(this,void 0,void 0,(function*(){if(yield this._init(),t.endsWith("/"))throw new Error(`you should not call readFile on folder ${t}`);const e=te(t,this.remoteBaseDir);return yield this._readFileFromRoot(e)}))}_readFileFromRoot(t){return e(this,void 0,void 0,(function*(){const e=yield re((()=>this.dropbox.filesDownload({path:t})),`downloadFromRemoteRaw=${t}`);if(void 0===e)throw Error(`unknown rsp from dropbox download: ${e}`);if(void 0!==e.result.fileBlob){const t=e.result.fileBlob;return yield t.arrayBuffer()}if(void 0!==e.result.fileBinary){const t=e.result.fileBinary;return F(t)}throw Error(`unknown rsp from dropbox download: ${e}`)}))}rm(t){return e(this,void 0,void 0,(function*(){if("/"===t)return;const e=te(t,this.remoteBaseDir);yield this._init();try{yield re((()=>this.dropbox.filesDeleteV2({path:e})),t)}catch(e){console.error("some error while deleting"),console.error(e)}}))}checkConnect(t){return e(this,void 0,void 0,(function*(){try{yield this._init();return void 0!==(yield this._statFromRoot(`/${this.remoteBaseDir}`))}catch(e){return console.debug(e),null==t||t(e),!1}}))}getUserDisplayName(){return e(this,void 0,void 0,(function*(){yield this._init();return(yield this.dropbox.usersGetCurrentAccount()).result.name.display_name}))}revokeAuth(){return e(this,void 0,void 0,(function*(){try{return yield this._init(),yield this.dropbox.authTokenRevoke(),!0}catch(e){return!1}}))}allowEmptyFile(){return!0}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +const ae={LIBRARY_NAME:"MSAL.JS",SKU:"msal.js.common",CACHE_PREFIX:"msal",DEFAULT_AUTHORITY:"https://login.microsoftonline.com/common/",DEFAULT_AUTHORITY_HOST:"login.microsoftonline.com",DEFAULT_COMMON_TENANT:"common",ADFS:"adfs",DSTS:"dstsv2",AAD_INSTANCE_DISCOVERY_ENDPT:"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=",CIAM_AUTH_URL:".ciamlogin.com",AAD_TENANT_DOMAIN_SUFFIX:".onmicrosoft.com",RESOURCE_DELIM:"|",NO_ACCOUNT:"NO_ACCOUNT",CLAIMS:"claims",CONSUMER_UTID:"9188040d-6c67-4c5b-b112-36a304b66dad",OPENID_SCOPE:"openid",PROFILE_SCOPE:"profile",OFFLINE_ACCESS_SCOPE:"offline_access",EMAIL_SCOPE:"email",CODE_RESPONSE_TYPE:"code",CODE_GRANT_TYPE:"authorization_code",RT_GRANT_TYPE:"refresh_token",FRAGMENT_RESPONSE_MODE:"fragment",S256_CODE_CHALLENGE_METHOD:"S256",URL_FORM_CONTENT_TYPE:"application/x-www-form-urlencoded;charset=utf-8",AUTHORIZATION_PENDING:"authorization_pending",NOT_DEFINED:"not_defined",EMPTY_STRING:"",NOT_APPLICABLE:"N/A",FORWARD_SLASH:"/",IMDS_ENDPOINT:"http://169.254.169.254/metadata/instance/compute/location",IMDS_VERSION:"2020-06-01",IMDS_TIMEOUT:2e3,AZURE_REGION_AUTO_DISCOVER_FLAG:"TryAutoDetect",REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX:"login.microsoft.com",KNOWN_PUBLIC_CLOUDS:["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"],TOKEN_RESPONSE_TYPE:"token",ID_TOKEN_RESPONSE_TYPE:"id_token",SHR_NONCE_VALIDITY:240,INVALID_INSTANCE:"invalid_instance"},ue=200,ce=200,de=299,le=302,he=400,fe=499,pe=500,me=500,ge=599,ye=[ae.OPENID_SCOPE,ae.PROFILE_SCOPE,ae.OFFLINE_ACCESS_SCOPE],ve=[...ye,ae.EMAIL_SCOPE],be="Content-Type",we="Retry-After",_e="X-AnchorMailbox",xe="x-ms-request-id",De="x-ms-httpver",Ee={COMMON:"common",ORGANIZATIONS:"organizations",CONSUMERS:"consumers"},Me="access_token",Ae="xms_cc",Se={LOGIN:"login",SELECT_ACCOUNT:"select_account",CONSENT:"consent",NONE:"none",CREATE:"create",NO_SESSION:"no_session"},Ce={PLAIN:"plain",S256:"S256"},ke={QUERY:"query",FRAGMENT:"fragment",FORM_POST:"form_post"},Te="authorization_code",Ie="password",Re="refresh_token",Fe="device_code",Oe="MSSTS",Be="ADFS",Pe="Generic",Ne={CACHE_KEY_SEPARATOR:"-",CLIENT_INFO_SEPARATOR:"."},je={ID_TOKEN:"IdToken",ACCESS_TOKEN:"AccessToken",ACCESS_TOKEN_WITH_AUTH_SCHEME:"AccessToken_With_AuthScheme",REFRESH_TOKEN:"RefreshToken"},Le="appmetadata",Ue="1",qe="authority-metadata",$e=86400,ze="config",He="cache",Ke="network",We="hardcoded_values",Ge={SCHEMA_VERSION:5,MAX_CUR_HEADER_BYTES:80,MAX_LAST_HEADER_BYTES:330,MAX_CACHED_ERRORS:50,CACHE_KEY:"server-telemetry",CATEGORY_SEPARATOR:"|",VALUE_SEPARATOR:",",OVERFLOW_TRUE:"1",OVERFLOW_FALSE:"0",UNKNOWN_ERROR:"unknown_error"},Ve={BEARER:"Bearer",POP:"pop",SSH:"ssh-cert"},Ye=60,Ze=3600,Je="throttling",Xe="retry-after, h429",Qe="invalid_grant",et="client_mismatch",tt="username",nt="password",rt=200,it=400,ot="1",st="3",at="4",ut="2",ct="4",dt="5",lt="0",ht="1",ft="2",pt="3",mt="4",gt="AZURE_POD_IDENTITY_AUTHORITY_HOST",yt="IDENTITY_ENDPOINT",vt="IMDS_ENDPOINT",bt="MSI_ENDPOINT",wt="user-assigned-client-id",_t="user-assigned-resource-id",xt="user-assigned-object-id",Dt="get",Et="post",Mt={SUCCESS:ue,SUCCESS_RANGE_START:ce,SUCCESS_RANGE_END:de,SERVER_ERROR:pe},At="sha256",St="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~",Ct="msal.js.node",kt="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",Tt="authorization_pending",It="http://",Rt="localhost",Ft=62,Ot=371,Bt=671,Pt=871,Nt=872,jt="RS256",Lt="aud",Ut="exp",qt="iss",$t="sub",zt="nbf",Ht="jti",Kt=100,Wt=5e3,Gt="unexpected_error",Vt="post_request_failed",Yt={[Gt]:"Unexpected error in authentication.",[Vt]:"Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details."};class Zt extends Error{constructor(e,t,n){super(t?`${e}: ${t}`:e),Object.setPrototypeOf(this,Zt.prototype),this.errorCode=e||ae.EMPTY_STRING,this.errorMessage=t||ae.EMPTY_STRING,this.subError=n||ae.EMPTY_STRING,this.name="AuthError"}setCorrelationId(e){this.correlationId=e}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +class Jt extends Zt{constructor(e,t,n,r){super(e,t,n),this.name="ServerError",this.errorNo=r,Object.setPrototypeOf(this,Jt.prototype)}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +var Xt;!function(e){e[e.Error=0]="Error",e[e.Warning=1]="Warning",e[e.Info=2]="Info",e[e.Verbose=3]="Verbose",e[e.Trace=4]="Trace"}(Xt||(Xt={}));class Qt{constructor(e,t,n){this.level=Xt.Info;const r=e||Qt.createDefaultLoggerOptions();this.localCallback=r.loggerCallback||(()=>{}),this.piiLoggingEnabled=r.piiLoggingEnabled||!1,this.level="number"==typeof r.logLevel?r.logLevel:Xt.Info,this.correlationId=r.correlationId||ae.EMPTY_STRING,this.packageName=t||ae.EMPTY_STRING,this.packageVersion=n||ae.EMPTY_STRING}static createDefaultLoggerOptions(){return{loggerCallback:()=>{},piiLoggingEnabled:!1,logLevel:Xt.Info}}clone(e,t,n){return new Qt({loggerCallback:this.localCallback,piiLoggingEnabled:this.piiLoggingEnabled,logLevel:this.level,correlationId:n||this.correlationId},e,t)}logMessage(e,t){if(t.logLevel>this.level||!this.piiLoggingEnabled&&t.containsPii)return;const n=`${`[${(new Date).toUTCString()}] : [${t.correlationId||this.correlationId||""}]`} : ${this.packageName}@${this.packageVersion} : ${Xt[t.logLevel]} - ${e}`;this.executeCallback(t.logLevel,n,t.containsPii||!1)}executeCallback(e,t,n){this.localCallback&&this.localCallback(e,t,n)}error(e,t){this.logMessage(e,{logLevel:Xt.Error,containsPii:!1,correlationId:t||ae.EMPTY_STRING})}errorPii(e,t){this.logMessage(e,{logLevel:Xt.Error,containsPii:!0,correlationId:t||ae.EMPTY_STRING})}warning(e,t){this.logMessage(e,{logLevel:Xt.Warning,containsPii:!1,correlationId:t||ae.EMPTY_STRING})}warningPii(e,t){this.logMessage(e,{logLevel:Xt.Warning,containsPii:!0,correlationId:t||ae.EMPTY_STRING})}info(e,t){this.logMessage(e,{logLevel:Xt.Info,containsPii:!1,correlationId:t||ae.EMPTY_STRING})}infoPii(e,t){this.logMessage(e,{logLevel:Xt.Info,containsPii:!0,correlationId:t||ae.EMPTY_STRING})}verbose(e,t){this.logMessage(e,{logLevel:Xt.Verbose,containsPii:!1,correlationId:t||ae.EMPTY_STRING})}verbosePii(e,t){this.logMessage(e,{logLevel:Xt.Verbose,containsPii:!0,correlationId:t||ae.EMPTY_STRING})}trace(e,t){this.logMessage(e,{logLevel:Xt.Trace,containsPii:!1,correlationId:t||ae.EMPTY_STRING})}tracePii(e,t){this.logMessage(e,{logLevel:Xt.Trace,containsPii:!0,correlationId:t||ae.EMPTY_STRING})}isPiiLoggingEnabled(){return this.piiLoggingEnabled||!1}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +const en=0,tn=1,nn=2,rn=3; +/*! @azure/msal-common v14.10.0 2024-05-07 */ +const on="redirect_uri_empty",sn="claims_request_parsing_error",an="authority_uri_insecure",un="url_parse_error",cn="empty_url_error",dn="empty_input_scopes_error",ln="invalid_prompt_value",hn="invalid_claims",fn="token_request_empty",pn="logout_request_empty",mn="invalid_code_challenge_method",gn="pkce_params_missing",yn="invalid_cloud_discovery_metadata",vn="invalid_authority_metadata",bn="untrusted_authority",wn="missing_ssh_jwk",_n="missing_ssh_kid",xn="missing_nonce_authentication_header",Dn="invalid_authentication_header",En="cannot_set_OIDCOptions",Mn="cannot_allow_native_broker",An="authority_mismatch",Sn={[on]:"A redirect URI is required for all calls, and none has been set.",[sn]:"Could not parse the given claims request object.",[an]:"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options",[un]:"URL could not be parsed into appropriate segments.",[cn]:"URL was empty or null.",[dn]:"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.",[ln]:"Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest",[hn]:"Given claims parameter must be a stringified JSON object.",[fn]:"Token request was empty and not found in cache.",[pn]:"The logout request was null or undefined.",[mn]:'code_challenge_method passed is invalid. Valid values are "plain" and "S256".',[gn]:"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request",[yn]:"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields",[vn]:"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.",[bn]:"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.",[wn]:"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.",[_n]:"Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.",[xn]:"Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.",[Dn]:"Invalid authentication header provided",[En]:"Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.",[Mn]:"Cannot set allowNativeBroker parameter to true when not in AAD protocol mode.",[An]:"Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority."};class Cn extends Zt{constructor(e){super(e,Sn[e]),this.name="ClientConfigurationError",Object.setPrototypeOf(this,Cn.prototype)}}function kn(e){return new Cn(e)} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +class Tn{static isEmptyObj(e){if(e)try{const t=JSON.parse(e);return 0===Object.keys(t).length}catch(e){}return!0}static startsWith(e,t){return 0===e.indexOf(t)}static endsWith(e,t){return e.length>=t.length&&e.lastIndexOf(t)===e.length-t.length}static queryStringToObject(e){const t={},n=e.split("&"),r=e=>decodeURIComponent(e.replace(/\+/g," "));return n.forEach((e=>{if(e.trim()){const[n,i]=e.split(/=(.+)/g,2);n&&i&&(t[r(n)]=r(i))}})),t}static trimArrayEntries(e){return e.map((e=>e.trim()))}static removeEmptyStringsFromArray(e){return e.filter((e=>!!e))}static jsonParseHelper(e){try{return JSON.parse(e)}catch(e){return null}}static matchPattern(e,t){return new RegExp(e.replace(/\\/g,"\\\\").replace(/\*/g,"[^ ]*").replace(/\?/g,"\\?")).test(t)}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +const In="client_info_decoding_error",Rn="client_info_empty_error",Fn="token_parsing_error",On="null_or_empty_token",Bn="endpoints_resolution_error",Pn="network_error",Nn="openid_config_error",jn="hash_not_deserialized",Ln="invalid_state",Un="state_mismatch",qn="state_not_found",$n="nonce_mismatch",zn="auth_time_not_found",Hn="max_age_transpired",Kn="multiple_matching_tokens",Wn="multiple_matching_accounts",Gn="multiple_matching_appMetadata",Vn="request_cannot_be_made",Yn="cannot_remove_empty_scope",Zn="cannot_append_scopeset",Jn="empty_input_scopeset",Xn="device_code_polling_cancelled",Qn="device_code_expired",er="device_code_unknown_error",tr="no_account_in_silent_request",nr="invalid_cache_record",rr="invalid_cache_environment",ir="no_account_found",or="no_crypto_object",sr="unexpected_credential_type",ar="invalid_assertion",ur="invalid_client_credential",cr="token_refresh_required",dr="user_timeout_reached",lr="token_claims_cnf_required_for_signedjwt",hr="authorization_code_missing_from_server_response",fr="binding_key_not_removed",pr="end_session_endpoint_not_supported",mr="key_id_missing",gr="no_network_connectivity",yr="user_canceled",vr="missing_tenant_id_error",br="method_not_implemented",wr="nested_app_auth_bridge_disabled",_r={[In]:"The client info could not be parsed/decoded correctly",[Rn]:"The client info was empty",[Fn]:"Token cannot be parsed",[On]:"The token is null or empty",[Bn]:"Endpoints cannot be resolved",[Pn]:"Network request failed",[Nn]:"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.",[jn]:"The hash parameters could not be deserialized",[Ln]:"State was not the expected format",[Un]:"State mismatch error",[qn]:"State not found",[$n]:"Nonce mismatch error",[zn]:"Max Age was requested and the ID token is missing the auth_time variable. auth_time is an optional claim and is not enabled by default - it must be enabled. See https://aka.ms/msaljs/optional-claims for more information.",[Hn]:"Max Age is set to 0, or too much time has elapsed since the last end-user authentication.",[Kn]:"The cache contains multiple tokens satisfying the requirements. Call AcquireToken again providing more requirements such as authority or account.",[Wn]:"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account",[Gn]:"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata",[Vn]:"Token request cannot be made without authorization code or refresh token.",[Yn]:"Cannot remove null or empty scope from ScopeSet",[Zn]:"Cannot append ScopeSet",[Jn]:"Empty input ScopeSet cannot be processed",[Xn]:"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.",[Qn]:"Device code is expired.",[er]:"Device code stopped polling for unknown reasons.",[tr]:"Please pass an account object, silent flow is not supported without account information",[nr]:"Cache record object was null or undefined.",[rr]:"Invalid environment when attempting to create cache entry",[ir]:"No account found in cache for given key.",[or]:"No crypto object detected.",[sr]:"Unexpected credential type.",[ar]:"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515",[ur]:"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential",[cr]:"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.",[dr]:"User defined timeout for device code polling reached",[lr]:"Cannot generate a POP jwt if the token_claims are not populated",[hr]:"Server response does not contain an authorization code to proceed",[fr]:"Could not remove the credential's binding key from storage.",[pr]:"The provided authority does not support logout",[mr]:"A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.",[gr]:"No network connectivity. Check your internet connection.",[yr]:"User cancelled the flow.",[vr]:"A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.",[br]:"This method has not been implemented",[wr]:"The nested app auth bridge is disabled"};class xr extends Zt{constructor(e,t){super(e,t?`${_r[e]}: ${t}`:_r[e]),this.name="ClientAuthError",Object.setPrototypeOf(this,xr.prototype)}}function Dr(e,t){return new xr(e,t)}function Er(e){if(!e||e.indexOf("=")<0)return null;try{const t= +/*! @azure/msal-common v14.10.0 2024-05-07 */ +function(e){return e.startsWith("#/")?e.substring(2):e.startsWith("#")||e.startsWith("?")?e.substring(1):e}(e),n=Object.fromEntries(new URLSearchParams(t));if(n.code||n.error||n.error_description||n.state)return n}catch(e){throw Dr(jn)}return null} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +class Mr{get urlString(){return this._urlString}constructor(e){if(this._urlString=e,!this._urlString)throw kn(cn);e.includes("#")||(this._urlString=Mr.canonicalizeUri(e))}static canonicalizeUri(e){if(e){let t=e.toLowerCase();return Tn.endsWith(t,"?")?t=t.slice(0,-1):Tn.endsWith(t,"?/")&&(t=t.slice(0,-2)),Tn.endsWith(t,"/")||(t+="/"),t}return e}validateAsUri(){let e;try{e=this.getUrlComponents()}catch(e){throw kn(un)}if(!e.HostNameAndPort||!e.PathSegments)throw kn(un);if(!e.Protocol||"https:"!==e.Protocol.toLowerCase())throw kn(an)}static appendQueryString(e,t){return t?e.indexOf("?")<0?`${e}?${t}`:`${e}&${t}`:e}static removeHashFromUrl(e){return Mr.canonicalizeUri(e.split("#")[0])}replaceTenantPath(e){const t=this.getUrlComponents(),n=t.PathSegments;return!e||0===n.length||n[0]!==Ee.COMMON&&n[0]!==Ee.ORGANIZATIONS||(n[0]=e),Mr.constructAuthorityUriFromObject(t)}getUrlComponents(){const e=RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"),t=this.urlString.match(e);if(!t)throw kn(un);const n={Protocol:t[1],HostNameAndPort:t[4],AbsolutePath:t[5],QueryString:t[7]};let r=n.AbsolutePath.split("/");return r=r.filter((e=>e&&e.length>0)),n.PathSegments=r,n.QueryString&&n.QueryString.endsWith("/")&&(n.QueryString=n.QueryString.substring(0,n.QueryString.length-1)),n}static getDomainFromUrl(e){const t=RegExp("^([^:/?#]+://)?([^/?#]*)"),n=e.match(t);if(!n)throw kn(un);return n[2]}static getAbsoluteUrl(e,t){if(e[0]===ae.FORWARD_SLASH){const n=new Mr(t).getUrlComponents();return n.Protocol+"//"+n.HostNameAndPort+e}return e}static constructAuthorityUriFromObject(e){return new Mr(e.Protocol+"//"+e.HostNameAndPort+"/"+e.PathSegments.join("/"))}static hashContainsKnownProperties(e){return!!Er(e)}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +const Ar={"login.microsoftonline.com":{token_endpoint:"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token",jwks_uri:"https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys",issuer:"https://login.microsoftonline.com/{tenantid}/v2.0",authorization_endpoint:"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize",end_session_endpoint:"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout"},"login.chinacloudapi.cn":{token_endpoint:"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token",jwks_uri:"https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys",issuer:"https://login.partner.microsoftonline.cn/{tenantid}/v2.0",authorization_endpoint:"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize",end_session_endpoint:"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout"},"login.microsoftonline.us":{token_endpoint:"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token",jwks_uri:"https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys",issuer:"https://login.microsoftonline.us/{tenantid}/v2.0",authorization_endpoint:"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize",end_session_endpoint:"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout"}},Sr={tenant_discovery_endpoint:"https://{canonicalAuthority}/v2.0/.well-known/openid-configuration",metadata:[{preferred_network:"login.microsoftonline.com",preferred_cache:"login.windows.net",aliases:["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{preferred_network:"login.partner.microsoftonline.cn",preferred_cache:"login.partner.microsoftonline.cn",aliases:["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{preferred_network:"login.microsoftonline.de",preferred_cache:"login.microsoftonline.de",aliases:["login.microsoftonline.de"]},{preferred_network:"login.microsoftonline.us",preferred_cache:"login.microsoftonline.us",aliases:["login.microsoftonline.us","login.usgovcloudapi.net"]},{preferred_network:"login-us.microsoftonline.com",preferred_cache:"login-us.microsoftonline.com",aliases:["login-us.microsoftonline.com"]}]},Cr=new Set;function kr(e,t,n,r){if(r?.trace(`getAliasesFromMetadata called with source: ${n}`),e&&t){const i=Tr(t,e);if(i)return r?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${n}, returning aliases`),i.aliases;r?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${n}`)}return null}function Tr(e,t){for(let n=0;n{e.aliases.forEach((e=>{Cr.add(e)}))})); +/*! @azure/msal-common v14.10.0 2024-05-07 */ +const Ir="AAD",Rr="OIDC",Fr="none"; +/*! @azure/msal-common v14.10.0 2024-05-07 */ +const Or="refreshTokenClientExecutePostToTokenEndpoint",Br="authorizationCodeClientExecutePostToTokenEndpoint",Pr="refreshTokenClientExecuteTokenRequest",Nr="refreshTokenClientAcquireToken",jr="refreshTokenClientAcquireTokenWithCachedRefreshToken",Lr="refreshTokenClientAcquireTokenByRefreshToken",Ur="refreshTokenClientCreateTokenRequestBody",qr="silentFlowClientAcquireCachedToken",$r="silentFlowClientGenerateResultFromCacheRecord",zr="getAuthCodeUrl",Hr="updateTokenEndpointAuthority",Kr="authClientAcquireToken",Wr="authClientExecuteTokenRequest",Gr="authClientCreateTokenRequestBody",Vr="authClientCreateQueryString",Yr="popTokenGenerateCnf",Zr="popTokenGenerateKid",Jr="handleServerTokenResponse",Xr="authorityFactoryCreateDiscoveredInstance",Qr="authorityResolveEndpointsAsync",ei="authorityGetCloudDiscoveryMetadataFromNetwork",ti="authorityUpdateCloudDiscoveryMetadata",ni="authorityGetEndpointMetadataFromNetwork",ri="authorityUpdateEndpointMetadata",ii="authorityUpdateMetadataWithRegionalInformation",oi="regionDiscoveryDetectRegion",si="regionDiscoveryGetRegionFromIMDS",ai="regionDiscoveryGetCurrentVersion",ui="cacheManagerGetRefreshToken",ci=(new Map([["acquireTokenByCode","ATByCode"],["acquireTokenByRefreshToken","ATByRT"],["acquireTokenSilent","ATS"],["acquireTokenSilentAsync","ATSAsync"],["acquireTokenPopup","ATPopup"],["acquireTokenRedirect","ATRedirect"],["cryptoOptsGetPublicKeyThumbprint","CryptoGetPKThumb"],["cryptoOptsSignJwt","CryptoSignJwt"],["silentCacheClientAcquireToken","SltCacheClientAT"],["silentIframeClientAcquireToken","SltIframeClientAT"],["silentRefreshClientAcquireToken","SltRClientAT"],["ssoSilent","SsoSlt"],["standardInteractionClientGetDiscoveredAuthority","StdIntClientGetDiscAuth"],["fetchAccountIdWithNativeBroker","FetchAccIdWithNtvBroker"],["nativeInteractionClientAcquireToken","NtvIntClientAT"],["baseClientCreateTokenRequestHeaders","BaseClientCreateTReqHead"],[Or,"RTClientExecPost"],[Br,"AuthCodeClientExecPost"],["brokerHandshake","BrokerHandshake"],["acquireTokenByRefreshTokenInBroker","ATByRTInBroker"],["acquireTokenByBroker","ATByBroker"],[Pr,"RTClientExecTReq"],[Nr,"RTClientAT"],[jr,"RTClientATWithCachedRT"],[Lr,"RTClientATByRT"],[Ur,"RTClientCreateTReqBody"],["acquireTokenFromCache","ATFromCache"],[qr,"SltFlowClientATCached"],[$r,"SltFlowClientGenResFromCache"],["acquireTokenBySilentIframe","ATBySltIframe"],["initializeBaseRequest","InitBaseReq"],["initializeSilentRequest","InitSltReq"],["initializeClientApplication","InitClientApplication"],["silentIframeClientTokenHelper","SIClientTHelper"],["silentHandlerInitiateAuthRequest","SHandlerInitAuthReq"],["silentHandlerMonitorIframeForHash","SltHandlerMonitorIframeForHash"],["silentHandlerLoadFrame","SHandlerLoadFrame"],["silentHandlerLoadFrameSync","SHandlerLoadFrameSync"],["standardInteractionClientCreateAuthCodeClient","StdIntClientCreateAuthCodeClient"],["standardInteractionClientGetClientConfiguration","StdIntClientGetClientConf"],["standardInteractionClientInitializeAuthorizationRequest","StdIntClientInitAuthReq"],["standardInteractionClientInitializeAuthorizationCodeRequest","StdIntClientInitAuthCodeReq"],[zr,"GetAuthCodeUrl"],["handleCodeResponseFromServer","HandleCodeResFromServer"],["handleCodeResponse","HandleCodeResp"],[Hr,"UpdTEndpointAuth"],[Kr,"AuthClientAT"],[Wr,"AuthClientExecTReq"],[Gr,"AuthClientCreateTReqBody"],[Vr,"AuthClientCreateQueryStr"],[Yr,"PopTGenCnf"],[Zr,"PopTGenKid"],[Jr,"HandleServerTRes"],["deserializeResponse","DeserializeRes"],[Xr,"AuthFactCreateDiscInst"],[Qr,"AuthResolveEndpointsAsync"],["authorityResolveEndpointsFromLocalSources","AuthResolveEndpointsFromLocal"],[ei,"AuthGetCDMetaFromNet"],[ti,"AuthUpdCDMeta"],[ni,"AuthUpdCDMetaFromNet"],[ri,"AuthUpdEndpointMeta"],[ii,"AuthUpdMetaWithRegInfo"],[oi,"RegDiscDetectReg"],[si,"RegDiscGetRegFromIMDS"],[ai,"RegDiscGetCurrentVer"],["acquireTokenByCodeAsync","ATByCodeAsync"],["getEndpointMetadataFromNetwork","GetEndpointMetaFromNet"],["getCloudDiscoveryMetadataFromNetworkMeasurement","GetCDMetaFromNet"],["handleRedirectPromise","HandleRedirectPromise"],["handleNativeRedirectPromise","HandleNtvRedirectPromise"],["updateCloudDiscoveryMetadataMeasurement","UpdateCDMeta"],["usernamePasswordClientAcquireToken","UserPassClientAT"],["nativeMessageHandlerHandshake","NtvMsgHandlerHandshake"],["nativeGenerateAuthResult","NtvGenAuthRes"],["removeHiddenIframe","RemoveHiddenIframe"],["clearTokensAndKeysWithClaims","ClearTAndKeysWithClaims"],[ui,"CacheManagerGetRT"],["generatePkceCodes","GenPkceCodes"],["generateCodeVerifier","GenCodeVerifier"],["generateCodeChallengeFromVerifier","GenCodeChallengeFromVerifier"],["sha256Digest","Sha256Digest"],["getRandomValues","GetRandomValues"]]),new Set(["accessTokenSize","durationMs","idTokenSize","matsSilentStatus","matsHttpStatus","refreshTokenSize","queuedTimeMs","startTimeMs","status","multiMatchedAT","multiMatchedID","multiMatchedRT"]),(e,t,n,r,i)=>(...o)=>{n.trace(`Executing function ${t}`);const s=r?.startMeasurement(t,i);if(i){const e=t+"CallCount";r?.incrementFields({[e]:1},i)}return r?.setPreQueueTime(t,i),e(...o).then((e=>(n.trace(`Returning result from ${t}`),s?.end({success:!0}),e))).catch((e=>{n.trace(`Error occurred in ${t}`);try{n.trace(JSON.stringify(e))}catch(e){n.trace("Unable to print error message.")}throw s?.end({success:!1},e),e}))}); +/*! @azure/msal-common v14.10.0 2024-05-07 */ +class di{constructor(e,t,n,r){this.networkInterface=e,this.logger=t,this.performanceClient=n,this.correlationId=r}async detectRegion(e,t){this.performanceClient?.addQueueMeasurement(oi,this.correlationId);let n=e;if(n)t.region_source=st;else{const e=di.IMDS_OPTIONS;try{const r=await ci(this.getRegionFromIMDS.bind(this),si,this.logger,this.performanceClient,this.correlationId)(ae.IMDS_VERSION,e);if(r.status===rt&&(n=r.body,t.region_source=at),r.status===it){const r=await ci(this.getCurrentVersion.bind(this),ai,this.logger,this.performanceClient,this.correlationId)(e);if(!r)return t.region_source=ot,null;const i=await ci(this.getRegionFromIMDS.bind(this),si,this.logger,this.performanceClient,this.correlationId)(r,e);i.status===rt&&(n=i.body,t.region_source=at)}}catch(e){return t.region_source=ot,null}}return n||(t.region_source=ot),n||null}async getRegionFromIMDS(e,t){return this.performanceClient?.addQueueMeasurement(si,this.correlationId),this.networkInterface.sendGetRequestAsync(`${ae.IMDS_ENDPOINT}?api-version=${e}&format=text`,t,ae.IMDS_TIMEOUT)}async getCurrentVersion(e){this.performanceClient?.addQueueMeasurement(ai,this.correlationId);try{const t=await this.networkInterface.sendGetRequestAsync(`${ae.IMDS_ENDPOINT}?format=json`,e);return t.status===it&&t.body&&t.body["newest-versions"]&&t.body["newest-versions"].length>0?t.body["newest-versions"][0]:null}catch(e){return null}}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +function li(e,t){const n=function(e){if(!e)throw Dr(On);const t=/^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/.exec(e);if(!t||t.length<4)throw Dr(Fn);return t[2]}(e);try{const e=t(n);return JSON.parse(e)}catch(e){throw Dr(Fn)}}function hi(e,t){if(0===t||Date.now()-3e5>e+t)throw Dr(Hn)} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +function fi(){return Math.round((new Date).getTime()/1e3)}function pi(e,t){const n=Number(e)||0;return fi()+t>n}function mi(e,t){return new Promise((n=>setTimeout((()=>n(t)),e)))} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +function gi(e){return[_i(e),xi(e),Di(e),Ei(e),Mi(e)].join(Ne.CACHE_KEY_SEPARATOR).toLowerCase()}function yi(e){return e.hasOwnProperty("homeAccountId")&&e.hasOwnProperty("environment")&&e.hasOwnProperty("credentialType")&&e.hasOwnProperty("clientId")&&e.hasOwnProperty("secret")}function vi(e){return!!e&&(yi(e)&&e.hasOwnProperty("realm")&&e.hasOwnProperty("target")&&(e.credentialType===je.ACCESS_TOKEN||e.credentialType===je.ACCESS_TOKEN_WITH_AUTH_SCHEME))}function bi(e){return!!e&&(yi(e)&&e.hasOwnProperty("realm")&&e.credentialType===je.ID_TOKEN)}function wi(e){return!!e&&(yi(e)&&e.credentialType===je.REFRESH_TOKEN)}function _i(e){return[e.homeAccountId,e.environment].join(Ne.CACHE_KEY_SEPARATOR).toLowerCase()}function xi(e){const t=e.credentialType===je.REFRESH_TOKEN&&e.familyId||e.clientId;return[e.credentialType,t,e.realm||""].join(Ne.CACHE_KEY_SEPARATOR).toLowerCase()}function Di(e){return(e.target||"").toLowerCase()}function Ei(e){return(e.requestedClaimsHash||"").toLowerCase()}function Mi(e){return e.tokenType&&e.tokenType.toLowerCase()!==Ve.BEARER.toLowerCase()?e.tokenType.toLowerCase():""}function Ai(e,t){return!!t&&(0===e.indexOf(Le)&&t.hasOwnProperty("clientId")&&t.hasOwnProperty("environment"))}function Si(){return fi()+$e}function Ci(e,t,n){e.authorization_endpoint=t.authorization_endpoint,e.token_endpoint=t.token_endpoint,e.end_session_endpoint=t.end_session_endpoint,e.issuer=t.issuer,e.endpointsFromNetwork=n,e.jwks_uri=t.jwks_uri}function ki(e,t,n){e.aliases=t.aliases,e.preferred_cache=t.preferred_cache,e.preferred_network=t.preferred_network,e.aliasesFromNetwork=n}function Ti(e){return e.expiresAt<=fi()}di.IMDS_OPTIONS={headers:{Metadata:"true"}}; +/*! @azure/msal-common v14.10.0 2024-05-07 */ +class Ii{constructor(e,t,n,r,i,o,s,a){this.canonicalAuthority=e,this._canonicalAuthority.validateAsUri(),this.networkInterface=t,this.cacheManager=n,this.authorityOptions=r,this.regionDiscoveryMetadata={region_used:void 0,region_source:void 0,region_outcome:void 0},this.logger=i,this.performanceClient=s,this.correlationId=o,this.managedIdentity=a||!1,this.regionDiscovery=new di(t,this.logger,this.performanceClient,this.correlationId)}getAuthorityType(e){if(e.HostNameAndPort.endsWith(ae.CIAM_AUTH_URL))return rn;const t=e.PathSegments;if(t.length)switch(t[0].toLowerCase()){case ae.ADFS:return tn;case ae.DSTS:return nn}return en}get authorityType(){return this.getAuthorityType(this.canonicalAuthorityUrlComponents)}get protocolMode(){return this.authorityOptions.protocolMode}get options(){return this.authorityOptions}get canonicalAuthority(){return this._canonicalAuthority.urlString}set canonicalAuthority(e){this._canonicalAuthority=new Mr(e),this._canonicalAuthority.validateAsUri(),this._canonicalAuthorityUrlComponents=null}get canonicalAuthorityUrlComponents(){return this._canonicalAuthorityUrlComponents||(this._canonicalAuthorityUrlComponents=this._canonicalAuthority.getUrlComponents()),this._canonicalAuthorityUrlComponents}get hostnameAndPort(){return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase()}get tenant(){return this.canonicalAuthorityUrlComponents.PathSegments[0]}get authorizationEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.authorization_endpoint);throw Dr(Bn)}get tokenEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.token_endpoint);throw Dr(Bn)}get deviceCodeEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.token_endpoint.replace("/token","/devicecode"));throw Dr(Bn)}get endSessionEndpoint(){if(this.discoveryComplete()){if(!this.metadata.end_session_endpoint)throw Dr(pr);return this.replacePath(this.metadata.end_session_endpoint)}throw Dr(Bn)}get selfSignedJwtAudience(){if(this.discoveryComplete())return this.replacePath(this.metadata.issuer);throw Dr(Bn)}get jwksUri(){if(this.discoveryComplete())return this.replacePath(this.metadata.jwks_uri);throw Dr(Bn)}canReplaceTenant(e){return 1===e.PathSegments.length&&!Ii.reservedTenantDomains.has(e.PathSegments[0])&&this.getAuthorityType(e)===en&&this.protocolMode===Ir}replaceTenant(e){return e.replace(/{tenant}|{tenantid}/g,this.tenant)}replacePath(e){let t=e;const n=new Mr(this.metadata.canonical_authority).getUrlComponents(),r=n.PathSegments;return this.canonicalAuthorityUrlComponents.PathSegments.forEach(((e,i)=>{let o=r[i];if(0===i&&this.canReplaceTenant(n)){const e=new Mr(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0];o!==e&&(this.logger.verbose(`Replacing tenant domain name ${o} with id ${e}`),o=e)}e!==o&&(t=t.replace(`/${o}/`,`/${e}/`))})),this.replaceTenant(t)}get defaultOpenIdConfigurationEndpoint(){const e=this.hostnameAndPort;return this.canonicalAuthority.endsWith("v2.0/")||this.authorityType===tn||this.protocolMode!==Ir&&!this.isAliasOfKnownMicrosoftAuthority(e)?`${this.canonicalAuthority}.well-known/openid-configuration`:`${this.canonicalAuthority}v2.0/.well-known/openid-configuration`}discoveryComplete(){return!!this.metadata}async resolveEndpointsAsync(){this.performanceClient?.addQueueMeasurement(Qr,this.correlationId);const e=this.getCurrentMetadataEntity(),t=await ci(this.updateCloudDiscoveryMetadata.bind(this),ti,this.logger,this.performanceClient,this.correlationId)(e);this.canonicalAuthority=this.canonicalAuthority.replace(this.hostnameAndPort,e.preferred_network);const n=await ci(this.updateEndpointMetadata.bind(this),ri,this.logger,this.performanceClient,this.correlationId)(e);this.updateCachedMetadata(e,t,{source:n}),this.performanceClient?.addFields({cloudDiscoverySource:t,authorityEndpointSource:n},this.correlationId)}getCurrentMetadataEntity(){let e=this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);return e||(e={aliases:[],preferred_cache:this.hostnameAndPort,preferred_network:this.hostnameAndPort,canonical_authority:this.canonicalAuthority,authorization_endpoint:"",token_endpoint:"",end_session_endpoint:"",issuer:"",aliasesFromNetwork:!1,endpointsFromNetwork:!1,expiresAt:Si(),jwks_uri:""}),e}updateCachedMetadata(e,t,n){t!==He&&n?.source!==He&&(e.expiresAt=Si(),e.canonical_authority=this.canonicalAuthority);const r=this.cacheManager.generateAuthorityMetadataCacheKey(e.preferred_cache);this.cacheManager.setAuthorityMetadata(r,e),this.metadata=e}async updateEndpointMetadata(e){this.performanceClient?.addQueueMeasurement(ri,this.correlationId);const t=this.updateEndpointMetadataFromLocalSources(e);if(t){if(t.source===We&&this.authorityOptions.azureRegionConfiguration?.azureRegion&&t.metadata){Ci(e,await ci(this.updateMetadataWithRegionalInformation.bind(this),ii,this.logger,this.performanceClient,this.correlationId)(t.metadata),!1),e.canonical_authority=this.canonicalAuthority}return t.source}let n=await ci(this.getEndpointMetadataFromNetwork.bind(this),ni,this.logger,this.performanceClient,this.correlationId)();if(n)return this.authorityOptions.azureRegionConfiguration?.azureRegion&&(n=await ci(this.updateMetadataWithRegionalInformation.bind(this),ii,this.logger,this.performanceClient,this.correlationId)(n)),Ci(e,n,!0),Ke;throw Dr(Nn,this.defaultOpenIdConfigurationEndpoint)}updateEndpointMetadataFromLocalSources(e){this.logger.verbose("Attempting to get endpoint metadata from authority configuration");const t=this.getEndpointMetadataFromConfig();if(t)return this.logger.verbose("Found endpoint metadata in authority configuration"),Ci(e,t,!1),{source:ze};if(this.logger.verbose("Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values."),this.authorityOptions.skipAuthorityMetadataCache)this.logger.verbose("Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache.");else{const t=this.getEndpointMetadataFromHardcodedValues();if(t)return Ci(e,t,!1),{source:We,metadata:t};this.logger.verbose("Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache.")}const n=Ti(e);return this.isAuthoritySameType(e)&&e.endpointsFromNetwork&&!n?(this.logger.verbose("Found endpoint metadata in the cache."),{source:He}):(n&&this.logger.verbose("The metadata entity is expired."),null)}isAuthoritySameType(e){return new Mr(e.canonical_authority).getUrlComponents().PathSegments.length===this.canonicalAuthorityUrlComponents.PathSegments.length}getEndpointMetadataFromConfig(){if(this.authorityOptions.authorityMetadata)try{return JSON.parse(this.authorityOptions.authorityMetadata)}catch(e){throw kn(vn)}return null}async getEndpointMetadataFromNetwork(){this.performanceClient?.addQueueMeasurement(ni,this.correlationId);const e={},t=this.defaultOpenIdConfigurationEndpoint;this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${t}`);try{const n=await this.networkInterface.sendGetRequestAsync(t,e),r= +/*! @azure/msal-common v14.10.0 2024-05-07 */ +function(e){return e.hasOwnProperty("authorization_endpoint")&&e.hasOwnProperty("token_endpoint")&&e.hasOwnProperty("issuer")&&e.hasOwnProperty("jwks_uri")}(n.body);return r?n.body:(this.logger.verbose("Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration"),null)}catch(e){return this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`),null}}getEndpointMetadataFromHardcodedValues(){return this.hostnameAndPort in Ar?Ar[this.hostnameAndPort]:null}async updateMetadataWithRegionalInformation(e){this.performanceClient?.addQueueMeasurement(ii,this.correlationId);const t=this.authorityOptions.azureRegionConfiguration?.azureRegion;if(t){if(t!==ae.AZURE_REGION_AUTO_DISCOVER_FLAG)return this.regionDiscoveryMetadata.region_outcome=ut,this.regionDiscoveryMetadata.region_used=t,Ii.replaceWithRegionalInformation(e,t);const n=await ci(this.regionDiscovery.detectRegion.bind(this.regionDiscovery),oi,this.logger,this.performanceClient,this.correlationId)(this.authorityOptions.azureRegionConfiguration?.environmentRegion,this.regionDiscoveryMetadata);if(n)return this.regionDiscoveryMetadata.region_outcome=ct,this.regionDiscoveryMetadata.region_used=n,Ii.replaceWithRegionalInformation(e,n);this.regionDiscoveryMetadata.region_outcome=dt}return e}async updateCloudDiscoveryMetadata(e){this.performanceClient?.addQueueMeasurement(ti,this.correlationId);const t=this.updateCloudDiscoveryMetadataFromLocalSources(e);if(t)return t;const n=await ci(this.getCloudDiscoveryMetadataFromNetwork.bind(this),ei,this.logger,this.performanceClient,this.correlationId)();if(n)return ki(e,n,!0),Ke;throw kn(bn)}updateCloudDiscoveryMetadataFromLocalSources(e){this.logger.verbose("Attempting to get cloud discovery metadata from authority configuration"),this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities||ae.NOT_APPLICABLE}`),this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata||ae.NOT_APPLICABLE}`),this.logger.verbosePii(`Canonical Authority: ${e.canonical_authority||ae.NOT_APPLICABLE}`);const t=this.getCloudDiscoveryMetadataFromConfig();if(t)return this.logger.verbose("Found cloud discovery metadata in authority configuration"),ki(e,t,!1),ze;if(this.logger.verbose("Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values."),this.options.skipAuthorityMetadataCache)this.logger.verbose("Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache.");else{const t=(n=this.hostnameAndPort,Tr(Sr.metadata,n));if(t)return this.logger.verbose("Found cloud discovery metadata from hardcoded values."),ki(e,t,!1),We;this.logger.verbose("Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache.")}var n;const r=Ti(e);return this.isAuthoritySameType(e)&&e.aliasesFromNetwork&&!r?(this.logger.verbose("Found cloud discovery metadata in the cache."),He):(r&&this.logger.verbose("The metadata entity is expired."),null)}getCloudDiscoveryMetadataFromConfig(){if(this.authorityType===rn)return this.logger.verbose("CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host."),Ii.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);if(this.authorityOptions.cloudDiscoveryMetadata){this.logger.verbose("The cloud discovery metadata has been provided as a network response, in the config.");try{this.logger.verbose("Attempting to parse the cloud discovery metadata.");const e=Tr(JSON.parse(this.authorityOptions.cloudDiscoveryMetadata).metadata,this.hostnameAndPort);if(this.logger.verbose("Parsed the cloud discovery metadata."),e)return this.logger.verbose("There is returnable metadata attached to the parsed cloud discovery metadata."),e;this.logger.verbose("There is no metadata attached to the parsed cloud discovery metadata.")}catch(e){throw this.logger.verbose("Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error."),kn(yn)}}return this.isInKnownAuthorities()?(this.logger.verbose("The host is included in knownAuthorities. Creating new cloud discovery metadata from the host."),Ii.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort)):null}async getCloudDiscoveryMetadataFromNetwork(){this.performanceClient?.addQueueMeasurement(ei,this.correlationId);const e=`${ae.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`,t={};let n=null;try{const r=await this.networkInterface.sendGetRequestAsync(e,t);let i,o;if( +/*! @azure/msal-common v14.10.0 2024-05-07 */ +function(e){return e.hasOwnProperty("tenant_discovery_endpoint")&&e.hasOwnProperty("metadata")}(r.body))i=r.body,o=i.metadata,this.logger.verbosePii(`tenant_discovery_endpoint is: ${i.tenant_discovery_endpoint}`);else{if(! +/*! @azure/msal-common v14.10.0 2024-05-07 */ +function(e){return e.hasOwnProperty("error")&&e.hasOwnProperty("error_description")}(r.body))return this.logger.error("AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse"),null;if(this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${r.status}`),i=r.body,i.error===ae.INVALID_INSTANCE)return this.logger.error("The CloudInstanceDiscoveryErrorResponse error is invalid_instance."),null;this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${i.error}`),this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${i.error_description}`),this.logger.warning("Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []"),o=[]}this.logger.verbose("Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request."),n=Tr(o,this.hostnameAndPort)}catch(e){if(e instanceof Zt)this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\nError: ${e.errorCode}\nError Description: ${e.errorMessage}`);else{const t=e;this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\nError: ${t.name}\nError Description: ${t.message}`)}return null}return n||(this.logger.warning("The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request."),this.logger.verbose("Creating custom Authority for custom domain scenario."),n=Ii.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort)),n}isInKnownAuthorities(){return this.authorityOptions.knownAuthorities.filter((e=>e&&Mr.getDomainFromUrl(e).toLowerCase()===this.hostnameAndPort)).length>0}static generateAuthority(e,t){let n;if(t&&t.azureCloudInstance!==Fr){const e=t.tenant?t.tenant:ae.DEFAULT_COMMON_TENANT;n=`${t.azureCloudInstance}/${e}/`}return n||e}static createCloudDiscoveryMetadataFromHost(e){return{preferred_network:e,preferred_cache:e,aliases:[e]}}getPreferredCache(){if(this.managedIdentity)return ae.DEFAULT_AUTHORITY_HOST;if(this.discoveryComplete())return this.metadata.preferred_cache;throw Dr(Bn)}isAlias(e){return this.metadata.aliases.indexOf(e)>-1}isAliasOfKnownMicrosoftAuthority(e){return Cr.has(e)}static isPublicCloudAuthority(e){return ae.KNOWN_PUBLIC_CLOUDS.indexOf(e)>=0}static buildRegionalAuthorityString(e,t,n){const r=new Mr(e);r.validateAsUri();const i=r.getUrlComponents();let o=`${t}.${i.HostNameAndPort}`;this.isPublicCloudAuthority(i.HostNameAndPort)&&(o=`${t}.${ae.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`);const s=Mr.constructAuthorityUriFromObject({...r.getUrlComponents(),HostNameAndPort:o}).urlString;return n?`${s}?${n}`:s}static replaceWithRegionalInformation(e,t){const n={...e};return n.authorization_endpoint=Ii.buildRegionalAuthorityString(n.authorization_endpoint,t),n.token_endpoint=Ii.buildRegionalAuthorityString(n.token_endpoint,t),n.end_session_endpoint&&(n.end_session_endpoint=Ii.buildRegionalAuthorityString(n.end_session_endpoint,t)),n}static transformCIAMAuthority(e){let t=e;const n=new Mr(e).getUrlComponents();if(0===n.PathSegments.length&&n.HostNameAndPort.endsWith(ae.CIAM_AUTH_URL)){t=`${t}${n.HostNameAndPort.split(".")[0]}${ae.AAD_TENANT_DOMAIN_SUFFIX}`}return t}}function Ri(e){return e.endsWith(ae.FORWARD_SLASH)?e:`${e}${ae.FORWARD_SLASH}`}Ii.reservedTenantDomains=new Set(["{tenant}","{tenantid}",Ee.COMMON,Ee.CONSUMERS,Ee.ORGANIZATIONS]); +/*! @azure/msal-common v14.10.0 2024-05-07 */ +const Fi={createNewGuid:()=>{throw Dr(br)},base64Decode:()=>{throw Dr(br)},base64Encode:()=>{throw Dr(br)},async getPublicKeyThumbprint(){throw Dr(br)},async removeTokenBindingKey(){throw Dr(br)},async clearKeystore(){throw Dr(br)},async signJwt(){throw Dr(br)},async hashString(){throw Dr(br)}},Oi="@azure/msal-common",Bi="14.10.0"; +/*! @azure/msal-common v14.10.0 2024-05-07 */ +class Pi{constructor(e){const t=e?Tn.trimArrayEntries([...e]):[],n=t?Tn.removeEmptyStringsFromArray(t):[];this.validateInputScopes(n),this.scopes=new Set,n.forEach((e=>this.scopes.add(e)))}static fromString(e){const t=(e||ae.EMPTY_STRING).split(" ");return new Pi(t)}static createSearchScopes(e){const t=new Pi(e);return t.containsOnlyOIDCScopes()?t.removeScope(ae.OFFLINE_ACCESS_SCOPE):t.removeOIDCScopes(),t}validateInputScopes(e){if(!e||e.length<1)throw kn(dn)}containsScope(e){const t=this.printScopesLowerCase().split(" "),n=new Pi(t);return!!e&&n.scopes.has(e.toLowerCase())}containsScopeSet(e){return!(!e||e.scopes.size<=0)&&(this.scopes.size>=e.scopes.size&&e.asArray().every((e=>this.containsScope(e))))}containsOnlyOIDCScopes(){let e=0;return ve.forEach((t=>{this.containsScope(t)&&(e+=1)})),this.scopes.size===e}appendScope(e){e&&this.scopes.add(e.trim())}appendScopes(e){try{e.forEach((e=>this.appendScope(e)))}catch(e){throw Dr(Zn)}}removeScope(e){if(!e)throw Dr(Yn);this.scopes.delete(e.trim())}removeOIDCScopes(){ve.forEach((e=>{this.scopes.delete(e)}))}unionScopeSets(e){if(!e)throw Dr(Jn);const t=new Set;return e.scopes.forEach((e=>t.add(e.toLowerCase()))),this.scopes.forEach((e=>t.add(e.toLowerCase()))),t}intersectingScopeSets(e){if(!e)throw Dr(Jn);e.containsOnlyOIDCScopes()||e.removeOIDCScopes();const t=this.unionScopeSets(e),n=e.getScopeCount(),r=this.getScopeCount();return t.sizee.push(t))),e}printScopes(){if(this.scopes){return this.asArray().join(" ")}return ae.EMPTY_STRING}printScopesLowerCase(){return this.printScopes().toLowerCase()}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +function Ni(e,t){if(!e)throw Dr(Rn);try{const n=t(e);return JSON.parse(n)}catch(e){throw Dr(In)}}function ji(e){if(!e)throw Dr(In);const t=e.split(Ne.CLIENT_INFO_SEPARATOR,2);return{uid:t[0],utid:t.length<2?ae.EMPTY_STRING:t[1]}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +function Li(e,t){return!!e&&!!t&&e===t.split(".")[1]}function Ui(e,t){const{oid:n,sub:r,tid:i,name:o,tfp:s,acr:a}=t,u=i||s||a||"";return{tenantId:u,localAccountId:n||r||"",name:o,isHomeTenant:Li(u,e)}}function qi(e,t,n,r){let i=e;if(t){const{isHomeTenant:n,...r}=t;i={...e,...r}}if(n){const{isHomeTenant:t,...o}=Ui(e.homeAccountId,n);return i={...i,...o,idTokenClaims:n,idToken:r},i}return i} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +function $i(e){if(e){return e.tid||e.tfp||e.acr||null}return null} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +class zi{generateAccountId(){return[this.homeAccountId,this.environment].join(Ne.CACHE_KEY_SEPARATOR).toLowerCase()}generateAccountKey(){return zi.generateAccountCacheKey({homeAccountId:this.homeAccountId,environment:this.environment,tenantId:this.realm,username:this.username,localAccountId:this.localAccountId})}getAccountInfo(){return{homeAccountId:this.homeAccountId,environment:this.environment,tenantId:this.realm,username:this.username,localAccountId:this.localAccountId,name:this.name,nativeAccountId:this.nativeAccountId,authorityType:this.authorityType,tenantProfiles:new Map((this.tenantProfiles||[]).map((e=>[e.tenantId,e])))}}isSingleTenant(){return!this.tenantProfiles}static generateAccountCacheKey(e){const t=e.homeAccountId.split(".")[1];return[e.homeAccountId,e.environment||"",t||e.tenantId||""].join(Ne.CACHE_KEY_SEPARATOR).toLowerCase()}static createAccount(e,t,n){const r=new zi;let i;t.authorityType===tn?r.authorityType=Be:t.protocolMode===Ir?r.authorityType=Oe:r.authorityType=Pe,e.clientInfo&&n&&(i=Ni(e.clientInfo,n)),r.clientInfo=e.clientInfo,r.homeAccountId=e.homeAccountId,r.nativeAccountId=e.nativeAccountId;const o=e.environment||t&&t.getPreferredCache();if(!o)throw Dr(rr);r.environment=o,r.realm=i?.utid||$i(e.idTokenClaims)||"",r.localAccountId=i?.uid||e.idTokenClaims.oid||e.idTokenClaims.sub||"";const s=e.idTokenClaims.preferred_username||e.idTokenClaims.upn,a=e.idTokenClaims.emails?e.idTokenClaims.emails[0]:null;if(r.username=s||a||"",r.name=e.idTokenClaims.name,r.cloudGraphHostName=e.cloudGraphHostName,r.msGraphHost=e.msGraphHost,e.tenantProfiles)r.tenantProfiles=e.tenantProfiles;else{const t=[];if(e.idTokenClaims){const n=Ui(e.homeAccountId,e.idTokenClaims);t.push(n)}r.tenantProfiles=t}return r}static createFromAccountInfo(e,t,n){const r=new zi;return r.authorityType=e.authorityType||Pe,r.homeAccountId=e.homeAccountId,r.localAccountId=e.localAccountId,r.nativeAccountId=e.nativeAccountId,r.realm=e.tenantId,r.environment=e.environment,r.username=e.username,r.name=e.name,r.cloudGraphHostName=t,r.msGraphHost=n,r.tenantProfiles=Array.from(e.tenantProfiles?.values()||[]),r}static generateHomeAccountId(e,t,n,r,i){if(t!==tn&&t!==nn){if(e)try{const t=Ni(e,r.base64Decode);if(t.uid&&t.utid)return`${t.uid}.${t.utid}`}catch(e){}n.warning("No client info in response")}return i?.sub||""}static isAccountEntity(e){return!!e&&(e.hasOwnProperty("homeAccountId")&&e.hasOwnProperty("environment")&&e.hasOwnProperty("realm")&&e.hasOwnProperty("localAccountId")&&e.hasOwnProperty("username")&&e.hasOwnProperty("authorityType"))}static accountInfoIsEqual(e,t,n){if(!e||!t)return!1;let r=!0;if(n){const n=e.idTokenClaims||{},i=t.idTokenClaims||{};r=n.iat===i.iat&&n.nonce===i.nonce}return e.homeAccountId===t.homeAccountId&&e.localAccountId===t.localAccountId&&e.username===t.username&&e.tenantId===t.tenantId&&e.environment===t.environment&&e.nativeAccountId===t.nativeAccountId&&r}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +const Hi="cache_quota_exceeded",Ki="cache_error_unknown",Wi={[Hi]:"Exceeded cache storage capacity.",[Ki]:"Unexpected error occurred when using cache storage."};class Gi extends Error{constructor(e,t){const n=t||(Wi[e]?Wi[e]:Wi[Ki]);super(`${e}: ${n}`),Object.setPrototypeOf(this,Gi.prototype),this.name="CacheError",this.errorCode=e,this.errorMessage=n}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +class Vi{constructor(e,t,n,r){this.clientId=e,this.cryptoImpl=t,this.commonLogger=n.clone(Oi,Bi),this.staticAuthorityOptions=r}getAllAccounts(e){return this.buildTenantProfiles(this.getAccountsFilteredBy(e||{}),e)}getAccountInfoFilteredBy(e){const t=this.getAllAccounts(e);if(t.length>1){return t.sort((e=>e.idTokenClaims?-1:1))[0]}return 1===t.length?t[0]:null}getBaseAccountInfo(e){const t=this.getAccountsFilteredBy(e);return t.length>0?t[0].getAccountInfo():null}buildTenantProfiles(e,t){return e.flatMap((e=>this.getAccountInfoForTenantProfiles(e,t)))}getAccountInfoForTenantProfiles(e,t){return this.getTenantProfilesFromAccountEntity(e,t?.tenantId,t)}getTenantedAccountInfoByFilter(e,t,n,r){let i,o=null;if(r&&!this.tenantProfileMatchesFilter(n,r))return null;const s=this.getIdToken(e,t,n.tenantId);return s&&(i=li(s.secret,this.cryptoImpl.base64Decode),!this.idTokenClaimsMatchTenantProfileFilter(i,r))?null:(o=qi(e,n,i,s?.secret),o)}getTenantProfilesFromAccountEntity(e,t,n){const r=e.getAccountInfo();let i=r.tenantProfiles||new Map;const o=this.getTokenKeys();if(t){const e=i.get(t);if(!e)return[];i=new Map([[t,e]])}const s=[];return i.forEach((e=>{const t=this.getTenantedAccountInfoByFilter(r,o,e,n);t&&s.push(t)})),s}tenantProfileMatchesFilter(e,t){return!(t.localAccountId&&!this.matchLocalAccountIdFromTenantProfile(e,t.localAccountId))&&((!t.name||e.name===t.name)&&(void 0===t.isHomeTenant||e.isHomeTenant===t.isHomeTenant))}idTokenClaimsMatchTenantProfileFilter(e,t){if(t){if(t.localAccountId&&!this.matchLocalAccountIdFromTokenClaims(e,t.localAccountId))return!1;if(t.loginHint&&!this.matchLoginHintFromTokenClaims(e,t.loginHint))return!1;if(t.username&&!this.matchUsername(e.preferred_username,t.username))return!1;if(t.name&&!this.matchName(e,t.name))return!1;if(t.sid&&!this.matchSid(e,t.sid))return!1}return!0}async saveCacheRecord(e,t,n){if(!e)throw Dr(nr);try{e.account&&this.setAccount(e.account),e.idToken&&!1!==t?.idToken&&this.setIdTokenCredential(e.idToken),e.accessToken&&!1!==t?.accessToken&&await this.saveAccessToken(e.accessToken),e.refreshToken&&!1!==t?.refreshToken&&this.setRefreshTokenCredential(e.refreshToken),e.appMetadata&&this.setAppMetadata(e.appMetadata)}catch(e){throw this.commonLogger?.error("CacheManager.saveCacheRecord: failed"),e instanceof Error?(this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e.message}`,n),"QuotaExceededError"===e.name||"NS_ERROR_DOM_QUOTA_REACHED"===e.name||e.message.includes("exceeded the quota")?(this.commonLogger?.error("CacheManager.saveCacheRecord: exceeded storage quota",n),new Gi(Hi)):new Gi(e.name,e.message)):(this.commonLogger?.errorPii(`CacheManager.saveCacheRecord: ${e}`,n),new Gi(Ki))}}async saveAccessToken(e){const t={clientId:e.clientId,credentialType:e.credentialType,environment:e.environment,homeAccountId:e.homeAccountId,realm:e.realm,tokenType:e.tokenType,requestedClaimsHash:e.requestedClaimsHash},n=this.getTokenKeys(),r=Pi.fromString(e.target),i=[];n.accessToken.forEach((e=>{if(!this.accessTokenKeyMatchesFilter(e,t,!1))return;const n=this.getAccessTokenCredential(e);if(n&&this.credentialMatchesFilter(n,t)){Pi.fromString(n.target).intersectingScopeSets(r)&&i.push(this.removeAccessToken(e))}})),await Promise.all(i),this.setAccessTokenCredential(e)}getAccountsFilteredBy(e){const t=this.getAccountKeys(),n=[];return t.forEach((t=>{if(!this.isAccountKey(t,e.homeAccountId))return;const r=this.getAccount(t,this.commonLogger);if(!r)return;if(e.homeAccountId&&!this.matchHomeAccountId(r,e.homeAccountId))return;if(e.username&&!this.matchUsername(r.username,e.username))return;if(e.environment&&!this.matchEnvironment(r,e.environment))return;if(e.realm&&!this.matchRealm(r,e.realm))return;if(e.nativeAccountId&&!this.matchNativeAccountId(r,e.nativeAccountId))return;if(e.authorityType&&!this.matchAuthorityType(r,e.authorityType))return;const i={localAccountId:e?.localAccountId,name:e?.name},o=r.tenantProfiles?.filter((e=>this.tenantProfileMatchesFilter(e,i)));o&&0===o.length||n.push(r)})),n}isAccountKey(e,t,n){return!(e.split(Ne.CACHE_KEY_SEPARATOR).length<3)&&(!(t&&!e.toLowerCase().includes(t.toLowerCase()))&&!(n&&!e.toLowerCase().includes(n.toLowerCase())))}isCredentialKey(e){if(e.split(Ne.CACHE_KEY_SEPARATOR).length<6)return!1;const t=e.toLowerCase();if(-1===t.indexOf(je.ID_TOKEN.toLowerCase())&&-1===t.indexOf(je.ACCESS_TOKEN.toLowerCase())&&-1===t.indexOf(je.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase())&&-1===t.indexOf(je.REFRESH_TOKEN.toLowerCase()))return!1;if(t.indexOf(je.REFRESH_TOKEN.toLowerCase())>-1){const e=`${je.REFRESH_TOKEN}${Ne.CACHE_KEY_SEPARATOR}${this.clientId}${Ne.CACHE_KEY_SEPARATOR}`,n=`${je.REFRESH_TOKEN}${Ne.CACHE_KEY_SEPARATOR}${Ue}${Ne.CACHE_KEY_SEPARATOR}`;if(-1===t.indexOf(e.toLowerCase())&&-1===t.indexOf(n.toLowerCase()))return!1}else if(-1===t.indexOf(this.clientId.toLowerCase()))return!1;return!0}credentialMatchesFilter(e,t){if(t.clientId&&!this.matchClientId(e,t.clientId))return!1;if(t.userAssertionHash&&!this.matchUserAssertionHash(e,t.userAssertionHash))return!1;if("string"==typeof t.homeAccountId&&!this.matchHomeAccountId(e,t.homeAccountId))return!1;if(t.environment&&!this.matchEnvironment(e,t.environment))return!1;if(t.realm&&!this.matchRealm(e,t.realm))return!1;if(t.credentialType&&!this.matchCredentialType(e,t.credentialType))return!1;if(t.familyId&&!this.matchFamilyId(e,t.familyId))return!1;if(t.target&&!this.matchTarget(e,t.target))return!1;if((t.requestedClaimsHash||e.requestedClaimsHash)&&e.requestedClaimsHash!==t.requestedClaimsHash)return!1;if(e.credentialType===je.ACCESS_TOKEN_WITH_AUTH_SCHEME){if(t.tokenType&&!this.matchTokenType(e,t.tokenType))return!1;if(t.tokenType===Ve.SSH&&t.keyId&&!this.matchKeyId(e,t.keyId))return!1}return!0}getAppMetadataFilteredBy(e){const t=this.getKeys(),n={};return t.forEach((t=>{if(!this.isAppMetadata(t))return;const r=this.getAppMetadata(t);r&&(e.environment&&!this.matchEnvironment(r,e.environment)||e.clientId&&!this.matchClientId(r,e.clientId)||(n[t]=r))})),n}getAuthorityMetadataByAlias(e){const t=this.getAuthorityMetadataKeys();let n=null;return t.forEach((t=>{if(!this.isAuthorityMetadata(t)||-1===t.indexOf(this.clientId))return;const r=this.getAuthorityMetadata(t);r&&-1!==r.aliases.indexOf(e)&&(n=r)})),n}async removeAllAccounts(){const e=this.getAccountKeys(),t=[];e.forEach((e=>{t.push(this.removeAccount(e))})),await Promise.all(t)}async removeAccount(e){const t=this.getAccount(e,this.commonLogger);t&&(await this.removeAccountContext(t),this.removeItem(e))}async removeAccountContext(e){const t=this.getTokenKeys(),n=e.generateAccountId(),r=[];t.idToken.forEach((e=>{0===e.indexOf(n)&&this.removeIdToken(e)})),t.accessToken.forEach((e=>{0===e.indexOf(n)&&r.push(this.removeAccessToken(e))})),t.refreshToken.forEach((e=>{0===e.indexOf(n)&&this.removeRefreshToken(e)})),await Promise.all(r)}updateOutdatedCachedAccount(e,t,n){if(t&&t.isSingleTenant()){this.commonLogger?.verbose("updateOutdatedCachedAccount: Found a single-tenant (outdated) account entity in the cache, migrating to multi-tenant account entity");const r=this.getAccountKeys().filter((e=>e.startsWith(t.homeAccountId))),i=[];r.forEach((e=>{const t=this.getCachedAccountEntity(e);t&&i.push(t)}));const o=i.find((e=>Li(e.realm,e.homeAccountId)))||i[0];o.tenantProfiles=i.map((e=>({tenantId:e.realm,localAccountId:e.localAccountId,name:e.name,isHomeTenant:Li(e.realm,e.homeAccountId)})));const s=Vi.toObject(new zi,{...o}),a=s.generateAccountKey();return r.forEach((t=>{t!==a&&this.removeOutdatedAccount(e)})),this.setAccount(s),n?.verbose("Updated an outdated account entity in the cache"),s}return t}async removeAccessToken(e){const t=this.getAccessTokenCredential(e);if(t){if(t.credentialType.toLowerCase()===je.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()&&t.tokenType===Ve.POP){const e=t.keyId;if(e)try{await this.cryptoImpl.removeTokenBindingKey(e)}catch(e){throw Dr(fr)}}return this.removeItem(e)}}removeAppMetadata(){return this.getKeys().forEach((e=>{this.isAppMetadata(e)&&this.removeItem(e)})),!0}readAccountFromCache(e){const t=zi.generateAccountCacheKey(e);return this.getAccount(t,this.commonLogger)}getIdToken(e,t,n,r,i){this.commonLogger.trace("CacheManager - getIdToken called");const o={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:je.ID_TOKEN,clientId:this.clientId,realm:n},s=this.getIdTokensByFilter(o,t),a=s.size;if(a<1)return this.commonLogger.info("CacheManager:getIdToken - No token found"),null;if(a>1){let t=s;if(!n){const n=new Map;s.forEach(((t,r)=>{t.realm===e.tenantId&&n.set(r,t)}));const r=n.size;if(r<1)return this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result"),s.values().next().value;if(1===r)return this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile"),n.values().next().value;t=n}return this.commonLogger.info("CacheManager:getIdToken - Multiple matching ID tokens found, clearing them"),t.forEach(((e,t)=>{this.removeIdToken(t)})),r&&i&&r.addFields({multiMatchedID:s.size},i),null}return this.commonLogger.info("CacheManager:getIdToken - Returning ID token"),s.values().next().value}getIdTokensByFilter(e,t){const n=t&&t.idToken||this.getTokenKeys().idToken,r=new Map;return n.forEach((t=>{if(!this.idTokenKeyMatchesFilter(t,{clientId:this.clientId,...e}))return;const n=this.getIdTokenCredential(t);n&&this.credentialMatchesFilter(n,e)&&r.set(t,n)})),r}idTokenKeyMatchesFilter(e,t){const n=e.toLowerCase();return(!t.clientId||-1!==n.indexOf(t.clientId.toLowerCase()))&&(!t.homeAccountId||-1!==n.indexOf(t.homeAccountId.toLowerCase()))}removeIdToken(e){this.removeItem(e)}removeRefreshToken(e){this.removeItem(e)}getAccessToken(e,t,n,r,i,o){this.commonLogger.trace("CacheManager - getAccessToken called");const s=Pi.createSearchScopes(t.scopes),a=t.authenticationScheme||Ve.BEARER,u=a&&a.toLowerCase()!==Ve.BEARER.toLowerCase()?je.ACCESS_TOKEN_WITH_AUTH_SCHEME:je.ACCESS_TOKEN,c={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:u,clientId:this.clientId,realm:r||e.tenantId,target:s,tokenType:a,keyId:t.sshKid,requestedClaimsHash:t.requestedClaimsHash},d=n&&n.accessToken||this.getTokenKeys().accessToken,l=[];d.forEach((e=>{if(this.accessTokenKeyMatchesFilter(e,c,!0)){const t=this.getAccessTokenCredential(e);t&&this.credentialMatchesFilter(t,c)&&l.push(t)}}));const h=l.length;return h<1?(this.commonLogger.info("CacheManager:getAccessToken - No token found"),null):h>1?(this.commonLogger.info("CacheManager:getAccessToken - Multiple access tokens found, clearing them"),l.forEach((e=>{this.removeAccessToken(gi(e))})),i&&o&&i.addFields({multiMatchedAT:l.length},o),null):(this.commonLogger.info("CacheManager:getAccessToken - Returning access token"),l[0])}accessTokenKeyMatchesFilter(e,t,n){const r=e.toLowerCase();if(t.clientId&&-1===r.indexOf(t.clientId.toLowerCase()))return!1;if(t.homeAccountId&&-1===r.indexOf(t.homeAccountId.toLowerCase()))return!1;if(t.realm&&-1===r.indexOf(t.realm.toLowerCase()))return!1;if(t.requestedClaimsHash&&-1===r.indexOf(t.requestedClaimsHash.toLowerCase()))return!1;if(t.target){const e=t.target.asArray();for(let t=0;t{if(!this.accessTokenKeyMatchesFilter(t,e,!0))return;const r=this.getAccessTokenCredential(t);r&&this.credentialMatchesFilter(r,e)&&n.push(r)})),n}getRefreshToken(e,t,n,r,i){this.commonLogger.trace("CacheManager - getRefreshToken called");const o=t?Ue:void 0,s={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:je.REFRESH_TOKEN,clientId:this.clientId,familyId:o},a=n&&n.refreshToken||this.getTokenKeys().refreshToken,u=[];a.forEach((e=>{if(this.refreshTokenKeyMatchesFilter(e,s)){const t=this.getRefreshTokenCredential(e);t&&this.credentialMatchesFilter(t,s)&&u.push(t)}}));const c=u.length;return c<1?(this.commonLogger.info("CacheManager:getRefreshToken - No refresh token found."),null):(c>1&&r&&i&&r.addFields({multiMatchedRT:c},i),this.commonLogger.info("CacheManager:getRefreshToken - returning refresh token"),u[0])}refreshTokenKeyMatchesFilter(e,t){const n=e.toLowerCase();return(!t.familyId||-1!==n.indexOf(t.familyId.toLowerCase()))&&(!(!t.familyId&&t.clientId&&-1===n.indexOf(t.clientId.toLowerCase()))&&(!t.homeAccountId||-1!==n.indexOf(t.homeAccountId.toLowerCase())))}readAppMetadataFromCache(e){const t={environment:e,clientId:this.clientId},n=this.getAppMetadataFilteredBy(t),r=Object.keys(n).map((e=>n[e])),i=r.length;if(i<1)return null;if(i>1)throw Dr(Gn);return r[0]}isAppMetadataFOCI(e){const t=this.readAppMetadataFromCache(e);return!(!t||t.familyId!==Ue)}matchHomeAccountId(e,t){return!("string"!=typeof e.homeAccountId||t!==e.homeAccountId)}matchLocalAccountIdFromTokenClaims(e,t){return t===(e.oid||e.sub)}matchLocalAccountIdFromTenantProfile(e,t){return e.localAccountId===t}matchName(e,t){return!(t.toLowerCase()!==e.name?.toLowerCase())}matchUsername(e,t){return!(!e||"string"!=typeof e||t?.toLowerCase()!==e.toLowerCase())}matchUserAssertionHash(e,t){return!(!e.userAssertionHash||t!==e.userAssertionHash)}matchEnvironment(e,t){if(this.staticAuthorityOptions){const n=function(e,t){let n;const r=e.canonicalAuthority;if(r){const i=new Mr(r).getUrlComponents().HostNameAndPort;n=kr(i,e.cloudDiscoveryMetadata?.metadata,ze,t)||kr(i,Sr.metadata,We,t)||e.knownAuthorities}return n||[]}(this.staticAuthorityOptions,this.commonLogger);if(n.includes(t)&&n.includes(e.environment))return!0}const n=this.getAuthorityMetadataByAlias(t);return!!(n&&n.aliases.indexOf(e.environment)>-1)}matchCredentialType(e,t){return e.credentialType&&t.toLowerCase()===e.credentialType.toLowerCase()}matchClientId(e,t){return!(!e.clientId||t!==e.clientId)}matchFamilyId(e,t){return!(!e.familyId||t!==e.familyId)}matchRealm(e,t){return!(e.realm?.toLowerCase()!==t.toLowerCase())}matchNativeAccountId(e,t){return!(!e.nativeAccountId||t!==e.nativeAccountId)}matchLoginHintFromTokenClaims(e,t){return e.login_hint===t||(e.preferred_username===t||e.upn===t)}matchSid(e,t){return e.sid===t}matchAuthorityType(e,t){return!(!e.authorityType||t.toLowerCase()!==e.authorityType.toLowerCase())}matchTarget(e,t){if(e.credentialType!==je.ACCESS_TOKEN&&e.credentialType!==je.ACCESS_TOKEN_WITH_AUTH_SCHEME||!e.target)return!1;return Pi.fromString(e.target).containsScopeSet(t)}matchTokenType(e,t){return!(!e.tokenType||e.tokenType!==t)}matchKeyId(e,t){return!(!e.keyId||e.keyId!==t)}isAppMetadata(e){return-1!==e.indexOf(Le)}isAuthorityMetadata(e){return-1!==e.indexOf(qe)}generateAuthorityMetadataCacheKey(e){return`${qe}-${this.clientId}-${e}`}static toObject(e,t){for(const n in t)e[n]=t[n];return e}}class Yi extends Vi{setAccount(){throw Dr(br)}getAccount(){throw Dr(br)}getCachedAccountEntity(){throw Dr(br)}setIdTokenCredential(){throw Dr(br)}getIdTokenCredential(){throw Dr(br)}setAccessTokenCredential(){throw Dr(br)}getAccessTokenCredential(){throw Dr(br)}setRefreshTokenCredential(){throw Dr(br)}getRefreshTokenCredential(){throw Dr(br)}setAppMetadata(){throw Dr(br)}getAppMetadata(){throw Dr(br)}setServerTelemetry(){throw Dr(br)}getServerTelemetry(){throw Dr(br)}setAuthorityMetadata(){throw Dr(br)}getAuthorityMetadata(){throw Dr(br)}getAuthorityMetadataKeys(){throw Dr(br)}setThrottlingCache(){throw Dr(br)}getThrottlingCache(){throw Dr(br)}removeItem(){throw Dr(br)}getKeys(){throw Dr(br)}getAccountKeys(){throw Dr(br)}getTokenKeys(){throw Dr(br)}async clear(){throw Dr(br)}updateCredentialCacheKey(){throw Dr(br)}removeOutdatedAccount(){throw Dr(br)}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +const Zi={tokenRenewalOffsetSeconds:300,preventCorsPreflight:!1},Ji={loggerCallback:()=>{},piiLoggingEnabled:!1,logLevel:Xt.Info,correlationId:ae.EMPTY_STRING},Xi={claimsBasedCachingEnabled:!1},Qi={async sendGetRequestAsync(){throw Dr(br)},async sendPostRequestAsync(){throw Dr(br)}},eo={sku:ae.SKU,version:Bi,cpu:ae.EMPTY_STRING,os:ae.EMPTY_STRING},to={clientSecret:ae.EMPTY_STRING,clientAssertion:void 0},no={azureCloudInstance:Fr,tenant:`${ae.DEFAULT_COMMON_TENANT}`},ro={application:{appName:"",appVersion:""}};function io(e){return e.authOptions.authority.options.protocolMode===Rr} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +class oo{static generateThrottlingStorageKey(e){return`${Je}.${JSON.stringify(e)}`}static preProcess(e,t){const n=oo.generateThrottlingStorageKey(t),r=e.getThrottlingCache(n);if(r){if(r.throttleTime=500&&e.status<600}static checkResponseForRetryAfter(e){return!!e.headers&&(e.headers.hasOwnProperty(we)&&(e.status<200||e.status>=300))}static calculateThrottleTime(e){const t=e<=0?0:e,n=Date.now()/1e3;return Math.floor(1e3*Math.min(n+(t||Ye),n+Ze))}static removeThrottle(e,t,n,r){const i={clientId:t,authority:n.authority,scopes:n.scopes,homeAccountIdentifier:r,claims:n.claims,authenticationScheme:n.authenticationScheme,resourceRequestMethod:n.resourceRequestMethod,resourceRequestUri:n.resourceRequestUri,shrClaims:n.shrClaims,sshKid:n.sshKid},o=this.generateThrottlingStorageKey(i);e.removeItem(o)}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +class so{constructor(e,t){this.networkClient=e,this.cacheManager=t}async sendPostRequest(e,t,n){let r;oo.preProcess(this.cacheManager,e);try{r=await this.networkClient.sendPostRequestAsync(t,n)}catch(e){throw e instanceof Zt?e:Dr(Pn)}return oo.postProcess(this.cacheManager,e,r),r}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +const ao="home_account_id",uo="UPN",co="client_id",lo="response_type",ho="token_type",fo="req_cnf",po="return_spa_code"; +/*! @azure/msal-common v14.10.0 2024-05-07 */ +class mo{static validateRedirectUri(e){if(!e)throw kn(on)}static validatePrompt(e){const t=[];for(const e in Se)t.push(Se[e]);if(t.indexOf(e)<0)throw kn(ln)}static validateClaims(e){try{JSON.parse(e)}catch(e){throw kn(hn)}}static validateCodeChallengeParams(e,t){if(!e||!t)throw kn(gn);this.validateCodeChallengeMethod(t)}static validateCodeChallengeMethod(e){if([Ce.PLAIN,Ce.S256].indexOf(e)<0)throw kn(mn)}static sanitizeEQParams(e,t){return e?(t.forEach(((t,n)=>{e[n]&&delete e[n]})),Object.fromEntries(Object.entries(e).filter((e=>""!==e[1])))):{}}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +class go{constructor(){this.parameters=new Map}addResponseTypeCode(){this.parameters.set(lo,encodeURIComponent(ae.CODE_RESPONSE_TYPE))}addResponseTypeForTokenAndIdToken(){this.parameters.set(lo,encodeURIComponent(`${ae.TOKEN_RESPONSE_TYPE} ${ae.ID_TOKEN_RESPONSE_TYPE}`))}addResponseMode(e){this.parameters.set("response_mode",encodeURIComponent(e||ke.QUERY))}addNativeBroker(){this.parameters.set("nativebroker",encodeURIComponent("1"))}addScopes(e,t=!0,n=ye){!t||n.includes("openid")||e.includes("openid")||n.push("openid");const r=t?[...e||[],...n]:e||[],i=new Pi(r);this.parameters.set("scope",encodeURIComponent(i.printScopes()))}addClientId(e){this.parameters.set(co,encodeURIComponent(e))}addRedirectUri(e){mo.validateRedirectUri(e),this.parameters.set("redirect_uri",encodeURIComponent(e))}addPostLogoutRedirectUri(e){mo.validateRedirectUri(e),this.parameters.set("post_logout_redirect_uri",encodeURIComponent(e))}addIdTokenHint(e){this.parameters.set("id_token_hint",encodeURIComponent(e))}addDomainHint(e){this.parameters.set("domain_hint",encodeURIComponent(e))}addLoginHint(e){this.parameters.set("login_hint",encodeURIComponent(e))}addCcsUpn(e){this.parameters.set(_e,encodeURIComponent(`UPN:${e}`))}addCcsOid(e){this.parameters.set(_e,encodeURIComponent(`Oid:${e.uid}@${e.utid}`))}addSid(e){this.parameters.set("sid",encodeURIComponent(e))}addClaims(e,t){const n=this.addClientCapabilitiesToClaims(e,t);mo.validateClaims(n),this.parameters.set("claims",encodeURIComponent(n))}addCorrelationId(e){this.parameters.set("client-request-id",encodeURIComponent(e))}addLibraryInfo(e){this.parameters.set("x-client-SKU",e.sku),this.parameters.set("x-client-VER",e.version),e.os&&this.parameters.set("x-client-OS",e.os),e.cpu&&this.parameters.set("x-client-CPU",e.cpu)}addApplicationTelemetry(e){e?.appName&&this.parameters.set("x-app-name",e.appName),e?.appVersion&&this.parameters.set("x-app-ver",e.appVersion)}addPrompt(e){mo.validatePrompt(e),this.parameters.set("prompt",encodeURIComponent(e))}addState(e){e&&this.parameters.set("state",encodeURIComponent(e))}addNonce(e){this.parameters.set("nonce",encodeURIComponent(e))}addCodeChallengeParams(e,t){if(mo.validateCodeChallengeParams(e,t),!e||!t)throw kn(gn);this.parameters.set("code_challenge",encodeURIComponent(e)),this.parameters.set("code_challenge_method",encodeURIComponent(t))}addAuthorizationCode(e){this.parameters.set("code",encodeURIComponent(e))}addDeviceCode(e){this.parameters.set("device_code",encodeURIComponent(e))}addRefreshToken(e){this.parameters.set("refresh_token",encodeURIComponent(e))}addCodeVerifier(e){this.parameters.set("code_verifier",encodeURIComponent(e))}addClientSecret(e){this.parameters.set("client_secret",encodeURIComponent(e))}addClientAssertion(e){e&&this.parameters.set("client_assertion",encodeURIComponent(e))}addClientAssertionType(e){e&&this.parameters.set("client_assertion_type",encodeURIComponent(e))}addOboAssertion(e){this.parameters.set("assertion",encodeURIComponent(e))}addRequestTokenUse(e){this.parameters.set("requested_token_use",encodeURIComponent(e))}addGrantType(e){this.parameters.set("grant_type",encodeURIComponent(e))}addClientInfo(){this.parameters.set("client_info","1")}addExtraQueryParameters(e){const t=mo.sanitizeEQParams(e,this.parameters);Object.keys(t).forEach((t=>{this.parameters.set(t,e[t])}))}addClientCapabilitiesToClaims(e,t){let n;if(e)try{n=JSON.parse(e)}catch(e){throw kn(hn)}else n={};return t&&t.length>0&&(n.hasOwnProperty(Me)||(n[Me]={}),n[Me][Ae]={values:t}),JSON.stringify(n)}addUsername(e){this.parameters.set(tt,encodeURIComponent(e))}addPassword(e){this.parameters.set(nt,encodeURIComponent(e))}addPopToken(e){e&&(this.parameters.set(ho,Ve.POP),this.parameters.set(fo,encodeURIComponent(e)))}addSshJwk(e){e&&(this.parameters.set(ho,Ve.SSH),this.parameters.set(fo,encodeURIComponent(e)))}addServerTelemetry(e){this.parameters.set("x-client-current-telemetry",e.generateCurrentRequestHeaderValue()),this.parameters.set("x-client-last-telemetry",e.generateLastRequestHeaderValue())}addThrottling(){this.parameters.set("x-ms-lib-capability",Xe)}addLogoutHint(e){this.parameters.set("logout_hint",encodeURIComponent(e))}createQueryString(){const e=new Array;return this.parameters.forEach(((t,n)=>{e.push(`${n}=${t}`)})),e.join("&")}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +async function yo(e,t,n,r,i,o,s){s?.addQueueMeasurement(Xr,o);const a=Ii.transformCIAMAuthority(Ri(e)),u=new Ii(a,t,n,r,i,o,s);try{return await ci(u.resolveEndpointsAsync.bind(u),Qr,i,s,o)(),u}catch(e){throw Dr(Bn)}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +class vo{constructor(e,t){this.config=function({authOptions:e,systemOptions:t,loggerOptions:n,cacheOptions:r,storageInterface:i,networkInterface:o,cryptoInterface:s,clientCredentials:a,libraryInfo:u,telemetry:c,serverTelemetryManager:d,persistencePlugin:l,serializableCache:h}){const f={...Ji,...n};return{authOptions:(p=e,{clientCapabilities:[],azureCloudOptions:no,skipAuthorityMetadataCache:!1,...p}),systemOptions:{...Zi,...t},loggerOptions:f,cacheOptions:{...Xi,...r},storageInterface:i||new Yi(e.clientId,Fi,new Qt(f)),networkInterface:o||Qi,cryptoInterface:s||Fi,clientCredentials:a||to,libraryInfo:{...eo,...u},telemetry:{...ro,...c},serverTelemetryManager:d||null,persistencePlugin:l||null,serializableCache:h||null};var p}(e),this.logger=new Qt(this.config.loggerOptions,Oi,Bi),this.cryptoUtils=this.config.cryptoInterface,this.cacheManager=this.config.storageInterface,this.networkClient=this.config.networkInterface,this.networkManager=new so(this.networkClient,this.cacheManager),this.serverTelemetryManager=this.config.serverTelemetryManager,this.authority=this.config.authOptions.authority,this.performanceClient=t}createTokenRequestHeaders(e){const t={};if(t[be]=ae.URL_FORM_CONTENT_TYPE,!this.config.systemOptions.preventCorsPreflight&&e)switch(e.type){case ao:try{const n=ji(e.credential);t[_e]=`Oid:${n.uid}@${n.utid}`}catch(e){this.logger.verbose("Could not parse home account ID for CCS Header: "+e)}break;case uo:t[_e]=`UPN: ${e.credential}`}return t}async executePostToTokenEndpoint(e,t,n,r,i,o){o&&this.performanceClient?.addQueueMeasurement(o,i);const s=await this.networkManager.sendPostRequest(r,e,{body:t,headers:n});return this.performanceClient?.addFields({refreshTokenSize:s.body.refresh_token?.length||0,httpVerToken:s.headers?.[De]||""},i),this.config.serverTelemetryManager&&s.status<500&&429!==s.status&&this.config.serverTelemetryManager.clearTelemetryCache(),s}async updateAuthority(e,t){this.performanceClient?.addQueueMeasurement(Hr,t);const n=`https://${e}/${this.authority.tenant}/`,r=await yo(n,this.networkClient,this.cacheManager,this.authority.options,this.logger,t,this.performanceClient);this.authority=r}createTokenQueryParameters(e){const t=new go;return e.tokenQueryParameters&&t.addExtraQueryParameters(e.tokenQueryParameters),t.createQueryString()}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +const bo="no_tokens_found",wo="native_account_unavailable",_o="refresh_token_expired",xo="bad_token",Do=["interaction_required","consent_required","login_required",xo],Eo=["message_only","additional_action","basic_action","user_password_expired","consent_required","bad_token"],Mo={[bo]:"No refresh token found in the cache. Please sign-in.",[wo]:"The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.",[_o]:"Refresh token has expired.",[xo]:"Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve."};class Ao extends Zt{constructor(e,t,n,r,i,o,s,a){super(e,t,n),Object.setPrototypeOf(this,Ao.prototype),this.timestamp=r||ae.EMPTY_STRING,this.traceId=i||ae.EMPTY_STRING,this.correlationId=o||ae.EMPTY_STRING,this.claims=s||ae.EMPTY_STRING,this.name="InteractionRequiredAuthError",this.errorNo=a}}function So(e,t,n){const r=!!e&&Do.indexOf(e)>-1,i=!!n&&Eo.indexOf(n)>-1,o=!!t&&Do.some((e=>t.indexOf(e)>-1));return r||o||i}function Co(e){return new Ao(e,Mo[e])} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +class ko{constructor(e,t,n,r,i){this.account=e||null,this.idToken=t||null,this.accessToken=n||null,this.refreshToken=r||null,this.appMetadata=i||null}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +class To{static setRequestState(e,t,n){const r=To.generateLibraryState(e,n);return t?`${r}${ae.RESOURCE_DELIM}${t}`:r}static generateLibraryState(e,t){if(!e)throw Dr(or);const n={id:e.createNewGuid()};t&&(n.meta=t);const r=JSON.stringify(n);return e.base64Encode(r)}static parseRequestState(e,t){if(!e)throw Dr(or);if(!t)throw Dr(Ln);try{const n=t.split(ae.RESOURCE_DELIM),r=n[0],i=n.length>1?n.slice(1).join(ae.RESOURCE_DELIM):ae.EMPTY_STRING,o=e.base64Decode(r),s=JSON.parse(o);return{userRequestState:i||ae.EMPTY_STRING,libraryState:s}}catch(e){throw Dr(Ln)}}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +const Io="sw";class Ro{constructor(e,t){this.cryptoUtils=e,this.performanceClient=t}async generateCnf(e,t){this.performanceClient?.addQueueMeasurement(Yr,e.correlationId);const n=await ci(this.generateKid.bind(this),Yr,t,this.performanceClient,e.correlationId)(e),r=this.cryptoUtils.base64Encode(JSON.stringify(n));return{kid:n.kid,reqCnfString:r,reqCnfHash:await this.cryptoUtils.hashString(r)}}async generateKid(e){this.performanceClient?.addQueueMeasurement(Zr,e.correlationId);return{kid:await this.cryptoUtils.getPublicKeyThumbprint(e),xms_ksl:Io}}async signPopToken(e,t,n){return this.signPayload(e,t,n)}async signPayload(e,t,n,r){const{resourceRequestMethod:i,resourceRequestUri:o,shrClaims:s,shrNonce:a,shrOptions:u}=n,c=o?new Mr(o):void 0,d=c?.getUrlComponents();return this.cryptoUtils.signJwt({at:e,ts:fi(),m:i?.toUpperCase(),u:d?.HostNameAndPort,nonce:a||this.cryptoUtils.createNewGuid(),p:d?.AbsolutePath,q:d?.QueryString?[[],d.QueryString]:void 0,client_claims:s||void 0,...r},t,u,n.correlationId)}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +class Fo{constructor(e,t){this.cache=e,this.hasChanged=t}get cacheHasChanged(){return this.hasChanged}get tokenCache(){return this.cache}}class Oo{constructor(e,t,n,r,i,o,s){this.clientId=e,this.cacheStorage=t,this.cryptoObj=n,this.logger=r,this.serializableCache=i,this.persistencePlugin=o,this.performanceClient=s}validateServerAuthorizationCodeResponse(e,t){if(!e.state||!t)throw e.state?Dr(qn,"Cached State"):Dr(qn,"Server State");let n,r;try{n=decodeURIComponent(e.state)}catch(t){throw Dr(Ln,e.state)}try{r=decodeURIComponent(t)}catch(t){throw Dr(Ln,e.state)}if(n!==r)throw Dr(Un);if(e.error||e.error_description||e.suberror){const t= +/*! @azure/msal-common v14.10.0 2024-05-07 */ +function(e){const t="code=",n=e.error_uri?.lastIndexOf(t);return n&&n>=0?e.error_uri?.substring(n+5):void 0}(e);if(So(e.error,e.error_description,e.suberror))throw new Ao(e.error||"",e.error_description,e.suberror,e.timestamp||"",e.trace_id||"",e.correlation_id||"",e.claims||"",t);throw new Jt(e.error||"",e.error_description,e.suberror,t)}}validateTokenResponse(e,t){if(e.error||e.error_description||e.suberror){const n=`${e.error_codes} - [${e.timestamp}]: ${e.error_description} - Correlation ID: ${e.correlation_id} - Trace ID: ${e.trace_id}`,r=e.error_codes?.length?e.error_codes[0]:void 0,i=new Jt(e.error,n,e.suberror,r);if(t&&e.status&&e.status>=me&&e.status<=ge)return void this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\n${i}`);if(t&&e.status&&e.status>=he&&e.status<=fe)return void this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\n${i}`);if(So(e.error,e.error_description,e.suberror))throw new Ao(e.error,e.error_description,e.suberror,e.timestamp||ae.EMPTY_STRING,e.trace_id||ae.EMPTY_STRING,e.correlation_id||ae.EMPTY_STRING,e.claims||ae.EMPTY_STRING,r);throw i}}async handleServerTokenResponse(e,t,n,r,i,o,s,a,u){let c,d;if(this.performanceClient?.addQueueMeasurement(Jr,e.correlation_id),e.id_token){if(c=li(e.id_token||ae.EMPTY_STRING,this.cryptoObj.base64Decode),i&&i.nonce&&c.nonce!==i.nonce)throw Dr($n);if(r.maxAge||0===r.maxAge){const e=c.auth_time;if(!e)throw Dr(zn);hi(e,r.maxAge)}}this.homeAccountIdentifier=zi.generateHomeAccountId(e.client_info||ae.EMPTY_STRING,t.authorityType,this.logger,this.cryptoObj,c),i&&i.state&&(d=To.parseRequestState(this.cryptoObj,i.state)),e.key_id=e.key_id||r.sshKid||void 0;const l=this.generateCacheRecord(e,t,n,r,c,o,i);let h;try{if(this.persistencePlugin&&this.serializableCache&&(this.logger.verbose("Persistence enabled, calling beforeCacheAccess"),h=new Fo(this.serializableCache,!0),await this.persistencePlugin.beforeCacheAccess(h)),s&&!a&&l.account){const e=l.account.generateAccountKey();if(!this.cacheStorage.getAccount(e,this.logger))return this.logger.warning("Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache"),await Oo.generateAuthenticationResult(this.cryptoObj,t,l,!1,r,c,d,void 0,u)}await this.cacheStorage.saveCacheRecord(l,r.storeInCache,r.correlationId)}finally{this.persistencePlugin&&this.serializableCache&&h&&(this.logger.verbose("Persistence enabled, calling afterCacheAccess"),await this.persistencePlugin.afterCacheAccess(h))}return Oo.generateAuthenticationResult(this.cryptoObj,t,l,!1,r,c,d,e,u)}generateCacheRecord(e,t,n,r,i,o,s){const a=t.getPreferredCache();if(!a)throw Dr(rr);const u=$i(i);let c,d;var l,h,f,p,m;e.id_token&&i&&(l=this.homeAccountIdentifier,h=a,f=e.id_token,p=this.clientId,m=u||"",c={credentialType:je.ID_TOKEN,homeAccountId:l,environment:h,clientId:p,secret:f,realm:m},d=function(e,t,n,r,i,o,s,a,u,c,d){d?.verbose("setCachedAccount called");const l=e.getAccountKeys().find((e=>e.startsWith(n)));let h=null;l&&(h=e.getAccount(l,d));const f=h||zi.createAccount({homeAccountId:n,idTokenClaims:r,clientInfo:o,environment:s,cloudGraphHostName:u?.cloud_graph_host_name,msGraphHost:u?.msgraph_host,nativeAccountId:c},t,i),p=f.tenantProfiles||[];if(a&&!p.find((e=>e.tenantId===a))){const e=Ui(n,r);p.push(e)}return f.tenantProfiles=p,f}(this.cacheStorage,t,this.homeAccountIdentifier,i,this.cryptoObj.base64Decode,e.client_info,a,u,s,void 0,this.logger));let g=null;if(e.access_token){const i=e.scope?Pi.fromString(e.scope):new Pi(r.scopes||[]),s=("string"==typeof e.expires_in?parseInt(e.expires_in,10):e.expires_in)||0,c=("string"==typeof e.ext_expires_in?parseInt(e.ext_expires_in,10):e.ext_expires_in)||0,d=("string"==typeof e.refresh_in?parseInt(e.refresh_in,10):e.refresh_in)||void 0,l=n+s,h=l+c,f=d&&d>0?n+d:void 0;g=function(e,t,n,r,i,o,s,a,u,c,d,l,h,f,p){const m={homeAccountId:e,credentialType:je.ACCESS_TOKEN,secret:n,cachedAt:fi().toString(),expiresOn:s.toString(),extendedExpiresOn:a.toString(),environment:t,clientId:r,realm:i,target:o,tokenType:d||Ve.BEARER};if(l&&(m.userAssertionHash=l),c&&(m.refreshOn=c.toString()),f&&(m.requestedClaims=f,m.requestedClaimsHash=p),m.tokenType?.toLowerCase()!==Ve.BEARER.toLowerCase())switch(m.credentialType=je.ACCESS_TOKEN_WITH_AUTH_SCHEME,m.tokenType){case Ve.POP:const e=li(n,u);if(!e?.cnf?.kid)throw Dr(lr);m.keyId=e.cnf.kid;break;case Ve.SSH:m.keyId=h}return m}(this.homeAccountIdentifier,a,e.access_token,this.clientId,u||t.tenant||"",i.printScopes(),l,h,this.cryptoObj.base64Decode,f,e.token_type,o,e.key_id,r.claims,r.requestedClaimsHash)}let y=null;if(e.refresh_token){let t;if(e.refresh_token_expires_in){t=n+("string"==typeof e.refresh_token_expires_in?parseInt(e.refresh_token_expires_in,10):e.refresh_token_expires_in)}y=function(e,t,n,r,i,o,s){const a={credentialType:je.REFRESH_TOKEN,homeAccountId:e,environment:t,clientId:r,secret:n};return o&&(a.userAssertionHash=o),i&&(a.familyId=i),s&&(a.expiresOn=s.toString()),a}(this.homeAccountIdentifier,a,e.refresh_token,this.clientId,e.foci,o,t)}let v=null;return e.foci&&(v={clientId:this.clientId,environment:a,familyId:e.foci}),new ko(d,c,g,y,v)}static async generateAuthenticationResult(e,t,n,r,i,o,s,a,u){let c,d,l=ae.EMPTY_STRING,h=[],f=null,p=ae.EMPTY_STRING;if(n.accessToken){if(n.accessToken.tokenType===Ve.POP){const t=new Ro(e),{secret:r,keyId:o}=n.accessToken;if(!o)throw Dr(mr);l=await t.signPopToken(r,o,i)}else l=n.accessToken.secret;h=Pi.fromString(n.accessToken.target).asArray(),f=new Date(1e3*Number(n.accessToken.expiresOn)),c=new Date(1e3*Number(n.accessToken.extendedExpiresOn)),n.accessToken.refreshOn&&(d=new Date(1e3*Number(n.accessToken.refreshOn)))}n.appMetadata&&(p=n.appMetadata.familyId===Ue?Ue:"");const m=o?.oid||o?.sub||"",g=o?.tid||"";a?.spa_accountid&&n.account&&(n.account.nativeAccountId=a?.spa_accountid);const y=n.account?qi(n.account.getAccountInfo(),void 0,o,n.idToken?.secret):null;return{authority:t.canonicalAuthority,uniqueId:m,tenantId:g,scopes:h,account:y,idToken:n?.idToken?.secret||"",idTokenClaims:o||{},accessToken:l,fromCache:r,expiresOn:f,extExpiresOn:c,refreshOn:d,correlationId:i.correlationId,requestId:u||ae.EMPTY_STRING,familyId:p,tokenType:n.accessToken?.tokenType||ae.EMPTY_STRING,state:s?s.userRequestState:ae.EMPTY_STRING,cloudGraphHostName:n.account?.cloudGraphHostName||ae.EMPTY_STRING,msGraphHost:n.account?.msGraphHost||ae.EMPTY_STRING,code:a?.spa_code,fromNativeBroker:!1}}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +async function Bo(e,t,n){if("string"==typeof e)return e;return e({clientId:t,tokenEndpoint:n})} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +class Po extends vo{constructor(e,t){super(e,t),this.includeRedirectUri=!0,this.oidcDefaultScopes=this.config.authOptions.authority.options.OIDCOptions?.defaultScopes}async getAuthCodeUrl(e){this.performanceClient?.addQueueMeasurement(zr,e.correlationId);const t=await ci(this.createAuthCodeUrlQueryString.bind(this),Vr,this.logger,this.performanceClient,e.correlationId)(e);return Mr.appendQueryString(this.authority.authorizationEndpoint,t)}async acquireToken(e,t){if(this.performanceClient?.addQueueMeasurement(Kr,e.correlationId),!e.code)throw Dr(Vn);const n=fi(),r=await ci(this.executeTokenRequest.bind(this),Wr,this.logger,this.performanceClient,e.correlationId)(this.authority,e),i=r.headers?.[xe],o=new Oo(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin,this.performanceClient);return o.validateTokenResponse(r.body),ci(o.handleServerTokenResponse.bind(o),Jr,this.logger,this.performanceClient,e.correlationId)(r.body,this.authority,n,e,t,void 0,void 0,void 0,i)}handleFragmentResponse(e,t){if(new Oo(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,null,null).validateServerAuthorizationCodeResponse(e,t),!e.code)throw Dr(hr);return e}getLogoutUri(e){if(!e)throw kn(pn);const t=this.createLogoutUrlQueryString(e);return Mr.appendQueryString(this.authority.endSessionEndpoint,t)}async executeTokenRequest(e,t){this.performanceClient?.addQueueMeasurement(Wr,t.correlationId);const n=this.createTokenQueryParameters(t),r=Mr.appendQueryString(e.tokenEndpoint,n),i=await ci(this.createTokenRequestBody.bind(this),Gr,this.logger,this.performanceClient,t.correlationId)(t);let o;if(t.clientInfo)try{const e=Ni(t.clientInfo,this.cryptoUtils.base64Decode);o={credential:`${e.uid}${Ne.CLIENT_INFO_SEPARATOR}${e.utid}`,type:ao}}catch(e){this.logger.verbose("Could not parse client info for CCS Header: "+e)}const s=this.createTokenRequestHeaders(o||t.ccsCredential),a={clientId:t.tokenBodyParameters?.clientId||this.config.authOptions.clientId,authority:e.canonicalAuthority,scopes:t.scopes,claims:t.claims,authenticationScheme:t.authenticationScheme,resourceRequestMethod:t.resourceRequestMethod,resourceRequestUri:t.resourceRequestUri,shrClaims:t.shrClaims,sshKid:t.sshKid};return ci(this.executePostToTokenEndpoint.bind(this),Br,this.logger,this.performanceClient,t.correlationId)(r,i,s,a,t.correlationId,Br)}async createTokenRequestBody(e){this.performanceClient?.addQueueMeasurement(Gr,e.correlationId);const t=new go;if(t.addClientId(e.tokenBodyParameters?.[co]||this.config.authOptions.clientId),this.includeRedirectUri?t.addRedirectUri(e.redirectUri):mo.validateRedirectUri(e.redirectUri),t.addScopes(e.scopes,!0,this.oidcDefaultScopes),t.addAuthorizationCode(e.code),t.addLibraryInfo(this.config.libraryInfo),t.addApplicationTelemetry(this.config.telemetry.application),t.addThrottling(),this.serverTelemetryManager&&!io(this.config)&&t.addServerTelemetry(this.serverTelemetryManager),e.codeVerifier&&t.addCodeVerifier(e.codeVerifier),this.config.clientCredentials.clientSecret&&t.addClientSecret(this.config.clientCredentials.clientSecret),this.config.clientCredentials.clientAssertion){const n=this.config.clientCredentials.clientAssertion;t.addClientAssertion(await Bo(n.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),t.addClientAssertionType(n.assertionType)}if(t.addGrantType(Te),t.addClientInfo(),e.authenticationScheme===Ve.POP){const n=new Ro(this.cryptoUtils,this.performanceClient),r=await ci(n.generateCnf.bind(n),Yr,this.logger,this.performanceClient,e.correlationId)(e,this.logger);t.addPopToken(r.reqCnfString)}else if(e.authenticationScheme===Ve.SSH){if(!e.sshJwk)throw kn(wn);t.addSshJwk(e.sshJwk)}const n=e.correlationId||this.config.cryptoInterface.createNewGuid();let r;if(t.addCorrelationId(n),(!Tn.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&t.addClaims(e.claims,this.config.authOptions.clientCapabilities),e.clientInfo)try{const t=Ni(e.clientInfo,this.cryptoUtils.base64Decode);r={credential:`${t.uid}${Ne.CLIENT_INFO_SEPARATOR}${t.utid}`,type:ao}}catch(e){this.logger.verbose("Could not parse client info for CCS Header: "+e)}else r=e.ccsCredential;if(this.config.systemOptions.preventCorsPreflight&&r)switch(r.type){case ao:try{const e=ji(r.credential);t.addCcsOid(e)}catch(e){this.logger.verbose("Could not parse home account ID for CCS Header: "+e)}break;case uo:t.addCcsUpn(r.credential)}return e.tokenBodyParameters&&t.addExtraQueryParameters(e.tokenBodyParameters),!e.enableSpaAuthorizationCode||e.tokenBodyParameters&&e.tokenBodyParameters[po]||t.addExtraQueryParameters({[po]:"1"}),t.createQueryString()}async createAuthCodeUrlQueryString(e){this.performanceClient?.addQueueMeasurement(Vr,e.correlationId);const t=new go;t.addClientId(e.extraQueryParameters?.[co]||this.config.authOptions.clientId);const n=[...e.scopes||[],...e.extraScopesToConsent||[]];t.addScopes(n,!0,this.oidcDefaultScopes),t.addRedirectUri(e.redirectUri);const r=e.correlationId||this.config.cryptoInterface.createNewGuid();if(t.addCorrelationId(r),t.addResponseMode(e.responseMode),t.addResponseTypeCode(),t.addLibraryInfo(this.config.libraryInfo),io(this.config)||t.addApplicationTelemetry(this.config.telemetry.application),t.addClientInfo(),e.codeChallenge&&e.codeChallengeMethod&&t.addCodeChallengeParams(e.codeChallenge,e.codeChallengeMethod),e.prompt&&t.addPrompt(e.prompt),e.domainHint&&t.addDomainHint(e.domainHint),e.prompt!==Se.SELECT_ACCOUNT)if(e.sid&&e.prompt===Se.NONE)this.logger.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from request"),t.addSid(e.sid);else if(e.account){const n=this.extractAccountSid(e.account);let r=this.extractLoginHint(e.account);if(r&&e.domainHint&&(this.logger.warning('AuthorizationCodeClient.createAuthCodeUrlQueryString: "domainHint" param is set, skipping opaque "login_hint" claim. Please consider not passing domainHint'),r=null),r){this.logger.verbose("createAuthCodeUrlQueryString: login_hint claim present on account"),t.addLoginHint(r);try{const n=ji(e.account.homeAccountId);t.addCcsOid(n)}catch(e){this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header")}}else if(n&&e.prompt===Se.NONE){this.logger.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from account"),t.addSid(n);try{const n=ji(e.account.homeAccountId);t.addCcsOid(n)}catch(e){this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header")}}else if(e.loginHint)this.logger.verbose("createAuthCodeUrlQueryString: Adding login_hint from request"),t.addLoginHint(e.loginHint),t.addCcsUpn(e.loginHint);else if(e.account.username){this.logger.verbose("createAuthCodeUrlQueryString: Adding login_hint from account"),t.addLoginHint(e.account.username);try{const n=ji(e.account.homeAccountId);t.addCcsOid(n)}catch(e){this.logger.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header")}}}else e.loginHint&&(this.logger.verbose("createAuthCodeUrlQueryString: No account, adding login_hint from request"),t.addLoginHint(e.loginHint),t.addCcsUpn(e.loginHint));else this.logger.verbose("createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints");if(e.nonce&&t.addNonce(e.nonce),e.state&&t.addState(e.state),(e.claims||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&t.addClaims(e.claims,this.config.authOptions.clientCapabilities),e.extraQueryParameters&&t.addExtraQueryParameters(e.extraQueryParameters),e.nativeBroker&&(t.addNativeBroker(),e.authenticationScheme===Ve.POP)){const n=new Ro(this.cryptoUtils),r=await ci(n.generateCnf.bind(n),Yr,this.logger,this.performanceClient,e.correlationId)(e,this.logger);t.addPopToken(r.reqCnfHash)}return t.createQueryString()}createLogoutUrlQueryString(e){const t=new go;return e.postLogoutRedirectUri&&t.addPostLogoutRedirectUri(e.postLogoutRedirectUri),e.correlationId&&t.addCorrelationId(e.correlationId),e.idTokenHint&&t.addIdTokenHint(e.idTokenHint),e.state&&t.addState(e.state),e.logoutHint&&t.addLogoutHint(e.logoutHint),e.extraQueryParameters&&t.addExtraQueryParameters(e.extraQueryParameters),t.createQueryString()}extractAccountSid(e){return e.idTokenClaims?.sid||null}extractLoginHint(e){return e.idTokenClaims?.login_hint||null}}class No extends vo{constructor(e,t){super(e,t)}async acquireToken(e){this.performanceClient?.addQueueMeasurement(Nr,e.correlationId);const t=fi(),n=await ci(this.executeTokenRequest.bind(this),Pr,this.logger,this.performanceClient,e.correlationId)(e,this.authority),r=n.headers?.[xe],i=new Oo(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin);return i.validateTokenResponse(n.body),ci(i.handleServerTokenResponse.bind(i),Jr,this.logger,this.performanceClient,e.correlationId)(n.body,this.authority,t,e,void 0,void 0,!0,e.forceCache,r)}async acquireTokenByRefreshToken(e){if(!e)throw kn(fn);if(this.performanceClient?.addQueueMeasurement(Lr,e.correlationId),!e.account)throw Dr(tr);if(this.cacheManager.isAppMetadataFOCI(e.account.environment))try{return await ci(this.acquireTokenWithCachedRefreshToken.bind(this),jr,this.logger,this.performanceClient,e.correlationId)(e,!0)}catch(t){const n=t instanceof Ao&&t.errorCode===bo,r=t instanceof Jt&&t.errorCode===Qe&&t.subError===et;if(n||r)return ci(this.acquireTokenWithCachedRefreshToken.bind(this),jr,this.logger,this.performanceClient,e.correlationId)(e,!1);throw t}return ci(this.acquireTokenWithCachedRefreshToken.bind(this),jr,this.logger,this.performanceClient,e.correlationId)(e,!1)}async acquireTokenWithCachedRefreshToken(e,t){this.performanceClient?.addQueueMeasurement(jr,e.correlationId);const n=((e,t,n,r,i)=>(...o)=>{n.trace(`Executing function ${t}`);const s=r?.startMeasurement(t,i);if(i){const e=t+"CallCount";r?.incrementFields({[e]:1},i)}try{const r=e(...o);return s?.end({success:!0}),n.trace(`Returning result from ${t}`),r}catch(e){n.trace(`Error occurred in ${t}`);try{n.trace(JSON.stringify(e))}catch(e){n.trace("Unable to print error message.")}throw s?.end({success:!1},e),e}})(this.cacheManager.getRefreshToken.bind(this.cacheManager),ui,this.logger,this.performanceClient,e.correlationId)(e.account,t,void 0,this.performanceClient,e.correlationId);if(!n)throw Co(bo);if(n.expiresOn&&pi(n.expiresOn,e.refreshTokenExpirationOffsetSeconds||300))throw Co(_o);const r={...e,refreshToken:n.secret,authenticationScheme:e.authenticationScheme||Ve.BEARER,ccsCredential:{credential:e.account.homeAccountId,type:ao}};try{return await ci(this.acquireToken.bind(this),Nr,this.logger,this.performanceClient,e.correlationId)(r)}catch(e){if(e instanceof Ao&&e.subError===xo){this.logger.verbose("acquireTokenWithRefreshToken: bad refresh token, removing from cache");const e=gi(n);this.cacheManager.removeRefreshToken(e)}throw e}}async executeTokenRequest(e,t){this.performanceClient?.addQueueMeasurement(Pr,e.correlationId);const n=this.createTokenQueryParameters(e),r=Mr.appendQueryString(t.tokenEndpoint,n),i=await ci(this.createTokenRequestBody.bind(this),Ur,this.logger,this.performanceClient,e.correlationId)(e),o=this.createTokenRequestHeaders(e.ccsCredential),s={clientId:e.tokenBodyParameters?.clientId||this.config.authOptions.clientId,authority:t.canonicalAuthority,scopes:e.scopes,claims:e.claims,authenticationScheme:e.authenticationScheme,resourceRequestMethod:e.resourceRequestMethod,resourceRequestUri:e.resourceRequestUri,shrClaims:e.shrClaims,sshKid:e.sshKid};return ci(this.executePostToTokenEndpoint.bind(this),Or,this.logger,this.performanceClient,e.correlationId)(r,i,o,s,e.correlationId,Or)}async createTokenRequestBody(e){this.performanceClient?.addQueueMeasurement(Ur,e.correlationId);const t=e.correlationId,n=new go;if(n.addClientId(e.tokenBodyParameters?.[co]||this.config.authOptions.clientId),e.redirectUri&&n.addRedirectUri(e.redirectUri),n.addScopes(e.scopes,!0,this.config.authOptions.authority.options.OIDCOptions?.defaultScopes),n.addGrantType(Re),n.addClientInfo(),n.addLibraryInfo(this.config.libraryInfo),n.addApplicationTelemetry(this.config.telemetry.application),n.addThrottling(),this.serverTelemetryManager&&!io(this.config)&&n.addServerTelemetry(this.serverTelemetryManager),n.addCorrelationId(t),n.addRefreshToken(e.refreshToken),this.config.clientCredentials.clientSecret&&n.addClientSecret(this.config.clientCredentials.clientSecret),this.config.clientCredentials.clientAssertion){const t=this.config.clientCredentials.clientAssertion;n.addClientAssertion(await Bo(t.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),n.addClientAssertionType(t.assertionType)}if(e.authenticationScheme===Ve.POP){const t=new Ro(this.cryptoUtils,this.performanceClient),r=await ci(t.generateCnf.bind(t),Yr,this.logger,this.performanceClient,e.correlationId)(e,this.logger);n.addPopToken(r.reqCnfString)}else if(e.authenticationScheme===Ve.SSH){if(!e.sshJwk)throw kn(wn);n.addSshJwk(e.sshJwk)}if((!Tn.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&n.addClaims(e.claims,this.config.authOptions.clientCapabilities),this.config.systemOptions.preventCorsPreflight&&e.ccsCredential)switch(e.ccsCredential.type){case ao:try{const t=ji(e.ccsCredential.credential);n.addCcsOid(t)}catch(e){this.logger.verbose("Could not parse home account ID for CCS Header: "+e)}break;case uo:n.addCcsUpn(e.ccsCredential.credential)}return e.tokenBodyParameters&&n.addExtraQueryParameters(e.tokenBodyParameters),n.createQueryString()}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +class jo extends vo{constructor(e,t){super(e,t)}async acquireToken(e){try{const[t,n]=await this.acquireCachedToken({...e,scopes:e.scopes?.length?e.scopes:[...ye]});if(n===mt){this.logger.info("SilentFlowClient:acquireCachedToken - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed.");new No(this.config,this.performanceClient).acquireTokenByRefreshToken(e).catch((()=>{}))}return t}catch(t){if(t instanceof xr&&t.errorCode===cr){return new No(this.config,this.performanceClient).acquireTokenByRefreshToken(e)}throw t}}async acquireCachedToken(e){this.performanceClient?.addQueueMeasurement(qr,e.correlationId);let t=lt;if(e.forceRefresh||!this.config.cacheOptions.claimsBasedCachingEnabled&&!Tn.isEmptyObj(e.claims))throw this.setCacheOutcome(ht,e.correlationId),Dr(cr);if(!e.account)throw Dr(tr);const n=e.account.tenantId||function(e){const t=new Mr(e).getUrlComponents(),n=t.PathSegments.slice(-1)[0]?.toLowerCase();switch(n){case Ee.COMMON:case Ee.ORGANIZATIONS:case Ee.CONSUMERS:return;default:return n}}(e.authority),r=this.cacheManager.getTokenKeys(),i=this.cacheManager.getAccessToken(e.account,e,r,n,this.performanceClient,e.correlationId);if(!i)throw this.setCacheOutcome(ft,e.correlationId),Dr(cr);if(o=i.cachedAt,Number(o)>fi()||pi(i.expiresOn,this.config.systemOptions.tokenRenewalOffsetSeconds))throw this.setCacheOutcome(pt,e.correlationId),Dr(cr);var o;i.refreshOn&&pi(i.refreshOn,0)&&(t=mt);const s=e.authority||this.authority.getPreferredCache(),a={account:this.cacheManager.readAccountFromCache(e.account),accessToken:i,idToken:this.cacheManager.getIdToken(e.account,r,n,this.performanceClient,e.correlationId),refreshToken:null,appMetadata:this.cacheManager.readAppMetadataFromCache(s)};return this.setCacheOutcome(t,e.correlationId),this.config.serverTelemetryManager&&this.config.serverTelemetryManager.incrementCacheHits(),[await ci(this.generateResultFromCacheRecord.bind(this),$r,this.logger,this.performanceClient,e.correlationId)(a,e),t]}setCacheOutcome(e,t){this.serverTelemetryManager?.setCacheOutcome(e),this.performanceClient?.addFields({cacheOutcome:e},t),e!==lt&&this.logger.info(`Token refresh is required due to cache outcome: ${e}`)}async generateResultFromCacheRecord(e,t){let n;if(this.performanceClient?.addQueueMeasurement($r,t.correlationId),e.idToken&&(n=li(e.idToken.secret,this.config.cryptoInterface.base64Decode)),t.maxAge||0===t.maxAge){const e=n?.auth_time;if(!e)throw Dr(zn);hi(e,t.maxAge)}return Oo.generateAuthenticationResult(this.cryptoUtils,this.authority,e,!0,t,n)}} +/*! @azure/msal-common v14.10.0 2024-05-07 */ +class Lo{constructor(e,t){this.cacheOutcome=lt,this.cacheManager=t,this.apiId=e.apiId,this.correlationId=e.correlationId,this.wrapperSKU=e.wrapperSKU||ae.EMPTY_STRING,this.wrapperVer=e.wrapperVer||ae.EMPTY_STRING,this.telemetryCacheKey=Ge.CACHE_KEY+Ne.CACHE_KEY_SEPARATOR+e.clientId}generateCurrentRequestHeaderValue(){const e=`${this.apiId}${Ge.VALUE_SEPARATOR}${this.cacheOutcome}`,t=[this.wrapperSKU,this.wrapperVer].join(Ge.VALUE_SEPARATOR),n=[e,this.getRegionDiscoveryFields()].join(Ge.VALUE_SEPARATOR);return[Ge.SCHEMA_VERSION,n,t].join(Ge.CATEGORY_SEPARATOR)}generateLastRequestHeaderValue(){const e=this.getLastRequests(),t=Lo.maxErrorsToSend(e),n=e.failedRequests.slice(0,2*t).join(Ge.VALUE_SEPARATOR),r=e.errors.slice(0,t).join(Ge.VALUE_SEPARATOR),i=e.errors.length,o=[i,t=Ge.MAX_CACHED_ERRORS&&(t.failedRequests.shift(),t.failedRequests.shift(),t.errors.shift()),t.failedRequests.push(this.apiId,this.correlationId),e instanceof Error&&e&&e.toString()?e instanceof Zt?e.subError?t.errors.push(e.subError):e.errorCode?t.errors.push(e.errorCode):t.errors.push(e.toString()):t.errors.push(e.toString()):t.errors.push(Ge.UNKNOWN_ERROR),this.cacheManager.setServerTelemetry(this.telemetryCacheKey,t)}incrementCacheHits(){const e=this.getLastRequests();return e.cacheHits+=1,this.cacheManager.setServerTelemetry(this.telemetryCacheKey,e),e.cacheHits}getLastRequests(){return this.cacheManager.getServerTelemetry(this.telemetryCacheKey)||{failedRequests:[],errors:[],cacheHits:0}}clearTelemetryCache(){const e=this.getLastRequests(),t=Lo.maxErrorsToSend(e);if(t===e.errors.length)this.cacheManager.removeItem(this.telemetryCacheKey);else{const n={failedRequests:e.failedRequests.slice(2*t),errors:e.errors.slice(t),cacheHits:0};this.cacheManager.setServerTelemetry(this.telemetryCacheKey,n)}}static maxErrorsToSend(e){let t,n=0,r=0;const i=e.errors.length;for(t=0;t{const s=new URL(e),a=new URL(t),u=r?.headers||{},c={host:a.hostname,port:a.port,method:"CONNECT",path:s.hostname,headers:u};i&&Object.keys(i).length&&(c.agent=new qo.Agent(i));let d="";if(n===Et){const e=r?.body||"";d=`Content-Type: application/x-www-form-urlencoded\r\nContent-Length: ${e.length}\r\n\r\n${e}`}else o&&(c.timeout=o);const l=`${n.toUpperCase()} ${s.href} HTTP/1.1\r\nHost: ${s.host}\r\nConnection: close\r\n`+d+"\r\n";return new Promise(((e,t)=>{const n=qo.request(c);o&&n.on("timeout",(()=>{n.destroy(),t(new Error("Request time out"))})),n.end(),n.on("connect",((r,i)=>{const o=r?.statusCode||Mt.SERVER_ERROR;(oMt.SUCCESS_RANGE_END)&&(n.destroy(),i.destroy(),t(new Error(`Error connecting to proxy. Http status code: ${r.statusCode}. Http status message: ${r?.statusMessage||"Unknown"}`))),i.write(l);const s=[];i.on("data",(e=>{s.push(e)})),i.on("end",(()=>{const t=zo.concat([...s]).toString().split("\r\n"),r=parseInt(t[0].split(" ")[1]),i=t[0].split(" ").slice(2).join(" "),o=t[t.length-1],a=t.slice(1,t.length-2),u=new Map;a.forEach((e=>{const t=e.split(new RegExp(/:\s(.*)/s)),n=t[0];let r=t[1];try{const e=JSON.parse(r);e&&"object"==typeof e&&(r=e)}catch(e){}u.set(n,r)}));const c=Object.fromEntries(u),d=Uo.getNetworkResponse(c,Go(r,i,c,o),r);(rde)&&d.body.error!==Tt&&n.destroy(),e(d)})),i.on("error",(e=>{n.destroy(),i.destroy(),t(new Error(e.toString()))}))})),n.on("error",(e=>{n.destroy(),t(new Error(e.toString()))}))}))},Wo=(e,t,n,r,i)=>{const o=t===Et,s=n?.body||"",a=new URL(e),u={method:t,headers:n?.headers||{},...Uo.urlToHttpOptions(a)};return r&&Object.keys(r).length&&(u.agent=new $o.Agent(r)),o?u.headers={...u.headers,"Content-Length":s.length}:i&&(u.timeout=i),new Promise(((e,t)=>{let n;n="http:"===u.protocol?qo.request(u):$o.request(u),o&&n.write(s),i&&n.on("timeout",(()=>{n.destroy(),t(new Error("Request time out"))})),n.end(),n.on("response",(t=>{const r=t.headers,i=t.statusCode,o=t.statusMessage,s=[];t.on("data",(e=>{s.push(e)})),t.on("end",(()=>{const t=zo.concat([...s]).toString(),a=r,u=Uo.getNetworkResponse(a,Go(i,o,a,t),i);(ide)&&u.body.error!==Tt&&n.destroy(),e(u)}))})),n.on("error",(e=>{n.destroy(),t(new Error(e.toString()))}))}))},Go=(e,t,n,r)=>{let i;try{i=JSON.parse(r)}catch(r){let o,s;e>=he&&e<=fe?(o="client_error",s="A client"):e>=me&&e<=ge?(o="server_error",s="A server"):(o="unknown_error",s="An unknown"),i={error:o,error_description:`${s} error occured.\nHttp status code: ${e}\nHttp status message: ${t||"Unknown"}\nHeaders: ${JSON.stringify(n)}`}}return i},Vo="invalid_managed_identity_id_type",Yo="missing_client_id",Zo="network_unavailable",Jo="unable_to_create_azure_arc",Xo="unable_to_create_cloud_shell",Qo="unable_to_create_source",es="unable_to_read_secret_file",ts="user_assigned_not_available_at_runtime",ns="www_authenticate_header_missing",rs="www_authenticate_header_unsupported_format",is={[gt]:"azure_pod_identity_authority_host_url_malformed",[yt]:"identity_endpoint_url_malformed",[vt]:"imds_endpoint_url_malformed",[bt]:"msi_endpoint_url_malformed"},os={[Vo]:"More than one ManagedIdentityIdType was provided.",[Yo]:"A ManagedIdentityId id was not provided.",[is.AZURE_POD_IDENTITY_AUTHORITY_HOST]:`The Managed Identity's '${gt}' environment variable is malformed.`,[is.IDENTITY_ENDPOINT]:`The Managed Identity's '${yt}' environment variable is malformed.`,[is.IMDS_ENDPOINT]:`The Managed Identity's '${vt}' environment variable is malformed.`,[is.MSI_ENDPOINT]:`The Managed Identity's '${bt}' environment variable is malformed.`,[Zo]:"Authentication unavailable. The request to the managed identity endpoint timed out.",[Jo]:"Azure Arc Managed Identities can only be system assigned.",[Xo]:"Cloud Shell Managed Identities can only be system assigned.",[Qo]:"Unable to create a Managed Identity source based on environment variables.",[es]:"Unable to read the secret file.",[ts]:"Service Fabric user assigned managed identity ClientId or ResourceId is not configurable at runtime.",[ns]:"A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is missing.",[rs]:"A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is in an unsupported format."};class ss extends Zt{constructor(e){super(e,os[e]),this.name="ManagedIdentityError",Object.setPrototypeOf(this,ss.prototype)}}function as(e){return new ss(e)} +/*! @azure/msal-node v2.8.0 2024-05-07 */ +const us={clientId:ae.EMPTY_STRING,authority:ae.DEFAULT_AUTHORITY,clientSecret:ae.EMPTY_STRING,clientAssertion:ae.EMPTY_STRING,clientCertificate:{thumbprint:ae.EMPTY_STRING,privateKey:ae.EMPTY_STRING,x5c:ae.EMPTY_STRING},knownAuthorities:[],cloudDiscoveryMetadata:ae.EMPTY_STRING,authorityMetadata:ae.EMPTY_STRING,clientCapabilities:[],protocolMode:Ir,azureCloudOptions:{azureCloudInstance:Fr,tenant:ae.EMPTY_STRING},skipAuthorityMetadataCache:!1},cs={claimsBasedCachingEnabled:!1},ds={loggerCallback:()=>{},piiLoggingEnabled:!1,logLevel:Xt.Info},ls={loggerOptions:ds,networkClient:new Ho,proxyUrl:ae.EMPTY_STRING,customAgentOptions:{},disableInternalRetries:!1},hs={application:{appName:ae.EMPTY_STRING,appVersion:ae.EMPTY_STRING}};var fs,ps=new Uint8Array(16);function ms(){if(!fs&&!(fs="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return fs(ps)}const gs=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;const ys=function(e){return"string"==typeof e&&gs.test(e)};for(var vs=[],bs=0;bs<256;++bs)vs.push((bs+256).toString(16).substr(1));const ws=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(vs[e[t+0]]+vs[e[t+1]]+vs[e[t+2]]+vs[e[t+3]]+"-"+vs[e[t+4]]+vs[e[t+5]]+"-"+vs[e[t+6]]+vs[e[t+7]]+"-"+vs[e[t+8]]+vs[e[t+9]]+"-"+vs[e[t+10]]+vs[e[t+11]]+vs[e[t+12]]+vs[e[t+13]]+vs[e[t+14]]+vs[e[t+15]]).toLowerCase();if(!ys(n))throw TypeError("Stringified UUID is invalid");return n};const _s=function(e,t,n){var r=(e=e||{}).random||(e.rng||ms)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(var i=0;i<16;++i)t[n+i]=r[i];return t}return ws(r)}; +/*! @azure/msal-node v2.8.0 2024-05-07 */ +class xs{generateGuid(){return _s()}isGuid(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e)}}var Ds=n(48287).Buffer; +/*! @azure/msal-node v2.8.0 2024-05-07 */class Es{static base64Encode(e,t){return Ds.from(e,t).toString("base64")}static base64EncodeUrl(e,t){return Es.base64Encode(e,t).replace(/=/g,ae.EMPTY_STRING).replace(/\+/g,"-").replace(/\//g,"_")}static base64Decode(e){return Ds.from(e,"base64").toString("utf8")}static base64DecodeUrl(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");for(;t.length%4;)t+="=";return Es.base64Decode(t)}}var Ms=n(91565); +/*! @azure/msal-node v2.8.0 2024-05-07 */ +class As{sha256(e){return Ms.createHash(At).update(e).digest()}} +/*! @azure/msal-node v2.8.0 2024-05-07 */ +class Ss{constructor(){this.hashUtils=new As}async generatePkceCodes(){const e=this.generateCodeVerifier();return{verifier:e,challenge:this.generateCodeChallengeFromVerifier(e)}}generateCodeVerifier(){const e=[],t=256-256%St.length;for(;e.length<=32;){const n=Ms.randomBytes(1)[0];if(n>=t)continue;const r=n%St.length;e.push(St[r])}const n=e.join(ae.EMPTY_STRING);return Es.base64EncodeUrl(n)}generateCodeChallengeFromVerifier(e){return Es.base64EncodeUrl(this.hashUtils.sha256(e).toString("base64"),"base64")}} +/*! @azure/msal-node v2.8.0 2024-05-07 */ +class Cs{constructor(){this.pkceGenerator=new Ss,this.guidGenerator=new xs,this.hashUtils=new As}createNewGuid(){return this.guidGenerator.generateGuid()}base64Encode(e){return Es.base64Encode(e)}base64Decode(e){return Es.base64Decode(e)}generatePkceCodes(){return this.pkceGenerator.generatePkceCodes()}getPublicKeyThumbprint(){throw new Error("Method not implemented.")}removeTokenBindingKey(){throw new Error("Method not implemented.")}clearKeystore(){throw new Error("Method not implemented.")}signJwt(){throw new Error("Method not implemented.")}async hashString(e){return Es.base64EncodeUrl(this.hashUtils.sha256(e).toString("base64"),"base64")}} +/*! @azure/msal-node v2.8.0 2024-05-07 */ +class ks{static deserializeJSONBlob(e){return e?JSON.parse(e):{}}static deserializeAccounts(e){const t={};return e&&Object.keys(e).map((function(n){const r=e[n],i={homeAccountId:r.home_account_id,environment:r.environment,realm:r.realm,localAccountId:r.local_account_id,username:r.username,authorityType:r.authority_type,name:r.name,clientInfo:r.client_info,lastModificationTime:r.last_modification_time,lastModificationApp:r.last_modification_app,tenantProfiles:r.tenantProfiles?.map((e=>JSON.parse(e)))},o=new zi;Vi.toObject(o,i),t[n]=o})),t}static deserializeIdTokens(e){const t={};return e&&Object.keys(e).map((function(n){const r=e[n],i={homeAccountId:r.home_account_id,environment:r.environment,credentialType:r.credential_type,clientId:r.client_id,secret:r.secret,realm:r.realm};t[n]=i})),t}static deserializeAccessTokens(e){const t={};return e&&Object.keys(e).map((function(n){const r=e[n],i={homeAccountId:r.home_account_id,environment:r.environment,credentialType:r.credential_type,clientId:r.client_id,secret:r.secret,realm:r.realm,target:r.target,cachedAt:r.cached_at,expiresOn:r.expires_on,extendedExpiresOn:r.extended_expires_on,refreshOn:r.refresh_on,keyId:r.key_id,tokenType:r.token_type,requestedClaims:r.requestedClaims,requestedClaimsHash:r.requestedClaimsHash,userAssertionHash:r.userAssertionHash};t[n]=i})),t}static deserializeRefreshTokens(e){const t={};return e&&Object.keys(e).map((function(n){const r=e[n],i={homeAccountId:r.home_account_id,environment:r.environment,credentialType:r.credential_type,clientId:r.client_id,secret:r.secret,familyId:r.family_id,target:r.target,realm:r.realm};t[n]=i})),t}static deserializeAppMetadata(e){const t={};return e&&Object.keys(e).map((function(n){const r=e[n];t[n]={clientId:r.client_id,environment:r.environment,familyId:r.family_id}})),t}static deserializeAllCache(e){return{accounts:e.Account?this.deserializeAccounts(e.Account):{},idTokens:e.IdToken?this.deserializeIdTokens(e.IdToken):{},accessTokens:e.AccessToken?this.deserializeAccessTokens(e.AccessToken):{},refreshTokens:e.RefreshToken?this.deserializeRefreshTokens(e.RefreshToken):{},appMetadata:e.AppMetadata?this.deserializeAppMetadata(e.AppMetadata):{}}}} +/*! @azure/msal-node v2.8.0 2024-05-07 */ +class Ts{static serializeJSONBlob(e){return JSON.stringify(e)}static serializeAccounts(e){const t={};return Object.keys(e).map((function(n){const r=e[n];t[n]={home_account_id:r.homeAccountId,environment:r.environment,realm:r.realm,local_account_id:r.localAccountId,username:r.username,authority_type:r.authorityType,name:r.name,client_info:r.clientInfo,last_modification_time:r.lastModificationTime,last_modification_app:r.lastModificationApp,tenantProfiles:r.tenantProfiles?.map((e=>JSON.stringify(e)))}})),t}static serializeIdTokens(e){const t={};return Object.keys(e).map((function(n){const r=e[n];t[n]={home_account_id:r.homeAccountId,environment:r.environment,credential_type:r.credentialType,client_id:r.clientId,secret:r.secret,realm:r.realm}})),t}static serializeAccessTokens(e){const t={};return Object.keys(e).map((function(n){const r=e[n];t[n]={home_account_id:r.homeAccountId,environment:r.environment,credential_type:r.credentialType,client_id:r.clientId,secret:r.secret,realm:r.realm,target:r.target,cached_at:r.cachedAt,expires_on:r.expiresOn,extended_expires_on:r.extendedExpiresOn,refresh_on:r.refreshOn,key_id:r.keyId,token_type:r.tokenType,requestedClaims:r.requestedClaims,requestedClaimsHash:r.requestedClaimsHash,userAssertionHash:r.userAssertionHash}})),t}static serializeRefreshTokens(e){const t={};return Object.keys(e).map((function(n){const r=e[n];t[n]={home_account_id:r.homeAccountId,environment:r.environment,credential_type:r.credentialType,client_id:r.clientId,secret:r.secret,family_id:r.familyId,target:r.target,realm:r.realm}})),t}static serializeAppMetadata(e){const t={};return Object.keys(e).map((function(n){const r=e[n];t[n]={client_id:r.clientId,environment:r.environment,family_id:r.familyId}})),t}static serializeAllCache(e){return{Account:this.serializeAccounts(e.accounts),IdToken:this.serializeIdTokens(e.idTokens),AccessToken:this.serializeAccessTokens(e.accessTokens),RefreshToken:this.serializeRefreshTokens(e.refreshTokens),AppMetadata:this.serializeAppMetadata(e.appMetadata)}}} +/*! @azure/msal-node v2.8.0 2024-05-07 */ +class Is extends Vi{constructor(e,t,n,r){super(t,n,e,r),this.cache={},this.changeEmitters=[],this.logger=e}registerChangeEmitter(e){this.changeEmitters.push(e)}emitChange(){this.changeEmitters.forEach((e=>e.call(null)))}cacheToInMemoryCache(e){const t={accounts:{},idTokens:{},accessTokens:{},refreshTokens:{},appMetadata:{}};for(const n in e){const r=e[n];if("object"==typeof r)if(r instanceof zi)t.accounts[n]=r;else if(bi(r))t.idTokens[n]=r;else if(vi(r))t.accessTokens[n]=r;else if(wi(r))t.refreshTokens[n]=r;else{if(!Ai(n,r))continue;t.appMetadata[n]=r}}return t}inMemoryCacheToCache(e){let t=this.getCache();return t={...t,...e.accounts,...e.idTokens,...e.accessTokens,...e.refreshTokens,...e.appMetadata},t}getInMemoryCache(){this.logger.trace("Getting in-memory cache");return this.cacheToInMemoryCache(this.getCache())}setInMemoryCache(e){this.logger.trace("Setting in-memory cache");const t=this.inMemoryCacheToCache(e);this.setCache(t),this.emitChange()}getCache(){return this.logger.trace("Getting cache key-value store"),this.cache}setCache(e){this.logger.trace("Setting cache key value store"),this.cache=e,this.emitChange()}getItem(e){this.logger.tracePii(`Item key: ${e}`);return this.getCache()[e]}setItem(e,t){this.logger.tracePii(`Item key: ${e}`);const n=this.getCache();n[e]=t,this.setCache(n)}getAccountKeys(){const e=this.getInMemoryCache();return Object.keys(e.accounts)}getTokenKeys(){const e=this.getInMemoryCache();return{idToken:Object.keys(e.idTokens),accessToken:Object.keys(e.accessTokens),refreshToken:Object.keys(e.refreshTokens)}}getAccount(e){const t=this.getCachedAccountEntity(e);return t&&zi.isAccountEntity(t)?this.updateOutdatedCachedAccount(e,t):null}getCachedAccountEntity(e){return this.getItem(e)?Object.assign(new zi,this.getItem(e)):null}setAccount(e){const t=e.generateAccountKey();this.setItem(t,e)}getIdTokenCredential(e){const t=this.getItem(e);return bi(t)?t:null}setIdTokenCredential(e){const t=gi(e);this.setItem(t,e)}getAccessTokenCredential(e){const t=this.getItem(e);return vi(t)?t:null}setAccessTokenCredential(e){const t=gi(e);this.setItem(t,e)}getRefreshTokenCredential(e){const t=this.getItem(e);return wi(t)?t:null}setRefreshTokenCredential(e){const t=gi(e);this.setItem(t,e)}getAppMetadata(e){const t=this.getItem(e);return Ai(e,t)?t:null}setAppMetadata(e){const t=function({environment:e,clientId:t}){return[Le,e,t].join(Ne.CACHE_KEY_SEPARATOR).toLowerCase()}(e);this.setItem(t,e)}getServerTelemetry(e){const t=this.getItem(e);return t&&function(e,t){const n=0===e.indexOf(Ge.CACHE_KEY);let r=!0;return t&&(r=t.hasOwnProperty("failedRequests")&&t.hasOwnProperty("errors")&&t.hasOwnProperty("cacheHits")),n&&r}(e,t)?t:null}setServerTelemetry(e,t){this.setItem(e,t)}getAuthorityMetadata(e){const t=this.getItem(e);return t&&function(e,t){return!!t&&0===e.indexOf(qe)&&t.hasOwnProperty("aliases")&&t.hasOwnProperty("preferred_cache")&&t.hasOwnProperty("preferred_network")&&t.hasOwnProperty("canonical_authority")&&t.hasOwnProperty("authorization_endpoint")&&t.hasOwnProperty("token_endpoint")&&t.hasOwnProperty("issuer")&&t.hasOwnProperty("aliasesFromNetwork")&&t.hasOwnProperty("endpointsFromNetwork")&&t.hasOwnProperty("expiresAt")&&t.hasOwnProperty("jwks_uri")}(e,t)?t:null}getAuthorityMetadataKeys(){return this.getKeys().filter((e=>this.isAuthorityMetadata(e)))}setAuthorityMetadata(e,t){this.setItem(e,t)}getThrottlingCache(e){const t=this.getItem(e);return t&&function(e,t){let n=!1;e&&(n=0===e.indexOf(Je));let r=!0;return t&&(r=t.hasOwnProperty("throttleTime")),n&&r}(e,t)?t:null}setThrottlingCache(e,t){this.setItem(e,t)}removeItem(e){this.logger.tracePii(`Item key: ${e}`);let t=!1;const n=this.getCache();return n[e]&&(delete n[e],t=!0),t&&(this.setCache(n),this.emitChange()),t}removeOutdatedAccount(e){this.removeItem(e)}containsKey(e){return this.getKeys().includes(e)}getKeys(){this.logger.trace("Retrieving all cache keys");const e=this.getCache();return[...Object.keys(e)]}async clear(){this.logger.trace("Clearing cache entries created by MSAL");this.getKeys().forEach((e=>{this.removeItem(e)})),this.emitChange()}static generateInMemoryCache(e){return ks.deserializeAllCache(ks.deserializeJSONBlob(e))}static generateJsonCache(e){return Ts.serializeAllCache(e)}updateCredentialCacheKey(e,t){const n=gi(t);if(e!==n){const r=this.getItem(e);if(r)return this.removeItem(e),this.setItem(n,r),this.logger.verbose(`Updated an outdated ${t.credentialType} cache key`),n;this.logger.error(`Attempted to update an outdated ${t.credentialType} cache key but no item matching the outdated key was found in storage`)}return e}} +/*! @azure/msal-node v2.8.0 2024-05-07 */ +const Rs={},Fs={},Os={},Bs={},Ps={};class Ns{constructor(e,t,n){this.cacheHasChanged=!1,this.storage=e,this.storage.registerChangeEmitter(this.handleChangeEvent.bind(this)),n&&(this.persistence=n),this.logger=t}hasChanged(){return this.cacheHasChanged}serialize(){this.logger.trace("Serializing in-memory cache");let e=Ts.serializeAllCache(this.storage.getInMemoryCache());return this.cacheSnapshot?(this.logger.trace("Reading cache snapshot from disk"),e=this.mergeState(JSON.parse(this.cacheSnapshot),e)):this.logger.trace("No cache snapshot to merge"),this.cacheHasChanged=!1,JSON.stringify(e)}deserialize(e){if(this.logger.trace("Deserializing JSON to in-memory cache"),this.cacheSnapshot=e,this.cacheSnapshot){this.logger.trace("Reading cache snapshot from disk");const e=ks.deserializeAllCache(this.overlayDefaults(JSON.parse(this.cacheSnapshot)));this.storage.setInMemoryCache(e)}else this.logger.trace("No cache snapshot to deserialize")}getKVStore(){return this.storage.getCache()}async getAllAccounts(){let e;this.logger.trace("getAllAccounts called");try{return this.persistence&&(e=new Fo(this,!0),await this.persistence.beforeCacheAccess(e)),this.storage.getAllAccounts()}finally{this.persistence&&e&&await this.persistence.afterCacheAccess(e)}}async getAccountByHomeId(e){const t=await this.getAllAccounts();return e&&t&&t.length&&t.filter((t=>t.homeAccountId===e))[0]||null}async getAccountByLocalId(e){const t=await this.getAllAccounts();return e&&t&&t.length&&t.filter((t=>t.localAccountId===e))[0]||null}async removeAccount(e){let t;this.logger.trace("removeAccount called");try{this.persistence&&(t=new Fo(this,!0),await this.persistence.beforeCacheAccess(t)),await this.storage.removeAccount(zi.generateAccountCacheKey(e))}finally{this.persistence&&t&&await this.persistence.afterCacheAccess(t)}}handleChangeEvent(){this.cacheHasChanged=!0}mergeState(e,t){this.logger.trace("Merging in-memory cache with cache snapshot");const n=this.mergeRemovals(e,t);return this.mergeUpdates(n,t)}mergeUpdates(e,t){return Object.keys(t).forEach((n=>{const r=t[n];if(e.hasOwnProperty(n)){const t=null!==r,i="object"==typeof r,o=!Array.isArray(r),s=void 0!==e[n]&&null!==e[n];t&&i&&o&&s?this.mergeUpdates(e[n],r):e[n]=r}else null!==r&&(e[n]=r)})),e}mergeRemovals(e,t){this.logger.trace("Remove updated entries in cache");const n=e.Account?this.mergeRemovalsDict(e.Account,t.Account):e.Account,r=e.AccessToken?this.mergeRemovalsDict(e.AccessToken,t.AccessToken):e.AccessToken,i=e.RefreshToken?this.mergeRemovalsDict(e.RefreshToken,t.RefreshToken):e.RefreshToken,o=e.IdToken?this.mergeRemovalsDict(e.IdToken,t.IdToken):e.IdToken,s=e.AppMetadata?this.mergeRemovalsDict(e.AppMetadata,t.AppMetadata):e.AppMetadata;return{...e,Account:n,AccessToken:r,RefreshToken:i,IdToken:o,AppMetadata:s}}mergeRemovalsDict(e,t){const n={...e};return Object.keys(e).forEach((e=>{t&&t.hasOwnProperty(e)||delete n[e]})),n}overlayDefaults(e){return this.logger.trace("Overlaying input cache with the default cache"),{Account:{...Rs,...e.Account},IdToken:{...Fs,...e.IdToken},AccessToken:{...Os,...e.AccessToken},RefreshToken:{...Bs,...e.RefreshToken},AppMetadata:{...Ps,...e.AppMetadata}}}}var js=n(44040); +/*! @azure/msal-node v2.8.0 2024-05-07 */ +class Ls{static fromAssertion(e){const t=new Ls;return t.jwt=e,t}static fromCertificate(e,t,n){const r=new Ls;return r.privateKey=t,r.thumbprint=e,n&&(r.publicCertificate=this.parseCertificate(n)),r}getJwt(e,t,n){if(this.privateKey&&this.thumbprint)return this.jwt&&!this.isExpired()&&t===this.issuer&&n===this.jwtAudience?this.jwt:this.createJwt(e,t,n);if(this.jwt)return this.jwt;throw Dr(ar)}createJwt(e,t,n){this.issuer=t,this.jwtAudience=n;const r=fi();this.expirationTime=r+600;const i={alg:jt,x5t:Es.base64EncodeUrl(this.thumbprint,"hex")};this.publicCertificate&&Object.assign(i,{x5c:this.publicCertificate});const o={[Lt]:this.jwtAudience,[Ut]:this.expirationTime,[qt]:this.issuer,[$t]:this.issuer,[zt]:r,[Ht]:e.createNewGuid()};return this.jwt=js.sign(o,this.privateKey,{header:i}),this.jwt}isExpired(){return this.expirationTime0)&&t.addClaims(e.claims,this.config.authOptions.clientCapabilities),this.config.systemOptions.preventCorsPreflight&&e.username&&t.addCcsUpn(e.username),t.createQueryString()}}var Zs=n(65606); +/*! @azure/msal-node v2.8.0 2024-05-07 */class Js{constructor(e){this.config=function({auth:e,broker:t,cache:n,system:r,telemetry:i}){const o={...ls,networkClient:new Ho(r?.proxyUrl,r?.customAgentOptions),loggerOptions:r?.loggerOptions||ds,disableInternalRetries:r?.disableInternalRetries||!1};return{auth:{...us,...e},broker:{...t},cache:{...cs,...n},system:{...o,...r},telemetry:{...hs,...i}}}(e),this.cryptoProvider=new Cs,this.logger=new Qt(this.config.system.loggerOptions,"@azure/msal-node",Us),this.storage=new Is(this.logger,this.config.auth.clientId,this.cryptoProvider,function(e){const t=e.cloudDiscoveryMetadata;let n;if(t)try{n=JSON.parse(t)}catch(e){throw kn(yn)}return{canonicalAuthority:e.authority?Ri(e.authority):void 0,knownAuthorities:e.knownAuthorities,cloudDiscoveryMetadata:n}}(this.config.auth)),this.tokenCache=new Ns(this.storage,this.logger,this.config.cache.cachePlugin)}async getAuthCodeUrl(e){this.logger.info("getAuthCodeUrl called",e.correlationId);const t={...e,...await this.initializeBaseRequest(e),responseMode:e.responseMode||ke.QUERY,authenticationScheme:Ve.BEARER},n=await this.buildOauthClientConfiguration(t.authority,t.correlationId,void 0,void 0,e.azureCloudOptions),r=new Po(n);return this.logger.verbose("Auth code client created",t.correlationId),r.getAuthCodeUrl(t)}async acquireTokenByCode(e,t){this.logger.info("acquireTokenByCode called"),e.state&&t&&(this.logger.info("acquireTokenByCode - validating state"),this.validateState(e.state,t.state||""),t={...t,state:""});const n={...e,...await this.initializeBaseRequest(e),authenticationScheme:Ve.BEARER},r=this.initializeServerTelemetryManager(Pt,n.correlationId);try{const i=await this.buildOauthClientConfiguration(n.authority,n.correlationId,r,void 0,e.azureCloudOptions),o=new Po(i);return this.logger.verbose("Auth code client created",n.correlationId),await o.acquireToken(n,t)}catch(e){throw e instanceof Zt&&e.setCorrelationId(n.correlationId),r.cacheFailedRequest(e),e}}async acquireTokenByRefreshToken(e){this.logger.info("acquireTokenByRefreshToken called",e.correlationId);const t={...e,...await this.initializeBaseRequest(e),authenticationScheme:Ve.BEARER},n=this.initializeServerTelemetryManager(Nt,t.correlationId);try{const r=await this.buildOauthClientConfiguration(t.authority,t.correlationId,n,void 0,e.azureCloudOptions),i=new No(r);return this.logger.verbose("Refresh token client created",t.correlationId),await i.acquireToken(t)}catch(e){throw e instanceof Zt&&e.setCorrelationId(t.correlationId),n.cacheFailedRequest(e),e}}async acquireTokenSilent(e){const t={...e,...await this.initializeBaseRequest(e),forceRefresh:e.forceRefresh||!1},n=this.initializeServerTelemetryManager(Ft,t.correlationId,t.forceRefresh);try{const r=await this.buildOauthClientConfiguration(t.authority,t.correlationId,n,void 0,e.azureCloudOptions),i=new jo(r);return this.logger.verbose("Silent flow client created",t.correlationId),await i.acquireToken(t)}catch(e){throw e instanceof Zt&&e.setCorrelationId(t.correlationId),n.cacheFailedRequest(e),e}}async acquireTokenByUsernamePassword(e){this.logger.info("acquireTokenByUsernamePassword called",e.correlationId);const t={...e,...await this.initializeBaseRequest(e)},n=this.initializeServerTelemetryManager(Ot,t.correlationId);try{const r=await this.buildOauthClientConfiguration(t.authority,t.correlationId,n,void 0,e.azureCloudOptions),i=new Ys(r);return this.logger.verbose("Username password client created",t.correlationId),await i.acquireToken(t)}catch(e){throw e instanceof Zt&&e.setCorrelationId(t.correlationId),n.cacheFailedRequest(e),e}}getTokenCache(){return this.logger.info("getTokenCache called"),this.tokenCache}validateState(e,t){if(!e)throw Vs.createStateNotFoundError();if(e!==t)throw Dr(Un)}getLogger(){return this.logger}setLogger(e){this.logger=e}async buildOauthClientConfiguration(e,t,n,r,i){this.logger.verbose("buildOauthClientConfiguration called",t);const o=i||this.config.auth.azureCloudOptions,s=await this.createAuthority(e,t,r,o);this.logger.info(`Building oauth client configuration with the following authority: ${s.tokenEndpoint}.`,t),n?.updateRegionDiscoveryMetadata(s.regionDiscoveryMetadata);return{authOptions:{clientId:this.config.auth.clientId,authority:s,clientCapabilities:this.config.auth.clientCapabilities},loggerOptions:{logLevel:this.config.system.loggerOptions.logLevel,loggerCallback:this.config.system.loggerOptions.loggerCallback,piiLoggingEnabled:this.config.system.loggerOptions.piiLoggingEnabled,correlationId:t},cacheOptions:{claimsBasedCachingEnabled:this.config.cache.claimsBasedCachingEnabled},cryptoInterface:this.cryptoProvider,networkInterface:this.config.system.networkClient,storageInterface:this.storage,serverTelemetryManager:n,clientCredentials:{clientSecret:this.clientSecret,clientAssertion:this.developerProvidedClientAssertion?await this.getClientAssertion(s):void 0},libraryInfo:{sku:Ct,version:Us,cpu:Zs.arch||ae.EMPTY_STRING,os:Zs.platform||ae.EMPTY_STRING},telemetry:this.config.telemetry,persistencePlugin:this.config.cache.cachePlugin,serializableCache:this.tokenCache}}async getClientAssertion(e){return this.clientAssertion=Ls.fromAssertion(await Bo(this.developerProvidedClientAssertion,this.config.auth.clientId,e.tokenEndpoint)),{assertion:this.clientAssertion.getJwt(this.cryptoProvider,this.config.auth.clientId,e.tokenEndpoint),assertionType:kt}}async initializeBaseRequest(e){return this.logger.verbose("initializeRequestScopes called",e.correlationId),e.authenticationScheme&&e.authenticationScheme===Ve.POP&&this.logger.verbose("Authentication Scheme 'pop' is not supported yet, setting Authentication Scheme to 'Bearer' for request",e.correlationId),e.authenticationScheme=Ve.BEARER,this.config.cache.claimsBasedCachingEnabled&&e.claims&&!Tn.isEmptyObj(e.claims)&&(e.requestedClaimsHash=await this.cryptoProvider.hashString(e.claims)),{...e,scopes:[...e&&e.scopes||[],...ye],correlationId:e&&e.correlationId||this.cryptoProvider.createNewGuid(),authority:e.authority||this.config.auth.authority}}initializeServerTelemetryManager(e,t,n){const r={clientId:this.config.auth.clientId,correlationId:t,apiId:e,forceRefresh:n||!1};return new Lo(r,this.storage)}async createAuthority(e,t,n,r){this.logger.verbose("createAuthority called",t);const i=Ii.generateAuthority(e,r),o={protocolMode:this.config.auth.protocolMode,knownAuthorities:this.config.auth.knownAuthorities,cloudDiscoveryMetadata:this.config.auth.cloudDiscoveryMetadata,authorityMetadata:this.config.auth.authorityMetadata,azureRegionConfiguration:n,skipAuthorityMetadataCache:this.config.auth.skipAuthorityMetadataCache};return yo(i,this.config.system.networkClient,this.storage,o,this.logger,t)}clearCache(){this.storage.clear()}} +/*! @azure/msal-node v2.8.0 2024-05-07 */ +class Xs{async listenForAuthCode(e,t){if(this.server)throw Vs.createLoopbackServerAlreadyExistsError();return new Promise(((n,r)=>{this.server=qo.createServer(((i,o)=>{const s=i.url;if(!s)return o.end(t||"Error occurred loading redirectUrl"),void r(Vs.createUnableToLoadRedirectUrlError());if(s===ae.FORWARD_SLASH)return void o.end(e||"Auth code was successfully acquired. You can close this window now.");const a=this.getRedirectUri(),u=Er(new URL(s,a).search)||{};u.code&&(o.writeHead(le,{location:a}),o.end()),n(u)})),this.server.listen(0)}))}getRedirectUri(){if(!this.server||!this.server.listening)throw Vs.createNoLoopbackServerExistsError();const e=this.server.address();if(!e||"string"==typeof e||!e.port)throw this.closeServer(),Vs.createInvalidLoopbackAddressTypeError();const t=e&&e.port;return`${It}${Rt}:${t}`}closeServer(){this.server&&(this.server.close(),"function"==typeof this.server.closeAllConnections&&this.server.closeAllConnections(),this.server.unref(),this.server=void 0)}} +/*! @azure/msal-node v2.8.0 2024-05-07 */ +class Qs extends vo{constructor(e){super(e)}async acquireToken(e){const t=await this.getDeviceCode(e);e.deviceCodeCallback(t);const n=fi(),r=await this.acquireTokenWithDeviceCode(e,t),i=new Oo(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin);return i.validateTokenResponse(r),i.handleServerTokenResponse(r,this.authority,n,e)}async getDeviceCode(e){const t=this.createExtraQueryParameters(e),n=Mr.appendQueryString(this.authority.deviceCodeEndpoint,t),r=this.createQueryString(e),i=this.createTokenRequestHeaders(),o={clientId:this.config.authOptions.clientId,authority:e.authority,scopes:e.scopes,claims:e.claims,authenticationScheme:e.authenticationScheme,resourceRequestMethod:e.resourceRequestMethod,resourceRequestUri:e.resourceRequestUri,shrClaims:e.shrClaims,sshKid:e.sshKid};return this.executePostRequestToDeviceCodeEndpoint(n,r,i,o)}createExtraQueryParameters(e){const t=new go;return e.extraQueryParameters&&t.addExtraQueryParameters(e.extraQueryParameters),t.createQueryString()}async executePostRequestToDeviceCodeEndpoint(e,t,n,r){const{body:{user_code:i,device_code:o,verification_uri:s,expires_in:a,interval:u,message:c}}=await this.networkManager.sendPostRequest(r,e,{body:t,headers:n});return{userCode:i,deviceCode:o,verificationUri:s,expiresIn:a,interval:u,message:c}}createQueryString(e){const t=new go;return t.addScopes(e.scopes),t.addClientId(this.config.authOptions.clientId),e.extraQueryParameters&&t.addExtraQueryParameters(e.extraQueryParameters),(e.claims||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&t.addClaims(e.claims,this.config.authOptions.clientCapabilities),t.createQueryString()}continuePolling(e,t,n){if(n)throw this.logger.error("Token request cancelled by setting DeviceCodeRequest.cancel = true"),Dr(Xn);if(t&&tt)throw this.logger.error(`User defined timeout for device code polling reached. The timeout was set for ${t}`),Dr(dr);if(fi()>e)throw t&&this.logger.verbose(`User specified timeout ignored as the device code has expired before the timeout elapsed. The user specified timeout was set for ${t}`),this.logger.error(`Device code expired. Expiration time of device code was ${e}`),Dr(Qn);return!0}async acquireTokenWithDeviceCode(e,t){const n=this.createTokenQueryParameters(e),r=Mr.appendQueryString(this.authority.tokenEndpoint,n),i=this.createTokenRequestBody(e,t),o=this.createTokenRequestHeaders(),s=e.timeout?fi()+e.timeout:void 0,a=fi()+t.expiresIn,u=1e3*t.interval;for(;this.continuePolling(a,s,e.cancel);){const t={clientId:this.config.authOptions.clientId,authority:e.authority,scopes:e.scopes,claims:e.claims,authenticationScheme:e.authenticationScheme,resourceRequestMethod:e.resourceRequestMethod,resourceRequestUri:e.resourceRequestUri,shrClaims:e.shrClaims,sshKid:e.sshKid},n=await this.executePostToTokenEndpoint(r,i,o,t,e.correlationId);if(!n.body||!n.body.error)return this.logger.verbose("Authorization completed successfully. Polling stopped."),n.body;if(n.body.error!==ae.AUTHORIZATION_PENDING)throw this.logger.info("Unexpected error in polling from the server"),c=Vt,d=n.body.error,new Zt(c,d?`${Yt[c]} ${d}`:Yt[c]);this.logger.info("Authorization pending. Continue polling."),await mi(u)}var c,d;throw this.logger.error("Polling stopped for unknown reasons."),Dr(er)}createTokenRequestBody(e,t){const n=new go;n.addScopes(e.scopes),n.addClientId(this.config.authOptions.clientId),n.addGrantType(Fe),n.addDeviceCode(t.deviceCode);const r=e.correlationId||this.config.cryptoInterface.createNewGuid();return n.addCorrelationId(r),n.addClientInfo(),n.addLibraryInfo(this.config.libraryInfo),n.addApplicationTelemetry(this.config.telemetry.application),n.addThrottling(),this.serverTelemetryManager&&n.addServerTelemetry(this.serverTelemetryManager),(!Tn.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&n.addClaims(e.claims,this.config.authOptions.clientCapabilities),n.createQueryString()}} +/*! @azure/msal-node v2.8.0 2024-05-07 */ +class ea extends Js{constructor(e){super(e),this.config.broker.nativeBrokerPlugin&&(this.config.broker.nativeBrokerPlugin.isBrokerAvailable?(this.nativeBrokerPlugin=this.config.broker.nativeBrokerPlugin,this.nativeBrokerPlugin.setLogger(this.config.system.loggerOptions)):this.logger.warning("NativeBroker implementation was provided but the broker is unavailable."))}async acquireTokenByDeviceCode(e){this.logger.info("acquireTokenByDeviceCode called",e.correlationId);const t=Object.assign(e,await this.initializeBaseRequest(e)),n=this.initializeServerTelemetryManager(Bt,t.correlationId);try{const r=await this.buildOauthClientConfiguration(t.authority,t.correlationId,n,void 0,e.azureCloudOptions),i=new Qs(r);return this.logger.verbose("Device code client created",t.correlationId),await i.acquireToken(t)}catch(e){throw e instanceof Zt&&e.setCorrelationId(t.correlationId),n.cacheFailedRequest(e),e}}async acquireTokenInteractive(e){const t=e.correlationId||this.cryptoProvider.createNewGuid();this.logger.trace("acquireTokenInteractive called",t);const{openBrowser:n,successTemplate:r,errorTemplate:i,windowHandle:o,loopbackClient:s,...a}=e;if(this.nativeBrokerPlugin){const n={...a,clientId:this.config.auth.clientId,scopes:e.scopes||ye,redirectUri:`${It}${Rt}`,authority:e.authority||this.config.auth.authority,correlationId:t,extraParameters:{...a.extraQueryParameters,...a.tokenQueryParameters},accountId:a.account?.nativeAccountId};return this.nativeBrokerPlugin.acquireTokenInteractive(n,o)}const{verifier:u,challenge:c}=await this.cryptoProvider.generatePkceCodes(),d=s||new Xs;let l={},h=null;try{const o=d.listenForAuthCode(r,i).then((e=>{l=e})).catch((e=>{h=e})),s=await this.waitForRedirectUri(d),f={...a,correlationId:t,scopes:e.scopes||ye,redirectUri:s,responseMode:ke.QUERY,codeChallenge:c,codeChallengeMethod:Ce.S256},p=await this.getAuthCodeUrl(f);if(await n(p),await o,h)throw h;if(l.error)throw new Jt(l.error,l.error_description,l.suberror);if(!l.code)throw Vs.createNoAuthCodeInResponseError();const m=l.client_info,g={code:l.code,codeVerifier:u,clientInfo:m||ae.EMPTY_STRING,...f};return await this.acquireTokenByCode(g)}finally{d.closeServer()}}async acquireTokenSilent(e){const t=e.correlationId||this.cryptoProvider.createNewGuid();if(this.logger.trace("acquireTokenSilent called",t),this.nativeBrokerPlugin){const n={...e,clientId:this.config.auth.clientId,scopes:e.scopes||ye,redirectUri:`${It}${Rt}`,authority:e.authority||this.config.auth.authority,correlationId:t,extraParameters:e.tokenQueryParameters,accountId:e.account.nativeAccountId,forceRefresh:e.forceRefresh||!1};return this.nativeBrokerPlugin.acquireTokenSilent(n)}return super.acquireTokenSilent(e)}async signOut(e){if(this.nativeBrokerPlugin&&e.account.nativeAccountId){const t={clientId:this.config.auth.clientId,accountId:e.account.nativeAccountId,correlationId:e.correlationId||this.cryptoProvider.createNewGuid()};await this.nativeBrokerPlugin.signOut(t)}await this.getTokenCache().removeAccount(e.account)}async getAllAccounts(){if(this.nativeBrokerPlugin){const e=this.cryptoProvider.createNewGuid();return this.nativeBrokerPlugin.getAllAccounts(this.config.auth.clientId,e)}return this.getTokenCache().getAllAccounts()}async waitForRedirectUri(e){return new Promise(((t,n)=>{let r=0;const i=setInterval((()=>{if(Wt/Kt7200&&(t=n/2));return{status:e.status,access_token:e.body.access_token,expires_in:n,scope:e.body.resource,token_type:e.body.token_type,refresh_in:t,error:e.body.message,correlation_id:e.body.correlationId}}async acquireTokenWithManagedIdentity(e,t,n,r){const i=this.createRequest(e.resource,t),o=i.headers;o[be]=ae.URL_FORM_CONTENT_TYPE;const s={headers:o};Object.keys(i.bodyParameters).length&&(s.body=i.computeParametersBodyString());const a=fi();let u;try{u=i.httpMethod===Et?await this.networkClient.sendPostRequestAsync(i.computeUri(),s):await this.networkClient.sendGetRequestAsync(i.computeUri(),s)}catch(e){throw e instanceof Zt?e:Dr(Pn)}const c=new Oo(t.id,this.nodeStorage,this.cryptoProvider,this.logger,null,null),d=await this.getServerTokenResponseAsync(u,this.networkClient,i,s);return c.validateTokenResponse(d,r),c.handleServerTokenResponse(d,n,a,e)}getManagedIdentityUserAssignedIdQueryParameterKey(e){switch(e){case wt:return this.logger.info("[Managed Identity] Adding user assigned client id to the request."),ta;case _t:return this.logger.info("[Managed Identity] Adding user assigned resource id to the request."),ra;case xt:return this.logger.info("[Managed Identity] Adding user assigned object id to the request."),na;default:throw as(Vo)}}}ia.getValidatedEnvVariableUrlString=(e,t,n,r)=>{try{return new Mr(t).urlString}catch(t){throw r.info(`[Managed Identity] ${n} managed identity is unavailable because the '${e}' environment variable is malformed.`),as(is[e])}};n(65606); +/*! @azure/msal-node v2.8.0 2024-05-07 */n(23313),n(65606);n(65606); +/*! @azure/msal-node v2.8.0 2024-05-07 */n(65606); +/*! @azure/msal-node v2.8.0 2024-05-07 */n(65606); +/*! @azure/msal-node v2.8.0 2024-05-07 */var oa,sa;const aa=["User.Read","Files.ReadWrite.AppFolder","offline_access"],ua=`obsidian://${p}`,ca={accessToken:"",clientID:null!==(oa="3729fc1c-0af2-4bec-9376-d7ac4f0ff806")?oa:"",authority:null!==(sa="https://login.microsoftonline.com/common")?sa:"",refreshToken:"",accessTokenExpiresInSeconds:0,accessTokenExpiresAtTime:0,deltaLink:"",username:"",credentialsShouldBeDeletedAtTime:0};const da=(e,t)=>{const n=`/drive/special/approot:/${t}`;let r=e;return"/"===e||""===e?n:(r.endsWith("/")&&(r=r.slice(0,r.length-1)),r.startsWith("/")?(console.warn(`why the path ${r} starts with '/'? but we just go on.`),r=`${n}${r}`):r=`${n}/${r}`,r)},la=e=>{var t,n;return`parentPath="${null!==(n=null===(t=e.parentReference)||void 0===t?void 0:t.path)&&void 0!==n?n:"(no parentReference or path)"}", selfName="${e.name}"`},ha=(e,t)=>{let n="";const r="/drive/items/";if(void 0===e.parentReference||null===e.parentReference||void 0===e.parentReference.path||null===e.parentReference.path)throw Error("x.parentReference.path is undefinded or null");const i=`${e.parentReference.path}/${e.name}`,o=i.match(/^\/drive\/root:\/[^\/]+\/remotely-save\//g),s=i.match(/^\/drive\/root:\/[^\/]+\/Graph\//g),a=i.match(/^\/Livefolders\/[^\/]+\/remotely-save\//g),u=i.match(/^\/drive\/root:\/[^\/]+\/app\/remotely-save\//g);if(null!==o&&i.startsWith(`${o[0]}${t}`)){const e=`${o[0]}${t}`;n=i.substring(e.length+1)}else if(null!==s&&i.startsWith(`${s[0]}${t}`)){const e=`${s[0]}${t}`;n=i.substring(e.length+1)}else if(null!==a&&i.startsWith(`${a[0]}${t}`)){const e=`${a[0]}${t}`;n=i.substring(e.length+1)}else if(null!==u&&i.startsWith(`${u[0]}${t}`)){const e=`${u[0]}${t}`;n=i.substring(e.length+1)}else{if(!e.parentReference.path.startsWith(r))throw Error(`we meet file/folder and do not know how to deal with it:\n${la(e)}`);{if(void 0===e.name||null===e.name)throw Error(`OneDrive item no name variable while matching ${r}`);const i=decodeURIComponent(e.parentReference.path);if(n=i.substring(i.indexOf(":")+1),n.startsWith(`/${t}/`))n=n.substring(`/${t}/`.length),n=`${n}/${e.name}`;else{if(n!==`/${t}`)throw Error(`we meet file/folder and do not know how to deal with it:\n${la(e)}`);n=e.name}}}const c="folder"in e;c&&(n=`${n}/`);return{key:n,keyRaw:n,mtimeSvr:Date.parse(null==e?void 0:e.fileSystemInfo.lastModifiedDateTime),mtimeCli:Date.parse(null==e?void 0:e.fileSystemInfo.lastModifiedDateTime),size:c?0:e.size,sizeRaw:c?0:e.size}};class fa{constructor(e,t){this.onedriveConfig=e,this.saveUpdatedConfigFunc=t}getAccessToken(){return e(this,void 0,void 0,(function*(){if(""===this.onedriveConfig.accessToken||""===this.onedriveConfig.refreshToken)throw Error("The user has not manually auth yet.");const t=Date.now();if(this.onedriveConfig.accessTokenExpiresAtTime>t)return this.onedriveConfig.accessToken;{const o=yield(n=this.onedriveConfig.clientID,r=this.onedriveConfig.authority,i=this.onedriveConfig.refreshToken,e(void 0,void 0,void 0,(function*(){try{const e=yield(0,l.request)({url:`${r}/oauth2/v2.0/token`,method:"POST",contentType:"application/x-www-form-urlencoded",body:new URLSearchParams({tenant:"consumers",client_id:n,scope:aa.join(" "),refresh_token:i,grant_type:"refresh_token"}).toString()}),t=JSON.parse(e);return t.error,t}catch(e){throw console.error(e),e}})));if(void 0!==o.error){const e=o;throw Error(`Error while refreshing accessToken: ${e.error}, ${e.error_codes}: ${e.error_description}`)}const s=o;return this.onedriveConfig.accessToken=s.access_token,this.onedriveConfig.refreshToken=s.refresh_token,this.onedriveConfig.accessTokenExpiresInSeconds=s.expires_in,this.onedriveConfig.accessTokenExpiresAtTime=t+1e3*s.expires_in-12e4,yield this.saveUpdatedConfigFunc(),console.info("Onedrive accessToken updated"),this.onedriveConfig.accessToken}var n,r,i}))}}const pa=e=>{const t=i()(e);return t.accessToken="x",t.accessTokenExpiresInSeconds=1,t.accessTokenExpiresAtTime=1,t};class ma extends Q{constructor(e,t,n){super(),this.kind="onedrive",this.onedriveConfig=e,this.remoteBaseDir=this.onedriveConfig.remoteBaseDir||t||"",this.vaultFolderExists=!1,this.saveUpdatedConfigFunc=n,this.authGetter=new fa(e,n),this.foldersCreatedBefore=new Set}_init(){return e(this,void 0,void 0,(function*(){if(""===this.onedriveConfig.accessToken||""===this.onedriveConfig.refreshToken)throw Error("The user has not manually auth yet.");if(this.vaultFolderExists);else{const e=yield this._getJson("/drive/special/approot/children");this.vaultFolderExists=e.value.filter((e=>e.name===this.remoteBaseDir)).length>0,this.vaultFolderExists||(console.info(`remote does not have folder /${this.remoteBaseDir}`),yield this._postJson("/drive/special/approot/children",{name:`${this.remoteBaseDir}`,folder:{},"@microsoft.graph.conflictBehavior":"replace"}),console.info(`remote folder /${this.remoteBaseDir} created`),this.vaultFolderExists=!0)}}))}_buildUrl(e){let t="";if(e.startsWith("http://")||e.startsWith("https://"))t=e;else{t=`https://graph.microsoft.com/v1.0${encodeURI(e)}`}return t=t.replace(/#/g,"%23"),t}_getJson(t){return e(this,void 0,void 0,(function*(){const e=this._buildUrl(t);return console.debug(`getJson, theUrl=${e}`),JSON.parse(yield(0,l.request)({url:e,method:"GET",contentType:"application/json",headers:{Authorization:`Bearer ${yield this.authGetter.getAccessToken()}`,"Cache-Control":"no-cache"}}))}))}_postJson(t,n){return e(this,void 0,void 0,(function*(){const e=this._buildUrl(t);return console.debug(`postJson, theUrl=${e}`),JSON.parse(yield(0,l.request)({url:e,method:"POST",contentType:"application/json",body:JSON.stringify(n),headers:{Authorization:`Bearer ${yield this.authGetter.getAccessToken()}`}}))}))}_patchJson(t,n){return e(this,void 0,void 0,(function*(){const e=this._buildUrl(t);return console.debug(`patchJson, theUrl=${e}`),JSON.parse(yield(0,l.request)({url:e,method:"PATCH",contentType:"application/json",body:JSON.stringify(n),headers:{Authorization:`Bearer ${yield this.authGetter.getAccessToken()}`}}))}))}_deleteJson(t){return e(this,void 0,void 0,(function*(){const e=this._buildUrl(t);console.debug(`deleteJson, theUrl=${e}`),b?yield(0,l.requestUrl)({url:e,method:"DELETE",headers:{Authorization:`Bearer ${yield this.authGetter.getAccessToken()}`}}):yield fetch(e,{method:"DELETE",headers:{Authorization:`Bearer ${yield this.authGetter.getAccessToken()}`}})}))}_putArrayBuffer(t,n){return e(this,void 0,void 0,(function*(){const e=this._buildUrl(t);console.debug(`putArrayBuffer, theUrl=${e}`);{const t=yield fetch(e,{method:"PUT",body:n,headers:{"Content-Type":h,Authorization:`Bearer ${yield this.authGetter.getAccessToken()}`}});return yield t.json()}}))}_putUint8ArrayByRange(t,n,r,i,o){return e(this,void 0,void 0,(function*(){const e=this._buildUrl(t);console.debug(`putUint8ArrayByRange, theUrl=${e}, range=${r}-${i-1}, len=${i-r}, size=${o}`);{const t=yield fetch(e,{method:"PUT",body:n.subarray(r,i),headers:{"Content-Length":""+(i-r),"Content-Range":`bytes ${r}-${i-1}/${o}`,"Content-Type":h}});return yield t.json()}}))}walk(){return e(this,void 0,void 0,(function*(){yield this._init();const e="@odata.nextLink",t="@odata.deltaLink";let n=yield this._getJson(`/drive/special/approot:/${this.remoteBaseDir}:/delta`);const r=n.value;for(;e in n;)n=yield this._getJson(n[e]),r.push(...i()(n.value));t in n&&(this.onedriveConfig.deltaLink=n[t],yield this.saveUpdatedConfigFunc());const o=r.map((e=>ha(e,this.remoteBaseDir))).filter((e=>"/"!==e.key));return o}))}stat(t){return e(this,void 0,void 0,(function*(){return yield this._init(),yield this._statFromRoot(da(t,this.remoteBaseDir))}))}_statFromRoot(t){return e(this,void 0,void 0,(function*(){const e=yield this._getJson(`${t}?$select=cTag,eTag,fileSystemInfo,folder,file,name,parentReference,size`);return ha(e,this.remoteBaseDir)}))}mkdir(t,n,r){return e(this,void 0,void 0,(function*(){if(!t.endsWith("/"))throw Error(`you should not call mkdir on ${t}`);yield this._init();const e=da(t,this.remoteBaseDir);return console.debug(`mkdir uploadFolder=${e}`),yield this._mkdirFromRoot(e,n,r)}))}_mkdirFromRoot(t,n,r){return e(this,void 0,void 0,(function*(){if(this.foldersCreatedBefore.has(t));else{const e={folder:{},"@microsoft.graph.conflictBehavior":"replace"},i={};if(void 0!==n&&0!==n){const e=new Date(n).toISOString();i.lastModifiedDateTime=e}if(void 0!==r&&0!==r){const e=new Date(r).toISOString();i.createdDateTime=e}Object.keys(i).length>0&&(e.fileSystemInfo=i),yield this._patchJson(t,e)}return yield this._statFromRoot(t)}))}writeFile(t,n,r,i){return e(this,void 0,void 0,(function*(){if(t.endsWith("/"))throw Error(`you should not call writeFile on ${t}`);yield this._init();const e=da(t,this.remoteBaseDir);return console.debug(`uploadFile=${e}`),yield this._writeFileFromRoot(e,n,r,i,t)}))}_writeFileFromRoot(t,n,r,i,o){return e(this,void 0,void 0,(function*(){if(0===n.byteLength)throw Error(`${o}: Empty file is not allowed in OneDrive, and please write something in it.`);const e=new Date(i).toISOString(),s=new Date(r).toISOString(),a=6553600;if(n.byteLength<4e6)yield this._putArrayBuffer(`${t}:/content?${new URLSearchParams({"@microsoft.graph.conflictBehavior":"replace"})}`,n),0!==r&&0!==i&&(yield this._patchJson(t,{fileSystemInfo:{lastModifiedDateTime:s,createdDateTime:e}}));else{let o={item:{"@microsoft.graph.conflictBehavior":"replace"}};0!==r&&0!==i&&(o={item:{"@microsoft.graph.conflictBehavior":"replace",fileSystemInfo:{lastModifiedDateTime:s,createdDateTime:e}}});const u=yield this._postJson(`${t}:/createUploadSession`,o),c=u.uploadUrl;console.debug("uploadSession = "),console.debug(u);const d=new Uint8Array(n);let l=0;for(;l"!==(yield this.getUserDisplayName())}catch(e){return console.debug(e),null==t||t(e),!1}}))}getUserDisplayName(){return e(this,void 0,void 0,(function*(){yield this._init();return(yield this._getJson("/me?$select=displayName")).displayName||""}))}revokeAuth(){return e(this,void 0,void 0,(function*(){throw new Error("Method not implemented.")}))}getRevokeAddr(){return e(this,void 0,void 0,(function*(){return"https://account.live.com/consent/Manage"}))}allowEmptyFile(){return!1}}var ga=n(48287),ya=n(88310);const va=e=>{let t=e.httpHandler;return{setHttpHandler(e){t=e},httpHandler:()=>t,updateHttpClientConfig(e,n){t.updateHttpClientConfig(e,n)},httpHandlerConfigs:()=>t.httpHandlerConfigs()}};var ba,wa,_a,xa;!function(e){e.HEADER="header",e.QUERY="query"}(ba||(ba={})),function(e){e.HEADER="header",e.QUERY="query"}(wa||(wa={})),function(e){e.HTTP="http",e.HTTPS="https"}(_a||(_a={})),function(e){e.MD5="md5",e.CRC32="crc32",e.CRC32C="crc32c",e.SHA1="sha1",e.SHA256="sha256"}(xa||(xa={}));var Da;!function(e){e[e.HEADER=0]="HEADER",e[e.TRAILER=1]="TRAILER"}(Da||(Da={}));const Ea="__smithy_context";var Ma,Aa;!function(e){e.PROFILE="profile",e.SSO_SESSION="sso-session",e.SERVICES="services"}(Ma||(Ma={})),function(e){e.HTTP_0_9="http/0.9",e.HTTP_1_0="http/1.0",e.TDS_8_0="tds/8.0"}(Aa||(Aa={}));class Sa{constructor(e){this.method=e.method||"GET",this.hostname=e.hostname||"localhost",this.port=e.port,this.query=e.query||{},this.headers=e.headers||{},this.body=e.body,this.protocol=e.protocol?":"!==e.protocol.slice(-1)?`${e.protocol}:`:e.protocol:"https:",this.path=e.path?"/"!==e.path.charAt(0)?`/${e.path}`:e.path:"/",this.username=e.username,this.password=e.password,this.fragment=e.fragment}static isInstance(e){if(!e)return!1;const t=e;return"method"in t&&"protocol"in t&&"hostname"in t&&"path"in t&&"object"==typeof t.query&&"object"==typeof t.headers}clone(){const e=new Sa({...this,headers:{...this.headers}});var t;return e.query&&(e.query=(t=e.query,Object.keys(t).reduce(((e,n)=>{const r=t[n];return{...e,[n]:Array.isArray(r)?[...r]:r}}),{}))),e}}class Ca{constructor(e){this.statusCode=e.statusCode,this.reason=e.reason,this.headers=e.headers||{},this.body=e.body}static isInstance(e){if(!e)return!1;const t=e;return"number"==typeof t.statusCode&&"object"==typeof t.headers}}const ka={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0},Ta=e=>({applyToStack:t=>{t.add(function(e){return t=>async n=>{const{request:r}=n;return Sa.isInstance(r)&&r.body&&"node"===e.runtime&&(r.headers={...r.headers,Expect:"100-continue"}),t({...n,request:r})}}(e),ka)}});const Ia={name:"hostHeaderMiddleware",step:"build",priority:"low",tags:["HOST"],override:!0},Ra=e=>({applyToStack:t=>{t.add((e=>t=>async n=>{if(!Sa.isInstance(n.request))return t(n);const{request:r}=n,{handlerProtocol:i=""}=e.requestHandler.metadata||{};if(i.indexOf("h2")>=0&&!r.headers[":authority"])delete r.headers.host,r.headers[":authority"]=r.hostname+(r.port?":"+r.port:"");else if(!r.headers.host){let e=r.hostname;null!=r.port&&(e+=`:${r.port}`),r.headers.host=e}return t(n)})(e),Ia)}}),Fa={name:"loggerMiddleware",tags:["LOGGER"],step:"initialize",override:!0};var Oa=n(65606);const Ba="X-Amzn-Trace-Id",Pa={step:"build",tags:["RECURSION_DETECTION"],name:"recursionDetectionMiddleware",override:!0,priority:"low"},Na=e=>({applyToStack:t=>{t.add((e=>t=>async n=>{const{request:r}=n;if(!Sa.isInstance(r)||"node"!==e.runtime||r.headers.hasOwnProperty(Ba))return t(n);const i=Oa.env.AWS_LAMBDA_FUNCTION_NAME,o=Oa.env._X_AMZN_TRACE_ID,s=e=>"string"==typeof e&&e.length>0;return s(i)&&s(o)&&(r.headers[Ba]=o),t({...n,request:r})})(e),Pa)}});class ja{trace(){}debug(){}info(){}warn(){}error(){}}const La=(e,t)=>{const n=[];if(e&&n.push(e),t)for(const e of t)n.push(e);return n},Ua=(e,t)=>`${e||"anonymous"}${t&&t.length>0?` (a.k.a. ${t.join(",")})`:""}`,qa=()=>{let e=[],t=[],n=!1;const r=new Set,i=n=>(e.forEach((e=>{n.add(e.middleware,{...e})})),t.forEach((e=>{n.addRelativeTo(e.middleware,{...e})})),n.identifyOnResolve?.(a.identifyOnResolve()),n),o=e=>{const t=[];return e.before.forEach((e=>{0===e.before.length&&0===e.after.length?t.push(e):t.push(...o(e))})),t.push(e),e.after.reverse().forEach((e=>{0===e.before.length&&0===e.after.length?t.push(e):t.push(...o(e))})),t},s=(n=!1)=>{const r=[],i=[],s={};e.forEach((e=>{const t={...e,before:[],after:[]};for(const e of La(t.name,t.aliases))s[e]=t;r.push(t)})),t.forEach((e=>{const t={...e,before:[],after:[]};for(const e of La(t.name,t.aliases))s[e]=t;i.push(t)})),i.forEach((e=>{if(e.toMiddleware){const t=s[e.toMiddleware];if(void 0===t){if(n)return;throw new Error(`${e.toMiddleware} is not found when adding ${Ua(e.name,e.aliases)} middleware ${e.relation} ${e.toMiddleware}`)}"after"===e.relation&&t.after.push(e),"before"===e.relation&&t.before.push(e)}}));const a=(u=r,u.sort(((e,t)=>$a[t.step]-$a[e.step]||za[t.priority||"normal"]-za[e.priority||"normal"]))).map(o).reduce(((e,t)=>(e.push(...t),e)),[]);var u;return a},a={add:(t,n={})=>{const{name:i,override:o,aliases:s}=n,a={step:"initialize",priority:"normal",middleware:t,...n},u=La(i,s);if(u.length>0){if(u.some((e=>r.has(e)))){if(!o)throw new Error(`Duplicate middleware name '${Ua(i,s)}'`);for(const t of u){const n=e.findIndex((e=>e.name===t||e.aliases?.some((e=>e===t))));if(-1===n)continue;const r=e[n];if(r.step!==a.step||a.priority!==r.priority)throw new Error(`"${Ua(r.name,r.aliases)}" middleware with ${r.priority} priority in ${r.step} step cannot be overridden by "${Ua(i,s)}" middleware with ${a.priority} priority in ${a.step} step.`);e.splice(n,1)}}for(const e of u)r.add(e)}e.push(a)},addRelativeTo:(e,n)=>{const{name:i,override:o,aliases:s}=n,a={middleware:e,...n},u=La(i,s);if(u.length>0){if(u.some((e=>r.has(e)))){if(!o)throw new Error(`Duplicate middleware name '${Ua(i,s)}'`);for(const e of u){const n=t.findIndex((t=>t.name===e||t.aliases?.some((t=>t===e))));if(-1===n)continue;const r=t[n];if(r.toMiddleware!==a.toMiddleware||r.relation!==a.relation)throw new Error(`"${Ua(r.name,r.aliases)}" middleware ${r.relation} "${r.toMiddleware}" middleware cannot be overridden by "${Ua(i,s)}" middleware ${a.relation} "${a.toMiddleware}" middleware.`);t.splice(n,1)}}for(const e of u)r.add(e)}t.push(a)},clone:()=>i(qa()),use:e=>{e.applyToStack(a)},remove:n=>"string"==typeof n?(n=>{let i=!1;const o=e=>{const t=La(e.name,e.aliases);if(t.includes(n)){i=!0;for(const e of t)r.delete(e);return!1}return!0};return e=e.filter(o),t=t.filter(o),i})(n):(n=>{let i=!1;const o=e=>{if(e.middleware===n){i=!0;for(const t of La(e.name,e.aliases))r.delete(t);return!1}return!0};return e=e.filter(o),t=t.filter(o),i})(n),removeByTag:n=>{let i=!1;const o=e=>{const{tags:t,name:o,aliases:s}=e;if(t&&t.includes(n)){const e=La(o,s);for(const t of e)r.delete(t);return i=!0,!1}return!0};return e=e.filter(o),t=t.filter(o),i},concat:e=>{const t=i(qa());return t.use(e),t.identifyOnResolve(n||t.identifyOnResolve()||(e.identifyOnResolve?.()??!1)),t},applyToStack:i,identify:()=>s(!0).map((e=>{const t=e.step??e.relation+" "+e.toMiddleware;return Ua(e.name,e.aliases)+" - "+t})),identifyOnResolve:e=>("boolean"==typeof e&&(n=e),n),resolve:(e,t)=>{for(const n of s().map((e=>e.middleware)).reverse())e=n(e,t);return n&&console.log(a.identify()),e}};return a},$a={initialize:5,serialize:4,build:3,finalizeRequest:2,deserialize:1},za={high:3,normal:2,low:1};class Ha{constructor(e){this.middlewareStack=qa(),this.config=e}send(e,t,n){const r="function"!=typeof t?t:void 0,i="function"==typeof t?t:n,o=e.resolveMiddleware(this.middlewareStack,this.config,r);if(!i)return o(e).then((e=>e.output));o(e).then((e=>i(null,e.output)),(e=>i(e))).catch((()=>{}))}destroy(){this.config.requestHandler.destroy&&this.config.requestHandler.destroy()}}const Ka={},Wa=new Array(64);for(let e=0,t="A".charCodeAt(0),n="Z".charCodeAt(0);e+t<=n;e++){const n=String.fromCharCode(e+t);Ka[n]=e,Wa[e]=n}for(let e=0,t="a".charCodeAt(0),n="z".charCodeAt(0);e+t<=n;e++){const n=String.fromCharCode(e+t),r=e+26;Ka[n]=r,Wa[r]=n}for(let e=0;e<10;e++){Ka[e.toString(10)]=e+52;const t=e.toString(10),n=e+52;Ka[t]=n,Wa[n]=t}Ka["+"]=62,Wa[62]="+",Ka["/"]=63,Wa[63]="/";const Ga=6,Va=8,Ya=63,Za=e=>{let t=e.length/4*3;"=="===e.slice(-2)?t-=2:"="===e.slice(-1)&&t--;const n=new ArrayBuffer(t),r=new DataView(n);for(let t=0;t>=Ga;const o=t/4*3;n>>=i%Va;const s=Math.floor(i/Va);for(let e=0;e>t)}}return new Uint8Array(n)},Ja=e=>(new TextEncoder).encode(e);function Xa(e){let t;t="string"==typeof e?Ja(e):e;const n="object"==typeof t&&"number"==typeof t.length,r="object"==typeof t&&"number"==typeof t.byteOffset&&"number"==typeof t.byteLength;if(!n&&!r)throw new Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.");let i="";for(let e=0;e>t]}i+="==".slice(0,4-o)}return i}const Qa=e=>{if("string"==typeof e)return e;if("object"!=typeof e||"number"!=typeof e.byteOffset||"number"!=typeof e.byteLength)throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.");return new TextDecoder("utf-8").decode(e)};class eu extends Uint8Array{static fromString(e,t="utf-8"){if("string"==typeof e)return function(e,t){return"base64"===t?eu.mutate(Za(e)):eu.mutate(Ja(e))}(e,t);throw new Error(`Unsupported conversion from ${typeof e} to Uint8ArrayBlobAdapter.`)}static mutate(e){return Object.setPrototypeOf(e,eu.prototype),e}transformToString(e="utf-8"){return function(e,t="utf-8"){return"base64"===t?Xa(e):Qa(e)}(this,e)}}const tu=(e,t)=>{const{base64Encoder:n,bodyLengthChecker:r,checksumAlgorithmFn:i,checksumLocationName:o,streamHasher:s}=t,a=void 0!==n&&void 0!==r&&void 0!==i&&void 0!==o&&void 0!==s,u=a?s(i,e):void 0,c=e.getReader();return new ReadableStream({async pull(e){const{value:t,done:i}=await c.read();if(i){if(e.enqueue("0\r\n"),a){const t=n(await u);e.enqueue(`${o}:${t}\r\n`),e.enqueue("\r\n")}e.close()}else e.enqueue(`${(r(t)||0).toString(16)}\r\n${t}\r\n`)}})},nu=e=>encodeURIComponent(e).replace(/[!'()*]/g,ru),ru=e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`;function iu(e){const t=[];for(let n of Object.keys(e).sort()){const r=e[n];if(n=nu(n),Array.isArray(r))for(let e=0,i=r.length;e{e&&setTimeout((()=>{const t=new Error(`Request did not complete within ${e} ms`);t.name="TimeoutError",n(t)}),e)}))}const su=Boolean("undefined"!=typeof Request&&"keepalive"in new Request("https://[::1]"));class au{static create(e){return"function"==typeof e?.handle?e:new au(e)}constructor(e){"function"==typeof e?this.configProvider=e().then((e=>e||{})):(this.config=e??{},this.configProvider=Promise.resolve(this.config))}destroy(){}async handle(e,{abortSignal:t}={}){this.config||(this.config=await this.configProvider);const n=this.config.requestTimeout,r=!0===this.config.keepAlive;if(t?.aborted){const e=new Error("Request aborted");return e.name="AbortError",Promise.reject(e)}let i=e.path;const o=iu(e.query||{});o&&(i+=`?${o}`),e.fragment&&(i+=`#${e.fragment}`);let s="";if(null!=e.username||null!=e.password){s=`${e.username??""}:${e.password??""}@`}const{port:a,method:u}=e,c=`${e.protocol}//${s}${e.hostname}${a?`:${a}`:""}${i}`,d={body:"GET"===u||"HEAD"===u?void 0:e.body,headers:new Headers(e.headers),method:u};"undefined"!=typeof AbortController&&(d.signal=t),su&&(d.keepalive=r);const l=new Request(c,d),h=[fetch(l).then((e=>{const t=e.headers,n={};for(const e of t.entries())n[e[0]]=e[1];return null!=e.body?{response:new Ca({headers:n,reason:e.statusText,statusCode:e.status,body:e.body})}:e.blob().then((t=>({response:new Ca({headers:n,reason:e.statusText,statusCode:e.status,body:t})})))})),ou(n)];return t&&h.push(new Promise(((e,n)=>{t.onabort=()=>{const e=new Error("Request aborted");e.name="AbortError",n(e)}}))),Promise.race(h)}updateHttpClientConfig(e,t){this.config=void 0,this.configProvider=this.configProvider.then((n=>(n[e]=t,n)))}httpHandlerConfigs(){return this.config??{}}}const uu=e=>"function"==typeof Blob&&e instanceof Blob?async function(e){const t=await function(e){return new Promise(((t,n)=>{const r=new FileReader;r.onloadend=()=>{if(2!==r.readyState)return n(new Error("Reader aborted too early"));const e=r.result??"",i=e.indexOf(","),o=i>-1?i+1:e.length;t(e.substring(o))},r.onabort=()=>n(new Error("Read aborted")),r.onerror=()=>n(r.error),r.readAsDataURL(e)}))}(e),n=Za(t);return new Uint8Array(n)}(e):async function(e){let t=new Uint8Array(0);const n=e.getReader();let r=!1;for(;!r;){const{done:e,value:i}=await n.read();if(i){const e=t;t=new Uint8Array(e.length+i.length),t.set(e),t.set(i,e.length)}r=e}return t}(e);const cu={},du={};for(let e=0;e<256;e++){let t=e.toString(16).toLowerCase();1===t.length&&(t=`0${t}`),cu[e]=t,du[t]=e}function lu(e){if(e.length%2!=0)throw new Error("Hex encoded strings must have an even number length");const t=new Uint8Array(e.length/2);for(let n=0;n{if(!mu(e)&&!gu(e)){throw new Error(`Unexpected stream implementation, expect Blob or ReadableStream, got ${e?.__proto__?.constructor?.name||e}`)}let t=!1;const n=async()=>{if(t)throw new Error(fu);return t=!0,await uu(e)};return Object.assign(e,{transformToByteArray:n,transformToString:async e=>{const t=await n();if("base64"===e)return Xa(t);if("hex"===e)return hu(t);if(void 0===e||"utf8"===e||"utf-8"===e)return Qa(t);if("function"==typeof TextDecoder)return new TextDecoder(e).decode(t);throw new Error("TextDecoder is not available, please make sure polyfill is provided.")},transformToWebStream:()=>{if(t)throw new Error(fu);if(t=!0,mu(e))return(e=>{if("function"!=typeof e.stream)throw new Error("Cannot transform payload Blob to web stream. Please make sure the Blob.stream() is polyfilled.\nIf you are using React Native, this API is not yet supported, see: https://react-native.canny.io/feature-requests/p/fetch-streaming-body");return e.stream()})(e);if(gu(e))return e;throw new Error(`Cannot transform payload to web stream, got ${e}`)}})},mu=e=>"function"==typeof Blob&&e instanceof Blob,gu=e=>"function"==typeof ReadableStream&&e instanceof ReadableStream,yu=async(e=new Uint8Array,t)=>{if(e instanceof Uint8Array)return eu.mutate(e);if(!e)return eu.mutate(new Uint8Array);const n=t.streamCollector(e);return eu.mutate(await n)};class vu{constructor(){this.middlewareStack=qa()}static classBuilder(){return new bu}resolveMiddlewareWithContext(e,t,n,{middlewareFn:r,clientName:i,commandName:o,inputFilterSensitiveLog:s,outputFilterSensitiveLog:a,smithyContext:u,additionalContext:c,CommandCtor:d}){for(const i of r.bind(this)(d,e,t,n))this.middlewareStack.use(i);const l=e.concat(this.middlewareStack),{logger:h}=t,f={logger:h,clientName:i,commandName:o,inputFilterSensitiveLog:s,outputFilterSensitiveLog:a,[Ea]:{...u},...c},{requestHandler:p}=t;return l.resolve((e=>p.handle(e.request,n||{})),f)}}class bu{constructor(){this._init=()=>{},this._ep={},this._middlewareFn=()=>[],this._commandName="",this._clientName="",this._additionalContext={},this._smithyContext={},this._inputFilterSensitiveLog=e=>e,this._outputFilterSensitiveLog=e=>e,this._serializer=null,this._deserializer=null}init(e){this._init=e}ep(e){return this._ep=e,this}m(e){return this._middlewareFn=e,this}s(e,t,n={}){return this._smithyContext={service:e,operation:t,...n},this}c(e={}){return this._additionalContext=e,this}n(e,t){return this._clientName=e,this._commandName=t,this}f(e=(e=>e),t=(e=>e)){return this._inputFilterSensitiveLog=e,this._outputFilterSensitiveLog=t,this}ser(e){return this._serializer=e,this}de(e){return this._deserializer=e,this}build(){const e=this;let t;return t=class extends vu{static getEndpointParameterInstructions(){return e._ep}constructor(...[t]){super(),this.serialize=e._serializer,this.deserialize=e._deserializer,this.input=t??{},e._init(this)}resolveMiddleware(n,r,i){return this.resolveMiddlewareWithContext(n,r,i,{CommandCtor:t,middlewareFn:e._middlewareFn,clientName:e._clientName,commandName:e._commandName,inputFilterSensitiveLog:e._inputFilterSensitiveLog,outputFilterSensitiveLog:e._outputFilterSensitiveLog,smithyContext:e._smithyContext,additionalContext:e._additionalContext})}}}}const wu="***SensitiveInformation***",_u=e=>{switch(e){case"true":return!0;case"false":return!1;default:throw new Error(`Unable to parse boolean value "${e}"`)}},xu=e=>{if(null!=e){if("string"==typeof e){const t=parseFloat(e);if(!Number.isNaN(t))return String(t)!==String(e)&&Uu.warn(Lu(`Expected number but observed string: ${e}`)),t}if("number"==typeof e)return e;throw new TypeError(`Expected number, got ${typeof e}: ${e}`)}},Du=Math.ceil(2**127*(2-2**-23)),Eu=e=>{const t=xu(e);if(void 0!==t&&!Number.isNaN(t)&&t!==1/0&&t!==-1/0&&Math.abs(t)>Du)throw new TypeError(`Expected 32-bit float, got ${e}`);return t},Mu=e=>{if(null!=e){if(Number.isInteger(e)&&!Number.isNaN(e))return e;throw new TypeError(`Expected integer, got ${typeof e}: ${e}`)}},Au=e=>ku(e,32),Su=e=>ku(e,16),Cu=e=>ku(e,8),ku=(e,t)=>{const n=Mu(e);if(void 0!==n&&Tu(n,t)!==n)throw new TypeError(`Expected ${t}-bit integer, got ${e}`);return n},Tu=(e,t)=>{switch(t){case 32:return Int32Array.of(e)[0];case 16:return Int16Array.of(e)[0];case 8:return Int8Array.of(e)[0]}},Iu=(e,t)=>{if(null==e){if(t)throw new TypeError(`Expected a non-null value for ${t}`);throw new TypeError("Expected a non-null value")}return e},Ru=e=>{if(null==e)return;if("object"==typeof e&&!Array.isArray(e))return e;const t=Array.isArray(e)?"array":typeof e;throw new TypeError(`Expected object, got ${t}: ${e}`)},Fu=e=>{if(null!=e){if("string"==typeof e)return e;if(["boolean","number","bigint"].includes(typeof e))return Uu.warn(Lu(`Expected string, got ${typeof e}: ${e}`)),String(e);throw new TypeError(`Expected string, got ${typeof e}: ${e}`)}},Ou=/(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g,Bu=e=>{const t=e.match(Ou);if(null===t||t[0].length!==e.length)throw new TypeError("Expected real number, got implicit NaN");return parseFloat(e)},Pu=e=>Mu("string"==typeof e?Bu(e):e),Nu=e=>Au("string"==typeof e?Bu(e):e),ju=e=>Su("string"==typeof e?Bu(e):e),Lu=e=>String(new TypeError(e).stack||e).split("\n").slice(0,5).filter((e=>!e.includes("stackTraceWarning"))).join("\n"),Uu={warn:console.warn},qu=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],$u=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function zu(e){const t=e.getUTCFullYear(),n=e.getUTCMonth(),r=e.getUTCDay(),i=e.getUTCDate(),o=e.getUTCHours(),s=e.getUTCMinutes(),a=e.getUTCSeconds(),u=o<10?`0${o}`:`${o}`,c=s<10?`0${s}`:`${s}`,d=a<10?`0${a}`:`${a}`;return`${qu[r]}, ${i<10?`0${i}`:`${i}`} ${$u[n]} ${t} ${u}:${c}:${d} GMT`}const Hu=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/),Ku=e=>{if(null==e)return;if("string"!=typeof e)throw new TypeError("RFC-3339 date-times must be expressed as strings");const t=Hu.exec(e);if(!t)throw new TypeError("Invalid RFC-3339 date-time value");const[n,r,i,o,s,a,u,c,d]=t,l=ju(sc(r)),h=rc(i,"month",1,12),f=rc(o,"day",1,31),p=Zu(l,h,f,{hours:s,minutes:a,seconds:u,fractionalMilliseconds:c});return"Z"!=d.toUpperCase()&&p.setTime(p.getTime()-oc(d)),p},Wu=new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/),Gu=new RegExp(/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/),Vu=new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? (\d{4})$/),Yu=e=>{if(null==e)return;if("string"!=typeof e)throw new TypeError("RFC-7231 date-times must be expressed as strings");let t=Wu.exec(e);if(t){const[e,n,r,i,o,s,a,u]=t;return Zu(ju(sc(i)),Qu(r),rc(n,"day",1,31),{hours:o,minutes:s,seconds:a,fractionalMilliseconds:u})}if(t=Gu.exec(e),t){const[e,n,r,i,o,s,a,u]=t;return Xu(Zu(Ju(i),Qu(r),rc(n,"day",1,31),{hours:o,minutes:s,seconds:a,fractionalMilliseconds:u}))}if(t=Vu.exec(e),t){const[e,n,r,i,o,s,a,u]=t;return Zu(ju(sc(u)),Qu(n),rc(r.trimLeft(),"day",1,31),{hours:i,minutes:o,seconds:s,fractionalMilliseconds:a})}throw new TypeError("Invalid RFC-7231 date-time value")},Zu=(e,t,n,r)=>{const i=t-1;return tc(e,i,n),new Date(Date.UTC(e,i,n,rc(r.hours,"hour",0,23),rc(r.minutes,"minute",0,59),rc(r.seconds,"seconds",0,60),ic(r.fractionalMilliseconds)))},Ju=e=>{const t=(new Date).getUTCFullYear(),n=100*Math.floor(t/100)+ju(sc(e));return ne.getTime()-(new Date).getTime()>15768e8?new Date(Date.UTC(e.getUTCFullYear()-100,e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds())):e,Qu=e=>{const t=$u.indexOf(e);if(t<0)throw new TypeError(`Invalid month: ${e}`);return t+1},ec=[31,28,31,30,31,30,31,31,30,31,30,31],tc=(e,t,n)=>{let r=ec[t];if(1===t&&nc(e)&&(r=29),n>r)throw new TypeError(`Invalid day for ${$u[t]} in ${e}: ${n}`)},nc=e=>e%4==0&&(e%100!=0||e%400==0),rc=(e,t,n,r)=>{const i=(e=>Cu("string"==typeof e?Bu(e):e))(sc(e));if(ir)throw new TypeError(`${t} must be between ${n} and ${r}, inclusive`);return i},ic=e=>null==e?0:1e3*(e=>Eu("string"==typeof e?Bu(e):e))("0."+e),oc=e=>{const t=e[0];let n=1;if("+"==t)n=1;else{if("-"!=t)throw new TypeError(`Offset direction, ${t}, must be "+" or "-"`);n=-1}return n*(60*Number(e.substring(1,3))+Number(e.substring(4,6)))*60*1e3},sc=e=>{let t=0;for(;t{Object.entries(t).filter((([,e])=>void 0!==e)).forEach((([t,n])=>{null!=e[t]&&""!==e[t]||(e[t]=n)}));const n=e.message||e.Message||"UnknownError";return e.message=n,delete e.Message,e},cc=e=>({httpStatusCode:e.statusCode,requestId:e.headers["x-amzn-requestid"]??e.headers["x-amzn-request-id"]??e.headers["x-amz-request-id"],extendedRequestId:e.headers["x-amz-id-2"],cfId:e.headers["x-amz-cf-id"]}),dc=e=>{switch(e){case"standard":case"cross-region":return{retryMode:"standard",connectionTimeout:3100};case"in-region":return{retryMode:"standard",connectionTimeout:1100};case"mobile":return{retryMode:"standard",connectionTimeout:3e4};default:return{}}},lc=e=>{const t=[];for(const n in xa){const r=xa[n];void 0!==e[r]&&t.push({algorithmId:()=>r,checksumConstructor:()=>e[r]})}return{_checksumAlgorithms:t,addChecksumAlgorithm(e){this._checksumAlgorithms.push(e)},checksumAlgorithms(){return this._checksumAlgorithms}}},hc=e=>{const t={};return e.checksumAlgorithms().forEach((e=>{t[e.algorithmId()]=e.checksumConstructor()})),t},fc=e=>{let t=e.retryStrategy;return{setRetryStrategy(e){t=e},retryStrategy:()=>t}},pc=e=>{const t={};return t.retryStrategy=e.retryStrategy(),t},mc=e=>({...lc(e),...fc(e)});function gc(e){return encodeURIComponent(e).replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}const yc=e=>Array.isArray(e)?e:[e],vc=e=>{const t="#text";for(const n in e)e.hasOwnProperty(n)&&void 0!==e[n][t]?e[n]=e[n][t]:"object"==typeof e[n]&&null!==e[n]&&(e[n]=vc(e[n]));return e},bc=function(){const e=Object.getPrototypeOf(this).constructor,t=new(Function.bind.apply(String,[null,...arguments]));return Object.setPrototypeOf(t,e.prototype),t};bc.prototype=Object.create(String.prototype,{constructor:{value:bc,enumerable:!1,writable:!0,configurable:!0}}),Object.setPrototypeOf(bc,String);function wc(e,t,n){let r,i,o;if(void 0===t&&void 0===n)r={},o=e;else{if(r=e,"function"==typeof t)return i=t,o=n,_c(r,i,o);o=t}for(const e of Object.keys(o))Array.isArray(o[e])?xc(r,null,o,e):r[e]=o[e];return r}const _c=(e,t,n)=>wc(e,Object.entries(n).reduce(((e,[n,r])=>(Array.isArray(r)?e[n]=r:e[n]="function"==typeof r?[t,r()]:[t,r],e)),{})),xc=(e,t,n,r)=>{if(null!==t){let i=n[r];"function"==typeof i&&(i=[,i]);const[o=Dc,s=Ec,a=r]=i;return void(("function"==typeof o&&o(t[a])||"function"!=typeof o&&o)&&(e[r]=s(t[a])))}let[i,o]=n[r];if("function"==typeof o){let t;const n=void 0===i&&null!=(t=o()),s="function"==typeof i&&!!i(void 0)||"function"!=typeof i&&!!i;n?e[r]=t:s&&(e[r]=o())}else{const t=void 0===i&&null!=o,n="function"==typeof i&&!!i(o)||"function"!=typeof i&&!!i;(t||n)&&(e[r]=o)}},Dc=e=>null!=e,Ec=e=>e;const Mc={step:"finalizeRequest",tags:["CHECK_CONTENT_LENGTH_HEADER"],name:"getCheckContentLengthHeaderPlugin",override:!0},Ac=e=>({applyToStack:e=>{e.add(((e,t)=>async n=>{const{request:r}=n;if(Sa.isInstance(r)&&!("content-length"in r.headers)){const e="Are you using a Stream of unknown length as the Body of a PutObject request? Consider using Upload instead from @aws-sdk/lib-storage.";"function"!=typeof t?.logger?.warn||t.logger instanceof ja?console.warn(e):t.logger.warn(e)}return e({...n})}),Mc)}}),Sc={tags:["REGION_REDIRECT","S3"],name:"regionRedirectEndpointMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"};const Cc={step:"initialize",tags:["REGION_REDIRECT","S3"],name:"regionRedirectMiddleware",override:!0},kc=e=>({applyToStack:t=>{var n;t.add(function(e){return(t,n)=>async r=>{try{return await t(r)}catch(i){if(e.followRegionRedirects&&301===i?.$metadata?.httpStatusCode){try{const t=i.$response.headers["x-amz-bucket-region"];n.logger?.debug(`Redirecting from ${await e.region()} to ${t}`),n.__s3RegionRedirect=t}catch(e){throw new Error("Region redirect failed: "+e)}return t(r)}throw i}}}(e),Cc),t.addRelativeTo((n=e,(e,t)=>async r=>{const i=await n.region(),o=n.region;t.__s3RegionRedirect&&(n.region=async()=>(n.region=o,t.__s3RegionRedirect));const s=await e(r);if(t.__s3RegionRedirect&&i!==await n.region())throw new Error("Region was not restored following S3 region redirect.");return s}),Sc)}}),Tc={tags:["S3"],name:"s3ExpiresMiddleware",override:!0,relation:"after",toMiddleware:"deserializerMiddleware"},Ic=e=>({applyToStack:e=>{e.addRelativeTo(((e,t)=>async n=>{const r=await e(n),{response:i}=r;if(Ca.isInstance(i)&&i.headers.expires){i.headers.expiresstring=i.headers.expires;try{Yu(i.headers.expires)}catch(e){t.logger?.warn(`AWS SDK Warning for ${t.clientName}::${t.commandName} response parsing (${i.headers.expires}): ${e}`),delete i.headers.expires}}return r}),Tc)}});class Rc{constructor(e={}){this.data=e,this.lastPurgeTime=Date.now()}get(e){const t=this.data[e];if(t)return t}set(e,t){return this.data[e]=t,t}delete(e){delete this.data[e]}async purgeExpired(){const e=Date.now();if(!(this.lastPurgeTime+Rc.EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS>e))for(const t in this.data){const n=this.data[t];if(!n.isRefreshing){const r=await n.identity;r.expiration&&r.expiration.getTime(){if((e.expiration?.getTime()??0){r.set(n,new Fc(Promise.resolve(e)))}))),e})):r.set(n,new Fc(this.getIdentity(n))).identity}async getIdentity(e){await this.cache.purgeExpired().catch((e=>{console.warn("Error while clearing expired entries in S3ExpressIdentityCache: \n"+e)}));const t=await this.createSessionFn(e);if(!t.Credentials?.AccessKeyId||!t.Credentials?.SecretAccessKey)throw new Error("s3#createSession response credential missing AccessKeyId or SecretAccessKey.");return{accessKeyId:t.Credentials.AccessKeyId,secretAccessKey:t.Credentials.SecretAccessKey,sessionToken:t.Credentials.SessionToken,expiration:t.Credentials.Expiration?new Date(t.Credentials.Expiration):void 0}}}Oc.REFRESH_WINDOW_MS=6e4;const Bc=e=>{if("function"==typeof e)return e;const t=Promise.resolve(e);return()=>t},Pc=e=>"string"==typeof e?Ja(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e),Nc="X-Amz-Date",jc="X-Amz-Signature",Lc="X-Amz-Security-Token",Uc="authorization",qc=Nc.toLowerCase(),$c=[Uc,qc,"date"],zc=jc.toLowerCase(),Hc="x-amz-content-sha256",Kc=Lc.toLowerCase(),Wc={authorization:!0,"cache-control":!0,connection:!0,expect:!0,from:!0,"keep-alive":!0,"max-forwards":!0,pragma:!0,referer:!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0,"user-agent":!0,"x-amzn-trace-id":!0},Gc=/^proxy-/,Vc=/^sec-/,Yc="AWS4-HMAC-SHA256",Zc="AWS4-HMAC-SHA256-PAYLOAD",Jc="aws4_request",Xc={},Qc=[],ed=(e,t,n)=>`${e}/${t}/${n}/${Jc}`,td=(e,t,n)=>{const r=new e(t);return r.update(Pc(n)),r.digest()},nd=({headers:e},t,n)=>{const r={};for(const i of Object.keys(e).sort()){if(null==e[i])continue;const o=i.toLowerCase();(o in Wc||t?.has(o)||Gc.test(o)||Vc.test(o))&&(!n||n&&!n.has(o))||(r[o]=e[i].trim().replace(/\s+/g," "))}return r},rd=e=>"function"==typeof ArrayBuffer&&e instanceof ArrayBuffer||"[object ArrayBuffer]"===Object.prototype.toString.call(e),id=async({headers:e,body:t},n)=>{for(const t of Object.keys(e))if(t.toLowerCase()===Hc)return e[t];if(null==t)return"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";if("string"==typeof t||ArrayBuffer.isView(t)||rd(t)){const e=new n;return e.update(Pc(t)),hu(await e.digest())}return"UNSIGNED-PAYLOAD"};class od{format(e){const t=[];for(const n of Object.keys(e)){const r=Ja(n);t.push(Uint8Array.from([r.byteLength]),r,this.formatHeaderValue(e[n]))}const n=new Uint8Array(t.reduce(((e,t)=>e+t.byteLength),0));let r=0;for(const e of t)n.set(e,r),r+=e.byteLength;return n}formatHeaderValue(e){switch(e.type){case"boolean":return Uint8Array.from([e.value?0:1]);case"byte":return Uint8Array.from([2,e.value]);case"short":const t=new DataView(new ArrayBuffer(3));return t.setUint8(0,3),t.setInt16(1,e.value,!1),new Uint8Array(t.buffer);case"integer":const n=new DataView(new ArrayBuffer(5));return n.setUint8(0,4),n.setInt32(1,e.value,!1),new Uint8Array(n.buffer);case"long":const r=new Uint8Array(9);return r[0]=5,r.set(e.value.bytes,1),r;case"binary":const i=new DataView(new ArrayBuffer(3+e.value.byteLength));i.setUint8(0,6),i.setUint16(1,e.value.byteLength,!1);const o=new Uint8Array(i.buffer);return o.set(e.value,3),o;case"string":const s=Ja(e.value),a=new DataView(new ArrayBuffer(3+s.byteLength));a.setUint8(0,7),a.setUint16(1,s.byteLength,!1);const u=new Uint8Array(a.buffer);return u.set(s,3),u;case"timestamp":const c=new Uint8Array(9);return c[0]=8,c.set(ud.fromNumber(e.value.valueOf()).bytes,1),c;case"uuid":if(!ad.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(lu(e.value.replace(/\-/g,"")),1),d}}}var sd;!function(e){e[e.boolTrue=0]="boolTrue",e[e.boolFalse=1]="boolFalse",e[e.byte=2]="byte",e[e.short=3]="short",e[e.integer=4]="integer",e[e.long=5]="long",e[e.byteArray=6]="byteArray",e[e.string=7]="string",e[e.timestamp=8]="timestamp",e[e.uuid=9]="uuid"}(sd||(sd={}));const ad=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;class ud{constructor(e){if(this.bytes=e,8!==e.byteLength)throw new Error("Int64 buffers must be exactly 8 bytes")}static fromNumber(e){if(e>0x8000000000000000||e<-0x8000000000000000)throw new Error(`${e} is too large (or, if negative, too small) to represent as an Int64`);const t=new Uint8Array(8);for(let n=7,r=Math.abs(Math.round(e));n>-1&&r>0;n--,r/=256)t[n]=r;return e<0&&cd(t),new ud(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&cd(e),parseInt(hu(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function cd(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}const dd=({headers:e,query:t,...n})=>({...n,headers:{...e},query:t?ld(t):void 0}),ld=e=>Object.keys(e).reduce(((t,n)=>{const r=e[n];return{...t,[n]:Array.isArray(r)?[...r]:r}}),{}),hd=e=>{e="function"==typeof e.clone?e.clone():dd(e);for(const t of Object.keys(e.headers))$c.indexOf(t.toLowerCase())>-1&&delete e.headers[t];return e},fd=e=>"number"==typeof e?new Date(1e3*e):"string"==typeof e?Number(e)?new Date(1e3*Number(e)):new Date(e):e;class pd{constructor({applyChecksum:e,credentials:t,region:n,service:r,sha256:i,uriEscapePath:o=!0}){this.headerFormatter=new od,this.service=r,this.sha256=i,this.uriEscapePath=o,this.applyChecksum="boolean"!=typeof e||e,this.regionProvider=Bc(n),this.credentialProvider=Bc(t)}async presign(e,t={}){const{signingDate:n=new Date,expiresIn:r=3600,unsignableHeaders:i,unhoistableHeaders:o,signableHeaders:s,signingRegion:a,signingService:u}=t,c=await this.credentialProvider();this.validateResolvedCredentials(c);const d=a??await this.regionProvider(),{longDate:l,shortDate:h}=md(n);if(r>604800)return Promise.reject("Signature version 4 presigned URLs must have an expiration date less than one week in the future");const f=ed(h,d,u??this.service),p=((e,t={})=>{const{headers:n,query:r={}}="function"==typeof e.clone?e.clone():dd(e);for(const e of Object.keys(n)){const i=e.toLowerCase();"x-amz-"!==i.slice(0,6)||t.unhoistableHeaders?.has(i)||(r[e]=n[e],delete n[e])}return{...e,headers:n,query:r}})(hd(e),{unhoistableHeaders:o});c.sessionToken&&(p.query[Lc]=c.sessionToken),p.query["X-Amz-Algorithm"]=Yc,p.query["X-Amz-Credential"]=`${c.accessKeyId}/${f}`,p.query[Nc]=l,p.query["X-Amz-Expires"]=r.toString(10);const m=nd(p,i,s);return p.query["X-Amz-SignedHeaders"]=gd(m),p.query[jc]=await this.getSignature(l,f,this.getSigningKey(c,d,h,u),this.createCanonicalRequest(p,m,await id(e,this.sha256))),p}async sign(e,t){return"string"==typeof e?this.signString(e,t):e.headers&&e.payload?this.signEvent(e,t):e.message?this.signMessage(e,t):this.signRequest(e,t)}async signEvent({headers:e,payload:t},{signingDate:n=new Date,priorSignature:r,signingRegion:i,signingService:o}){const s=i??await this.regionProvider(),{shortDate:a,longDate:u}=md(n),c=ed(a,s,o??this.service),d=await id({headers:{},body:t},this.sha256),l=new this.sha256;l.update(e);const h=hu(await l.digest()),f=[Zc,u,c,r,h,d].join("\n");return this.signString(f,{signingDate:n,signingRegion:s,signingService:o})}async signMessage(e,{signingDate:t=new Date,signingRegion:n,signingService:r}){return this.signEvent({headers:this.headerFormatter.format(e.message.headers),payload:e.message.body},{signingDate:t,signingRegion:n,signingService:r,priorSignature:e.priorSignature}).then((t=>({message:e.message,signature:t})))}async signString(e,{signingDate:t=new Date,signingRegion:n,signingService:r}={}){const i=await this.credentialProvider();this.validateResolvedCredentials(i);const o=n??await this.regionProvider(),{shortDate:s}=md(t),a=new this.sha256(await this.getSigningKey(i,o,s,r));return a.update(Pc(e)),hu(await a.digest())}async signRequest(e,{signingDate:t=new Date,signableHeaders:n,unsignableHeaders:r,signingRegion:i,signingService:o}={}){const s=await this.credentialProvider();this.validateResolvedCredentials(s);const a=i??await this.regionProvider(),u=hd(e),{longDate:c,shortDate:d}=md(t),l=ed(d,a,o??this.service);u.headers[qc]=c,s.sessionToken&&(u.headers[Kc]=s.sessionToken);const h=await id(u,this.sha256);!((e,t)=>{e=e.toLowerCase();for(const n of Object.keys(t))if(e===n.toLowerCase())return!0;return!1})(Hc,u.headers)&&this.applyChecksum&&(u.headers[Hc]=h);const f=nd(u,r,n),p=await this.getSignature(c,l,this.getSigningKey(s,a,d,o),this.createCanonicalRequest(u,f,h));return u.headers[Uc]=`${Yc} Credential=${s.accessKeyId}/${l}, SignedHeaders=${gd(f)}, Signature=${p}`,u}createCanonicalRequest(e,t,n){const r=Object.keys(t).sort();return`${e.method}\n${this.getCanonicalPath(e)}\n${(({query:e={}})=>{const t=[],n={};for(const r of Object.keys(e).sort()){if(r.toLowerCase()===zc)continue;t.push(r);const i=e[r];"string"==typeof i?n[r]=`${nu(r)}=${nu(i)}`:Array.isArray(i)&&(n[r]=i.slice(0).reduce(((e,t)=>e.concat([`${nu(r)}=${nu(t)}`])),[]).sort().join("&"))}return t.map((e=>n[e])).filter((e=>e)).join("&")})(e)}\n${r.map((e=>`${e}:${t[e]}`)).join("\n")}\n\n${r.join(";")}\n${n}`}async createStringToSign(e,t,n){const r=new this.sha256;r.update(Pc(n));const i=await r.digest();return`${Yc}\n${e}\n${t}\n${hu(i)}`}getCanonicalPath({path:e}){if(this.uriEscapePath){const t=[];for(const n of e.split("/"))0!==n?.length&&"."!==n&&(".."===n?t.pop():t.push(n));const n=`${e?.startsWith("/")?"/":""}${t.join("/")}${t.length>0&&e?.endsWith("/")?"/":""}`;return nu(n).replace(/%2F/g,"/")}return e}async getSignature(e,t,n,r){const i=await this.createStringToSign(e,t,r),o=new this.sha256(await n);return o.update(Pc(i)),hu(await o.digest())}getSigningKey(e,t,n,r){return(async(e,t,n,r,i)=>{const o=`${n}:${r}:${i}:${hu(await td(e,t.secretAccessKey,t.accessKeyId))}:${t.sessionToken}`;if(o in Xc)return Xc[o];for(Qc.push(o);Qc.length>50;)delete Xc[Qc.shift()];let s=`AWS4${t.secretAccessKey}`;for(const t of[n,r,i,Jc])s=await td(e,s,t);return Xc[o]=s})(this.sha256,e,n,t,r||this.service)}validateResolvedCredentials(e){if("object"!=typeof e||"string"!=typeof e.accessKeyId||"string"!=typeof e.secretAccessKey)throw new Error("Resolved credential object is not valid")}}const md=e=>{const t=(n=e,fd(n).toISOString().replace(/\.\d{3}Z$/,"Z")).replace(/[\-:]/g,"");var n;return{longDate:t,shortDate:t.slice(0,8)}},gd=e=>Object.keys(e).sort().join(";");var yd;!function(e){e.ENV="env",e.CONFIG="shared config entry"}(yd||(yd={}));const vd="X-Amz-S3session-Token",bd=vd.toLowerCase();class wd extends pd{async signWithCredentials(e,t,n){const r=_d(t);e.headers[bd]=t.sessionToken;return xd(this,r),this.signRequest(e,n??{})}async presignWithCredentials(e,t,n){const r=_d(t);delete e.headers[bd],e.headers[vd]=t.sessionToken,e.query=e.query??{},e.query[vd]=t.sessionToken;return xd(this,r),this.presign(e,n)}}function _d(e){return{accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,expiration:e.expiration}}function xd(e,t){const n=setTimeout((()=>{throw new Error("SignatureV4S3Express credential override was created but not called.")}),10),r=e.credentialProvider;e.credentialProvider=()=>(clearTimeout(n),e.credentialProvider=r,Promise.resolve(t))}const Dd={name:"s3ExpressMiddleware",step:"build",tags:["S3","S3_EXPRESS"],override:!0},Ed=e=>({applyToStack:t=>{t.add((e=>(t,n)=>async r=>{if(n.endpointV2){const t=n.endpointV2,i="sigv4-s3express"===t.properties?.authSchemes?.[0]?.name;if(("S3Express"===t.properties?.backend||"Directory"===t.properties?.bucketType)&&(n.isS3ExpressBucket=!0),i){const t=r.input.Bucket;if(t){const i=await e.s3ExpressIdentityProvider.getS3ExpressIdentity(await e.credentials(),{Bucket:t});n.s3ExpressIdentity=i,Sa.isInstance(r.request)&&i.sessionToken&&(r.request.headers[bd]=i.sessionToken)}}}return t(r)})(e),Dd)}}),Md=(e=new Uint8Array,t)=>e instanceof Uint8Array?Promise.resolve(e):t.streamCollector(e)||Promise.resolve(new Uint8Array),Ad=(e,t)=>Md(e,t).then((e=>t.utf8Encoder(e))),Sd={relation:"after",toMiddleware:"deserializerMiddleware",tags:["THROW_200_EXCEPTIONS","S3"],name:"throw200ExceptionsMiddleware",override:!0},Cd=e=>({applyToStack:t=>{t.addRelativeTo((e=>t=>async n=>{const r=await t(n),{response:i}=r;if(!Ca.isInstance(i))return r;const{statusCode:o,body:s}=i;if(o<200||o>=300)return r;const a=await Md(s,e),u=await Ad(a,e);if(0===a.length){const e=new Error("S3 aborted request");throw e.name="InternalError",e}return u&&u.match("")&&(i.statusCode=400),i.body=a,r})(e),Sd)}});const kd={name:"bucketEndpointMiddleware",override:!0,relation:"after",toMiddleware:"endpointV2Middleware"};const Td={step:"initialize",tags:["VALIDATE_BUCKET_NAME"],name:"validateBucketNameMiddleware",override:!0},Id=e=>({applyToStack:t=>{t.add(function({bucketEndpoint:e}){return t=>async n=>{const{input:{Bucket:r}}=n;if(!e&&"string"==typeof r&&!("string"==typeof(i=r)&&0===i.indexOf("arn:")&&i.split(":").length>=6)&&r.indexOf("/")>=0){const e=new Error(`Bucket name shouldn't contain '/', received '${r}'`);throw e.name="InvalidBucketName",e}var i;return t({...n})}}(e),Td),t.addRelativeTo(function(e){return(t,n)=>async r=>{if(e.bucketEndpoint){const e=n.endpointV2;if(e){const t=r.input.Bucket;if("string"==typeof t)try{const n=new URL(t);e.url=n}catch(e){const r=`@aws-sdk/middleware-sdk-s3: bucketEndpoint=true was set but Bucket=${t} could not be parsed as URL.`;throw"NoOpLogger"===n.logger?.constructor?.name?console.warn(r):n.logger?.warn?.(r),e}}}return t(r)}}(e),kd)}});Error;const Rd=(e,t,n)=>{let r,i,o,s=!1;const a=async()=>{i||(i=e());try{r=await i,o=!0,s=!1}finally{i=void 0}return r};return void 0===t?async e=>(o&&!e?.forceRefresh||(r=await a()),r):async e=>(o&&!e?.forceRefresh||(r=await a()),s?r:n&&!n(r)?(s=!0,r):t(r)?(await a(),r):r)},Fd=e=>"function"==typeof e?Rd(e,(e=>void 0!==e.expiration&&e.expiration.getTime()-Date.now()<3e5),(e=>void 0!==e.expiration)):Bc(e),Od=e=>new Date(Date.now()+e),Bd=(e,t)=>{const n=Date.parse(e);return((e,t)=>Math.abs(Od(t).getTime()-e)>=3e5)(n,t)?n-Date.now():t},Pd=e=>Ca.isInstance(e)?e.headers?.date??e.headers?.Date:void 0,Nd={name:"awsAuthMiddleware",tags:["SIGNATURE","AWSAUTH"],relation:"after",toMiddleware:"retryMiddleware",override:!0},jd=e=>({applyToStack:t=>{t.addRelativeTo((e=>(t,n)=>async function(r){if(!Sa.isInstance(r.request))return t(r);let i,o;const s=n.endpointV2?.properties?.authSchemes?.[0],a=n.endpointV2?.properties?.authSchemes?.[1];if("sigv4a"===s?.name&&a){o=await e.signer(i=s);const t=o;(()=>{if("function"==typeof t?.getSigv4aSigner){if("node"!==t?.signerOptions?.runtime)return!1;try{return t.getSigv4aSigner(),!0}catch(e){}}return!1})()||(o=await e.signer(i=a))}else o=await e.signer(i=s);let u;const c="sigv4a"===i?.name?i?.signingRegionSet?.join(","):void 0,d={signingDate:Od(e.systemClockOffset),signingRegion:c||n.signing_region,signingService:n.signing_service};if(n.s3ExpressIdentity){const e=o;if(u=await e.signWithCredentials(r.request,n.s3ExpressIdentity,d),u.headers["X-Amz-Security-Token"]||u.headers["x-amz-security-token"])throw new Error("X-Amz-Security-Token must not be set for s3-express requests.")}else u=await o.sign(r.request,d);const l=await t({...r,request:u}).catch((t=>{const n=t.ServerTime??Pd(t.$response);throw n&&(e.systemClockOffset=Bd(n,e.systemClockOffset)),t})),h=Pd(l.response);return h&&(e.systemClockOffset=Bd(h,e.systemClockOffset)),l})(e),Nd)}});const Ld=new RegExp("^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$"),Ud=e=>Ld.test(e)||e.startsWith("[")&&e.endsWith("]"),qd=new RegExp("^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$"),$d=(e,t=!1)=>{if(!t)return qd.test(e);const n=e.split(".");for(const e of n)if(!$d(e))return!1;return!0},zd={},Hd="endpoints";function Kd(e){return"object"!=typeof e||null==e?e:"ref"in e?`$${Kd(e.ref)}`:"fn"in e?`${e.fn}(${(e.argv||[]).map(Kd).join(", ")})`:JSON.stringify(e,null,2)}class Wd extends Error{constructor(e){super(e),this.name="EndpointError"}}const Gd=(e,t)=>(e=>{const t=e.split("."),n=[];for(const r of t){const t=r.indexOf("[");if(-1!==t){if(r.indexOf("]")!==r.length-1)throw new Wd(`Path: '${e}' does not end with ']'`);const i=r.slice(t+1,-1);if(Number.isNaN(parseInt(i)))throw new Wd(`Invalid array index: '${i}' in path: '${e}'`);0!==t&&n.push(r.slice(0,t)),n.push(i)}else n.push(r)}return n})(t).reduce(((n,r)=>{if("object"!=typeof n)throw new Wd(`Index '${r}' in '${t}' not found in '${JSON.stringify(e)}'`);return Array.isArray(n)?n[parseInt(r)]:n[r]}),e),Vd={[_a.HTTP]:80,[_a.HTTPS]:443},Yd={booleanEquals:(e,t)=>e===t,getAttr:Gd,isSet:e=>null!=e,isValidHostLabel:$d,not:e=>!e,parseURL:e=>{const t=(()=>{try{if(e instanceof URL)return e;if("object"==typeof e&&"hostname"in e){const{hostname:t,port:n,protocol:r="",path:i="",query:o={}}=e,s=new URL(`${r}//${t}${n?`:${n}`:""}${i}`);return s.search=Object.entries(o).map((([e,t])=>`${e}=${t}`)).join("&"),s}return new URL(e)}catch(e){return null}})();if(!t)return console.error(`Unable to parse ${JSON.stringify(e)} as a whatwg URL.`),null;const n=t.href,{host:r,hostname:i,pathname:o,protocol:s,search:a}=t;if(a)return null;const u=s.slice(0,-1);if(!Object.values(_a).includes(u))return null;const c=Ud(i);return{scheme:u,authority:`${r}${n.includes(`${r}:${Vd[u]}`)||"string"==typeof e&&e.includes(`${r}:${Vd[u]}`)?`:${Vd[u]}`:""}`,path:o,normalizedPath:o.endsWith("/")?o:`${o}/`,isIp:c}},stringEquals:(e,t)=>e===t,substring:(e,t,n,r)=>t>=n||e.lengthencodeURIComponent(e).replace(/[!*'()]/g,(e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`))},Zd=(e,t)=>{const n=[],r={...t.endpointParams,...t.referenceRecord};let i=0;for(;i{if("string"==typeof e)return Zd(e,n);if(e.fn)return Xd(e,n);if(e.ref)return(({ref:e},t)=>({...t.endpointParams,...t.referenceRecord}[e]))(e,n);throw new Wd(`'${t}': ${String(e)} is not a string, function or reference.`)},Xd=({fn:e,argv:t},n)=>{const r=t.map((e=>["boolean","number"].includes(typeof e)?e:Jd(e,"arg",n))),i=e.split(".");return i[0]in zd&&null!=i[1]?zd[i[0]][i[1]](...r):Yd[e](...r)},Qd=({assign:e,...t},n)=>{if(e&&e in n.referenceRecord)throw new Wd(`'${e}' is already defined in Reference Record.`);const r=Xd(t,n);return n.logger?.debug?.(Hd,`evaluateCondition: ${Kd(t)} = ${Kd(r)}`),{result:""===r||!!r,...null!=e&&{toAssign:{name:e,value:r}}}},el=(e=[],t)=>{const n={};for(const r of e){const{result:e,toAssign:i}=Qd(r,{...t,referenceRecord:{...t.referenceRecord,...n}});if(!e)return{result:e};i&&(n[i.name]=i.value,t.logger?.debug?.(Hd,`assign: ${i.name} := ${Kd(i.value)}`))}return{result:!0,referenceRecord:n}},tl=(e,t)=>Object.entries(e).reduce(((e,[n,r])=>({...e,[n]:r.map((e=>{const r=Jd(e,"Header value entry",t);if("string"!=typeof r)throw new Wd(`Header '${n}' value '${r}' is not a string`);return r}))})),{}),nl=(e,t)=>{if(Array.isArray(e))return e.map((e=>nl(e,t)));switch(typeof e){case"string":return Zd(e,t);case"object":if(null===e)throw new Wd(`Unexpected endpoint property: ${e}`);return rl(e,t);case"boolean":return e;default:throw new Wd("Unexpected endpoint property type: "+typeof e)}},rl=(e,t)=>Object.entries(e).reduce(((e,[n,r])=>({...e,[n]:nl(r,t)})),{}),il=(e,t)=>{const n=Jd(e,"Endpoint URL",t);if("string"==typeof n)try{return new URL(n)}catch(e){throw console.error(`Failed to construct URL with ${n}`,e),e}throw new Wd("Endpoint URL must be a string, got "+typeof n)},ol=(e,t)=>{const{conditions:n,endpoint:r}=e,{result:i,referenceRecord:o}=el(n,t);if(!i)return;const s={...t,referenceRecord:{...t.referenceRecord,...o}},{url:a,properties:u,headers:c}=r;return t.logger?.debug?.(Hd,`Resolving endpoint from template: ${Kd(r)}`),{...null!=c&&{headers:tl(c,s)},...null!=u&&{properties:rl(u,s)},url:il(a,s)}},sl=(e,t)=>{const{conditions:n,error:r}=e,{result:i,referenceRecord:o}=el(n,t);if(i)throw new Wd(Jd(r,"Error",{...t,referenceRecord:{...t.referenceRecord,...o}}))},al=(e,t)=>{const{conditions:n,rules:r}=e,{result:i,referenceRecord:o}=el(n,t);if(i)return ul(r,{...t,referenceRecord:{...t.referenceRecord,...o}})},ul=(e,t)=>{for(const n of e)if("endpoint"===n.type){const e=ol(n,t);if(e)return e}else if("error"===n.type)sl(n,t);else{if("tree"!==n.type)throw new Wd(`Unknown endpoint rule: ${n}`);{const e=al(n,t);if(e)return e}}throw new Wd("Rules evaluation failed")},cl=(e,t=!1)=>{if(t){for(const t of e.split("."))if(!cl(t))return!1;return!0}return!!$d(e)&&(!(e.length<3||e.length>63)&&(e===e.toLowerCase()&&!Ud(e)))};let dl=JSON.parse('{"partitions":[{"id":"aws","outputs":{"dnsSuffix":"amazonaws.com","dualStackDnsSuffix":"api.aws","implicitGlobalRegion":"us-east-1","name":"aws","supportsDualStack":true,"supportsFIPS":true},"regionRegex":"^(us|eu|ap|sa|ca|me|af|il)\\\\-\\\\w+\\\\-\\\\d+$","regions":{"af-south-1":{"description":"Africa (Cape Town)"},"ap-east-1":{"description":"Asia Pacific (Hong Kong)"},"ap-northeast-1":{"description":"Asia Pacific (Tokyo)"},"ap-northeast-2":{"description":"Asia Pacific (Seoul)"},"ap-northeast-3":{"description":"Asia Pacific (Osaka)"},"ap-south-1":{"description":"Asia Pacific (Mumbai)"},"ap-south-2":{"description":"Asia Pacific (Hyderabad)"},"ap-southeast-1":{"description":"Asia Pacific (Singapore)"},"ap-southeast-2":{"description":"Asia Pacific (Sydney)"},"ap-southeast-3":{"description":"Asia Pacific (Jakarta)"},"ap-southeast-4":{"description":"Asia Pacific (Melbourne)"},"aws-global":{"description":"AWS Standard global region"},"ca-central-1":{"description":"Canada (Central)"},"ca-west-1":{"description":"Canada West (Calgary)"},"eu-central-1":{"description":"Europe (Frankfurt)"},"eu-central-2":{"description":"Europe (Zurich)"},"eu-north-1":{"description":"Europe (Stockholm)"},"eu-south-1":{"description":"Europe (Milan)"},"eu-south-2":{"description":"Europe (Spain)"},"eu-west-1":{"description":"Europe (Ireland)"},"eu-west-2":{"description":"Europe (London)"},"eu-west-3":{"description":"Europe (Paris)"},"il-central-1":{"description":"Israel (Tel Aviv)"},"me-central-1":{"description":"Middle East (UAE)"},"me-south-1":{"description":"Middle East (Bahrain)"},"sa-east-1":{"description":"South America (Sao Paulo)"},"us-east-1":{"description":"US East (N. Virginia)"},"us-east-2":{"description":"US East (Ohio)"},"us-west-1":{"description":"US West (N. California)"},"us-west-2":{"description":"US West (Oregon)"}}},{"id":"aws-cn","outputs":{"dnsSuffix":"amazonaws.com.cn","dualStackDnsSuffix":"api.amazonwebservices.com.cn","implicitGlobalRegion":"cn-northwest-1","name":"aws-cn","supportsDualStack":true,"supportsFIPS":true},"regionRegex":"^cn\\\\-\\\\w+\\\\-\\\\d+$","regions":{"aws-cn-global":{"description":"AWS China global region"},"cn-north-1":{"description":"China (Beijing)"},"cn-northwest-1":{"description":"China (Ningxia)"}}},{"id":"aws-us-gov","outputs":{"dnsSuffix":"amazonaws.com","dualStackDnsSuffix":"api.aws","implicitGlobalRegion":"us-gov-west-1","name":"aws-us-gov","supportsDualStack":true,"supportsFIPS":true},"regionRegex":"^us\\\\-gov\\\\-\\\\w+\\\\-\\\\d+$","regions":{"aws-us-gov-global":{"description":"AWS GovCloud (US) global region"},"us-gov-east-1":{"description":"AWS GovCloud (US-East)"},"us-gov-west-1":{"description":"AWS GovCloud (US-West)"}}},{"id":"aws-iso","outputs":{"dnsSuffix":"c2s.ic.gov","dualStackDnsSuffix":"c2s.ic.gov","implicitGlobalRegion":"us-iso-east-1","name":"aws-iso","supportsDualStack":false,"supportsFIPS":true},"regionRegex":"^us\\\\-iso\\\\-\\\\w+\\\\-\\\\d+$","regions":{"aws-iso-global":{"description":"AWS ISO (US) global region"},"us-iso-east-1":{"description":"US ISO East"},"us-iso-west-1":{"description":"US ISO WEST"}}},{"id":"aws-iso-b","outputs":{"dnsSuffix":"sc2s.sgov.gov","dualStackDnsSuffix":"sc2s.sgov.gov","implicitGlobalRegion":"us-isob-east-1","name":"aws-iso-b","supportsDualStack":false,"supportsFIPS":true},"regionRegex":"^us\\\\-isob\\\\-\\\\w+\\\\-\\\\d+$","regions":{"aws-iso-b-global":{"description":"AWS ISOB (US) global region"},"us-isob-east-1":{"description":"US ISOB East (Ohio)"}}},{"id":"aws-iso-e","outputs":{"dnsSuffix":"cloud.adc-e.uk","dualStackDnsSuffix":"cloud.adc-e.uk","implicitGlobalRegion":"eu-isoe-west-1","name":"aws-iso-e","supportsDualStack":false,"supportsFIPS":true},"regionRegex":"^eu\\\\-isoe\\\\-\\\\w+\\\\-\\\\d+$","regions":{}},{"id":"aws-iso-f","outputs":{"dnsSuffix":"csp.hci.ic.gov","dualStackDnsSuffix":"csp.hci.ic.gov","implicitGlobalRegion":"us-isof-south-1","name":"aws-iso-f","supportsDualStack":false,"supportsFIPS":true},"regionRegex":"^us\\\\-isof\\\\-\\\\w+\\\\-\\\\d+$","regions":{}}],"version":"1.1"}'),ll="";const hl={isVirtualHostableS3Bucket:cl,parseArn:e=>{const t=e.split(":");if(t.length<6)return null;const[n,r,i,o,s,...a]=t;return"arn"!==n||""===r||""===i||""===a[0]?null:{partition:r,service:i,region:o,accountId:s,resourceId:a[0].includes("/")?a[0].split("/"):a}},partition:e=>{const{partitions:t}=dl;for(const n of t){const{regions:t,outputs:r}=n;for(const[n,i]of Object.entries(t))if(n===e)return{...r,...i}}for(const n of t){const{regionRegex:t,outputs:r}=n;if(new RegExp(t).test(e))return{...r}}const n=t.find((e=>"aws"===e.id));if(!n)throw new Error("Provided region was not found in the partition array or regex, and default partition with id 'aws' doesn't exist.");return{...n.outputs}}};zd.aws=hl;const fl="user-agent",pl="x-amz-user-agent",ml=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w]/g,gl=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w\#]/g,yl=e=>(t,n)=>async r=>{const{request:i}=r;if(!Sa.isInstance(i))return t(r);const{headers:o}=i,s=n?.userAgent?.map(vl)||[],a=(await e.defaultUserAgentProvider()).map(vl),u=e?.customUserAgent?.map(vl)||[],c=(ll?[ll]:[]).concat([...a,...s,...u]).join(" "),d=[...a.filter((e=>e.startsWith("aws-sdk-"))),...u].join(" ");return"browser"!==e.runtime?(d&&(o[pl]=o[pl]?`${o[fl]} ${d}`:d),o[fl]=c):o[pl]=c,t({...r,request:i})},vl=e=>{const t=e[0].split("/").map((e=>e.replace(ml,"-"))).join("/"),n=e[1]?.replace(gl,"-"),r=t.indexOf("/"),i=t.substring(0,r);let o=t.substring(r+1);return"api"===i&&(o=o.toLowerCase()),[i,o,n].filter((e=>e&&e.length>0)).reduce(((e,t,n)=>{switch(n){case 0:return t;case 1:return`${e}/${t}`;default:return`${e}#${t}`}}),"")},bl={name:"getUserAgentMiddleware",step:"build",priority:"low",tags:["SET_USER_AGENT","USER_AGENT"],override:!0},wl=e=>"string"==typeof e&&(e.startsWith("fips-")||e.endsWith("-fips")),_l=e=>wl(e)?["fips-aws-global","aws-fips"].includes(e)?"us-east-1":e.replace(/fips-(dkr-|prod-)?|-fips/,""):e,xl="content-length";const Dl={step:"build",tags:["SET_CONTENT_LENGTH","CONTENT_LENGTH"],name:"contentLengthMiddleware",override:!0},El=e=>({applyToStack:t=>{var n;t.add((n=e.bodyLengthChecker,e=>async t=>{const r=t.request;if(Sa.isInstance(r)){const{body:e,headers:t}=r;if(e&&-1===Object.keys(t).map((e=>e.toLowerCase())).indexOf(xl))try{const t=n(e);r.headers={...r.headers,[xl]:String(t)}}catch(e){}}return e({...t,request:r})}),Dl)}}),Ml=/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/,Al=/(\d+\.){3}\d+/,Sl=/\.\./,Cl=e=>Ml.test(e)&&!Al.test(e)&&!Sl.test(e),kl=e=>{const[t,n,r,,,i]=e.split(":"),o="arn"===t&&e.split(":").length>=6,s=Boolean(o&&n&&r&&i);if(o&&!s)throw new Error(`Invalid ARN: ${e} was an invalid ARN.`);return s},Tl=(e,t,n)=>{const r=async()=>{const r=n[e]??n[t];return"function"==typeof r?r():r};return"credentialScope"===e||"CredentialScope"===t?async()=>{const e="function"==typeof n.credentials?await n.credentials():n.credentials;return e?.credentialScope??e?.CredentialScope}:"endpoint"===e||"endpoint"===t?async()=>{const e=await r();if(e&&"object"==typeof e){if("url"in e)return e.url.href;if("hostname"in e){const{protocol:t,hostname:n,port:r,path:i}=e;return`${t}//${n}${r?":"+r:""}${i}`}}return e}:r};const Il=e=>{if("string"==typeof e)return Il(new URL(e));const{hostname:t,pathname:n,port:r,protocol:i,search:o}=e;let s;return o&&(s=function(e){const t={};if(e=e.replace(/^\?/,""))for(const n of e.split("&")){let[e,r=null]=n.split("=");e=decodeURIComponent(e),r&&(r=decodeURIComponent(r)),e in t?Array.isArray(t[e])?t[e].push(r):t[e]=[t[e],r]:t[e]=r}return t}(o)),{hostname:t,port:r?parseInt(r):void 0,protocol:i,path:n,query:s}},Rl=e=>"object"==typeof e?"url"in e?Il(e.url):e:Il(e),Fl=async(e,t,n,r)=>{if(!n.endpoint){const e=await(async e=>{})(n.serviceId);e&&(n.endpoint=()=>Promise.resolve(Rl(e)))}const i=await Ol(e,t,n);if("function"!=typeof n.endpointProvider)throw new Error("config.endpointProvider is not set.");return n.endpointProvider(i,r)},Ol=async(e,t,n)=>{const r={},i=t?.getEndpointParameterInstructions?.()||{};for(const[t,o]of Object.entries(i))switch(o.type){case"staticContextParams":r[t]=o.value;break;case"contextParams":r[t]=e[o.name];break;case"clientContextParams":case"builtInParams":r[t]=await Tl(o.name,t,n)();break;default:throw new Error("Unrecognized endpoint parameter instruction: "+JSON.stringify(o))}return 0===Object.keys(i).length&&Object.assign(r,n),"s3"===String(n.serviceId).toLowerCase()&&await(async e=>{const t=e?.Bucket||"";if("string"==typeof e.Bucket&&(e.Bucket=t.replace(/#/g,encodeURIComponent("#")).replace(/\?/g,encodeURIComponent("?"))),kl(t)){if(!0===e.ForcePathStyle)throw new Error("Path-style addressing cannot be used with ARN buckets")}else(!Cl(t)||-1!==t.indexOf(".")&&!String(e.Endpoint).startsWith("http:")||t.toLowerCase()!==t||t.length<3)&&(e.ForcePathStyle=!0);return e.DisableMultiRegionAccessPoints&&(e.disableMultiRegionAccessPoints=!0,e.DisableMRAP=!0),e})(r),r},Bl=({config:e,instructions:t})=>(n,r)=>async i=>{const o=await Fl(i.input,{getEndpointParameterInstructions:()=>t},{...e},r);r.endpointV2=o,r.authSchemes=o.properties?.authSchemes;const s=r.authSchemes?.[0];if(s){r.signing_region=s.signingRegion,r.signing_service=s.signingName;const e=(e=>e[Ea]||(e[Ea]={}))(r),t=e?.selectedHttpAuthScheme?.httpAuthOption;t&&(t.signingProperties=Object.assign(t.signingProperties||{},{signing_region:s.signingRegion,signingRegion:s.signingRegion,signing_service:s.signingName,signingName:s.signingName,signingRegionSet:s.signingRegionSet},s.properties))}return n({...i})},Pl={name:"deserializerMiddleware",step:"deserialize",tags:["DESERIALIZER"],override:!0},Nl={name:"serializerMiddleware",step:"serialize",tags:["SERIALIZER"],override:!0};function jl(e,t,n){return{applyToStack:r=>{r.add(((e,t)=>(n,r)=>async r=>{const{response:i}=await n(r);try{return{response:i,output:await t(i,e)}}catch(e){if(Object.defineProperty(e,"$response",{value:i}),!("$metadata"in e)){const t="Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.";e.message+="\n "+t,void 0!==e.$responseBodyText&&e.$response&&(e.$response.body=e.$responseBodyText)}throw e}})(e,n),Pl),r.add(((e,t)=>(n,r)=>async i=>{const o=r.endpointV2?.url&&e.urlParser?async()=>e.urlParser(r.endpointV2.url):e.endpoint;if(!o)throw new Error("No valid endpoint provider available.");const s=await t(i.input,{...e,endpoint:o});return n({...i,request:s})})(e,t),Nl)}}}const Ll={step:"serialize",tags:["ENDPOINT_PARAMETERS","ENDPOINT_V2","ENDPOINT"],name:"endpointV2Middleware",override:!0,relation:"before",toMiddleware:Nl.name},Ul=(e,t)=>({applyToStack:n=>{n.addRelativeTo(Bl({config:e,instructions:t}),Ll)}});var ql;!function(e){e.STANDARD="standard",e.ADAPTIVE="adaptive"}(ql||(ql={}));const $l=ql.STANDARD,zl=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Hl=["TimeoutError","RequestTimeout","RequestTimeoutException"],Kl=[500,502,503,504],Wl=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],Gl=e=>429===e.$metadata?.httpStatusCode||zl.includes(e.name)||1==e.$retryable?.throttling,Vl=e=>(e=>e.$metadata?.clockSkewCorrected)(e)||Hl.includes(e.name)||Wl.includes(e?.code||"")||Kl.includes(e.$metadata?.httpStatusCode||0);class Yl{constructor(e){this.currentCapacity=0,this.enabled=!1,this.lastMaxRate=0,this.measuredTxRate=0,this.requestCount=0,this.lastTimestamp=0,this.timeWindow=0,this.beta=e?.beta??.7,this.minCapacity=e?.minCapacity??1,this.minFillRate=e?.minFillRate??.5,this.scaleConstant=e?.scaleConstant??.4,this.smooth=e?.smooth??.8;const t=this.getCurrentTimeInSeconds();this.lastThrottleTime=t,this.lastTxRateBucket=Math.floor(this.getCurrentTimeInSeconds()),this.fillRate=this.minFillRate,this.maxCapacity=this.minCapacity}getCurrentTimeInSeconds(){return Date.now()/1e3}async getSendToken(){return this.acquireTokenBucket(1)}async acquireTokenBucket(e){if(this.enabled){if(this.refillTokenBucket(),e>this.currentCapacity){const t=(e-this.currentCapacity)/this.fillRate*1e3;await new Promise((e=>setTimeout(e,t)))}this.currentCapacity=this.currentCapacity-e}}refillTokenBucket(){const e=this.getCurrentTimeInSeconds();if(!this.lastTimestamp)return void(this.lastTimestamp=e);const t=(e-this.lastTimestamp)*this.fillRate;this.currentCapacity=Math.min(this.maxCapacity,this.currentCapacity+t),this.lastTimestamp=e}updateClientSendingRate(e){let t;if(this.updateMeasuredRate(),Gl(e)){const e=this.enabled?Math.min(this.measuredTxRate,this.fillRate):this.measuredTxRate;this.lastMaxRate=e,this.calculateTimeWindow(),this.lastThrottleTime=this.getCurrentTimeInSeconds(),t=this.cubicThrottle(e),this.enableTokenBucket()}else this.calculateTimeWindow(),t=this.cubicSuccess(this.getCurrentTimeInSeconds());const n=Math.min(t,2*this.measuredTxRate);this.updateTokenBucketRate(n)}calculateTimeWindow(){this.timeWindow=this.getPrecise(Math.pow(this.lastMaxRate*(1-this.beta)/this.scaleConstant,1/3))}cubicThrottle(e){return this.getPrecise(e*this.beta)}cubicSuccess(e){return this.getPrecise(this.scaleConstant*Math.pow(e-this.lastThrottleTime-this.timeWindow,3)+this.lastMaxRate)}enableTokenBucket(){this.enabled=!0}updateTokenBucketRate(e){this.refillTokenBucket(),this.fillRate=Math.max(e,this.minFillRate),this.maxCapacity=Math.max(e,this.minCapacity),this.currentCapacity=Math.min(this.currentCapacity,this.maxCapacity)}updateMeasuredRate(){const e=this.getCurrentTimeInSeconds(),t=Math.floor(2*e)/2;if(this.requestCount++,t>this.lastTxRateBucket){const e=this.requestCount/(t-this.lastTxRateBucket);this.measuredTxRate=this.getPrecise(e*this.smooth+this.measuredTxRate*(1-this.smooth)),this.requestCount=0,this.lastTxRateBucket=t}}getPrecise(e){return parseFloat(e.toFixed(8))}}const Zl=100,Jl=2e4,Xl="amz-sdk-invocation-id",Ql="amz-sdk-request",eh=({retryDelay:e,retryCount:t,retryCost:n})=>({getRetryCount:()=>t,getRetryDelay:()=>Math.min(Jl,e),getRetryCost:()=>n});class th{constructor(e){this.maxAttempts=e,this.mode=ql.STANDARD,this.capacity=500,this.retryBackoffStrategy=(()=>{let e=Zl;return{computeNextBackoffDelay:t=>Math.floor(Math.min(Jl,Math.random()*2**t*e)),setDelayBase:t=>{e=t}}})(),this.maxAttemptsProvider="function"==typeof e?e:async()=>e}async acquireInitialRetryToken(e){return eh({retryDelay:Zl,retryCount:0})}async refreshRetryTokenForRetry(e,t){const n=await this.getMaxAttempts();if(this.shouldRetry(e,t,n)){const n=t.errorType;this.retryBackoffStrategy.setDelayBase("THROTTLING"===n?500:Zl);const r=this.retryBackoffStrategy.computeNextBackoffDelay(e.getRetryCount()),i=t.retryAfterHint?Math.max(t.retryAfterHint.getTime()-Date.now()||0,r):r,o=this.getCapacityCost(n);return this.capacity-=o,eh({retryDelay:i,retryCount:e.getRetryCount()+1,retryCost:o})}throw new Error("No retry token available")}recordSuccess(e){this.capacity=Math.max(500,this.capacity+(e.getRetryCost()??1))}getCapacity(){return this.capacity}async getMaxAttempts(){try{return await this.maxAttemptsProvider()}catch(e){return console.warn("Max attempts provider could not resolve. Using default of 3"),3}}shouldRetry(e,t,n){return e.getRetryCount()+1=this.getCapacityCost(t.errorType)&&this.isRetryableError(t.errorType)}getCapacityCost(e){return"TRANSIENT"===e?10:5}isRetryableError(e){return"THROTTLING"===e||"TRANSIENT"===e}}class nh{constructor(e,t){this.maxAttemptsProvider=e,this.mode=ql.ADAPTIVE;const{rateLimiter:n}=t??{};this.rateLimiter=n??new Yl,this.standardRetryStrategy=new th(e)}async acquireInitialRetryToken(e){return await this.rateLimiter.getSendToken(),this.standardRetryStrategy.acquireInitialRetryToken(e)}async refreshRetryTokenForRetry(e,t){return this.rateLimiter.updateClientSendingRate(t),this.standardRetryStrategy.refreshRetryTokenForRetry(e,t)}recordSuccess(e){this.rateLimiter.updateClientSendingRate({}),this.standardRetryStrategy.recordSuccess(e)}}const rh={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};let ih;const oh=new Uint8Array(16);function sh(){if(!ih&&(ih="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!ih))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return ih(oh)}const ah=[];for(let e=0;e<256;++e)ah.push((e+256).toString(16).slice(1));function uh(e,t=0){return ah[e[t+0]]+ah[e[t+1]]+ah[e[t+2]]+ah[e[t+3]]+"-"+ah[e[t+4]]+ah[e[t+5]]+"-"+ah[e[t+6]]+ah[e[t+7]]+"-"+ah[e[t+8]]+ah[e[t+9]]+"-"+ah[e[t+10]]+ah[e[t+11]]+ah[e[t+12]]+ah[e[t+13]]+ah[e[t+14]]+ah[e[t+15]]}const ch=function(e,t,n){if(rh.randomUUID&&!t&&!e)return rh.randomUUID();const r=(e=e||{}).random||(e.rng||sh)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=r[e];return t}return uh(r)},dh=e=>e instanceof Error?e:e instanceof Object?Object.assign(new Error,e):"string"==typeof e?new Error(e):new Error(`AWS SDK error wrapper for ${e}`);const lh=e=>e?.body instanceof ReadableStream,hh=e=>void 0!==e.acquireInitialRetryToken&&void 0!==e.refreshRetryTokenForRetry&&void 0!==e.recordSuccess,fh=e=>{const t={error:e,errorType:ph(e)},n=yh(e.$response);return n&&(t.retryAfterHint=n),t},ph=e=>Gl(e)?"THROTTLING":Vl(e)?"TRANSIENT":(e=>{if(void 0!==e.$metadata?.httpStatusCode){const t=e.$metadata.httpStatusCode;return 500<=t&&t<=599&&!Vl(e)}return!1})(e)?"SERVER_ERROR":"CLIENT_ERROR",mh={name:"retryMiddleware",tags:["RETRY"],step:"finalizeRequest",priority:"high",override:!0},gh=e=>({applyToStack:t=>{t.add((e=>(t,n)=>async r=>{let i=await e.retryStrategy();const o=await e.maxAttempts();if(!hh(i))return i?.mode&&(n.userAgent=[...n.userAgent||[],["cfg/retry-mode",i.mode]]),i.retry(t,r);{let e=await i.acquireInitialRetryToken(n.partition_id),s=new Error,a=0,u=0;const{request:c}=r,d=Sa.isInstance(c);for(d&&(c.headers[Xl]=ch());;)try{d&&(c.headers[Ql]=`attempt=${a+1}; max=${o}`);const{response:n,output:s}=await t(r);return i.recordSuccess(e),s.$metadata.attempts=a+1,s.$metadata.totalRetryDelay=u,{response:n,output:s}}catch(t){const r=fh(t);if(s=dh(t),d&&lh(c))throw(n.logger instanceof ja?console:n.logger)?.warn("An error was encountered in a non-retryable streaming request."),s;try{e=await i.refreshRetryTokenForRetry(e,r)}catch(e){throw s.$metadata||(s.$metadata={}),s.$metadata.attempts=a+1,s.$metadata.totalRetryDelay=u,s}a=e.getRetryCount();const o=e.getRetryDelay();u+=o,await new Promise((e=>setTimeout(e,o)))}}})(e),mh)}}),yh=e=>{if(!Ca.isInstance(e))return;const t=Object.keys(e.headers).find((e=>"retry-after"===e.toLowerCase()));if(!t)return;const n=e.headers[t],r=Number(n);if(!Number.isNaN(r))return new Date(1e3*r);return new Date(n)},vh={ForcePathStyle:{type:"clientContextParams",name:"forcePathStyle"},UseArnRegion:{type:"clientContextParams",name:"useArnRegion"},DisableMultiRegionAccessPoints:{type:"clientContextParams",name:"disableMultiregionAccessPoints"},Accelerate:{type:"clientContextParams",name:"useAccelerateEndpoint"},DisableS3ExpressSessionAuth:{type:"clientContextParams",name:"disableS3ExpressSessionAuth"},UseGlobalEndpoint:{type:"builtInParams",name:"useGlobalEndpoint"},UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}};class bh extends ac{constructor(e){super(e),Object.setPrototypeOf(this,bh.prototype)}}class wh extends bh{constructor(e){super({name:"NoSuchUpload",$fault:"client",...e}),this.name="NoSuchUpload",this.$fault="client",Object.setPrototypeOf(this,wh.prototype)}}class _h extends bh{constructor(e){super({name:"ObjectNotInActiveTierError",$fault:"client",...e}),this.name="ObjectNotInActiveTierError",this.$fault="client",Object.setPrototypeOf(this,_h.prototype)}}class xh extends bh{constructor(e){super({name:"BucketAlreadyExists",$fault:"client",...e}),this.name="BucketAlreadyExists",this.$fault="client",Object.setPrototypeOf(this,xh.prototype)}}class Dh extends bh{constructor(e){super({name:"BucketAlreadyOwnedByYou",$fault:"client",...e}),this.name="BucketAlreadyOwnedByYou",this.$fault="client",Object.setPrototypeOf(this,Dh.prototype)}}class Eh extends bh{constructor(e){super({name:"NoSuchBucket",$fault:"client",...e}),this.name="NoSuchBucket",this.$fault="client",Object.setPrototypeOf(this,Eh.prototype)}}var Mh;!function(e){e.visit=(e,t)=>void 0!==e.Prefix?t.Prefix(e.Prefix):void 0!==e.Tag?t.Tag(e.Tag):void 0!==e.And?t.And(e.And):t._(e.$unknown[0],e.$unknown[1])}(Mh||(Mh={}));var Ah;!function(e){e.visit=(e,t)=>void 0!==e.Prefix?t.Prefix(e.Prefix):void 0!==e.Tag?t.Tag(e.Tag):void 0!==e.ObjectSizeGreaterThan?t.ObjectSizeGreaterThan(e.ObjectSizeGreaterThan):void 0!==e.ObjectSizeLessThan?t.ObjectSizeLessThan(e.ObjectSizeLessThan):void 0!==e.And?t.And(e.And):t._(e.$unknown[0],e.$unknown[1])}(Ah||(Ah={}));var Sh;!function(e){e.visit=(e,t)=>void 0!==e.Prefix?t.Prefix(e.Prefix):void 0!==e.Tag?t.Tag(e.Tag):void 0!==e.AccessPointArn?t.AccessPointArn(e.AccessPointArn):void 0!==e.And?t.And(e.And):t._(e.$unknown[0],e.$unknown[1])}(Sh||(Sh={}));var Ch;!function(e){e.visit=(e,t)=>void 0!==e.Prefix?t.Prefix(e.Prefix):void 0!==e.Tag?t.Tag(e.Tag):void 0!==e.And?t.And(e.And):t._(e.$unknown[0],e.$unknown[1])}(Ch||(Ch={}));class kh extends bh{constructor(e){super({name:"InvalidObjectState",$fault:"client",...e}),this.name="InvalidObjectState",this.$fault="client",Object.setPrototypeOf(this,kh.prototype),this.StorageClass=e.StorageClass,this.AccessTier=e.AccessTier}}class Th extends bh{constructor(e){super({name:"NoSuchKey",$fault:"client",...e}),this.name="NoSuchKey",this.$fault="client",Object.setPrototypeOf(this,Th.prototype)}}class Ih extends bh{constructor(e){super({name:"NotFound",$fault:"client",...e}),this.name="NotFound",this.$fault="client",Object.setPrototypeOf(this,Ih.prototype)}}const Rh=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:wu}}),Fh=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:wu}}),Oh=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:wu},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:wu}}),Bh=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:wu},...e.SSEKMSKeyId&&{SSEKMSKeyId:wu},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:wu}}),Ph=e=>({...e,...e.SecretAccessKey&&{SecretAccessKey:wu},...e.SessionToken&&{SessionToken:wu}}),Nh=e=>({...e,...e.Credentials&&{Credentials:Ph(e.Credentials)}}),jh=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:wu}}),Lh=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:wu}}),Uh=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:wu}}),qh=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:wu}});var $h=n(86454);const zh=(e,t)=>((e,t)=>yu(e,t).then((e=>t.utf8Encoder(e))))(e,t).then((e=>{if(e.length){const t=new $h.XMLParser({attributeNamePrefix:"",htmlEntities:!0,ignoreAttributes:!1,ignoreDeclaration:!0,parseTagValue:!1,trimValues:!1,tagValueProcessor:(e,t)=>""===t.trim()&&t.includes("\n")?"":void 0});let n;t.addEntity("#xD","\r"),t.addEntity("#10","\n");try{n=t.parse(e,!0)}catch(t){throw t&&"object"==typeof t&&Object.defineProperty(t,"$responseBodyText",{value:e}),t}const r="#text",i=Object.keys(n)[0],o=n[i];return o[r]&&(o[i]=o[r],delete o[r]),vc(o)}return{}})),Hh=async(e,t)=>{const n=await zh(e,t);return n.Error&&(n.Error.message=n.Error.message??n.Error.Message),n};class Kh{constructor(e){this.value=e}toString(){return(""+this.value).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">").replace(/\r/g," ").replace(/\n/g," ").replace(/\u0085/g,"…").replace(/\u2028/,"
")}}class Wh{static of(e,t,n){const r=new Wh(e);return void 0!==t&&r.addChildNode(new Kh(t)),void 0!==n&&r.withName(n),r}constructor(e,t=[]){this.name=e,this.children=t,this.attributes={}}withName(e){return this.name=e,this}addAttribute(e,t){return this.attributes[e]=t,this}addChildNode(e){return this.children.push(e),this}removeAttribute(e){return delete this.attributes[e],this}n(e){return this.name=e,this}c(e){return this.children.push(e),this}a(e,t){return null!=t&&(this.attributes[e]=t),this}cc(e,t,n=t){if(null!=e[t]){const r=Wh.of(t,e[t]).withName(n);this.c(r)}}l(e,t,n,r){if(null!=e[t]){r().map((e=>{e.withName(n),this.c(e)}))}}lc(e,t,n,r){if(null!=e[t]){const e=r(),t=new Wh(n);e.map((e=>{t.c(e)})),this.c(t)}}toString(){const e=Boolean(this.children.length);let t=`<${this.name}`;const n=this.attributes;for(const e of Object.keys(n)){const i=n[e];null!=i&&(t+=` ${e}="${r=""+i,r.replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}"`)}var r;return t+(e?`>${this.children.map((e=>e.toString())).join("")}`:"/>")}}Gh=3e5;var Gh;const Vh=e=>void 0!==e.expiration;function Yh(e,t){return new Zh(e,t)}class Zh{constructor(e,t){this.input=e,this.context=t,this.query={},this.method="",this.headers={},this.path="",this.body=null,this.hostname="",this.resolvePathStack=[]}async build(){const{hostname:e,protocol:t="https",port:n,path:r}=await this.context.endpoint();this.path=r;for(const e of this.resolvePathStack)e(this.path);return new Sa({protocol:t,hostname:this.hostname||e,port:n,method:this.method,path:this.path,query:this.query,body:this.body,headers:this.headers})}hn(e){return this.hostname=e,this}bp(e){return this.resolvePathStack.push((t=>{this.path=`${t?.endsWith("/")?t.slice(0,-1):t||""}`+e})),this}p(e,t,n,r){return this.resolvePathStack.push((i=>{this.path=((e,t,n,r,i,o)=>{if(null==t||void 0===t[n])throw new Error("No value provided for input HTTP label: "+n+".");{const t=r();if(t.length<=0)throw new Error("Empty value provided for input HTTP label: "+n+".");e=e.replace(i,o?t.split("/").map((e=>gc(e))).join("/"):gc(t))}return e})(i,this.input,e,t,n,r)})),this}h(e){return this.headers=e,this}q(e){return this.query=e,this}b(e){return this.body=e,this}m(e){return this.method=e,this}}class Jh extends bh{constructor(e){super({name:"ObjectAlreadyInActiveTierError",$fault:"client",...e}),this.name="ObjectAlreadyInActiveTierError",this.$fault="client",Object.setPrototypeOf(this,Jh.prototype)}}var Xh;!function(e){e.visit=(e,t)=>void 0!==e.Records?t.Records(e.Records):void 0!==e.Stats?t.Stats(e.Stats):void 0!==e.Progress?t.Progress(e.Progress):void 0!==e.Cont?t.Cont(e.Cont):void 0!==e.End?t.End(e.End):t._(e.$unknown[0],e.$unknown[1])}(Xh||(Xh={}));const Qh=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:wu},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:wu}}),ef=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:wu},...e.SSEKMSKeyId&&{SSEKMSKeyId:wu},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:wu}}),tf=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:wu}}),nf=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:wu}}),rf=async(e,t)=>{const n=Yh(e,t),r=wc({},Vf,{"content-type":"application/xml",[Pg]:e[up],[Ng]:e[cp],[Lg]:e[wp],[Ug]:e[_p],[iy]:e[wm],[Hg]:e[kp],[hy]:e[km],[fy]:e[Tm],[py]:e[Im]});n.bp("/{Key+}"),n.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),n.p("Key",(()=>e.Key),"{Key+}",!0);const i=wc({[by]:[,"CompleteMultipartUpload"],[Sg]:[,Iu(e[Um],"UploadId")]});let o,s;return void 0!==e.MultipartUpload&&(s=Pf(e.MultipartUpload,t),s=s.n("CompleteMultipartUpload"),o=kg,s.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/"),o+=s.toString()),n.m("POST").h(r).q(i).b(o),n.build()},of=async(e,t)=>{const n=Yh(e,t),r=wc({},Vf,{[Tg]:e[Yf],[Km]:e[ap],[Wm]:e[dp],[Gm]:e[lp],[Vm]:e[hp],[Xm]:e[xp],[tg]:[()=>Vf(e[Cp]),()=>zu(e[Cp]).toString()],[Kg]:e[Bp],[Wg]:e[Pp],[Gg]:e[Np],[Vg]:e[jp],[uy]:e[Cm],[sy]:e[Am],[vy]:e[zm],[hy]:e[km],[fy]:e[Tm],[py]:e[Im],[cy]:e[Fm],[ly]:e[Rm],[dy]:[()=>Vf(e[ip]),()=>e[ip].toString()],[iy]:e[wm],[my]:e[Pm],[Qg]:e[im],[ey]:[()=>Vf(e[om]),()=>(e[om].toISOString().split(".")[0]+"Z").toString()],[Xg]:e[rm],[Hg]:e[kp],[Bg]:e[sp],...void 0!==e.Metadata&&Object.keys(e.Metadata).reduce(((t,n)=>(t[`x-amz-meta-${n.toLowerCase()}`]=e.Metadata[n],t)),{})});n.bp("/{Key+}"),n.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),n.p("Key",(()=>e.Key),"{Key+}",!0);const i=wc({[Ag]:[,""],[by]:[,"CreateMultipartUpload"]});return n.m("POST").h(r).q(i).b(undefined),n.build()},sf=async(e,t)=>{const n=Yh(e,t),r=wc({},Vf,{[qg]:e[Sm]});n.bp("/"),n.p("Bucket",(()=>e.Bucket),"{Bucket}",!1);const i=wc({[Dg]:[,""]});return n.m("GET").h(r).q(i).b(undefined),n.build()},af=async(e,t)=>{const n=Yh(e,t),r=wc({},Vf,{[Yg]:e[Zp],[iy]:e[wm],[Og]:[()=>Vf(e[rp]),()=>e[rp].toString()],[Hg]:e[kp]});n.bp("/{Key+}"),n.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),n.p("Key",(()=>e.Key),"{Key+}",!0);const i=wc({[by]:[,"DeleteObject"],[Cg]:[,e[qm]]});return n.m("DELETE").h(r).q(i).b(undefined),n.build()},uf=async(e,t)=>{const n=Yh(e,t),r=wc({},Vf,{[sg]:e[Up],[ag]:[()=>Vf(e[qp]),()=>zu(e[qp]).toString()],[ug]:e[$p],[cg]:[()=>Vf(e[Kp]),()=>zu(e[Kp]).toString()],[gg]:e[lm],[hy]:e[km],[fy]:e[Tm],[py]:e[Im],[iy]:e[wm],[Hg]:e[kp],[jg]:e[pp]});n.bp("/{Key+}"),n.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),n.p("Key",(()=>e.Key),"{Key+}",!0);const i=wc({[by]:[,"GetObject"],[yg]:[,e[fm]],[vg]:[,e[pm]],[bg]:[,e[mm]],[wg]:[,e[gm]],[_g]:[,e[ym]],[xg]:[()=>void 0!==e.ResponseExpires,()=>zu(e[vm]).toString()],[Cg]:[,e[qm]],[pg]:[()=>void 0!==e.PartNumber,()=>e[cm].toString()]});return n.m("GET").h(r).q(i).b(undefined),n.build()},cf=async(e,t)=>{const n=Yh(e,t),r=wc({},Vf,{[sg]:e[Up],[ag]:[()=>Vf(e[qp]),()=>zu(e[qp]).toString()],[ug]:e[$p],[cg]:[()=>Vf(e[Kp]),()=>zu(e[Kp]).toString()],[gg]:e[lm],[hy]:e[km],[fy]:e[Tm],[py]:e[Im],[iy]:e[wm],[Hg]:e[kp],[jg]:e[pp]});n.bp("/{Key+}"),n.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),n.p("Key",(()=>e.Key),"{Key+}",!0);const i=wc({[Cg]:[,e[qm]],[pg]:[()=>void 0!==e.PartNumber,()=>e[cm].toString()]});return n.m("HEAD").h(r).q(i).b(undefined),n.build()},df=async(e,t)=>{const n=Yh(e,t),r=wc({},Vf,{[iy]:e[wm],[Hg]:e[kp],[ty]:[()=>Vf(e[sm]),()=>(e[sm]||[]).map((e=>e)).join(", ")]});n.bp("/"),n.p("Bucket",(()=>e.Bucket),"{Bucket}",!1);const i=wc({[lg]:[,"2"],[eg]:[,e[Mp]],[ng]:[,e[Ip]],[fg]:[()=>void 0!==e.MaxKeys,()=>e[Jp].toString()],[mg]:[,e[am]],[Qm]:[,e[Dp]],[og]:[()=>void 0!==e.FetchOwner,()=>e[Op].toString()],[Eg]:[,e[Em]]});return n.m("GET").h(r).q(i).b(undefined),n.build()},lf=async(e,t)=>{const n=Yh(e,t),r=wc({},Vf,{[Xm]:e[xp]||"application/octet-stream",[Tg]:e[Yf],[Km]:e[ap],[Wm]:e[dp],[Gm]:e[lp],[Vm]:e[hp],[Ym]:[()=>Vf(e[fp]),()=>e[fp].toString()],[Zm]:e[mp],[ay]:e[sp],[Pg]:e[up],[Ng]:e[cp],[Lg]:e[wp],[Ug]:e[_p],[tg]:[()=>Vf(e[Cp]),()=>zu(e[Cp]).toString()],[Kg]:e[Bp],[Wg]:e[Pp],[Gg]:e[Np],[Vg]:e[jp],[uy]:e[Cm],[sy]:e[Am],[vy]:e[zm],[hy]:e[km],[fy]:e[Tm],[py]:e[Im],[cy]:e[Fm],[ly]:e[Rm],[dy]:[()=>Vf(e[ip]),()=>e[ip].toString()],[iy]:e[wm],[my]:e[Pm],[Qg]:e[im],[ey]:[()=>Vf(e[om]),()=>(e[om].toISOString().split(".")[0]+"Z").toString()],[Xg]:e[rm],[Hg]:e[kp],...void 0!==e.Metadata&&Object.keys(e.Metadata).reduce(((t,n)=>(t[`x-amz-meta-${n.toLowerCase()}`]=e.Metadata[n],t)),{})});n.bp("/{Key+}"),n.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),n.p("Key",(()=>e.Key),"{Key+}",!0);const i=wc({[by]:[,"PutObject"]});let o,s;return void 0!==e.Body&&(s=e.Body,o=s),n.m("PUT").h(r).q(i).b(o),n.build()},hf=async(e,t)=>{const n=Yh(e,t),r=wc({},Vf,{"content-type":"application/xml",[Zm]:e[mp],[ay]:e[sp],[Hg]:e[kp],[iy]:e[wm]});n.bp("/{Key+}"),n.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),n.p("Key",(()=>e.Key),"{Key+}",!0);const i=wc({[Mg]:[,""],[Cg]:[,e[qm]]});let o,s;return void 0!==e.Tagging&&(s=Lf(e.Tagging,t),o=kg,s.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/"),o+=s.toString()),n.m("PUT").h(r).q(i).b(o),n.build()},ff=async(e,t)=>{const n=Yh(e,t),r=wc({},Vf,{"content-type":"application/octet-stream",[Ym]:[()=>Vf(e[fp]),()=>e[fp].toString()],[Zm]:e[mp],[ay]:e[sp],[Pg]:e[up],[Ng]:e[cp],[Lg]:e[wp],[Ug]:e[_p],[hy]:e[km],[fy]:e[Tm],[py]:e[Im],[iy]:e[wm],[Hg]:e[kp]});n.bp("/{Key+}"),n.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),n.p("Key",(()=>e.Key),"{Key+}",!0);const i=wc({[by]:[,"UploadPart"],[pg]:[null!=Iu(e.PartNumber,"PartNumber"),()=>e[cm].toString()],[Sg]:[,Iu(e[Um],"UploadId")]});let o,s;return void 0!==e.Body&&(s=e.Body,o=s),n.m("PUT").h(r).q(i).b(o),n.build()},pf=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return Ef(e,t);const n=wc({$metadata:Gf(e),[Fp]:[,e.headers[zg]],[Cm]:[,e.headers[uy]],[qm]:[,e.headers[yy]],[Fm]:[,e.headers[cy]],[ip]:[()=>void 0!==e.headers[dy],()=>_u(e.headers[dy])],[hm]:[,e.headers[ry]]}),r=Iu(Ru(await zh(e.body,t)),"body");return null!=r[np]&&(n[np]=Fu(r[np])),null!=r[up]&&(n[up]=Fu(r[up])),null!=r[cp]&&(n[cp]=Fu(r[cp])),null!=r[wp]&&(n[wp]=Fu(r[wp])),null!=r[_p]&&(n[_p]=Fu(r[_p])),null!=r[Rp]&&(n[Rp]=Fu(r[Rp])),null!=r[Wp]&&(n[Wp]=Fu(r[Wp])),null!=r[Vp]&&(n[Vp]=Fu(r[Vp])),n},mf=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return Ef(e,t);const n=wc({$metadata:Gf(e),[Zf]:[()=>void 0!==e.headers[Ig],()=>Iu(Yu(e.headers[Ig]))],[Qf]:[,e.headers[Rg]],[Cm]:[,e.headers[uy]],[km]:[,e.headers[hy]],[Im]:[,e.headers[py]],[Fm]:[,e.headers[cy]],[Rm]:[,e.headers[ly]],[ip]:[()=>void 0!==e.headers[dy],()=>_u(e.headers[dy])],[hm]:[,e.headers[ry]],[sp]:[,e.headers[Bg]]}),r=Iu(Ru(await zh(e.body,t)),"body");return null!=r[np]&&(n[np]=Fu(r[np])),null!=r[Wp]&&(n[Wp]=Fu(r[Wp])),null!=r[Um]&&(n[Um]=Fu(r[Um])),n},gf=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return Ef(e,t);const n=wc({$metadata:Gf(e)}),r=Iu(Ru(await zh(e.body,t)),"body");return null!=r[op]&&(n[op]=Wf(r[op],t)),n},yf=async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return Ef(e,t);const n=wc({$metadata:Gf(e),[Ap]:[()=>void 0!==e.headers[$g],()=>_u(e.headers[$g])],[qm]:[,e.headers[yy]],[hm]:[,e.headers[ry]]});return await yu(e.body,t),n},vf=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return Ef(e,t);const n=wc({$metadata:Gf(e),[Ap]:[()=>void 0!==e.headers[$g],()=>_u(e.headers[$g])],[Xf]:[,e.headers[Hm]],[Fp]:[,e.headers[zg]],[Dm]:[,e.headers[ny]],[Yp]:[()=>void 0!==e.headers[dg],()=>Iu(Yu(e.headers[dg]))],[fp]:[()=>void 0!==e.headers[Ym],()=>Pu(e.headers[Ym])],[Rp]:[,e.headers[rg]],[up]:[,e.headers[Pg]],[cp]:[,e.headers[Ng]],[wp]:[,e.headers[Lg]],[_p]:[,e.headers[Ug]],[Xp]:[()=>void 0!==e.headers[Zg],()=>Nu(e.headers[Zg])],[qm]:[,e.headers[yy]],[ap]:[,e.headers[Km]],[dp]:[,e.headers[Wm]],[lp]:[,e.headers[Gm]],[hp]:[,e.headers[Vm]],[bp]:[,e.headers[Jm]],[xp]:[,e.headers[Xm]],[Cp]:[()=>void 0!==e.headers[tg],()=>Iu(Yu(e.headers[tg]))],[Tp]:[,e.headers[ig]],[zm]:[,e.headers[vy]],[Cm]:[,e.headers[uy]],[km]:[,e.headers[hy]],[Im]:[,e.headers[py]],[Fm]:[,e.headers[cy]],[ip]:[()=>void 0!==e.headers[dy],()=>_u(e.headers[dy])],[Am]:[,e.headers[sy]],[hm]:[,e.headers[ry]],[_m]:[,e.headers[oy]],[um]:[()=>void 0!==e.headers[Jg],()=>Nu(e.headers[Jg])],[Nm]:[()=>void 0!==e.headers[gy],()=>Nu(e.headers[gy])],[im]:[,e.headers[Qg]],[om]:[()=>void 0!==e.headers[ey],()=>Iu(Ku(e.headers[ey]))],[rm]:[,e.headers[Xg]],Metadata:[,Object.keys(e.headers).filter((e=>e.startsWith("x-amz-meta-"))).reduce(((t,n)=>(t[n.substring(11)]=e.headers[n],t)),{})]}),r=e.body;return t.sdkStreamMixin(r),n.Body=r,n},bf=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return Ef(e,t);const n=wc({$metadata:Gf(e),[Ap]:[()=>void 0!==e.headers[$g],()=>_u(e.headers[$g])],[Xf]:[,e.headers[Hm]],[Fp]:[,e.headers[zg]],[Dm]:[,e.headers[ny]],[ep]:[,e.headers[Fg]],[Yp]:[()=>void 0!==e.headers[dg],()=>Iu(Yu(e.headers[dg]))],[fp]:[()=>void 0!==e.headers[Ym],()=>Pu(e.headers[Ym])],[up]:[,e.headers[Pg]],[cp]:[,e.headers[Ng]],[wp]:[,e.headers[Lg]],[_p]:[,e.headers[Ug]],[Rp]:[,e.headers[rg]],[Xp]:[()=>void 0!==e.headers[Zg],()=>Nu(e.headers[Zg])],[qm]:[,e.headers[yy]],[ap]:[,e.headers[Km]],[dp]:[,e.headers[Wm]],[lp]:[,e.headers[Gm]],[hp]:[,e.headers[Vm]],[xp]:[,e.headers[Xm]],[Cp]:[()=>void 0!==e.headers[tg],()=>Iu(Yu(e.headers[tg]))],[Tp]:[,e.headers[ig]],[zm]:[,e.headers[vy]],[Cm]:[,e.headers[uy]],[km]:[,e.headers[hy]],[Im]:[,e.headers[py]],[Fm]:[,e.headers[cy]],[ip]:[()=>void 0!==e.headers[dy],()=>_u(e.headers[dy])],[Am]:[,e.headers[sy]],[hm]:[,e.headers[ry]],[_m]:[,e.headers[oy]],[um]:[()=>void 0!==e.headers[Jg],()=>Nu(e.headers[Jg])],[im]:[,e.headers[Qg]],[om]:[()=>void 0!==e.headers[ey],()=>Iu(Ku(e.headers[ey]))],[rm]:[,e.headers[Xg]],Metadata:[,Object.keys(e.headers).filter((e=>e.startsWith("x-amz-meta-"))).reduce(((t,n)=>(t[n.substring(11)]=e.headers[n],t)),{})]});return await yu(e.body,t),n},wf=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return Ef(e,t);const n=wc({$metadata:Gf(e),[hm]:[,e.headers[ry]]}),r=Iu(Ru(await zh(e.body,t)),"body");return""===r.CommonPrefixes?n[yp]=[]:null!=r[yp]&&(n[yp]=$f(yc(r[yp]),t)),""===r.Contents?n[Ep]=[]:null!=r[Ep]&&(n[Ep]=zf(yc(r[Ep]),t)),null!=r[Dp]&&(n[Dp]=Fu(r[Dp])),null!=r[Mp]&&(n[Mp]=Fu(r[Mp])),null!=r[Ip]&&(n[Ip]=Fu(r[Ip])),null!=r[Hp]&&(n[Hp]=_u(r[Hp])),null!=r[Gp]&&(n[Gp]=Nu(r[Gp])),null!=r[Jp]&&(n[Jp]=Nu(r[Jp])),null!=r[Qp]&&(n[Qp]=Fu(r[Qp])),null!=r[em]&&(n[em]=Fu(r[em])),null!=r[am]&&(n[am]=Fu(r[am])),null!=r[Em]&&(n[Em]=Fu(r[Em])),n},_f=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return Ef(e,t);const n=wc({$metadata:Gf(e),[Fp]:[,e.headers[zg]],[Rp]:[,e.headers[rg]],[up]:[,e.headers[Pg]],[cp]:[,e.headers[Ng]],[wp]:[,e.headers[Lg]],[_p]:[,e.headers[Ug]],[Cm]:[,e.headers[uy]],[qm]:[,e.headers[yy]],[km]:[,e.headers[hy]],[Im]:[,e.headers[py]],[Fm]:[,e.headers[cy]],[Rm]:[,e.headers[ly]],[ip]:[()=>void 0!==e.headers[dy],()=>_u(e.headers[dy])],[hm]:[,e.headers[ry]]});return await yu(e.body,t),n},xf=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return Ef(e,t);const n=wc({$metadata:Gf(e),[qm]:[,e.headers[yy]]});return await yu(e.body,t),n},Df=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return Ef(e,t);const n=wc({$metadata:Gf(e),[Cm]:[,e.headers[uy]],[Rp]:[,e.headers[rg]],[up]:[,e.headers[Pg]],[cp]:[,e.headers[Ng]],[wp]:[,e.headers[Lg]],[_p]:[,e.headers[Ug]],[km]:[,e.headers[hy]],[Im]:[,e.headers[py]],[Fm]:[,e.headers[cy]],[ip]:[()=>void 0!==e.headers[dy],()=>_u(e.headers[dy])],[hm]:[,e.headers[ry]]});return await yu(e.body,t),n},Ef=async(e,t)=>{const n={...e,body:await Hh(e.body,t)},r=((e,t)=>void 0!==t?.Error?.Code?t.Error.Code:void 0!==t?.Code?t.Code:404==e.statusCode?"NotFound":void 0)(e,n.body);switch(r){case"NoSuchUpload":case"com.amazonaws.s3#NoSuchUpload":throw await Rf(n,t);case"ObjectNotInActiveTierError":case"com.amazonaws.s3#ObjectNotInActiveTierError":throw await Bf(n,t);case"BucketAlreadyExists":case"com.amazonaws.s3#BucketAlreadyExists":throw await Sf(n,t);case"BucketAlreadyOwnedByYou":case"com.amazonaws.s3#BucketAlreadyOwnedByYou":throw await Cf(n,t);case"NoSuchBucket":case"com.amazonaws.s3#NoSuchBucket":throw await Tf(n,t);case"InvalidObjectState":case"com.amazonaws.s3#InvalidObjectState":throw await kf(n,t);case"NoSuchKey":case"com.amazonaws.s3#NoSuchKey":throw await If(n,t);case"NotFound":case"com.amazonaws.s3#NotFound":throw await Ff(n,t);case"ObjectAlreadyInActiveTierError":case"com.amazonaws.s3#ObjectAlreadyInActiveTierError":throw await Of(n,t);default:const i=n.body;return Mf({output:e,parsedBody:i,errorCode:r})}},Mf=(Af=bh,({output:e,parsedBody:t,errorCode:n})=>{(({output:e,parsedBody:t,exceptionCtor:n,errorCode:r})=>{const i=cc(e),o=i.httpStatusCode?i.httpStatusCode+"":void 0,s=new n({name:t?.code||t?.Code||r||o||"UnknownError",$fault:"client",$metadata:i});throw uc(s,t)})({output:e,parsedBody:t,exceptionCtor:Af,errorCode:n})});var Af;const Sf=async(e,t)=>{const n=wc({}),r=(e.body,new xh({$metadata:Gf(e),...n}));return uc(r,e.body)},Cf=async(e,t)=>{const n=wc({}),r=(e.body,new Dh({$metadata:Gf(e),...n}));return uc(r,e.body)},kf=async(e,t)=>{const n=wc({}),r=e.body;null!=r[tp]&&(n[tp]=Fu(r[tp])),null!=r[Am]&&(n[Am]=Fu(r[Am]));const i=new kh({$metadata:Gf(e),...n});return uc(i,e.body)},Tf=async(e,t)=>{const n=wc({}),r=(e.body,new Eh({$metadata:Gf(e),...n}));return uc(r,e.body)},If=async(e,t)=>{const n=wc({}),r=(e.body,new Th({$metadata:Gf(e),...n}));return uc(r,e.body)},Rf=async(e,t)=>{const n=wc({}),r=(e.body,new wh({$metadata:Gf(e),...n}));return uc(r,e.body)},Ff=async(e,t)=>{const n=wc({}),r=(e.body,new Ih({$metadata:Gf(e),...n}));return uc(r,e.body)},Of=async(e,t)=>{const n=wc({}),r=(e.body,new Jh({$metadata:Gf(e),...n}));return uc(r,e.body)},Bf=async(e,t)=>{const n=wc({}),r=(e.body,new _h({$metadata:Gf(e),...n}));return uc(r,e.body)},Pf=(e,t)=>{const n=new Wh(gp);return n.l(e,"Parts","Part",(()=>Nf(e[dm],t))),n},Nf=(e,t)=>e.filter((e=>null!=e)).map((e=>{const t=((e,t)=>{const n=new Wh(vp);return n.cc(e,Rp),n.cc(e,up),n.cc(e,cp),n.cc(e,wp),n.cc(e,_p),null!=e[cm]&&n.c(Wh.of(cm,String(e[cm])).n(cm)),n})(e);return t.n(hg)})),jf=(e,t)=>{const n=new Wh(Lm);return null!=e[Wp]&&n.c(Wh.of(nm,e[Wp]).n(Wp)),n.cc(e,$m),n},Lf=(e,t)=>{const n=new Wh(Pm);return n.lc(e,"TagSet","TagSet",(()=>Uf(e[jm],t))),n},Uf=(e,t)=>e.filter((e=>null!=e)).map((e=>jf(e,t).n(Lm))),qf=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>Fu(e))),$f=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>((e,t)=>{const n={};return null!=e[am]&&(n[am]=Fu(e[am])),n})(e))),zf=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>((e,t)=>{const n={};return null!=e[Wp]&&(n[Wp]=Fu(e[Wp])),null!=e[Yp]&&(n[Yp]=Iu(Ku(e[Yp]))),null!=e[Rp]&&(n[Rp]=Fu(e[Rp])),""===e.ChecksumAlgorithm?n[sp]=[]:null!=e[sp]&&(n[sp]=qf(yc(e[sp]))),null!=e[Bm]&&(n[Bm]=Pu(e[Bm])),null!=e[Am]&&(n[Am]=Fu(e[Am])),null!=e[tm]&&(n[tm]=Hf(e[tm],t)),null!=e[xm]&&(n[xm]=Kf(e[xm],t)),n})(e,t))),Hf=(e,t)=>{const n={};return null!=e[Sp]&&(n[Sp]=Fu(e[Sp])),null!=e[Lp]&&(n[Lp]=Fu(e[Lp])),n},Kf=(e,t)=>{const n={};return null!=e[zp]&&(n[zp]=_u(e[zp])),null!=e[bm]&&(n[bm]=Iu(Ku(e[bm]))),n},Wf=(e,t)=>{const n={};return null!=e[Jf]&&(n[Jf]=Fu(e[Jf])),null!=e[Mm]&&(n[Mm]=Fu(e[Mm])),null!=e[Om]&&(n[Om]=Fu(e[Om])),null!=e[Fp]&&(n[Fp]=Iu(Ku(e[Fp]))),n},Gf=e=>({httpStatusCode:e.statusCode,requestId:e.headers["x-amzn-requestid"]??e.headers["x-amzn-request-id"]??e.headers["x-amz-request-id"],extendedRequestId:e.headers["x-amz-id-2"],cfId:e.headers["x-amz-cf-id"]}),Vf=e=>!(null==e||""===e||Object.getOwnPropertyNames(e).includes("length")&&0==e.length||Object.getOwnPropertyNames(e).includes("size")&&0==e.size),Yf="ACL",Zf="AbortDate",Jf="AccessKeyId",Xf="AcceptRanges",Qf="AbortRuleId",ep="ArchiveStatus",tp="AccessTier",np="Bucket",rp="BypassGovernanceRetention",ip="BucketKeyEnabled",op="Credentials",sp="ChecksumAlgorithm",ap="CacheControl",up="ChecksumCRC32",cp="ChecksumCRC32C",dp="ContentDisposition",lp="ContentEncoding",hp="ContentLanguage",fp="ContentLength",pp="ChecksumMode",mp="ContentMD5",gp="CompletedMultipartUpload",yp="CommonPrefixes",vp="CompletedPart",bp="ContentRange",wp="ChecksumSHA1",_p="ChecksumSHA256",xp="ContentType",Dp="ContinuationToken",Ep="Contents",Mp="Delimiter",Ap="DeleteMarker",Sp="DisplayName",Cp="Expires",kp="ExpectedBucketOwner",Tp="ExpiresString",Ip="EncodingType",Rp="ETag",Fp="Expiration",Op="FetchOwner",Bp="GrantFullControl",Pp="GrantRead",Np="GrantReadACP",jp="GrantWriteACP",Lp="ID",Up="IfMatch",qp="IfModifiedSince",$p="IfNoneMatch",zp="IsRestoreInProgress",Hp="IsTruncated",Kp="IfUnmodifiedSince",Wp="Key",Gp="KeyCount",Vp="Location",Yp="LastModified",Zp="MFA",Jp="MaxKeys",Xp="MissingMeta",Qp="Name",em="NextContinuationToken",tm="Owner",nm="ObjectKey",rm="ObjectLockLegalHoldStatus",im="ObjectLockMode",om="ObjectLockRetainUntilDate",sm="OptionalObjectAttributes",am="Prefix",um="PartsCount",cm="PartNumber",dm="Parts",lm="Range",hm="RequestCharged",fm="ResponseCacheControl",pm="ResponseContentDisposition",mm="ResponseContentEncoding",gm="ResponseContentLanguage",ym="ResponseContentType",vm="ResponseExpires",bm="RestoreExpiryDate",wm="RequestPayer",_m="ReplicationStatus",xm="RestoreStatus",Dm="Restore",Em="StartAfter",Mm="SecretAccessKey",Am="StorageClass",Sm="SessionMode",Cm="ServerSideEncryption",km="SSECustomerAlgorithm",Tm="SSECustomerKey",Im="SSECustomerKeyMD5",Rm="SSEKMSEncryptionContext",Fm="SSEKMSKeyId",Om="SessionToken",Bm="Size",Pm="Tagging",Nm="TagCount",jm="TagSet",Lm="Tag",Um="UploadId",qm="VersionId",$m="Value",zm="WebsiteRedirectLocation",Hm="accept-ranges",Km="cache-control",Wm="content-disposition",Gm="content-encoding",Vm="content-language",Ym="content-length",Zm="content-md5",Jm="content-range",Xm="content-type",Qm="continuation-token",eg="delimiter",tg="expires",ng="encoding-type",rg="etag",ig="expiresstring",og="fetch-owner",sg="if-match",ag="if-modified-since",ug="if-none-match",cg="if-unmodified-since",dg="last-modified",lg="list-type",hg="member",fg="max-keys",pg="partNumber",mg="prefix",gg="range",yg="response-cache-control",vg="response-content-disposition",bg="response-content-encoding",wg="response-content-language",_g="response-content-type",xg="response-expires",Dg="session",Eg="start-after",Mg="tagging",Ag="uploads",Sg="uploadId",Cg="versionId",kg='',Tg="x-amz-acl",Ig="x-amz-abort-date",Rg="x-amz-abort-rule-id",Fg="x-amz-archive-status",Og="x-amz-bypass-governance-retention",Bg="x-amz-checksum-algorithm",Pg="x-amz-checksum-crc32",Ng="x-amz-checksum-crc32c",jg="x-amz-checksum-mode",Lg="x-amz-checksum-sha1",Ug="x-amz-checksum-sha256",qg="x-amz-create-session-mode",$g="x-amz-delete-marker",zg="x-amz-expiration",Hg="x-amz-expected-bucket-owner",Kg="x-amz-grant-full-control",Wg="x-amz-grant-read",Gg="x-amz-grant-read-acp",Vg="x-amz-grant-write-acp",Yg="x-amz-mfa",Zg="x-amz-missing-meta",Jg="x-amz-mp-parts-count",Xg="x-amz-object-lock-legal-hold",Qg="x-amz-object-lock-mode",ey="x-amz-object-lock-retain-until-date",ty="x-amz-optional-object-attributes",ny="x-amz-restore",ry="x-amz-request-charged",iy="x-amz-request-payer",oy="x-amz-replication-status",sy="x-amz-storage-class",ay="x-amz-sdk-checksum-algorithm",uy="x-amz-server-side-encryption",cy="x-amz-server-side-encryption-aws-kms-key-id",dy="x-amz-server-side-encryption-bucket-key-enabled",ly="x-amz-server-side-encryption-context",hy="x-amz-server-side-encryption-customer-algorithm",fy="x-amz-server-side-encryption-customer-key",py="x-amz-server-side-encryption-customer-key-md5",my="x-amz-tagging",gy="x-amz-tagging-count",yy="x-amz-version-id",vy="x-amz-website-redirect-location",by="x-id";class wy extends(vu.classBuilder().ep({...vh,DisableS3ExpressSessionAuth:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(e,t,n,r){return[jl(n,this.serialize,this.deserialize),Ul(n,e.getEndpointParameterInstructions())]})).s("AmazonS3","CreateSession",{}).n("S3Client","CreateSessionCommand").f(void 0,Nh).ser(sf).de(gf).build()){}const _y="3.569.0";var xy=n(91888),Dy=n(36634),Ey=n(46880),My=n.n(Ey);const Ay=({serviceId:e,clientVersion:t})=>async()=>{const n="undefined"!=typeof window&&window?.navigator?.userAgent?My().parse(window.navigator.userAgent):void 0,r=[["aws-sdk-js",t],["ua","2.0"],[`os/${n?.os?.name||"other"}`,n?.os?.version],["lang/js"],["md/browser",`${n?.browser?.name??"unknown"}_${n?.browser?.version??"unknown"}`]];return e&&r.push([`api/${e}`,t]),r};var Sy,Cy=n(53465);class ky{constructor(e){if(this.bytes=e,8!==e.byteLength)throw new Error("Int64 buffers must be exactly 8 bytes")}static fromNumber(e){if(e>0x8000000000000000||e<-0x8000000000000000)throw new Error(`${e} is too large (or, if negative, too small) to represent as an Int64`);const t=new Uint8Array(8);for(let n=7,r=Math.abs(Math.round(e));n>-1&&r>0;n--,r/=256)t[n]=r;return e<0&&Ty(t),new ky(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&Ty(e),parseInt(hu(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function Ty(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}class Iy{constructor(e,t){this.toUtf8=e,this.fromUtf8=t}format(e){const t=[];for(const n of Object.keys(e)){const r=this.fromUtf8(n);t.push(Uint8Array.from([r.byteLength]),r,this.formatHeaderValue(e[n]))}const n=new Uint8Array(t.reduce(((e,t)=>e+t.byteLength),0));let r=0;for(const e of t)n.set(e,r),r+=e.byteLength;return n}formatHeaderValue(e){switch(e.type){case"boolean":return Uint8Array.from([e.value?0:1]);case"byte":return Uint8Array.from([2,e.value]);case"short":const t=new DataView(new ArrayBuffer(3));return t.setUint8(0,3),t.setInt16(1,e.value,!1),new Uint8Array(t.buffer);case"integer":const n=new DataView(new ArrayBuffer(5));return n.setUint8(0,4),n.setInt32(1,e.value,!1),new Uint8Array(n.buffer);case"long":const r=new Uint8Array(9);return r[0]=5,r.set(e.value.bytes,1),r;case"binary":const i=new DataView(new ArrayBuffer(3+e.value.byteLength));i.setUint8(0,6),i.setUint16(1,e.value.byteLength,!1);const o=new Uint8Array(i.buffer);return o.set(e.value,3),o;case"string":const s=this.fromUtf8(e.value),a=new DataView(new ArrayBuffer(3+s.byteLength));a.setUint8(0,7),a.setUint16(1,s.byteLength,!1);const u=new Uint8Array(a.buffer);return u.set(s,3),u;case"timestamp":const c=new Uint8Array(9);return c[0]=8,c.set(ky.fromNumber(e.value.valueOf()).bytes,1),c;case"uuid":if(!qy.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(lu(e.value.replace(/\-/g,"")),1),d}}parse(e){const t={};let n=0;for(;ne,isEndOfStream:()=>t}}getAvailableMessages(){const e=this.messageBuffer;this.messageBuffer=[];const t=this.isEndOfStream;return{getMessages:()=>e,isEndOfStream:()=>t}}encode({headers:e,body:t}){const n=this.headerMarshaller.format(e),r=n.byteLength+t.byteLength+16,i=new Uint8Array(r),o=new DataView(i.buffer,i.byteOffset,i.byteLength),s=new Cy.Crc32;return o.setUint32(0,r,!1),o.setUint32(4,n.byteLength,!1),o.setUint32(8,s.update(i.subarray(0,8)).digest(),!1),i.set(n,12),i.set(t,n.byteLength+12),o.setUint32(r-4,s.update(i.subarray(8,r-4)).digest(),!1),i}decode(e){const{headers:t,body:n}=function({byteLength:e,byteOffset:t,buffer:n}){if(e<16)throw new Error("Provided message too short to accommodate event stream message overhead");const r=new DataView(n,t,e),i=r.getUint32(0,!1);if(e!==i)throw new Error("Reported message length does not match received message length");const o=r.getUint32(4,!1),s=r.getUint32(8,!1),a=r.getUint32(e-4,!1),u=(new Cy.Crc32).update(new Uint8Array(n,t,8));if(s!==u.digest())throw new Error(`The prelude checksum specified in the message (${s}) does not match the calculated CRC32 checksum (${u.digest()})`);if(u.update(new Uint8Array(n,t+8,e-12)),a!==u.digest())throw new Error(`The message checksum (${u.digest()}) did not match the expected value of ${a}`);return{headers:new DataView(n,t+8+4,o),body:new Uint8Array(n,t+8+4+o,i-o-16)}}(e);return{headers:this.headerMarshaller.parse(t),body:n}}formatHeaders(e){return this.headerMarshaller.format(e)}}class zy{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.inputStream){const t=this.options.decoder.decode(e);yield t}}}class Hy{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.messageStream){const t=this.options.encoder.encode(e);yield t}this.options.includeEndFrame&&(yield new Uint8Array(0))}}class Ky{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.messageStream){const t=await this.options.deserializer(e);void 0!==t&&(yield t)}}}class Wy{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.inputStream){const t=this.options.serializer(e);yield t}}}function Gy(e,t){return async function(n){const{value:r}=n.headers[":message-type"];if("error"===r){const e=new Error(n.headers[":error-message"].value||"UnknownError");throw e.name=n.headers[":error-code"].value,e}if("exception"===r){const r=n.headers[":exception-type"].value,i={[r]:n},o=await e(i);if(o.$unknown){const e=new Error(t(n.body));throw e.name=r,e}throw o[r]}if("event"===r){const t={[n.headers[":event-type"].value]:n},r=await e(t);if(r.$unknown)return;return r}throw Error(`Unrecognizable event type: ${n.headers[":event-type"].value}`)}}class Vy{constructor({utf8Encoder:e,utf8Decoder:t}){this.eventStreamCodec=new $y(e,t),this.utfEncoder=e}deserialize(e,t){const n=function(e){let t=0,n=0,r=null,i=null;const o=e=>{if("number"!=typeof e)throw new Error("Attempted to allocate an event message where size was not a number: "+e);t=e,n=4,r=new Uint8Array(e),new DataView(r.buffer).setUint32(0,e,!1)};return{[Symbol.asyncIterator]:async function*(){const s=e[Symbol.asyncIterator]();for(;;){const{value:e,done:a}=await s.next();if(a){if(!t)return;if(t!==n)throw new Error("Truncated event message received.");return void(yield r)}const u=e.length;let c=0;for(;c{const t=e[Symbol.asyncIterator]();return new ReadableStream({async pull(e){const{done:n,value:r}=await t.next();if(n)return e.close();e.enqueue(r)}})})(n):n}}const Zy=e=>"function"==typeof ReadableStream&&e instanceof ReadableStream,Jy=e=>new Yy(e);const Xy=async function(e,t){const n=new e;return await function(e,t,n=1048576){return new Promise(((r,i)=>{const o=new FileReader;o.addEventListener("error",i),o.addEventListener("abort",i);const s=e.size;let a=0;function u(){a>=s?r():o.readAsArrayBuffer(e.slice(a,Math.min(s,a+n)))}o.addEventListener("load",(e=>{const n=e.target.result;t(new Uint8Array(n)),a+=n.byteLength,u()})),u()}))}(t,(e=>{n.update(e)})),n.digest()},Qy=64,ev=[1732584193,4023233417,2562383102,271733878];class tv{constructor(){this.reset()}update(e){if(function(e){if("string"==typeof e)return 0===e.length;return 0===e.byteLength}(e))return;if(this.finished)throw new Error("Attempted to update an already finished hash.");const t=function(e){if("string"==typeof e)return Ja(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT);return new Uint8Array(e)}(e);let n=0,{byteLength:r}=t;for(this.bytesHashed+=r;r>0;)this.buffer.setUint8(this.bufferLength++,t[n++]),r--,this.bufferLength===Qy&&(this.hashBuffer(),this.bufferLength=0)}async digest(){if(!this.finished){const{buffer:e,bufferLength:t,bytesHashed:n}=this,r=8*n;if(e.setUint8(this.bufferLength++,128),t%Qy>=56){for(let t=this.bufferLength;t>>0,!0),e.setUint32(60,Math.floor(r/4294967296),!0),this.hashBuffer(),this.finished=!0}const e=new DataView(new ArrayBuffer(16));for(let t=0;t<4;t++)e.setUint32(4*t,this.state[t],!0);return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}hashBuffer(){const{buffer:e,state:t}=this;let n=t[0],r=t[1],i=t[2],o=t[3];n=rv(n,r,i,o,e.getUint32(0,!0),7,3614090360),o=rv(o,n,r,i,e.getUint32(4,!0),12,3905402710),i=rv(i,o,n,r,e.getUint32(8,!0),17,606105819),r=rv(r,i,o,n,e.getUint32(12,!0),22,3250441966),n=rv(n,r,i,o,e.getUint32(16,!0),7,4118548399),o=rv(o,n,r,i,e.getUint32(20,!0),12,1200080426),i=rv(i,o,n,r,e.getUint32(24,!0),17,2821735955),r=rv(r,i,o,n,e.getUint32(28,!0),22,4249261313),n=rv(n,r,i,o,e.getUint32(32,!0),7,1770035416),o=rv(o,n,r,i,e.getUint32(36,!0),12,2336552879),i=rv(i,o,n,r,e.getUint32(40,!0),17,4294925233),r=rv(r,i,o,n,e.getUint32(44,!0),22,2304563134),n=rv(n,r,i,o,e.getUint32(48,!0),7,1804603682),o=rv(o,n,r,i,e.getUint32(52,!0),12,4254626195),i=rv(i,o,n,r,e.getUint32(56,!0),17,2792965006),r=rv(r,i,o,n,e.getUint32(60,!0),22,1236535329),n=iv(n,r,i,o,e.getUint32(4,!0),5,4129170786),o=iv(o,n,r,i,e.getUint32(24,!0),9,3225465664),i=iv(i,o,n,r,e.getUint32(44,!0),14,643717713),r=iv(r,i,o,n,e.getUint32(0,!0),20,3921069994),n=iv(n,r,i,o,e.getUint32(20,!0),5,3593408605),o=iv(o,n,r,i,e.getUint32(40,!0),9,38016083),i=iv(i,o,n,r,e.getUint32(60,!0),14,3634488961),r=iv(r,i,o,n,e.getUint32(16,!0),20,3889429448),n=iv(n,r,i,o,e.getUint32(36,!0),5,568446438),o=iv(o,n,r,i,e.getUint32(56,!0),9,3275163606),i=iv(i,o,n,r,e.getUint32(12,!0),14,4107603335),r=iv(r,i,o,n,e.getUint32(32,!0),20,1163531501),n=iv(n,r,i,o,e.getUint32(52,!0),5,2850285829),o=iv(o,n,r,i,e.getUint32(8,!0),9,4243563512),i=iv(i,o,n,r,e.getUint32(28,!0),14,1735328473),r=iv(r,i,o,n,e.getUint32(48,!0),20,2368359562),n=ov(n,r,i,o,e.getUint32(20,!0),4,4294588738),o=ov(o,n,r,i,e.getUint32(32,!0),11,2272392833),i=ov(i,o,n,r,e.getUint32(44,!0),16,1839030562),r=ov(r,i,o,n,e.getUint32(56,!0),23,4259657740),n=ov(n,r,i,o,e.getUint32(4,!0),4,2763975236),o=ov(o,n,r,i,e.getUint32(16,!0),11,1272893353),i=ov(i,o,n,r,e.getUint32(28,!0),16,4139469664),r=ov(r,i,o,n,e.getUint32(40,!0),23,3200236656),n=ov(n,r,i,o,e.getUint32(52,!0),4,681279174),o=ov(o,n,r,i,e.getUint32(0,!0),11,3936430074),i=ov(i,o,n,r,e.getUint32(12,!0),16,3572445317),r=ov(r,i,o,n,e.getUint32(24,!0),23,76029189),n=ov(n,r,i,o,e.getUint32(36,!0),4,3654602809),o=ov(o,n,r,i,e.getUint32(48,!0),11,3873151461),i=ov(i,o,n,r,e.getUint32(60,!0),16,530742520),r=ov(r,i,o,n,e.getUint32(8,!0),23,3299628645),n=sv(n,r,i,o,e.getUint32(0,!0),6,4096336452),o=sv(o,n,r,i,e.getUint32(28,!0),10,1126891415),i=sv(i,o,n,r,e.getUint32(56,!0),15,2878612391),r=sv(r,i,o,n,e.getUint32(20,!0),21,4237533241),n=sv(n,r,i,o,e.getUint32(48,!0),6,1700485571),o=sv(o,n,r,i,e.getUint32(12,!0),10,2399980690),i=sv(i,o,n,r,e.getUint32(40,!0),15,4293915773),r=sv(r,i,o,n,e.getUint32(4,!0),21,2240044497),n=sv(n,r,i,o,e.getUint32(32,!0),6,1873313359),o=sv(o,n,r,i,e.getUint32(60,!0),10,4264355552),i=sv(i,o,n,r,e.getUint32(24,!0),15,2734768916),r=sv(r,i,o,n,e.getUint32(52,!0),21,1309151649),n=sv(n,r,i,o,e.getUint32(16,!0),6,4149444226),o=sv(o,n,r,i,e.getUint32(44,!0),10,3174756917),i=sv(i,o,n,r,e.getUint32(8,!0),15,718787259),r=sv(r,i,o,n,e.getUint32(36,!0),21,3951481745),t[0]=n+t[0]&4294967295,t[1]=r+t[1]&4294967295,t[2]=i+t[2]&4294967295,t[3]=o+t[3]&4294967295}reset(){this.state=Uint32Array.from(ev),this.buffer=new DataView(new ArrayBuffer(Qy)),this.bufferLength=0,this.bytesHashed=0,this.finished=!1}}function nv(e,t,n,r,i,o){return((t=(t+e&4294967295)+(r+o&4294967295)&4294967295)<>>32-i)+n&4294967295}function rv(e,t,n,r,i,o,s){return nv(t&n|~t&r,e,t,i,o,s)}function iv(e,t,n,r,i,o,s){return nv(t&r|n&~r,e,t,i,o,s)}function ov(e,t,n,r,i,o,s){return nv(t^n^r,e,t,i,o,s)}function sv(e,t,n,r,i,o,s){return nv(n^(t|~r),e,t,i,o,s)}const av="function"==typeof TextEncoder?new TextEncoder:null,uv=e=>{if("string"==typeof e){if(av)return av.encode(e).byteLength;let t=e.length;for(let n=t-1;n>=0;n--){const r=e.charCodeAt(n);r>127&&r<=2047?t++:r>2047&&r<=65535&&(t+=2),r>=56320&&r<=57343&&n--}return t}if("number"==typeof e.byteLength)return e.byteLength;if("number"==typeof e.size)return e.size;throw new Error(`Body Length computation failed for ${e}`)},cv=null;class dv{constructor(e){this.sigv4Signer=new wd(e),this.signerOptions=e}async sign(e,t={}){if("*"===t.signingRegion){if("node"!==this.signerOptions.runtime)throw new Error("This request requires signing with SigV4Asymmetric algorithm. It's only available in Node.js");return this.getSigv4aSigner().sign(e,t)}return this.sigv4Signer.sign(e,t)}async signWithCredentials(e,t,n={}){if("*"===n.signingRegion){if("node"!==this.signerOptions.runtime)throw new Error("This request requires signing with SigV4Asymmetric algorithm. It's only available in Node.js");return this.getSigv4aSigner().signWithCredentials(e,t,n)}return this.sigv4Signer.signWithCredentials(e,t,n)}async presign(e,t={}){if("*"===t.signingRegion){if("node"!==this.signerOptions.runtime)throw new Error("This request requires signing with SigV4Asymmetric algorithm. It's only available in Node.js");return this.getSigv4aSigner().presign(e,t)}return this.sigv4Signer.presign(e,t)}async presignWithCredentials(e,t,n={}){if("*"===n.signingRegion)throw new Error("Method presignWithCredentials is not supported for [signingRegion=*].");return this.sigv4Signer.presignWithCredentials(e,t,n)}getSigv4aSigner(){if(!this.sigv4aSigner){let e=null;try{if(e=cv,"function"!=typeof e)throw new Error}catch(e){throw e.message=`${e.message}\nPlease check whether you have installed the "@aws-sdk/signature-v4-crt" package explicitly. \nYou must also register the package by calling [require("@aws-sdk/signature-v4-crt");] or an ESM equivalent such as [import "@aws-sdk/signature-v4-crt";]. \nFor more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`,e}this.sigv4aSigner=new e({...this.signerOptions,signingAlgorithm:1})}return this.sigv4aSigner}}const lv="required",hv="type",fv="conditions",pv="fn",mv="argv",gv="ref",yv="assign",vv="url",bv="properties",wv="backend",_v="authSchemes",xv="disableDoubleEncoding",Dv="signingName",Ev="signingRegion",Mv="headers",Av="signingRegionSet",Sv=!0,Cv="isSet",kv="booleanEquals",Tv="error",Iv="aws.partition",Rv="stringEquals",Fv="getAttr",Ov="name",Bv="substring",Pv="bucketSuffix",Nv="parseURL",jv="{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}",Lv="endpoint",Uv="tree",qv="aws.isVirtualHostableS3Bucket",$v="{url#scheme}://{Bucket}.{url#authority}{url#path}",zv="not",Hv="{url#scheme}://{url#authority}{url#path}",Kv="hardwareType",Wv="regionPrefix",Gv="bucketAliasSuffix",Vv="outpostId",Yv="isValidHostLabel",Zv="sigv4a",Jv="s3-outposts",Xv="s3",Qv="{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}",eb="https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}",tb="https://{Bucket}.s3.{partitionResult#dnsSuffix}",nb="aws.parseArn",rb="bucketArn",ib="arnType",ob="s3-object-lambda",sb="accesspoint",ab="accessPointName",ub="{url#scheme}://{accessPointName}-{bucketArn#accountId}.{url#authority}{url#path}",cb="mrapPartition",db="outpostType",lb="arnPrefix",hb="{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}",fb="https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",pb="https://s3.{partitionResult#dnsSuffix}",mb={[lv]:!1,[hv]:"String"},gb={[lv]:!0,default:!1,[hv]:"Boolean"},yb={[lv]:!1,[hv]:"Boolean"},vb={[pv]:kv,[mv]:[{[gv]:"Accelerate"},!0]},bb={[pv]:kv,[mv]:[{[gv]:"UseFIPS"},!0]},wb={[pv]:kv,[mv]:[{[gv]:"UseDualStack"},!0]},_b={[pv]:Cv,[mv]:[{[gv]:"Endpoint"}]},xb={[pv]:Iv,[mv]:[{[gv]:"Region"}],[yv]:"partitionResult"},Db={[pv]:Rv,[mv]:[{[pv]:Fv,[mv]:[{[gv]:"partitionResult"},Ov]},"aws-cn"]},Eb={[pv]:Cv,[mv]:[{[gv]:"Bucket"}]},Mb={[gv]:"Bucket"},Ab={[pv]:Nv,[mv]:[{[gv]:"Endpoint"}],[yv]:"url"},Sb={[pv]:kv,[mv]:[{[pv]:Fv,[mv]:[{[gv]:"url"},"isIp"]},!0]},Cb={[gv]:"url"},kb={[pv]:"uriEncode",[mv]:[Mb],[yv]:"uri_encoded_bucket"},Tb={[wv]:"S3Express",[_v]:[{[xv]:!0,[Ov]:"sigv4",[Dv]:"s3express",[Ev]:"{Region}"}]},Ib={},Rb={[pv]:qv,[mv]:[Mb,!1]},Fb={[Tv]:"S3Express bucket name is not a valid virtual hostable name.",[hv]:Tv},Ob={[wv]:"S3Express",[_v]:[{[xv]:!0,[Ov]:"sigv4-s3express",[Dv]:"s3express",[Ev]:"{Region}"}]},Bb={[pv]:Cv,[mv]:[{[gv]:"UseS3ExpressControlEndpoint"}]},Pb={[pv]:kv,[mv]:[{[gv]:"UseS3ExpressControlEndpoint"},!0]},Nb={[pv]:zv,[mv]:[_b]},jb={[Tv]:"Unrecognized S3Express bucket name format.",[hv]:Tv},Lb={[pv]:zv,[mv]:[Eb]},Ub={[gv]:Kv},qb={[fv]:[Nb],[Tv]:"Expected a endpoint to be specified but no endpoint was found",[hv]:Tv},$b={[_v]:[{[xv]:!0,[Ov]:Zv,[Dv]:Jv,[Av]:["*"]},{[xv]:!0,[Ov]:"sigv4",[Dv]:Jv,[Ev]:"{Region}"}]},zb={[pv]:kv,[mv]:[{[gv]:"ForcePathStyle"},!1]},Hb={[gv]:"ForcePathStyle"},Kb={[pv]:kv,[mv]:[{[gv]:"Accelerate"},!1]},Wb={[pv]:Rv,[mv]:[{[gv]:"Region"},"aws-global"]},Gb={[_v]:[{[xv]:!0,[Ov]:"sigv4",[Dv]:Xv,[Ev]:"us-east-1"}]},Vb={[pv]:zv,[mv]:[Wb]},Yb={[pv]:kv,[mv]:[{[gv]:"UseGlobalEndpoint"},!0]},Zb={[vv]:"https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[bv]:{[_v]:[{[xv]:!0,[Ov]:"sigv4",[Dv]:Xv,[Ev]:"{Region}"}]},[Mv]:{}},Jb={[_v]:[{[xv]:!0,[Ov]:"sigv4",[Dv]:Xv,[Ev]:"{Region}"}]},Xb={[pv]:kv,[mv]:[{[gv]:"UseGlobalEndpoint"},!1]},Qb={[pv]:kv,[mv]:[{[gv]:"UseDualStack"},!1]},ew={[vv]:"https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}",[bv]:Jb,[Mv]:{}},tw={[pv]:kv,[mv]:[{[gv]:"UseFIPS"},!1]},nw={[vv]:"https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}",[bv]:Jb,[Mv]:{}},rw={[vv]:"https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[bv]:Jb,[Mv]:{}},iw={[pv]:kv,[mv]:[{[pv]:Fv,[mv]:[Cb,"isIp"]},!1]},ow={[vv]:Qv,[bv]:Jb,[Mv]:{}},sw={[vv]:$v,[bv]:Jb,[Mv]:{}},aw={[Lv]:sw,[hv]:Lv},uw={[vv]:eb,[bv]:Jb,[Mv]:{}},cw={[vv]:"https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}",[bv]:Jb,[Mv]:{}},dw={[Tv]:"Invalid region: region was not a valid DNS name.",[hv]:Tv},lw={[gv]:rb},hw={[gv]:ib},fw={[pv]:Fv,[mv]:[lw,"service"]},pw={[gv]:ab},mw={[fv]:[wb],[Tv]:"S3 Object Lambda does not support Dual-stack",[hv]:Tv},gw={[fv]:[vb],[Tv]:"S3 Object Lambda does not support S3 Accelerate",[hv]:Tv},yw={[fv]:[{[pv]:Cv,[mv]:[{[gv]:"DisableAccessPoints"}]},{[pv]:kv,[mv]:[{[gv]:"DisableAccessPoints"},!0]}],[Tv]:"Access points are not supported for this operation",[hv]:Tv},vw={[fv]:[{[pv]:Cv,[mv]:[{[gv]:"UseArnRegion"}]},{[pv]:kv,[mv]:[{[gv]:"UseArnRegion"},!1]},{[pv]:zv,[mv]:[{[pv]:Rv,[mv]:[{[pv]:Fv,[mv]:[lw,"region"]},"{Region}"]}]}],[Tv]:"Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`",[hv]:Tv},bw={[pv]:Fv,[mv]:[{[gv]:"bucketPartition"},Ov]},ww={[pv]:Fv,[mv]:[lw,"accountId"]},_w={[_v]:[{[xv]:!0,[Ov]:"sigv4",[Dv]:ob,[Ev]:"{bucketArn#region}"}]},xw={[Tv]:"Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName}`",[hv]:Tv},Dw={[Tv]:"Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`",[hv]:Tv},Ew={[Tv]:"Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)",[hv]:Tv},Mw={[Tv]:"Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`",[hv]:Tv},Aw={[Tv]:"Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.",[hv]:Tv},Sw={[Tv]:"Invalid ARN: Expected a resource of the format `accesspoint:` but no name was provided",[hv]:Tv},Cw={[_v]:[{[xv]:!0,[Ov]:"sigv4",[Dv]:Xv,[Ev]:"{bucketArn#region}"}]},kw={[_v]:[{[xv]:!0,[Ov]:Zv,[Dv]:Jv,[Av]:["*"]},{[xv]:!0,[Ov]:"sigv4",[Dv]:Jv,[Ev]:"{bucketArn#region}"}]},Tw={[pv]:nb,[mv]:[Mb]},Iw={[vv]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[bv]:Jb,[Mv]:{}},Rw={[vv]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[bv]:Jb,[Mv]:{}},Fw={[vv]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[bv]:Jb,[Mv]:{}},Ow={[vv]:hb,[bv]:Jb,[Mv]:{}},Bw={[vv]:"https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[bv]:Jb,[Mv]:{}},Pw={[gv]:"UseObjectLambdaEndpoint"},Nw={[_v]:[{[xv]:!0,[Ov]:"sigv4",[Dv]:ob,[Ev]:"{Region}"}]},jw={[vv]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[bv]:Jb,[Mv]:{}},Lw={[vv]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}",[bv]:Jb,[Mv]:{}},Uw={[vv]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[bv]:Jb,[Mv]:{}},qw={[vv]:Hv,[bv]:Jb,[Mv]:{}},$w={[vv]:"https://s3.{Region}.{partitionResult#dnsSuffix}",[bv]:Jb,[Mv]:{}},zw=[{[gv]:"Region"}],Hw=[{[gv]:"Endpoint"}],Kw=[Mb],Ww=[wb],Gw=[vb],Vw=[_b,Ab],Yw=[{[pv]:Cv,[mv]:[{[gv]:"DisableS3ExpressSessionAuth"}]},{[pv]:kv,[mv]:[{[gv]:"DisableS3ExpressSessionAuth"},!0]}],Zw=[Sb],Jw=[kb],Xw=[Rb],Qw=[bb],e_=[{[pv]:Bv,[mv]:[Mb,6,14,!0],[yv]:"s3expressAvailabilityZoneId"},{[pv]:Bv,[mv]:[Mb,14,16,!0],[yv]:"s3expressAvailabilityZoneDelim"},{[pv]:Rv,[mv]:[{[gv]:"s3expressAvailabilityZoneDelim"},"--"]}],t_=[{[fv]:[bb],[Lv]:{[vv]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[bv]:Tb,[Mv]:{}},[hv]:Lv},{[Lv]:{[vv]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[bv]:Tb,[Mv]:{}},[hv]:Lv}],n_=[{[pv]:Bv,[mv]:[Mb,6,15,!0],[yv]:"s3expressAvailabilityZoneId"},{[pv]:Bv,[mv]:[Mb,15,17,!0],[yv]:"s3expressAvailabilityZoneDelim"},{[pv]:Rv,[mv]:[{[gv]:"s3expressAvailabilityZoneDelim"},"--"]}],r_=[{[fv]:[bb],[Lv]:{[vv]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[bv]:Ob,[Mv]:{}},[hv]:Lv},{[Lv]:{[vv]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[bv]:Ob,[Mv]:{}},[hv]:Lv}],i_=[Eb],o_=[{[pv]:Yv,[mv]:[{[gv]:Vv},!1]}],s_=[{[pv]:Rv,[mv]:[{[gv]:Wv},"beta"]}],a_=[xb],u_=[{[pv]:Yv,[mv]:[{[gv]:"Region"},!1]}],c_=[{[pv]:Rv,[mv]:[{[gv]:"Region"},"us-east-1"]}],d_=[{[pv]:Rv,[mv]:[hw,sb]}],l_=[{[pv]:Fv,[mv]:[lw,"resourceId[1]"],[yv]:ab},{[pv]:zv,[mv]:[{[pv]:Rv,[mv]:[pw,""]}]}],h_=[lw,"resourceId[1]"],f_=[{[pv]:zv,[mv]:[{[pv]:Rv,[mv]:[{[pv]:Fv,[mv]:[lw,"region"]},""]}]}],p_=[{[pv]:zv,[mv]:[{[pv]:Cv,[mv]:[{[pv]:Fv,[mv]:[lw,"resourceId[2]"]}]}]}],m_=[lw,"resourceId[2]"],g_=[{[pv]:Iv,[mv]:[{[pv]:Fv,[mv]:[lw,"region"]}],[yv]:"bucketPartition"}],y_=[{[pv]:Rv,[mv]:[bw,{[pv]:Fv,[mv]:[{[gv]:"partitionResult"},Ov]}]}],v_=[{[pv]:Yv,[mv]:[{[pv]:Fv,[mv]:[lw,"region"]},!0]}],b_=[{[pv]:Yv,[mv]:[ww,!1]}],w_=[{[pv]:Yv,[mv]:[pw,!1]}],__=[{[pv]:Yv,[mv]:[{[gv]:"Region"},!0]}],x_={version:"1.0",parameters:{Bucket:mb,Region:mb,UseFIPS:gb,UseDualStack:gb,Endpoint:mb,ForcePathStyle:gb,Accelerate:gb,UseGlobalEndpoint:gb,UseObjectLambdaEndpoint:yb,Key:mb,Prefix:mb,DisableAccessPoints:yb,DisableMultiRegionAccessPoints:gb,UseArnRegion:yb,UseS3ExpressControlEndpoint:yb,DisableS3ExpressSessionAuth:yb},rules:[{[fv]:[{[pv]:Cv,[mv]:zw}],rules:[{[fv]:[vb,bb],error:"Accelerate cannot be used with FIPS",[hv]:Tv},{[fv]:[wb,_b],error:"Cannot set dual-stack in combination with a custom endpoint.",[hv]:Tv},{[fv]:[_b,bb],error:"A custom endpoint cannot be combined with FIPS",[hv]:Tv},{[fv]:[_b,vb],error:"A custom endpoint cannot be combined with S3 Accelerate",[hv]:Tv},{[fv]:[bb,xb,Db],error:"Partition does not support FIPS",[hv]:Tv},{[fv]:[Eb,{[pv]:Bv,[mv]:[Mb,0,6,Sv],[yv]:Pv},{[pv]:Rv,[mv]:[{[gv]:Pv},"--x-s3"]}],rules:[{[fv]:Ww,error:"S3Express does not support Dual-stack.",[hv]:Tv},{[fv]:Gw,error:"S3Express does not support S3 Accelerate.",[hv]:Tv},{[fv]:Vw,rules:[{[fv]:Yw,rules:[{[fv]:Zw,rules:[{[fv]:Jw,rules:[{endpoint:{[vv]:jv,[bv]:Tb,[Mv]:Ib},[hv]:Lv}],[hv]:Uv}],[hv]:Uv},{[fv]:Xw,rules:[{endpoint:{[vv]:$v,[bv]:Tb,[Mv]:Ib},[hv]:Lv}],[hv]:Uv},Fb],[hv]:Uv},{[fv]:Zw,rules:[{[fv]:Jw,rules:[{endpoint:{[vv]:jv,[bv]:Ob,[Mv]:Ib},[hv]:Lv}],[hv]:Uv}],[hv]:Uv},{[fv]:Xw,rules:[{endpoint:{[vv]:$v,[bv]:Ob,[Mv]:Ib},[hv]:Lv}],[hv]:Uv},Fb],[hv]:Uv},{[fv]:[Bb,Pb],rules:[{[fv]:[kb,Nb],rules:[{[fv]:Qw,endpoint:{[vv]:"https://s3express-control-fips.{Region}.amazonaws.com/{uri_encoded_bucket}",[bv]:Tb,[Mv]:Ib},[hv]:Lv},{endpoint:{[vv]:"https://s3express-control.{Region}.amazonaws.com/{uri_encoded_bucket}",[bv]:Tb,[Mv]:Ib},[hv]:Lv}],[hv]:Uv}],[hv]:Uv},{[fv]:Xw,rules:[{[fv]:Yw,rules:[{[fv]:e_,rules:t_,[hv]:Uv},{[fv]:n_,rules:t_,[hv]:Uv},jb],[hv]:Uv},{[fv]:e_,rules:r_,[hv]:Uv},{[fv]:n_,rules:r_,[hv]:Uv},jb],[hv]:Uv},Fb],[hv]:Uv},{[fv]:[Lb,Bb,Pb],rules:[{[fv]:Vw,endpoint:{[vv]:Hv,[bv]:Tb,[Mv]:Ib},[hv]:Lv},{[fv]:Qw,endpoint:{[vv]:"https://s3express-control-fips.{Region}.amazonaws.com",[bv]:Tb,[Mv]:Ib},[hv]:Lv},{endpoint:{[vv]:"https://s3express-control.{Region}.amazonaws.com",[bv]:Tb,[Mv]:Ib},[hv]:Lv}],[hv]:Uv},{[fv]:[Eb,{[pv]:Bv,[mv]:[Mb,49,50,Sv],[yv]:Kv},{[pv]:Bv,[mv]:[Mb,8,12,Sv],[yv]:Wv},{[pv]:Bv,[mv]:[Mb,0,7,Sv],[yv]:Gv},{[pv]:Bv,[mv]:[Mb,32,49,Sv],[yv]:Vv},{[pv]:Iv,[mv]:zw,[yv]:"regionPartition"},{[pv]:Rv,[mv]:[{[gv]:Gv},"--op-s3"]}],rules:[{[fv]:o_,rules:[{[fv]:[{[pv]:Rv,[mv]:[Ub,"e"]}],rules:[{[fv]:s_,rules:[qb,{[fv]:Vw,endpoint:{[vv]:"https://{Bucket}.ec2.{url#authority}",[bv]:$b,[Mv]:Ib},[hv]:Lv}],[hv]:Uv},{endpoint:{[vv]:"https://{Bucket}.ec2.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[bv]:$b,[Mv]:Ib},[hv]:Lv}],[hv]:Uv},{[fv]:[{[pv]:Rv,[mv]:[Ub,"o"]}],rules:[{[fv]:s_,rules:[qb,{[fv]:Vw,endpoint:{[vv]:"https://{Bucket}.op-{outpostId}.{url#authority}",[bv]:$b,[Mv]:Ib},[hv]:Lv}],[hv]:Uv},{endpoint:{[vv]:"https://{Bucket}.op-{outpostId}.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[bv]:$b,[Mv]:Ib},[hv]:Lv}],[hv]:Uv},{error:'Unrecognized hardware type: "Expected hardware type o or e but got {hardwareType}"',[hv]:Tv}],[hv]:Uv},{error:"Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`.",[hv]:Tv}],[hv]:Uv},{[fv]:i_,rules:[{[fv]:[_b,{[pv]:zv,[mv]:[{[pv]:Cv,[mv]:[{[pv]:Nv,[mv]:Hw}]}]}],error:"Custom endpoint `{Endpoint}` was not a valid URI",[hv]:Tv},{[fv]:[zb,Rb],rules:[{[fv]:a_,rules:[{[fv]:u_,rules:[{[fv]:[vb,Db],error:"S3 Accelerate cannot be used in this region",[hv]:Tv},{[fv]:[wb,bb,Kb,Nb,Wb],endpoint:{[vv]:"https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[bv]:Gb,[Mv]:Ib},[hv]:Lv},{[fv]:[wb,bb,Kb,Nb,Vb,Yb],rules:[{endpoint:Zb,[hv]:Lv}],[hv]:Uv},{[fv]:[wb,bb,Kb,Nb,Vb,Xb],endpoint:Zb,[hv]:Lv},{[fv]:[Qb,bb,Kb,Nb,Wb],endpoint:{[vv]:"https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}",[bv]:Gb,[Mv]:Ib},[hv]:Lv},{[fv]:[Qb,bb,Kb,Nb,Vb,Yb],rules:[{endpoint:ew,[hv]:Lv}],[hv]:Uv},{[fv]:[Qb,bb,Kb,Nb,Vb,Xb],endpoint:ew,[hv]:Lv},{[fv]:[wb,tw,vb,Nb,Wb],endpoint:{[vv]:"https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}",[bv]:Gb,[Mv]:Ib},[hv]:Lv},{[fv]:[wb,tw,vb,Nb,Vb,Yb],rules:[{endpoint:nw,[hv]:Lv}],[hv]:Uv},{[fv]:[wb,tw,vb,Nb,Vb,Xb],endpoint:nw,[hv]:Lv},{[fv]:[wb,tw,Kb,Nb,Wb],endpoint:{[vv]:"https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[bv]:Gb,[Mv]:Ib},[hv]:Lv},{[fv]:[wb,tw,Kb,Nb,Vb,Yb],rules:[{endpoint:rw,[hv]:Lv}],[hv]:Uv},{[fv]:[wb,tw,Kb,Nb,Vb,Xb],endpoint:rw,[hv]:Lv},{[fv]:[Qb,tw,Kb,_b,Ab,Sb,Wb],endpoint:{[vv]:Qv,[bv]:Gb,[Mv]:Ib},[hv]:Lv},{[fv]:[Qb,tw,Kb,_b,Ab,iw,Wb],endpoint:{[vv]:$v,[bv]:Gb,[Mv]:Ib},[hv]:Lv},{[fv]:[Qb,tw,Kb,_b,Ab,Sb,Vb,Yb],rules:[{[fv]:c_,endpoint:ow,[hv]:Lv},{endpoint:ow,[hv]:Lv}],[hv]:Uv},{[fv]:[Qb,tw,Kb,_b,Ab,iw,Vb,Yb],rules:[{[fv]:c_,endpoint:sw,[hv]:Lv},aw],[hv]:Uv},{[fv]:[Qb,tw,Kb,_b,Ab,Sb,Vb,Xb],endpoint:ow,[hv]:Lv},{[fv]:[Qb,tw,Kb,_b,Ab,iw,Vb,Xb],endpoint:sw,[hv]:Lv},{[fv]:[Qb,tw,vb,Nb,Wb],endpoint:{[vv]:eb,[bv]:Gb,[Mv]:Ib},[hv]:Lv},{[fv]:[Qb,tw,vb,Nb,Vb,Yb],rules:[{[fv]:c_,endpoint:uw,[hv]:Lv},{endpoint:uw,[hv]:Lv}],[hv]:Uv},{[fv]:[Qb,tw,vb,Nb,Vb,Xb],endpoint:uw,[hv]:Lv},{[fv]:[Qb,tw,Kb,Nb,Wb],endpoint:{[vv]:tb,[bv]:Gb,[Mv]:Ib},[hv]:Lv},{[fv]:[Qb,tw,Kb,Nb,Vb,Yb],rules:[{[fv]:c_,endpoint:{[vv]:tb,[bv]:Jb,[Mv]:Ib},[hv]:Lv},{endpoint:cw,[hv]:Lv}],[hv]:Uv},{[fv]:[Qb,tw,Kb,Nb,Vb,Xb],endpoint:cw,[hv]:Lv}],[hv]:Uv},dw],[hv]:Uv}],[hv]:Uv},{[fv]:[_b,Ab,{[pv]:Rv,[mv]:[{[pv]:Fv,[mv]:[Cb,"scheme"]},"http"]},{[pv]:qv,[mv]:[Mb,Sv]},zb,tw,Qb,Kb],rules:[{[fv]:a_,rules:[{[fv]:u_,rules:[aw],[hv]:Uv},dw],[hv]:Uv}],[hv]:Uv},{[fv]:[zb,{[pv]:nb,[mv]:Kw,[yv]:rb}],rules:[{[fv]:[{[pv]:Fv,[mv]:[lw,"resourceId[0]"],[yv]:ib},{[pv]:zv,[mv]:[{[pv]:Rv,[mv]:[hw,""]}]}],rules:[{[fv]:[{[pv]:Rv,[mv]:[fw,ob]}],rules:[{[fv]:d_,rules:[{[fv]:l_,rules:[mw,gw,{[fv]:f_,rules:[yw,{[fv]:p_,rules:[vw,{[fv]:g_,rules:[{[fv]:a_,rules:[{[fv]:y_,rules:[{[fv]:v_,rules:[{[fv]:[{[pv]:Rv,[mv]:[ww,""]}],error:"Invalid ARN: Missing account id",[hv]:Tv},{[fv]:b_,rules:[{[fv]:w_,rules:[{[fv]:Vw,endpoint:{[vv]:ub,[bv]:_w,[Mv]:Ib},[hv]:Lv},{[fv]:Qw,endpoint:{[vv]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[bv]:_w,[Mv]:Ib},[hv]:Lv},{endpoint:{[vv]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}",[bv]:_w,[Mv]:Ib},[hv]:Lv}],[hv]:Uv},xw],[hv]:Uv},Dw],[hv]:Uv},Ew],[hv]:Uv},Mw],[hv]:Uv}],[hv]:Uv}],[hv]:Uv},Aw],[hv]:Uv},{error:"Invalid ARN: bucket ARN is missing a region",[hv]:Tv}],[hv]:Uv},Sw],[hv]:Uv},{error:"Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`",[hv]:Tv}],[hv]:Uv},{[fv]:d_,rules:[{[fv]:l_,rules:[{[fv]:f_,rules:[{[fv]:d_,rules:[{[fv]:f_,rules:[yw,{[fv]:p_,rules:[vw,{[fv]:g_,rules:[{[fv]:a_,rules:[{[fv]:[{[pv]:Rv,[mv]:[bw,"{partitionResult#name}"]}],rules:[{[fv]:v_,rules:[{[fv]:[{[pv]:Rv,[mv]:[fw,Xv]}],rules:[{[fv]:b_,rules:[{[fv]:w_,rules:[{[fv]:Gw,error:"Access Points do not support S3 Accelerate",[hv]:Tv},{[fv]:[bb,wb],endpoint:{[vv]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[bv]:Cw,[Mv]:Ib},[hv]:Lv},{[fv]:[bb,Qb],endpoint:{[vv]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[bv]:Cw,[Mv]:Ib},[hv]:Lv},{[fv]:[tw,wb],endpoint:{[vv]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[bv]:Cw,[Mv]:Ib},[hv]:Lv},{[fv]:[tw,Qb,_b,Ab],endpoint:{[vv]:ub,[bv]:Cw,[Mv]:Ib},[hv]:Lv},{[fv]:[tw,Qb],endpoint:{[vv]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}",[bv]:Cw,[Mv]:Ib},[hv]:Lv}],[hv]:Uv},xw],[hv]:Uv},Dw],[hv]:Uv},{error:"Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}",[hv]:Tv}],[hv]:Uv},Ew],[hv]:Uv},Mw],[hv]:Uv}],[hv]:Uv}],[hv]:Uv},Aw],[hv]:Uv}],[hv]:Uv}],[hv]:Uv},{[fv]:[{[pv]:Yv,[mv]:[pw,Sv]}],rules:[{[fv]:Ww,error:"S3 MRAP does not support dual-stack",[hv]:Tv},{[fv]:Qw,error:"S3 MRAP does not support FIPS",[hv]:Tv},{[fv]:Gw,error:"S3 MRAP does not support S3 Accelerate",[hv]:Tv},{[fv]:[{[pv]:kv,[mv]:[{[gv]:"DisableMultiRegionAccessPoints"},Sv]}],error:"Invalid configuration: Multi-Region Access Point ARNs are disabled.",[hv]:Tv},{[fv]:[{[pv]:Iv,[mv]:zw,[yv]:cb}],rules:[{[fv]:[{[pv]:Rv,[mv]:[{[pv]:Fv,[mv]:[{[gv]:cb},Ov]},{[pv]:Fv,[mv]:[lw,"partition"]}]}],rules:[{endpoint:{[vv]:"https://{accessPointName}.accesspoint.s3-global.{mrapPartition#dnsSuffix}",[bv]:{[_v]:[{[xv]:Sv,name:Zv,[Dv]:Xv,[Av]:["*"]}]},[Mv]:Ib},[hv]:Lv}],[hv]:Uv},{error:"Client was configured for partition `{mrapPartition#name}` but bucket referred to partition `{bucketArn#partition}`",[hv]:Tv}],[hv]:Uv}],[hv]:Uv},{error:"Invalid Access Point Name",[hv]:Tv}],[hv]:Uv},Sw],[hv]:Uv},{[fv]:[{[pv]:Rv,[mv]:[fw,Jv]}],rules:[{[fv]:Ww,error:"S3 Outposts does not support Dual-stack",[hv]:Tv},{[fv]:Qw,error:"S3 Outposts does not support FIPS",[hv]:Tv},{[fv]:Gw,error:"S3 Outposts does not support S3 Accelerate",[hv]:Tv},{[fv]:[{[pv]:Cv,[mv]:[{[pv]:Fv,[mv]:[lw,"resourceId[4]"]}]}],error:"Invalid Arn: Outpost Access Point ARN contains sub resources",[hv]:Tv},{[fv]:[{[pv]:Fv,[mv]:h_,[yv]:Vv}],rules:[{[fv]:o_,rules:[vw,{[fv]:g_,rules:[{[fv]:a_,rules:[{[fv]:y_,rules:[{[fv]:v_,rules:[{[fv]:b_,rules:[{[fv]:[{[pv]:Fv,[mv]:m_,[yv]:db}],rules:[{[fv]:[{[pv]:Fv,[mv]:[lw,"resourceId[3]"],[yv]:ab}],rules:[{[fv]:[{[pv]:Rv,[mv]:[{[gv]:db},sb]}],rules:[{[fv]:Vw,endpoint:{[vv]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.{url#authority}",[bv]:kw,[Mv]:Ib},[hv]:Lv},{endpoint:{[vv]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}",[bv]:kw,[Mv]:Ib},[hv]:Lv}],[hv]:Uv},{error:"Expected an outpost type `accesspoint`, found {outpostType}",[hv]:Tv}],[hv]:Uv},{error:"Invalid ARN: expected an access point name",[hv]:Tv}],[hv]:Uv},{error:"Invalid ARN: Expected a 4-component resource",[hv]:Tv}],[hv]:Uv},Dw],[hv]:Uv},Ew],[hv]:Uv},Mw],[hv]:Uv}],[hv]:Uv}],[hv]:Uv},{error:"Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId}`",[hv]:Tv}],[hv]:Uv},{error:"Invalid ARN: The Outpost Id was not set",[hv]:Tv}],[hv]:Uv},{error:"Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})",[hv]:Tv}],[hv]:Uv},{error:"Invalid ARN: No ARN type specified",[hv]:Tv}],[hv]:Uv},{[fv]:[{[pv]:Bv,[mv]:[Mb,0,4,!1],[yv]:lb},{[pv]:Rv,[mv]:[{[gv]:lb},"arn:"]},{[pv]:zv,[mv]:[{[pv]:Cv,[mv]:[Tw]}]}],error:"Invalid ARN: `{Bucket}` was not a valid ARN",[hv]:Tv},{[fv]:[{[pv]:kv,[mv]:[Hb,Sv]},Tw],error:"Path-style addressing cannot be used with ARN buckets",[hv]:Tv},{[fv]:Jw,rules:[{[fv]:a_,rules:[{[fv]:[Kb],rules:[{[fv]:[wb,Nb,bb,Wb],endpoint:{[vv]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[bv]:Gb,[Mv]:Ib},[hv]:Lv},{[fv]:[wb,Nb,bb,Vb,Yb],rules:[{endpoint:Iw,[hv]:Lv}],[hv]:Uv},{[fv]:[wb,Nb,bb,Vb,Xb],endpoint:Iw,[hv]:Lv},{[fv]:[Qb,Nb,bb,Wb],endpoint:{[vv]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[bv]:Gb,[Mv]:Ib},[hv]:Lv},{[fv]:[Qb,Nb,bb,Vb,Yb],rules:[{endpoint:Rw,[hv]:Lv}],[hv]:Uv},{[fv]:[Qb,Nb,bb,Vb,Xb],endpoint:Rw,[hv]:Lv},{[fv]:[wb,Nb,tw,Wb],endpoint:{[vv]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[bv]:Gb,[Mv]:Ib},[hv]:Lv},{[fv]:[wb,Nb,tw,Vb,Yb],rules:[{endpoint:Fw,[hv]:Lv}],[hv]:Uv},{[fv]:[wb,Nb,tw,Vb,Xb],endpoint:Fw,[hv]:Lv},{[fv]:[Qb,_b,Ab,tw,Wb],endpoint:{[vv]:hb,[bv]:Gb,[Mv]:Ib},[hv]:Lv},{[fv]:[Qb,_b,Ab,tw,Vb,Yb],rules:[{[fv]:c_,endpoint:Ow,[hv]:Lv},{endpoint:Ow,[hv]:Lv}],[hv]:Uv},{[fv]:[Qb,_b,Ab,tw,Vb,Xb],endpoint:Ow,[hv]:Lv},{[fv]:[Qb,Nb,tw,Wb],endpoint:{[vv]:fb,[bv]:Gb,[Mv]:Ib},[hv]:Lv},{[fv]:[Qb,Nb,tw,Vb,Yb],rules:[{[fv]:c_,endpoint:{[vv]:fb,[bv]:Jb,[Mv]:Ib},[hv]:Lv},{endpoint:Bw,[hv]:Lv}],[hv]:Uv},{[fv]:[Qb,Nb,tw,Vb,Xb],endpoint:Bw,[hv]:Lv}],[hv]:Uv},{error:"Path-style addressing cannot be used with S3 Accelerate",[hv]:Tv}],[hv]:Uv}],[hv]:Uv}],[hv]:Uv},{[fv]:[{[pv]:Cv,[mv]:[Pw]},{[pv]:kv,[mv]:[Pw,Sv]}],rules:[{[fv]:a_,rules:[{[fv]:__,rules:[mw,gw,{[fv]:Vw,endpoint:{[vv]:Hv,[bv]:Nw,[Mv]:Ib},[hv]:Lv},{[fv]:Qw,endpoint:{[vv]:"https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}",[bv]:Nw,[Mv]:Ib},[hv]:Lv},{endpoint:{[vv]:"https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}",[bv]:Nw,[Mv]:Ib},[hv]:Lv}],[hv]:Uv},dw],[hv]:Uv}],[hv]:Uv},{[fv]:[Lb],rules:[{[fv]:a_,rules:[{[fv]:__,rules:[{[fv]:[bb,wb,Nb,Wb],endpoint:{[vv]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[bv]:Gb,[Mv]:Ib},[hv]:Lv},{[fv]:[bb,wb,Nb,Vb,Yb],rules:[{endpoint:jw,[hv]:Lv}],[hv]:Uv},{[fv]:[bb,wb,Nb,Vb,Xb],endpoint:jw,[hv]:Lv},{[fv]:[bb,Qb,Nb,Wb],endpoint:{[vv]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}",[bv]:Gb,[Mv]:Ib},[hv]:Lv},{[fv]:[bb,Qb,Nb,Vb,Yb],rules:[{endpoint:Lw,[hv]:Lv}],[hv]:Uv},{[fv]:[bb,Qb,Nb,Vb,Xb],endpoint:Lw,[hv]:Lv},{[fv]:[tw,wb,Nb,Wb],endpoint:{[vv]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[bv]:Gb,[Mv]:Ib},[hv]:Lv},{[fv]:[tw,wb,Nb,Vb,Yb],rules:[{endpoint:Uw,[hv]:Lv}],[hv]:Uv},{[fv]:[tw,wb,Nb,Vb,Xb],endpoint:Uw,[hv]:Lv},{[fv]:[tw,Qb,_b,Ab,Wb],endpoint:{[vv]:Hv,[bv]:Gb,[Mv]:Ib},[hv]:Lv},{[fv]:[tw,Qb,_b,Ab,Vb,Yb],rules:[{[fv]:c_,endpoint:qw,[hv]:Lv},{endpoint:qw,[hv]:Lv}],[hv]:Uv},{[fv]:[tw,Qb,_b,Ab,Vb,Xb],endpoint:qw,[hv]:Lv},{[fv]:[tw,Qb,Nb,Wb],endpoint:{[vv]:pb,[bv]:Gb,[Mv]:Ib},[hv]:Lv},{[fv]:[tw,Qb,Nb,Vb,Yb],rules:[{[fv]:c_,endpoint:{[vv]:pb,[bv]:Jb,[Mv]:Ib},[hv]:Lv},{endpoint:$w,[hv]:Lv}],[hv]:Uv},{[fv]:[tw,Qb,Nb,Vb,Xb],endpoint:$w,[hv]:Lv}],[hv]:Uv},dw],[hv]:Uv}],[hv]:Uv}],[hv]:Uv},{error:"A region must be set when sending requests to S3.",[hv]:Tv}]},D_=(e,t={})=>((e,t)=>{const{endpointParams:n,logger:r}=t,{parameters:i,rules:o}=e;t.logger?.debug?.(`${Hd} Initial EndpointParams: ${Kd(n)}`);const s=Object.entries(i).filter((([,e])=>null!=e.default)).map((([e,t])=>[e,t.default]));if(s.length>0)for(const[e,t]of s)n[e]=n[e]??t;const a=Object.entries(i).filter((([,e])=>e.required)).map((([e])=>e));for(const e of a)if(null==n[e])throw new Wd(`Missing required parameter: '${e}'`);const u=ul(o,{endpointParams:n,logger:r,referenceRecord:{}});if(t.endpointParams?.Endpoint)try{const e=new URL(t.endpointParams.Endpoint),{protocol:n,port:r}=e;u.url.protocol=n,u.url.port=r}catch(e){}return t.logger?.debug?.(`${Hd} Resolved endpoint: ${Kd(u)}`),u})(x_,{endpointParams:e,logger:t.logger});zd.aws=hl;const E_=["in-region","cross-region","mobile","standard","legacy"],M_=()=>{const e="undefined"!=typeof window&&window?.navigator?.userAgent?My().parse(window.navigator.userAgent):void 0,t=e?.platform?.type;return"tablet"===t||"mobile"===t},A_=e=>{const t=(({defaultsMode:e}={})=>Rd((async()=>{const t="function"==typeof e?await e():e;switch(t?.toLowerCase()){case"auto":return Promise.resolve(M_()?"mobile":"standard");case"mobile":case"in-region":case"cross-region":case"standard":case"legacy":return Promise.resolve(t?.toLocaleLowerCase());case void 0:return Promise.resolve("legacy");default:throw new Error(`Invalid parameter for "defaultsMode", expect ${E_.join(", ")}, got ${t}`)}})))(e),n=()=>t().then(dc),r=(e=>({apiVersion:"2006-03-01",base64Decoder:e?.base64Decoder??Za,base64Encoder:e?.base64Encoder??Xa,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??D_,extensions:e?.extensions??[],getAwsChunkedEncodingStream:e?.getAwsChunkedEncodingStream??tu,logger:e?.logger??new ja,sdkStreamMixin:e?.sdkStreamMixin??pu,serviceId:e?.serviceId??"S3",signerConstructor:e?.signerConstructor??dv,signingEscapePath:e?.signingEscapePath??!1,urlParser:e?.urlParser??Il,useArnRegion:e?.useArnRegion??!1,utf8Decoder:e?.utf8Decoder??Ja,utf8Encoder:e?.utf8Encoder??Qa}))(e);return{...r,...e,runtime:"browser",defaultsMode:t,bodyLengthChecker:e?.bodyLengthChecker??uv,credentialDefaultProvider:e?.credentialDefaultProvider??(e=>()=>Promise.reject(new Error("Credential is missing"))),defaultUserAgentProvider:e?.defaultUserAgentProvider??Ay({serviceId:r.serviceId,clientVersion:_y}),eventStreamSerdeProvider:e?.eventStreamSerdeProvider??Jy,maxAttempts:e?.maxAttempts??3,md5:e?.md5??tv,region:e?.region??(i="Region is missing",()=>Promise.reject(i)),requestHandler:au.create(e?.requestHandler??n),retryMode:e?.retryMode??(async()=>(await n()).retryMode||$l),sha1:e?.sha1??xy.Sha1,sha256:e?.sha256??Dy.Sha256,streamCollector:e?.streamCollector??uu,streamHasher:e?.streamHasher??Xy,useDualstackEndpoint:e?.useDualstackEndpoint??(()=>Promise.resolve(false)),useFipsEndpoint:e?.useFipsEndpoint??(()=>Promise.resolve(false))};var i},S_=e=>{let t=async()=>{if(void 0===e.region)throw new Error("Region is missing from runtimeConfig");const t=e.region;return"string"==typeof t?t:t()};return{setRegion(e){t=e},region:()=>t}};class C_ extends Ha{constructor(...[e]){const t=A_(e||{});var n;const r=(e=>{const{region:t,useFipsEndpoint:n}=e;if(!t)throw new Error("Region is missing");return{...e,region:async()=>{if("string"==typeof t)return _l(t);const e=await t();return _l(e)},useFipsEndpoint:async()=>{const e="string"==typeof t?t:await t();return!!wl(e)||("function"!=typeof n?Promise.resolve(!!n):n())}}})((n=t,{...n,useFipsEndpoint:n.useFipsEndpoint??!1,useDualstackEndpoint:n.useDualstackEndpoint??!1,forcePathStyle:n.forcePathStyle??!1,useAccelerateEndpoint:n.useAccelerateEndpoint??!1,useGlobalEndpoint:n.useGlobalEndpoint??!1,disableMultiregionAccessPoints:n.disableMultiregionAccessPoints??!1,defaultSigningName:"s3"})),i=(e=>{const t=e.tls??!0,{endpoint:n}=e,r=null!=n?async()=>Rl(await Bc(n)()):void 0,i=!!n;return{...e,endpoint:r,tls:t,isCustomEndpoint:i,useDualstackEndpoint:Bc(e.useDualstackEndpoint??!1),useFipsEndpoint:Bc(e.useFipsEndpoint??!1)}})(r),o=(e=>{const{retryStrategy:t}=e,n=Bc(e.maxAttempts??3);return{...e,maxAttempts:n,retryStrategy:async()=>t||(await Bc(e.retryMode)()===ql.ADAPTIVE?new nh(n):new th(n))}})(i),s=(e=>{const t=e.credentials?Fd(e.credentials):e.credentialDefaultProvider(Object.assign({},e,{parentClientConfig:e})),{signingEscapePath:n=!0,systemClockOffset:r=e.systemClockOffset||0,sha256:i}=e;let o;return o=e.signer?Bc(e.signer):e.regionInfoProvider?()=>Bc(e.region)().then((async t=>[await e.regionInfoProvider(t,{useFipsEndpoint:await e.useFipsEndpoint(),useDualstackEndpoint:await e.useDualstackEndpoint()})||{},t])).then((([r,o])=>{const{signingRegion:s,signingService:a}=r;e.signingRegion=e.signingRegion||s||o,e.signingName=e.signingName||a||e.serviceId;const u={...e,credentials:t,region:e.signingRegion,service:e.signingName,sha256:i,uriEscapePath:n};return new(e.signerConstructor||pd)(u)})):async r=>{r=Object.assign({},{name:"sigv4",signingName:e.signingName||e.defaultSigningName,signingRegion:await Bc(e.region)(),properties:{}},r);const o="sigv4a"===r?.name,s=r.signingRegion,a=r.signingName;let u;o?u=e.signingRegion||s:(e.signingRegion=e.signingRegion||s,u=e.signingRegion),e.signingName=e.signingName||a||e.serviceId;const c={...e,credentials:t,region:u,service:e.signingName,sha256:i,uriEscapePath:n};return new(e.signerConstructor||pd)(c)},{...e,systemClockOffset:r,signingEscapePath:n,credentials:t,signer:o}})(o),a=((e,{session:t})=>{const[n,r]=t;return{...e,forcePathStyle:e.forcePathStyle??!1,useAccelerateEndpoint:e.useAccelerateEndpoint??!1,disableMultiregionAccessPoints:e.disableMultiregionAccessPoints??!1,followRegionRedirects:e.followRegionRedirects??!1,s3ExpressIdentityProvider:e.s3ExpressIdentityProvider??new Oc((async e=>n().send(new r({Bucket:e,SessionMode:"ReadWrite"})))),bucketEndpoint:e.bucketEndpoint??!1}})(s,{session:[()=>this,wy]});var u;const c=((e,t)=>{const n={...S_(e),...mc(e),...va(e)};return t.forEach((e=>e.configure(n))),{...e,...(o=n,{region:o.region()}),...(i=n,{...hc(i),...pc(i)}),...(r=n,{httpHandler:r.httpHandler()})};var r,i,o})((e=>({...e,eventStreamMarshaller:e.eventStreamSerdeProvider(e)}))((u=a,{...u,customUserAgent:"string"==typeof u.customUserAgent?[[u.customUserAgent]]:u.customUserAgent})),e?.extensions||[]);var d;super(c),this.config=c,this.middlewareStack.use(gh(this.config)),this.middlewareStack.use(El(this.config)),this.middlewareStack.use(Ra(this.config)),this.middlewareStack.use((this.config,{applyToStack:e=>{e.add(((e,t)=>async n=>{try{const r=await e(n),{clientName:i,commandName:o,logger:s,dynamoDbDocumentClientOptions:a={}}=t,{overrideInputFilterSensitiveLog:u,overrideOutputFilterSensitiveLog:c}=a,d=u??t.inputFilterSensitiveLog,l=c??t.outputFilterSensitiveLog,{$metadata:h,...f}=r.output;return s?.info?.({clientName:i,commandName:o,input:d(n.input),output:l(f),metadata:h}),r}catch(e){const{clientName:r,commandName:i,logger:o,dynamoDbDocumentClientOptions:s={}}=t,{overrideInputFilterSensitiveLog:a}=s,u=a??t.inputFilterSensitiveLog;throw o?.error?.({clientName:r,commandName:i,input:u(n.input),error:e,metadata:e.$metadata}),e}}),Fa)}})),this.middlewareStack.use(Na(this.config)),this.middlewareStack.use(jd(this.config)),this.middlewareStack.use(Id(this.config)),this.middlewareStack.use(Ta(this.config)),this.middlewareStack.use(kc(this.config)),this.middlewareStack.use(Ed(this.config)),this.middlewareStack.use((d=this.config,{applyToStack:e=>{e.add(yl(d),bl)}}))}destroy(){super.destroy()}}class k_ extends(vu.classBuilder().ep({...vh,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m((function(e,t,n,r){return[jl(n,this.serialize,this.deserialize),Ul(n,e.getEndpointParameterInstructions())]})).s("AmazonS3","ListObjectsV2",{}).n("S3Client","ListObjectsV2Command").f(void 0,void 0).ser(df).de(wf).build()){}const T_={name:"ssecMiddleware",step:"initialize",tags:["SSE"],override:!0},I_=e=>({applyToStack:t=>{var n;t.add((n=e,e=>async t=>{const r={...t.input},i=[{target:"SSECustomerKey",hash:"SSECustomerKeyMD5"},{target:"CopySourceSSECustomerKey",hash:"CopySourceSSECustomerKeyMD5"}];for(const e of i){const t=r[e.target];if(t){let i;"string"==typeof t?R_(t,n)?i=n.base64Decoder(t):(i=n.utf8Decoder(t),r[e.target]=n.base64Encoder(i)):(i=ArrayBuffer.isView(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):new Uint8Array(t),r[e.target]=n.base64Encoder(i));const o=new n.md5;o.update(i),r[e.hash]=n.base64Encoder(await o.digest())}}return e({...t,input:r})}),T_)}});function R_(e,t){if(!/^(?:[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e))return!1;try{return 32===t.base64Decoder(e).length}catch{return!1}}class F_ extends(vu.classBuilder().ep({...vh,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,n,r){return[jl(n,this.serialize,this.deserialize),Ul(n,e.getEndpointParameterInstructions()),I_(n),Ic()]})).s("AmazonS3","HeadObject",{}).n("S3Client","HeadObjectCommand").f(qh,Uh).ser(cf).de(bf).build()){}var O_,B_;!function(e){e.MD5="MD5",e.CRC32="CRC32",e.CRC32C="CRC32C",e.SHA1="SHA1",e.SHA256="SHA256"}(O_||(O_={})),function(e){e.HEADER="header",e.TRAILER="trailer"}(B_||(B_={}));const P_=O_.MD5,N_=O_.CRC32,j_=[O_.CRC32,O_.CRC32C,O_.SHA1,O_.SHA256],L_=[O_.CRC32,O_.CRC32C,O_.SHA1,O_.SHA256],U_=e=>e===O_.MD5?"content-md5":`x-amz-checksum-${e.toLowerCase()}`,q_=e=>void 0!==e&&"string"!=typeof e&&!ArrayBuffer.isView(e)&&!rd(e);var $_=n(69728);const z_=(e,t)=>({[O_.MD5]:t.md5,[O_.CRC32]:Cy.AwsCrc32,[O_.CRC32C]:$_.AwsCrc32c,[O_.SHA1]:t.sha1,[O_.SHA256]:t.sha256}[e]),H_=(e,t)=>{const n=new e;return n.update(Pc(t||"")),n.digest()},K_={name:"flexibleChecksumsMiddleware",step:"build",tags:["BODY_CHECKSUM"],override:!0},W_=(e,t)=>(n,r)=>async i=>{if(!Sa.isInstance(i.request))return n(i);const{request:o}=i,{body:s,headers:a}=o,{base64Encoder:u,streamHasher:c}=e,{input:d,requestChecksumRequired:l,requestAlgorithmMember:h}=t,f=((e,{requestChecksumRequired:t,requestAlgorithmMember:n},r)=>{const i=r?N_:P_;if(!n||!e[n])return t?i:void 0;const o=e[n];if(!j_.includes(o))throw new Error(`The checksum algorithm "${o}" is not supported by the client. Select one of ${j_}.`);return o})(d,{requestChecksumRequired:l,requestAlgorithmMember:h},!!r.isS3ExpressBucket);let p=s,m=a;if(f){const t=U_(f),n=z_(f,e);if(q_(s)){const{getAwsChunkedEncodingStream:r,bodyLengthChecker:i}=e;p=r(s,{base64Encoder:u,bodyLengthChecker:i,checksumLocationName:t,checksumAlgorithmFn:n,streamHasher:c}),m={...a,"content-encoding":a["content-encoding"]?`${a["content-encoding"]},aws-chunked`:"aws-chunked","transfer-encoding":"chunked","x-amz-decoded-content-length":a["content-length"],"x-amz-content-sha256":"STREAMING-UNSIGNED-PAYLOAD-TRAILER","x-amz-trailer":t},delete m["content-length"]}else if(!((e,t)=>{const n=e.toLowerCase();for(const e of Object.keys(t))if(n===e.toLowerCase())return!0;return!1})(t,a)){const e=await H_(n,s);m={...a,[t]:u(e)}}}return await n({...i,request:{...o,headers:m,body:p}})},G_=(e=[])=>{const t=[];for(const n of L_)e.includes(n)&&j_.includes(n)&&t.push(n);return t};function V_(e){return new Blob([e]).stream()}const Y_=async(e,{streamHasher:t,checksumAlgorithmFn:n,base64Encoder:r})=>{const i=q_(e)?t(n,e):H_(n,e);return r(await i)},Z_={name:"flexibleChecksumsResponseMiddleware",toMiddleware:"deserializerMiddleware",relation:"after",tags:["BODY_CHECKSUM"],override:!0},J_=(e,t)=>(n,r)=>async i=>{if(!Sa.isInstance(i.request))return n(i);const o=i.input,s=await n(i),a=s.response;let u;const{requestValidationModeMember:c,responseAlgorithms:d}=t;if(c&&"ENABLED"===o[c]){const{clientName:t,commandName:n}=r;if("S3Client"===t&&"GetObjectCommand"===n&&G_(d).every((e=>{const t=U_(e),n=a.headers[t];return!n||(e=>{const t=e.lastIndexOf("-");if(-1!==t){const n=e.slice(t+1);if(!n.startsWith("0")){const e=parseInt(n,10);if(!isNaN(e)&&e>=1&&e<=1e4)return!0}}return!1})(n)})))return s;const i=q_(a.body);i&&(u=await e.streamCollector(a.body),a.body=V_(u)),await(async(e,{config:t,responseAlgorithms:n})=>{const r=G_(n),{body:i,headers:o}=e;for(const e of r){const n=U_(e),r=o[n];if(r){const o=z_(e,t),{streamHasher:s,base64Encoder:a}=t,u=await Y_(i,{streamHasher:s,checksumAlgorithmFn:o,base64Encoder:a});if(u===r)break;throw new Error(`Checksum mismatch: expected "${u}" but received "${r}" in response header "${n}".`)}}})(s.response,{config:e,responseAlgorithms:d}),i&&u&&(a.body=V_(u))}return s},X_=(e,t)=>({applyToStack:n=>{n.add(W_(e,t),K_),n.addRelativeTo(J_(e,t),Z_)}});class Q_ extends(vu.classBuilder().ep({...vh,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,n,r){return[jl(n,this.serialize,this.deserialize),Ul(n,e.getEndpointParameterInstructions()),Ac(),I_(n),X_(n,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!1})]})).s("AmazonS3","PutObject",{}).n("S3Client","PutObjectCommand").f(ef,Qh).ser(lf).de(_f).build()){}class ex extends(vu.classBuilder().ep({...vh,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,n,r){return[jl(n,this.serialize,this.deserialize),Ul(n,e.getEndpointParameterInstructions()),I_(n),Ic(),X_(n,{input:this.input,requestChecksumRequired:!1,requestValidationModeMember:"ChecksumMode",responseAlgorithms:["CRC32","CRC32C","SHA256","SHA1"]})]})).s("AmazonS3","GetObject",{}).n("S3Client","GetObjectCommand").f(Lh,jh).ser(uf).de(vf).build()){}class tx extends(vu.classBuilder().ep({...vh,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,n,r){return[jl(n,this.serialize,this.deserialize),Ul(n,e.getEndpointParameterInstructions())]})).s("AmazonS3","DeleteObject",{}).n("S3Client","DeleteObjectCommand").f(void 0,void 0).ser(af).de(yf).build()){}class nx extends(vu.classBuilder().ep({...vh,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,n,r){return[jl(n,this.serialize,this.deserialize),Ul(n,e.getEndpointParameterInstructions()),I_(n)]})).s("AmazonS3","CreateMultipartUpload",{}).n("S3Client","CreateMultipartUploadCommand").f(Bh,Oh).ser(of).de(mf).build()){}class rx extends(vu.classBuilder().ep({...vh,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,n,r){return[jl(n,this.serialize,this.deserialize),Ul(n,e.getEndpointParameterInstructions()),I_(n),X_(n,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!1})]})).s("AmazonS3","UploadPart",{}).n("S3Client","UploadPartCommand").f(nf,tf).ser(ff).de(Df).build()){}class ix extends(vu.classBuilder().ep({...vh,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,n,r){return[jl(n,this.serialize,this.deserialize),Ul(n,e.getEndpointParameterInstructions()),Cd(n),I_(n)]})).s("AmazonS3","CompleteMultipartUpload",{}).n("S3Client","CompleteMultipartUploadCommand").f(Fh,Rh).ser(rf).de(pf).build()){}class ox extends(vu.classBuilder().ep({...vh,Bucket:{type:"contextParams",name:"Bucket"}}).m((function(e,t,n,r){return[jl(n,this.serialize,this.deserialize),Ul(n,e.getEndpointParameterInstructions()),X_(n,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!0})]})).s("AmazonS3","PutObjectTagging",{}).n("S3Client","PutObjectTaggingCommand").f(void 0,void 0).ser(hf).de(xf).build()){}class sx{constructor(){this.onabort=null,this._aborted=!1,Object.defineProperty(this,"_aborted",{value:!1,writable:!0})}get aborted(){return this._aborted}abort(){this._aborted=!0,this.onabort&&(this.onabort(this),this.onabort=null)}}class ax{constructor(){this.signal=new sx}abort(){this.signal.abort()}}var ux=n(37007),cx=n(66339);const dx={lstatSync:()=>{},runtime:"browser"},lx=e=>{if(null==e)return 0;if("string"==typeof e)return cx.hp.byteLength(e);if("number"==typeof e.byteLength)return e.byteLength;if("number"==typeof e.length)return e.length;if("number"==typeof e.size)return e.size;if("string"==typeof e.path)try{return dx.lstatSync(e.path).size}catch(e){return}};async function*hx(e,t,n){let r=1;const i={chunks:[],length:0};for await(const o of n(e))for(i.chunks.push(o),i.length+=o.byteLength;i.length>=t;){const e=i.chunks.length>1?cx.hp.concat(i.chunks):i.chunks[0];yield{partNumber:r,data:e.subarray(0,t)},i.chunks=[e.subarray(t)],i.length=i.chunks[0].byteLength,r+=1}yield{partNumber:r,data:1!==i.chunks.length?cx.hp.concat(i.chunks):i.chunks[0],lastPart:!0}}async function*fx(e,t){let n=1,r=0,i=t;for(;i{this.bytesUploadedSoFar=t.loaded,this.totalBytes=t.total,this.__notifyProgress({loaded:this.bytesUploadedSoFar,total:this.totalBytes,part:e.partNumber,Key:this.params.Key,Bucket:this.params.Bucket})};null!==i&&i.on("xhr.upload.progress",o);const s=await Promise.all([this.client.send(new Q_(t)),n?.endpoint?.()]),a=s[0];let u=s[1];if(u||(u=Rl(await Fl(t,Q_,{...n}))),!u)throw new Error('Could not resolve endpoint from S3 "client.config.endpoint()" nor EndpointsV2.');null!==i&&i.off("xhr.upload.progress",o);const c=this.params.Key.split("/").map((e=>gc(e))).join("/"),d=gc(this.params.Bucket),l=(()=>{const e=u.hostname.startsWith(`${d}.`);return this.client.config.forcePathStyle?`${u.protocol}//${u.hostname}/${d}/${c}`:e?`${u.protocol}//${u.hostname}/${c}`:`${u.protocol}//${d}.${u.hostname}/${c}`})();this.singleUploadResult={...a,Bucket:this.params.Bucket,Key:this.params.Key,Location:l};const h=lx(e.data);this.__notifyProgress({loaded:h,total:h,part:1,Key:this.params.Key,Bucket:this.params.Bucket})}async __createMultipartUpload(){if(!this.createMultiPartPromise){const e={...this.params,Body:void 0};this.createMultiPartPromise=this.client.send(new nx(e))}return this.createMultiPartPromise}async __doConcurrentUpload(e){for await(const t of e){if(this.uploadedParts.length>this.MAX_PARTS)throw new Error(`Exceeded ${this.MAX_PARTS} as part of the upload to ${this.params.Key} and ${this.params.Bucket}.`);try{if(this.abortController.signal.aborted)return;if(1===t.partNumber&&t.lastPart)return await this.__uploadUsingPut(t);if(!this.uploadId){const{UploadId:e}=await this.__createMultipartUpload();if(this.uploadId=e,this.abortController.signal.aborted)return}const e=lx(t.data)||0,n=this.client.config.requestHandler,r=n instanceof ux.EventEmitter?n:null;let i=0;const o=(n,r)=>{(Number(r.query.partNumber)||-1)===t.partNumber&&(n.total&&e&&(this.bytesUploadedSoFar+=n.loaded-i,i=n.loaded),this.__notifyProgress({loaded:this.bytesUploadedSoFar,total:this.totalBytes,part:t.partNumber,Key:this.params.Key,Bucket:this.params.Bucket}))};null!==r&&r.on("xhr.upload.progress",o);const s=await this.client.send(new rx({...this.params,UploadId:this.uploadId,Body:t.data,PartNumber:t.partNumber}));if(null!==r&&r.off("xhr.upload.progress",o),this.abortController.signal.aborted)return;if(!s.ETag)throw new Error(`Part ${t.partNumber} is missing ETag in UploadPart response. Missing Bucket CORS configuration for ETag header?`);this.uploadedParts.push({PartNumber:t.partNumber,ETag:s.ETag,...s.ChecksumCRC32&&{ChecksumCRC32:s.ChecksumCRC32},...s.ChecksumCRC32C&&{ChecksumCRC32C:s.ChecksumCRC32C},...s.ChecksumSHA1&&{ChecksumSHA1:s.ChecksumSHA1},...s.ChecksumSHA256&&{ChecksumSHA256:s.ChecksumSHA256}}),null===r&&(this.bytesUploadedSoFar+=e),this.__notifyProgress({loaded:this.bytesUploadedSoFar,total:this.totalBytes,part:t.partNumber,Key:this.params.Key,Bucket:this.params.Bucket})}catch(e){if(!this.uploadId)throw e;if(this.leavePartsOnError)throw e}}}async __doMultipartUpload(){const e=((e,t)=>{if(e instanceof Uint8Array)return fx(e,t);if(e instanceof ya.Readable)return hx(e,t,px);if(e instanceof String||"string"==typeof e)return fx(cx.hp.from(e),t);if("function"==typeof e.stream)return hx(e.stream(),t,mx);if(e instanceof ReadableStream)return hx(e,t,mx);throw new Error("Body Data is unsupported format, expected data to be one of: string | Uint8Array | Buffer | Readable | ReadableStream | Blob;.")})(this.params.Body,this.partSize);for(let t=0;te.PartNumber-t.PartNumber));const e={...this.params,Body:void 0,UploadId:this.uploadId,MultipartUpload:{Parts:this.uploadedParts}};t=await this.client.send(new ix(e)),"string"==typeof t?.Location&&t.Location.includes("%2F")&&(t.Location=t.Location.replace(/%2F/g,"/"))}else t=this.singleUploadResult;return this.tags.length&&await this.client.send(new ox({...this.params,Tagging:{TagSet:this.tags}})),t}__notifyProgress(e){this.uploadEvent&&this.emit(this.uploadEvent,e)}async __abortTimeout(e){return new Promise(((t,n)=>{e.onabort=()=>{const e=new Error("Upload aborted.");e.name="AbortError",n(e)}}))}__validateInput(){if(!this.params)throw new Error("InputError: Upload requires params to be passed to upload.");if(!this.client)throw new Error("InputError: Upload requires a AWS client to do uploads with.");if(this.partSize"",bx=/\s+at.*[(\s](.*)\)?/,wx=/^(?:(?:(?:node|node:[\w/]+|(?:(?:node:)?internal\/[\w/]*|.*node_modules\/(?:babel-polyfill|pirates)\/.*)?\w+)(?:\.js)?:\d+:\d+)|native)/;function _x(e,{pretty:t=!1,basePath:n,pathFilter:r}={}){const i=n&&new RegExp(`(file://)?${function(e){if("string"!=typeof e)throw new TypeError("Expected a string");return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}(n.replace(/\\/g,"/"))}/?`,"g"),o=t?vx():"";if("string"==typeof e)return e.replace(/\\/g,"/").split("\n").filter((e=>{const t=e.match(bx);if(null===t||!t[1])return!0;const n=t[1];return!(n.includes(".app/Contents/Resources/electron.asar")||n.includes(".app/Contents/Resources/default_app.asar")||n.includes("node_modules/electron/dist/resources/electron.asar")||n.includes("node_modules/electron/dist/resources/default_app.asar"))&&(r?!wx.test(n)&&r(n):!wx.test(n))})).filter((e=>""!==e.trim())).map((e=>(i&&(e=e.replace(i,"")),t&&(e=e.replace(bx,((e,t)=>e.replace(t,t.replace(o,"~"))))),e))).join("\n")}class xx extends Error{#e;name="AggregateError";constructor(e){if(!Array.isArray(e))throw new TypeError("Expected input to be an Array, got "+typeof e);let t=(e=e.map((e=>e instanceof Error?e:null!==e&&"object"==typeof e?Object.assign(new Error(e.message),e):new Error(e)))).map((e=>"string"==typeof e.stack&&e.stack.length>0?_x(e.stack).replaceAll(/\s+at .*aggregate-error\/index.js:\d+:\d+\)?/g,""):String(e))).join("\n");t="\n"+function(e,t=1,n={}){const{indent:r=" ",includeEmptyLines:i=!1}=n;if("string"!=typeof e)throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof e}\``);if("number"!=typeof t)throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof t}\``);if(t<0)throw new RangeError(`Expected \`count\` to be at least 0, got \`${t}\``);if("string"!=typeof r)throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof r}\``);if(0===t)return e;const o=i?/^/gm:/^(?!\s*$)/gm;return e.replace(o,r.repeat(t))}(t,4),super(t),this.#e=e}get errors(){return[...this.#e]}}var Dx=n(86049),Ex=n(30228);class Mx extends Error{constructor(e){super(e),this.name="TimeoutError"}}class Ax extends Error{constructor(e){super(),this.name="AbortError",this.message=e}}const Sx=e=>void 0===globalThis.DOMException?new Ax(e):new DOMException(e),Cx=e=>{const t=void 0===e.reason?Sx("This operation was aborted."):e.reason;return t instanceof Error?t:Sx(t)};class kx{#t=[];enqueue(e,t){const n={priority:(t={priority:0,...t}).priority,run:e};if(this.size&&this.#t[this.size-1].priority>=t.priority)return void this.#t.push(n);const r=function(e,t,n){let r=0,i=e.length;for(;i>0;){const o=Math.trunc(i/2);let s=r+o;n(e[s],t)<=0?(r=++s,i-=o+1):i=o}return r}(this.#t,n,((e,t)=>t.priority-e.priority));this.#t.splice(r,0,n)}dequeue(){const e=this.#t.shift();return e?.run}filter(e){return this.#t.filter((t=>t.priority===e.priority)).map((e=>e.run))}get size(){return this.#t.length}}class Tx extends Ex{#n;#r;#i=0;#o;#s;#a=0;#u;#c;#t;#d;#l=0;#h;#f;#p;timeout;constructor(e){if(super(),!("number"==typeof(e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:kx,...e}).intervalCap&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(void 0===e.interval||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);this.#n=e.carryoverConcurrencyCount,this.#r=e.intervalCap===Number.POSITIVE_INFINITY||0===e.interval,this.#o=e.intervalCap,this.#s=e.interval,this.#t=new e.queueClass,this.#d=e.queueClass,this.concurrency=e.concurrency,this.timeout=e.timeout,this.#p=!0===e.throwOnTimeout,this.#f=!1===e.autoStart}get#m(){return this.#r||this.#i{this.#b()}),t)),!0;this.#i=this.#n?this.#l:0}return!1}#v(){if(0===this.#t.size)return this.#u&&clearInterval(this.#u),this.#u=void 0,this.emit("empty"),0===this.#l&&this.emit("idle"),!1;if(!this.#f){const e=!this.#x;if(this.#m&&this.#g){const t=this.#t.dequeue();return!!t&&(this.emit("active"),t(),e&&this.#_(),!0)}}return!1}#_(){this.#r||void 0!==this.#u||(this.#u=setInterval((()=>{this.#w()}),this.#s),this.#a=Date.now()+this.#s)}#w(){0===this.#i&&0===this.#l&&this.#u&&(clearInterval(this.#u),this.#u=void 0),this.#i=this.#n?this.#l:0,this.#D()}#D(){for(;this.#v(););}get concurrency(){return this.#h}set concurrency(e){if(!("number"==typeof e&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#h=e,this.#D()}async#E(e){return new Promise(((t,n)=>{e.addEventListener("abort",(()=>{n(e.reason)}),{once:!0})}))}async add(e,t={}){return t={timeout:this.timeout,throwOnTimeout:this.#p,...t},new Promise(((n,r)=>{this.#t.enqueue((async()=>{this.#l++,this.#i++;try{t.signal?.throwIfAborted();let r=e({signal:t.signal});t.timeout&&(r=function(e,t){const{milliseconds:n,fallback:r,message:i,customTimers:o={setTimeout,clearTimeout}}=t;let s;const a=new Promise(((a,u)=>{if("number"!=typeof n||1!==Math.sign(n))throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${n}\``);if(t.signal){const{signal:e}=t;e.aborted&&u(Cx(e)),e.addEventListener("abort",(()=>{u(Cx(e))}))}if(n===Number.POSITIVE_INFINITY)return void e.then(a,u);const c=new Mx;s=o.setTimeout.call(void 0,(()=>{if(r)try{a(r())}catch(e){u(e)}else"function"==typeof e.cancel&&e.cancel(),!1===i?a():i instanceof Error?u(i):(c.message=i??`Promise timed out after ${n} milliseconds`,u(c))}),n),(async()=>{try{a(await e)}catch(e){u(e)}})()})).finally((()=>{a.clear()}));return a.clear=()=>{o.clearTimeout.call(void 0,s),s=void 0},a}(Promise.resolve(r),{milliseconds:t.timeout})),t.signal&&(r=Promise.race([r,this.#E(t.signal)]));const i=await r;n(i),this.emit("completed",i)}catch(e){if(e instanceof Mx&&!t.throwOnTimeout)return void n();r(e),this.emit("error",e)}finally{this.#y()}}),t),this.emit("add"),this.#v()}))}async addAll(e,t){return Promise.all(e.map((async e=>this.add(e,t))))}start(){return this.#f?(this.#f=!1,this.#D(),this):this}pause(){this.#f=!0}clear(){this.#t=new this.#d}async onEmpty(){0!==this.#t.size&&await this.#M("empty")}async onSizeLessThan(e){this.#t.sizethis.#t.size{const r=()=>{t&&!t()||(this.off(e,r),n())};this.on(e,r)}))}get size(){return this.#t.size}sizeBy(e){return this.#t.filter(e).length}get pending(){return this.#l}get isPaused(){return this.#f}}class Ix extends au{constructor(e,t){super(e),this.requestTimeoutInMs=void 0===e?void 0:e.requestTimeout,this.reverseProxyNoSignUrl=t}handle(t){return e(this,arguments,void 0,(function*(e,{abortSignal:t}={}){if(null==t?void 0:t.aborted){const e=new Error("Request aborted");return e.name="AbortError",Promise.reject(e)}let n=e.path;if(e.query){const t=iu(e.query);t&&(n+=`?${t}`)}const{port:r,method:i}=e;let o=`${e.protocol}//${e.hostname}${r?`:${r}`:""}${n}`;if(void 0!==this.reverseProxyNoSignUrl&&""!==this.reverseProxyNoSignUrl){const e=new URL(o);e.host=this.reverseProxyNoSignUrl,o=e.href}const s="GET"===i||"HEAD"===i?void 0:e.body,a={};for(const t of Object.keys(e.headers)){const n=t.toLowerCase();"host"!==n&&"content-length"!==n&&(a[n]=e.headers[t])}let u;void 0!==a["content-type"]&&(u=a["content-type"]);let c=s;ArrayBuffer.isView(s)&&(c=F(s));const d={body:c,headers:a,method:i,url:o,contentType:u},h=[(0,l.requestUrl)(d).then((e=>{const t=e.headers,n={};for(const e of Object.keys(t))n[e.toLowerCase()]=t[e];const r=new ReadableStream({start(t){t.enqueue(new Uint8Array(e.arrayBuffer)),t.close()}});return{response:new Ca({headers:n,statusCode:e.status,body:r})}})),ou(this.requestTimeoutInMs)];return t&&h.push(new Promise(((e,n)=>{t.onabort=()=>{const e=new Error("Request aborted");e.name="AbortError",n(e)}}))),Promise.race(h)}))}}const Rx=e=>{if(void 0===e)return"";let t=S.posix.normalize(e.trim());return void 0===t||""===t||"/"===t||"."===t?"":(t.startsWith("/")&&(t=t.slice(1)),t.endsWith("/")||(t=`${t}/`),t)},Fx=(e,t)=>{if(e!==`${t}`&&!e.startsWith(`${t}`))throw Error(`"${e}" doesn't starts with "${t}"`);return e.slice(`${t}`.length)},Ox=(e,t)=>{if(void 0===t||""===t)return e;let n=e;return"/"!==e&&""!==e||(n=t),e.startsWith("/")||(n=`${t}${e}`),n},Bx=(e,t,n,r)=>{const i=1e3*Math.floor(e.LastModified.valueOf()/1e3);let o=i;if(e.Key in n){const t=n[e.Key];0!==t&&(o=t>=1e12?t:1e3*t)}const s=Fx(e.Key,t);return{key:s,keyRaw:s,mtimeSvr:i,mtimeCli:o,sizeRaw:e.Size,size:e.Size,etag:e.ETag,synthesizedFolder:!1}};class Px extends Q{constructor(e){super(),this.s3Config=e,this.s3Client=(e=>{let t,n=e.s3Endpoint;return n.startsWith("http://")||n.startsWith("https://")||(n=`https://${n}`),t=b&&e.bypassCorsLocally?new C_({region:e.s3Region,endpoint:n,forcePathStyle:e.forcePathStyle,credentials:{accessKeyId:e.s3AccessKeyID,secretAccessKey:e.s3SecretAccessKey},requestHandler:new Ix(void 0,e.reverseProxyNoSignUrl)}):new C_({region:e.s3Region,endpoint:n,forcePathStyle:e.forcePathStyle,credentials:{accessKeyId:e.s3AccessKeyID,secretAccessKey:e.s3SecretAccessKey}}),t.middlewareStack.add(((e,t)=>t=>(t.request.headers["cache-control"]="no-cache",e(t))),{step:"build"}),t})(e),this.kind="s3",this.synthFoldersCache={}}walk(){return e(this,void 0,void 0,(function*(){const e=(yield this._walkFromRoot(this.s3Config.remotePrefix)).filter((e=>""!==e.key&&"/"!==e.key));return e}))}_walkFromRoot(t){return e(this,void 0,void 0,(function*(){var n,r;const i={Bucket:this.s3Config.s3BucketName};void 0!==t&&""!==t&&(i.Prefix=t);const o=[],s={},a={},u=new Tx({concurrency:this.s3Config.partsConcurrency,autoStart:!0});u.on("error",(e=>{throw u.pause(),u.clear(),e}));let c=!0;do{const t=yield this.s3Client.send(new k_(i));if(200!==t.$metadata.httpStatusCode)throw Error("some thing bad while listing remote!");if(void 0===t.Contents)break;if(o.push(...t.Contents),this.s3Config.useAccurateMTime)for(const n of t.Contents)u.add((()=>e(this,void 0,void 0,(function*(){const e=yield this.s3Client.send(new F_({Bucket:this.s3Config.s3BucketName,Key:n.Key}));if(200!==e.$metadata.httpStatusCode)throw Error("some thing bad while heading single object!");void 0===e.Metadata||(s[n.Key]=Math.floor(Number.parseFloat(e.Metadata.mtime||e.Metadata.MTime||"0")),a[n.Key]=Math.floor(Number.parseFloat(e.Metadata.ctime||e.Metadata.CTime||"0")))}))));if(c=null!==(n=t.IsTruncated)&&void 0!==n&&n,i.ContinuationToken=t.NextContinuationToken,c&&(void 0===i.ContinuationToken||""===i.ContinuationToken))throw Error("isTruncated is true but no continuationToken provided")}while(c);yield u.onIdle();const d=[],l=new Set;for(const e of o){const t=Bx(e,null!==(r=this.s3Config.remotePrefix)&&void 0!==r?r:"",s);l.add(t.key),d.push(t);for(const e of I(t.key,!0))l.has(e)?delete this.synthFoldersCache[e]:(!this.synthFoldersCache.hasOwnProperty(e)||t.mtimeSvr>=this.synthFoldersCache[e].mtimeSvr)&&(this.synthFoldersCache[e]={key:e,keyRaw:e,size:0,sizeRaw:0,sizeEnc:0,mtimeSvr:t.mtimeSvr,mtimeSvrFmt:t.mtimeSvrFmt,mtimeCli:t.mtimeCli,mtimeCliFmt:t.mtimeCliFmt,synthesizedFolder:!0})}for(const e of Object.keys(this.synthFoldersCache))d.push(this.synthFoldersCache[e]);return d}))}stat(t){return e(this,void 0,void 0,(function*(){var e;if(this.synthFoldersCache.hasOwnProperty(t))return this.synthFoldersCache[t];let n=t;return n=Ox(n,null!==(e=this.s3Config.remotePrefix)&&void 0!==e?e:""),yield this._statFromRoot(n)}))}_statFromRoot(t){return e(this,void 0,void 0,(function*(){var e,n;if(void 0!==this.s3Config.remotePrefix&&""!==this.s3Config.remotePrefix&&!t.startsWith(this.s3Config.remotePrefix))throw Error("_statFromRoot should only accept prefix-ed path");const r=yield this.s3Client.send(new F_({Bucket:this.s3Config.s3BucketName,Key:t}));return((e,t,n,r)=>{const i=1e3*Math.floor(t.LastModified.valueOf()/1e3);let o=i;if(r&&void 0!==t.Metadata){const e=Math.floor(Number.parseFloat(t.Metadata.mtime||t.Metadata.MTime||"0"));0!==e&&(o=e>=1e12?e:1e3*e)}const s=Fx(e,n);return{key:s,keyRaw:s,mtimeSvr:i,mtimeCli:o,sizeRaw:t.ContentLength,size:t.ContentLength,etag:t.ETag,synthesizedFolder:!1}})(t,r,null!==(e=this.s3Config.remotePrefix)&&void 0!==e?e:"",null!==(n=this.s3Config.useAccurateMTime)&&void 0!==n&&n)}))}mkdir(t,n,r){return e(this,void 0,void 0,(function*(){var e,i;if(!t.endsWith("/"))throw new Error(`You should not call mkdir on ${t}!`);if(!(null!==(e=this.s3Config.generateFolderObject)&&void 0!==e&&e)){const e={key:t,keyRaw:t,size:0,sizeRaw:0,sizeEnc:0,mtimeSvr:n,mtimeCli:n,synthesizedFolder:!0};return this.synthFoldersCache[t]=e,e}const o=Ox(t,null!==(i=this.s3Config.remotePrefix)&&void 0!==i?i:"");return yield this._mkdirFromRoot(o,n,r)}))}_mkdirFromRoot(t,n,r){return e(this,void 0,void 0,(function*(){if(void 0!==this.s3Config.remotePrefix&&""!==this.s3Config.remotePrefix&&!t.startsWith(this.s3Config.remotePrefix))throw Error("_mkdirFromRoot should only accept prefix-ed path");const e=h,i={Bucket:this.s3Config.s3BucketName,Key:t,Body:"",ContentType:e,ContentLength:0},o={};return void 0!==n&&0!==n&&(o.MTime=""+n/1e3),void 0!==r&&0!==r&&(o.CTime=""+r/1e3),Object.keys(o).length>0&&(i.Metadata=o),yield this.s3Client.send(new Q_(i)),yield this._statFromRoot(t)}))}writeFile(t,n,r,i){return e(this,void 0,void 0,(function*(){var e;const o=Ox(t,null!==(e=this.s3Config.remotePrefix)&&void 0!==e?e:"");return yield this._writeFileFromRoot(o,n,r,i)}))}_writeFileFromRoot(t,n,r,i){return e(this,void 0,void 0,(function*(){if(void 0!==this.s3Config.remotePrefix&&""!==this.s3Config.remotePrefix&&!t.startsWith(this.s3Config.remotePrefix))throw Error("_writeFileFromRoot should only accept prefix-ed path");const e=new Uint8Array(n);let o=h;o=Dx.contentType(Dx.lookup(t)||h)||h;const s=new yx({client:this.s3Client,queueSize:this.s3Config.partsConcurrency,partSize:5242880,leavePartsOnError:!1,params:{Bucket:this.s3Config.s3BucketName,Key:t,Body:e,ContentType:o,Metadata:{MTime:""+r/1e3,CTime:""+i/1e3}}});return s.on("httpUploadProgress",(e=>{})),yield s.done(),yield this._statFromRoot(t)}))}readFile(t){return e(this,void 0,void 0,(function*(){var e;if(t.endsWith("/"))throw new Error(`you should not call readFile on folder ${t}`);const n=Ox(t,null!==(e=this.s3Config.remotePrefix)&&void 0!==e?e:"");return yield this._readFileFromRoot(n)}))}_readFileFromRoot(t){return e(this,void 0,void 0,(function*(){if(void 0!==this.s3Config.remotePrefix&&""!==this.s3Config.remotePrefix&&!t.startsWith(this.s3Config.remotePrefix))throw Error("_readFileFromRoot should only accept prefix-ed path");const n=yield this.s3Client.send(new ex({Bucket:this.s3Config.s3BucketName,Key:t})),r=yield(t=>e(void 0,void 0,void 0,(function*(){if(void 0===t)throw Error("ObjectBody is undefined and don't know how to deal with it");if(t instanceof ya.Readable)return yield new Promise(((e,n)=>{const r=[];t.on("data",(e=>r.push(e))),t.on("error",n),t.on("end",(()=>e(F(ga.Buffer.concat(r)))))}));if(t instanceof ReadableStream)return yield new Response(t,{}).arrayBuffer();if(t instanceof Blob)return yield t.arrayBuffer();throw TypeError(`The type of ${t} is not one of the supported types`)})))(n.Body);return r}))}rm(t){return e(this,void 0,void 0,(function*(){var e;if("/"===t)return;if(this.synthFoldersCache.hasOwnProperty(t))return void delete this.synthFoldersCache[t];const n=Ox(t,null!==(e=this.s3Config.remotePrefix)&&void 0!==e?e:"");yield this.s3Client.send(new tx({Bucket:this.s3Config.s3BucketName,Key:n}))}))}checkConnect(t){return e(this,void 0,void 0,(function*(){try{if(l.Platform.isIosApp&&this.s3Config.s3Endpoint.startsWith("http://"))throw Error("Your s3 endpoint could only be https, not http, because of the iOS restriction.");const e={Bucket:this.s3Config.s3BucketName},n=yield this.s3Client.send(new k_(e));if(void 0===n||void 0===n.$metadata||void 0===n.$metadata.httpStatusCode){const e="results or $metadata or httStatusCode is undefined";return console.debug(e),void 0!==t&&t(e),!1}return 200===n.$metadata.httpStatusCode}catch(e){if(console.debug(e),void 0!==t)if(this.s3Config.s3Endpoint.contains(this.s3Config.s3BucketName)){const n=new xx([e,new Error("Maybe you've included the bucket name inside the endpoint setting. Please remove the bucket name and try again.")]);t(n)}else t(e);return!1}}))}getUserDisplayName(){return e(this,void 0,void 0,(function*(){throw new Error("Method not implemented.")}))}revokeAuth(){return e(this,void 0,void 0,(function*(){throw new Error("Method not implemented.")}))}allowEmptyFile(){return!0}}var Nx=n(19409),jx=n(26794),Lx=n(21013),Ux=n.n(Lx),qx=n(35970),$x=n.n(qx),zx=n(65606),Hx={2:e=>{function t(e,t,i){e instanceof RegExp&&(e=n(e,i)),t instanceof RegExp&&(t=n(t,i));var o=r(e,t,i);return o&&{start:o[0],end:o[1],pre:i.slice(0,o[0]),body:i.slice(o[0]+e.length,o[1]),post:i.slice(o[1]+t.length)}}function n(e,t){var n=t.match(e);return n?n[0]:null}function r(e,t,n){var r,i,o,s,a,u=n.indexOf(e),c=n.indexOf(t,u+1),d=u;if(u>=0&&c>0){for(r=[],o=n.length;d>=0&&!a;)d==u?(r.push(d),u=n.indexOf(e,d+1)):1==r.length?a=[r.pop(),c]:((i=r.pop())=0?u:c;r.length&&(a=[o,s])}return a}e.exports=t,t.range=r},101:function(e,t,n){var r;e=n.nmd(e),function(i){var o=(e&&e.exports,"object"==typeof global&&global);o.global!==o&&o.window;var s=function(e){this.message=e};(s.prototype=new Error).name="InvalidCharacterError";var a=function(e){throw new s(e)},u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=/[\t\n\f\r ]/g,d={encode:function(e){e=String(e),/[^\0-\xFF]/.test(e)&&a("The string to be encoded contains characters outside of the Latin1 range.");for(var t,n,r,i,o=e.length%3,s="",c=-1,d=e.length-o;++c>18&63)+u.charAt(i>>12&63)+u.charAt(i>>6&63)+u.charAt(63&i);return 2==o?(t=e.charCodeAt(c)<<8,n=e.charCodeAt(++c),s+=u.charAt((i=t+n)>>10)+u.charAt(i>>4&63)+u.charAt(i<<2&63)+"="):1==o&&(i=e.charCodeAt(c),s+=u.charAt(i>>2)+u.charAt(i<<4&63)+"=="),s},decode:function(e){var t=(e=String(e).replace(c,"")).length;t%4==0&&(t=(e=e.replace(/==?$/,"")).length),(t%4==1||/[^+a-zA-Z0-9/]/.test(e))&&a("Invalid character: the string to be decoded is not correctly encoded.");for(var n,r,i=0,o="",s=-1;++s>(-2*i&6)));return o},version:"1.0.0"};void 0===(r=function(){return d}.call(t,n,t,e))||(e.exports=r)}()},172:(e,t)=>{t.d=function(e){if(!e)return 0;for(var t=(e=e.toString()).length,n=e.length;n--;){var r=e.charCodeAt(n);56320<=r&&r<=57343&&n--,127{var t={utf8:{stringToBytes:function(e){return t.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(t.bin.bytesToString(e)))}},bin:{stringToBytes:function(e){for(var t=[],n=0;n{var t,n;t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n={rotl:function(e,t){return e<>>32-t},rotr:function(e,t){return e<<32-t|e>>>t},endian:function(e){if(e.constructor==Number)return 16711935&n.rotl(e,8)|4278255360&n.rotl(e,24);for(var t=0;t0;e--)t.push(Math.floor(256*Math.random()));return t},bytesToWords:function(e){for(var t=[],n=0,r=0;n>>5]|=e[n]<<24-r%32;return t},wordsToBytes:function(e){for(var t=[],n=0;n<32*e.length;n+=8)t.push(e[n>>>5]>>>24-n%32&255);return t},bytesToHex:function(e){for(var t=[],n=0;n>>4).toString(16)),t.push((15&e[n]).toString(16));return t.join("")},hexToBytes:function(e){for(var t=[],n=0;n>>6*(3-o)&63)):n.push("=");return n.join("")},base64ToBytes:function(e){e=e.replace(/[^A-Z0-9+\/]/gi,"");for(var n=[],r=0,i=0;r>>6-2*i);return n}},e.exports=n},635:(e,t,n)=>{const r=n(31),i=n(338),o=n(221);e.exports={XMLParser:i,XMLValidator:r,XMLBuilder:o}},705:(e,t)=>{const n=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",r="["+n+"]["+n+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",i=new RegExp("^"+r+"$");t.isExist=function(e){return void 0!==e},t.isEmptyObject=function(e){return 0===Object.keys(e).length},t.merge=function(e,t,n){if(t){const r=Object.keys(t),i=r.length;for(let o=0;o{const r=n(705),i={allowBooleanAttributes:!1,unpairedTags:[]};function o(e){return" "===e||"\t"===e||"\n"===e||"\r"===e}function s(e,t){const n=t;for(;t5&&"xml"===r)return p("InvalidXml","XML declaration allowed only at the start of the document.",g(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function a(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let n=1;for(t+=8;t"===e[t]&&(n--,0===n))break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t"===e[t+2]){t+=2;break}return t}t.validate=function(e,t){t=Object.assign({},i,t);const n=[];let u=!1,c=!1;"\ufeff"===e[0]&&(e=e.substr(1));for(let i=0;i"!==e[i]&&" "!==e[i]&&"\t"!==e[i]&&"\n"!==e[i]&&"\r"!==e[i];i++)v+=e[i];if(v=v.trim(),"/"===v[v.length-1]&&(v=v.substring(0,v.length-1),i--),l=v,!r.isName(l)){let t;return t=0===v.trim().length?"Invalid space after '<'.":"Tag '"+v+"' is an invalid name.",p("InvalidTag",t,g(e,i))}const b=d(e,i);if(!1===b)return p("InvalidAttr","Attributes for '"+v+"' have open quote.",g(e,i));let w=b.value;if(i=b.index,"/"===w[w.length-1]){const n=i-w.length;w=w.substring(0,w.length-1);const r=h(w,t);if(!0!==r)return p(r.err.code,r.err.msg,g(e,n+r.err.line));u=!0}else if(y){if(!b.tagClosed)return p("InvalidTag","Closing tag '"+v+"' doesn't have proper closing.",g(e,i));if(w.trim().length>0)return p("InvalidTag","Closing tag '"+v+"' can't have attributes or invalid starting.",g(e,m));{const t=n.pop();if(v!==t.tagName){let n=g(e,t.tagStartPos);return p("InvalidTag","Expected closing tag '"+t.tagName+"' (opened in line "+n.line+", col "+n.col+") instead of closing tag '"+v+"'.",g(e,m))}0==n.length&&(c=!0)}}else{const r=h(w,t);if(!0!==r)return p(r.err.code,r.err.msg,g(e,i-w.length+r.err.line));if(!0===c)return p("InvalidXml","Multiple possible root nodes found.",g(e,i));-1!==t.unpairedTags.indexOf(v)||n.push({tagName:v,tagStartPos:m}),u=!0}for(i++;i0)||p("InvalidXml","Invalid '"+JSON.stringify(n.map((e=>e.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):p("InvalidXml","Start tag expected.",1)};const u='"',c="'";function d(e,t){let n="",r="",i=!1;for(;t"===e[t]&&""===r){i=!0;break}n+=e[t]}return""===r&&{value:n,index:t,tagClosed:i}}const l=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function h(e,t){const n=r.getAllMatches(e,l),i={};for(let e=0;e{const r=n(87),i={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function o(e){this.options=Object.assign({},i,e),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=u),this.processTextOrObjNode=s,this.options.format?(this.indentate=a,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function s(e,t,n){const r=this.j2x(e,n+1);return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,r.attrStr,n):this.buildObjectNode(r.val,t,r.attrStr,n)}function a(e){return this.options.indentBy.repeat(e)}function u(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}o.prototype.build=function(e){return this.options.preserveOrder?r(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0).val)},o.prototype.j2x=function(e,t){let n="",r="";for(let i in e)if(void 0===e[i])this.isAttribute(i)&&(r+="");else if(null===e[i])this.isAttribute(i)?r+="":"?"===i[0]?r+=this.indentate(t)+"<"+i+"?"+this.tagEndChar:r+=this.indentate(t)+"<"+i+"/"+this.tagEndChar;else if(e[i]instanceof Date)r+=this.buildTextValNode(e[i],i,"",t);else if("object"!=typeof e[i]){const o=this.isAttribute(i);if(o)n+=this.buildAttrPairStr(o,""+e[i]);else if(i===this.options.textNodeName){let t=this.options.tagValueProcessor(i,""+e[i]);r+=this.replaceEntitiesValue(t)}else r+=this.buildTextValNode(e[i],i,"",t)}else if(Array.isArray(e[i])){const n=e[i].length;let o="";for(let s=0;s"+e+i}},o.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":">")+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(r)+"\x3c!--".concat(e,"--\x3e")+this.newLine;if("?"===t[0])return this.indentate(r)+"<"+t+n+"?"+this.tagEndChar;{let i=this.options.tagValueProcessor(t,e);return i=this.replaceEntitiesValue(i),""===i?this.indentate(r)+"<"+t+n+this.closeTag(t)+this.tagEndChar:this.indentate(r)+"<"+t+n+">"+i+"0&&this.options.processEntities)for(let t=0;t{function t(e,s,a,u){let c="",d=!1;for(let l=0;l"),d=!1;continue}if(f===s.commentPropName){c+=u+"\x3c!--".concat(h[f][0][s.textNodeName],"--\x3e"),d=!0;continue}if("?"===f[0]){const e=r(h[":@"],s),t="?xml"===f?"":u;let n=h[f][0][s.textNodeName];n=0!==n.length?" "+n:"",c+=t+"<".concat(f).concat(n).concat(e,"?>"),d=!0;continue}let m=u;""!==m&&(m+=s.indentBy);const g=r(h[":@"],s),y=u+"<".concat(f).concat(g),v=t(h[f],s,p,m);-1!==s.unpairedTags.indexOf(f)?s.suppressUnpairedNode?c+=y+">":c+=y+"/>":v&&0!==v.length||!s.suppressEmptyNode?v&&v.endsWith(">")?c+=y+">".concat(v).concat(u,""):(c+=y+">",v&&""!==u&&(v.includes("/>")||v.includes("")):c+=y+"/>",d=!0}return c}function n(e){const t=Object.keys(e);for(let e=0;e0&&t.processEntities)for(let n=0;n0&&(r="\n"),t(e,n,"",r)}},193:(e,t,n)=>{const r=n(705);function i(e,t){let n="";for(;t"===e[t]){if(h?"-"===e[t-1]&&"-"===e[t-2]&&(h=!1,r--):r--,0===r)break}else"["===e[t]?l=!0:f+=e[t];else{if(l&&s(e,t))t+=7,[entityName,val,t]=i(e,t+1),-1===val.indexOf("&")&&(n[d(entityName)]={regx:RegExp("&".concat(entityName,";"),"g"),val});else if(l&&a(e,t))t+=8;else if(l&&u(e,t))t+=8;else if(l&&c(e,t))t+=9;else{if(!o)throw new Error("Invalid DOCTYPE");h=!0}r++,f=""}if(0!==r)throw new Error("Unclosed DOCTYPE")}return{entities:n,i:t}}},63:(e,t)=>{const n={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,n){return e}};t.buildOptions=function(e){return Object.assign({},n,e)},t.defaultOptions=n},299:(e,t,n)=>{const r=n(705),i=n(365),o=n(193),s=n(494);function a(e){const t=Object.keys(e);for(let n=0;n0)){s||(e=this.replaceEntitiesValue(e));const r=this.options.tagValueProcessor(t,e,n,i,o);return null==r?e:typeof r!=typeof e||r!==e?r:this.options.trimValues||e.trim()===e?w(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function c(e){if(this.options.removeNSPrefix){const t=e.split(":"),n="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=n+t[1])}return e}"<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\/)(NAME)\\s*>))([^<]*)".replace(/NAME/g,r.nameRegexp);const d=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function l(e,t,n){if(!this.options.ignoreAttributes&&"string"==typeof e){const n=r.getAllMatches(e,d),i=n.length,o={};for(let e=0;e",a,"Closing Tag is not closed.");let i=e.substring(a+2,t).trim();if(this.options.removeNSPrefix){const e=i.indexOf(":");-1!==e&&(i=i.substr(e+1))}this.options.transformTagName&&(i=this.options.transformTagName(i)),n&&(r=this.saveTextToParentTag(r,n,s));const o=s.substring(s.lastIndexOf(".")+1);if(i&&-1!==this.options.unpairedTags.indexOf(i))throw new Error("Unpaired tag can not be used as closing tag: "));let u=0;o&&-1!==this.options.unpairedTags.indexOf(o)?(u=s.lastIndexOf(".",s.lastIndexOf(".")-1),this.tagsNodeStack.pop()):u=s.lastIndexOf("."),s=s.substring(0,u),n=this.tagsNodeStack.pop(),r="",a=t}else if("?"===e[a+1]){let t=v(e,a,!1,"?>");if(!t)throw new Error("Pi Tag is not closed.");if(r=this.saveTextToParentTag(r,n,s),this.options.ignoreDeclaration&&"?xml"===t.tagName||this.options.ignorePiTags);else{const e=new i(t.tagName);e.add(this.options.textNodeName,""),t.tagName!==t.tagExp&&t.attrExpPresent&&(e[":@"]=this.buildAttributesMap(t.tagExp,s,t.tagName)),this.addChild(n,e,s)}a=t.closeIndex+1}else if("!--"===e.substr(a+1,3)){const t=y(e,"--\x3e",a+4,"Comment is not closed.");if(this.options.commentPropName){const i=e.substring(a+4,t-2);r=this.saveTextToParentTag(r,n,s),n.add(this.options.commentPropName,[{[this.options.textNodeName]:i}])}a=t}else if("!D"===e.substr(a+1,2)){const t=o(e,a);this.docTypeEntities=t.entities,a=t.i}else if("!["===e.substr(a+1,2)){const t=y(e,"]]>",a,"CDATA is not closed.")-2,i=e.substring(a+9,t);if(r=this.saveTextToParentTag(r,n,s),this.options.cdataPropName)n.add(this.options.cdataPropName,[{[this.options.textNodeName]:i}]);else{let e=this.parseTextData(i,n.tagname,s,!0,!1,!0);null==e&&(e=""),n.add(this.options.textNodeName,e)}a=t+2}else{let o=v(e,a,this.options.removeNSPrefix),u=o.tagName,c=o.tagExp,d=o.attrExpPresent,l=o.closeIndex;this.options.transformTagName&&(u=this.options.transformTagName(u)),n&&r&&"!xml"!==n.tagname&&(r=this.saveTextToParentTag(r,n,s,!1));const h=n;if(h&&-1!==this.options.unpairedTags.indexOf(h.tagname)&&(n=this.tagsNodeStack.pop(),s=s.substring(0,s.lastIndexOf("."))),u!==t.tagname&&(s+=s?"."+u:u),this.isItStopNode(this.options.stopNodes,s,u)){let t="";if(c.length>0&&c.lastIndexOf("/")===c.length-1)a=o.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(u))a=o.closeIndex;else{const n=this.readStopNodeData(e,u,l+1);if(!n)throw new Error("Unexpected end of ".concat(u));a=n.i,t=n.tagContent}const r=new i(u);u!==c&&d&&(r[":@"]=this.buildAttributesMap(c,s,u)),t&&(t=this.parseTextData(t,u,s,!0,d,!0,!0)),s=s.substr(0,s.lastIndexOf(".")),r.add(this.options.textNodeName,t),this.addChild(n,r,s)}else{if(c.length>0&&c.lastIndexOf("/")===c.length-1){"/"===u[u.length-1]?(u=u.substr(0,u.length-1),s=s.substr(0,s.length-1),c=u):c=c.substr(0,c.length-1),this.options.transformTagName&&(u=this.options.transformTagName(u));const e=new i(u);u!==c&&d&&(e[":@"]=this.buildAttributesMap(c,s,u)),this.addChild(n,e,s),s=s.substr(0,s.lastIndexOf("."))}else{const e=new i(u);this.tagsNodeStack.push(n),u!==c&&d&&(e[":@"]=this.buildAttributesMap(c,s,u)),this.addChild(n,e,s),n=e}r="",a=l}}else r+=e[a];return t.child};function f(e,t,n){const r=this.options.updateTag(t.tagname,n,t[":@"]);!1===r||("string"==typeof r?(t.tagname=r,e.addChild(t)):e.addChild(t))}const p=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const n=this.docTypeEntities[t];e=e.replace(n.regx,n.val)}for(let t in this.lastEntities){const n=this.lastEntities[t];e=e.replace(n.regex,n.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const n=this.htmlEntities[t];e=e.replace(n.regex,n.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function m(e,t,n,r){return e&&(void 0===r&&(r=0===Object.keys(t.child).length),void 0!==(e=this.parseTextData(e,t.tagname,n,!1,!!t[":@"]&&0!==Object.keys(t[":@"]).length,r))&&""!==e&&t.add(this.options.textNodeName,e),e=""),e}function g(e,t,n){const r="*."+n;for(const n in e){const i=e[n];if(r===i||t===i)return!0}return!1}function y(e,t,n,r){const i=e.indexOf(t,n);if(-1===i)throw new Error(r);return i+t.length-1}function v(e,t,n){const r=function(e,t){let n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:">",i="";for(let o=t;o3&&void 0!==arguments[3]?arguments[3]:">");if(!r)return;let i=r.data;const o=r.index,s=i.search(/\s/);let a=i,u=!0;if(-1!==s&&(a=i.substr(0,s).replace(/\s\s*$/,""),i=i.substr(s+1)),n){const e=a.indexOf(":");-1!==e&&(a=a.substr(e+1),u=a!==r.data.substr(e+1))}return{tagName:a,tagExp:i,closeIndex:o,attrExpPresent:u}}function b(e,t,n){const r=n;let i=1;for(;n",n,"".concat(t," is not closed"));if(e.substring(n+2,o).trim()===t&&(i--,0===i))return{tagContent:e.substring(r,n),i:o};n=o}else if("?"===e[n+1])n=y(e,"?>",n+1,"StopNode is not closed.");else if("!--"===e.substr(n+1,3))n=y(e,"--\x3e",n+3,"StopNode is not closed.");else if("!["===e.substr(n+1,2))n=y(e,"]]>",n,"StopNode is not closed.")-2;else{const r=v(e,n,">");r&&((r&&r.tagName)===t&&"/"!==r.tagExp[r.tagExp.length-1]&&i++,n=r.closeIndex)}}function w(e,t,n){if(t&&"string"==typeof e){const t=e.trim();return"true"===t||"false"!==t&&s(e,n)}return r.isExist(e)?e:""}e.exports=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"}},this.addExternalEntities=a,this.parseXml=h,this.parseTextData=u,this.resolveNameSpace=c,this.buildAttributesMap=l,this.isItStopNode=g,this.replaceEntitiesValue=p,this.readStopNodeData=b,this.saveTextToParentTag=m,this.addChild=f}}},338:(e,t,n)=>{const{buildOptions:r}=n(63),i=n(299),{prettify:o}=n(728),s=n(31);e.exports=class{constructor(e){this.externalEntities={},this.options=r(e)}parse(e,t){if("string"==typeof e);else{if(!e.toString)throw new Error("XML data is accepted in String or Bytes[] form.");e=e.toString()}if(t){!0===t&&(t={});const n=s.validate(e,t);if(!0!==n)throw Error("".concat(n.err.msg,":").concat(n.err.line,":").concat(n.err.col))}const n=new i(this.options);n.addExternalEntities(this.externalEntities);const r=n.parseXml(e);return this.options.preserveOrder||void 0===r?r:o(r,this.options)}addEntity(e,t){if(-1!==t.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==e.indexOf("&")||-1!==e.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '");if("&"===t)throw new Error("An entity with value '&' is not permitted");this.externalEntities[e]=t}}},728:(e,t)=>{function n(e,t,s){let a;const u={};for(let c=0;c0&&(u[t.textNodeName]=a):void 0!==a&&(u[t.textNodeName]=a),u}function r(e){const t=Object.keys(e);for(let e=0;e{e.exports=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}}},135:e=>{function t(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}e.exports=function(e){return null!=e&&(t(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&t(e.slice(0,0))}(e)||!!e._isBuffer)}},542:(e,t,n)=>{var r,i,o,s,a;r=n(298),i=n(526).utf8,o=n(135),s=n(526).bin,(a=function(e,t){e.constructor==String?e=t&&"binary"===t.encoding?s.stringToBytes(e):i.stringToBytes(e):o(e)?e=Array.prototype.slice.call(e,0):Array.isArray(e)||e.constructor===Uint8Array||(e=e.toString());for(var n=r.bytesToWords(e),u=8*e.length,c=1732584193,d=-271733879,l=-1732584194,h=271733878,f=0;f>>24)|4278255360&(n[f]<<24|n[f]>>>8);n[u>>>5]|=128<>>9<<4)]=u;var p=a._ff,m=a._gg,g=a._hh,y=a._ii;for(f=0;f>>0,d=d+b>>>0,l=l+w>>>0,h=h+_>>>0}return r.endian([c,d,l,h])})._ff=function(e,t,n,r,i,o,s){var a=e+(t&n|~t&r)+(i>>>0)+s;return(a<>>32-o)+t},a._gg=function(e,t,n,r,i,o,s){var a=e+(t&r|n&~r)+(i>>>0)+s;return(a<>>32-o)+t},a._hh=function(e,t,n,r,i,o,s){var a=e+(t^n^r)+(i>>>0)+s;return(a<>>32-o)+t},a._ii=function(e,t,n,r,i,o,s){var a=e+(n^(t|~r))+(i>>>0)+s;return(a<>>32-o)+t},a._blocksize=16,a._digestsize=16,e.exports=function(e,t){if(null==e)throw new Error("Illegal argument "+e);var n=r.wordsToBytes(a(e,t));return t&&t.asBytes?n:t&&t.asString?s.bytesToString(n):r.bytesToHex(n)}},285:(e,t,n)=>{var r=n(2);e.exports=function(e){return e?("{}"===e.substr(0,2)&&(e="\\{\\}"+e.substr(2)),g(function(e){return e.split("\\\\").join(i).split("\\{").join(o).split("\\}").join(s).split("\\,").join(a).split("\\.").join(u)}(e),!0).map(d)):[]};var i="\0SLASH"+Math.random()+"\0",o="\0OPEN"+Math.random()+"\0",s="\0CLOSE"+Math.random()+"\0",a="\0COMMA"+Math.random()+"\0",u="\0PERIOD"+Math.random()+"\0";function c(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function d(e){return e.split(i).join("\\").split(o).join("{").split(s).join("}").split(a).join(",").split(u).join(".")}function l(e){if(!e)return[""];var t=[],n=r("{","}",e);if(!n)return e.split(",");var i=n.pre,o=n.body,s=n.post,a=i.split(",");a[a.length-1]+="{"+o+"}";var u=l(s);return s.length&&(a[a.length-1]+=u.shift(),a.push.apply(a,u)),t.push.apply(t,a),t}function h(e){return"{"+e+"}"}function f(e){return/^-?0\d/.test(e)}function p(e,t){return e<=t}function m(e,t){return e>=t}function g(e,t){var n=[],i=r("{","}",e);if(!i)return[e];var o=i.pre,a=i.post.length?g(i.post,!1):[""];if(/\$$/.test(i.pre))for(var u=0;u=0;if(!_&&!x)return i.post.match(/,.*\}/)?g(e=i.pre+"{"+i.body+s+i.post):[e];if(_)y=i.body.split(/\.\./);else if(1===(y=l(i.body)).length&&1===(y=g(y[0],!1).map(h)).length)return a.map((function(e){return i.pre+y[0]+e}));if(_){var D=c(y[0]),E=c(y[1]),M=Math.max(y[0].length,y[1].length),A=3==y.length?Math.abs(c(y[2])):1,S=p;E0){var R=new Array(I+1).join("0");T=k<0?"-"+R+T.slice(1):R+T}}v.push(T)}}else{v=[];for(var F=0;F{function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t(e)}function n(e){var t="function"==typeof Map?new Map:void 0;return n=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,s)}function s(){return r(e,arguments,o(this).constructor)}return s.prototype=Object.create(e.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),i(s,e)},n(e)}function r(e,t,n){return r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&i(o,n.prototype),o},r.apply(null,arguments)}function i(e,t){return i=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},i(e,t)}function o(e){return o=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},o(e)}var s=function(e){function n(e){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),(r=function(e,n){return!n||"object"!==t(n)&&"function"!=typeof n?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):n}(this,o(n).call(this,e))).name="ObjectPrototypeMutationError",r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&i(e,t)}(n,e),n}(n(Error));function a(e,n){for(var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},i=n.split("."),o=i.length,s=function(t){var n=i[t];if(!e)return{v:void 0};if("+"===n){if(Array.isArray(e))return{v:e.map((function(n,o){var s=i.slice(t+1);return s.length>0?a(n,s.join("."),r):r(e,o,i,t)}))};var o=i.slice(0,t).join(".");throw new Error("Object at wildcard (".concat(o,") is not an array"))}e=r(e,n,i,t)},u=0;u2&&void 0!==arguments[2]?arguments[2]:{};if("object"!=t(e)||null===e)return!1;if(void 0===n)return!1;if("number"==typeof n)return n in e;try{var i=!1;return a(e,n,(function(e,t,n,o){if(!u(n,o))return e&&e[t];i=r.own?e.hasOwnProperty(t):t in e})),i}catch(e){return!1}},hasOwn:function(e,t,n){return this.has(e,t,n||{own:!0})},isIn:function(e,n,r){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("object"!=t(e)||null===e)return!1;if(void 0===n)return!1;try{var o=!1,s=!1;return a(e,n,(function(e,n,i,a){return o=o||e===r||!!e&&e[n]===r,s=u(i,a)&&"object"===t(e)&&n in e,e&&e[n]})),i.validPath?o&&s:o}catch(e){return!1}},ObjectPrototypeMutationError:s}},47:(e,t,n)=>{var r=n(410),i=function(e){return"string"==typeof e};function o(e,t){for(var n=[],r=0;r=-1&&!t;n--){var r=n>=0?arguments[n]:zx.cwd();if(!i(r))throw new TypeError("Arguments to path.resolve must be strings");r&&(e=r+"/"+e,t="/"===r.charAt(0))}return(t?"/":"")+(e=o(e.split("/"),!t).join("/"))||"."},a.normalize=function(e){var t=a.isAbsolute(e),n="/"===e.substr(-1);return(e=o(e.split("/"),!t).join("/"))||t||(e="."),e&&n&&(e+="/"),(t?"/":"")+e},a.isAbsolute=function(e){return"/"===e.charAt(0)},a.join=function(){for(var e="",t=0;t=0&&""===e[n];n--);return t>n?[]:e.slice(t,n+1)}e=a.resolve(e).substr(1),t=a.resolve(t).substr(1);for(var r=n(e.split("/")),i=n(t.split("/")),o=Math.min(r.length,i.length),s=o,u=0;u{var n=Object.prototype.hasOwnProperty;function r(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(e){return null}}function i(e){try{return encodeURIComponent(e)}catch(e){return null}}t.stringify=function(e,t){t=t||"";var r,o,s=[];for(o in"string"!=typeof t&&(t="?"),e)if(n.call(e,o)){if((r=e[o])||null!=r&&!isNaN(r)||(r=""),o=i(o),r=i(r),null===o||null===r)continue;s.push(o+"="+r)}return s.length?t+s.join("&"):""},t.parse=function(e){for(var t,n=/([^=?#&]+)=?([^&]*)/g,i={};t=n.exec(e);){var o=r(t[1]),s=r(t[2]);null===o||null===s||o in i||(i[o]=s)}return i}},670:e=>{e.exports=function(e,t){if(t=t.split(":")[0],!(e=+e))return!1;switch(t){case"http":case"ws":return 80!==e;case"https":case"wss":return 443!==e;case"ftp":return 21!==e;case"gopher":return 70!==e;case"file":return!1}return 0!==e}},494:e=>{const t=/^[-+]?0x[a-fA-F0-9]+$/,n=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const r={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};e.exports=function(e){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(i=Object.assign({},r,i),!e||"string"!=typeof e)return e;let o=e.trim();if(void 0!==i.skipLike&&i.skipLike.test(o))return e;if(i.hex&&t.test(o))return Number.parseInt(o,16);{const t=n.exec(o);if(t){const n=t[1],r=t[2];let a=(s=t[3])&&-1!==s.indexOf(".")?("."===(s=s.replace(/0+$/,""))?s="0":"."===s[0]?s="0"+s:"."===s[s.length-1]&&(s=s.substr(0,s.length-1)),s):s;const u=t[4]||t[6];if(!i.leadingZeros&&r.length>0&&n&&"."!==o[2])return e;if(!i.leadingZeros&&r.length>0&&!n&&"."!==o[1])return e;{const t=Number(o),s=""+t;return-1!==s.search(/[eE]/)||u?i.eNotation?t:e:-1!==o.indexOf(".")?"0"===s&&""===a||s===a||n&&s==="-"+a?t:e:r?a===s||n+a===s?t:e:o===s||o===n+s?t:e}}return e}var s}},737:(e,t,n)=>{var r=n(670),i=n(647),o=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,s=/[\n\r\t]/g,a=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,u=/:\d+$/,c=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,d=/^[a-zA-Z]:/;function l(e){return(e||"").toString().replace(o,"")}var h=[["#","hash"],["?","query"],function(e,t){return m(t.protocol)?e.replace(/\\/g,"/"):e},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],f={hash:1,query:1};function p(e){var t,n=("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{}).location||{},r={},i=typeof(e=e||n);if("blob:"===e.protocol)r=new y(unescape(e.pathname),{});else if("string"===i)for(t in r=new y(e,{}),f)delete r[t];else if("object"===i){for(t in e)t in f||(r[t]=e[t]);void 0===r.slashes&&(r.slashes=a.test(e.href))}return r}function m(e){return"file:"===e||"ftp:"===e||"http:"===e||"https:"===e||"ws:"===e||"wss:"===e}function g(e,t){e=(e=l(e)).replace(s,""),t=t||{};var n,r=c.exec(e),i=r[1]?r[1].toLowerCase():"",o=!!r[2],a=!!r[3],u=0;return o?a?(n=r[2]+r[3]+r[4],u=r[2].length+r[3].length):(n=r[2]+r[4],u=r[2].length):a?(n=r[3]+r[4],u=r[3].length):n=r[4],"file:"===i?u>=2&&(n=n.slice(2)):m(i)?n=r[4]:i?o&&(n=n.slice(2)):u>=2&&m(t.protocol)&&(n=r[4]),{protocol:i,slashes:o||m(i),slashesCount:u,rest:n}}function y(e,t,n){if(e=(e=l(e)).replace(s,""),!(this instanceof y))return new y(e,t,n);var o,a,u,c,f,v,b=h.slice(),w=typeof t,_=this,x=0;for("object"!==w&&"string"!==w&&(n=t,t=null),n&&"function"!=typeof n&&(n=i.parse),o=!(a=g(e||"",t=p(t))).protocol&&!a.slashes,_.slashes=a.slashes||o&&t.slashes,_.protocol=a.protocol||t.protocol||"",e=a.rest,("file:"===a.protocol&&(2!==a.slashesCount||d.test(e))||!a.slashes&&(a.protocol||a.slashesCount<2||!m(_.protocol)))&&(b[3]=[/(.*)/,"pathname"]);x{},388:()=>{},805:()=>{},345:()=>{},800:()=>{}},Kx={};function Wx(e){var t=Kx[e];if(void 0!==t)return t.exports;var n=Kx[e]={id:e,loaded:!1,exports:{}};return Hx[e].call(n.exports,n,n.exports,Wx),n.loaded=!0,n.exports}Wx.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return Wx.d(t,{a:t}),t},Wx.d=(e,t)=>{for(var n in t)Wx.o(t,n)&&!Wx.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},Wx.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Wx.nmd=e=>(e.paths=[],e.children||(e.children=[]),e);var Gx={};(()=>{Wx.d(Gx,{hT:()=>A,O4:()=>S,Kd:()=>E,YK:()=>M,UU:()=>Vt,Gu:()=>O,ky:()=>Je,h4:()=>Ye,ch:()=>Ze,hq:()=>qe,i5:()=>Xe});var e=Wx(737),t=Wx.n(e);function n(e){if(!r(e))throw new Error("Parameter was not an error")}function r(e){return"[object Error]"===(t=e,Object.prototype.toString.call(t))||e instanceof Error;var t}class i extends Error{constructor(e,t){const n=[...arguments],{options:i,shortMessage:o}=function(e){let t,n="";if(0===e.length)t={};else if(r(e[0]))t={cause:e[0]},n=e.slice(1).join(" ")||"";else if(e[0]&&"object"==typeof e[0])t=Object.assign({},e[0]),n=e.slice(1).join(" ")||"";else{if("string"!=typeof e[0])throw new Error("Invalid arguments passed to Layerr");t={},n=n=e.join(" ")||""}return{options:t,shortMessage:n}}(n);let s=o;if(i.cause&&(s="".concat(s,": ").concat(i.cause.message)),super(s),this.message=s,i.name&&"string"==typeof i.name?this.name=i.name:this.name="Layerr",i.cause&&Object.defineProperty(this,"_cause",{value:i.cause}),Object.defineProperty(this,"_info",{value:{}}),i.info&&"object"==typeof i.info&&Object.assign(this._info,i.info),Error.captureStackTrace){const e=i.constructorOpt||this.constructor;Error.captureStackTrace(this,e)}}static cause(e){return n(e),e._cause&&r(e._cause)?e._cause:null}static fullStack(e){n(e);const t=i.cause(e);return t?"".concat(e.stack,"\ncaused by: ").concat(i.fullStack(t)):e.stack}static info(e){n(e);const t={},r=i.cause(e);return r&&Object.assign(t,i.info(r)),e._info&&Object.assign(t,e._info),t}cause(){return i.cause(this)}toString(){let e=this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(e="".concat(e,": ").concat(this.message)),e}}var o=Wx(47),s=Wx.n(o);const a="__PATH_SEPARATOR_POSIX__",u="__PATH_SEPARATOR_WINDOWS__";function c(e){try{const t=e.replace(/\//g,a).replace(/\\\\/g,u);return encodeURIComponent(t).split(u).join("\\\\").split(a).join("/")}catch(e){throw new i(e,"Failed encoding path")}}function d(e){return e.startsWith("/")?e:"/"+e}function l(e){let t=e;return"/"!==t[0]&&(t="/"+t),/^.+\/$/.test(t)&&(t=t.substr(0,t.length-1)),t}function h(e){let n=new(t())(e).pathname;return n.length<=0&&(n="/"),l(n)}function f(){for(var e=arguments.length,t=new Array(e),n=0;n1){var n=e.shift();e[0]=n+e[0]}e[0].match(/^file:\/\/\//)?e[0]=e[0].replace(/^([^/:]+):\/*/,"$1:///"):e[0]=e[0].replace(/^([^/:]+):\/*/,"$1://");for(var r=0;r0&&(i=i.replace(/^[\/]+/,"")),i=r0?"?":"")+s.join("&")}("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}(t.reduce(((e,t,n)=>((0===n||"/"!==t||"/"===t&&"/"!==e[e.length-1])&&e.push(t),e)),[]))}var p=Wx(542),m=Wx.n(p);function g(e,t){const n=e.url.replace("//",""),r=-1==n.indexOf("/")?"/":n.slice(n.indexOf("/")),i=e.method?e.method.toUpperCase():"GET",o=!!/(^|,)\s*auth\s*($|,)/.test(t.qop)&&"auth",s="00000000".concat(t.nc).slice(-8),a=function(e,t,n,r,i,o,s){const a=s||m()("".concat(t,":").concat(n,":").concat(r));return e&&"md5-sess"===e.toLowerCase()?m()("".concat(a,":").concat(i,":").concat(o)):a}(t.algorithm,t.username,t.realm,t.password,t.nonce,t.cnonce,t.ha1),u=m()("".concat(i,":").concat(r)),c=o?m()("".concat(a,":").concat(t.nonce,":").concat(s,":").concat(t.cnonce,":").concat(o,":").concat(u)):m()("".concat(a,":").concat(t.nonce,":").concat(u)),d={username:t.username,realm:t.realm,nonce:t.nonce,uri:r,qop:o,response:c,nc:s,cnonce:t.cnonce,algorithm:t.algorithm,opaque:t.opaque},l=[];for(const e in d)d[e]&&("qop"===e||"nc"===e||"algorithm"===e?l.push("".concat(e,"=").concat(d[e])):l.push("".concat(e,'="').concat(d[e],'"')));return"Digest ".concat(l.join(", "))}function y(e){return"digest"===(e.headers&&e.headers.get("www-authenticate")||"").split(/\s/)[0].toLowerCase()}var v=Wx(101),b=Wx.n(v);function w(e){return b().decode(e)}function _(e,t){const n=(r="".concat(e,":").concat(t),b().encode(r));var r;return"Basic ".concat(n)}const x="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:"undefined"!=typeof window?window:globalThis,D=x.fetch.bind(x),E=(x.Headers,x.Request),M=x.Response;let A=function(e){return e.Auto="auto",e.Digest="digest",e.None="none",e.Password="password",e.Token="token",e}({}),S=function(e){return e.DataTypeNoLength="data-type-no-length",e.InvalidAuthType="invalid-auth-type",e.InvalidOutputFormat="invalid-output-format",e.LinkUnsupportedAuthType="link-unsupported-auth",e.InvalidUpdateRange="invalid-update-range",e.NotSupported="not-supported",e}({});function C(e,t,n,r,o){switch(e.authType){case A.Auto:t&&n&&(e.headers.Authorization=_(t,n));break;case A.Digest:e.digest=function(e,t,n){return{username:e,password:t,ha1:n,nc:0,algorithm:"md5",hasDigestAuth:!1}}(t,n,o);break;case A.None:break;case A.Password:e.headers.Authorization=_(t,n);break;case A.Token:e.headers.Authorization="".concat((s=r).token_type," ").concat(s.access_token);break;default:throw new i({info:{code:S.InvalidAuthType}},"Invalid auth type: ".concat(e.authType))}var s}Wx(345),Wx(800);const k="@@HOTPATCHER",T=()=>{};function I(e){return{original:e,methods:[e],final:!1}}class R{constructor(){this._configuration={registry:{},getEmptyAction:"null"},this.__type__=k}get configuration(){return this._configuration}get getEmptyAction(){return this.configuration.getEmptyAction}set getEmptyAction(e){this.configuration.getEmptyAction=e}control(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e||e.__type__!==k)throw new Error("Failed taking control of target HotPatcher instance: Invalid type or object");return Object.keys(e.configuration.registry).forEach((n=>{this.configuration.registry.hasOwnProperty(n)?t&&(this.configuration.registry[n]=Object.assign({},e.configuration.registry[n])):this.configuration.registry[n]=Object.assign({},e.configuration.registry[n])})),e._configuration=this.configuration,this}execute(e){const t=this.get(e)||T;for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i0;)i=[t.shift().apply(o,i)];return i[0]}}(...t.methods)}isPatched(e){return!!this.configuration.registry[e]}patch(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{chain:r=!1}=n;if(this.configuration.registry[e]&&this.configuration.registry[e].final)throw new Error("Failed patching '".concat(e,"': Method marked as being final"));if("function"!=typeof t)throw new Error("Failed patching '".concat(e,"': Provided method is not a function"));if(r)this.configuration.registry[e]?this.configuration.registry[e].methods.push(t):this.configuration.registry[e]=I(t);else if(this.isPatched(e)){const{original:n}=this.configuration.registry[e];this.configuration.registry[e]=Object.assign(I(t),{original:n})}else this.configuration.registry[e]=I(t);return this}patchInline(e,t){this.isPatched(e)||this.patch(e,t);for(var n=arguments.length,r=new Array(n>2?n-2:0),i=2;i1?t-1:0),r=1;r{this.patch(e,t,{chain:!0})})),this}restore(e){if(!this.isPatched(e))throw new Error("Failed restoring method: No method present for key: ".concat(e));if("function"!=typeof this.configuration.registry[e].original)throw new Error("Failed restoring method: Original method not found or of invalid type for key: ".concat(e));return this.configuration.registry[e].methods=[this.configuration.registry[e].original],this}setFinal(e){if(!this.configuration.registry.hasOwnProperty(e))throw new Error("Failed marking '".concat(e,"' as final: No method found for key"));return this.configuration.registry[e].final=!0,this}}let F=null;function O(){return F||(F=new R),F}function B(e){return function(e){if("object"!=typeof e||null===e||"[object Object]"!=Object.prototype.toString.call(e))return!1;if(null===Object.getPrototypeOf(e))return!0;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}(e)?Object.assign({},e):Object.setPrototypeOf(Object.assign({},e),Object.getPrototypeOf(e))}function P(){for(var e=arguments.length,t=new Array(e),n=0;n0;){const e=i.shift();r=r?N(r,e):B(e)}return r}function N(e,t){const n=B(e);return Object.keys(t).forEach((e=>{n.hasOwnProperty(e)?Array.isArray(t[e])?n[e]=Array.isArray(n[e])?[...n[e],...t[e]]:[...t[e]]:"object"==typeof t[e]&&t[e]?n[e]="object"==typeof n[e]&&n[e]?N(n[e],t[e]):B(t[e]):n[e]=t[e]:n[e]=t[e]})),n}function j(e){const t={};for(const n of e.keys())t[n]=e.get(n);return t}function L(){for(var e=arguments.length,t=new Array(e),n=0;n(Object.keys(t).forEach((n=>{const i=n.toLowerCase();r.hasOwnProperty(i)?e[r[i]]=t[n]:(r[i]=n,e[n]=t[n])})),e)),{})}Wx(805);const U="function"==typeof ArrayBuffer,{toString:q}=Object.prototype;function $(e){return U&&(e instanceof ArrayBuffer||"[object ArrayBuffer]"===q.call(e))}function z(e){return null!=e&&null!=e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function H(e){return function(){for(var t=[],n=0;nt.patchInline("fetch",D,e.url,function(e){let t={};const n={method:e.method};if(e.headers&&(t=L(t,e.headers)),void 0!==e.data){const[r,i]=function(e){if("string"==typeof e)return[e,{}];if(z(e))return[e,{}];if($(e))return[e,{}];if(e&&"object"==typeof e)return[JSON.stringify(e),{"content-type":"application/json"}];throw new Error("Unable to convert request body: Unexpected body type: ".concat(typeof e))}(e.data);n.body=r,t=L(t,i)}return e.signal&&(n.signal=e.signal),e.withCredentials&&(n.credentials="include"),n.headers=t,n}(e))),e)}var J=Wx(285);const X={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},Q=e=>e.replace(/[[\]\\-]/g,"\\$&"),ee=e=>e.join(""),te=(e,t)=>{const n=t;if("["!==e.charAt(n))throw new Error("not in a brace expression");const r=[],i=[];let o=n+1,s=!1,a=!1,u=!1,c=!1,d=n,l="";e:for(;ol?r.push(Q(l)+"-"+Q(t)):t===l&&r.push(Q(t)),l="",o++):e.startsWith("-]",o+1)?(r.push(Q(t+"-")),o+=2):e.startsWith("-",o+1)?(l=t,o+=2):(r.push(Q(t)),o++)}else u=!0,o++}else c=!0,o++}if(d2&&void 0!==arguments[2]?arguments[2]:{};return Be(t),!(!n.nocomment&&"#"===t.charAt(0))&&new je(t,n).match(e)},ie=re,oe=/^\*+([^+@!?\*\[\(]*)$/,se=e=>t=>!t.startsWith(".")&&t.endsWith(e),ae=e=>t=>t.endsWith(e),ue=e=>(e=e.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(e)),ce=e=>(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)),de=/^\*+\.\*+$/,le=e=>!e.startsWith(".")&&e.includes("."),he=e=>"."!==e&&".."!==e&&e.includes("."),fe=/^\.\*+$/,pe=e=>"."!==e&&".."!==e&&e.startsWith("."),me=/^\*+$/,ge=e=>0!==e.length&&!e.startsWith("."),ye=e=>0!==e.length&&"."!==e&&".."!==e,ve=/^\?+([^+@!?\*\[\(]*)?$/,be=e=>{let[t,n=""]=e;const r=De([t]);return n?(n=n.toLowerCase(),e=>r(e)&&e.toLowerCase().endsWith(n)):r},we=e=>{let[t,n=""]=e;const r=Ee([t]);return n?(n=n.toLowerCase(),e=>r(e)&&e.toLowerCase().endsWith(n)):r},_e=e=>{let[t,n=""]=e;const r=Ee([t]);return n?e=>r(e)&&e.endsWith(n):r},xe=e=>{let[t,n=""]=e;const r=De([t]);return n?e=>r(e)&&e.endsWith(n):r},De=e=>{let[t]=e;const n=t.length;return e=>e.length===n&&!e.startsWith(".")},Ee=e=>{let[t]=e;const n=t.length;return e=>e.length===n&&"."!==e&&".."!==e},Me="object"==typeof zx&&zx?"object"==typeof zx.env&&zx.env&&zx.env.__MINIMATCH_TESTING_PLATFORM__||zx.platform:"posix";re.sep="win32"===Me?"\\":"/";const Ae=Symbol("globstar **");re.GLOBSTAR=Ae;const Se={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},Ce="[^/]",ke=Ce+"*?",Te=e=>e.split("").reduce(((e,t)=>(e[t]=!0,e)),{}),Ie=Te("().*{}+?[]^$\\!"),Re=Te("[.(");re.filter=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return n=>re(n,e,t)};const Fe=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.assign({},e,t)};re.defaults=e=>{if(!e||"object"!=typeof e||!Object.keys(e).length)return re;const t=re;return Object.assign((function(n,r){return t(n,r,Fe(e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}))}),{Minimatch:class extends t.Minimatch{constructor(t){super(t,Fe(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}))}static defaults(n){return t.defaults(Fe(e,n)).Minimatch}},unescape:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.unescape(n,Fe(e,r))},escape:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.escape(n,Fe(e,r))},filter:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.filter(n,Fe(e,r))},defaults:n=>t.defaults(Fe(e,n)),makeRe:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.makeRe(n,Fe(e,r))},braceExpand:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.braceExpand(n,Fe(e,r))},match:function(n,r){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.match(n,r,Fe(e,i))},sep:t.sep,GLOBSTAR:Ae})};const Oe=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Be(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:J(e)};re.braceExpand=Oe;const Be=e=>{if("string"!=typeof e)throw new TypeError("invalid pattern");if(e.length>65536)throw new TypeError("pattern is too long")};re.makeRe=function(e){return new je(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).makeRe()},re.match=function(e,t){const n=new je(t,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{});return e=e.filter((e=>n.match(e))),n.options.nonull&&!e.length&&e.push(t),e};const Pe=/[?*]|[+@!]\(.*?\)|\[|\]/,Ne=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");class je{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};ne(this,"options",void 0),ne(this,"set",void 0),ne(this,"pattern",void 0),ne(this,"windowsPathsNoEscape",void 0),ne(this,"nonegate",void 0),ne(this,"negate",void 0),ne(this,"comment",void 0),ne(this,"empty",void 0),ne(this,"preserveMultipleSlashes",void 0),ne(this,"partial",void 0),ne(this,"globSet",void 0),ne(this,"globParts",void 0),ne(this,"nocase",void 0),ne(this,"isWindows",void 0),ne(this,"platform",void 0),ne(this,"windowsNoMagicRoot",void 0),ne(this,"regexp",void 0),Be(e),t=t||{},this.options=t,this.pattern=e,this.platform=t.platform||Me,this.isWindows="win32"===this.platform,this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||!1===t.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!t.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!t.nonegate,this.comment=!1,this.empty=!1,this.partial=!!t.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==t.windowsNoMagicRoot?t.windowsNoMagicRoot:!(!this.isWindows||!this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const e of this.set)for(const t of e)if("string"!=typeof t)return!0;return!1}debug(){}make(){const e=this.pattern,t=this.options;if(!t.nocomment&&"#"===e.charAt(0))return void(this.comment=!0);if(!e)return void(this.empty=!0);this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],t.debug&&(this.debug=function(){return console.error(...arguments)}),this.debug(this.pattern,this.globSet);const n=this.globSet.map((e=>this.slashSplit(e)));this.globParts=this.preprocess(n),this.debug(this.pattern,this.globParts);let r=this.globParts.map(((e,t,n)=>{if(this.isWindows&&this.windowsNoMagicRoot){const t=!(""!==e[0]||""!==e[1]||"?"!==e[2]&&Pe.test(e[2])||Pe.test(e[3])),n=/^[a-z]:/i.test(e[0]);if(t)return[...e.slice(0,4),...e.slice(4).map((e=>this.parse(e)))];if(n)return[e[0],...e.slice(1).map((e=>this.parse(e)))]}return e.map((e=>this.parse(e)))}));if(this.debug(this.pattern,r),this.set=r.filter((e=>-1===e.indexOf(!1))),this.isWindows)for(let e=0;e=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):e=t>=1?this.levelOneOptimize(e):this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map((e=>{let t=-1;for(;-1!==(t=e.indexOf("**",t+1));){let n=t;for(;"**"===e[n+1];)n++;n!==t&&e.splice(t,n-t)}return e}))}levelOneOptimize(e){return e.map((e=>0===(e=e.reduce(((e,t)=>{const n=e[e.length-1];return"**"===t&&"**"===n?e:".."===t&&n&&".."!==n&&"."!==n&&"**"!==n?(e.pop(),e):(e.push(t),e)}),[])).length?[""]:e))}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let t=!1;do{if(t=!1,!this.preserveMultipleSlashes){for(let n=1;nr&&n.splice(r+1,i-r);let o=n[r+1];const s=n[r+2],a=n[r+3];if(".."!==o)continue;if(!s||"."===s||".."===s||!a||"."===a||".."===a)continue;t=!0,n.splice(r,1);const u=n.slice(0);u[r]="**",e.push(u),r--}if(!this.preserveMultipleSlashes){for(let e=1;ee.length))}partsMatch(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=0,i=0,o=[],s="";for(;r2&&void 0!==arguments[2]&&arguments[2];const r=this.options;if(this.isWindows){const n=""===e[0]&&""===e[1]&&"?"===e[2]&&"string"==typeof e[3]&&/^[a-z]:$/i.test(e[3]),r=""===t[0]&&""===t[1]&&"?"===t[2]&&"string"==typeof t[3]&&/^[a-z]:$/i.test(t[3]);if(n&&r){const n=e[3],r=t[3];n.toLowerCase()===r.toLowerCase()&&(e[3]=r)}else if(r&&"string"==typeof e[0]){const n=t[3],r=e[0];n.toLowerCase()===r.toLowerCase()&&(t[3]=r,t=t.slice(3))}else if(n&&"string"==typeof t[0]){const n=e[3];n.toLowerCase()===t[0].toLowerCase()&&(t[0]=n,e=e.slice(3))}}const{optimizationLevel:i=1}=this.options;i>=2&&(e=this.levelTwoFileOptimize(e)),this.debug("matchOne",this,{file:e,pattern:t}),this.debug("matchOne",e.length,t.length);for(var o=0,s=0,a=e.length,u=t.length;o>> no match, partial?",e,l,t,h),l!==a))}let i;if("string"==typeof c?(i=d===c,this.debug("string match",c,d,i)):(i=c.test(d),this.debug("pattern match",c,d,i)),!i)return!1}if(o===a&&s===u)return!0;if(o===a)return n;if(s===u)return o===a-1&&""===e[o];throw new Error("wtf?")}braceExpand(){return Oe(this.pattern,this.options)}parse(e){Be(e);const t=this.options;if("**"===e)return Ae;if(""===e)return"";let n,r=null;(n=e.match(me))?r=t.dot?ye:ge:(n=e.match(oe))?r=(t.nocase?t.dot?ce:ue:t.dot?ae:se)(n[1]):(n=e.match(ve))?r=(t.nocase?t.dot?we:be:t.dot?_e:xe)(n):(n=e.match(de))?r=t.dot?he:le:(n=e.match(fe))&&(r=pe);let i="",o=!1,s=!1;const a=[],u=[];let c,d=!1,l=!1,h="."===e.charAt(0),f=t.dot||h;const p=e=>"."===e.charAt(0)?"":t.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",m=()=>{if(d){switch(d){case"*":i+=ke,o=!0;break;case"?":i+=Ce,o=!0;break;default:i+="\\"+d}this.debug("clearStateChar %j %j",d,i),d=!1}};for(let n,r=0;r(n||(n="\\"),t+t+n+"|"))),this.debug("tail=%j\n %s",e,e,c,i);const t="*"===c.type?ke:"?"===c.type?Ce:"\\"+c.type;o=!0,i=i.slice(0,c.reStart)+t+"\\("+e}m(),s&&(i+="\\\\");const g=Re[i.charAt(0)];for(let e=u.length-1;e>-1;e--){const t=u[e],n=i.slice(0,t.reStart),r=i.slice(t.reStart,t.reEnd-8);let o=i.slice(t.reEnd);const s=i.slice(t.reEnd-8,t.reEnd)+o,a=n.split(")").length,c=n.split("(").length-a;let d=o;for(let e=0;e{const t=e.map((e=>"string"==typeof e?Ne(e):e===Ae?Ae:e._src));return t.forEach(((e,r)=>{const i=t[r+1],o=t[r-1];e===Ae&&o!==Ae&&(void 0===o?void 0!==i&&i!==Ae?t[r+1]="(?:\\/|"+n+"\\/)?"+i:t[r]=n:void 0===i?t[r-1]=o+"(?:\\/|"+n+")?":i!==Ae&&(t[r-1]=o+"(?:\\/|\\/"+n+"\\/)"+i,t[r+1]=Ae))})),t.filter((e=>e!==Ae)).join("/")})).join("|");i="^(?:"+i+")$",this.negate&&(i="^(?!"+i+").*$");try{this.regexp=new RegExp(i,r)}catch(e){this.regexp=!1}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(e)?["",...e.split(/\/+/)]:e.split(/\/+/)}match(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.partial;if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return""===e;if("/"===e&&t)return!0;const n=this.options;this.isWindows&&(e=e.split("\\").join("/"));const r=this.slashSplit(e);this.debug(this.pattern,"split",r);const i=this.set;this.debug(this.pattern,"set",i);let o=r[r.length-1];if(!o)for(let e=r.length-2;!o&&e>=0;e--)o=r[e];for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:"","Invalid response: ").concat(e.status," ").concat(e.statusText));return t.status=e.status,t.response=e,t}function Ue(e,t){const{status:n}=t;if(401===n&&e.digest)return t;if(n>=400)throw Le(t);return t}function qe(e,t){return arguments.length>2&&void 0!==arguments[2]&&arguments[2]?{data:t,headers:e.headers?j(e.headers):{},status:e.status,statusText:e.statusText}:t}re.Minimatch=je,re.escape=function(e){let{windowsPathsNoEscape:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t?e.replace(/[?*()[\]]/g,"[$&]"):e.replace(/[?*()[\]\\]/g,"\\$&")},re.unescape=function(e){let{windowsPathsNoEscape:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t?e.replace(/\[([^\/\\])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1")};const $e=(ze=function(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const i=Y({url:f(e.remoteURL,c(t)),method:"COPY",headers:{Destination:f(e.remoteURL,c(n)),Overwrite:!1===r.overwrite?"F":"T",Depth:r.shallow?"0":"infinity"}},e,r);return s=function(t){Ue(e,t)},(o=V(i,e))&&o.then||(o=Promise.resolve(o)),s?o.then(s):o;var o,s},function(){for(var e=[],t=0;t2&&void 0!==arguments[2]?arguments[2]:Ge.Original;const r=We().get(e,t);return"array"===n&&!1===Array.isArray(r)?[r]:"object"===n&&Array.isArray(r)?r[0]:r}function Ye(e){return new Promise((t=>{t(function(e){const{multistatus:t}=e;if(""===t)return{multistatus:{response:[]}};if(!t)throw new Error("Invalid response: No root multistatus found");const n={multistatus:Array.isArray(t)?t[0]:t};return We().set(n,"multistatus.response",Ve(n,"multistatus.response",Ge.Array)),We().set(n,"multistatus.response",We().get(n,"multistatus.response").map((e=>function(e){const t=Object.assign({},e);return t.status?We().set(t,"status",Ve(t,"status",Ge.Object)):(We().set(t,"propstat",Ve(t,"propstat",Ge.Object)),We().set(t,"propstat.prop",Ve(t,"propstat.prop",Ge.Object))),t}(e)))),n}(new He.XMLParser({removeNSPrefix:!0,numberParseOptions:{hex:!0,leadingZeros:!1}}).parse(e)))}))}function Ze(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const{getlastmodified:r=null,getcontentlength:i="0",resourcetype:o=null,getcontenttype:a=null,getetag:u=null}=e,c=o&&"object"==typeof o&&void 0!==o.collection?"directory":"file",d={filename:t,basename:s().basename(t),lastmod:r,size:parseInt(i,10),type:c,etag:"string"==typeof u?u.replace(/"/g,""):null};return"file"===c&&(d.mime=a&&"string"==typeof a?a.split(";")[0]:""),n&&(d.props=e),d}function Je(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=null;try{e.multistatus.response[0].propstat&&(r=e.multistatus.response[0])}catch(e){}if(!r)throw new Error("Failed getting item stat: bad response");const{propstat:{prop:i,status:o}}=r,[s,a,u]=o.split(" ",3),c=parseInt(a,10);if(c>=400){const e=new Error("Invalid response: ".concat(c," ").concat(u));throw e.status=c,e}return Ze(i,l(t),n)}function Xe(e){switch(e.toString()){case"-3":return"unlimited";case"-2":case"-1":return"unknown";default:return parseInt(e,10)}}function Qe(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const et=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const{details:r=!1}=n,i=Y({url:f(e.remoteURL,c(t)),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},e,n);return Qe(V(i,e),(function(n){return Ue(e,n),Qe(n.text(),(function(e){return Qe(Ye(e),(function(e){const i=Je(e,t,r);return qe(n,i,r)}))}))}))}));function tt(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const nt=rt((function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=function(e){if(!e||"/"===e)return[];let t=e;const n=[];do{n.push(t),t=s().dirname(t)}while(t&&"/"!==t);return n}(l(t));r.sort(((e,t)=>e.length>t.length?1:t.length>e.length?-1:0));let i=!1;return function(e,t,n){if("function"==typeof e[st]){var r,i,o,s=e[st]();function d(e){try{for(;!(r=s.next()).done;)if((e=t(r.value))&&e.then){if(!ct(e))return void e.then(d,o||(o=at.bind(null,i=new ut,2)));e=e.v}i?at(i,1,e):i=e}catch(e){at(i||(i=new ut),2,e)}}if(d(),s.return){var a=function(e){try{r.done||s.return()}catch(e){}return e};if(i&&i.then)return i.then(a,(function(e){throw a(e)}));a()}return i}if(!("length"in e))throw new TypeError("Object is not iterable");for(var u=[],c=0;c2&&void 0!==arguments[2]?arguments[2]:{};if(!0===n.recursive)return nt(e,t,n);const r=Y({url:f(e.remoteURL,(i=c(t),i.endsWith("/")?i:i+"/")),method:"MKCOL"},e,n);var i;return tt(V(r,e),(function(t){Ue(e,t)}))}));var lt=Wx(388),ht=Wx.n(lt);const ft=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r={};if("object"==typeof n.range&&"number"==typeof n.range.start){let e="bytes=".concat(n.range.start,"-");"number"==typeof n.range.end&&(e="".concat(e).concat(n.range.end)),r.Range=e}const i=Y({url:f(e.remoteURL,c(t)),method:"GET",headers:r},e,n);return s=function(t){if(Ue(e,t),r.Range&&206!==t.status){const e=new Error("Invalid response code for partial request: ".concat(t.status));throw e.status=t.status,e}return n.callback&&setTimeout((()=>{n.callback(t)}),0),t.body},(o=V(i,e))&&o.then||(o=Promise.resolve(o)),s?o.then(s):o;var o,s})),pt=()=>{},mt=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=Y({url:f(e.remoteURL,c(t)),method:"DELETE"},e,n);return o=function(t){Ue(e,t)},(i=V(r,e))&&i.then||(i=Promise.resolve(i)),o?i.then(o):i;var i,o})),yt=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};return function(r,i){try{var o=(s=et(e,t,n),a=function(){return!0},s&&s.then||(s=Promise.resolve(s)),a?s.then(a):s)}catch(e){return i(e)}var s,a;return o&&o.then?o.then(void 0,i):o}(0,(function(e){if(404===e.status)return!1;throw e}))}));function vt(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const bt=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=Y({url:f(e.remoteURL,c(t),"/"),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:n.deep?"infinity":"1"}},e,n);return vt(V(r,e),(function(r){return Ue(e,r),vt(r.text(),(function(o){if(!o)throw new Error("Failed parsing directory contents: Empty response");return vt(Ye(o),(function(o){const a=d(t);let u=function(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];const a=s().join(t,"/"),{multistatus:{response:u}}=e,c=u.map((e=>{const t=function(e){try{return e.replace(/^https?:\/\/[^\/]+/,"")}catch(e){throw new i(e,"Failed normalising HREF")}}(e.href),{propstat:{prop:n}}=e;return Ze(n,"/"===a?decodeURIComponent(l(t)):l(s().relative(decodeURIComponent(a),decodeURIComponent(t))),r)}));return o?c:c.filter((e=>e.basename&&("file"===e.type||e.filename!==n.replace(/\/$/,""))))}(o,d(e.remoteBasePath||e.remotePath),a,n.details,n.includeSelf);return n.glob&&(u=function(e,t){return e.filter((e=>ie(e.filename,t,{matchBase:!0})))}(u,n.glob)),qe(r,u,n.details)}))}))}))}));function wt(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=Y({url:f(e.remoteURL,c(t)),method:"GET",headers:{Accept:"text/plain"},transformResponse:[Mt]},e,n);return xt(V(r,e),(function(t){return Ue(e,t),xt(t.text(),(function(e){return qe(t,e,n.details)}))}))}));function xt(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const Dt=wt((function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=Y({url:f(e.remoteURL,c(t)),method:"GET"},e,n);return xt(V(r,e),(function(t){let r;return Ue(e,t),function(e,t){var n=e();return n&&n.then?n.then(t):t()}((function(){return xt(t.arrayBuffer(),(function(e){r=e}))}),(function(){return qe(t,r,n.details)}))}))})),Et=wt((function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{format:r="binary"}=n;if("binary"!==r&&"text"!==r)throw new i({info:{code:S.InvalidOutputFormat}},"Invalid output format: ".concat(r));return"text"===r?_t(e,t,n):Dt(e,t,n)})),Mt=e=>e;function At(e){return new He.XMLBuilder({attributeNamePrefix:"@_",format:!0,ignoreAttributes:!1,suppressEmptyNode:!0}).build(St({lockinfo:{"@_xmlns:d":"DAV:",lockscope:{exclusive:{}},locktype:{write:{}},owner:{href:e}}},"d"))}function St(e,t){const n={...e};for(const e in n)n.hasOwnProperty(e)&&(n[e]&&"object"==typeof n[e]&&-1===e.indexOf(":")?(n["".concat(t,":").concat(e)]=St(n[e],t),delete n[e]):!1===/^@_/.test(e)&&(n["".concat(t,":").concat(e)]=n[e],delete n[e]));return n}function Ct(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}function kt(e){return function(){for(var t=[],n=0;n3&&void 0!==arguments[3]?arguments[3]:{};const i=Y({url:f(e.remoteURL,c(t)),method:"UNLOCK",headers:{"Lock-Token":n}},e,r);return Ct(V(i,e),(function(t){if(Ue(e,t),204!==t.status&&200!==t.status)throw Le(t)}))})),It=kt((function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{refreshToken:r,timeout:i=Rt}=n,o={Accept:"text/plain,application/xml",Timeout:i};r&&(o.If=r);const s=Y({url:f(e.remoteURL,c(t)),method:"LOCK",headers:o,data:At(e.contactHref)},e,n);return Ct(V(s,e),(function(t){return Ue(e,t),Ct(t.text(),(function(e){const n=(o=e,new He.XMLParser({removeNSPrefix:!0,parseAttributeValue:!0,parseTagValue:!0}).parse(o)),r=We().get(n,"prop.lockdiscovery.activelock.locktoken.href"),i=We().get(n,"prop.lockdiscovery.activelock.timeout");var o;if(!r)throw Le(t,"No lock token received: ");return{token:r,serverTimeout:i}}))}))})),Rt="Infinite, Second-4100000000";function Ft(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const Ot=function(e){return function(){for(var t=[],n=0;n1&&void 0!==arguments[1]?arguments[1]:{};const n=t.path||"/",r=Y({url:f(e.remoteURL,n),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},e,t);return Ft(V(r,e),(function(n){return Ue(e,n),Ft(n.text(),(function(e){return Ft(Ye(e),(function(e){const r=function(e){try{const[t]=e.multistatus.response,{propstat:{prop:{"quota-used-bytes":n,"quota-available-bytes":r}}}=t;return void 0!==n&&void 0!==r?{used:parseInt(n,10),available:Xe(r)}:null}catch(e){}return null}(e);return qe(n,r,t.details)}))}))}))}));function Bt(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const Pt=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const{details:r=!1}=n,i=Y({url:f(e.remoteURL,c(t)),method:"SEARCH",headers:{Accept:"text/plain,application/xml","Content-Type":e.headers["Content-Type"]||"application/xml; charset=utf-8"}},e,n);return Bt(V(i,e),(function(n){return Ue(e,n),Bt(n.text(),(function(e){return Bt(Ye(e),(function(e){const i=function(e,t,n){const r={truncated:!1,results:[]};return r.truncated=e.multistatus.response.some((e=>{var n,r;return"507"===(null===(n=(e.status||(null===(r=e.propstat)||void 0===r?void 0:r.status)).split(" ",3))||void 0===n?void 0:n[1])&&e.href.replace(/\/$/,"").endsWith(c(t).replace(/\/$/,""))})),e.multistatus.response.forEach((e=>{if(void 0===e.propstat)return;const t=e.href.split("/").map(decodeURIComponent).join("/");r.results.push(Ze(e.propstat.prop,t,n))})),r}(e,t,r);return qe(n,i,r)}))}))}))})),Nt=function(e){return function(){for(var t=[],n=0;n3&&void 0!==arguments[3]?arguments[3]:{};const i=Y({url:f(e.remoteURL,c(t)),method:"MOVE",headers:{Destination:f(e.remoteURL,c(n)),Overwrite:!1===r.overwrite?"F":"T"}},e,r);return s=function(t){Ue(e,t)},(o=V(i,e))&&o.then||(o=Promise.resolve(o)),s?o.then(s):o;var o,s}));var jt=Wx(172);const Lt=function(e){return function(){for(var t=[],n=0;n3&&void 0!==arguments[3]?arguments[3]:{};const{contentLength:o=!0,overwrite:s=!0}=r,a={"Content-Type":"application/octet-stream"};!1===o||(a["Content-Length"]="".concat("number"==typeof o?o:function(e){if($(e))return e.byteLength;if(z(e))return e.length;if("string"==typeof e)return(0,jt.d)(e);throw new i({info:{code:S.DataTypeNoLength}},"Cannot calculate data length: Invalid type")}(n))),s||(a["If-None-Match"]="*");const u=Y({url:f(e.remoteURL,c(t)),method:"PUT",headers:a,data:n},e,r);return l=function(t){try{Ue(e,t)}catch(e){const t=e;if(412!==t.status||s)throw t;return!1}return!0},(d=V(u,e))&&d.then||(d=Promise.resolve(d)),l?d.then(l):d;var d,l})),Ut=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=Y({url:f(e.remoteURL,c(t)),method:"OPTIONS"},e,n);return o=function(t){var n,r;try{Ue(e,t)}catch(e){throw e}return{compliance:(null!==(n=t.headers.get("DAV"))&&void 0!==n?n:"").split(",").map((e=>e.trim())),server:null!==(r=t.headers.get("Server"))&&void 0!==r?r:""}},(i=V(r,e))&&i.then||(i=Promise.resolve(i)),o?i.then(o):i;var i,o}));function qt(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const $t=Kt((function(e,t,n,r,o){let s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(n>r||n<0)throw new i({info:{code:S.InvalidUpdateRange}},"Invalid update range ".concat(n," for partial update"));const a={"Content-Type":"application/octet-stream","Content-Length":"".concat(r-n+1),"Content-Range":"bytes ".concat(n,"-").concat(r,"/*")},u=Y({url:f(e.remoteURL,c(t)),method:"PUT",headers:a,data:o},e,s);return qt(V(u,e),(function(t){Ue(e,t)}))}));function zt(e,t){var n=e();return n&&n.then?n.then(t):t(n)}const Ht=Kt((function(e,t,n,r,o){let s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(n>r||n<0)throw new i({info:{code:S.InvalidUpdateRange}},"Invalid update range ".concat(n," for partial update"));const a={"Content-Type":"application/x-sabredav-partialupdate","Content-Length":"".concat(r-n+1),"X-Update-Range":"bytes=".concat(n,"-").concat(r)},u=Y({url:f(e.remoteURL,c(t)),method:"PATCH",headers:a,data:o},e,s);return qt(V(u,e),(function(t){Ue(e,t)}))}));function Kt(e){return function(){for(var t=[],n=0;n5&&void 0!==arguments[5]?arguments[5]:{};return qt(Ut(e,t,s),(function(a){let u=!1;return zt((function(){if(a.compliance.includes("sabredav-partialupdate"))return qt(Ht(e,t,n,r,o,s),(function(e){return u=!0,e}))}),(function(c){let d=!1;return u?c:zt((function(){if(a.server.includes("Apache")&&a.compliance.includes(""))return qt($t(e,t,n,r,o,s),(function(e){return d=!0,e}))}),(function(e){if(d)return e;throw new i({info:{code:S.NotSupported}},"Not supported")}))}))}))})),Gt="https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md";function Vt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{authType:n=null,remoteBasePath:r,contactHref:o=Gt,ha1:s,headers:a={},httpAgent:u,httpsAgent:d,password:l,token:p,username:m,withCredentials:g}=t;let y=n;y||(y=m||l?A.Password:A.None);const v={authType:y,remoteBasePath:r,contactHref:o,ha1:s,headers:Object.assign({},a),httpAgent:u,httpsAgent:d,password:l,remotePath:h(e),remoteURL:e,token:p,username:m,withCredentials:g};return C(v,m,l,p,s),{copyFile:(e,t,n)=>$e(v,e,t,n),createDirectory:(e,t)=>dt(v,e,t),createReadStream:(e,t)=>function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=new(0,ht().PassThrough);return ft(e,t,n).then((e=>{e.pipe(r)})).catch((e=>{r.emit("error",e)})),r}(v,e,t),createWriteStream:(e,t,n)=>function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:pt;const i=new(0,ht().PassThrough),o={};!1===n.overwrite&&(o["If-None-Match"]="*");const s=Y({url:f(e.remoteURL,c(t)),method:"PUT",headers:o,data:i,maxRedirects:0},e,n);return V(s,e).then((t=>Ue(e,t))).then((e=>{setTimeout((()=>{r(e)}),0)})).catch((e=>{i.emit("error",e)})),i}(v,e,t,n),customRequest:(e,t)=>mt(v,e,t),deleteFile:(e,t)=>gt(v,e,t),exists:(e,t)=>yt(v,e,t),getDirectoryContents:(e,t)=>bt(v,e,t),getFileContents:(e,t)=>Et(v,e,t),getFileDownloadLink:e=>function(e,t){let n=f(e.remoteURL,c(t));const r=/^https:/i.test(n)?"https":"http";switch(e.authType){case A.None:break;case A.Password:{const t=w(e.headers.Authorization.replace(/^Basic /i,"").trim());n=n.replace(/^https?:\/\//,"".concat(r,"://").concat(t,"@"));break}default:throw new i({info:{code:S.LinkUnsupportedAuthType}},"Unsupported auth type for file link: ".concat(e.authType))}return n}(v,e),getFileUploadLink:e=>function(e,t){let n="".concat(f(e.remoteURL,c(t)),"?Content-Type=application/octet-stream");const r=/^https:/i.test(n)?"https":"http";switch(e.authType){case A.None:break;case A.Password:{const t=w(e.headers.Authorization.replace(/^Basic /i,"").trim());n=n.replace(/^https?:\/\//,"".concat(r,"://").concat(t,"@"));break}default:throw new i({info:{code:S.LinkUnsupportedAuthType}},"Unsupported auth type for file link: ".concat(e.authType))}return n}(v,e),getHeaders:()=>Object.assign({},v.headers),getQuota:e=>Ot(v,e),lock:(e,t)=>It(v,e,t),moveFile:(e,t,n)=>Nt(v,e,t,n),putFileContents:(e,t,n)=>Lt(v,e,t,n),partialUpdateFileContents:(e,t,n,r,i)=>Wt(v,e,t,n,r,i),getDAVCompliance:e=>Ut(v,e),search:(e,t)=>Pt(v,e,t),setHeaders:e=>{v.headers=Object.assign({},e)},stat:(e,t)=>et(v,e,t),unlock:(e,t,n)=>Tt(v,e,t,n)}}})();var Vx=Gx.hT,Yx=Gx.UU;function Zx(e){return Object.fromEntries(Object.entries(e).map((([e,t])=>[e.toLowerCase(),t])))}b&&(0,Gx.Gu)().patch("request",(t=>e(void 0,void 0,void 0,(function*(){var e;const n=Zx(Object.assign({},t.headers));delete n.host,delete n["content-length"];const r=null!==(e=n.accept)&&void 0!==e?e:n["content-type"],i=Object.assign({},n);i.hasOwnProperty("authorization")&&(i.authorization=""),console.debug("before request:"),console.debug(`url: ${t.url}`),console.debug(`method: ${t.method}`),console.debug(`headers: ${JSON.stringify(i,null,2)}`),console.debug(`reqContentType: ${r}`);let o=yield(0,l.requestUrl)({url:t.url,method:t.method,body:t.data,headers:n,contentType:r,throw:!1});401!==o.status||!l.Platform.isIosApp||t.url.endsWith("/")||t.url.endsWith(".md")||"PROPFIND"!==t.method.toUpperCase()||(console.debug("so we have 401, try appending request url with slash"),o=yield(0,l.requestUrl)({url:`${t.url}/`,method:t.method,body:t.data,headers:n,contentType:r,throw:!1})),console.debug("after request:");const s=Zx(Object.assign({},o.headers));console.debug(`rspHeaders: ${JSON.stringify(s,null,2)}`);for(const e in s)s.hasOwnProperty(e)&&(a=s[e],/[^\u0000-\u00ff]/g.test(a)&&(console.debug(`rspHeaders[key] needs encode: ${e}`),s[e]=encodeURIComponent(s[e])));var a;let u;const c=(0,jx.Us)(o.status);return console.debug(`statusText: ${c}`),u=[101,103,204,205,304].includes(o.status)?new Response(null,{status:o.status,statusText:c,headers:s}):new Response(o.arrayBuffer,{status:o.status,statusText:c,headers:s}),u}))));const Jx=(e,t)=>{let n=e;return"/"===e||""===e?n=`/${t}/`:e.startsWith("/")?(console.warn(`why the path ${e} starts with '/'? but we just go on.`),n=`/${t}${e}`):n=`/${t}/${e}`,n},Xx=(e,t)=>{let n=((e,t)=>{if(e!==`/${t}`&&!e.startsWith(`/${t}/`))throw Error(`"${e}" doesn't starts with "/${t}/"`);return e.slice(`/${t}/`.length)})(e.filename,t);"directory"!==e.type||n.endsWith("/")||(n=`${n}/`);const r=Date.parse(e.lastmod).valueOf();return{key:n,keyRaw:n,mtimeSvr:r,mtimeCli:r,size:e.size,sizeRaw:e.size}};class Qx extends Q{constructor(e,t,n){super(),this.kind="webdav",this.webdavConfig=i()(e),this.webdavConfig.address=encodeURI(this.webdavConfig.address),this.remoteBaseDir=this.webdavConfig.remoteBaseDir||t||"",this.vaultFolderExists=!1,this.saveUpdatedConfigFunc=n}_init(){return e(this,void 0,void 0,(function*(){if(void 0!==this.client)return;if(l.Platform.isIosApp&&!this.webdavConfig.address.startsWith("https"))throw Error("Your webdav address could only be https, not http, because of the iOS restriction.");const e={"Cache-Control":"no-cache"};if(""!==this.webdavConfig.username&&""!==this.webdavConfig.password?this.client=Yx(this.webdavConfig.address,{username:this.webdavConfig.username,password:this.webdavConfig.password,headers:e,authType:"digest"===this.webdavConfig.authType?Vx.Digest:Vx.Password}):(console.info("no password"),this.client=Yx(this.webdavConfig.address,{headers:e})),this.vaultFolderExists);else{(yield this.client.exists(`/${this.remoteBaseDir}/`))||(console.info("remote vault folder not exists, creating"),yield this.client.createDirectory(`/${this.remoteBaseDir}/`),console.info("remote vault folder created!")),this.vaultFolderExists=!0}"auto"!==this.webdavConfig.depth&&"auto_1"!==this.webdavConfig.depth&&"auto_infinity"!==this.webdavConfig.depth&&"auto_unknown"!==this.webdavConfig.depth||(this.webdavConfig.depth="manual_1",this.webdavConfig.manualRecursive=!0,void 0!==this.saveUpdatedConfigFunc&&(yield this.saveUpdatedConfigFunc(),console.info(`webdav depth="auto_???" is changed to ${this.webdavConfig.depth}`)))}))}walk(){return e(this,void 0,void 0,(function*(){yield this._init();let e=[];if("auto"===this.webdavConfig.depth||"auto_unknown"===this.webdavConfig.depth||"auto_1"===this.webdavConfig.depth||"auto_infinity"===this.webdavConfig.depth||"manual_1"===this.webdavConfig.depth){const t=new Nx.op([`/${this.remoteBaseDir}`]),n=10;for(;t.length>0;){const r=[];for(;t.length>0;)r.push(t.pop());const i=Ux()(r,n),o=[];for(const e of i){const t=e.map((e=>this.client.getDirectoryContents(e,{deep:!1,details:!1}))),n=$x()(yield Promise.all(t));o.push(...n)}for(let n=0;nXx(e,this.remoteBaseDir)))}))}stat(t){return e(this,void 0,void 0,(function*(){yield this._init();const e=Jx(t,this.remoteBaseDir);return yield this._statFromRoot(e)}))}_statFromRoot(t){return e(this,void 0,void 0,(function*(){const e=yield this.client.stat(t,{details:!1});return Xx(e,this.remoteBaseDir)}))}mkdir(t,n,r){return e(this,void 0,void 0,(function*(){if(!t.endsWith("/"))throw Error(`you should not call mkdir on ${t}`);yield this._init();const e=Jx(t,this.remoteBaseDir);return yield this._mkdirFromRoot(e,n,r)}))}_mkdirFromRoot(t,n,r){return e(this,void 0,void 0,(function*(){return yield this.client.createDirectory(t,{recursive:!0}),yield this._statFromRoot(t)}))}writeFile(t,n,r,i){return e(this,void 0,void 0,(function*(){if(t.endsWith("/"))throw Error(`you should not call writeFile on ${t}`);yield this._init();const e=Jx(t,this.remoteBaseDir);return yield this._writeFileFromRoot(e,n,r,i)}))}_writeFileFromRoot(t,n,r,i){return e(this,void 0,void 0,(function*(){return yield this.client.putFileContents(t,n,{overwrite:!0,onUploadProgress:e=>{console.info(`Uploaded ${e.loaded} bytes of ${e.total}`)}}),yield this._statFromRoot(t)}))}readFile(t){return e(this,void 0,void 0,(function*(){if(t.endsWith("/"))throw Error(`you should not call readFile on ${t}`);yield this._init();const e=Jx(t,this.remoteBaseDir);return yield this._readFileFromRoot(e)}))}_readFileFromRoot(t){return e(this,void 0,void 0,(function*(){const e=yield this.client.getFileContents(t);if(e instanceof ArrayBuffer)return e;if(e instanceof ga.Buffer)return F(e);throw Error("unexpected file content result with type "+typeof e)}))}rm(t){return e(this,void 0,void 0,(function*(){if("/"!==t){yield this._init();try{const e=Jx(t,this.remoteBaseDir);yield this.client.deleteFile(e)}catch(e){console.error("some error while deleting"),console.error(e)}}}))}checkConnect(t){return e(this,void 0,void 0,(function*(){if(!this.webdavConfig.address.startsWith("http://")&&!this.webdavConfig.address.startsWith("https://")){const e="Error: the url should start with http(s):// but it does not!";return console.error(e),void 0!==t&&t(e),!1}try{yield this._init();if(void 0===(yield this._statFromRoot(`/${this.remoteBaseDir}/`))){const e="results is undefined";return console.error(e),null==t||t(e),!1}return!0}catch(e){return console.error(e),null==t||t(e),!1}}))}getUserDisplayName(){return e(this,void 0,void 0,(function*(){throw new Error("Method not implemented.")}))}revokeAuth(){return e(this,void 0,void 0,(function*(){throw new Error("Method not implemented.")}))}allowEmptyFile(){return!0}} +/*! + * mustache.js - Logic-less {{mustache}} templates with JavaScript + * http://github.com/janl/mustache.js + */ +var eD=Object.prototype.toString,tD=Array.isArray||function(e){return"[object Array]"===eD.call(e)};function nD(e){return"function"==typeof e}function rD(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function iD(e,t){return null!=e&&"object"==typeof e&&t in e}var oD=RegExp.prototype.test;var sD=/\S/;function aD(e){return!function(e,t){return oD.call(e,t)}(sD,e)}var uD={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};var cD=/\s*/,dD=/\s+/,lD=/\s*=/,hD=/\s*\}/,fD=/#|\^|\/|>|\{|&|=|!/;function pD(e){this.string=e,this.tail=e,this.pos=0}function mD(e,t){this.view=e,this.cache={".":this.view},this.parent=t}function gD(){this.templateCache={_cache:{},set:function(e,t){this._cache[e]=t},get:function(e){return this._cache[e]},clear:function(){this._cache={}}}}pD.prototype.eos=function(){return""===this.tail},pD.prototype.scan=function(e){var t=this.tail.match(e);if(!t||0!==t.index)return"";var n=t[0];return this.tail=this.tail.substring(n.length),this.pos+=n.length,n},pD.prototype.scanUntil=function(e){var t,n=this.tail.search(e);switch(n){case-1:t=this.tail,this.tail="";break;case 0:t="";break;default:t=this.tail.substring(0,n),this.tail=this.tail.substring(n)}return this.pos+=t.length,t},mD.prototype.push=function(e){return new mD(e,this)},mD.prototype.lookup=function(e){var t,n,r,i=this.cache;if(i.hasOwnProperty(e))t=i[e];else{for(var o,s,a,u=this,c=!1;u;){if(e.indexOf(".")>0)for(o=u.view,s=e.split("."),a=0;null!=o&&a0?i[i.length-1][4]:n;break;default:r.push(t)}return n}(function(e){for(var t,n,r=[],i=0,o=e.length;i"===s?a=this.renderPartial(o,t,n,i):"&"===s?a=this.unescapedValue(o,t):"name"===s?a=this.escapedValue(o,t,i):"text"===s&&(a=this.rawValue(o)),void 0!==a&&(u+=a);return u},gD.prototype.renderSection=function(e,t,n,r,i){var o=this,s="",a=t.lookup(e[1]);if(a){if(tD(a))for(var u=0,c=a.length;u0||!n)&&(i[o]=r+i[o]);return i.join("\n")},gD.prototype.renderPartial=function(e,t,n,r){if(n){var i=this.getConfigTags(r),o=nD(n)?n(e[1]):n[e[1]];if(null!=o){var s=e[6],a=e[5],u=e[4],c=o;0==a&&u&&(c=this.indentPartial(o,u,s));var d=this.parse(c,i);return this.renderTokens(d,t,n,c,r)}}},gD.prototype.unescapedValue=function(e,t){var n=t.lookup(e[1]);if(null!=n)return n},gD.prototype.escapedValue=function(e,t,n){var r=this.getConfigEscape(n)||yD.escape,i=t.lookup(e[1]);if(null!=i)return"number"==typeof i&&r===yD.escape?String(i):r(i)},gD.prototype.rawValue=function(e){return e[1]},gD.prototype.getConfigTags=function(e){return tD(e)?e:e&&"object"==typeof e?e.tags:void 0},gD.prototype.getConfigEscape=function(e){return e&&"object"==typeof e&&!tD(e)?e.escape:void 0};var yD={name:"mustache.js",version:"4.2.0",tags:["{{","}}"],clearCache:void 0,escape:void 0,parse:void 0,render:void 0,Scanner:void 0,Context:void 0,Writer:void 0,set templateCache(e){vD.templateCache=e},get templateCache(){return vD.templateCache}},vD=new gD;yD.clearCache=function(){return vD.clearCache()},yD.parse=function(e,t){return vD.parse(e,t)},yD.render=function(e,t,n,r){if("string"!=typeof e)throw new TypeError('Invalid template! Template should be a "string" but "'+((tD(i=e)?"array":typeof i)+'" was given as the first argument for mustache#render(template, view, partials)'));var i;return vD.render(e,t,n,r)},yD.escape=function(e){return String(e).replace(/[&<>"'`=\/]/g,(function(e){return uD[e]}))},yD.Scanner=pD,yD.Context=mD,yD.Writer=gD;const bD=yD,wD={en:JSON.parse('{"confirm":"Confirm","disable":"Disable","enable":"Enable","goback":"Go Back","submit":"Submit","sometext":"Here are some texts.","syncrun_alreadyrunning":"New command {{newTriggerSource}} stops because {{pluginName}} is already running in stage {{syncStatus}}!","syncrun_syncingribbon":"{{pluginName}}: syncing from {{triggerSource}}","syncrun_step0":"0/8 Remotely Save is running in dry mode, thus not actual file changes would happen.","syncrun_step1":"1/8 Remotely Save is preparing ({{serviceType}})","syncrun_step2":"2/8 Starting to fetch remote meta data and check password.","syncrun_passworderr":"Something goes wrong while checking password.","syncrun_step3":"3/8 Startting to process remote data.","syncrun_step4":"4/8 Starting to fetch local meta data.","syncrun_step5":"5/8 Starting to fetch local prev sync data.","syncrun_step6":"6/8 Starting to generate sync plan.","syncrun_step7":"7/8 Remotely Save Sync data is exchanging!","syncrun_step7skip":"7/8 Remotely Save real sync is skipped in dry run mode.","syncrun_step8":"8/8 Remotely Save finished!","syncrun_shortstep0":"0/2 Remotely Save is running in dry mode, not actual file changes would happen.","syncrun_shortstep1":"1/2 Remotely Save starts running ({{serviceType}})","syncrun_shortstep2skip":"2/2 Remotely Save real sync is skipped in dry run mode.","syncrun_shortstep2":"2/2 Remotely Save finished!","syncrun_abort":"{{manifestID}}-{{theDate}}: abort sync, triggerSource={{triggerSource}}, error while {{syncStatus}}","syncrun_abort_protectmodifypercentage":"Abort! you set changing files >= {{protectModifyPercentage}}% is not allowed but {{realModifyDeleteCount}}/{{allFilesCount}}={{percent}}% is going to be modified or deleted! If you are sure you want this sync, please adjust the allowed ratio in the settings.","protocol_saveqr":"New settings for {{manifestName}} is imported and saved. Reopen the plugin settings to make it effective.","protocol_callbacknotsupported":"Your uri calls a callback that\'s not supported yet: {{params}}","protocol_dropbox_connecting":"Connecting to Dropbox...\\nPlease DO NOT close this modal.","protocol_dropbox_connect_succ":"Good! We\'ve connected to Dropbox as user {{username}}!","protocol_dropbox_connect_succ_revoke":"You\'ve connected as user {{username}}. If you want to disconnect, click this button.","protocol_dropbox_connect_fail":"Something went wrong from response from Dropbox. Maybe the network connection is not good. Maybe you rejected the auth?","protocol_dropbox_connect_unknown":"Do not know how to deal with the callback: {{params}}","protocol_dropbox_no_modal":"You are not startting Dropbox connection from the settings page. Abort.","protocol_onedrive_connecting":"Connecting to OneDrive...\\nPlease DO NOT close this modal.","protocol_onedrive_connect_succ_revoke":"You\'ve connected as user {{username}}. If you want to disconnect, click this button.","protocol_onedrive_connect_fail":"Something went wrong from response from OneDrive. Maybe you rejected the auth?","protocol_onedrive_connect_unknown":"Do not know how to deal with the callback: {{params}}","command_startsync":"start sync","command_drynrun":"start sync (dry run only)","command_exportsyncplans_1":"export sync plans (latest 1)","command_exportsyncplans_5":"export sync plans (latest 5)","command_exportsyncplans_all":"export sync plans (all)","command_exportlogsindb":"export logs saved in db","statusbar_time_years":"Synced {{time}} years ago","statusbar_time_months":"Synced {{time}} months ago","statusbar_time_weeks":"Synced {{time}} weeks ago","statusbar_time_days":"Synced {{time}} days ago","statusbar_time_hours":"Synced {{time}} hours ago","statusbar_time_minutes":"Synced {{time}} minutes ago","statusbar_time_lessminute":"Synced last minute ago","statusbar_lastsync":"Synced {{time}} ago","statusbar_syncing":"Syncing...","statusbar_failed":"Last sync failed","statusbar_now":"Synced just now","statusbar_lastsync_label":"Last successful Sync on {{date}}","statusbar_lastsync_never":"Never Synced","statusbar_lastsync_never_label":"Never Synced before","modal_password_title":"Hold on and PLEASE READ ON...","modal_password_shortdesc":"If the field is not empty, files would be encrypted locally before being uploaded.\\nIf the field is empty, then files would be uploaded without encryption.","modal_password_attn1":"Attention 1/5: The vault name is NOT encrypted. The plugin creates a folder with the vault name on some remote services.","modal_password_attn2":"Attention 2/5: The password itself is stored in PLAIN TEXT LOCALLY.","modal_password_attn3":"Attention 3/5: Some metadata are not encrypted or can be easily guessed. (File sizes are closed to their unencrypted ones, and directory path may be stored as 0-byte-size object.)","modal_password_attn4":"Attention 4/5: You should make sure the remote store IS EMPTY, or REMOTE FILES WERE ENCRYPTED BY THAT NEW PASSWORD, to avoid conflicts.","modal_password_attn5":"Attention 5/5: The longer the password, the better.","modal_password_secondconfirm":"The Second Confirm to change password.","modal_password_notice":"New password saved!","modal_encryptionmethod_title":"Hold on and PLEASE READ ON...","modal_encryptionmethod_shortdesc":"You are changing the encrpytion method but you have set the password before.\\nAfter switching the method, you need to manually and fully delete every encrypted vault files in the remote and re-sync (so that re-upload) the newly encrypted files again.","modal_remotebasedir_title":"You are changing the remote base directory config","modal_remotebasedir_shortdesc":"1. The plugin would NOT automatically move the content from the old directory to the new one directly on the remote. Everything syncs from the beginning again.\\n2. If you set the string to the empty, the config would be reset to use the vault folder name (the default config).\\n3. The remote directory name itself would not be encrypted even you\'ve set an E2E password.\\n4. Some special char like \'?\', \'/\', \'\\\\\' are not allowed. Spaces in the beginning or in the end are also trimmed.","modal_remotebasedir_invaliddirhint":"Your input contains special characters like \'?\', \'/\', \'\\\\\' which are not allowed.","modal_remotebasedir_secondconfirm_vaultname":"Reset To The Default Vault Folder Name","modal_remotebasedir_secondconfirm_change":"Confirm To Change","modal_remotebasedir_notice":"New remote base directory config saved!","modal_remoteprefix_title":"You are changing the remote prefix config","modal_remoteprefix_shortdesc":"1. The plugin would NOT automatically move the content from the old directory to the new one directly on the remote. Everything syncs from the beginning again.\\n2. If you set the string to the empty, the prefix will be empty and the files will be saved at the root of the bucket.\\n3. The remote directory name itself would not be encrypted even you\'ve set an E2E password.\\n4. Some special char like \'?\', \'/\', \'\\\\\' are not allowed. Spaces in the beginning or in the end are also trimmed.","modal_remoteprefix_invaliddirhint":"Your input contains special characters like \'?\', \'/\', \'\\\\\' which are not allowed.","modal_remoteprefix_tosave":"The prefix to save is \\"{{{prefix}}}\\"","modal_remoteprefix_secondconfirm_empty":"The prefix is empty and the files will be saved at the root of the bucket.","modal_remoteprefix_secondconfirm_change":"Confirm To Change","modal_remoteprefix_notice":"New remote prefix config saved!","modal_dropboxauth_manualsteps":"Step 1: Visit the address in a browser, and follow the steps.\\nStep 2: In the end of the web flow, you obtain a long code. Paste it here then click \\"Submit\\".","modal_dropboxauth_autosteps":"Visit the address in a browser, and follow the steps.\\nFinally you should be redirected to Obsidian.","modal_dropboxauth_copybutton":"Click to copy the auth url","modal_dropboxauth_copynotice":"The auth url is copied to the clipboard!","modal_dropboxauth_maualinput":"Auth Code from web page","modal_dropboxauth_maualinput_desc":"You need to click \\"Confirm\\".","modal_dropboxauth_maualinput_notice":"Trying to connect to Dropbox","modal_dropboxauth_maualinput_conn_succ":"Good! We\'ve connected to Dropbox as user {{username}}!","modal_dropboxauth_maualinput_conn_succ_revoke":"You\'ve connected as user {{username}}. If you want to disconnect, click this button.","modal_dropboxauth_maualinput_conn_fail":"Something goes wrong while connecting to Dropbox.","modal_onedriveauth_shortdesc":"Currently only OneDrive for personal is supported. OneDrive for Business is NOT supported (yet).\\nVisit the address in a browser, and follow the steps.\\nFinally you should be redirected to Obsidian.","modal_onedriveauth_shortdesc_linux":"It seems that you are using Obsidian on Linux, and you might not be able to jump back here properly. Please consider using the flatpack version of Obsidian, or creating an obsidian.desktop file.","modal_onedriveauth_copybutton":"Click to copy the auth url","modal_onedriveauth_copynotice":"The auth url is copied to the clipboard!","modal_onedriverevokeauth_step1":"Step 1: Go to the following address, click the \\"Edit\\" button for the plugin, then click \\"Remove these permissions\\" button on the page.","modal_onedriverevokeauth_step2":"Step 2: Click the button below, to clean the locally-saved login credentials.","modal_onedriverevokeauth_clean":"Clean Locally-Saved Login Credentials","modal_onedriverevokeauth_clean_desc":"You need to click the button.","modal_onedriverevokeauth_clean_button":"Clean","modal_onedriverevokeauth_clean_notice":"Cleaned!","modal_onedriverevokeauth_clean_fail":"Something goes wrong while revoking.","modal_syncconfig_attn":"Attention 1/2: This only syncs (copies) the whole Obsidian config dir, not other startting-with-dot folders or files. Except for ignoring folders .git and node_modules, it also doesn\'t understand the meaning of sub-files and sub-folders inside the config dir.\\nAttention 2/2: After the config dir is synced, plugins settings might be corrupted, and Obsidian might need to be restarted to load the new settings.\\nIf you are agreed to take your own risk, please click the following second confirm button.","modal_syncconfig_secondconfirm":"The Second Confirm To Enable.","modal_syncconfig_notice":"You\'ve enabled syncing config folder!","modal_qr_shortdesc":"This exports (partial) settings.\\nYou can use another device to scan this qrcode.\\nOr, you can click the button to copy the special uri and paste it into another device\'s web browser or Remotely Save Import Setting.","modal_qr_button":"Click to copy the special URI","modal_qr_button_notice":"The special uri is copied to the clipboard!","modal_sizesconflict_title":"Remotely Save: Some conflict were found while skipping large files","modal_sizesconflict_desc":"You\'ve set skipping files larger than {{thresholdMB}} MB ({{thresholdBytes}} bytes).\\nBut the following files have sizes larger than the threshold on one side, and sizes smaller than the threshold on the other side.\\nTo avoid unexpected overwriting or deleting, the plugin stops, and you have to manually deal with at least one side of the files.","modal_sizesconflict_copybutton":"Click to copy all the below sizes conflicts info","modal_sizesconflict_copynotice":"All the sizes conflicts info have been copied to the clipboard!","settings_basic":"Basic Settings","settings_password":"Encryption Password","settings_password_desc":"Password for E2E encryption. Empty for no password. You need to click \\"Confirm\\". Attention: The password and other info are saved locally. After changing the password, you need to manually delete every original files in the remote, and re-sync (so that upload) the encrypted files again.","settings_encryptionmethod":"Encryption Method","settings_encryptionmethod_desc":"Encryption method for E2E encryption. RClone Crypt format is recommended but it doesn\'t encrypt path structure. OpenSSL enc is the legacy format of this plugin. Both are not affliated with official RClone and OpenSSL product or community. Attention: After switching the method, you need to manually delete every original files in the remote and re-sync (so that upload) the encrypted files again. More info in the online doc.","settings_encryptionmethod_rclone":"RClone Crypt (recommended)","settings_encryptionmethod_openssl":"OpenSSL enc (legacy)","settings_autorun":"Schedule For Auto Run","settings_autorun_desc":"The plugin tries to schedule the running after every interval. Battery may be impacted.","settings_autorun_notset":"(not set)","settings_autorun_1min":"every 1 minute","settings_autorun_5min":"every 5 minutes","settings_autorun_10min":"every 10 minutes","settings_autorun_30min":"every 30 minutes","settings_runoncestartup":"Run Once On Start Up Automatically","settings_runoncestartup_desc":"This settings allows setting running ONCE on start up automatically. This will take effect on NEXT start up after changing. This setting, is different from \\"schedule for auto run\\" which starts syncing after EVERY interval.","settings_runoncestartup_notset":"(not set)","settings_runoncestartup_1sec":"sync once after 1 second of start up","settings_runoncestartup_10sec":"sync once after 10 seconds of start up","settings_runoncestartup_30sec":"sync once after 30 seconds of start up","settings_synconsave":"Sync On Save (experimental)","settings_synconsave_desc":"If you change your file, the plugin tries to trigger a sync.","settings_synconsave_disable":"Disable (default)","settings_synconsave_enable":"Enable","settings_skiplargefiles":"Skip Large Files","settings_skiplargefiles_desc":"Skip files with sizes larger than the threshold. Here 1 MB = 10^6 bytes.","settings_skiplargefiles_notset":"(not set)","settings_ignorepaths":"Regex Of Paths To Ignore","settings_ignorepaths_desc":"Regex of paths of folders or files to ignore. One regex per line. The path is relative to the vault root without leading slash.","settings_enablestatusbar_info":"Show Last Successful Sync In Status Bar","settings_enablestatusbar_info_desc":"Show the time of the last successful sync in the status bar.","settings_enablestatusbar_reloadrequired_notice":"Reload the plugin for the changes to take effect.","settings_resetstatusbar_time":"Reset Last Successful Sync Time","settings_resetstatusbar_time_desc":"Reset last successful sync time.","settings_resetstatusbar_button":"Reset","settings_resetstatusbar_notice":"Reset done!","settings_checkonnectivity":"Check Connectivity","settings_checkonnectivity_desc":"Check connectivity.","settings_checkonnectivity_button":"Check","settings_checkonnectivity_checking":"Checking...","settings_remotebasedir":"Change The Remote Base Directory (experimental)","settings_remotebasedir_desc":"By default the content is synced to a remote directory with the same name as the vault name. You can change the remote folder name here, or keep the input field empty to reset to the default. You need to click \\"Confirm\\".","settings_remoteprefix":"Change The Remote Prefix (experimental)","settings_remoteprefix_desc":"By default in s3 the files are saved at the root of the bucket. You can change the remote prefix here, or keep the input field empty to reset to the default. You need to click \\"Confirm\\".","settings_s3":"Remote For S3 or compatible","settings_s3_disclaimer1":"Disclaimer: This plugin is NOT an official Amazon product.","settings_s3_disclaimer2":"Disclaimer: The information is stored locally. Other malicious/harmful/faulty plugins could read the info. If you see any unintentional access to your bucket, please immediately delete the access key on your AWS (or other S3-service provider) settings.","settings_s3_cors":"You need to configure CORS to allow requests from origin app://obsidian.md and capacitor://localhost and http://localhost, and add ETag into exposed headers.","settings_s3_prod":"Some Amazon S3 official docs for references:","settings_s3_prod1":"Endpoint and region info","settings_s3_prod2":"Access Key ID and Secret Access Key info","settings_s3_prod3":"Configuring CORS","settings_s3_endpoint":"Endpoint","settings_s3_region":"Region","settings_s3_region_desc":"If you are not sure what to enter, you could try the value: us-east-1 .","settings_s3_accesskeyid":"Access Key ID","settings_s3_accesskeyid_desc":"Access key ID. Attention: Access key ID and other info are saved locally.","settings_s3_secretaccesskey":"Secret Access Key","settings_s3_secretaccesskey_desc":"Secret access key. Attention: Secret access key and other info are saved locally.","settings_s3_bucketname":"Bucket Name","settings_s3_bypasscorslocally":"Bypass CORS Issue Locally","settings_s3_bypasscorslocally_desc":"The plugin allows skipping server CORS config in new version of Obsidian ( desktop>=0.13.25 or iOS>=1.1.1 or Android>=1.2.1). If you encounter any issues, please disable this setting and config CORS on servers (allowing requests from app://obsidian.md and capacitor://localhost and http://localhost and add ETag into exposed headers).","settings_s3_parts":"Parts Concurrency","settings_s3_parts_desc":"Large files are split into small parts to upload in S3. How many parts do you want to upload in parallel at most?","settings_s3_accuratemtime":"Use Accurate MTime","settings_s3_accuratemtime_desc":"Read the uploaded accurate last modified time for better sync algorithm. But it causes extra api requests / time / money to the S3 endpoint.","settings_s3_urlstyle":"S3 URL style","settings_s3_urlstyle_desc":"Whether to force path-style URLs for S3 objects (e.g., https://s3.amazonaws.com/*/ instead of https://*.s3.amazonaws.com/).","settings_s3_reverse_proxy_no_sign_url":"S3 Reverse Proxy (No Sign) Url (experimental)","settings_s3_reverse_proxy_no_sign_url_desc":"S3 reverse proxy url without signature. This is useful if you use a revers proxy but do not change the original credential signature. No http(s):// prefix. Leave it blank if you don\'t know what it is.","settings_s3_generatefolderobject":"Generate Folder Object Or Not","settings_s3_generatefolderobject_desc":"S3 doesn\'t have \\"real\\" folder. If you set \\"Generate\\" here (or use old version), the plugin will upload a zero-byte object endding with \\"/\\" to represent the folder. In the new version, the plugin skips generating folder object by default.","settings_s3_generatefolderobject_notgenerate":"Not generate (default)","settings_s3_generatefolderobject_generate":"Generate","settings_s3_connect_succ":"Great! The bucket can be accessed.","settings_s3_connect_fail":"The S3 bucket cannot be reached.","settings_dropbox":"Remote For Dropbox","settings_dropbox_disclaimer1":"Disclaimer: This app is NOT an official Dropbox product.","settings_dropbox_disclaimer2":"Disclaimer: The information is stored locally. Other malicious/harmful/faulty plugins could read the info. If you see any unintentional access to your Dropbox, please immediately disconnect this app on https://www.dropbox.com/account/connected_apps .","settings_dropbox_folder":"We will create and sync inside the folder /Apps/{{pluginID}}/{{remoteBaseDir}} on your Dropbox.","settings_dropbox_revoke":"Revoke Auth","settings_dropbox_revoke_desc":"You\'ve connected as user {{username}}. If you want to disconnect, click this button.","settings_dropbox_revoke_button":"Revoke Auth","settings_dropbox_revoke_notice":"Revoked!","settings_dropbox_revoke_noticeerr":"Something goes wrong while revoking.","settings_dropbox_clearlocal":"Clear Locally Saved Credentials","settings_dropbox_clearlocal_desc":"You can forcefully clear the locally saved Dropbox login credentials, but not send revoke auth request to the server.","settings_dropbox_clearlocal_button":"Clear","settings_dropbox_clearlocal_notice":"Cleared!","settings_dropbox_auth":"Auth","settings_dropbox_auth_desc":"Auth.","settings_dropbox_auth_button":"Auth","settings_dropbox_connect_succ":"Great! We can connect to Dropbox!","settings_dropbox_connect_fail":"We cannot connect to Dropbox.","settings_onedrive":"Remote For Onedrive (for personal)","settings_onedrive_disclaimer1":"Disclaimer: This app is NOT an official Microsoft / OneDrive product.","settings_onedrive_disclaimer2":"Disclaimer: The information is stored locally. Other malicious/harmful/faulty plugins could read the info. If you see any unintentional access to your Onedrive, please immediately disconnect this app on https://microsoft.com/consent .","settings_onedrive_folder":"We will create and sync inside the folder /Apps/{{pluginID}}/{{remoteBaseDir}} on your OneDrive.","settings_onedrive_nobiz":"Currently only OneDrive for personal is supported. OneDrive for Business is NOT supported (yet).","settings_onedrive_revoke":"Revoke Auth","settings_onedrive_revoke_desc":"You\'ve connected as user {{username}}. If you want to disconnect, click this button.","settings_onedrive_revoke_button":"Revoke Auth","settings_onedrive_auth":"Auth","settings_onedrive_auth_desc":"Auth.","settings_onedrive_auth_button":"Auth","settings_onedrive_connect_succ":"Great! We can connect to Onedrive!","settings_onedrive_connect_fail":"We cannot connect to Onedrive.","settings_webdav":"Remote For Webdav","settings_webdav_disclaimer1":"Disclaimer: The information is stored locally. Other malicious/harmful/faulty plugins may read the info. If you see any unintentional access to your webdav server, please immediately change the username and password.","settings_webdav_cors_os":"Obsidian desktop>=0.13.25 or iOS>=1.1.1 or Android>=1.2.1 supports bypassing CORS locally. But you are using an old version, and you\'re suggested to upgrade Obsidian.","settings_webdav_cors":"You need to configure CORS to allow requests from origin app://obsidian.md and capacitor://localhost and http://localhost","settings_webdav_folder":"We will create and sync inside the folder /{{remoteBaseDir}} on your server.","settings_webdav_addr":"Server Address","settings_webdav_addr_desc":"Server address.","settings_webdav_user":"Username","settings_webdav_user_desc":"Username. Attention: the username and other info are saved locally.","settings_webdav_password":"Password","settings_webdav_password_desc":"Password. Attention: the password and other info are saved locally.","settings_webdav_auth":"Auth Type","settings_webdav_auth_desc":"If no password, this option would be ignored.","settings_webdav_depth":"Depth Header Sent To Servers","settings_webdav_depth_desc":"Webdav servers should be configured to allow requests with header Depth being \'1\' or \'Infinity\'. If you are not sure what\'s this, choose \\"depth=\'1\'\\". If you are sure your server supports depth=\'infinity\', please choose that to get way better performance.","settings_webdav_depth_1":"only supports depth=\'1\'","settings_webdav_depth_inf":"supports depth=\'infinity\'","settings_webdav_connect_succ":"Great! The webdav server can be accessed.","settings_webdav_connect_fail":"The webdav server cannot be reached (possible to be any of address/username/password/authtype errors).","settings_webdav_connect_fail_withcors":"The webdav server cannot be reached (possible to be any of address/username/password/authtype/CORS errors).","settings_webdis":"Remote For Webdis","settings_webdis_disclaimer1":"Disclaimer: This app is NOT an official Redis® Ltd / Redis® OSS / Webdis product. Redis is a registered trademark of Redis Ltd.","settings_webdis_disclaimer2":"Disclaimer: The information is stored locally. Other malicious/harmful/faulty plugins may read the info. If you see any unintentional access to your Webdis server, please immediately change the username and password.","settings_webdis_folder":"We will store the value with keys prefixed by :{{remoteBaseDir}} on your server.","settings_webdis_addr":"Server Address","settings_webdis_addr_desc":"Server address.","settings_webdis_user":"Username","settings_webdis_user_desc":"Username. Attention: the username and other info are saved locally.","settings_webdis_password":"Password","settings_webdis_password_desc":"Password. Attention: the password and other info are saved locally.","settings_webdis_connect_succ":"Great! The Webdis server can be accessed.","settings_webdis_connect_fail":"The Webdis server cannot be reached (possible to be any of address/username/password errors).","settings_chooseservice":"Choose A Remote Service","settings_chooseservice_desc":"Start here. What service are you connecting to? S3, Dropbox, Webdav, OneDrive for personal, or Webdis?","settings_chooseservice_s3":"S3 or compatible","settings_chooseservice_dropbox":"Dropbox","settings_chooseservice_webdav":"Webdav","settings_chooseservice_onedrive":"OneDrive for personal","settings_chooseservice_webdis":"Webdis (HTTP for Redis®)","settings_adv":"Advanced Settings","settings_concurrency":"Concurrency","settings_concurrency_desc":"How many files do you want to download or upload in parallel at most? By default it\'s set to 5. If you meet any problems such as rate limit, you can reduce the concurrency to a lower value.","settings_syncunderscore":"Sync _ Files Or Folders","settings_syncunderscore_desc":"Sync files or folders starting with _ (\\"underscore\\") or not","settings_configdir":"Sync Config Dir (experimental)","settings_configdir_desc":"Sync config dir {{configDir}} or not (inner folder .git and node_modules would be ignored). Please be aware that this may impact all your plugins\' or Obsidian\'s settings, and may require you restart Obsidian after sync. Enable this at your own risk.","settings_deletetowhere":"Deletion Destination","settings_deletetowhere_desc":"Which trash should the plugin put the files into while deleting?","settings_deletetowhere_system_trash":"system trash (default)","settings_deletetowhere_obsidian_trash":"Obsidian .trash folder","settings_conflictaction":"Action For Conflict","settings_conflictaction_desc":"If a file is created or modified on both side since last update, it\'s a conflict event. How to deal with it? This only works for bidirectional sync.","settings_conflictaction_keep_newer":"newer version survives (default)","settings_conflictaction_keep_larger":"larger size version survives","settings_cleanemptyfolder":"Action For Empty Folders","settings_cleanemptyfolder_desc":"The sync algorithm majorly deals with files, so you need to specify how to deal with empty folders.","settings_cleanemptyfolder_skip":"leave them as is (default)","settings_cleanemptyfolder_clean_both":"delete local and remote","settings_protectmodifypercentage":"Abort Sync If Modification Above Percentage","settings_protectmodifypercentage_desc":"Abort the sync if more than n% of the files are going to be deleted / modified. Useful to protect users\' files from unexpected modifications. You can set to 100 to disable the protection, or set to 0 to always block the sync.","settings_protectmodifypercentage_000_desc":"0 (always block)","settings_protectmodifypercentage_050_desc":"50 (default)","settings_protectmodifypercentage_100_desc":"100 (disable the protection)","setting_syncdirection":"Sync Direction","setting_syncdirection_desc":"Which direction should the plugin sync to? Please be aware that only CHANGED files (based on time and size) are synced regardless any option.","setting_syncdirection_bidirectional_desc":"Bidirectional (default)","setting_syncdirection_incremental_push_only_desc":"Incremental Push Only (aka backup mode)","setting_syncdirection_incremental_pull_only_desc":"Incremental Pull Only","settings_enablemobilestatusbar":"Mobile Status Bar (experimental)","settings_enablemobilestatusbar_desc":"By default Obsidian mobile hides status bar. But some users want to show it up. So here is a hack.","settings_importexport":"Import and Export Partial Settings","settings_export":"Export","settings_export_desc":"Export settings by generating a QR code or URI.","settings_export_all_but_oauth2_button":"Export Non-Oauth2 Part","settings_export_dropbox_button":"Export Dropbox Part","settings_export_onedrive_button":"Export OneDrive Part","settings_import":"Import","settings_import_desc":"Paste the exported URI into here and click \\"Import\\". Or, you can open a camera or scan-qrcode app to scan the QR code.","settings_import_button":"Import","settings_import_error_notice":"Your URI string is empty or not correct!","settings_debug":"Debug","settings_debuglevel":"Alter Notice Level","settings_debuglevel_desc":"By default the notice level is \\"info\\". You can change to \\"debug\\" to get verbose information while syncing.","settings_outputsettingsconsole":"Output Current Settings From Disk To Console","settings_outputsettingsconsole_desc":"The settings save on disk in encoded. Click this to see the decoded settings in console.","settings_outputsettingsconsole_button":"Output","settings_outputsettingsconsole_notice":"Finished outputing in console.","settings_obfuscatesettingfile":"Obfuscate The Setting File Or Not","settings_obfuscatesettingfile_desc":"The setting file (data.json) has some sensitive information. It\'s strongly recommended to obfuscate it to avoid unexpected read and modification. If you are sure to view and edit it manually, you can disable the obfuscation.","settings_viewconsolelog":"View Console Log","settings_viewconsolelog_desc":"On desktop, please press \\"ctrl+shift+i\\" or \\"cmd+shift+i\\" to view the log. On mobile, please install the third-party plugin Logstravaganza to export the console log to a note.","settings_syncplans":"Export Sync Plans","settings_syncplans_desc":"Sync plans are created every time after you trigger sync and before the actual sync. Useful to know what would actually happen in those sync. Click the button to export sync plans.","settings_syncplans_button_1":"Export latest 1","settings_syncplans_button_5":"Export latest 5","settings_syncplans_button_all":"Export All","settings_syncplans_notice":"Sync plans history exported.","settings_delsyncplans":"Delete Sync Plans History In DB","settings_delsyncplans_desc":"Delete sync plans history in DB.","settings_delsyncplans_button":"Delete Sync Plans History","settings_delsyncplans_notice":"Sync plans history (in DB) deleted.","settings_delprevsync":"Delete Prev Sync Details In DB","settings_delprevsync_desc":"The sync algorithm keeps the previous successful sync information in DB to determine the file changes. If you want to ignore them so that all files are treated newly created, you can delete the prev sync info here.","settings_delprevsync_button":"Delete Prev Sync Details","settings_delprevsync_notice":"Previous sync history (in local DB) deleted","settings_profiler_results":"Export Profiler Results","settings_profiler_results_desc":"The plugin records the time cost of each steps. Here you can export them to know which step is slow.","settings_profiler_results_notice":"Profiler results exported.","settings_profiler_results_button_all":"Export All","settings_profiler_enabledebugprint":"Enable Profiler Printing","settings_profiler_enabledebugprint_desc":"Print profiler result in each insertion to console or not?","settings_profiler_recordsize":"Enable Profiler Recording Size","settings_profiler_recordsize_desc":"Let profiler record object sizes or not?","settings_outputbasepathvaultid":"Output Vault Base Path And Randomly Assigned ID","settings_outputbasepathvaultid_desc":"For debugging purposes.","settings_outputbasepathvaultid_button":"Output","settings_resetcache":"Reset Local Internal Cache/Databases","settings_resetcache_desc":"Reset local internal caches/databases (for debugging purposes). You would want to reload the plugin after resetting this. This option will not empty the {s3, password...} settings.","settings_resetcache_button":"Reset","settings_resetcache_notice":"Local internal cache/databases deleted. Please manually reload the plugin.","syncalgov3_title":"Remotely Save has HUGE updates on the sync algorithm","syncalgov3_texts":"Welcome to use Remotely Save!\\nFrom this version, a new algorithm has been developed:\\n
  • More robust deletion sync,
  • minimal conflict handling,
  • no meta data uploaded any more,
  • deletion / modification protection,
  • backup mode
  • new encryption method
  • ...
\\nStay tune for more! A full introduction is in the doc website.\\nIf you agree to use this, please read and check two checkboxes then click the \\"Agree\\" button, and enjoy the plugin!\\nIf you do not agree, please click the \\"Do Not Agree\\" button, the plugin will unload itself.\\nAlso, please consider visit the GitHub repo and star ⭐ it! Or even buy me a coffee. Your support is very important to me! Thanks!","syncalgov3_checkbox_manual_backup":"I will backup my vault manually firstly.","syncalgov3_checkbox_requiremultidevupdate":"I understand I need to update the plugin ACROSS ALL DEVICES to make them work properly.","syncalgov3_button_agree":"Agree","syncalgov3_button_disagree":"Do Not Agree","menu_check_file_stat":"Check file stats"}'),zh_cn:JSON.parse('{"confirm":"确认","disable":"关闭","enable":"开启","goback":"返回","submit":"提交","sometext":"这里有一段文字。","syncrun_alreadyrunning":"{{pluginName}} 正处于此阶段:{{syncStatus}}!中断触发 {{newTriggerSource}}。","syncrun_syncingribbon":"{{pluginName}}:正在由 {{triggerSource}} 触发运行","syncrun_step0":"0/8 Remotely Save 在空跑(dry run)模式,不会发生实际的文件交换。","syncrun_step1":"1/8 Remotely Save 准备同步({{serviceType}})","syncrun_step2":"2/8 正在获取远端的元数据和检查密码。","syncrun_passworderr":"检查密码时候出错。","syncrun_step3":"3/8 正在处理远端的元数据。","syncrun_step4":"4/8 正在获取本地的元数据。","syncrun_step5":"5/8 正在获取本地上一次同步的元数据。","syncrun_step6":"6/8 正在生成同步计划。","syncrun_step7":"7/8 Remotely Save 开始发生数据交换!","syncrun_step7skip":"7/8 Remotely Save 在空跑模式,跳过实际数据交换步骤。","syncrun_step8":"8/8 Remotely Save 已完成同步!","syncrun_shortstep0":"0/2 Remotely Save 在空跑(dry run)模式,不会发生实际的文件交换。","syncrun_shortstep1":"1/2 Remotely Save 开始同步({{serviceType}})","syncrun_shortstep2skip":"2/2 Remotely Save 在空跑模式,跳过实际数据交换步骤。","syncrun_shortstep2":"2/2 Remotely Save 已完成同步!","syncrun_abort":"{{manifestID}}-{{theDate}}:中断同步,同步来源={{triggerSource}},出错阶段={{syncStatus}}","syncrun_abort_protectmodifypercentage":"中断同步!您设置了不允许 >= {{protectModifyPercentage}}% 的变更,但是现在 {{realModifyDeleteCount}}/{{allFilesCount}}={{percent}}% 的文件会被修改或删除!如果您确认这次同步是您想要的,那么请在设置里修改允许比例。","protocol_saveqr":" {{manifestName}} 的新设置导入完成。请重启插件设置页使之生效。","protocol_callbacknotsupported":"您的 uri callback 暂不支持: {{params}}","protocol_dropbox_connecting":"正在连接 Dropbox……\\n请不要关闭此弹窗。","protocol_dropbox_connect_succ":"好!我们作为用户 {{username}} 连接上了 Dropbox!","protocol_dropbox_connect_succ_revoke":"您已作为用户 {{username}} 连接上了。如果您想取消连接,请点击此按钮。","protocol_dropbox_connect_fail":"Dropbox 的回调请求有点异常。您是否网络不顺畅?您是否拒绝了鉴权?","protocol_dropbox_connect_unknown":"不知道如何处理此 callback:{{params}}","protocol_dropbox_no_modal":"您不是在设置页的弹窗里触发 Dropbox 的。中止操作。","protocol_onedrive_connecting":"正在连接 OneDrive……\\n请不要关闭此弹窗。","protocol_onedrive_connect_succ_revoke":"您已作为用户 {{username}} 连接上了。如果您想取消连接,请点击此按钮。","protocol_onedrive_connect_fail":"OneDrive 的回调请求有点异常。您是否拒绝了鉴权?","protocol_onedrive_connect_unknown":"不知道如何处理此 callback:{{params}}","command_startsync":"开始同步(start sync)","command_drynrun":"开始同步(空跑模式)(start sync (dry run only))","command_exportsyncplans_json":"导出同步计划为 json 格式(export sync plans in json format)","command_exportsyncplans_1":"导出同步计划(最近 1 次)(export sync plans (latest 1))","command_exportsyncplans_5":"导出同步计划(最近 5 次)(export sync plans (latest 5))","command_exportsyncplans_all":"导出同步计划(所有)(export sync plans (all))","command_exportlogsindb":"从数据库导出终端日志(export logs saved in db)","statusbar_time_years":"{{time}} 年前同步","statusbar_time_months":"{{time}} 月前同步","statusbar_time_weeks":"{{time}} 周前同步","statusbar_time_days":"{{time}} 天前同步","statusbar_time_hours":"{{time}} 小时前同步","statusbar_time_minutes":"{{time}} 分钟前同步","statusbar_time_lessminute":"一分钟之内同步","statusbar_lastsync":"上一次同步于:{{time}}","statusbar_syncing":"正在同步","statusbar_failed":"上次同步失败了","statusbar_now":"刚同步完","statusbar_lastsync_label":"上一次同步于:{{date}}","statusbar_lastsync_never":"没触发过同步","statusbar_lastsync_never_label":"没触发过同步","modal_password_title":"稍等一下,请阅读下文:","modal_password_shortdesc":"如果密码不是空的,那么文件会在上传之前,在本地先用此密码加密。\\n如果密码是空的,那么文件会被非加密地上传。","modal_password_attn1":"注意 1/5:库(Vault)名字是不会加密的!本插件会在一些远程存储里创建一个和库名字有着同名的文件夹。","modal_password_attn2":"注意 2/5:密码在本地不加密地保存!","modal_password_attn3":"注意 3/5:一些元信息是没有被加密的,或者可以被较容易地猜测出来。(文件大小很接近于没加密的时候,且文件夹可能会被存储为大小为 0 byte 的对象。)","modal_password_attn4":"注意 4/5:您需要确保远程存储是“空”的,或者已有文件也是被同一个新密码加密的;从而避免冲突。","modal_password_attn5":"注意 5/5:密码越长越好。","modal_password_secondconfirm":"再次确认保存新密码","modal_password_notice":"新密码已保存!","modal_encryptionmethod_title":"稍等一下,请阅读下文:","modal_encryptionmethod_shortdesc":"您正在修改加密方式,但是您已经设置了密码。\\n修改加密方式之后,您需要手动完全删除在远端的之前加密过的库文件,然后重新同步(从而重新上传)新的加密文件。","modal_remotebasedir_title":"您正在修改远端基文件夹设置","modal_remotebasedir_shortdesc":"1. 本插件并不会自动在远端把内容从旧文件夹移动到新文件夹。所有内容都会重新同步。\\n2. 如果你使得文本输入框为空,那么本设置会被重设回库的文件夹名(默认设置)。\\n3. 即使您设置了端对端加密的密码,远端文件夹名称本身也不会被加密。\\n4. 某些特殊字符,如“?”、“/”、“\\\\”是不允许的。文本前后的空格也会被自动删去。","modal_remotebasedir_invaliddirhint":"您所输入的内容含有某些特殊字符,如“?”、“/”、“\\\\”,它们是不允许的。","modal_remotebasedir_secondconfirm_vaultname":"重设回默认的库文件夹名","modal_remotebasedir_secondconfirm_change":"确认修改","modal_remotebasedir_notice":"新的远端基文件夹设置已保存!","modal_remoteprefix_title":"您正在修改远端路径前缀设置","modal_remoteprefix_shortdesc":"1. 本插件并不会自动在远端把内容从旧文件夹移动到新文件夹。所有内容都会重新同步。\\n2. 如果你使得文本输入框为空,那么本设置为保存为空,文件将会被存储在桶(Bucket)的根目录。\\n3. 即使您设置了端对端加密的密码,远端文件夹名称本身也不会被加密。\\n4. 某些特殊字符,如“?”、“/”、“\\\\”是不允许的。文本前后的空格也会被自动删去。","modal_remoteprefix_invaliddirhint":"您所输入的内容含有某些特殊字符,如“?”、“/”、“\\\\”,它们是不允许的。","modal_remoteprefix_tosave":"您设定的新前缀为:“{{{prefix}}}”","modal_remoteprefix_secondconfirm_empty":"前缀为空,文件会保存在根目录","modal_remoteprefix_secondconfirm_change":"确认修改","modal_remoteprefix_notice":"新的远端路径前缀设置已保存!","modal_dropboxauth_manualsteps":"第 1 步:在浏览器中访问以下地址,然后按照网页提示操作。\\n到了最后,您应该会获得一串很长的代码文本,请复制粘贴到下方,并点击“提交”","modal_dropboxauth_autosteps":"在浏览器中访问以下地址,然后按照网页提示操作。\\n到了最后,您应该会被自动重定向回来 Obsidian。","modal_dropboxauth_copybutton":"点击此按钮从而复制鉴权 url","modal_dropboxauth_copynotice":"鉴权 url 已复制到剪贴板!","modal_dropboxauth_maualinput":"来自网页的授权码","modal_dropboxauth_maualinput_desc":"您需要点击“确认”","modal_dropboxauth_maualinput_notice":"正在尝试连接 Dropbox","modal_dropboxauth_maualinput_conn_succ":"很好!我们作为用户 {{username}} 连接到 Dropbox 了!","modal_dropboxauth_maualinput_conn_succ_revoke":"您已作为用户 {{username}} 连接到 Dropbox。如果您想断开连接,点击此按钮。","modal_dropboxauth_maualinput_conn_fail":"连接 Dropbox 途中出错了。","modal_onedriveauth_shortdesc":"现在只支持个人版 OneDrive,(暂)不支持企业版。\\n在浏览器中访问以下地址,然后按照网页提示操作。\\n到了最后,您应该会被自动重定向回来 Obsidian。","modal_onedriveauth_shortdesc_linux":"您正在用 Linux,有可能无法跳转回来。请考虑使用 flatpack 版本的 Obsidian,或创建 obsidian.desktop 文件。","modal_onedriveauth_copybutton":"点击此按钮从而复制鉴权 url","modal_onedriveauth_copynotice":"鉴权 url 已复制到剪贴板!","modal_onedriverevokeauth_step1":"第 1 步:用浏览器打开以下地址,点击本插件对应的“Edit”按钮,点击“Remove these permissions”按钮。","modal_onedriverevokeauth_step2":"第 2 步:点击以下按钮,清理本地保存的登录信息。","modal_onedriverevokeauth_clean":"清理本地保存的登录信息","modal_onedriverevokeauth_clean_desc":"您需要点击“清理”按钮。","modal_onedriverevokeauth_clean_button":"清理","modal_onedriverevokeauth_clean_notice":"已清理!","modal_onedriverevokeauth_clean_fail":"鉴权途中出错了。","modal_syncconfig_attn":"注意 1/2:此设置只同步(复制)整个 Obsidian 的配置文件夹,但是不会同步其它 . 开头的文件夹或文件。除了会忽略 .git 和 node_modules 文件夹之外,它也并不理解配置文件夹的里各个子文件或子文件夹的含义。\\n注意 2/2:配置文件夹被同步之后,各插件的设置或许会出错,且 Obsidian 或许需要重启来重载各插件的新配置。\\n如果您同意自行承受以上风险,您可以点击以下再次确认按钮。","modal_syncconfig_secondconfirm":"再次确认开启","modal_syncconfig_notice":"您已开启配置文件夹的同步!","modal_qr_shortdesc":"这里可导出(部分)设置。\\n您可以使用另一个设备来扫描此 QR 码。\\n又或者,您可以点击以下按钮复制此特殊 URI,然后粘贴到另一台设备的网络浏览器或 Remotely Save 设置里的导入部分。","modal_qr_button":"点击此按钮复制特殊 URI","modal_qr_button_notice":"特殊 URI 已被复制到剪贴板!","modal_sizesconflict_title":"Remotely Save:跳过大文件的时候出现了一些冲突","modal_sizesconflict_desc":"您设置了跳过同步大于 {{thresholdMB}} MB({{thresholdBytes}} bytes)的文件。\\n但是以下文件的大小,在一端大于阈值,在另一端则小于阈值。\\n为了避免意外的覆盖或删除,插件停止了运作,您需要手动处理至少一端的文件。","modal_sizesconflict_copybutton":"点击以复制以下所有文件大小冲突信息","modal_sizesconflict_copynotice":"所有的文件大小冲突信息,已被复制到剪贴板!","settings_basic":"基本设置","settings_password":"密码","settings_password_desc":"端到端加密的密码。不填写则代表没密码。您需要点击“确认”来修改。注意:密码和其它信息都会在本地保存。如果您修改了密码,您需要手动删除远端的所有文件,重新同步(从而上传)加密文件。","settings_encryptionmethod":"加密方法","settings_encryptionmethod_desc":"端到端加密的方法。推荐选用 RClone Crypt 方法,但是它没有加密文件路径结构。OpenSSL enc 是本插件一开始就支持的方式。两种方法都和 RClone、OpenSSL 官方产品和社区无利益相关。如果您修改了加密方法,您需要手动删除远端的所有文件,重新同步(从而上传)加密文件。更多详细说明见在线文档。","settings_encryptionmethod_rclone":"RClone Crypt(推荐)","settings_encryptionmethod_openssl":"OpenSSL enc(旧方法)","settings_autorun":"自动运行","settings_autorun_desc":"每隔一段时间,此插件尝试自动同步。会影响到电池用量。","settings_autorun_notset":"(不设置)","settings_autorun_1min":"每 1 分钟","settings_autorun_5min":"每 5 分钟","settings_autorun_10min":"每 10 分钟","settings_autorun_30min":"每 30 分钟","settings_runoncestartup":"启动后自动运行一次","settings_runoncestartup_desc":"本设置使得插件在程序启动后自动触发一次同步。修改后,会在下一次启动生效。本设置和“自动运行”是不同的,那个设置是指“每隔一段时间”都自动同步一次。","settings_runoncestartup_notset":"(不设置)","settings_runoncestartup_1sec":"启动后第 1 秒运行一次","settings_runoncestartup_10sec":"启动后第 10 秒运行一次","settings_runoncestartup_30sec":"启动后第 30 秒运行一次","settings_synconsave":"保存时同步(实验性质)","settings_synconsave_desc":"插件如果检查到当前文件在最近一段时间有修改保存过,则尝试同步。请注意,同步是一个很重的操作,因此会影响到耗电量。(修改设置后可能需要重载插件或重启。)","settings_synconsave_disable":"关闭(默认)","settings_synconsave_enable":"开启","settings_skiplargefiles":"跳过大文件","settings_skiplargefiles_desc":"跳过大于某一个阈值的文件。这里 1 MB = 10^6 bytes。","settings_skiplargefiles_notset":"(不设置)","settings_ignorepaths":"忽略的文件或文件夹的正则表达式","settings_ignorepaths_desc":"忽略的文件或文件夹的正则表达式。每行一条。路径是相对于库(Vault)根目录的,没有前置 / 符号。","settings_enablestatusbar_info":"在状态栏显示上一次成功的同步","settings_enablestatusbar_info_desc":"在状态栏显示上一次成功的同步的时间。","settings_enablestatusbar_reloadrequired_notice":"需要重新载入此插件才生效。","settings_resetstatusbar_time":"重设上一次成功同步的时间记录","settings_resetstatusbar_time_desc":"重设上一次成功同步的时间记录。","settings_resetstatusbar_button":"重设","settings_resetstatusbar_notice":"重设完毕!","settings_checkonnectivity":"检查可否连接","settings_checkonnectivity_desc":"检查可否连接。","settings_checkonnectivity_button":"检查","settings_checkonnectivity_checking":"正在检查……","settings_remotebasedir":"修改远端基文件夹(实验性质)","settings_remotebasedir_desc":"默认设定,内容会被同步到远端的和资料库同名的文件夹下。您可以在此修改远端文件夹名,或删除输入框文本从而重设到默认值。您需要点击“确认”。","settings_remoteprefix":"修改远端前缀路径(实验性质)","settings_remoteprefix_desc":"默认设定 s3 保存在存储桶(Bucket)的根目录。您可以在这里修改路径前缀,或者保持为空保持默认设置。您需要点击“确认”。","settings_s3":"S3 或兼容 S3 的服务的设置","settings_s3_disclaimer1":"声明:本插件不是 Amazon 的官方产品。","settings_s3_disclaimer2":"声明:您所输入的信息存储于本地。其它有害的或者出错的插件,是有可能读取到这些信息的。如果您发现了存储桶有不符合预期的访问,请立刻从 AWS(或其它 S3 服务商)删除记录于此的 access key。","settings_s3_cors":"您需要设置 CORS,从而允许这些源的请求访问:app://obsidian.md 和 capacitor://localhost 和 http://localhost 且增加 ETag 到暴露 headers 里。","settings_s3_prod":"一些可参考的 Amazon S3 官方文档:","settings_s3_prod1":"服务地址(Endpoint)和区域(Region)信息","settings_s3_prod2":"Access Key ID 和 Secret Access Key 信息","settings_s3_prod3":"设置 CORS","settings_s3_endpoint":"服务地址(Endpoint)","settings_s3_region":"区域(Region)","settings_s3_region_desc":"如果您不知道这个值填什么,可以尝试填写:us-east-1。","settings_s3_accesskeyid":"Access Key ID","settings_s3_accesskeyid_desc":"Access key ID。注意:access key ID 和其它信息都会在本地保存。","settings_s3_secretaccesskey":"Secret Access Key","settings_s3_secretaccesskey_desc":"Secret access key。注意:secret access key 和其它信息都会在本地保存。","settings_s3_bucketname":"存储桶(Bucket)的名字","settings_s3_bypasscorslocally":"本地绕过 CORS 问题","settings_s3_bypasscorslocally_desc":"对于 Obsidian 新版本(桌面版>=0.13.25 或 iOS>=1.1.1 或 Android>=1.2.1),本插件可以跳过服务器设置 CORS 的步骤。如果您遇到任意问题,可以关闭此设定,并在服务端设置 CORS(允许来自 app://obsidian.md 和 capacitor://localhost 和 http://localhost 的请求且增加 ETag 到暴露 headers 里)。","settings_s3_parts":"分块并行度","settings_s3_parts_desc":"在 S3 里,大文件会被分块上传。您希望同一时间最多有多少个分块被上传?","settings_s3_accuratemtime":"使用准确的文件修改时间","settings_s3_accuratemtime_desc":"读取(已上传的)准确的文件修改时间,有助于同步算法更加准确和稳定。但是它也会导致额外的 api 请求、时间、金钱花费。","settings_s3_urlstyle":"S3 URL style","settings_s3_urlstyle_desc":"是否对 S3 对象强制使用 path style URL(例如使用 https://s3.amazonaws.com/*/ 而不是 https://*.s3.amazonaws.com/)。","settings_s3_reverse_proxy_no_sign_url":"S3 反向代理(不签名)地址(实验性质)","settings_s3_reverse_proxy_no_sign_url_desc":"不会参与到签名的 S3 反向代理地址。如果您有一个反向代理,但是不想修改原始鉴权签名,这里就可以填写。没有 http(s):// 前缀。如果您不知道这是什么,留空即可。","settings_s3_generatefolderobject":"是否生成文件夹 Object","settings_s3_generatefolderobject_desc":"S3 不存在“真正”的文件夹。如果您设置了“生成”(或用了旧版本),那么插件会上传 0 字节的以“/”结尾的 Object 来代表文件夹。新版本插件会默认跳过生成这种文件夹 Object。","settings_s3_generatefolderobject_notgenerate":"不生成(默认)","settings_s3_generatefolderobject_generate":"生成","settings_s3_connect_succ":"很好!可以访问到对应存储桶。","settings_s3_connect_fail":"无法访问到对应存储桶。","settings_dropbox":"Dropbox 设置","settings_dropbox_disclaimer1":"声明:此插件不是 Dropbox 官方产品。","settings_dropbox_disclaimer2":"声明:您所输入的信息存储于本地。其它有害的或者出错的插件,是有可能读取到这些信息的。如果您发现了 Dropbox 有不符合预期的访问,请立刻从 https://www.dropbox.com/account/connected_apps 删除记录于此插件的连接鉴权。","settings_dropbox_folder":"我们会在您的 Dropbox 上创建此文件夹并在里面同步:/Apps/{{pluginID}}/{{remoteBaseDir}}。","settings_dropbox_revoke":"撤回鉴权","settings_dropbox_revoke_desc":"您现在使用了用户名 {{username}} 来连接。如果想取消连接,请点击此按钮。","settings_dropbox_revoke_button":"撤回鉴权","settings_dropbox_revoke_notice":"鉴权已被撤回!","settings_dropbox_revoke_noticeerr":"撤回鉴权出错。","settings_dropbox_clearlocal":"清除本地保存的鉴权信息","settings_dropbox_clearlocal_desc":"您可以强制清除本地已保存的 Dropbox 的登录鉴权信息,但不向服务器发送撤回鉴权的请求。","settings_dropbox_clearlocal_button":"清除","settings_dropbox_clearlocal_notice":"已清除!","settings_dropbox_auth":"鉴权","settings_dropbox_auth_desc":"鉴权。","settings_dropbox_auth_button":"鉴权","settings_dropbox_connect_succ":"很好!我们可连接上 Dropbox!","settings_dropbox_connect_fail":"我们未能连接上 Dropbox。","settings_onedrive":"Onedrive(个人版)设置","settings_onedrive_disclaimer1":"声明:此插件不是微软或 OneDrive 的官方产品。","settings_onedrive_disclaimer2":"声明:您所输入的信息存储于本地。其它有害的或者出错的插件,是有可能读取到这些信息的。如果您发现了 OneDrive 有不符合预期的访问,请立刻从 https://microsoft.com/consent 删除记录于此插件的连接鉴权。","settings_onedrive_folder":"我们会在您的 OneDrive 上创建此文件夹并在里面同步:/Apps/{{pluginID}}/{{remoteBaseDir}}。","settings_onedrive_nobiz":"现在只支持个人版 OneDrive。(暂时)并不支持企业版 OneDrive。","settings_onedrive_revoke":"撤回鉴权","settings_onedrive_revoke_desc":"您现在使用了用户名 {{username}} 来连接。如果想取消连接,请点击此按钮。","settings_onedrive_revoke_button":"撤回鉴权","settings_onedrive_auth":"鉴权","settings_onedrive_auth_desc":"鉴权。","settings_onedrive_auth_button":"鉴权","settings_onedrive_connect_succ":"很好!我们可连接上 OneDrive!","settings_onedrive_connect_fail":"我们未能连接上 OneDrive。","settings_webdav":"Webdav 设置","settings_webdav_disclaimer1":"声明:您所输入的信息存储于本地。其它有害的或者出错的插件,是有可能读取到这些信息的。如果您发现了 Webdav 服务器有不符合预期的访问,请立刻修改用户名和密码。","settings_webdav_cors_os":"Obsidian 桌面版>=0.13.25 或 iOS>=1.1.1 或 Android>=1.2.1 支持跳过 CORS 设置。但您正在使用旧版,建议升级。","settings_webdav_cors":"您需要设置 CORS,允许来自这些源的请求:app://obsidian.md 和 capacitor://localhost 和 http://localhost。","settings_webdav_folder":"我们会在您的服务器上创建此文件夹并在里面同步:/{{remoteBaseDir}}","settings_webdav_addr":"服务器地址","settings_webdav_addr_desc":"服务器地址。","settings_webdav_user":"用户名","settings_webdav_user_desc":"用户名。注意:用户名和其它信息都会保存在本地。","settings_webdav_password":"密码","settings_webdav_password_desc":"密码。注意:密码和其它信息都会保存在本地。","settings_webdav_auth":"鉴权类型","settings_webdav_auth_desc":"如果不填写密码,本设置会被忽略。","settings_webdav_depth":"发送到服务器的 Depth header","settings_webdav_depth_desc":"Webdav 服务器会被设为接收 Depth header 为“1”或“Infinity”请求。如果您不清楚如何设置,可以选择 depth=\'1\'。如果那你确认服务器支持 depth=\'infinity\',请选择它,会获得更加好的性能。","settings_webdav_depth_1":"只支持 depth=\'1\'","settings_webdav_depth_inf":"支持 depth=\'infinity\'","settings_webdav_connect_succ":"很好!可以连接上 Webdav 服务器。","settings_webdav_connect_fail":"无法连接上 Webdav 服务器。(可能是地址/账号/密码/鉴权类型等错误。)","settings_webdav_connect_fail_withcors":"无法连接上 Webdav 服务器。(可能是地址/账号/密码/鉴权类型/CORS 等错误。)","settings_webdis":"Webdis 设置","settings_webdis_disclaimer1":"声明:此插件不是 Redis® Ltd 或 Redis® 软件或 Wedis 的官方产品。Redis 是 Redis Ltd 的注册商标。","settings_webdis_disclaimer2":"声明:您所输入的信息存储于本地。其它有害的或者出错的插件,是有可能读取到这些信息的。如果您发现了 Webdis 服务器有不符合预期的访问,请立刻修改用户名和密码。","settings_webdis_folder":"我们会在您的服务器上创建带有此前缀的 key 并在里面同步::{{remoteBaseDir}}。","settings_webdis_addr":"服务器地址","settings_webdis_addr_desc":"服务器地址","settings_webdis_user":"用户名","settings_webdis_user_desc":"用户名。注意:用户名和其它信息都会保存在本地。","settings_webdis_password":"密码","settings_webdis_password_desc":"密码。注意:密码和其它信息都会保存在本地。","settings_webdis_connect_succ":"很好!可以连接上 Webdis 服务器。","settings_webdis_connect_fail":"无法连接上 Webdis 服务器。(可能是地址/账号/密码/鉴权类型等错误。)","settings_chooseservice":"选择远程服务","settings_chooseservice_desc":"从这里开始设置。您想连接到哪一个服务?S3、Dropbox、Webdav、OneDrive(个人版)、Webdis?","settings_chooseservice_s3":"S3 或兼容 S3 的服务","settings_chooseservice_dropbox":"Dropbox","settings_chooseservice_webdav":"Webdav","settings_chooseservice_onedrive":"OneDrive(个人版)","settings_chooseservice_webdis":"Webdis (an HTTP interface for Redis)","settings_adv":"进阶设置","settings_concurrency":"并行度","settings_concurrency_desc":"您希望同时最多有多少个文件被上传和下载?默认值是 5。如果您遇到了一些问题(如访问频率限制),您可以减少并行度。","settings_syncunderscore":"同步 _ 文件或文件夹","settings_syncunderscore_desc":"是否同步“_”(下划线)开始的文件或文件夹。","settings_configdir":"同步配置文件夹(实验性质)","settings_configdir_desc":"是否同步 Obsidian 的配置文件夹 {{configDir}}(其中的 .git 和 node_modules 依然会被忽略)。请注意,此设置可能会影响到您 Obsidian 或者所有的插件设置,也可能需要您同步完毕后重启 Obsidian。如果您同意自行承受其风险,则可以开启本设置。","settings_deletetowhere":"删除文件到哪里","settings_deletetowhere_desc":"插件触发删除操作时候,删除到哪里?","settings_deletetowhere_system_trash":"系统回收站(默认)","settings_deletetowhere_obsidian_trash":"Obsidian .trash 文件夹","settings_conflictaction":"处理冲突","settings_conflictaction_desc":"如果一个文件,在本地和服务器都被创建或者修改了,那么这就是一个“冲突”情况。如何处理?这个设置只在双向同步时候生效。","settings_conflictaction_keep_newer":"保留最后修改的版本(默认)","settings_conflictaction_keep_larger":"保留文件体积较大的版本","settings_cleanemptyfolder":"处理空文件夹","settings_cleanemptyfolder_desc":"同步算法主要是针对文件处理的,您需要手动指定空文件夹如何处理。","settings_cleanemptyfolder_skip":"跳过处理空文件夹(默认)","settings_cleanemptyfolder_clean_both":"删除本地和服务器的空文件夹","settings_protectmodifypercentage":"如果修改超过百分比则中止同步","settings_protectmodifypercentage_desc":"如果算法检测到超过 n% 的文件会被修改或删除,则中止同步。从而可以保护用户的文件免受预料之外的修改。您可以设置为 100 而去除此保护,也可以设置为 0 总是强制中止所有同步。","settings_protectmodifypercentage_000_desc":"0(总是强制中止)","settings_protectmodifypercentage_050_desc":"50(默认值)","settings_protectmodifypercentage_100_desc":"100(去除此保护)","setting_syncdirection":"同步方向","setting_syncdirection_desc":"插件应该向哪里同步?注意每个选项都是只有修改了的文件(基于修改时间和大小判断)才会触发同步动作。","setting_syncdirection_bidirectional_desc":"双向同步(默认)","setting_syncdirection_incremental_push_only_desc":"只增量推送(也即:备份模式)","setting_syncdirection_incremental_pull_only_desc":"只增量拉取","settings_enablemobilestatusbar":"手机的状态栏(实验性质)","settings_enablemobilestatusbar_desc":"Obsidian 手机版默认隐藏了状态栏。有些用户希望展示它。这里提供了设置选项。","settings_importexport":"导入导出部分设置","settings_export":"导出","settings_export_desc":"用 QR 码或 URI 导出设置信息。","settings_export_all_but_oauth2_button":"导出非 Oauth2 部分","settings_export_dropbox_button":"导出 Dropbox 部分","settings_export_onedrive_button":"导出 OneDrive 部分","settings_import":"导入","settings_import_desc":"粘贴之前导出的 URI 到这里然后点击“导入”。或,使用拍摄 app 或者扫描 QR 码的 app,来扫描对应的 QR 码。","settings_import_button":"导入","settings_import_error_notice":"您输入的 URI 是空的或者不准确的!","settings_debug":"调试","settings_debuglevel":"修改同步提示信息","settings_debuglevel_desc":"默认值为 \\"info\\"。您可以改为 \\"debug\\" 从而在同步时候里获取更多信息。","settings_outputsettingsconsole":"读取硬盘上的设置文件输出到终端","settings_outputsettingsconsole_desc":"硬盘上的设置文件是编码过的,点击这里从而解码并输出到终端。","settings_outputsettingsconsole_button":"输出","settings_outputsettingsconsole_notice":"已输出到终端","settings_obfuscatesettingfile":"是否混淆保存设置文件","settings_obfuscatesettingfile_desc":"设置文件(data.json)含有敏感信息。强烈建议混淆后保存它,从而避免出乎意料的读取和修改。如果您确认要手动查看和修改它,可以关闭混淆保存。","settings_viewconsolelog":"查看终端输出","settings_viewconsolelog_desc":"电脑上,输入“ctrl+shift+i”或“cmd+shift+i”来查看终端输出。手机上,安装第三方插件 Logstravaganza 来导出终端输出到一篇笔记上。","settings_syncplans":"导出同步计划","settings_syncplans_desc":"每次您启动同步,并在实际上传下载前,插件会生成同步计划。它可以使您知道每次同步发生了什么。点击按钮可以导出同步计划。","settings_syncplans_button_1":"导出最近 1 次","settings_syncplans_button_5":"导出最近 5 次","settings_syncplans_button_all":"导出所有","settings_syncplans_notice":"同步计划已导出","settings_delsyncplans":"删除数据库里的同步计划历史","settings_delsyncplans_desc":"删除数据库里的同步计划历史。","settings_delsyncplans_button":"删除同步计划历史","settings_delsyncplans_notice":"(数据库里的)同步计划已被删除。","settings_delprevsync":"删除数据库里的上次同步明细","settings_delprevsync_desc":"同步算法需要上次成功同步的信息来决定文件变更,这个信息保存在本地的数据库里。如果您想忽略这些信息从而所有文件都被视为新创建的话,可以在此删除之前的信息。","settings_delprevsync_button":"删除上次同步明细","settings_delprevsync_notice":"(本地数据库里的)上次同步明细已被删除。","settings_profiler_results":"导出性能数据记录","settings_profiler_results_desc":"插件记录了每次同步每一步的耗时。这里可以导出记录得知哪一步最慢。","settings_profiler_results_notice":"性能数据已导出","settings_profiler_results_button_all":"导出所有","settings_outputbasepathvaultid":"输出资料库对应的位置和随机分配的 ID","settings_outputbasepathvaultid_desc":"用于调试。","settings_outputbasepathvaultid_button":"输出","settings_resetcache":"重设本地缓存和数据库","settings_resetcache_desc":"(出于调试原因)重设本地缓存和数据库。您需要在重设之后重新载入此插件。本重设不会删除 s3,密码……等设定。","settings_resetcache_button":"重设","settings_resetcache_notice":"本地同步缓存和数据库已被删除。请手动重新载入此插件。","syncalgov3_title":"Remotely Save 的同步算法有重大更新","syncalgov3_texts":"欢迎使用 Remotely Save!\\n从这个版本开始,插件更新了同步算法:\\n
  • 更稳健的删除同步
  • 引入冲突处理
  • 避免上传元数据
  • 修改删除保护
  • 备份模式
  • 新的加密方式
  • ……
\\n敬请期待更多更新!详细介绍请参阅文档网站。\\n如果您同意使用新版本,请阅读和勾选两个勾选框,然后点击“同意”按钮,开始使用插件吧!\\n如果您不同意,请点击“不同意”按钮,插件将自动停止运行(unload)。\\n此外,请考虑访问 GitHub 页面然后点赞 ⭐!您的支持对我十分重要!谢谢!","syncalgov3_checkbox_manual_backup":"我将会首先手动备份我的库(Vault)。","syncalgov3_checkbox_requiremultidevupdate":"我理解,我需要在所有设备上都更新此插件使之正常运行。","syncalgov3_button_agree":"同意","syncalgov3_button_disagree":"不同意","menu_check_file_stat":"查看文件属性"}'),zh_tw:JSON.parse('{"confirm":"確認","disable":"關閉","enable":"開啟","goback":"返回","submit":"提交","sometext":"這裡有一段文字。","syncrun_alreadyrunning":"{{pluginName}} 正處於此階段:{{syncStatus}}! 中斷觸發 {{newTriggerSource}}。","syncrun_syncingribbon":"{{pluginName}}:正在由 {{triggerSource}} 觸發執行","syncrun_step0":"0/8 Remotely Save 在空跑(dry run)模式,不會發生實際的檔案交換。","syncrun_step1":"1/8 Remotely Save 準備同步({{serviceType}})","syncrun_step2":"2/8 正在獲取遠端的元數據和檢查密碼。","syncrun_passworderr":"檢查密碼時候出錯。","syncrun_step3":"3/8 正在處理遠端的元數據。","syncrun_step4":"4/8 正在獲取本地的元資料。","syncrun_step5":"5/8 正在獲取本地上一次同步的元資料。","syncrun_step6":"6/8 正在生成同步計劃。","syncrun_step7":"7/8 Remotely Save 開始發生資料交換!","syncrun_step7skip":"7/8 Remotely Save 在空跑模式,跳過實際資料交換步驟。","syncrun_step8":"8/8 Remotely Save 已完成同步!","syncrun_shortstep0":"0/2 Remotely Save 在空跑(dry run)模式,不會發生實際的檔案交換。","syncrun_shortstep1":"1/2 Remotely Save 開始同步({{serviceType}})","syncrun_shortstep2skip":"2/2 Remotely Save 在空跑模式,跳過實際資料交換步驟。","syncrun_shortstep2":"2/2 Remotely Save 已完成同步!","syncrun_abort":"{{manifestID}}-{{theDate}}:中斷同步,同步來源={{triggerSource}},出錯階段={{syncStatus}}","syncrun_abort_protectmodifypercentage":"中斷同步!您設定了不允許 >= {{protectModifyPercentage}}% 的變更,但是現在 {{realModifyDeleteCount}}/{{allFilesCount}}={{percent}}% 的檔案會被修改或刪除!如果您確認這次同步是您想要的,那麼請在設定裡修改允許比例。","protocol_saveqr":" {{manifestName}} 的新設定匯入完成。請重啟外掛設定頁使之生效。","protocol_callbacknotsupported":"您的 uri callback 暫不支援: {{params}}","protocol_dropbox_connecting":"正在連線 Dropbox……\\n請不要關閉此彈窗。","protocol_dropbox_connect_succ":"好!我們作為使用者 {{username}} 連線上了 Dropbox!","protocol_dropbox_connect_succ_revoke":"您已作為使用者 {{username}} 連線上了。如果您想取消連線,請點選此按鈕。","protocol_dropbox_connect_fail":"Dropbox 的回撥請求有點異常。您是否網路不順暢?您是否拒絕了鑑權?","protocol_dropbox_connect_unknown":"不知道如何處理此 callback:{{params}}","protocol_dropbox_no_modal":"您不是在設定頁的彈窗裡觸發 Dropbox 的。中止操作。","protocol_onedrive_connecting":"正在連線 OneDrive……\\n請不要關閉此彈窗。","protocol_onedrive_connect_succ_revoke":"您已作為使用者 {{username}} 連線上了。如果您想取消連線,請點選此按鈕。","protocol_onedrive_connect_fail":"OneDrive 的回撥請求有點異常。您是否拒絕了鑑權?","protocol_onedrive_connect_unknown":"不知道如何處理此 callback:{{params}}","command_startsync":"開始同步(start sync)","command_drynrun":"開始同步(空跑模式)(start sync (dry run only))","command_exportsyncplans_1":"匯出同步計劃(最近 1 次)(export sync plans (latest 1))","command_exportsyncplans_5":"匯出同步計劃(最近 5 次)(export sync plans (latest 5))","command_exportsyncplans_all":"匯出同步計劃(所有)(export sync plans (all))","command_exportlogsindb":"從資料庫匯出終端日誌(export logs saved in db)","statusbar_time_years":"{{time}} 年前同步","statusbar_time_months":"{{time}} 月前同步","statusbar_time_weeks":"{{time}} 周前同步","statusbar_time_days":"{{time}} 天前同步","statusbar_time_hours":"{{time}} 小時前同步","statusbar_time_minutes":"{{time}} 分鐘前同步","statusbar_time_lessminute":"一分鐘之內同步","statusbar_lastsync":"上一次同步於:{{time}}","statusbar_syncing":"正在同步","statusbar_failed":"上次同步失敗了","statusbar_now":"剛同步完","statusbar_lastsync_label":"上一次同步於:{{date}}","statusbar_lastsync_never":"沒觸發過同步","statusbar_lastsync_never_label":"沒觸發過同步","modal_password_title":"稍等一下,請閱讀下文:","modal_password_shortdesc":"如果密碼不是空的,那麼檔案會在上傳之前,在本地先用此密碼加密。\\n如果密碼是空的,那麼檔案會被非加密地上傳。","modal_password_attn1":"注意 1/5:儲存庫(Vault)名字是不會加密的!本外掛會在一些遠端儲存裡建立一個和庫名字有著同名的資料夾。","modal_password_attn2":"注意 2/5:密碼在本地不加密地儲存!","modal_password_attn3":"注意 3/5:一些元資訊是沒有被加密的,或者可以被較容易地猜測出來。(檔案大小很接近於沒加密的時候,且資料夾可能會被儲存為大小為 0 byte 的物件。)","modal_password_attn4":"注意 4/5:您需要確保遠端儲存是“空”的,或者已有檔案也是被同一個新密碼加密的;從而避免衝突。","modal_password_attn5":"注意 5/5:密碼越長越好。","modal_password_secondconfirm":"再次確認儲存新密碼","modal_password_notice":"新密碼已儲存!","modal_encryptionmethod_title":"稍等一下,請閱讀下文:","modal_encryptionmethod_shortdesc":"您正在修改加密方式,但是您已經設定了密碼。\\n修改加密方式之後,您需要手動完全刪除在遠端的之前加密過的庫檔案,然後重新同步(從而重新上傳)新的加密檔案。","modal_remotebasedir_title":"您正在修改遠端基資料夾設定","modal_remotebasedir_shortdesc":"1. 本外掛並不會自動在遠端把內容從舊資料夾移動到新資料夾。所有內容都會重新同步。\\n2. 如果你使得文字輸入框為空,那麼本設定會被重設回庫的資料夾名(預設設定)。\\n3. 即使您設定了端對端加密的密碼,遠端資料夾名稱本身也不會被加密。\\n4. 某些特殊字元,如“?”、“/”、“\\\\”是不允許的。文字前後的空格也會被自動刪去。","modal_remotebasedir_invaliddirhint":"您所輸入的內容含有某些特殊字元,如“?”、“/”、“\\\\”,它們是不允許的。","modal_remotebasedir_secondconfirm_vaultname":"重設回預設的庫資料夾名","modal_remotebasedir_secondconfirm_change":"確認修改","modal_remotebasedir_notice":"新的遠端基資料夾設定已儲存!","modal_remoteprefix_title":"您正在修改遠端路徑字首設定","modal_remoteprefix_shortdesc":"1. 本外掛並不會自動在遠端把內容從舊資料夾移動到新資料夾。所有內容都會重新同步。\\n2. 如果你使得文字輸入框為空,那麼本設定為儲存為空,檔案將會被儲存在桶(Bucket)的根目錄。\\n3. 即使您設定了端對端加密的密碼,遠端資料夾名稱本身也不會被加密。\\n4. 某些特殊字元,如“?”、“/”、“\\\\”是不允許的。文字前後的空格也會被自動刪去。","modal_remoteprefix_invaliddirhint":"您所輸入的內容含有某些特殊字元,如“?”、“/”、“\\\\”,它們是不允許的。","modal_remoteprefix_tosave":"您設定的新字首為:“{{{prefix}}}”","modal_remoteprefix_secondconfirm_empty":"字首為空,檔案會儲存在根目錄","modal_remoteprefix_secondconfirm_change":"確認修改","modal_remoteprefix_notice":"新的遠端路徑字首設定已儲存!","modal_dropboxauth_manualsteps":"第 1 步:在瀏覽器中訪問以下地址,然後按照網頁提示操作。\\n到了最後,您應該會獲得一串很長的程式碼文字,請複製貼上到下方,並點選“提交”","modal_dropboxauth_autosteps":"在瀏覽器中訪問以下地址,然後按照網頁提示操作。\\n到了最後,您應該會被自動重定向回來 Obsidian。","modal_dropboxauth_copybutton":"點選此按鈕從而複製鑑權 url","modal_dropboxauth_copynotice":"鑑權 url 已複製到剪貼簿!","modal_dropboxauth_maualinput":"來自網頁的授權碼","modal_dropboxauth_maualinput_desc":"您需要點選“確認”","modal_dropboxauth_maualinput_notice":"正在嘗試連線 Dropbox","modal_dropboxauth_maualinput_conn_succ":"很好!我們作為使用者 {{username}} 連線到 Dropbox 了!","modal_dropboxauth_maualinput_conn_succ_revoke":"您已作為使用者 {{username}} 連線到 Dropbox。如果您想斷開連線,點選此按鈕。","modal_dropboxauth_maualinput_conn_fail":"連線 Dropbox 途中出錯了。","modal_onedriveauth_shortdesc":"現在只支援個人版 OneDrive,(暫)不支援企業版。\\n在瀏覽器中訪問以下地址,然後按照網頁提示操作。\\n到了最後,您應該會被自動重定向回來 Obsidian。","modal_onedriveauth_shortdesc_linux":"您正在用 Linux,有可能無法跳轉回來。請考慮使用 flatpack 版本的 Obsidian,或建立 obsidian.desktop 檔案。","modal_onedriveauth_copybutton":"點選此按鈕從而複製鑑權 url","modal_onedriveauth_copynotice":"鑑權 url 已複製到剪貼簿!","modal_onedriverevokeauth_step1":"第 1 步:用瀏覽器開啟以下地址,點選本外掛對應的“Edit”按鈕,點選“Remove these permissions”按鈕。","modal_onedriverevokeauth_step2":"第 2 步:點選以下按鈕,清理本地儲存的登入資訊。","modal_onedriverevokeauth_clean":"清理本地儲存的登入資訊","modal_onedriverevokeauth_clean_desc":"您需要點選“清理”按鈕。","modal_onedriverevokeauth_clean_button":"清理","modal_onedriverevokeauth_clean_notice":"已清理!","modal_onedriverevokeauth_clean_fail":"鑑權途中出錯了。","modal_syncconfig_attn":"注意 1/2:此設定只同步(複製)整個 Obsidian 的配置資料夾,但是不會同步其它 . 開頭的資料夾或檔案。除了會忽略 .git 和 node_modules 資料夾之外,它也並不理解配置資料夾的裡各個子檔案或子資料夾的含義。\\n注意 2/2:配置資料夾被同步之後,各外掛的設定或許會出錯,且 Obsidian 或許需要重啟來過載各外掛的新配置。\\n如果您同意自行承受以上風險,您可以點選以下再次確認按鈕。","modal_syncconfig_secondconfirm":"再次確認開啟","modal_syncconfig_notice":"您已開啟配置資料夾的同步!","modal_qr_shortdesc":"這裡可匯出(部分)設定。\\n您可以使用另一個裝置來掃描此 QR 碼。\\n又或者,您可以點選以下按鈕複製此特殊 URI,然後貼上到另一臺裝置的網路瀏覽器或 Remotely Save 設定裡的匯入部分。","modal_qr_button":"點選此按鈕複製特殊 URI","modal_qr_button_notice":"特殊 URI 已被複制到剪貼簿!","modal_sizesconflict_title":"Remotely Save:跳過大檔案的時候出現了一些衝突","modal_sizesconflict_desc":"您設定了跳過同步大於 {{thresholdMB}} MB({{thresholdBytes}} bytes)的檔案。\\n但是以下檔案的大小,在一端大於閾值,在另一端則小於閾值。\\n為了避免意外的覆蓋或刪除,外掛停止了運作,您需要手動處理至少一端的檔案。","modal_sizesconflict_copybutton":"點選以複製以下所有檔案大小衝突資訊","modal_sizesconflict_copynotice":"所有的檔案大小衝突資訊,已被複制到剪貼簿!","settings_basic":"基本設定","settings_password":"密碼","settings_password_desc":"端到端加密的密碼。不填寫則代表沒密碼。您需要點選“確認”來修改。注意:密碼和其它資訊都會在本地儲存。如果您修改了密碼,您需要手動刪除遠端的所有檔案,重新同步(從而上傳)加密檔案。","settings_encryptionmethod":"加密方法","settings_encryptionmethod_desc":"端到端加密的方法。推薦選用 RClone Crypt 方法,但是它沒有加密檔案路徑結構。OpenSSL enc 是本外掛一開始就支援的方式。兩種方法都和 RClone、OpenSSL 官方產品和社群無利益相關。如果您修改了加密方法,您需要手動刪除遠端的所有檔案,重新同步(從而上傳)加密檔案。更多詳細說明見線上文件。","settings_encryptionmethod_rclone":"RClone Crypt(推薦)","settings_encryptionmethod_openssl":"OpenSSL enc(舊方法)","settings_autorun":"自動執行","settings_autorun_desc":"每隔一段時間,此外掛嘗試自動同步。會影響到電池用量。","settings_autorun_notset":"(不設定)","settings_autorun_1min":"每 1 分鐘","settings_autorun_5min":"每 5 分鐘","settings_autorun_10min":"每 10 分鐘","settings_autorun_30min":"每 30 分鐘","settings_runoncestartup":"啟動後自動執行一次","settings_runoncestartup_desc":"本設定使得外掛在程式啟動後自動觸發一次同步。修改後,會在下一次啟動生效。本設定和“自動執行”是不同的,那個設定是指“每隔一段時間”都自動同步一次。","settings_runoncestartup_notset":"(不設定)","settings_runoncestartup_1sec":"啟動後第 1 秒執行一次","settings_runoncestartup_10sec":"啟動後第 10 秒執行一次","settings_runoncestartup_30sec":"啟動後第 30 秒執行一次","settings_synconsave":"儲存時同步(實驗性質)","settings_synconsave_desc":"外掛如果檢查到當前檔案在最近一段時間有修改儲存過,則嘗試同步。請注意,同步是一個很重的操作,因此會影響到耗電量。(修改設定後可能需要過載外掛或重啟。)","settings_synconsave_disable":"關閉(預設)","settings_synconsave_enable":"開啟","settings_skiplargefiles":"跳過大檔案","settings_skiplargefiles_desc":"跳過大於某一個閾值的檔案。這裡 1 MB = 10^6 bytes。","settings_skiplargefiles_notset":"(不設定)","settings_ignorepaths":"忽略的檔案或資料夾的正則表示式","settings_ignorepaths_desc":"忽略的檔案或資料夾的正則表示式。每行一條。路徑是相對於庫(Vault)根目錄的,沒有前置 / 符號。","settings_enablestatusbar_info":"在狀態列顯示上一次成功的同步","settings_enablestatusbar_info_desc":"在狀態列顯示上一次成功的同步的時間。","settings_enablestatusbar_reloadrequired_notice":"需要重新載入此外掛才生效。","settings_resetstatusbar_time":"重設上一次成功同步的時間記錄","settings_resetstatusbar_time_desc":"重設上一次成功同步的時間記錄。","settings_resetstatusbar_button":"重設","settings_resetstatusbar_notice":"重設完畢!","settings_checkonnectivity":"檢查可否連線","settings_checkonnectivity_desc":"檢查可否連線。","settings_checkonnectivity_button":"檢查","settings_checkonnectivity_checking":"正在檢查……","settings_remotebasedir":"修改遠端基資料夾(實驗性質)","settings_remotebasedir_desc":"預設設定,內容會被同步到遠端的和資料庫同名的資料夾下。您可以在此修改遠端資料夾名,或刪除輸入框文字從而重設到預設值。您需要點選“確認”。","settings_remoteprefix":"修改遠端字首路徑(實驗性質)","settings_remoteprefix_desc":"預設設定 s3 儲存在儲存桶(Bucket)的根目錄。您可以在這裡修改路徑字首,或者保持為空保持預設設定。您需要點選“確認”。","settings_s3":"S3 或相容 S3 的服務的設定","settings_s3_disclaimer1":"宣告:本外掛不是 Amazon 的官方產品。","settings_s3_disclaimer2":"宣告:您所輸入的資訊儲存於本地。其它有害的或者出錯的外掛,是有可能讀取到這些資訊的。如果您發現了儲存桶有不符合預期的訪問,請立刻從 AWS(或其它 S3 服務商)刪除記錄於此的 access key。","settings_s3_cors":"您需要設定 CORS,從而允許這些源的請求訪問:app://obsidian.md 和 capacitor://localhost 和 http://localhost 且增加 ETag 到暴露 headers 裡。","settings_s3_prod":"一些可參考的 Amazon S3 官方文件:","settings_s3_prod1":"服務地址(Endpoint)和區域(Region)資訊","settings_s3_prod2":"Access Key ID 和 Secret Access Key 資訊","settings_s3_prod3":"設定 CORS","settings_s3_endpoint":"服務地址(Endpoint)","settings_s3_region":"區域(Region)","settings_s3_region_desc":"如果您不知道這個值填什麼,可以嘗試填寫:us-east-1。","settings_s3_accesskeyid":"Access Key ID","settings_s3_accesskeyid_desc":"Access key ID。注意:access key ID 和其它資訊都會在本地儲存。","settings_s3_secretaccesskey":"Secret Access Key","settings_s3_secretaccesskey_desc":"Secret access key。注意:secret access key 和其它資訊都會在本地儲存。","settings_s3_bucketname":"儲存桶(Bucket)的名字","settings_s3_bypasscorslocally":"本地繞過 CORS 問題","settings_s3_bypasscorslocally_desc":"對於 Obsidian 新版本(桌面版>=0.13.25 或 iOS>=1.1.1 或 Android>=1.2.1),本外掛可以跳過伺服器設定 CORS 的步驟。如果您遇到任意問題,可以關閉此設定,並在服務端設定 CORS(允許來自 app://obsidian.md 和 capacitor://localhost 和 http://localhost 的請求且增加 ETag 到暴露 headers 裡)。","settings_s3_parts":"分塊並行度","settings_s3_parts_desc":"在 S3 裡,大檔案會被分塊上傳。您希望同一時間最多有多少個分塊被上傳?","settings_s3_accuratemtime":"使用準確的檔案修改時間","settings_s3_accuratemtime_desc":"讀取(已上傳的)準確的檔案修改時間,有助於同步演算法更加準確和穩定。但是它也會導致額外的 api 請求、時間、金錢花費。","settings_s3_urlstyle":"S3 URL style","settings_s3_urlstyle_desc":"是否對 S3 物件強制使用 path style URL(例如使用 https://s3.amazonaws.com/*/ 而不是 https://*.s3.amazonaws.com/)。","settings_s3_reverse_proxy_no_sign_url":"S3 反向代理(不簽名)地址(實驗性質)","settings_s3_reverse_proxy_no_sign_url_desc":"不會參與到簽名的 S3 反向代理地址。如果您有一個反向代理,但是不想修改原始鑑權簽名,這裡就可以填寫。沒有 http(s):// 字首。如果您不知道這是什麼,留空即可。","settings_s3_generatefolderobject":"是否生成文件夾 Object","settings_s3_generatefolderobject_desc":"S3 不存在“真正”的文件夾。如果您設置了“生成”(或用了舊版本),那麼插件會上傳 0 字節的以“/”結尾的 Object 來代表文件夾。新版本插件會默認跳過生成這種文件夾 Object。","settings_s3_generatefolderobject_notgenerate":"不生成(默認)","settings_s3_generatefolderobject_generate":"生成","settings_s3_connect_succ":"很好!可以訪問到對應儲存桶。","settings_s3_connect_fail":"無法訪問到對應儲存桶。","settings_dropbox":"Dropbox 設定","settings_dropbox_disclaimer1":"宣告:此外掛不是 Dropbox 官方產品。","settings_dropbox_disclaimer2":"宣告:您所輸入的資訊儲存於本地。其它有害的或者出錯的外掛,是有可能讀取到這些資訊的。如果您發現了 Dropbox 有不符合預期的訪問,請立刻從 https://www.dropbox.com/account/connected_apps 刪除記錄於此外掛的連線鑑權。","settings_dropbox_folder":"我們會在您的 Dropbox 上建立此資料夾並在裡面同步:/Apps/{{pluginID}}/{{remoteBaseDir}}。","settings_dropbox_revoke":"撤回鑑權","settings_dropbox_revoke_desc":"您現在使用了使用者名稱 {{username}} 來連線。如果想取消連線,請點選此按鈕。","settings_dropbox_revoke_button":"撤回鑑權","settings_dropbox_revoke_notice":"鑑權已被撤回!","settings_dropbox_revoke_noticeerr":"撤回鑑權出錯。","settings_dropbox_clearlocal":"清除本地儲存的鑑權資訊","settings_dropbox_clearlocal_desc":"您可以強制清除本地已儲存的 Dropbox 的登入鑑權資訊,但不向伺服器傳送撤回鑑權的請求。","settings_dropbox_clearlocal_button":"清除","settings_dropbox_clearlocal_notice":"已清除!","settings_dropbox_auth":"鑑權","settings_dropbox_auth_desc":"鑑權。","settings_dropbox_auth_button":"鑑權","settings_dropbox_connect_succ":"很好!我們可連線上 Dropbox!","settings_dropbox_connect_fail":"我們未能連線上 Dropbox。","settings_onedrive":"Onedrive(個人版)設定","settings_onedrive_disclaimer1":"宣告:此外掛不是微軟或 OneDrive 的官方產品。","settings_onedrive_disclaimer2":"宣告:您所輸入的資訊儲存於本地。其它有害的或者出錯的外掛,是有可能讀取到這些資訊的。如果您發現了 OneDrive 有不符合預期的訪問,請立刻從 https://microsoft.com/consent 刪除記錄於此外掛的連線鑑權。","settings_onedrive_folder":"我們會在您的 OneDrive 上建立此資料夾並在裡面同步:/Apps/{{pluginID}}/{{remoteBaseDir}}。","settings_onedrive_nobiz":"現在只支援個人版 OneDrive。(暫時)並不支援企業版 OneDrive。","settings_onedrive_revoke":"撤回鑑權","settings_onedrive_revoke_desc":"您現在使用了使用者名稱 {{username}} 來連線。如果想取消連線,請點選此按鈕。","settings_onedrive_revoke_button":"撤回鑑權","settings_onedrive_auth":"鑑權","settings_onedrive_auth_desc":"鑑權。","settings_onedrive_auth_button":"鑑權","settings_onedrive_connect_succ":"很好!我們可連線上 OneDrive!","settings_onedrive_connect_fail":"我們未能連線上 OneDrive。","settings_webdav":"Webdav 設定","settings_webdav_disclaimer1":"宣告:您所輸入的資訊儲存於本地。其它有害的或者出錯的外掛,是有可能讀取到這些資訊的。如果您發現了 Webdav 伺服器有不符合預期的訪問,請立刻修改使用者名稱和密碼。","settings_webdav_cors_os":"Obsidian 桌面版>=0.13.25 或 iOS>=1.1.1 或 Android>=1.1.1 支援跳過 CORS 設定。但您正在使用舊版,建議升級。","settings_webdav_cors":"您需要設定 CORS,允許來自這些源的請求:app://obsidian.md 和 capacitor://localhost 和 http://localhost。","settings_webdav_folder":"我們會在您的伺服器上建立此資料夾並在裡面同步:/{{remoteBaseDir}}","settings_webdav_addr":"伺服器地址","settings_webdav_addr_desc":"伺服器地址。","settings_webdav_user":"使用者名稱","settings_webdav_user_desc":"使用者名稱。注意:使用者名稱和其它資訊都會儲存在本地。","settings_webdav_password":"密碼","settings_webdav_password_desc":"密碼。注意:密碼和其它資訊都會儲存在本地。","settings_webdav_auth":"鑑權型別","settings_webdav_auth_desc":"如果不填寫密碼,本設定會被忽略。","settings_webdav_depth":"傳送到伺服器的 Depth header","settings_webdav_depth_desc":"Webdav 伺服器會被設為接收 Depth header 為“1”或“Infinity”請求。如果您不清楚如何設定,可以選擇 depth=\'1\'。如果那你確認伺服器支援 depth=\'infinity\',請選擇它,會獲得更加好的效能。","settings_webdav_depth_1":"只支援 depth=\'1\'","settings_webdav_depth_inf":"支援 depth=\'infinity\'","settings_webdav_connect_succ":"很好!可以連線上 Webdav 伺服器。","settings_webdav_connect_fail":"無法連線上 Webdav 伺服器。(可能是地址/賬號/密碼/鑑權型別等錯誤。)","settings_webdav_connect_fail_withcors":"無法連線上 Webdav 伺服器。(可能是地址/賬號/密碼/鑑權型別/CORS 等錯誤。)","settings_webdis":"Webdis 設置","settings_webdis_disclaimer1":"聲明:此插件不是 Redis® Ltd 或 Redis® 軟件或 Wedis 的官方產品。Redis 是 Redis Ltd 的註冊商標。","settings_webdis_disclaimer2":"聲明:您所輸入的信息存儲於本地。其它有害的或者出錯的插件,是有可能讀取到這些信息的。如果您發現了 Webdis 服務器有不符合預期的訪問,請立刻修改用戶名和密碼。","settings_webdis_folder":"我們會在您的服務器上創建帶有此前綴的 key 並在裡面同步::{{remoteBaseDir}}。","settings_webdis_addr":"服務器地址","settings_webdis_addr_desc":"服務器地址","settings_webdis_user":"用戶名","settings_webdis_user_desc":"用戶名。注意:用戶名和其它信息都會保存在本地。","settings_webdis_password":"密碼","settings_webdis_password_desc":"密碼。注意:密碼和其它信息都會保存在本地。","settings_webdis_connect_succ":"很好!可以連接上 Webdis 服務器。","settings_webdis_connect_fail":"無法連接上 Webdis 服務器。(可能是地址/賬號/密碼/鑑權類型等錯誤。)","settings_chooseservice":"選擇遠端服務","settings_chooseservice_desc":"從這裡開始設定。您想連線到哪一個服務?S3、Dropbox、Webdav、OneDrive(個人版)、Webdis?","settings_chooseservice_s3":"S3 或相容 S3 的服務","settings_chooseservice_dropbox":"Dropbox","settings_chooseservice_webdav":"Webdav","settings_chooseservice_onedrive":"OneDrive(個人版)","settings_chooseservice_webdis":"Webdis (an HTTP interface for Redis®)","settings_adv":"進階設定","settings_concurrency":"並行度","settings_concurrency_desc":"您希望同時最多有多少個檔案被上傳和下載?預設值是 5。如果您遇到了一些問題(如訪問頻率限制),您可以減少並行度。","settings_syncunderscore":"同步 _ 檔案或資料夾","settings_syncunderscore_desc":"是否同步“_”(下劃線)開始的檔案或資料夾。","settings_configdir":"同步配置資料夾(實驗性質)","settings_configdir_desc":"是否同步 Obsidian 的配置資料夾 {{configDir}}(其中的 .git 和 node_modules 依然會被忽略)。請注意,此設定可能會影響到您 Obsidian 或者所有的外掛設定,也可能需要您同步完畢後重啟 Obsidian。如果您同意自行承受其風險,則可以開啟本設定。","settings_deletetowhere":"刪除檔案到哪裡","settings_deletetowhere_desc":"外掛觸發刪除操作時候,刪除到哪裡?","settings_deletetowhere_system_trash":"系統回收站(預設)","settings_deletetowhere_obsidian_trash":"Obsidian .trash 資料夾","settings_conflictaction":"處理衝突","settings_conflictaction_desc":"如果一個檔案,在本地和伺服器都被建立或者修改了,那麼這就是一個“衝突”情況。如何處理?這個設定只在雙向同步時候生效。","settings_conflictaction_keep_newer":"保留最後修改的版本(預設)","settings_conflictaction_keep_larger":"保留檔案體積較大的版本","settings_cleanemptyfolder":"處理空資料夾","settings_cleanemptyfolder_desc":"同步演算法主要是針對檔案處理的,您需要手動指定空資料夾如何處理。","settings_cleanemptyfolder_skip":"跳過處理空資料夾(預設)","settings_cleanemptyfolder_clean_both":"刪除本地和伺服器的空資料夾","settings_protectmodifypercentage":"如果修改超過百分比則中止同步","settings_protectmodifypercentage_desc":"如果演算法檢測到超過 n% 的檔案會被修改或刪除,則中止同步。從而可以保護使用者的檔案免受預料之外的修改。您可以設定為 100 而去除此保護,也可以設定為 0 總是強制中止所有同步。","settings_protectmodifypercentage_000_desc":"0(總是強制中止)","settings_protectmodifypercentage_050_desc":"50(預設值)","settings_protectmodifypercentage_100_desc":"100(去除此保護)","setting_syncdirection":"同步方向","setting_syncdirection_desc":"外掛應該向哪裡同步?注意每個選項都是隻有修改了的檔案(基於修改時間和大小判斷)才會觸發同步動作。","setting_syncdirection_bidirectional_desc":"雙向同步(預設)","setting_syncdirection_incremental_push_only_desc":"只增量推送(也即:備份模式)","setting_syncdirection_incremental_pull_only_desc":"只增量拉取","settings_enablemobilestatusbar":"手機的狀態列(實驗性質)","settings_enablemobilestatusbar_desc":"Obsidian 手機版預設隱藏了狀態列。有些使用者希望展示它。這裡提供了設定選項。","settings_importexport":"匯入匯出部分設定","settings_export":"匯出","settings_export_desc":"用 QR 碼或 URI 匯出設定資訊。","settings_export_all_but_oauth2_button":"匯出非 Oauth2 部分","settings_export_dropbox_button":"匯出 Dropbox 部分","settings_export_onedrive_button":"匯出 OneDrive 部分","settings_import":"匯入","settings_import_desc":"貼上之前匯出的 URI 到這裡然後點選“匯入”。或,使用拍攝 app 或者掃描 QR 碼的 app,來掃描對應的 QR 碼。","settings_import_button":"匯入","settings_import_error_notice":"您輸入的 URI 是空的或者不準確的!","settings_debug":"除錯","settings_debuglevel":"修改同步提示資訊","settings_debuglevel_desc":"預設值為 \\"info\\"。您可以改為 \\"debug\\" 從而在同步時候裡獲取更多資訊。","settings_outputsettingsconsole":"讀取硬碟上的設定檔案輸出到終端","settings_outputsettingsconsole_desc":"硬碟上的設定檔案是編碼過的,點選這裡從而解碼並輸出到終端。","settings_outputsettingsconsole_button":"輸出","settings_outputsettingsconsole_notice":"已輸出到終端","settings_obfuscatesettingfile":"是否混淆儲存設定檔案","settings_obfuscatesettingfile_desc":"設定檔案(data.json)含有敏感資訊。強烈建議混淆後儲存它,從而避免出乎意料的讀取和修改。如果您確認要手動檢視和修改它,可以關閉混淆儲存。","settings_viewconsolelog":"檢視終端輸出","settings_viewconsolelog_desc":"電腦上,輸入“ctrl+shift+i”或“cmd+shift+i”來檢視終端輸出。手機上,安裝第三方外掛 Logstravaganza 來匯出終端輸出到一篇筆記上。","settings_syncplans":"匯出同步計劃","settings_syncplans_desc":"每次您啟動同步,並在實際上傳下載前,外掛會生成同步計劃。它可以使您知道每次同步發生了什麼。點選按鈕可以匯出同步計劃。","settings_syncplans_button_1":"匯出最近 1 次","settings_syncplans_button_5":"匯出最近 5 次","settings_syncplans_button_all":"匯出所有","settings_syncplans_notice":"同步計劃已匯出","settings_delsyncplans":"刪除資料庫裡的同步計劃歷史","settings_delsyncplans_desc":"刪除資料庫裡的同步計劃歷史。","settings_delsyncplans_button":"刪除同步計劃歷史","settings_delsyncplans_notice":"(資料庫裡的)同步計劃已被刪除。","settings_delprevsync":"刪除資料庫裡的上次同步明細","settings_delprevsync_desc":"同步演算法需要上次成功同步的資訊來決定檔案變更,這個資訊儲存在本地的資料庫裡。如果您想忽略這些資訊從而所有檔案都被視為新建立的話,可以在此刪除之前的資訊。","settings_delprevsync_button":"刪除上次同步明細","settings_delprevsync_notice":"(本地資料庫裡的)上次同步明細已被刪除。","settings_profiler_results":"匯出效能資料記錄","settings_profiler_results_desc":"外掛記錄了每次同步每一步的耗時。這裡可以匯出記錄得知哪一步最慢。","settings_profiler_results_notice":"效能資料已匯出","settings_profiler_results_button_all":"匯出所有","settings_outputbasepathvaultid":"輸出資料庫對應的位置和隨機分配的 ID","settings_outputbasepathvaultid_desc":"用於除錯。","settings_outputbasepathvaultid_button":"輸出","settings_resetcache":"重設本地快取和資料庫","settings_resetcache_desc":"(出於除錯原因)重設本地快取和資料庫。您需要在重設之後重新載入此外掛。本重設不會刪除 s3,密碼……等設定。","settings_resetcache_button":"重設","settings_resetcache_notice":"本地同步快取和資料庫已被刪除。請手動重新載入此外掛。","syncalgov3_title":"Remotely Save 的同步演算法有重大更新","syncalgov3_texts":"歡迎使用 Remotely Save!\\n從這個版本開始,外掛更新了同步演算法:\\n
  • 更穩健的刪除同步
  • 引入衝突處理
  • 避免上傳元資料
  • 修改刪除保護
  • 備份模式
  • 新的加密方式
  • ……
\\n敬請期待更多更新!詳細介紹請參閱文件網站。\\n如果您同意使用新版本,請閱讀和勾選兩個勾選框,然後點選“同意”按鈕,開始使用外掛吧!\\n如果您不同意,請點選“不同意”按鈕,外掛將自動停止執行(unload)。\\n此外,請考慮訪問 GitHub 頁面然後點贊 ⭐!您的支援對我十分重要!謝謝!","syncalgov3_checkbox_manual_backup":"我將會首先手動備份我的庫(Vault)。","syncalgov3_checkbox_requiremultidevupdate":"我理解,我需要在所有裝置上都更新此外掛使之正常執行。","syncalgov3_button_agree":"同意","syncalgov3_button_disagree":"不同意","menu_check_file_stat":"檢視檔案屬性"}')};class _D{constructor(e,t){this.lang=e,this.saveSettingFunc=t}changeTo(t){return e(this,void 0,void 0,(function*(){this.lang=t,yield this.saveSettingFunc(t)}))}_get(e){let t=this.lang;t="auto"===this.lang&&l.moment.locale().replace("-","_")in wD?l.moment.locale().replace("-","_"):"en";return wD[t][e]||wD.en[e]||e}t(e,t){return void 0===t?this._get(e):bD.render(this._get(e),t)}}var xD=n(87583);const DD=(e,t)=>{const n=e;if(void 0===n.func||"settings"!==n.func||void 0===n.vault||void 0===n.data)return{status:"error",message:`the uri is not for exporting/importing settings: ${JSON.stringify(e)}`};if(n.vault!==t)return{status:"error",message:`the target vault is ${n.vault} but you are currently in ${t}: ${JSON.stringify(e)}`};let r={};try{r=JSON.parse(n.data)}catch(t){return{status:"error",message:`errors while parsing settings: ${JSON.stringify(e)}`}}return{status:"ok",message:"ok",result:r}};var ED=n(73790),MD=n.n(ED),AD=n(98860);(0,AD.extendPrototype)(MD());const SD=20240220,CD="remotelysavedb",kD=(t,n,r,i,o)=>e(void 0,void 0,void 0,(function*(){if(n!==r){if(n<20220326)throw Error("You are using a very old version of Remotely Save. No way to auto update internal DB. Please install and enable 0.3.40 firstly, then install a later version.");if(20220326===n&&20240220===r)return yield((t,n,r)=>e(void 0,void 0,void 0,(function*(){const e=20240220;console.debug("start upgrading internal db from 20220326 to 20240220");const i=(e=>{const t=[];for(const n of e){const e={key:n.localKey,keyEnc:n.remoteKey,keyRaw:void 0!==n.remoteKey&&""!==n.remoteKey?n.remoteKey:n.localKey,mtimeCli:n.localMtime,mtimeSvr:n.remoteMtime,size:n.localSize,sizeEnc:n.remoteSize,sizeRaw:void 0!==n.remoteKey&&""!==n.remoteKey?n.remoteSize:n.localSize,etag:n.remoteExtraKey};t.push(e)}return t})(yield ID(t,n));for(const e of i)yield FD(t,n,r,e);yield t.versionTbl.setItem(`${n}\tversion`,e),console.debug("finish upgrading internal db from 20220326 to 20240220")})))(t,i,o);if(re(void 0,void 0,void 0,(function*(){var e;const i={versionTbl:MD().createInstance({name:CD,storeName:"schemaversion"}),syncPlansTbl:MD().createInstance({name:CD,storeName:"syncplanshistory"}),vaultRandomIDMappingTbl:MD().createInstance({name:CD,storeName:"vaultrandomidmapping"}),loggerOutputTbl:MD().createInstance({name:CD,storeName:"loggeroutput"}),simpleKVForMiscTbl:MD().createInstance({name:CD,storeName:"simplekvformisc"}),prevSyncRecordsTbl:MD().createInstance({name:CD,storeName:"prevsyncrecords"}),profilerResultsTbl:MD().createInstance({name:CD,storeName:"profilerresults"}),fileHistoryTbl:MD().createInstance({name:CD,storeName:"filefolderoperationhistory"}),syncMappingTbl:MD().createInstance({name:CD,storeName:"syncmetadatahistory"})};let o="";const s=yield i.vaultRandomIDMappingTbl.getItem(`path2id\t${t}`);if(null===s?(o=""!==n?n:((e=21)=>{let t="",n=crypto.getRandomValues(new Uint8Array(e));for(;e--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&n[e]];return t})(),yield i.vaultRandomIDMappingTbl.setItem(`path2id\t${t}`,o),yield i.vaultRandomIDMappingTbl.setItem(`id2path\t${o}`,t)):o=s,""===o)throw Error("no vaultRandomID found or generated");const a=null!==(e=yield i.versionTbl.getItem(`${o}\tversion`))&&void 0!==e?e:yield i.versionTbl.getItem("version");return null===a?(console.debug("no internal db version, setting it to 20240220"),yield i.versionTbl.setItem(`${o}\tversion`,SD)):a===SD||(console.debug(`trying to upgrade db version from ${a} to 20240220`),yield kD(i,a,SD,o,r)),console.info("db connected"),{db:i,vaultRandomID:o}})),ID=(t,n)=>e(void 0,void 0,void 0,(function*(){var r;return yield Promise.all((null!==(r=yield t.syncMappingTbl.keys())&&void 0!==r?r:[]).filter((e=>e.startsWith(`${n}\t`))).map((n=>e(void 0,void 0,void 0,(function*(){return yield t.syncMappingTbl.getItem(n)})))))})),RD=t=>e(void 0,void 0,void 0,(function*(){const e=Date.now()-864e5;let n=(yield t.syncPlansTbl.keys()).map((t=>{const n=Number.parseInt(t.split("\t")[1]);return{ts:n,key:t,expired:n<=e}}));const r=new Set(n.filter((e=>e.expired)).map((e=>e.key)));n.length-r.size>20&&(n=n.filter((e=>!e.expired)),n.sort(((e,t)=>-(e.ts-t.ts))),n.slice(20).forEach((e=>{r.add(e.key)})));const i=[];r.forEach((e=>{i.push(t.syncPlansTbl.removeItem(e))})),yield Promise.all(i)})),FD=(t,n,r,i)=>e(void 0,void 0,void 0,(function*(){yield t.prevSyncRecordsTbl.setItem(`${n}\t${r}\t${i.key}`,i)})),OD=(t,n,r,i)=>e(void 0,void 0,void 0,(function*(){yield t.prevSyncRecordsTbl.removeItem(`${n}\t${r}\t${i}`)})),BD=(t,n,r)=>e(void 0,void 0,void 0,(function*(){yield t.simpleKVForMiscTbl.setItem(`${n}-lastSuccessSyncMillis`,r)})),PD=(t,n)=>e(void 0,void 0,void 0,(function*(){return yield t.simpleKVForMiscTbl.getItem(`${n}-lastSuccessSyncMillis`)})),ND=["svg",a,[["path",{d:"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z"}],["circle",{cx:"12",cy:"12",r:"3"}]]],jD=["svg",a,[["path",{d:"M9.88 9.88a3 3 0 1 0 4.24 4.24"}],["path",{d:"M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68"}],["path",{d:"M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22"}]]],LD=(t,n,r,i)=>e(void 0,void 0,void 0,(function*(){console.info("exporting sync plans"),yield R(y,n);const o=yield((t,n)=>e(void 0,void 0,void 0,(function*(){const e=[];return yield t.syncPlansTbl.iterate(((t,r,i)=>{r.startsWith(`${n}\t`)&&e.push(t)})),e.sort(((e,t)=>-(e.ts-t.ts))),void 0===e?[]:e.map((e=>e.syncPlan))})))(t,r);let s="";s=0===o.length?"No sync plans history found":i<=0?"Sync plans found:\n\n"+o.map((e=>"```json\n"+e+"\n```\n")).join("\n"):"Sync plans found:\n\n"+o.map((e=>"```json\n"+e+"\n```\n")).slice(0,i).join("\n");const a=Date.now(),u=`${y}sync_plans_hist_exported_on_${a}.md`;yield n.create(u,s,{mtime:a}),console.info("finish exporting sync plans")})),UD=(t,n,r)=>e(void 0,void 0,void 0,(function*(){console.info("exporting profiler results"),yield R(y,n);const i=yield((t,n)=>e(void 0,void 0,void 0,(function*(){const e=[];return yield t.profilerResultsTbl.iterate(((t,r,i)=>{r.startsWith(`${n}\t`)&&e.push({val:t,ts:Number.parseInt(r.split("\t")[1])})})),e.sort(((e,t)=>-(e.ts-t.ts))),void 0===e?[]:e.map((e=>e.val))})))(t,r);let o="";o=0===i.length?"No profiler results found":"Profiler results found:\n\n"+i.map((e=>"```\n"+e+"\n```\n")).join("\n");const s=Date.now(),a=`${y}profiler_results_exported_on_${s}.md`;yield n.create(a,o,{mtime:s}),console.info("finish exporting profiler results")}));var qD=n(2543);const $D=(e,t)=>{let n=e;return"/"===e||""===e?n=`${t}`:e.startsWith("/")?(console.warn(`why the path ${e} starts with '/'? but we just go on.`),n=`${t}${e}`):n=`${t}/${e}`,`rs:fs:v1:${encodeURIComponent(n)}`},zD=(e,t)=>{const n=decodeURIComponent(e),r=`rs:fs:v1:${t}/`,i=":meta",o=":content";if(!n.startsWith(r))throw Error(`you should not call getOrigEntity on ${e}`);let s=n.slice(r.length);return s.endsWith(i)?s=s.slice(0,-5):s.endsWith(o)&&(s=s.slice(0,-8)),s};class HD extends Q{constructor(e,t,n){super(),this.kind="webdis",this.webdisConfig=e,this.remoteBaseDir=this.webdisConfig.remoteBaseDir||t||"",this.saveUpdatedConfigFunc=n}_fetchCommand(t,n,r){return e(this,void 0,void 0,(function*(){var e,i;const o=this.webdisConfig.address;if(!o.startsWith("https://")&&!o.startsWith("http://"))throw Error("your webdis server address should start with https:// or http://");if(o.endsWith("/"))throw Error("your webdis server should not ends with /");if(void 0!==r&&"PUT"!==t)throw Error('you can only "POST" ArrayBuffer, not using other methods');const s=`${o}/${n}`,a=null!==(e=this.webdisConfig.username)&&void 0!==e?e:"",u=null!==(i=this.webdisConfig.password)&&void 0!==i?i:"";if(""!==a&&""!==u)return yield fetch(s,{method:t,headers:{Authorization:"Basic "+btoa(a+":"+u)},body:r});if(""===a&&""===u)return yield fetch(s,{method:t,body:r});throw Error("your username and password should both be empty or not empty!")}))}walk(){return e(this,void 0,void 0,(function*(){let e="0";const t=[];do{const n=`SCAN/${e}/MATCH/rs:fs:v1:*:meta/COUNT/1000`,r=(yield(yield this._fetchCommand("GET",n)).json()).SCAN;e=r[0];for(const e of r[1]){const n=zD(e,this.remoteBaseDir);t.push(yield this.stat(n))}}while("0"!==e);return t}))}stat(t){return e(this,void 0,void 0,(function*(){const e=$D(t,this.remoteBaseDir);return yield this._statFromRaw(e)}))}_statFromRaw(t){return e(this,void 0,void 0,(function*(){const e=`HGETALL/${t}:meta`,n=(yield(yield this._fetchCommand("GET",e)).json()).HGETALL;if((0,qD.isEqual)(n,{}))throw Error(`key ${t} doesn't exist!`);const r=zD(t,this.remoteBaseDir);return{key:r,keyRaw:r,mtimeCli:Number.parseInt(n.mtime),mtimeSvr:Number.parseInt(n.mtime),size:Number.parseInt(n.size),sizeRaw:Number.parseInt(n.size)}}))}mkdir(t,n,r){return e(this,void 0,void 0,(function*(){let e=`HSET/${$D(t,this.remoteBaseDir)}:meta/size/0`;void 0!==n&&0!==n&&(e=`${e}/mtime/${n}`),void 0!==r&&0!==r&&(e=`${e}/ctime/${r}`);(yield(yield this._fetchCommand("GET",e)).json()).HSET;return yield this.stat(t)}))}writeFile(t,n,r,i){return e(this,void 0,void 0,(function*(){const e=$D(t,this.remoteBaseDir);let o=`HSET/${e}:meta/size/${n.byteLength}`;void 0!==r&&0!==r&&(o=`${o}/mtime/${r}`),void 0!==i&&0!==i&&(o=`${o}/ctime/${i}`);(yield(yield this._fetchCommand("GET",o)).json()).HSET;const s=`SET/${e}:content`;(yield(yield this._fetchCommand("PUT",s,n)).json()).SET;return yield this.stat(t)}))}readFile(t){return e(this,void 0,void 0,(function*(){const e=`GET/${$D(t,this.remoteBaseDir)}:content?type=${h}`;return yield(yield this._fetchCommand("GET",e)).arrayBuffer()}))}rm(t){return e(this,void 0,void 0,(function*(){const e=$D(t,this.remoteBaseDir),n=`DEL/${e}:meta/${e}:content`;(yield(yield this._fetchCommand("PUT",n)).json()).DEL}))}checkConnect(t){return e(this,void 0,void 0,(function*(){try{const e=yield(yield this._fetchCommand("GET","PING/helloworld")).json();return(0,qD.isEqual)(e,{PING:"helloworld"})}catch(e){return console.error(e),null==t||t(e),!1}}))}getUserDisplayName(){return e(this,void 0,void 0,(function*(){return this.webdisConfig.username||""}))}revokeAuth(){return e(this,void 0,void 0,(function*(){throw new Error("Method not implemented.")}))}allowEmptyFile(){return!0}}function KD(e,t,n){switch(e.serviceType){case"s3":return new Px(e.s3);case"webdav":return new Qx(e.webdav,t,n);case"dropbox":return new se(e.dropbox,t,n);case"onedrive":return new ma(e.onedrive,t,n);case"webdis":return new HD(e.webdis,t,n);default:throw Error(`cannot init client for serviceType=${e.serviceType}`)}}const WD={enablePrinting:!1,recordSize:!1};class GD{constructor(e,t,n){if(this.breakPoints=[],this.indent=0,this.startTime=0,this.enablePrinting=null!=t&&t,this.recordSize=null!=n&&n,void 0!==e){this.startTime=Date.now();const t={label:e,fakeTimeMilli:performance.now(),indent:this.indent};this.breakPoints.push(t),this.enablePrinting&&console.debug(this.toString(-1))}}insert(e){0===this.breakPoints.length&&(this.startTime=Date.now());const t={label:e,fakeTimeMilli:performance.now(),indent:this.indent};return this.breakPoints.push(t),this.enablePrinting&&console.debug(this.toString(-1)),this}insertSize(e,t){if(!this.recordSize)return;0===this.breakPoints.length&&(this.startTime=Date.now());const n={label:e,fakeTimeMilli:performance.now(),indent:this.indent,size:W(t)};return this.breakPoints.push(n),this.enablePrinting&&console.debug(this.toString(-1)),this}addIndent(){this.indent+=2}removeIndent(){this.indent-=2,this.indent<0&&(this.indent=0)}clear(){return this.breakPoints=[],this.indent=0,this.startTime=0,this}toString(e){var t,n,r,i;if(void 0!==e){let o=e;e<0&&(o=this.breakPoints.length+e);const s=null===(t=this.breakPoints)||void 0===t?void 0:t[o].label,a=null===(n=this.breakPoints)||void 0===n?void 0:n[o].indent;let u=0;o>=1&&(u=Math.round(10*((null===(r=this.breakPoints)||void 0===r?void 0:r[o].fakeTimeMilli)-(null===(i=this.breakPoints)||void 0===i?void 0:i[o-1].fakeTimeMilli)))/10);let c=`${" ".repeat(a)}[${s}]: ${u}ms`;if(this.breakPoints[o].hasOwnProperty("size")){c+=`, size=${this.breakPoints[o].size}`}return c}if(0===this.breakPoints.length)return"nothing in profiler";let o=`[startTime]: ${U(this.startTime)}`;for(let e=0;ee(void 0,void 0,void 0,(function*(){const e=Date.now();yield t.profilerResultsTbl.setItem(`${r}\t${e}`,n);const i=(yield t.profilerResultsTbl.keys()).filter((e=>e.startsWith(`${r}\t`))).map((e=>Number.parseInt(e.split("\t")[1])));for(i.sort(((e,t)=>-(e-t)));i.length>5;){const e=i.pop();yield t.profilerResultsTbl.removeItem(`${r}\t${e}`)}})))(t,this.toString(),n)}))}}class VD extends l.Modal{constructor(e,t,n){super(e),this.plugin=t,this.newPassword=n}onOpen(){const{contentEl:t}=this,n=(e,t)=>this.plugin.i18n.t(e,t);t.createEl("h2",{text:n("modal_password_title")}),n("modal_password_shortdesc").split("\n").forEach(((e,n)=>{t.createEl("p",{text:e})})),[n("modal_password_attn1"),n("modal_password_attn2"),n("modal_password_attn3"),n("modal_password_attn4"),n("modal_password_attn5")].forEach(((e,n)=>{n<3?t.createEl("p",{text:e,cls:"password-disclaimer"}):t.createEl("p",{text:e})})),new l.Setting(t).addButton((t=>{t.setButtonText(n("modal_password_secondconfirm")),t.onClick((()=>e(this,void 0,void 0,(function*(){this.plugin.settings.password=this.newPassword,yield this.plugin.saveSettings(),new l.Notice(n("modal_password_notice")),this.close()})))),t.setClass("password-second-confirm")})).addButton((e=>{e.setButtonText(n("goback")),e.onClick((()=>{this.close()}))}))}onClose(){const{contentEl:e}=this;e.empty()}}class YD extends l.Modal{constructor(e,t){super(e),this.plugin=t}onOpen(){const{contentEl:t}=this,n=(e,t)=>this.plugin.i18n.t(e,t);t.createEl("h2",{text:n("modal_encryptionmethod_title")}),n("modal_encryptionmethod_shortdesc").split("\n").forEach(((e,n)=>{t.createEl("p",{text:z(e)})})),new l.Setting(t).addButton((t=>{t.setButtonText(n("confirm")),t.onClick((()=>e(this,void 0,void 0,(function*(){this.close()})))),t.setClass("encryptionmethod-second-confirm")}))}onClose(){const{contentEl:e}=this;e.empty()}}class ZD extends l.Modal{constructor(e,t,n,r){super(e),this.plugin=t,this.newRemoteBaseDir=n,this.service=r}onOpen(){const{contentEl:t}=this,n=(e,t)=>this.plugin.i18n.t(e,t);t.createEl("h2",{text:n("modal_remotebasedir_title")}),n("modal_remotebasedir_shortdesc").split("\n").forEach(((e,n)=>{t.createEl("p",{text:e})})),""===this.newRemoteBaseDir||this.newRemoteBaseDir===this.app.vault.getName()?new l.Setting(t).addButton((t=>{t.setButtonText(n("modal_remotebasedir_secondconfirm_vaultname")),t.onClick((()=>e(this,void 0,void 0,(function*(){this.plugin.settings[this.service].remoteBaseDir="",yield this.plugin.saveSettings(),new l.Notice(n("modal_remotebasedir_notice")),this.close()})))),t.setClass("remotebasedir-second-confirm")})).addButton((e=>{e.setButtonText(n("goback")),e.onClick((()=>{this.close()}))})):(e=>/[?/\\]/.test(e))(this.newRemoteBaseDir)?(t.createEl("p",{text:n("modal_remotebasedir_invaliddirhint")}),new l.Setting(t).addButton((e=>{e.setButtonText(n("goback")),e.onClick((()=>{this.close()}))}))):new l.Setting(t).addButton((t=>{t.setButtonText(n("modal_remotebasedir_secondconfirm_change")),t.onClick((()=>e(this,void 0,void 0,(function*(){this.plugin.settings[this.service].remoteBaseDir=this.newRemoteBaseDir,yield this.plugin.saveSettings(),new l.Notice(n("modal_remotebasedir_notice")),this.close()})))),t.setClass("remotebasedir-second-confirm")})).addButton((e=>{e.setButtonText(n("goback")),e.onClick((()=>{this.close()}))}))}onClose(){const{contentEl:e}=this;e.empty()}}class JD extends l.Modal{constructor(e,t,n){super(e),this.plugin=t,this.newRemotePrefix=n}onOpen(){const{contentEl:t}=this,n=(e,t)=>this.plugin.i18n.t(e,t);t.createEl("h2",{text:n("modal_remoteprefix_title")}),n("modal_remoteprefix_shortdesc").split("\n").forEach(((e,n)=>{t.createEl("p",{text:e})})),t.createEl("p",{text:n("modal_remoteprefix_tosave",{prefix:this.newRemotePrefix})}),""===this.newRemotePrefix||this.newRemotePrefix===this.app.vault.getName()?new l.Setting(t).addButton((t=>{t.setButtonText(n("modal_remoteprefix_secondconfirm_empty")),t.onClick((()=>e(this,void 0,void 0,(function*(){this.plugin.settings.s3.remotePrefix="",yield this.plugin.saveSettings(),new l.Notice(n("modal_remoteprefix_notice")),this.close()})))),t.setClass("remoteprefix-second-confirm")})).addButton((e=>{e.setButtonText(n("goback")),e.onClick((()=>{this.close()}))})):new l.Setting(t).addButton((t=>{t.setButtonText(n("modal_remoteprefix_secondconfirm_change")),t.onClick((()=>e(this,void 0,void 0,(function*(){this.plugin.settings.s3.remotePrefix=this.newRemotePrefix,yield this.plugin.saveSettings(),new l.Notice(n("modal_remoteprefix_notice")),this.close()})))),t.setClass("remoteprefix-second-confirm")})).addButton((e=>{e.setButtonText(n("goback")),e.onClick((()=>{this.close()}))}))}onClose(){const{contentEl:e}=this;e.empty()}}class XD extends l.Modal{constructor(e,t,n,r,i){super(e),this.plugin=t,this.authDiv=n,this.revokeAuthDiv=r,this.revokeAuthSetting=i}onOpen(){return e(this,void 0,void 0,(function*(){const{contentEl:t}=this,n=(e,t)=>this.plugin.i18n.t(e,t);let r=!1;const i=window.navigator.userAgent.toLocaleLowerCase()||"";l.Platform.isDesktopApp&&!l.Platform.isMacOS&&(/linux/.test(i)||/ubuntu/.test(i)||/debian/.test(i)||/fedora/.test(i)||/centos/.test(i))&&(r=!0);const{authUrl:o,verifier:s}=yield((t,...n)=>e(void 0,[t,...n],void 0,(function*(e,t=!1){const n=new Z.DropboxAuth({clientId:e}),r=t?void 0:`obsidian://${m}`;return{authUrl:(yield n.getAuthenticationUrl(r,void 0,"code","offline",void 0,"none",!0)).toString(),verifier:n.getCodeVerifier()}})))(this.plugin.settings.dropbox.clientID,r);r?n("modal_dropboxauth_manualsteps").split("\n").forEach((e=>{t.createEl("p",{text:e})})):(this.plugin.oauth2Info.verifier=s,n("modal_dropboxauth_autosteps").split("\n").forEach((e=>{t.createEl("p",{text:e})})));if(t.createDiv().createEl("button",{text:n("modal_dropboxauth_copybutton")},(t=>{t.onclick=()=>e(this,void 0,void 0,(function*(){yield navigator.clipboard.writeText(o),new l.Notice(n("modal_dropboxauth_copynotice"))}))})),t.createEl("p").createEl("a",{href:o,text:o}),r){let r="";new l.Setting(t).setName(n("modal_dropboxauth_maualinput")).setDesc(n("modal_dropboxauth_maualinput_desc")).addText((e=>e.setPlaceholder("").setValue("").onChange((e=>{r=e.trim()})))).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("submit")),t.onClick((()=>e(this,void 0,void 0,(function*(){new l.Notice(n("modal_dropboxauth_maualinput_notice"));try{const t=yield ie(this.plugin.settings.dropbox.clientID,s,r,(t=>e(this,void 0,void 0,(function*(){throw new l.Notice(n("protocol_dropbox_connect_fail")),new l.Notice(`${t}`),t})))),i=this;oe(this.plugin.settings.dropbox,t,(()=>i.plugin.saveSettings()));const o=KD(this.plugin.settings,this.app.vault.getName(),(()=>this.plugin.saveSettings())),a=yield o.getUserDisplayName();this.plugin.settings.dropbox.username=a,yield this.plugin.saveSettings(),new l.Notice(n("modal_dropboxauth_maualinput_conn_succ",{username:a})),this.authDiv.toggleClass("dropbox-auth-button-hide",""!==this.plugin.settings.dropbox.username),this.revokeAuthDiv.toggleClass("dropbox-revoke-auth-button-hide",""===this.plugin.settings.dropbox.username),this.revokeAuthSetting.setDesc(n("modal_dropboxauth_maualinput_conn_succ_revoke",{username:this.plugin.settings.dropbox.username})),this.close()}catch(e){console.error(e),new l.Notice(n("modal_dropboxauth_maualinput_conn_fail"))}}))))}))))}}))}onClose(){const{contentEl:e}=this;e.empty()}}class QD extends l.Modal{constructor(e,t,n,r,i){super(e),this.plugin=t,this.authDiv=n,this.revokeAuthDiv=r,this.revokeAuthSetting=i}onOpen(){return e(this,void 0,void 0,(function*(){const{contentEl:t}=this,{authUrl:n,verifier:r}=yield function(t,n){return e(this,void 0,void 0,(function*(){const e=new Cs,{verifier:r,challenge:i}=yield e.generatePkceCodes(),o={challengeMethod:"S256",verifier:r,challenge:i},s={redirectUri:ua,scopes:aa,codeChallenge:o.challenge,codeChallengeMethod:o.challengeMethod},a=new ea({auth:{clientId:t,authority:n}});return{authUrl:yield a.getAuthCodeUrl(s),verifier:r}}))}(this.plugin.settings.onedrive.clientID,this.plugin.settings.onedrive.authority);this.plugin.oauth2Info.verifier=r;const i=(e,t)=>this.plugin.i18n.t(e,t);i("modal_onedriveauth_shortdesc").split("\n").forEach((e=>{t.createEl("p",{text:e})})),l.Platform.isLinux&&i("modal_onedriveauth_shortdesc_linux").split("\n").forEach((e=>{t.createEl("p",{text:z(e)})}));t.createDiv().createEl("button",{text:i("modal_onedriveauth_copybutton")},(t=>{t.onclick=()=>e(this,void 0,void 0,(function*(){yield navigator.clipboard.writeText(n),new l.Notice(i("modal_onedriveauth_copynotice"))}))})),t.createEl("p").createEl("a",{href:n,text:n})}))}onClose(){const{contentEl:e}=this;e.empty()}}class eE extends l.Modal{constructor(e,t,n,r){super(e),this.plugin=t,this.authDiv=n,this.revokeAuthDiv=r}onOpen(){return e(this,void 0,void 0,(function*(){const{contentEl:t}=this,n=(e,t)=>this.plugin.i18n.t(e,t);t.createEl("p",{text:n("modal_onedriverevokeauth_step1")});const r="https://microsoft.com/consent";t.createEl("p").createEl("a",{href:r,text:r}),t.createEl("p",{text:n("modal_onedriverevokeauth_step2")}),new l.Setting(t).setName(n("modal_onedriverevokeauth_clean")).setDesc(n("modal_onedriverevokeauth_clean_desc")).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("modal_onedriverevokeauth_clean_button")),t.onClick((()=>e(this,void 0,void 0,(function*(){try{this.plugin.settings.onedrive=JSON.parse(JSON.stringify(ca)),yield this.plugin.saveSettings(),this.authDiv.toggleClass("onedrive-auth-button-hide",""!==this.plugin.settings.onedrive.username),this.revokeAuthDiv.toggleClass("onedrive-revoke-auth-button-hide",""===this.plugin.settings.onedrive.username),new l.Notice(n("modal_onedriverevokeauth_clean_notice")),this.close()}catch(e){console.error(e),new l.Notice(n("modal_onedriverevokeauth_clean_fail"))}}))))}))))}))}onClose(){const{contentEl:e}=this;e.empty()}}class tE extends l.Modal{constructor(e,t,n){super(e),this.plugin=t,this.saveDropdownFunc=n}onOpen(){return e(this,void 0,void 0,(function*(){const{contentEl:t}=this,n=(e,t)=>this.plugin.i18n.t(e,t);n("modal_syncconfig_attn").split("\n").forEach((e=>{t.createEl("p",{text:e})})),new l.Setting(t).addButton((t=>{t.setButtonText(n("modal_syncconfig_secondconfirm")),t.onClick((()=>e(this,void 0,void 0,(function*(){this.plugin.settings.syncConfigDir=!0,yield this.plugin.saveSettings(),this.saveDropdownFunc(),new l.Notice(n("modal_syncconfig_notice")),this.close()}))))})).addButton((e=>{e.setButtonText(n("goback")),e.onClick((()=>{this.close()}))}))}))}onClose(){const{contentEl:e}=this;e.empty()}}class nE extends l.Modal{constructor(e,t,n){super(e),this.plugin=t,this.exportType=n}onOpen(){return e(this,void 0,void 0,(function*(){const{contentEl:t}=this,n=(e,t)=>this.plugin.i18n.t(e,t),{rawUri:r,imgUri:o}=yield(s=this.plugin.settings,a=this.app.vault.getName(),u=this.plugin.manifest.version,c=this.exportType,e(void 0,void 0,void 0,(function*(){let e={};"all_but_oauth2"===c?(e=i()(s),delete e.dropbox,delete e.onedrive):"dropbox"===c?e={dropbox:i()(s.dropbox)}:"onedrive"===c&&(e={onedrive:pa(s.onedrive)}),delete e.vaultRandomID;const t=encodeURIComponent(JSON.stringify(e)),n=encodeURIComponent(a),r=encodeURIComponent(u),o=`obsidian://${f}?func=settings&version=${r}&vault=${n}&data=${t}`;return{rawUri:o,imgUri:yield xD.toDataURL(o)}})));var s,a,u,c;const d=t.createDiv();n("modal_qr_shortdesc").split("\n").forEach((e=>{d.createEl("p",{text:e})}));t.createDiv().createEl("button",{text:n("modal_qr_button")},(t=>{t.onclick=()=>e(this,void 0,void 0,(function*(){yield navigator.clipboard.writeText(r),new l.Notice(n("modal_qr_button_notice"))}))}));t.createDiv().createEl("img",{cls:"qrcode-img"},(t=>e(this,void 0,void 0,(function*(){t.src=o}))))}))}onClose(){const{contentEl:e}=this;e.empty()}}const rE=e=>{const{eye:t,eyeOff:n}=(()=>{const e=s(ND),t=s(jD);return{eye:e.outerHTML,eyeOff:t.outerHTML}})(),r=e.inputEl.insertAdjacentElement("afterend",createSpan());return r.innerHTML=n,r.addEventListener("click",(i=>{const o="text"===e.inputEl.getAttribute("type");r.innerHTML=o?n:t,e.inputEl.setAttribute("type",o?"password":"text"),e.inputEl.focus()})),e.inputEl.setAttribute("type","password"),e};class iE extends l.PluginSettingTab{constructor(e,t){super(e,t),this.plugin=t}display(){const{containerEl:t}=this;t.style.setProperty("overflow-wrap","break-word"),t.empty();const n=(e,t)=>this.plugin.i18n.t(e,t);t.createEl("h1",{text:"Remotely Save"});const r=t.createDiv();r.createEl("h2",{text:n("settings_chooseservice")});const o=t.createEl("div",{cls:"s3-hide"});o.toggleClass("s3-hide","s3"!==this.plugin.settings.serviceType),o.createEl("h2",{text:n("settings_s3")});const s=o.createEl("div",{cls:"settings-long-desc"});for(const e of[n("settings_s3_disclaimer1"),n("settings_s3_disclaimer2")])s.createEl("p",{text:e,cls:"s3-disclaimer"});b||s.createEl("p",{text:n("settings_s3_cors")}),s.createEl("p",{text:n("settings_s3_prod")});const a=s.createEl("ul");a.createEl("li").createEl("a",{href:"https://docs.aws.amazon.com/general/latest/gr/s3.html",text:n("settings_s3_prod1")}),a.createEl("li").createEl("a",{href:"https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/getting-your-credentials.html",text:n("settings_s3_prod2")}),b||a.createEl("li").createEl("a",{href:"https://docs.aws.amazon.com/AmazonS3/latest/userguide/enabling-cors-examples.html",text:n("settings_s3_prod3")}),new l.Setting(o).setName(n("settings_s3_endpoint")).setDesc(n("settings_s3_endpoint")).addText((t=>t.setPlaceholder("").setValue(this.plugin.settings.s3.s3Endpoint).onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.s3.s3Endpoint=t.trim(),yield this.plugin.saveSettings()})))))),new l.Setting(o).setName(n("settings_s3_region")).setDesc(n("settings_s3_region_desc")).addText((t=>t.setPlaceholder("").setValue(`${this.plugin.settings.s3.s3Region}`).onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.s3.s3Region=t.trim(),yield this.plugin.saveSettings()})))))),new l.Setting(o).setName(n("settings_s3_accesskeyid")).setDesc(n("settings_s3_accesskeyid_desc")).addText((t=>{rE(t),t.setPlaceholder("").setValue(`${this.plugin.settings.s3.s3AccessKeyID}`).onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.s3.s3AccessKeyID=t.trim(),yield this.plugin.saveSettings()}))))})),new l.Setting(o).setName(n("settings_s3_secretaccesskey")).setDesc(n("settings_s3_secretaccesskey_desc")).addText((t=>{rE(t),t.setPlaceholder("").setValue(`${this.plugin.settings.s3.s3SecretAccessKey}`).onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.s3.s3SecretAccessKey=t.trim(),yield this.plugin.saveSettings()}))))})),new l.Setting(o).setName(n("settings_s3_bucketname")).setDesc(n("settings_s3_bucketname")).addText((t=>t.setPlaceholder("").setValue(`${this.plugin.settings.s3.s3BucketName}`).onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.s3.s3BucketName=t.trim(),yield this.plugin.saveSettings()})))))),new l.Setting(o).setName(n("settings_s3_urlstyle")).setDesc(n("settings_s3_urlstyle_desc")).addDropdown((t=>{t.addOption("virtualHostedStyle","Virtual Hosted-Style (default)"),t.addOption("pathStyle","Path-Style"),t.setValue(this.plugin.settings.s3.forcePathStyle?"pathStyle":"virtualHostedStyle").onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.s3.forcePathStyle="pathStyle"===t,yield this.plugin.saveSettings()}))))})),b&&!(0,l.requireApiVersion)(v)&&new l.Setting(o).setName(n("settings_s3_bypasscorslocally")).setDesc(n("settings_s3_bypasscorslocally_desc")).addDropdown((t=>{t.addOption("disable",n("disable")).addOption("enable",n("enable")),t.setValue(""+(this.plugin.settings.s3.bypassCorsLocally?"enable":"disable")).onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.s3.bypassCorsLocally="enable"===t,yield this.plugin.saveSettings()}))))})),new l.Setting(o).setName(n("settings_s3_parts")).setDesc(n("settings_s3_parts_desc")).addDropdown((t=>{t.addOption("1","1"),t.addOption("2","2"),t.addOption("3","3"),t.addOption("5","5"),t.addOption("10","10"),t.addOption("15","15"),t.addOption("20","20 (default)"),t.setValue(`${this.plugin.settings.s3.partsConcurrency}`).onChange((t=>e(this,void 0,void 0,(function*(){const e=Number.parseInt(t);this.plugin.settings.s3.partsConcurrency=e,yield this.plugin.saveSettings()}))))})),new l.Setting(o).setName(n("settings_s3_accuratemtime")).setDesc(n("settings_s3_accuratemtime_desc")).addDropdown((t=>{t.addOption("disable",n("disable")).addOption("enable",n("enable")),t.setValue(""+(this.plugin.settings.s3.useAccurateMTime?"enable":"disable")).onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.s3.useAccurateMTime="enable"===t,yield this.plugin.saveSettings()}))))}));let u=this.plugin.settings.s3.remotePrefix||"";new l.Setting(o).setName(n("settings_remoteprefix")).setDesc(n("settings_remoteprefix_desc")).addText((e=>e.setPlaceholder("").setValue(u).onChange((e=>{u=Rx(e.trim())})))).addButton((e=>{e.setButtonText(n("confirm")),e.onClick((()=>{new JD(this.app,this.plugin,Rx(u.trim())).open()}))})),new l.Setting(o).setName(n("settings_s3_reverse_proxy_no_sign_url")).setDesc(n("settings_s3_reverse_proxy_no_sign_url_desc")).addText((t=>{var n;return t.setPlaceholder("").setValue(null!==(n=this.plugin.settings.s3.reverseProxyNoSignUrl)&&void 0!==n?n:"").onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.s3.reverseProxyNoSignUrl=t.trim(),yield this.plugin.saveSettings()}))))})),new l.Setting(o).setName(n("settings_s3_generatefolderobject")).setDesc(n("settings_s3_generatefolderobject_desc")).addDropdown((t=>{t.addOption("notgenerate",n("settings_s3_generatefolderobject_notgenerate")).addOption("generate",n("settings_s3_generatefolderobject_generate")),t.setValue(""+(this.plugin.settings.s3.generateFolderObject?"generate":"notgenerate")).onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.s3.generateFolderObject="generate"===t,yield this.plugin.saveSettings()}))))})),new l.Setting(o).setName(n("settings_checkonnectivity")).setDesc(n("settings_checkonnectivity_desc")).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("settings_checkonnectivity_button")),t.onClick((()=>e(this,void 0,void 0,(function*(){new l.Notice(n("settings_checkonnectivity_checking"));const e=KD(this.plugin.settings,this.app.vault.getName(),(()=>this.plugin.saveSettings())),t={msg:""};(yield e.checkConnect((e=>{t.msg=e})))?new l.Notice(n("settings_s3_connect_succ")):(new l.Notice(n("settings_s3_connect_fail")),new l.Notice(t.msg))}))))}))));const c=t.createEl("div",{cls:"dropbox-hide"});c.toggleClass("dropbox-hide","dropbox"!==this.plugin.settings.serviceType),c.createEl("h2",{text:n("settings_dropbox")});const d=c.createEl("div",{cls:"settings-long-desc"});for(const e of[n("settings_dropbox_disclaimer1"),n("settings_dropbox_disclaimer2")])d.createEl("p",{text:e,cls:"dropbox-disclaimer"});d.createEl("p",{text:n("settings_dropbox_folder",{pluginID:this.plugin.manifest.id,remoteBaseDir:this.plugin.settings.dropbox.remoteBaseDir||this.app.vault.getName()})});const h=c.createDiv(),f=h.createDiv({cls:"dropbox-auth-button-hide settings-auth-related"}),p=h.createDiv({cls:"dropbox-revoke-auth-button-hide settings-auth-related"}),m=new l.Setting(p).setName(n("settings_dropbox_revoke")).setDesc(n("settings_dropbox_revoke_desc",{username:this.plugin.settings.dropbox.username})).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("settings_dropbox_revoke_button")),t.onClick((()=>e(this,void 0,void 0,(function*(){try{const e=KD(this.plugin.settings,this.app.vault.getName(),(()=>this.plugin.saveSettings()));yield e.revokeAuth(),this.plugin.settings.dropbox=JSON.parse(JSON.stringify(ee)),yield this.plugin.saveSettings(),f.toggleClass("dropbox-auth-button-hide",""!==this.plugin.settings.dropbox.username),p.toggleClass("dropbox-revoke-auth-button-hide",""===this.plugin.settings.dropbox.username),new l.Notice(n("settings_dropbox_revoke_notice"))}catch(e){console.error(e),new l.Notice(n("settings_dropbox_revoke_noticeerr"))}}))))}))));new l.Setting(p).setName(n("settings_dropbox_clearlocal")).setDesc(n("settings_dropbox_clearlocal_desc")).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("settings_dropbox_clearlocal_button")),t.onClick((()=>e(this,void 0,void 0,(function*(){this.plugin.settings.dropbox=JSON.parse(JSON.stringify(ee)),yield this.plugin.saveSettings(),f.toggleClass("dropbox-auth-button-hide",""!==this.plugin.settings.dropbox.username),p.toggleClass("dropbox-revoke-auth-button-hide",""===this.plugin.settings.dropbox.username),new l.Notice(n("settings_dropbox_clearlocal_notice"))}))))})))),new l.Setting(f).setName(n("settings_dropbox_auth")).setDesc(n("settings_dropbox_auth_desc")).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("settings_dropbox_auth_button")),t.onClick((()=>e(this,void 0,void 0,(function*(){const e=new XD(this.app,this.plugin,f,p,m);this.plugin.oauth2Info.helperModal=e,this.plugin.oauth2Info.authDiv=f,this.plugin.oauth2Info.revokeDiv=p,this.plugin.oauth2Info.revokeAuthSetting=m,e.open()}))))})))),f.toggleClass("dropbox-auth-button-hide",""!==this.plugin.settings.dropbox.username),p.toggleClass("dropbox-revoke-auth-button-hide",""===this.plugin.settings.dropbox.username);let g=this.plugin.settings.dropbox.remoteBaseDir||"";new l.Setting(c).setName(n("settings_remotebasedir")).setDesc(n("settings_remotebasedir_desc")).addText((e=>e.setPlaceholder(this.app.vault.getName()).setValue(g).onChange((e=>{g=e.trim()})))).addButton((e=>{e.setButtonText(n("confirm")),e.onClick((()=>{new ZD(this.app,this.plugin,g,"dropbox").open()}))})),new l.Setting(c).setName(n("settings_checkonnectivity")).setDesc(n("settings_checkonnectivity_desc")).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("settings_checkonnectivity_button")),t.onClick((()=>e(this,void 0,void 0,(function*(){new l.Notice(n("settings_checkonnectivity_checking"));const e=KD(this.plugin.settings,this.app.vault.getName(),(()=>this.plugin.saveSettings())),t={msg:""};(yield e.checkConnect((e=>{t.msg=`${e}`})))?new l.Notice(n("settings_dropbox_connect_succ")):(new l.Notice(n("settings_dropbox_connect_fail")),new l.Notice(t.msg))}))))}))));const y=t.createEl("div",{cls:"onedrive-hide"});y.toggleClass("onedrive-hide","onedrive"!==this.plugin.settings.serviceType),y.createEl("h2",{text:n("settings_onedrive")});const w=y.createEl("div",{cls:"settings-long-desc"});for(const e of[n("settings_onedrive_disclaimer1"),n("settings_onedrive_disclaimer2")])w.createEl("p",{text:e,cls:"onedrive-disclaimer"});w.createEl("p",{text:n("settings_onedrive_folder",{pluginID:this.plugin.manifest.id,remoteBaseDir:this.plugin.settings.onedrive.remoteBaseDir||this.app.vault.getName()})}),w.createEl("p",{text:n("settings_onedrive_nobiz")});const _=y.createDiv(),x=_.createDiv({cls:"onedrive-auth-button-hide settings-auth-related"}),D=_.createDiv({cls:"onedrive-revoke-auth-button-hide settings-auth-related"}),E=new l.Setting(D).setName(n("settings_onedrive_revoke")).setDesc(n("settings_onedrive_revoke_desc",{username:this.plugin.settings.onedrive.username})).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("settings_onedrive_revoke_button")),t.onClick((()=>e(this,void 0,void 0,(function*(){new eE(this.app,this.plugin,x,D).open()}))))}))));new l.Setting(x).setName(n("settings_onedrive_auth")).setDesc(n("settings_onedrive_auth_desc")).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("settings_onedrive_auth_button")),t.onClick((()=>e(this,void 0,void 0,(function*(){const e=new QD(this.app,this.plugin,x,D,E);this.plugin.oauth2Info.helperModal=e,this.plugin.oauth2Info.authDiv=x,this.plugin.oauth2Info.revokeDiv=D,this.plugin.oauth2Info.revokeAuthSetting=E,e.open()}))))})))),x.toggleClass("onedrive-auth-button-hide",""!==this.plugin.settings.onedrive.username),D.toggleClass("onedrive-revoke-auth-button-hide",""===this.plugin.settings.onedrive.username);let M=this.plugin.settings.onedrive.remoteBaseDir||"";new l.Setting(y).setName(n("settings_remotebasedir")).setDesc(n("settings_remotebasedir_desc")).addText((e=>e.setPlaceholder(this.app.vault.getName()).setValue(M).onChange((e=>{M=e.trim()})))).addButton((e=>{e.setButtonText(n("confirm")),e.onClick((()=>{new ZD(this.app,this.plugin,M,"onedrive").open()}))})),new l.Setting(y).setName(n("settings_checkonnectivity")).setDesc(n("settings_checkonnectivity_desc")).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("settings_checkonnectivity_button")),t.onClick((()=>e(this,void 0,void 0,(function*(){new l.Notice(n("settings_checkonnectivity_checking"));const e=KD(this.plugin.settings,this.app.vault.getName(),(()=>this.plugin.saveSettings())),t={msg:""};(yield e.checkConnect((e=>{t.msg=`${e}`})))?new l.Notice(n("settings_onedrive_connect_succ")):(new l.Notice(n("settings_onedrive_connect_fail")),new l.Notice(t.msg))}))))}))));const A=t.createEl("div",{cls:"webdav-hide"});A.toggleClass("webdav-hide","webdav"!==this.plugin.settings.serviceType),A.createEl("h2",{text:n("settings_webdav")});const S=A.createEl("div",{cls:"settings-long-desc"});S.createEl("p",{text:n("settings_webdav_disclaimer1"),cls:"webdav-disclaimer"}),b||(S.createEl("p",{text:n("settings_webdav_cors_os")}),S.createEl("p",{text:n("settings_webdav_cors")})),S.createEl("p",{text:n("settings_webdav_folder",{remoteBaseDir:this.plugin.settings.webdav.remoteBaseDir||this.app.vault.getName()})}),new l.Setting(A).setName(n("settings_webdav_addr")).setDesc(n("settings_webdav_addr_desc")).addText((t=>t.setPlaceholder("").setValue(this.plugin.settings.webdav.address).onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.webdav.address=t.trim(),"auto"!==this.plugin.settings.webdav.depth&&"auto_1"!==this.plugin.settings.webdav.depth&&"auto_infinity"!==this.plugin.settings.webdav.depth&&"auto_unknown"!==this.plugin.settings.webdav.depth||(this.plugin.settings.webdav.depth="manual_1"),yield this.plugin.saveSettings()})))))),new l.Setting(A).setName(n("settings_webdav_user")).setDesc(n("settings_webdav_user_desc")).addText((t=>{rE(t),t.setPlaceholder("").setValue(this.plugin.settings.webdav.username).onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.webdav.username=t.trim(),"auto"!==this.plugin.settings.webdav.depth&&"auto_1"!==this.plugin.settings.webdav.depth&&"auto_infinity"!==this.plugin.settings.webdav.depth&&"auto_unknown"!==this.plugin.settings.webdav.depth||(this.plugin.settings.webdav.depth="manual_1"),yield this.plugin.saveSettings()}))))})),new l.Setting(A).setName(n("settings_webdav_password")).setDesc(n("settings_webdav_password_desc")).addText((t=>{rE(t),t.setPlaceholder("").setValue(this.plugin.settings.webdav.password).onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.webdav.password=t.trim(),"auto"!==this.plugin.settings.webdav.depth&&"auto_1"!==this.plugin.settings.webdav.depth&&"auto_infinity"!==this.plugin.settings.webdav.depth&&"auto_unknown"!==this.plugin.settings.webdav.depth||(this.plugin.settings.webdav.depth="manual_1"),yield this.plugin.saveSettings()}))))})),new l.Setting(A).setName(n("settings_webdav_auth")).setDesc(n("settings_webdav_auth_desc")).addDropdown((t=>e(this,void 0,void 0,(function*(){t.addOption("basic","basic"),b&&t.addOption("digest","digest"),b||"basic"===this.plugin.settings.webdav.authType||(this.plugin.settings.webdav.authType="basic",yield this.plugin.saveSettings()),t.setValue(this.plugin.settings.webdav.authType).onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.webdav.authType=t,yield this.plugin.saveSettings()}))))})))),new l.Setting(A).setName(n("settings_webdav_depth")).setDesc(n("settings_webdav_depth_desc")).addDropdown((t=>{t.addOption("manual_1",n("settings_webdav_depth_1")),t.addOption("manual_infinity",n("settings_webdav_depth_inf")),t.setValue(this.plugin.settings.webdav.depth||"manual_1").onChange((t=>e(this,void 0,void 0,(function*(){"manual_1"===t?(this.plugin.settings.webdav.depth="manual_1",this.plugin.settings.webdav.manualRecursive=!0):"manual_infinity"===t&&(this.plugin.settings.webdav.depth="manual_infinity",this.plugin.settings.webdav.manualRecursive=!1),yield this.plugin.saveSettings()}))))}));let C=this.plugin.settings.webdav.remoteBaseDir||"";new l.Setting(A).setName(n("settings_remotebasedir")).setDesc(n("settings_remotebasedir_desc")).addText((e=>e.setPlaceholder(this.app.vault.getName()).setValue(C).onChange((e=>{C=e.trim()})))).addButton((e=>{e.setButtonText(n("confirm")),e.onClick((()=>{new ZD(this.app,this.plugin,C,"webdav").open()}))})),new l.Setting(A).setName(n("settings_checkonnectivity")).setDesc(n("settings_checkonnectivity_desc")).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("settings_checkonnectivity_button")),t.onClick((()=>e(this,void 0,void 0,(function*(){new l.Notice(n("settings_checkonnectivity_checking"));const e=KD(this.plugin.settings,this.app.vault.getName(),(()=>this.plugin.saveSettings())),t={msg:""};(yield e.checkConnect((e=>{t.msg=`${e}`})))?new l.Notice(n("settings_webdav_connect_succ")):(b?new l.Notice(n("settings_webdav_connect_fail")):new l.Notice(n("settings_webdav_connect_fail_withcors")),new l.Notice(t.msg))}))))}))));const k=t.createEl("div",{cls:"webdis-hide"});k.toggleClass("webdis-hide","webdis"!==this.plugin.settings.serviceType),k.createEl("h2",{text:n("settings_webdis")});const T=k.createEl("div",{cls:"settings-long-desc"});for(const e of[n("settings_webdis_disclaimer1"),n("settings_webdis_disclaimer2")])T.createEl("p",{text:e,cls:"webdis-disclaimer"});T.createEl("p",{text:n("settings_webdis_folder",{remoteBaseDir:this.plugin.settings.webdis.remoteBaseDir||this.app.vault.getName()})}),new l.Setting(k).setName(n("settings_webdis_addr")).setDesc(n("settings_webdis_addr_desc")).addText((t=>t.setPlaceholder("https://").setValue(this.plugin.settings.webdis.address).onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.webdis.address=t.trim(),yield this.plugin.saveSettings()})))))),new l.Setting(k).setName(n("settings_webdis_user")).setDesc(n("settings_webdis_user_desc")).addText((t=>{var n;rE(t),t.setPlaceholder("").setValue(null!==(n=this.plugin.settings.webdis.username)&&void 0!==n?n:"").onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.webdis.username=(null!=t?t:"").trim(),yield this.plugin.saveSettings()}))))})),new l.Setting(k).setName(n("settings_webdis_password")).setDesc(n("settings_webdis_password_desc")).addText((t=>{var n;rE(t),t.setPlaceholder("").setValue(null!==(n=this.plugin.settings.webdis.password)&&void 0!==n?n:"").onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.webdis.password=(null!=t?t:"").trim(),yield this.plugin.saveSettings()}))))}));let I=this.plugin.settings.webdis.remoteBaseDir||"";new l.Setting(k).setName(n("settings_remotebasedir")).setDesc(n("settings_remotebasedir_desc")).addText((e=>e.setPlaceholder(this.app.vault.getName()).setValue(I).onChange((e=>{I=e.trim()})))).addButton((e=>{e.setButtonText(n("confirm")),e.onClick((()=>{new ZD(this.app,this.plugin,I,"webdis").open()}))})),new l.Setting(k).setName(n("settings_checkonnectivity")).setDesc(n("settings_checkonnectivity_desc")).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("settings_checkonnectivity_button")),t.onClick((()=>e(this,void 0,void 0,(function*(){new l.Notice(n("settings_checkonnectivity_checking"));const e=KD(this.plugin.settings,this.app.vault.getName(),(()=>this.plugin.saveSettings())),t={msg:""};(yield e.checkConnect((e=>{t.msg=`${e}`})))?new l.Notice(n("settings_webdis_connect_succ")):(new l.Notice(n("settings_webdis_connect_fail")),new l.Notice(t.msg))}))))})))),new l.Setting(r).setName(n("settings_chooseservice")).setDesc(n("settings_chooseservice_desc")).addDropdown((t=>e(this,void 0,void 0,(function*(){t.addOption("s3",n("settings_chooseservice_s3")),t.addOption("dropbox",n("settings_chooseservice_dropbox")),t.addOption("webdav",n("settings_chooseservice_webdav")),t.addOption("onedrive",n("settings_chooseservice_onedrive")),t.addOption("webdis",n("settings_chooseservice_webdis")),t.setValue(this.plugin.settings.serviceType).onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.serviceType=t,o.toggleClass("s3-hide","s3"!==this.plugin.settings.serviceType),c.toggleClass("dropbox-hide","dropbox"!==this.plugin.settings.serviceType),y.toggleClass("onedrive-hide","onedrive"!==this.plugin.settings.serviceType),A.toggleClass("webdav-hide","webdav"!==this.plugin.settings.serviceType),k.toggleClass("webdis-hide","webdis"!==this.plugin.settings.serviceType),yield this.plugin.saveSettings()}))))}))));const R=t.createEl("div");R.createEl("h2",{text:n("settings_basic")});let F=`${this.plugin.settings.password}`;new l.Setting(R).setName(n("settings_password")).setDesc(n("settings_password_desc")).addText((t=>{rE(t),t.setPlaceholder("").setValue(`${this.plugin.settings.password}`).onChange((t=>e(this,void 0,void 0,(function*(){F=t.trim()}))))})).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("confirm")),t.onClick((()=>e(this,void 0,void 0,(function*(){new VD(this.app,this.plugin,F).open()}))))})))),new l.Setting(R).setName(n("settings_encryptionmethod")).setDesc(z(n("settings_encryptionmethod_desc"))).addDropdown((t=>{var r;t.addOption("rclone-base64",n("settings_encryptionmethod_rclone")).addOption("openssl-base64",n("settings_encryptionmethod_openssl")).setValue(null!==(r=this.plugin.settings.encryptionMethod)&&void 0!==r?r:"rclone-base64").onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.encryptionMethod=t,yield this.plugin.saveSettings(),""!==this.plugin.settings.password&&new YD(this.app,this.plugin).open()}))))})),new l.Setting(R).setName(n("settings_autorun")).setDesc(n("settings_autorun_desc")).addDropdown((t=>{t.addOption("-1",n("settings_autorun_notset")),t.addOption("60000",n("settings_autorun_1min")),t.addOption("300000",n("settings_autorun_5min")),t.addOption("600000",n("settings_autorun_10min")),t.addOption("1800000",n("settings_autorun_30min")),t.setValue(`${this.plugin.settings.autoRunEveryMilliseconds}`).onChange((t=>e(this,void 0,void 0,(function*(){const e=Number.parseInt(t);if(this.plugin.settings.autoRunEveryMilliseconds=e,yield this.plugin.saveSettings(),(null==e||e<=0)&&void 0!==this.plugin.autoRunIntervalID)window.clearInterval(this.plugin.autoRunIntervalID),this.plugin.autoRunIntervalID=void 0;else if(null!=e&&e>0){const t=window.setInterval((()=>{console.info("auto run from settings.ts"),this.plugin.syncRun("auto")}),e);this.plugin.autoRunIntervalID=t,this.plugin.registerInterval(t)}}))))})),new l.Setting(R).setName(n("settings_runoncestartup")).setDesc(n("settings_runoncestartup_desc")).addDropdown((t=>{t.addOption("-1",n("settings_runoncestartup_notset")),t.addOption("1000",n("settings_runoncestartup_1sec")),t.addOption("10000",n("settings_runoncestartup_10sec")),t.addOption("30000",n("settings_runoncestartup_30sec")),t.setValue(`${this.plugin.settings.initRunAfterMilliseconds}`).onChange((t=>e(this,void 0,void 0,(function*(){const e=Number.parseInt(t);this.plugin.settings.initRunAfterMilliseconds=e,yield this.plugin.saveSettings()}))))})),new l.Setting(R).setName(n("settings_synconsave")).setDesc(n("settings_synconsave_desc")).addDropdown((t=>{var r;t.addOption("-1",n("settings_synconsave_disable")),t.addOption("1000",n("settings_synconsave_enable"));let i=!1;(null!==(r=this.plugin.settings.syncOnSaveAfterMilliseconds)&&void 0!==r?r:-1)>0&&(i=!0),t.setValue(""+(i?"1000":"-1")).onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.syncOnSaveAfterMilliseconds=Number.parseInt(t),yield this.plugin.saveSettings(),this.plugin.toggleSyncOnSaveIfSet()}))))})),new l.Setting(R).setName(n("settings_skiplargefiles")).setDesc(n("settings_skiplargefiles_desc")).addDropdown((t=>{t.addOption("-1",n("settings_skiplargefiles_notset"));const r=[1,5,10,50,100,500,1e3];for(const e of r)t.addOption(""+1e3*e*1e3,`${e} MB`);t.setValue(`${this.plugin.settings.skipSizeLargerThan}`).onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.skipSizeLargerThan=Number.parseInt(t),yield this.plugin.saveSettings()}))))})),l.Platform.isMobileApp||(new l.Setting(R).setName(n("settings_enablestatusbar_info")).setDesc(n("settings_enablestatusbar_info_desc")).addToggle((t=>{var r;t.setValue(null!==(r=this.plugin.settings.enableStatusBarInfo)&&void 0!==r&&r).onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.enableStatusBarInfo=t,yield this.plugin.saveSettings(),new l.Notice(n("settings_enablestatusbar_reloadrequired_notice"))}))))})),new l.Setting(R).setName(n("settings_resetstatusbar_time")).setDesc(n("settings_resetstatusbar_time_desc")).addButton((t=>{t.setButtonText(n("settings_resetstatusbar_button")),t.onClick((()=>e(this,void 0,void 0,(function*(){yield BD(this.plugin.db,this.plugin.vaultRandomID,-1),this.plugin.updateLastSuccessSyncMsg(-1),new l.Notice(n("settings_resetstatusbar_notice"))}))))}))),new l.Setting(R).setName(n("settings_ignorepaths")).setDesc(n("settings_ignorepaths_desc")).setClass("ignorepaths-settings").addTextArea((t=>{var n;t.setValue(`${(null!==(n=this.plugin.settings.ignorePaths)&&void 0!==n?n:[]).join("\n")}`).onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.ignorePaths=t.trim().split("\n").filter((e=>""!==e.trim())),yield this.plugin.saveSettings()})))),t.inputEl.rows=10,t.inputEl.cols=30,t.inputEl.addClass("ignorepaths-textarea")}));const O=t.createEl("div");O.createEl("h2",{text:n("settings_adv")}),new l.Setting(O).setName(n("settings_concurrency")).setDesc(n("settings_concurrency_desc")).addDropdown((t=>{t.addOption("1","1"),t.addOption("2","2"),t.addOption("3","3"),t.addOption("5","5 (default)"),t.addOption("10","10"),t.addOption("15","15"),t.addOption("20","20"),t.setValue(`${this.plugin.settings.concurrency}`).onChange((t=>e(this,void 0,void 0,(function*(){const e=Number.parseInt(t);this.plugin.settings.concurrency=e,yield this.plugin.saveSettings()}))))})),new l.Setting(O).setName(n("settings_syncunderscore")).setDesc(n("settings_syncunderscore_desc")).addDropdown((t=>{t.addOption("disable",n("disable")),t.addOption("enable",n("enable")),t.setValue(""+(this.plugin.settings.syncUnderscoreItems?"enable":"disable")).onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.syncUnderscoreItems="enable"===t,yield this.plugin.saveSettings()}))))})),new l.Setting(O).setName(n("settings_configdir")).setDesc(n("settings_configdir_desc",{configDir:this.app.vault.configDir})).addDropdown((t=>{t.addOption("disable",n("disable")),t.addOption("enable",n("enable"));const r={secondConfirm:!1};t.setValue(""+(this.plugin.settings.syncConfigDir?"enable":"disable")).onChange((n=>e(this,void 0,void 0,(function*(){"enable"!==n||r.secondConfirm?(r.secondConfirm=!1,this.plugin.settings.syncConfigDir=!1,yield this.plugin.saveSettings()):(t.setValue("disable"),new tE(this.app,this.plugin,(()=>{r.secondConfirm=!0,t.setValue("enable")})).open())}))))})),new l.Setting(O).setName(n("settings_deletetowhere")).setDesc(n("settings_deletetowhere_desc")).addDropdown((t=>{var r;t.addOption("system",n("settings_deletetowhere_system_trash")),t.addOption("obsidian",n("settings_deletetowhere_obsidian_trash")),t.setValue(null!==(r=this.plugin.settings.deleteToWhere)&&void 0!==r?r:"system").onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.deleteToWhere=t,yield this.plugin.saveSettings()}))))})),new l.Setting(O).setName(n("settings_conflictaction")).setDesc(n("settings_conflictaction_desc")).addDropdown((t=>{var r;t.addOption("keep_newer",n("settings_conflictaction_keep_newer")),t.addOption("keep_larger",n("settings_conflictaction_keep_larger")),t.setValue(null!==(r=this.plugin.settings.conflictAction)&&void 0!==r?r:"keep_newer").onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.conflictAction=t,yield this.plugin.saveSettings()}))))})),new l.Setting(O).setName(n("settings_cleanemptyfolder")).setDesc(n("settings_cleanemptyfolder_desc")).addDropdown((t=>{var r;t.addOption("skip",n("settings_cleanemptyfolder_skip")),t.addOption("clean_both",n("settings_cleanemptyfolder_clean_both")),t.setValue(null!==(r=this.plugin.settings.howToCleanEmptyFolder)&&void 0!==r?r:"clean_both").onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.howToCleanEmptyFolder=t,yield this.plugin.saveSettings()}))))})),new l.Setting(O).setName(n("settings_protectmodifypercentage")).setDesc(n("settings_protectmodifypercentage_desc")).addDropdown((t=>{var r;for(const e of Array.from({length:11},((e,t)=>10*t))){let r=`${e}`;0===e?r=n("settings_protectmodifypercentage_000_desc"):50===e?r=n("settings_protectmodifypercentage_050_desc"):100===e&&(r=n("settings_protectmodifypercentage_100_desc")),t.addOption(`${e}`,r)}t.setValue(`${null!==(r=this.plugin.settings.protectModifyPercentage)&&void 0!==r?r:50}`).onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.protectModifyPercentage=Number.parseInt(t),yield this.plugin.saveSettings()}))))})),new l.Setting(O).setName(n("setting_syncdirection")).setDesc(n("setting_syncdirection_desc")).addDropdown((t=>{var r;t.addOption("bidirectional",n("setting_syncdirection_bidirectional_desc")),t.addOption("incremental_push_only",n("setting_syncdirection_incremental_push_only_desc")),t.addOption("incremental_pull_only",n("setting_syncdirection_incremental_pull_only_desc")),t.setValue(null!==(r=this.plugin.settings.syncDirection)&&void 0!==r?r:"bidirectional").onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.syncDirection=t,yield this.plugin.saveSettings()}))))})),l.Platform.isMobile&&new l.Setting(O).setName(n("settings_enablemobilestatusbar")).setDesc(n("settings_enablemobilestatusbar_desc")).addDropdown((t=>e(this,void 0,void 0,(function*(){t.addOption("enable",n("enable")).addOption("disable",n("disable")),t.setValue(""+(this.plugin.settings.enableMobileStatusBar?"enable":"disable")).onChange((t=>e(this,void 0,void 0,(function*(){var e;"enable"===t?(this.plugin.settings.enableMobileStatusBar=!0,this.plugin.appContainerObserver=K("enable")):(this.plugin.settings.enableMobileStatusBar=!1,K("disable",this.plugin.appContainerObserver),null===(e=this.plugin.appContainerObserver)||void 0===e||e.disconnect(),this.plugin.appContainerObserver=void 0),yield this.plugin.saveSettings()}))))}))));const B=t.createEl("div");B.createEl("h2",{text:n("settings_importexport")}),l.Platform.isMobile&&B.addClass("setting-need-wrapping-mobile"),new l.Setting(B).setName(n("settings_export")).setDesc(n("settings_export_desc")).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("settings_export_all_but_oauth2_button")),t.onClick((()=>e(this,void 0,void 0,(function*(){new nE(this.app,this.plugin,"all_but_oauth2").open()}))))})))).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("settings_export_dropbox_button")),t.onClick((()=>e(this,void 0,void 0,(function*(){new nE(this.app,this.plugin,"dropbox").open()}))))})))).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("settings_export_onedrive_button")),t.onClick((()=>e(this,void 0,void 0,(function*(){new nE(this.app,this.plugin,"onedrive").open()}))))}))));let P="";new l.Setting(B).setName(n("settings_import")).setDesc(n("settings_import_desc")).addText((e=>e.setPlaceholder("obsidian://remotely-save?func=settings&...").setValue("").onChange((e=>{P=e})))).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("confirm")),t.onClick((()=>e(this,void 0,void 0,(function*(){if(""!==P){try{const e=(e=>{if(!e.startsWith("obsidian://remotely-save?func=settings&"))throw Error("not valid string");const t=new URL(e);return Object.fromEntries(t.searchParams)})(P),t=DD(e,this.app.vault.getName());if("error"===t.status)new l.Notice(t.message);else{const e=i()(t.result);this.plugin.settings=Object.assign({},this.plugin.settings,e),this.plugin.saveSettings(),new l.Notice(n("protocol_saveqr",{manifestName:this.plugin.manifest.name}))}}catch(e){new l.Notice(`${e}`)}P=""}else new l.Notice(n("settings_import_error_notice")),P=""}))))}))));const N=t.createEl("div");N.createEl("h2",{text:n("settings_debug")}),new l.Setting(N).setName(n("settings_debuglevel")).setDesc(n("settings_debuglevel_desc")).addDropdown((t=>e(this,void 0,void 0,(function*(){var n;t.addOption("info","info"),t.addOption("debug","debug"),t.setValue(null!==(n=this.plugin.settings.currLogLevel)&&void 0!==n?n:"info").onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.currLogLevel=t,yield this.plugin.saveSettings(),console.info(`the log level is changed to ${t}`)}))))})))),new l.Setting(N).setName(n("settings_outputsettingsconsole")).setDesc(n("settings_outputsettingsconsole_desc")).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("settings_outputsettingsconsole_button")),t.onClick((()=>e(this,void 0,void 0,(function*(){const e=V(yield this.plugin.loadData());console.info(e),new l.Notice(n("settings_outputsettingsconsole_notice"))}))))})))),new l.Setting(N).setName(n("settings_obfuscatesettingfile")).setDesc(n("settings_obfuscatesettingfile_desc")).addDropdown((t=>e(this,void 0,void 0,(function*(){t.addOption("enable",n("enable")).addOption("disable",n("disable")),t.setValue(""+(this.plugin.settings.obfuscateSettingFile?"enable":"disable")).onChange((t=>e(this,void 0,void 0,(function*(){this.plugin.settings.obfuscateSettingFile="enable"===t,yield this.plugin.saveSettings()}))))})))),new l.Setting(N).setName(n("settings_viewconsolelog")).setDesc(z(n("settings_viewconsolelog_desc"))),new l.Setting(N).setName(n("settings_syncplans")).setDesc(n("settings_syncplans_desc")).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("settings_syncplans_button_1")),t.onClick((()=>e(this,void 0,void 0,(function*(){yield LD(this.plugin.db,this.app.vault,this.plugin.vaultRandomID,1),new l.Notice(n("settings_syncplans_notice"))}))))})))).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("settings_syncplans_button_5")),t.onClick((()=>e(this,void 0,void 0,(function*(){yield LD(this.plugin.db,this.app.vault,this.plugin.vaultRandomID,5),new l.Notice(n("settings_syncplans_notice"))}))))})))).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("settings_syncplans_button_all")),t.onClick((()=>e(this,void 0,void 0,(function*(){yield LD(this.plugin.db,this.app.vault,this.plugin.vaultRandomID,-1),new l.Notice(n("settings_syncplans_notice"))}))))})))),new l.Setting(N).setName(n("settings_delsyncplans")).setDesc(n("settings_delsyncplans_desc")).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("settings_delsyncplans_button")),t.onClick((()=>e(this,void 0,void 0,(function*(){var t;yield(t=this.plugin.db,e(void 0,void 0,void 0,(function*(){yield t.syncPlansTbl.clear()}))),new l.Notice(n("settings_delsyncplans_notice"))}))))})))),new l.Setting(N).setName(n("settings_delprevsync")).setDesc(n("settings_delprevsync_desc")).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("settings_delprevsync_button")),t.onClick((()=>e(this,void 0,void 0,(function*(){var t,r;yield(t=this.plugin.db,r=this.plugin.vaultRandomID,e(void 0,void 0,void 0,(function*(){const e=yield t.prevSyncRecordsTbl.keys();for(const n of e)n.startsWith(`${r}\t`)&&(yield t.prevSyncRecordsTbl.removeItem(n))}))),new l.Notice(n("settings_delprevsync_notice"))}))))})))),new l.Setting(N).setName(n("settings_profiler_results")).setDesc(n("settings_profiler_results_desc")).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("settings_profiler_results_button_all")),t.onClick((()=>e(this,void 0,void 0,(function*(){yield UD(this.plugin.db,this.app.vault,this.plugin.vaultRandomID),new l.Notice(n("settings_profiler_results_notice"))}))))})))),new l.Setting(N).setName(n("settings_profiler_enabledebugprint")).setDesc(n("settings_profiler_enabledebugprint_desc")).addDropdown((t=>{var r;t.addOption("enable",n("enable")),t.addOption("disable",n("disable")),t.setValue((null===(r=this.plugin.settings.profiler)||void 0===r?void 0:r.enablePrinting)?"enable":"disable").onChange((t=>e(this,void 0,void 0,(function*(){void 0===this.plugin.settings.profiler&&(this.plugin.settings.profiler=WD),this.plugin.settings.profiler.enablePrinting="enable"===t,yield this.plugin.saveSettings()}))))})),new l.Setting(N).setName(n("settings_profiler_recordsize")).setDesc(n("settings_profiler_recordsize_desc")).addDropdown((t=>{var r;t.addOption("enable",n("enable")),t.addOption("disable",n("disable")),t.setValue((null===(r=this.plugin.settings.profiler)||void 0===r?void 0:r.recordSize)?"enable":"disable").onChange((t=>e(this,void 0,void 0,(function*(){void 0===this.plugin.settings.profiler&&(this.plugin.settings.profiler=WD),this.plugin.settings.profiler.recordSize="enable"===t,yield this.plugin.saveSettings()}))))})),new l.Setting(N).setName(n("settings_outputbasepathvaultid")).setDesc(n("settings_outputbasepathvaultid_desc")).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("settings_outputbasepathvaultid_button")),t.onClick((()=>e(this,void 0,void 0,(function*(){new l.Notice(this.plugin.getVaultBasePath()),new l.Notice(this.plugin.vaultRandomID)}))))})))),new l.Setting(N).setName(n("settings_resetcache")).setDesc(n("settings_resetcache_desc")).addButton((t=>e(this,void 0,void 0,(function*(){t.setButtonText(n("settings_resetcache_button")),t.onClick((()=>e(this,void 0,void 0,(function*(){yield e(void 0,void 0,void 0,(function*(){const e=indexedDB.deleteDatabase(CD);e.onsuccess=e=>{console.info("db deleted")},e.onblocked=e=>{console.warn("trying to delete db but it was blocked")},e.onerror=e=>{console.error("tried to delete db but something goes wrong!"),console.error(e)}})),new l.Notice(n("settings_resetcache_notice")),this.plugin.unload()}))))}))))}hide(){const{containerEl:e}=this;e.empty(),super.hide()}}class oE extends l.Modal{constructor(e,t){super(e),this.plugin=t,this.agree=!1,this.manualBackup=!1,this.requireUpdateAllDev=!1}onOpen(){const{contentEl:e}=this,t=(e,t)=>this.plugin.i18n.t(e,t);e.createEl("h2",{text:t("syncalgov3_title")});const n=e.createEl("ul");t("syncalgov3_texts").split("\n").forEach((e=>{n.createEl("li",{text:z(e)})})),e.createDiv("modal-button-container",(e=>{let n;e.createEl("label",{cls:"mod-checkbox"},(e=>{const r=e.createEl("input",{attr:{tabindex:-1},type:"checkbox"});r.checked=this.manualBackup,r.addEventListener("click",(()=>{this.manualBackup=r.checked,void 0!==n&&(this.manualBackup&&this.requireUpdateAllDev?n.removeAttribute("disabled"):n.setAttr("disabled",!0))})),e.appendText(t("syncalgov3_checkbox_manual_backup"))})),e.createEl("label",{cls:"mod-checkbox"},(e=>{const r=e.createEl("input",{attr:{tabindex:-1},type:"checkbox"});r.checked=this.requireUpdateAllDev,r.addEventListener("click",(()=>{this.requireUpdateAllDev=r.checked,void 0!==n&&(this.manualBackup&&this.requireUpdateAllDev?n.removeAttribute("disabled"):n.setAttr("disabled",!0))})),e.appendText(t("syncalgov3_checkbox_requiremultidevupdate"))})),n=e.createEl("button",{attr:{type:"button"},cls:"mod-cta",text:t("syncalgov3_button_agree")}),n.setAttr("disabled",!0),n.addEventListener("click",(()=>{this.agree=!0,this.close()})),e.createEl("button",{attr:{type:"submit"},text:t("syncalgov3_button_disagree")}).addEventListener("click",(()=>{this.close()}))}))}onClose(){const{contentEl:e}=this;e.empty(),this.agree?(console.info("agree to use the new algorithm"),this.plugin.saveAgreeToUseNewSyncAlgorithm(),this.plugin.enableAutoSyncIfSet(),this.plugin.enableInitSyncIfSet(),this.plugin.toggleSyncOnSaveIfSet()):(console.info("do not agree to use the new algorithm"),this.plugin.unload())}}var sE=n(7350),aE=n.n(sE);const uE="KNQWY5DFMRPV",cE="U2FsdGVkX",dE=(t,n,...r)=>e(void 0,[t,n,...r],void 0,(function*(e,t,n=2e4){const r=yield window.crypto.subtle.importKey("raw",(new TextEncoder).encode(t),{name:"PBKDF2"},!1,["deriveKey","deriveBits"]);return yield window.crypto.subtle.deriveBits({name:"PBKDF2",salt:e,iterations:n,hash:"SHA-256"},r,384)})),lE=(t,n,...r)=>e(void 0,[t,n,...r],void 0,(function*(e,t,n=2e4,r=""){let i;i=""!==r?(e=>{const t=e.match(/[\da-f]{2}/gi);if(null===t)throw Error(`input ${e} is not hex, no way to transform`);return new Uint8Array(t.map((e=>Number.parseInt(e,16))))})(r):window.crypto.getRandomValues(new Uint8Array(8));const o=yield dE(i,t,n),s=o.slice(0,32),a=o.slice(32,48),u=yield window.crypto.subtle.importKey("raw",s,{name:"AES-CBC"},!1,["encrypt","decrypt"]),c=yield window.crypto.subtle.encrypt({name:"AES-CBC",iv:a},u,e),d=(new TextEncoder).encode("Salted__"),l=new Uint8Array([...d,...i,...new Uint8Array(c)]);return F(l)})),hE=(t,n,...r)=>e(void 0,[t,n,...r],void 0,(function*(e,t,n=2e4){e.slice(0,8);const r=e.slice(8,16),i=yield dE(new Uint8Array(r),t,n),o=i.slice(0,32),s=i.slice(32,48),a=yield window.crypto.subtle.importKey("raw",o,{name:"AES-CBC"},!1,["encrypt","decrypt"]);return yield window.crypto.subtle.decrypt({name:"AES-CBC",iv:s},a,e.slice(16))}));var fE=n(88563),pE=n(55512),mE=n.n(pE);function gE(){return mE()('(()=>{var t={114:function(t,e,r){"use strict";var n=this&&this.__awaiter||function(t,e,r,n){return new(r||(r=Promise))((function(o,s){function i(t){try{a(n.next(t))}catch(t){s(t)}}function c(t){try{a(n.throw(t))}catch(t){s(t)}}function a(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(i,c)}a((n=n.apply(t,e||[])).next())}))};Object.defineProperty(e,"__esModule",{value:!0}),e.AESCipherBlock=e.EMECipher=void 0;const o=r(469);function s(t,e){if(16!==e.length)throw Error("len must be 16");const r=new Uint8Array(16);r[0]=2*e[0],e[15]>=128&&(r[0]=135^r[0]);for(let t=1;t<16;t++)r[t]=2*e[t],e[t-1]>=128&&(r[t]=r[t]+1);t.set(r)}function i(t,e,r){if(e.length!==r.length)throw Error(`input1.length=${e.length} is not equal to input2.length=${r.length}`);for(let n=0;n128)throw Error(`EME operates on 1 to 128 block-cipher blocks, you passed ${u}`);const h=new Uint8Array(l.length),f=yield function(t,e){return n(this,void 0,void 0,(function*(){const r=new Uint8Array(16),n=new Uint8Array(16);yield t.encrypt(n,r);const o=new Array(e);for(let t=0;t=r)break}}function v(t){return E(0,t)}function x(t){const e=Math.floor(t/b),r=t%b;let n=32+e*(g+b);return 0!==r&&(n+=g+r),n}function A(t){let r=t;if(r-=32,r<0)throw new Error(e.msgErrorEncryptedFileTooShort);const n=Math.floor(r/w);let o=r%w,s=n*b;if(0!==o&&(o-=g,o<=0))throw new Error(e.msgErrorEncryptedFileBadHeader);return s+=o,s}e.Cipher=class{constructor(t){this.dataKey=new Uint8Array(32),this.nameKey=new Uint8Array(32),this.nameTweak=new Uint8Array(16),this.dirNameEncrypt=!0,this.fileNameEnc=t}toString(){return`\\ndataKey=${this.dataKey} \\nnameKey=${this.nameKey}\\nnameTweak=${this.nameTweak}\\ndirNameEncrypt=${this.dirNameEncrypt}\\nfileNameEnc=${this.fileNameEnc}\\n`}encodeToString(t){if("base32"===this.fileNameEnc)return f.base32hex.stringify(t,{pad:!1}).toLowerCase();if("base64"===this.fileNameEnc)return f.base64url.stringify(t,{pad:!1});if("base32768"===this.fileNameEnc)return y.encode(t);throw Error(`unknown fileNameEnc=${this.fileNameEnc}`)}decodeString(t){if("base32"===this.fileNameEnc){if(t.endsWith("="))throw new Error(e.msgErrorBadBase32Encoding);return f.base32hex.parse(t.toUpperCase(),{loose:!0})}if("base64"===this.fileNameEnc)return f.base64url.parse(t,{loose:!0});if("base32768"===this.fileNameEnc)return y.decode(t);throw Error(`unknown fileNameEnc=${this.fileNameEnc}`)}key(t,e){return i(this,void 0,void 0,(function*(){const r=this.dataKey.length+this.nameKey.length+this.nameTweak.length;let n,o=m;return""!==e&&(o=(new TextEncoder).encode(e)),n=""===t?new Uint8Array(r):yield(0,c.scryptAsync)((new TextEncoder).encode(t),o,{N:16384,r:8,p:1,dkLen:r}),this.dataKey.set(n.slice(0,this.dataKey.length)),this.nameKey.set(n.slice(this.dataKey.length,this.dataKey.length+this.nameKey.length)),this.nameTweak.set(n.slice(this.dataKey.length+this.nameKey.length)),this}))}updateInternalKey(t,e,r){return this.dataKey=t,this.nameKey=e,this.nameTweak=r,this}getInternalKey(){return{dataKey:this.dataKey,nameKey:this.nameKey,nameTweak:this.nameTweak}}encryptSegment(t){return i(this,void 0,void 0,(function*(){if(""===t)return"";const e=(0,u.pad)((new TextEncoder).encode(t),16),r=new h.AESCipherBlock(this.nameKey),n=new h.EMECipher(r),o=yield n.encrypt(this.nameTweak,e);return this.encodeToString(o)}))}encryptFileName(t){return i(this,void 0,void 0,(function*(){const e=t.split("/");for(let t=0;t>=BigInt(8),n=n+BigInt(o)+BigInt(s),e[t]=Number(n),n>>=BigInt(8)}n!==BigInt(0)&&E(8,e)},e.encryptedSize=x,e.decryptedSize=A},506:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createCipher=e.rotl=e.sigma=void 0;const n=r(605),o=r(527),s=t=>Uint8Array.from(t.split("").map((t=>t.charCodeAt(0)))),i=s("expand 16-byte k"),c=s("expand 32-byte k"),a=(0,o.u32)(i),l=(0,o.u32)(c);function u(t){return t.byteOffset%4==0}e.sigma=l.slice(),e.rotl=function(t,e){return t<>>32-e};const h=64,f=16,y=2**32-1,d=new Uint32Array;e.createCipher=function(t,e){const{allowShortKeys:r,extendNonceFn:s,counterLength:i,counterRight:c,rounds:p}=(0,o.checkOpts)({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if("function"!=typeof t)throw new Error("core must be a function");return(0,n.number)(i),(0,n.number)(p),(0,n.bool)(c),(0,n.bool)(r),(e,g,b,w,m=0)=>{(0,n.bytes)(e),(0,n.bytes)(g),(0,n.bytes)(b);const E=b.length;if(w||(w=new Uint8Array(E)),(0,n.bytes)(w),(0,n.number)(m),m<0||m>=y)throw new Error("arx: counter overflow");if(w.length=y)throw new Error("arx: counter overflow");const u=Math.min(h,l-o);if(b&&u===h){const t=o/4;if(o%4!=0)throw new Error("arx: invalid block position");for(let e,r=0;r0;)v.pop().fill(0);return w}}},605:(t,e)=>{"use strict";function r(t){if(!Number.isSafeInteger(t)||t<0)throw new Error(`positive integer expected, not ${t}`)}function n(t){if("boolean"!=typeof t)throw new Error(`boolean expected, not ${t}`)}function o(t){return t instanceof Uint8Array||null!=t&&"object"==typeof t&&"Uint8Array"===t.constructor.name}function s(t,...e){if(!o(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${t.length}`)}function i(t){if("function"!=typeof t||"function"!=typeof t.create)throw new Error("hash must be wrapped by utils.wrapConstructor");r(t.outputLen),r(t.blockLen)}function c(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function a(t,e){s(t);const r=e.outputLen;if(t.length{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.poly1305=e.wrapConstructorWithKey=void 0;const n=r(605),o=r(527),s=(t,e)=>255&t[e++]|(255&t[e++])<<8;class i{constructor(t){this.blockLen=16,this.outputLen=16,this.buffer=new Uint8Array(16),this.r=new Uint16Array(10),this.h=new Uint16Array(10),this.pad=new Uint16Array(8),this.pos=0,this.finished=!1,t=(0,o.toBytes)(t),(0,n.bytes)(t,32);const e=s(t,0),r=s(t,2),i=s(t,4),c=s(t,6),a=s(t,8),l=s(t,10),u=s(t,12),h=s(t,14);this.r[0]=8191&e,this.r[1]=8191&(e>>>13|r<<3),this.r[2]=7939&(r>>>10|i<<6),this.r[3]=8191&(i>>>7|c<<9),this.r[4]=255&(c>>>4|a<<12),this.r[5]=a>>>1&8190,this.r[6]=8191&(a>>>14|l<<2),this.r[7]=8065&(l>>>11|u<<5),this.r[8]=8191&(u>>>8|h<<8),this.r[9]=h>>>5&127;for(let e=0;e<8;e++)this.pad[e]=s(t,16+2*e)}process(t,e,r=!1){const n=r?0:2048,{h:o,r:i}=this,c=i[0],a=i[1],l=i[2],u=i[3],h=i[4],f=i[5],y=i[6],d=i[7],p=i[8],g=i[9],b=s(t,e+0),w=s(t,e+2),m=s(t,e+4),E=s(t,e+6),v=s(t,e+8),x=s(t,e+10),A=s(t,e+12),k=s(t,e+14);let B=o[0]+(8191&b),U=o[1]+(8191&(b>>>13|w<<3)),L=o[2]+(8191&(w>>>10|m<<6)),C=o[3]+(8191&(m>>>7|E<<9)),_=o[4]+(8191&(E>>>4|v<<12)),S=o[5]+(v>>>1&8191),T=o[6]+(8191&(v>>>14|x<<2)),M=o[7]+(8191&(x>>>11|A<<5)),O=o[8]+(8191&(A>>>8|k<<8)),N=o[9]+(k>>>5|n),I=0,K=I+B*c+U*(5*g)+L*(5*p)+C*(5*d)+_*(5*y);I=K>>>13,K&=8191,K+=S*(5*f)+T*(5*h)+M*(5*u)+O*(5*l)+N*(5*a),I+=K>>>13,K&=8191;let H=I+B*a+U*c+L*(5*g)+C*(5*p)+_*(5*d);I=H>>>13,H&=8191,H+=S*(5*y)+T*(5*f)+M*(5*h)+O*(5*u)+N*(5*l),I+=H>>>13,H&=8191;let j=I+B*l+U*a+L*c+C*(5*g)+_*(5*p);I=j>>>13,j&=8191,j+=S*(5*d)+T*(5*y)+M*(5*f)+O*(5*h)+N*(5*u),I+=j>>>13,j&=8191;let P=I+B*u+U*l+L*a+C*c+_*(5*g);I=P>>>13,P&=8191,P+=S*(5*p)+T*(5*d)+M*(5*y)+O*(5*f)+N*(5*h),I+=P>>>13,P&=8191;let $=I+B*h+U*u+L*l+C*a+_*c;I=$>>>13,$&=8191,$+=S*(5*g)+T*(5*p)+M*(5*d)+O*(5*y)+N*(5*f),I+=$>>>13,$&=8191;let D=I+B*f+U*h+L*u+C*l+_*a;I=D>>>13,D&=8191,D+=S*c+T*(5*g)+M*(5*p)+O*(5*d)+N*(5*y),I+=D>>>13,D&=8191;let F=I+B*y+U*f+L*h+C*u+_*l;I=F>>>13,F&=8191,F+=S*a+T*c+M*(5*g)+O*(5*p)+N*(5*d),I+=F>>>13,F&=8191;let R=I+B*d+U*y+L*f+C*h+_*u;I=R>>>13,R&=8191,R+=S*l+T*a+M*c+O*(5*g)+N*(5*p),I+=R>>>13,R&=8191;let V=I+B*p+U*d+L*y+C*f+_*h;I=V>>>13,V&=8191,V+=S*u+T*l+M*a+O*c+N*(5*g),I+=V>>>13,V&=8191;let z=I+B*g+U*p+L*d+C*y+_*f;I=z>>>13,z&=8191,z+=S*h+T*u+M*l+O*a+N*c,I+=z>>>13,z&=8191,I=(I<<2)+I|0,I=I+K|0,K=8191&I,I>>>=13,H+=I,o[0]=K,o[1]=H,o[2]=j,o[3]=P,o[4]=$,o[5]=D,o[6]=F,o[7]=R,o[8]=V,o[9]=z}finalize(){const{h:t,pad:e}=this,r=new Uint16Array(10);let n=t[1]>>>13;t[1]&=8191;for(let e=2;e<10;e++)t[e]+=n,n=t[e]>>>13,t[e]&=8191;t[0]+=5*n,n=t[0]>>>13,t[0]&=8191,t[1]+=n,n=t[1]>>>13,t[1]&=8191,t[2]+=n,r[0]=t[0]+5,n=r[0]>>>13,r[0]&=8191;for(let e=1;e<10;e++)r[e]=t[e]+n,n=r[e]>>>13,r[e]&=8191;r[9]-=8192;let o=(1^n)-1;for(let t=0;t<10;t++)r[t]&=o;o=~o;for(let e=0;e<10;e++)t[e]=t[e]&o|r[e];t[0]=65535&(t[0]|t[1]<<13),t[1]=65535&(t[1]>>>3|t[2]<<10),t[2]=65535&(t[2]>>>6|t[3]<<7),t[3]=65535&(t[3]>>>9|t[4]<<4),t[4]=65535&(t[4]>>>12|t[5]<<1|t[6]<<14),t[5]=65535&(t[6]>>>2|t[7]<<11),t[6]=65535&(t[7]>>>5|t[8]<<8),t[7]=65535&(t[8]>>>8|t[9]<<5);let s=t[0]+e[0];t[0]=65535&s;for(let r=1;r<8;r++)s=(t[r]+e[r]|0)+(s>>>16)|0,t[r]=65535&s}update(t){(0,n.exists)(this);const{buffer:e,blockLen:r}=this,s=(t=(0,o.toBytes)(t)).length;for(let n=0;n>>0,t[s++]=r[e]>>>8;return t}digest(){const{buffer:t,outputLen:e}=this;this.digestInto(t);const r=t.slice(0,e);return this.destroy(),r}}function c(t){const e=(e,r)=>t(r).update((0,o.toBytes)(e)).digest(),r=t(new Uint8Array(32));return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=e=>t(e),e}e.wrapConstructorWithKey=c,e.poly1305=c((t=>new i(t)))},22:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.polyval=e.ghash=e._toGHASHKey=void 0;const n=r(527),o=r(605),s=16,i=new Uint8Array(16),c=(0,n.u32)(i),a=t=>(t>>>0&255)<<24|(t>>>8&255)<<16|(t>>>16&255)<<8|t>>>24&255;function l(t){t.reverse();const e=1&t[15];let r=0;for(let e=0;e>>1|r,r=(1&n)<<7}return t[0]^=225&-e,t}e._toGHASHKey=l;class u{constructor(t,e){this.blockLen=s,this.outputLen=s,this.s0=0,this.s1=0,this.s2=0,this.s3=0,this.finished=!1,t=(0,n.toBytes)(t),(0,o.bytes)(t,16);const r=(0,n.createView)(t);let i=r.getUint32(0,!1),c=r.getUint32(4,!1),l=r.getUint32(8,!1),u=r.getUint32(12,!1);const h=[];for(let t=0;t<128;t++)h.push({s0:a(i),s1:a(c),s2:a(l),s3:a(u)}),({s0:i,s1:c,s2:l,s3:u}={s3:(d=l)<<31|(p=u)>>>1,s2:(y=c)<<31|d>>>1,s1:(f=i)<<31|y>>>1,s0:f>>>1^225<<24&-(1&p)});var f,y,d,p;const g=(b=e||1024)>65536?8:b>1024?4:2;var b;if(![1,2,4,8].includes(g))throw new Error(`ghash: wrong window size=${g}, should be 2, 4 or 8`);this.W=g;const w=128/g,m=this.windowSize=2**g,E=[];for(let t=0;t>>g-i-1&1))continue;const{s0:c,s1:a,s2:l,s3:u}=h[g*t+i];r^=c,n^=a,o^=l,s^=u}E.push({s0:r,s1:n,s2:o,s3:s})}this.t=E}_updateBlock(t,e,r,n){t^=this.s0,e^=this.s1,r^=this.s2,n^=this.s3;const{W:o,t:s,windowSize:i}=this;let c=0,a=0,l=0,u=0;const h=(1<>>8*t&255;for(let t=8/o-1;t>=0;t--){const r=e>>>o*t&h,{s0:n,s1:y,s2:d,s3:p}=s[f*i+r];c^=n,a^=y,l^=d,u^=p,f+=1}}this.s0=c,this.s1=a,this.s2=l,this.s3=u}update(t){t=(0,n.toBytes)(t),(0,o.exists)(this);const e=(0,n.u32)(t),r=Math.floor(t.length/s),a=t.length%s;for(let t=0;tt(r,e.length).update((0,n.toBytes)(e)).digest(),r=t(new Uint8Array(16),0);return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=(e,r)=>t(e,r),e}e.ghash=f(((t,e)=>new u(t,e))),e.polyval=f(((t,e)=>new h(t,e)))},469:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.unsafe=e.siv=e.gcm=e.cfb=e.cbc=e.ecb=e.ctr=e.expandKeyDecLE=e.expandKeyLE=void 0;const n=r(527),o=r(22),s=r(605),i=16,c=new Uint8Array(i),a=283;function l(t){return t<<1^a&-(t>>7)}function u(t,e){let r=0;for(;e>0;e>>=1)r^=t&-(1&e),t=l(t);return r}const h=(()=>{let t=new Uint8Array(256);for(let e=0,r=1;e<256;e++,r^=l(r))t[e]=r;const e=new Uint8Array(256);e[0]=99;for(let r=0;r<255;r++){let n=t[255-r];n|=n<<8,e[t[r]]=255&(n^n>>4^n>>5^n>>6^n>>7^99)}return e})(),f=h.map(((t,e)=>h.indexOf(e))),y=t=>t<<24|t>>>8,d=t=>t<<8|t>>>24;function p(t,e){if(256!==t.length)throw new Error("Wrong sbox length");const r=new Uint32Array(256).map(((r,n)=>e(t[n]))),n=r.map(d),o=n.map(d),s=o.map(d),i=new Uint32Array(65536),c=new Uint32Array(65536),a=new Uint16Array(65536);for(let e=0;e<256;e++)for(let l=0;l<256;l++){const u=256*e+l;i[u]=r[e]^n[l],c[u]=o[e]^s[l],a[u]=t[e]<<8|t[l]}return{sbox:t,sbox2:a,T0:r,T1:n,T2:o,T3:s,T01:i,T23:c}}const g=p(h,(t=>u(t,3)<<24|t<<16|t<<8|u(t,2))),b=p(f,(t=>u(t,11)<<24|u(t,13)<<16|u(t,9)<<8|u(t,14))),w=(()=>{const t=new Uint8Array(16);for(let e=0,r=1;e<16;e++,r=l(r))t[e]=r;return t})();function m(t){(0,s.bytes)(t);const e=t.length;if(![16,24,32].includes(e))throw new Error(`aes: wrong key size: should be 16, 24 or 32, got: ${e}`);const{sbox2:r}=g,o=(0,n.u32)(t),i=o.length,c=t=>x(r,t,t,t,t),a=new Uint32Array(e+28);a.set(o);for(let t=i;t6&&t%i==4&&(e=c(e)),a[t]=a[t-i]^e}return a}function E(t){const e=m(t),r=e.slice(),n=e.length,{sbox2:o}=g,{T0:s,T1:i,T2:c,T3:a}=b;for(let t=0;t>>8&255]^c[n>>>16&255]^a[n>>>24]}return r}function v(t,e,r,n,o,s){return t[r<<8&65280|n>>>8&255]^e[o>>>8&65280|s>>>24&255]}function x(t,e,r,n,o){return t[255&e|65280&r]|t[n>>>16&255|o>>>16&65280]<<16}function A(t,e,r,n,o){const{sbox2:s,T01:i,T23:c}=g;let a=0;e^=t[a++],r^=t[a++],n^=t[a++],o^=t[a++];const l=t.length/4-2;for(let s=0;s=0;t--)r=r+(255&a[t])|0,a[t]=255&r,r>>>=8;({s0:u,s1:h,s2:f,s3:y}=A(t,l[0],l[1],l[2],l[3]))}const g=i*Math.floor(d.length/4);if(g>>0,u.setUint32(y,p,e),({s0:g,s1:b,s2:w,s3:m}=A(t,l[0],l[1],l[2],l[3]));const E=i*Math.floor(h.length/4);if(E16)throw new Error(`aes/pcks5: wrong padding byte: ${n}`);const o=t.subarray(0,-n);for(let e=0;er(t,e),decrypt:(t,e)=>r(t,e)}})),e.ecb=(0,n.wrapCipher)({blockSize:16},(function(t,e={}){(0,s.bytes)(t);const r=!e.disablePadding;return{encrypt:(e,n)=>{(0,s.bytes)(e);const{b:o,o:i,out:c}=_(e,r,n),a=m(t);let l=0;for(;l+4<=o.length;){const{s0:t,s1:e,s2:r,s3:n}=A(a,o[l+0],o[l+1],o[l+2],o[l+3]);i[l++]=t,i[l++]=e,i[l++]=r,i[l++]=n}if(r){const t=T(e.subarray(4*l)),{s0:r,s1:n,s2:o,s3:s}=A(a,t[0],t[1],t[2],t[3]);i[l++]=r,i[l++]=n,i[l++]=o,i[l++]=s}return a.fill(0),c},decrypt:(e,o)=>{C(e);const s=E(t),i=B(e.length,o),c=(0,n.u32)(e),a=(0,n.u32)(i);for(let t=0;t+4<=c.length;){const{s0:e,s1:r,s2:n,s3:o}=k(s,c[t+0],c[t+1],c[t+2],c[t+3]);a[t++]=e,a[t++]=r,a[t++]=n,a[t++]=o}return s.fill(0),S(i,r)}}})),e.cbc=(0,n.wrapCipher)({blockSize:16,nonceLength:16},(function(t,e,r={}){(0,s.bytes)(t),(0,s.bytes)(e,16);const o=!r.disablePadding;return{encrypt:(r,s)=>{const i=m(t),{b:c,o:a,out:l}=_(r,o,s),u=(0,n.u32)(e);let h=u[0],f=u[1],y=u[2],d=u[3],p=0;for(;p+4<=c.length;)h^=c[p+0],f^=c[p+1],y^=c[p+2],d^=c[p+3],({s0:h,s1:f,s2:y,s3:d}=A(i,h,f,y,d)),a[p++]=h,a[p++]=f,a[p++]=y,a[p++]=d;if(o){const t=T(r.subarray(4*p));h^=t[0],f^=t[1],y^=t[2],d^=t[3],({s0:h,s1:f,s2:y,s3:d}=A(i,h,f,y,d)),a[p++]=h,a[p++]=f,a[p++]=y,a[p++]=d}return i.fill(0),l},decrypt:(r,s)=>{C(r);const i=E(t),c=(0,n.u32)(e),a=B(r.length,s),l=(0,n.u32)(r),u=(0,n.u32)(a);let h=c[0],f=c[1],y=c[2],d=c[3];for(let t=0;t+4<=l.length;){const e=h,r=f,n=y,o=d;h=l[t+0],f=l[t+1],y=l[t+2],d=l[t+3];const{s0:s,s1:c,s2:a,s3:p}=k(i,h,f,y,d);u[t++]=s^e,u[t++]=c^r,u[t++]=a^n,u[t++]=p^o}return i.fill(0),S(a,o)}}})),e.cfb=(0,n.wrapCipher)({blockSize:16,nonceLength:16},(function(t,e){function r(r,o,s){const c=m(t),a=r.length;s=B(a,s);const l=(0,n.u32)(r),u=(0,n.u32)(s),h=o?u:l,f=(0,n.u32)(e);let y=f[0],d=f[1],p=f[2],g=f[3];for(let t=0;t+4<=l.length;){const{s0:e,s1:r,s2:n,s3:o}=A(c,y,d,p,g);u[t+0]=l[t+0]^e,u[t+1]=l[t+1]^r,u[t+2]=l[t+2]^n,u[t+3]=l[t+3]^o,y=h[t++],d=h[t++],p=h[t++],g=h[t++]}const b=i*Math.floor(l.length/4);if(br(t,!0,e),decrypt:(t,e)=>r(t,!1,e)}})),e.gcm=(0,n.wrapCipher)({blockSize:16,nonceLength:12,tagLength:16},(function(t,e,r){if((0,s.bytes)(e),0===e.length)throw new Error("aes/gcm: empty nonce");const i=16;function a(t,e,n){const s=M(o.ghash,!1,t,n,r);for(let t=0;t{(0,s.bytes)(t);const{xk:e,authKey:r,counter:n,tagMask:o}=l(),c=new Uint8Array(t.length+i);L(e,!1,n,t,c);const u=a(r,o,c.subarray(0,c.length-i));return c.set(u,t.length),e.fill(0),c},decrypt:t=>{if((0,s.bytes)(t),t.lengthn=>{if(!Number.isSafeInteger(n)||e>n||n>r)throw new Error(`${t}: invalid value=${n}, must be [${e}..${r}]`)};function N(t){return null!=t&&"object"==typeof t&&(t instanceof Uint32Array||"Uint32Array"===t.constructor.name)}e.siv=(0,n.wrapCipher)({blockSize:16,nonceLength:12,tagLength:16},(function(t,e,r){const i=O("AAD",0,2**36),c=O("plaintext",0,2**36),a=O("nonce",12,12),l=O("ciphertext",16,2**36+16);function u(){const r=t.length;if(16!==r&&24!==r&&32!==r)throw new Error(`key length must be 16, 24 or 32 bytes, got: ${r} bytes`);const o=m(t),s=new Uint8Array(r),i=new Uint8Array(16),c=(0,n.u32)(e);let a=0,l=c[0],u=c[1],h=c[2],f=0;for(const t of[i,s].map(n.u32)){const e=(0,n.u32)(t);for(let t=0;t{(0,s.bytes)(t),c(t.length);const{encKey:e,authKey:r}=u(),n=h(e,r,t),o=new Uint8Array(t.length+16);return o.set(n,t.length),o.set(f(e,n,t)),e.fill(0),r.fill(0),o},decrypt:t=>{(0,s.bytes)(t),l(t.length);const e=t.subarray(-16),{encKey:r,authKey:o}=u(),i=f(r,e,t.subarray(0,-16)),c=h(r,o,i);if(r.fill(0),o.fill(0),!(0,n.equalBytes)(e,c))throw new Error("invalid polyval tag");return i}}})),e.unsafe={expandKeyLE:m,expandKeyDecLE:E,encrypt:A,decrypt:k,encryptBlock:function(t,e){if((0,s.bytes)(e,16),!N(t))throw new Error("_encryptBlock accepts result of expandKeyLE");const r=(0,n.u32)(e);let{s0:o,s1:i,s2:c,s3:a}=A(t,r[0],r[1],r[2],r[3]);return r[0]=o,r[1]=i,r[2]=c,r[3]=a,e},decryptBlock:function(t,e){if((0,s.bytes)(e,16),!N(t))throw new Error("_decryptBlock accepts result of expandKeyLE");const r=(0,n.u32)(e);let{s0:o,s1:i,s2:c,s3:a}=k(t,r[0],r[1],r[2],r[3]);return r[0]=o,r[1]=i,r[2]=c,r[3]=a,e},ctrCounter:U,ctr32:L}},297:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getWebcryptoSubtle=e.randomBytes=void 0;const r="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0;e.randomBytes=function(t=32){if(r&&"function"==typeof r.getRandomValues)return r.getRandomValues(new Uint8Array(t));throw new Error("crypto.getRandomValues must be defined")},e.getWebcryptoSubtle=function(){if(r&&"object"==typeof r.subtle&&null!=r.subtle)return r.subtle;throw new Error("crypto.subtle must be defined")}},190:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.secretbox=e.xsalsa20poly1305=e.xsalsa20=e.salsa20=e.hsalsa=void 0;const n=r(605),o=r(506),s=r(210),i=r(527);function c(t,e,r,n,s,i=20){let c=t[0],a=e[0],l=e[1],u=e[2],h=e[3],f=t[1],y=r[0],d=r[1],p=s,g=t[2],b=e[4],w=e[5],m=e[6],E=e[7],v=t[3],x=c,A=a,k=l,B=u,U=h,L=f,C=y,_=d,S=p,T=0,M=g,O=b,N=w,I=m,K=E,H=v;for(let t=0;t{const o=16;return(0,n.bytes)(t,32),(0,n.bytes)(r,24),{encrypt:(i,c)=>{(0,n.bytes)(i);const a=i.length+32;c?(0,n.bytes)(c,a):c=new Uint8Array(a),c.set(i,32),(0,e.xsalsa20)(t,r,c,c);const l=c.subarray(0,32),u=(0,s.poly1305)(c.subarray(32),l);return c.set(u,o),c.subarray(0,o).fill(0),c.subarray(o)},decrypt:c=>{(0,n.bytes)(c);const a=c.length;if(a{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.u64Lengths=e.setBigUint64=e.wrapCipher=e.Hash=e.equalBytes=e.checkOpts=e.concatBytes=e.toBytes=e.bytesToUtf8=e.utf8ToBytes=e.asyncLoop=e.nextTick=e.numberToBytesBE=e.bytesToNumberBE=e.hexToNumber=e.hexToBytes=e.bytesToHex=e.isLE=e.createView=e.u32=e.u16=e.u8=void 0;\n/*! noble-ciphers - MIT License (c) 2023 Paul Miller (paulmillr.com) */\nconst n=r(605);e.u8=t=>new Uint8Array(t.buffer,t.byteOffset,t.byteLength);e.u16=t=>new Uint16Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/2));e.u32=t=>new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4));if(e.createView=t=>new DataView(t.buffer,t.byteOffset,t.byteLength),e.isLE=68===new Uint8Array(new Uint32Array([287454020]).buffer)[0],!e.isLE)throw new Error("Non little-endian hardware is not supported");const o=Array.from({length:256},((t,e)=>e.toString(16).padStart(2,"0")));function s(t){(0,n.bytes)(t);let e="";for(let r=0;r=i._0&&t<=i._9?t-i._0:t>=i._A&&t<=i._F?t-(i._A-10):t>=i._a&&t<=i._f?t-(i._a-10):void 0}function a(t){if("string"!=typeof t)throw new Error("hex string expected, got "+typeof t);const e=t.length,r=e/2;if(e%2)throw new Error("padded hex string expected, got unpadded hex of length "+e);const n=new Uint8Array(r);for(let e=0,o=0;e{},e.asyncLoop=async function(t,r,n){let o=Date.now();for(let s=0;s=0&&t>o&s),c=Number(r&s),a=n?4:0,l=n?0:4;t.setUint32(e+a,i,n),t.setUint32(e+l,c,n)}e.wrapCipher=(t,e)=>(Object.assign(e,t),e),e.setBigUint64=h,e.u64Lengths=function(t,r){const n=new Uint8Array(16),o=(0,e.createView)(n);return h(o,0,BigInt(r?r.length:0),!0),h(o,8,BigInt(t.length),!0),n}},489:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.gcm=e.ctr=e.cbc=e.utils=e.managedNonce=e.getWebcryptoSubtle=e.randomBytes=void 0;const n=r(297);Object.defineProperty(e,"randomBytes",{enumerable:!0,get:function(){return n.randomBytes}}),Object.defineProperty(e,"getWebcryptoSubtle",{enumerable:!0,get:function(){return n.getWebcryptoSubtle}});const o=r(527),s=r(605);e.managedNonce=function(t){return(0,s.number)(t.nonceLength),(e,...r)=>({encrypt:(s,...i)=>{const{nonceLength:c}=t,a=(0,n.randomBytes)(c),l=t(e,a,...r).encrypt(s,...i),u=(0,o.concatBytes)(a,l);return l.fill(0),u},decrypt:(n,...o)=>{const{nonceLength:s}=t,i=n.subarray(0,s),c=n.subarray(s);return t(e,i,...r).decrypt(c,...o)}})},e.utils={async encrypt(t,e,r,o){const s=(0,n.getWebcryptoSubtle)(),i=await s.importKey("raw",t,e,!0,["encrypt"]),c=await s.encrypt(r,i,o);return new Uint8Array(c)},async decrypt(t,e,r,o){const s=(0,n.getWebcryptoSubtle)(),i=await s.importKey("raw",t,e,!0,["decrypt"]),c=await s.decrypt(r,i,o);return new Uint8Array(c)}};const i={CBC:"AES-CBC",CTR:"AES-CTR",GCM:"AES-GCM"};function c(t){return(r,n,o)=>{(0,s.bytes)(r),(0,s.bytes)(n);const c={name:t,length:8*r.length},a=function(t,e,r){if(t===i.CBC)return{name:i.CBC,iv:e};if(t===i.CTR)return{name:i.CTR,counter:e,length:64};if(t===i.GCM)return r?{name:i.GCM,iv:e,additionalData:r}:{name:i.GCM,iv:e};throw new Error("unknown aes block mode")}(t,n,o);return{encrypt:t=>((0,s.bytes)(t),e.utils.encrypt(r,c,a,t)),decrypt:t=>((0,s.bytes)(t),e.utils.decrypt(r,c,a,t))}}}e.cbc=c(i.CBC),e.ctr=c(i.CTR),e.gcm=c(i.GCM)},557:(t,e)=>{"use strict";function r(t){if(!Number.isSafeInteger(t)||t<0)throw new Error(`positive integer expected, not ${t}`)}function n(t){if("boolean"!=typeof t)throw new Error(`boolean expected, not ${t}`)}function o(t){return t instanceof Uint8Array||null!=t&&"object"==typeof t&&"Uint8Array"===t.constructor.name}function s(t,...e){if(!o(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${t.length}`)}function i(t){if("function"!=typeof t||"function"!=typeof t.create)throw new Error("Hash should be wrapped by utils.wrapConstructor");r(t.outputLen),r(t.blockLen)}function c(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function a(t,e){s(t);const r=e.outputLen;if(t.length{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.HashMD=e.Maj=e.Chi=void 0;const n=r(557),o=r(175);e.Chi=(t,e,r)=>t&e^~t&r;e.Maj=(t,e,r)=>t&e^t&r^e&r;class s extends o.Hash{constructor(t,e,r,n){super(),this.blockLen=t,this.outputLen=e,this.padOffset=r,this.isLE=n,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(t),this.view=(0,o.createView)(this.buffer)}update(t){(0,n.exists)(this);const{view:e,buffer:r,blockLen:s}=this,i=(t=(0,o.toBytes)(t)).length;for(let n=0;ns-c&&(this.process(r,0),c=0);for(let t=c;t>o&s),c=Number(r&s),a=n?4:0,l=n?0:4;t.setUint32(e+a,i,n),t.setUint32(e+l,c,n)}(r,s-8,BigInt(8*this.length),i),this.process(r,0);const a=(0,o.createView)(t),l=this.outputLen;if(l%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const u=l/4,h=this.get();if(u>h.length)throw new Error("_sha2: outputLen bigger than state");for(let t=0;t{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.crypto=void 0,e.crypto="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0},615:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.hmac=e.HMAC=void 0;const n=r(557),o=r(175);class s extends o.Hash{constructor(t,e){super(),this.finished=!1,this.destroyed=!1,(0,n.hash)(t);const r=(0,o.toBytes)(e);if(this.iHash=t.create(),"function"!=typeof this.iHash.update)throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const s=this.blockLen,i=new Uint8Array(s);i.set(r.length>s?t.create().update(r).digest():r);for(let t=0;tnew s(t,e).update(r).digest(),e.hmac.create=(t,e)=>new s(t,e)},941:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.pbkdf2Async=e.pbkdf2=void 0;const n=r(557),o=r(615),s=r(175);function i(t,e,r,i){(0,n.hash)(t);const c=(0,s.checkOpts)({dkLen:32,asyncTick:10},i),{c:a,dkLen:l,asyncTick:u}=c;if((0,n.number)(a),(0,n.number)(l),(0,n.number)(u),a<1)throw new Error("PBKDF2: iterations (c) should be >= 1");const h=(0,s.toBytes)(e),f=(0,s.toBytes)(r),y=new Uint8Array(l),d=o.hmac.create(t,h),p=d._cloneInto().update(f);return{c:a,dkLen:l,asyncTick:u,DK:y,PRF:d,PRFSalt:p}}function c(t,e,r,n,o){return t.destroy(),e.destroy(),n&&n.destroy(),o.fill(0),r}e.pbkdf2=function(t,e,r,n){const{c:o,dkLen:a,DK:l,PRF:u,PRFSalt:h}=i(t,e,r,n);let f;const y=new Uint8Array(4),d=(0,s.createView)(y),p=new Uint8Array(u.outputLen);for(let t=1,e=0;e{h._cloneInto(y).update(g).digestInto(g);for(let t=0;t{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.scryptAsync=e.scrypt=void 0;const n=r(557),o=r(623),s=r(941),i=r(175);function c(t,e,r,n,o,s){let c=t[e++]^r[n++],a=t[e++]^r[n++],l=t[e++]^r[n++],u=t[e++]^r[n++],h=t[e++]^r[n++],f=t[e++]^r[n++],y=t[e++]^r[n++],d=t[e++]^r[n++],p=t[e++]^r[n++],g=t[e++]^r[n++],b=t[e++]^r[n++],w=t[e++]^r[n++],m=t[e++]^r[n++],E=t[e++]^r[n++],v=t[e++]^r[n++],x=t[e++]^r[n++],A=c,k=a,B=l,U=u,L=h,C=f,_=y,S=d,T=p,M=g,O=b,N=w,I=m,K=E,H=v,j=x;for(let t=0;t<8;t+=2)L^=(0,i.rotl)(A+I|0,7),T^=(0,i.rotl)(L+A|0,9),I^=(0,i.rotl)(T+L|0,13),A^=(0,i.rotl)(I+T|0,18),M^=(0,i.rotl)(C+k|0,7),K^=(0,i.rotl)(M+C|0,9),k^=(0,i.rotl)(K+M|0,13),C^=(0,i.rotl)(k+K|0,18),H^=(0,i.rotl)(O+_|0,7),B^=(0,i.rotl)(H+O|0,9),_^=(0,i.rotl)(B+H|0,13),O^=(0,i.rotl)(_+B|0,18),U^=(0,i.rotl)(j+N|0,7),S^=(0,i.rotl)(U+j|0,9),N^=(0,i.rotl)(S+U|0,13),j^=(0,i.rotl)(N+S|0,18),k^=(0,i.rotl)(A+U|0,7),B^=(0,i.rotl)(k+A|0,9),U^=(0,i.rotl)(B+k|0,13),A^=(0,i.rotl)(U+B|0,18),_^=(0,i.rotl)(C+L|0,7),S^=(0,i.rotl)(_+C|0,9),L^=(0,i.rotl)(S+_|0,13),C^=(0,i.rotl)(L+S|0,18),N^=(0,i.rotl)(O+M|0,7),T^=(0,i.rotl)(N+O|0,9),M^=(0,i.rotl)(T+N|0,13),O^=(0,i.rotl)(M+T|0,18),I^=(0,i.rotl)(j+H|0,7),K^=(0,i.rotl)(I+j|0,9),H^=(0,i.rotl)(K+I|0,13),j^=(0,i.rotl)(H+K|0,18);o[s++]=c+A|0,o[s++]=a+k|0,o[s++]=l+B|0,o[s++]=u+U|0,o[s++]=h+L|0,o[s++]=f+C|0,o[s++]=y+_|0,o[s++]=d+S|0,o[s++]=p+T|0,o[s++]=g+M|0,o[s++]=b+O|0,o[s++]=w+N|0,o[s++]=m+I|0,o[s++]=E+K|0,o[s++]=v+H|0,o[s++]=x+j|0}function a(t,e,r,n,o){let s=n+0,i=n+16*o;for(let n=0;n<16;n++)r[i+n]=t[e+16*(2*o-1)+n];for(let n=0;n0&&(i+=16),c(r,s,t,e+=16,r,i)}function l(t,e,r){const c=(0,i.checkOpts)({dkLen:32,asyncTick:10,maxmem:1073742848},r),{N:a,r:l,p:u,dkLen:h,asyncTick:f,maxmem:y,onProgress:d}=c;if((0,n.number)(a),(0,n.number)(l),(0,n.number)(u),(0,n.number)(h),(0,n.number)(f),(0,n.number)(y),void 0!==d&&"function"!=typeof d)throw new Error("progressCb should be function");const p=128*l,g=p/4;if(a<=1||a&a-1||a>=2**(p/8)||a>2**32)throw new Error("Scrypt: N must be larger than 1, a power of 2, less than 2^(128 * r / 8) and less than 2^32");if(u<0||u>137438953440/p)throw new Error("Scrypt: p must be a positive integer less than or equal to ((2^32 - 1) * 32) / (128 * r)");if(h<0||h>137438953440)throw new Error("Scrypt: dkLen should be positive integer less than or equal to (2^32 - 1) * 32");const b=p*(a+u);if(b>y)throw new Error(`Scrypt: parameters too large, ${b} (128 * r * (N + p)) > ${y} (maxmem)`);const w=(0,s.pbkdf2)(o.sha256,t,e,{c:1,dkLen:p*u}),m=(0,i.u32)(w),E=(0,i.u32)(new Uint8Array(p*a)),v=(0,i.u32)(new Uint8Array(p));let x=()=>{};if(d){const t=2*a*u,e=Math.max(Math.floor(t/1e4),1);let r=0;x=()=>{r++,!d||r%e&&r!==t||d(r/t)}}return{N:a,r:l,p:u,dkLen:h,blockSize32:g,V:E,B32:m,B:w,tmp:v,blockMixCb:x,asyncTick:f}}function u(t,e,r,n,i){const c=(0,s.pbkdf2)(o.sha256,t,r,{c:1,dkLen:e});return r.fill(0),n.fill(0),i.fill(0),c}e.scrypt=function(t,e,r){const{N:n,r:o,p:s,dkLen:c,blockSize32:h,V:f,B32:y,B:d,tmp:p,blockMixCb:g}=l(t,e,r);i.isLE||(0,i.byteSwap32)(y);for(let t=0;t{a(f,r,f,r+=h,o),g()})),a(f,(n-1)*h,y,e,o),g(),await(0,i.asyncLoop)(n,b,(()=>{const t=y[e+h-16]%n;for(let r=0;r{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.sha224=e.sha256=void 0;const n=r(202),o=r(175),s=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),i=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),c=new Uint32Array(64);class a extends n.HashMD{constructor(){super(64,32,8,!1),this.A=0|i[0],this.B=0|i[1],this.C=0|i[2],this.D=0|i[3],this.E=0|i[4],this.F=0|i[5],this.G=0|i[6],this.H=0|i[7]}get(){const{A:t,B:e,C:r,D:n,E:o,F:s,G:i,H:c}=this;return[t,e,r,n,o,s,i,c]}set(t,e,r,n,o,s,i,c){this.A=0|t,this.B=0|e,this.C=0|r,this.D=0|n,this.E=0|o,this.F=0|s,this.G=0|i,this.H=0|c}process(t,e){for(let r=0;r<16;r++,e+=4)c[r]=t.getUint32(e,!1);for(let t=16;t<64;t++){const e=c[t-15],r=c[t-2],n=(0,o.rotr)(e,7)^(0,o.rotr)(e,18)^e>>>3,s=(0,o.rotr)(r,17)^(0,o.rotr)(r,19)^r>>>10;c[t]=s+c[t-7]+n+c[t-16]|0}let{A:r,B:i,C:a,D:l,E:u,F:h,G:f,H:y}=this;for(let t=0;t<64;t++){const e=y+((0,o.rotr)(u,6)^(0,o.rotr)(u,11)^(0,o.rotr)(u,25))+(0,n.Chi)(u,h,f)+s[t]+c[t]|0,d=((0,o.rotr)(r,2)^(0,o.rotr)(r,13)^(0,o.rotr)(r,22))+(0,n.Maj)(r,i,a)|0;y=f,f=h,h=u,u=l+e|0,l=a,a=i,i=r,r=e+d|0}r=r+this.A|0,i=i+this.B|0,a=a+this.C|0,l=l+this.D|0,u=u+this.E|0,h=h+this.F|0,f=f+this.G|0,y=y+this.H|0,this.set(r,i,a,l,u,h,f,y)}roundClean(){c.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}class l extends a{constructor(){super(),this.A=-1056596264,this.B=914150663,this.C=812702999,this.D=-150054599,this.E=-4191439,this.F=1750603025,this.G=1694076839,this.H=-1090891868,this.outputLen=28}}e.sha256=(0,o.wrapConstructor)((()=>new a)),e.sha224=(0,o.wrapConstructor)((()=>new l))},175:(t,e,r)=>{"use strict";\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */Object.defineProperty(e,"__esModule",{value:!0}),e.randomBytes=e.wrapXOFConstructorWithOpts=e.wrapConstructorWithOpts=e.wrapConstructor=e.checkOpts=e.Hash=e.concatBytes=e.toBytes=e.utf8ToBytes=e.asyncLoop=e.nextTick=e.hexToBytes=e.bytesToHex=e.byteSwap32=e.byteSwapIfBE=e.byteSwap=e.isLE=e.rotl=e.rotr=e.createView=e.u32=e.u8=e.isBytes=void 0;const n=r(145),o=r(557);e.isBytes=function(t){return t instanceof Uint8Array||null!=t&&"object"==typeof t&&"Uint8Array"===t.constructor.name};e.u8=t=>new Uint8Array(t.buffer,t.byteOffset,t.byteLength);e.u32=t=>new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4));e.createView=t=>new DataView(t.buffer,t.byteOffset,t.byteLength);e.rotr=(t,e)=>t<<32-e|t>>>e;e.rotl=(t,e)=>t<>>32-e>>>0,e.isLE=68===new Uint8Array(new Uint32Array([287454020]).buffer)[0];e.byteSwap=t=>t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255,e.byteSwapIfBE=e.isLE?t=>t:t=>(0,e.byteSwap)(t),e.byteSwap32=function(t){for(let r=0;re.toString(16).padStart(2,"0")));e.bytesToHex=function(t){(0,o.bytes)(t);let e="";for(let r=0;r=i._0&&t<=i._9?t-i._0:t>=i._A&&t<=i._F?t-(i._A-10):t>=i._a&&t<=i._f?t-(i._a-10):void 0}e.hexToBytes=function(t){if("string"!=typeof t)throw new Error("hex string expected, got "+typeof t);const e=t.length,r=e/2;if(e%2)throw new Error("padded hex string expected, got unpadded hex of length "+e);const n=new Uint8Array(r);for(let e=0,o=0;e{},e.asyncLoop=async function(t,r,n){let o=Date.now();for(let s=0;s=0&&tt().update(l(e)).digest(),r=t();return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=()=>t(),e},e.wrapConstructorWithOpts=function(t){const e=(e,r)=>t(r).update(l(e)).digest(),r=t({});return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=e=>t(e),e},e.wrapXOFConstructorWithOpts=function(t){const e=(e,r)=>t(r).update(l(e)).digest(),r=t({});return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=e=>t(e),e},e.randomBytes=function(t=32){if(n.crypto&&"function"==typeof n.crypto.getRandomValues)return n.crypto.getRandomValues(new Uint8Array(t));throw new Error("crypto.getRandomValues must be defined")}},819:t=>{t.exports={pad:function(t,e){var r=t;if("number"!=typeof e)e=16;else{if(e>255)throw new RangeError("pad(): PKCS#7 padding cannot be longer than 255 bytes");if(e<0)throw new RangeError("pad(): PKCS#7 padding size must be positive")}if("string"==typeof t){var n=e-t.length%e;isNaN(n)&&(n=0);for(var o=String.fromCharCode(n),s=0;s0){var r=t.charCodeAt(t.length-1);if(r>t.length)throw new Error("unpad(): cannot remove "+r+" bytes from a "+t.length+"-byte(s) string");for(var n=t.length-2,o=t.length-r;n>=o;n--)if(t.charCodeAt(n)!==r)throw new Error("unpad(): found a padding byte of "+t.charCodeAt(n)+" instead of "+r+" at position "+n);e=t.substring(0,o)}else if(t instanceof Uint8Array||t instanceof Uint8ClampedArray){var s=t.byteLength,i=s-(r=t[s-1]);if(i<0)throw new Error("unpad(): cannot remove "+r+" bytes from a "+s+"-byte(s) string");for(n=s-2;n>=i;n--)if(t[n]!==r)throw new Error("unpad(): found a padding byte of "+t[n]+" instead of "+r+" at position "+n);e=t.slice(0,i)}return e}}},211:(t,e)=>{"use strict";function r(t,e,r){var n;if(void 0===r&&(r={}),!e.codes){e.codes={};for(var o=0;o=8&&(c-=8,i[l++]=255&a>>c)}if(c>=e.bits||255&a<<8-c)throw new SyntaxError("Unexpected end of data");return i}function n(t,e,r){void 0===r&&(r={});for(var n=r.pad,o=void 0===n||n,s=(1<e.bits;)c-=e.bits,i+=e.chars[s&a>>c];if(c&&(i+=e.chars[s&a<{"use strict";r.r(e),r.d(e,{decode:()=>i,encode:()=>s});const n={},o={};["ҠҿԀԟڀڿݠޟ߀ߟကဟႠႿᄀᅟᆀᆟᇠሿበቿዠዿጠጿᎠᏟᐠᙟᚠᛟកសᠠᡟᣀᣟᦀᦟ᧠᧿ᨠᨿᯀᯟᰀᰟᴀᴟ⇠⇿⋀⋟⍀⏟␀␟─❟➀➿⠀⥿⦠⦿⨠⩟⪀⪿⫠⭟ⰀⰟⲀⳟⴀⴟⵀⵟ⺠⻟㇀㇟㐀䶟䷀龿ꀀꑿ꒠꒿ꔀꗿꙀꙟꚠꛟ꜀ꝟꞀꞟꡀꡟ","ƀƟɀʟ"].forEach(((t,e)=>{const r=[];t.match(/../gu).forEach((t=>{const e=t.codePointAt(0),n=t.codePointAt(1);for(let t=e;t<=n;t++)r.push(String.fromCodePoint(t))}));const s=15-8*e;n[s]=r,r.forEach(((t,e)=>{o[t]=[s,e]}))}));const s=t=>{const e=t.length;let r="",o=0,s=0;for(let i=0;i=0;t--){o=(o<<1)+(e>>t&1),s++,15===s&&(r+=n[s][o],o=0,s=0)}}if(0!==s){for(;!(s in n);)o=1+(o<<1),s++;r+=n[s][o]}return r},i=t=>{const e=t.length,r=new Uint8Array(Math.floor(15*e/8));let n=0,s=0,i=0;for(let c=0;c=0;t--){s=(s<<1)+(u>>t&1),i++,8===i&&(r[n]=s,n++,s=0,i=0)}}if(s!==(1<{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{"use strict";function t(t,e,r,n){return new(r||(r=Promise))((function(o,s){function i(t){try{a(n.next(t))}catch(t){s(t)}}function c(t){try{a(n.throw(t))}catch(t){s(t)}}function a(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(i,c)}a((n=n.apply(t,e||[])).next())}))}Object.create;Object.create;"function"==typeof SuppressedError&&SuppressedError;var e=r(563);const n=self,o=((t=21)=>{let e="",r=crypto.getRandomValues(new Uint8Array(t));for(;t--;)e+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&r[t]];return e})(),s=new e.Cipher("base64");n.addEventListener("message",(e=>t(void 0,void 0,void 0,(function*(){const r=e.ports[0],{action:n,dataKeyBuf:i,nameKeyBuf:c,nameTweakBuf:a,inputName:l,inputContent:u}=e.data;if("prepare"===n)try{if(void 0===i||void 0===c||void 0===a)throw Error(`worker [${o}]: prepare: internal keys not transferred to worker properly`);s.updateInternalKey(new Uint8Array(i),new Uint8Array(c),new Uint8Array(a)),r.postMessage({status:"ok"})}catch(t){console.error(t),r.postMessage({status:"error",error:t})}else if("encryptName"===n)try{if(void 0===l)throw Error(`worker [${o}]: encryptName: internal inputName not transferred to worker properly`);const e=yield function(e){return t(this,void 0,void 0,(function*(){return yield s.encryptFileName(e)}))}(l);r.postMessage({status:"ok",outputName:e})}catch(t){console.error(`worker [${o}]: encryptName=${l}`),console.error(t),r.postMessage({status:"error",error:t})}else if("decryptName"===n)try{if(void 0===l)throw Error(`worker [${o}]: decryptName: internal inputName not transferred to worker properly`);const e=yield function(e){return t(this,void 0,void 0,(function*(){return yield s.decryptFileName(e)}))}(l);r.postMessage({status:"ok",outputName:e})}catch(t){console.error(`worker [${o}]: decryptName=${l}`),console.error(t),r.postMessage({status:"error",error:t})}else if("encryptContent"===n)try{if(void 0===u)throw Error(`worker [${o}]: encryptContent: internal inputContent not transferred to worker properly`);const e=yield function(e){return t(this,void 0,void 0,(function*(){return(yield s.encryptData(new Uint8Array(e),void 0)).buffer}))}(u);r.postMessage({status:"ok",outputContent:e},[e])}catch(t){console.error(t),r.postMessage({status:"error",error:t})}else if("decryptContent"===n)try{if(void 0===u)throw Error(`worker [${o}]: decryptContent: internal inputContent not transferred to worker properly`);const e=yield function(e){return t(this,void 0,void 0,(function*(){return(yield s.decryptData(new Uint8Array(e))).buffer}))}(u);r.postMessage({status:"ok",outputContent:e},[e])}catch(t){console.error(t),r.postMessage({status:"error",error:t})}else r.postMessage({status:"error",error:`worker [${o}]: unknown action=${n}`})}))))})()})();',"Worker",void 0,void 0)}const yE=fE.encryptedSize;class vE{constructor(e,t){this.password=e,this.init=!1,this.workerIdx=0,this.cipher=new fE.Cipher("base64"),this.workers=[];for(let e=0;e{const r=new MessageChannel;r.port2.onmessage=t=>{const{status:r}=t.data;"ok"===r?(this.init=!0,e()):n("error after prepareByCallingWorker")},r.port2.onmessageerror=e=>{n(e)},this.workers[t].postMessage({action:"prepare",dataKeyBuf:this.cipher.dataKey.buffer,nameKeyBuf:this.cipher.nameKey.buffer,nameTweakBuf:this.cipher.nameTweak.buffer},[r.port1])})));yield Promise.all(e)}))}encryptNameByCallingWorker(t){return e(this,void 0,void 0,(function*(){yield this.prepareByCallingWorker(),++this.workerIdx;const e=this.workerIdx%this.workers.length;return yield new Promise(((n,r)=>{const i=new MessageChannel;i.port2.onmessage=e=>{const{outputName:t}=e.data;void 0===t?r("unknown outputName after encryptNameByCallingWorker"):n(t)},i.port2.onmessageerror=e=>{r(e)},this.workers[e].postMessage({action:"encryptName",inputName:t},[i.port1])}))}))}decryptNameByCallingWorker(t){return e(this,void 0,void 0,(function*(){yield this.prepareByCallingWorker(),++this.workerIdx;const e=this.workerIdx%this.workers.length;return yield new Promise(((n,r)=>{const i=new MessageChannel;i.port2.onmessage=e=>{const{outputName:t,status:i}=e.data;"error"===i?r("error"):void 0===t?r("unknown outputName after decryptNameByCallingWorker"):n(t)},i.port2.onmessageerror=e=>{r(e)},this.workers[e].postMessage({action:"decryptName",inputName:t},[i.port1])}))}))}encryptContentByCallingWorker(t){return e(this,void 0,void 0,(function*(){yield this.prepareByCallingWorker(),++this.workerIdx;const e=this.workerIdx%this.workers.length;return yield new Promise(((n,r)=>{const i=new MessageChannel;i.port2.onmessage=e=>{const{outputContent:t}=e.data;void 0===t?r("unknown outputContent after encryptContentByCallingWorker"):n(t)},i.port2.onmessageerror=e=>{r(e)},this.workers[e].postMessage({action:"encryptContent",inputContent:t},[i.port1,t])}))}))}decryptContentByCallingWorker(t){return e(this,void 0,void 0,(function*(){yield this.prepareByCallingWorker(),++this.workerIdx;const e=this.workerIdx%this.workers.length;return yield new Promise(((n,r)=>{const i=new MessageChannel;i.port2.onmessage=e=>{const{outputContent:t,status:i}=e.data;"error"===i?r("error"):void 0===t?r("unknown outputContent after decryptContentByCallingWorker"):n(t)},i.port2.onmessageerror=e=>{r(e)},this.workers[e].postMessage({action:"decryptContent",inputContent:t},[i.port1,t])}))}))}}function bE(e){return!(!e.startsWith(uE)&&!e.startsWith(cE))}function wE(e){const t=i()(e);return t.keyEnc=t.keyRaw,t.sizeEnc=t.sizeRaw,t}class _E extends Q{constructor(e,t,n){super(),this.innerFs=e,this.password=null!=t?t:"",this.method=n,this.cacheMapOrigToEnc={},this.hasCacheMap=!1,this.kind=`encrypt(${this.innerFs.kind},${n})`,"rclone-base64"===n&&(this.cipherRClone=new vE(t,5))}isPasswordEmpty(){return""===this.password}isFolderAware(){if("openssl-base64"===this.method)return!1;if("rclone-base64"===this.method)return!0;throw Error(`no idea about isFolderAware for method=${this.method}`)}_getInnerWalkResult(){return e(this,void 0,void 0,(function*(){let e;return void 0!==this.innerWalkResultCacheTime&&this.innerWalkResultCacheTime>=Date.now()-1e3?e=this.innerWalkResultCache:(e=yield this.innerFs.walk(),this.innerWalkResultCache=e,this.innerWalkResultCacheTime=Date.now()),e}))}isPasswordOk(){return e(this,void 0,void 0,(function*(){const e=yield this._getInnerWalkResult();if(void 0===e||0===e.length)return{ok:!0,reason:"empty_remote"};const t=e[0].keyRaw;if(this.isPasswordEmpty())return function(e){return bE(e)}(t)?{ok:!1,reason:"remote_encrypted_local_no_password"}:{ok:!0,reason:"likely_no_password_both_sides"};if("unknown"===this.method)return{ok:!1,reason:"unknown_encryption_method"};if(function(e,t){return!(!bE(e)||"openssl-base64"===t)||!bE(e)&&"openssl-base64"===t}(t,this.method))return{ok:!1,reason:"encryption_method_not_matched"};try{if(void 0===(yield this._decryptName(t)))throw Error("decryption failed");return{ok:!0,reason:"password_matched"}}catch(e){return{ok:!1,reason:"password_or_method_not_matched_or_remote_not_encrypted"}}}))}walk(){return e(this,void 0,void 0,(function*(){const e=yield this._getInnerWalkResult(),t=[];if(this.isPasswordEmpty()){for(const n of e)t.push(wE(n)),this.cacheMapOrigToEnc[n.key]=n.key;return this.hasCacheMap=!0,t}for(const n of e){const e=yield this._decryptName(n.keyRaw),r=e.endsWith("/")?0:void 0;t.push({key:e,keyRaw:n.keyRaw,keyEnc:n.key,mtimeCli:n.mtimeCli,mtimeSvr:n.mtimeSvr,size:r,sizeEnc:n.size,sizeRaw:n.sizeRaw,hash:void 0,synthesizedFolder:n.synthesizedFolder}),this.cacheMapOrigToEnc[e]=n.keyRaw}return this.hasCacheMap=!0,t}))}stat(t){return e(this,void 0,void 0,(function*(){if(!this.hasCacheMap)throw new Error("You have to build the cacheMap firstly for stat");const e=this.cacheMapOrigToEnc[t];if(void 0===e)throw new Error(`no encrypted key ${t} before!`);const n=yield this.innerFs.stat(e);return this.isPasswordEmpty()?wE(n):{key:t,keyRaw:n.keyRaw,keyEnc:n.key,mtimeCli:n.mtimeCli,mtimeSvr:n.mtimeSvr,size:void 0,sizeEnc:n.size,sizeRaw:n.sizeRaw,hash:void 0,synthesizedFolder:n.synthesizedFolder}}))}mkdir(t,n,r){return e(this,void 0,void 0,(function*(){if(!this.hasCacheMap)throw new Error("You have to build the cacheMap firstly for mkdir");if(!t.endsWith("/"))throw new Error(`should not call mkdir on ${t}`);let e=this.cacheMapOrigToEnc[t];if(void 0===e&&(e=this.isPasswordEmpty()?t:yield this._encryptName(t),this.cacheMapOrigToEnc[t]=e),this.isPasswordEmpty()||this.isFolderAware()){return wE(yield this.innerFs.mkdir(e,n,r))}{const i=Date.now();let o=new ArrayBuffer(0);this.innerFs.allowEmptyFile()||(o=new ArrayBuffer(1));const s=yield this.innerFs.writeFile(e,o,null!=n?n:i,null!=r?r:i);return{key:t,keyRaw:s.keyRaw,keyEnc:s.key,mtimeCli:s.mtimeCli,mtimeSvr:s.mtimeSvr,size:0,sizeEnc:s.size,sizeRaw:s.sizeRaw,hash:void 0,synthesizedFolder:s.synthesizedFolder}}}))}writeFile(t,n,r,i){return e(this,void 0,void 0,(function*(){if(!this.hasCacheMap)throw new Error("You have to build the cacheMap firstly for readFile");let e=this.cacheMapOrigToEnc[t];if(void 0===e&&(e=this.isPasswordEmpty()?t:yield this._encryptName(t),this.cacheMapOrigToEnc[t]=e),this.isPasswordEmpty()){return wE(yield this.innerFs.writeFile(e,n,r,i))}{const o=yield this._encryptContent(n),s=yield this.innerFs.writeFile(e,o,r,i);return{key:t,keyRaw:s.keyRaw,keyEnc:s.key,mtimeCli:s.mtimeCli,mtimeSvr:s.mtimeSvr,size:void 0,sizeEnc:s.size,sizeRaw:s.sizeRaw,hash:void 0,synthesizedFolder:s.synthesizedFolder}}}))}readFile(t){return e(this,void 0,void 0,(function*(){if(!this.hasCacheMap)throw new Error("You have to build the cacheMap firstly for readFile");const e=this.cacheMapOrigToEnc[t];if(void 0===e)throw new Error(`no encrypted key ${t} before! cannot readFile`);const n=yield this.innerFs.readFile(e);if(this.isPasswordEmpty())return n;return yield this._decryptContent(n)}))}rm(t){return e(this,void 0,void 0,(function*(){if(!this.hasCacheMap)throw new Error("You have to build the cacheMap firstly for rm");const e=this.cacheMapOrigToEnc[t];if(void 0===e)throw new Error(`no encrypted key ${t} before! cannot rm`);return yield this.innerFs.rm(e)}))}checkConnect(t){return e(this,void 0,void 0,(function*(){return yield this.innerFs.checkConnect(t)}))}closeResources(){return e(this,void 0,void 0,(function*(){"rclone-base64"===this.method&&void 0!==this.cipherRClone&&this.cipherRClone.closeResources()}))}encryptEntity(t){return e(this,void 0,void 0,(function*(){if(void 0===t.key)throw Error(`input ${t.keyRaw} is abnormal without key`);if(this.isPasswordEmpty())return wE(t);const e=i()(t);if(void 0===e.sizeEnc&&void 0!==e.size&&(e.sizeEnc=this._getSizeFromOrigToEnc(e.size)),void 0===e.keyEnc||""===e.keyEnc){let n=this.cacheMapOrigToEnc[t.key];void 0!==n&&""!==n&&n!==e.key?e.keyEnc=n:(n=yield this._encryptName(t.key),e.keyEnc=n,this.cacheMapOrigToEnc[t.key]=n)}return e}))}_encryptContent(t){return e(this,void 0,void 0,(function*(){if(""===this.password)return t;if("openssl-base64"===this.method){const e=yield lE(t,this.password);if(void 0===e)throw Error("cannot encrypt content");return e}if("rclone-base64"===this.method){const e=yield this.cipherRClone.encryptContentByCallingWorker(t);if(void 0===e)throw Error("cannot encrypt content");return e}throw Error(`not supported encrypt method=${this.method}`)}))}_decryptContent(t){return e(this,void 0,void 0,(function*(){if(""===this.password)return t;if("openssl-base64"===this.method){const e=yield hE(t,this.password);if(void 0===e)throw Error("cannot decrypt content");return e}if("rclone-base64"===this.method){const e=yield this.cipherRClone.decryptContentByCallingWorker(t);if(void 0===e)throw Error("cannot decrypt content");return e}throw Error(`not supported decrypt method=${this.method}`)}))}_encryptName(t){return e(this,void 0,void 0,(function*(){if(""===this.password)return t;if("openssl-base64"===this.method){const n=yield((t,n,...r)=>e(void 0,[t,n,...r],void 0,(function*(e,t,n=2e4,r=""){const i=yield lE(F((new TextEncoder).encode(e)),t,n,r);return A(new Uint8Array(i),{pad:!1})})))(t,this.password);if(void 0===n)throw Error(`cannot encrypt name=${t}`);return n}if("rclone-base64"===this.method){const e=yield this.cipherRClone.encryptNameByCallingWorker(t);if(void 0===e)throw Error(`cannot encrypt name=${t}`);return e}throw Error(`not supported encrypt method=${this.method}`)}))}_decryptName(t){return e(this,void 0,void 0,(function*(){if(""===this.password)return t;if("openssl-base64"!==this.method){if("rclone-base64"===this.method){const e=yield this.cipherRClone.decryptNameByCallingWorker(t);if(void 0===e)throw Error(`cannot decrypt name=${t}`);return e}throw Error(`not supported decrypt method=${this.method}`)}if(t.startsWith(uE))try{const n=yield((t,n,...r)=>e(void 0,[t,n,...r],void 0,(function*(e,t,n=2e4){return(new TextDecoder).decode(yield hE(F(E(e,{loose:!0})),t,n))})))(t,this.password);if(void 0!==n&&O(n))return n;throw Error(`cannot decrypt name=${t}`)}catch(e){throw Error(`cannot decrypt name=${t}`)}else{if(!t.startsWith(cE))throw Error(`method=${this.method} but the name=${t}, likely mismatch`);try{const n=yield((t,n,...r)=>e(void 0,[t,n,...r],void 0,(function*(e,t,n=2e4){return(new TextDecoder).decode(yield hE(F(M(e,{loose:!0})),t,n))})))(t,this.password);if(void 0!==n&&O(n))return n;throw Error(`cannot decrypt name=${t}`)}catch(e){throw Error(`cannot decrypt name=${t}`)}}}))}_getSizeFromOrigToEnc(e){if(""===this.password)return e;if("openssl-base64"===this.method)return(e=>{if(e<0||Number.isNaN(e)||!Number.isInteger(e))throw Error(`getSizeFromOrigToEnc: x=${e} is not a valid size`);return 16*(Math.floor(e/16)+1)+16})(e);if("rclone-base64"===this.method)return yE(e);throw Error(`not supported encrypt method=${this.method}`)}getUserDisplayName(){return e(this,void 0,void 0,(function*(){return yield this.innerFs.getUserDisplayName()}))}revokeAuth(){return e(this,void 0,void 0,(function*(){return yield this.innerFs.revokeAuth()}))}allowEmptyFile(){return!0}}const xE=(e,t)=>e===t||e===`${t}/`||e.endsWith(`/${t}`)||e.endsWith(`/${t}/`),DE=e=>{const t=["data.json","main.js","manifest.json",".gitignore","styles.css"];for(const n of t)if(e===n||e.endsWith(`/${n}`))return!0;return!1};class EE extends Q{constructor(e,t,n,r,i,o){super(),this.vault=e,this.syncConfigDir=t,this.configDir=n,this.pluginID=r,this.profiler=i,this.deleteToWhere=o,this.kind="local"}walk(){return e(this,void 0,void 0,(function*(){var t,n,r,i,o,s,a,u;null===(t=this.profiler)||void 0===t||t.addIndent(),null===(n=this.profiler)||void 0===n||n.insert("enter walk for local");const c=[],d=this.vault.getAllLoadedFiles();null===(r=this.profiler)||void 0===r||r.insert("finish getting walk for local");for(const e of d){let t,n=e.path;if("/"!==e.path){if(e instanceof l.TFile){let r=e.stat.mtime;if(r<=0&&(r=e.stat.ctime),0===r&&(r=void 0),void 0===r)throw Error(`Your file has last modified time 0: ${n}, don't know how to deal with it`);t={key:e.path,keyRaw:e.path,mtimeCli:r,mtimeSvr:r,size:e.stat.size,sizeRaw:e.stat.size}}else{if(!(e instanceof l.TFolder))throw Error(`unexpected ${e}`);n=`${e.path}/`,t={key:n,keyRaw:n,size:0,sizeRaw:0}}t.keyRaw.startsWith(y)||c.push(t)}}if(null===(i=this.profiler)||void 0===i||i.insert("finish transforming walk for local"),this.syncConfigDir){null===(o=this.profiler)||void 0===o||o.insert("into syncConfigDir");const t=yield(h=this.configDir,f=this.vault,p=this.pluginID,e(void 0,void 0,void 0,(function*(){const t=new Nx.op([h]),n=[];for(;t.length>0;){const r=[];for(;t.length>0;)r.push(t.pop());const i=Ux()(r,10);for(const r of i){const i=r.map((t=>e(void 0,void 0,void 0,(function*(){const e=yield q(f,t);if(null==e)throw Error("something goes wrong while listing hidden folder");const n="folder"===e.type;let r;if(n&&(r=yield f.adapter.list(t)),!n&&(void 0===e.mtime||null===e.mtime||0===e.mtime))throw Error(`File in Obsidian ${h} has last modified time 0: ${t}, don't know how to deal with it.`);return{itself:{key:n?`${t}/`:t,keyRaw:n?`${t}/`:t,mtimeCli:e.mtime,mtimeSvr:e.mtime,size:e.size,sizeRaw:e.size},children:r}})))),o=$x()(yield Promise.all(i));for(const e of o){n.push(e.itself);const r=xE(e.itself.key,p);if(void 0!==e.children){for(const n of e.children.folders)$(n,["workspace","workspace.json"])||r&&!DE(n)||t.push(n);for(const n of e.children.files)$(n,["workspace","workspace.json"])||r&&!DE(n)||t.push(n)}}}}return n})));for(const e of t)c.push(e);null===(s=this.profiler)||void 0===s||s.insert("finish syncConfigDir")}var h,f,p;return null===(a=this.profiler)||void 0===a||a.insert("finish walk for local"),null===(u=this.profiler)||void 0===u||u.removeIndent(),c}))}stat(t){return e(this,void 0,void 0,(function*(){const e=yield q(this.vault,t);if(null==e)throw Error(`${t} does not exist! cannot stat for local`);const n="folder"===e.type;return{key:n?`${t}/`:t,keyRaw:n?`${t}/`:t,mtimeCli:e.mtime,mtimeSvr:e.mtime,mtimeCliFmt:U(e.mtime),mtimeSvrFmt:U(e.mtime),size:e.size,sizeRaw:e.size}}))}mkdir(t,n,r){return e(this,void 0,void 0,(function*(){return yield R(t,this.vault),yield this.stat(t)}))}writeFile(t,n,r,i){return e(this,void 0,void 0,(function*(){return yield this.vault.adapter.writeBinary(t,n,{mtime:r}),yield this.stat(t)}))}readFile(t){return e(this,void 0,void 0,(function*(){return yield this.vault.adapter.readBinary(t)}))}rm(t){return e(this,void 0,void 0,(function*(){"obsidian"===this.deleteToWhere?yield this.vault.adapter.trashLocal(t):(yield this.vault.adapter.trashSystem(t))||(yield this.vault.adapter.trashLocal(t))}))}checkConnect(t){return e(this,void 0,void 0,(function*(){return!0}))}getUserDisplayName(){return e(this,void 0,void 0,(function*(){throw new Error("Method not implemented.")}))}revokeAuth(){return e(this,void 0,void 0,(function*(){throw new Error("Method not implemented.")}))}allowEmptyFile(){return!0}}n(2404),n(48287).Buffer;const ME=(e,t)=>{const n=Object.assign({},e);return void 0!==n.mtimeCli&&(0===n.mtimeCli?n.mtimeCli=void 0:("s3"!==t&&"dropbox"!==t||(n.mtimeCli=1e3*Math.floor(n.mtimeCli/1e3)),n.mtimeCliFmt=U(n.mtimeCli))),void 0!==n.mtimeSvr&&(0===n.mtimeSvr?n.mtimeSvr=void 0:("s3"!==t&&"dropbox"!==t||(n.mtimeSvr=1e3*Math.floor(n.mtimeSvr/1e3)),n.mtimeSvrFmt=U(n.mtimeSvr))),void 0!==n.prevSyncTime&&(0===n.prevSyncTime?n.prevSyncTime=void 0:("s3"!==t&&"dropbox"!==t||(n.prevSyncTime=1e3*Math.floor(n.prevSyncTime/1e3)),n.prevSyncTimeFmt=U(n.prevSyncTime))),n},AE=e=>{if(!e.key.endsWith("/")&&void 0===e.mtimeCli&&void 0===e.mtimeSvr)throw e.key===e.keyEnc?Error(`Your remote file ${e.key} has last modified time 0, don't know how to deal with it.`):Error(`Your remote file ${e.key} (encrypted as ${e.keyEnc}) has last modified time 0, don't know how to deal with it.`);return e},SE=(e,t,n,r,i)=>{if(void 0===e)throw Error("isSkipItemByName meets undefinded key!");if(void 0!==i&&i.length>0)for(const t of i)if(k()(t,"A").test(e))return!0;return(!t||!((e,t)=>{if(!t.startsWith("."))throw Error(`configDir should starts with . but we get ${t}`);return e===t||e.startsWith(`${t}/`)})(e,r))&&(!!$(e,[])||(T(e,!0,!1)||!n&&T(e,!1,!0)||"/"===e||"_remotely-save-metadata-on-remote.json"===e||"_remotely-save-metadata-on-remote.bin"===e))},CE=(e,t)=>(void 0!==t&&t>0&&(e.mtimeCli=t),e);function kE(t,n,r){return e(this,void 0,void 0,(function*(){if(!t.endsWith("/"))throw Error(`should not call ${t} in copyFolder`);const e=yield n.stat(t);return yield r.mkdir(t,e.mtimeCli)}))}function TE(t,n,r){return e(this,void 0,void 0,(function*(){if(t.endsWith("/"))throw Error(`should not call ${t} in copyFile`);const e=yield n.stat(t),i=yield n.readFile(t);if(void 0===e.size)e.size=i.byteLength;else if(e.size!==i.byteLength)throw Error(`error copying ${n.kind}=>${r.kind}: size not matched`);if(void 0===e.mtimeCli)throw Error(`error copying ${n.kind}=>${r.kind}, no mtimeCli`);return yield r.writeFile(t,i,e.mtimeCli,e.mtimeCli)}))}const IE=(t,n,r,i,o,s,a)=>e(void 0,void 0,void 0,(function*(){var u;if("only_history"===i.decision)OD(a,n,r,t);else if("local_is_created_too_large_then_do_nothing"===i.decision||"remote_is_created_too_large_then_do_nothing"===i.decision||"folder_to_skip"===i.decision);else if("equal"===i.decision||"conflict_created_then_do_nothing"===i.decision||"folder_existed_both_then_do_nothing"===i.decision){if(void 0!==i.prevSync);else if(void 0!==i.remote){let e=i.remote;e=CE(e,null===(u=i.local)||void 0===u?void 0:u.mtimeCli),void 0!==e&&(yield FD(a,n,r,e))}}else if("local_is_modified_then_push"===i.decision||"local_is_created_then_push"===i.decision||"folder_existed_local_then_also_create_remote"===i.decision||"conflict_created_then_keep_local"===i.decision||"conflict_modified_then_keep_local"===i.decision){const t=(yield o.stat(i.key)).mtimeCli,u=yield function(t,n,r){return e(this,void 0,void 0,(function*(){return t.endsWith("/")?yield kE(t,n,r):yield TE(t,n,r)}))}(i.key,o,s);CE(u,t),yield FD(a,n,r,u)}else if("remote_is_modified_then_pull"===i.decision||"remote_is_created_then_pull"===i.decision||"conflict_created_then_keep_remote"===i.decision||"conflict_modified_then_keep_remote"===i.decision||"folder_existed_remote_then_also_create_local"===i.decision)i.key.endsWith("/")?yield o.mkdir(i.key):yield TE(i.key,s,o),yield FD(a,n,r,i.remote);else if("local_is_deleted_thus_also_delete_remote"===i.decision)yield s.rm(i.key),yield OD(a,n,r,i.key);else if("remote_is_deleted_thus_also_delete_local"===i.decision)yield o.rm(i.key),yield OD(a,n,r,i.key);else{if("conflict_created_then_keep_both"===i.decision||"conflict_modified_then_keep_both"===i.decision)throw Error(`${i.decision} not implemented yet: ${JSON.stringify(i)}`);if("folder_to_be_created"===i.decision){yield o.mkdir(i.key);const e=yield kE(i.key,o,s);yield FD(a,n,r,e)}else{if("folder_to_be_deleted_on_both"!==i.decision&&"folder_to_be_deleted_on_local"!==i.decision&&"folder_to_be_deleted_on_remote"!==i.decision)throw Error(`don't know how to dispatch decision: ${JSON.stringify(i)}`);"folder_to_be_deleted_on_both"!==i.decision&&"folder_to_be_deleted_on_local"!==i.decision||(yield o.rm(i.key)),"folder_to_be_deleted_on_both"!==i.decision&&"folder_to_be_deleted_on_remote"!==i.decision||(yield s.rm(i.key)),yield OD(a,n,r,i.key)}}})),RE=(t,n,r,i,o,s,a,u,c,d,l)=>e(void 0,void 0,void 0,(function*(){d.addIndent(),d.insert("doActualSync: enter"),console.debug(`concurrency === ${s}`);const{onlyMarkSyncedOps:h,folderCreationOps:f,deletionOps:p,uploadDownloads:m,allFilesCount:g,realModifyDeleteCount:y,realTotalCount:v}=(e=>{const t=[],n=[],r=[],i=[],o=Object.keys(e).sort(((e,t)=>t.length-e.length));let s=0,a=0,u=0;for(let c=0;c=0&&y>=0&&g>0)if(100===a&&y===g);else if(100*y>=g*a){const e=u(a,y,g);throw d.insert("doActualSync: error branch"),d.removeIndent(),Error(e)}const b=[h,f,p,m],w=["1. record the items already being synced","2. create all folders from shadowest to deepest","3. delete files and folders from deepest to shadowest",`4. upload or download files in parallel, with the desired concurrency=${s}`];let _=0;for(let t=0;te(void 0,void 0,void 0,(function*(){yield null==l?void 0:l(_,v,a,s.decision),_+=1,yield IE(a,i,o,s,n,r,c)}));d.add(p).catch((e=>{const t=`${a}: ${e.message}`;h.push(new Error(t)),h.length>=3&&(f=!0,d.pause(),d.clear())}))}if(yield d.onIdle(),h.length>0)throw f&&h.push(new Error("too many errors, stop the remaining tasks")),new xx(h)}d.insert(`doActualSync: step ${t} end`),d.removeIndent()}d.insert("doActualSync: exit"),d.removeIndent()}));function FE(t,n,r,i,o,s,a,u,c,d,l,h,f,p,m,g,y){return e(this,void 0,void 0,(function*(){var v,b,w,_,x,D,E,M,A;console.info("startting sync."),h(!0);let S=!0,C=0;yield null==f?void 0:f(s,C),C=1,yield null==f?void 0:f(s,C),yield null==m?void 0:m(s,C),yield null==g?void 0:g(s,C,S),i.insert("start big sync func");try{if(C=2,yield null==f?void 0:f(s,C),yield null==m?void 0:m(s,C),yield null==g?void 0:g(s,C,S),r.innerFs!==n)throw Error("your enc should has inner of the remote");const h=yield r.isPasswordOk();if(!h.ok)throw Error(h.reason);i.insert(`finish step${C} (list partial remote and check password)`),C=3,yield null==f?void 0:f(s,C),yield null==m?void 0:m(s,C),yield null==g?void 0:g(s,C,S);const p=yield r.walk();i.insert(`finish step${C} (list remote)`),C=4,yield null==f?void 0:f(s,C),yield null==m?void 0:m(s,C),yield null==g?void 0:g(s,C,S);const k=yield t.walk();i.insert(`finish step${C} (list local)`),C=5,yield null==f?void 0:f(s,C),yield null==m?void 0:m(s,C),yield null==g?void 0:g(s,C,S);const T=yield((t,n,r)=>e(void 0,void 0,void 0,(function*(){const e=[],i=yield t.prevSyncRecordsTbl.getItems();for(const t of Object.getOwnPropertyNames(i))if(t.startsWith(`${n}\t${r}\t`)){const n=i[t];null!==n&&e.push(n)}return e})))(o,u,a);i.insert(`finish step${C} (prev sync)`),C=6,yield null==f?void 0:f(s,C),yield null==m?void 0:m(s,C),yield null==g?void 0:g(s,C,S);let I=yield((t,n,r,i,o,s,a,u,c,d)=>e(void 0,void 0,void 0,(function*(){d.addIndent(),d.insert("ensembleMixedEnties: enter"),d.insertSize("sizeof localEntityList",t),d.insertSize("sizeof prevSyncEntityList",n),d.insertSize("sizeof remoteEntityList",r);const e={};for(const t of r){const n=AE(ME(t,c)),r=n.key;SE(r,i,s,o,a)||(e[r]={key:r,remote:n})}if(d.insert("ensembleMixedEnties: finish remote"),d.insertSize("sizeof finalMappings",e),0===Object.keys(e).length||0===t.length);else for(const t of n){const n=t.key;if(SE(n,i,s,o,a))continue;const r=yield u.encryptEntity(ME(t,c));e.hasOwnProperty(n)?e[n].prevSync=r:e[n]={key:n,prevSync:r}}d.insert("ensembleMixedEnties: finish prevSync"),d.insertSize("sizeof finalMappings",e);for(const n of t){const t=n.key;if(SE(t,i,s,o,a))continue;const r=yield u.encryptEntity(ME(n,c));e.hasOwnProperty(t)?e[t].local=r:e[t]={key:t,local:r}}return d.insert("ensembleMixedEnties: finish local"),d.insertSize("sizeof finalMappings",e),d.insert("ensembleMixedEnties: exit"),d.removeIndent(),e})))(k,T,p,null!==(v=d.syncConfigDir)&&void 0!==v&&v,c,null!==(b=d.syncUnderscoreItems)&&void 0!==b&&b,null!==(w=d.ignorePaths)&&void 0!==w?w:[],r,d.serviceType,i);i.insert(`finish step${C} (build partial mixedEntity)`),I=yield((t,n,r,i,o,s,a,u)=>e(void 0,void 0,void 0,(function*(){var e,c,d,l,h,f,p,m;s.addIndent(),s.insert("getSyncPlanInplace: enter");const g=Object.keys(t).sort(((e,t)=>t.length-e.length));s.insert("getSyncPlanInplace: finish sorting"),s.insertSize("sizeof sortedKeys",g);const y=new Set;for(let a=0;a=(null!==(l=null!==(d=_.mtimeCli)&&void 0!==d?d:_.mtimeSvr)&&void 0!==l?l:0)?(v.decisionBranch=11,v.decision="conflict_created_then_keep_local",y.add(N(u))):(v.decisionBranch=12,v.decision="conflict_created_then_keep_remote",y.add(N(u))):"keep_larger"===i?b.sizeEnc>=_.sizeEnc?(v.decisionBranch=13,v.decision="conflict_created_then_keep_local",y.add(N(u))):(v.decisionBranch=14,v.decision="conflict_created_then_keep_remote",y.add(N(u))):(v.decisionBranch=15,v.decision="conflict_created_then_keep_both",y.add(N(u)));else if("incremental_pull_only"===o)v.decisionBranch=22,v.decision="conflict_created_then_keep_remote",y.add(N(u));else{if("incremental_push_only"!==o)throw Error(`no idea how to deal with syncDirection=${o} while conflict created`);v.decisionBranch=23,v.decision="conflict_created_then_keep_local",y.add(N(u))}else if("bidirectional"===o)"keep_newer"===i?(null!==(f=null!==(h=b.mtimeCli)&&void 0!==h?h:b.mtimeSvr)&&void 0!==f?f:0)>=(null!==(m=null!==(p=_.mtimeCli)&&void 0!==p?p:_.mtimeSvr)&&void 0!==m?m:0)?(v.decisionBranch=16,v.decision="conflict_modified_then_keep_local",y.add(N(u))):(v.decisionBranch=17,v.decision="conflict_modified_then_keep_remote",y.add(N(u))):"keep_larger"===i?b.sizeEnc>=_.sizeEnc?(v.decisionBranch=18,v.decision="conflict_modified_then_keep_local",y.add(N(u))):(v.decisionBranch=19,v.decision="conflict_modified_then_keep_remote",y.add(N(u))):(v.decisionBranch=20,v.decision="conflict_modified_then_keep_both",y.add(N(u)));else if("incremental_pull_only"===o)v.decisionBranch=24,v.decision="conflict_modified_then_keep_remote",y.add(N(u));else{if("incremental_push_only"!==o)throw Error(`no idea how to deal with syncDirection=${o} while conflict modified`);v.decisionBranch=25,v.decision="conflict_modified_then_keep_local",y.add(N(u))}}else v.decisionBranch=2,v.decision="equal",y.add(N(u));else if(void 0===b&&void 0!==_)if(void 0===w)r<=0||_.sizeEnc<=r?"incremental_push_only"===o?(v.decisionBranch=28,v.decision="conflict_created_then_do_nothing",y.add(N(u))):(v.decisionBranch=3,v.decision="remote_is_created_then_pull",y.add(N(u))):(v.decisionBranch=36,v.decision="remote_is_created_too_large_then_do_nothing",y.add(N(u)));else if(w.mtimeSvr!==_.mtimeCli&&w.mtimeSvr!==_.mtimeSvr||w.sizeEnc!==_.sizeEnc){if(!(r<=0||_.sizeEnc<=r))throw Error(`remote is modified (branch 5) but size larger than ${r}, don't know what to do: ${JSON.stringify(v)}`);"incremental_push_only"===o?(v.decisionBranch=30,v.decision="conflict_created_then_do_nothing",y.add(N(u))):(v.decisionBranch=5,v.decision="remote_is_modified_then_pull",y.add(N(u)))}else"incremental_push_only"===o?(v.decisionBranch=29,v.decision="conflict_created_then_do_nothing",y.add(N(u))):"incremental_pull_only"===o?(v.decisionBranch=35,v.decision="conflict_created_then_keep_remote",y.add(N(u))):(v.decisionBranch=4,v.decision="local_is_deleted_thus_also_delete_remote");else{if(void 0===b||void 0!==_)throw Error(`should not reach branch -1 while getting sync plan: ${JSON.stringify(v)}`);if(void 0===w)r<=0||b.sizeEnc<=r?"incremental_pull_only"===o?(v.decisionBranch=31,v.decision="conflict_created_then_do_nothing",y.add(N(u))):(v.decisionBranch=6,v.decision="local_is_created_then_push",y.add(N(u))):(v.decisionBranch=37,v.decision="local_is_created_too_large_then_do_nothing",y.add(N(u)));else if(w.mtimeSvr!==b.mtimeCli&&w.mtimeCli!==b.mtimeCli||w.sizeEnc!==b.sizeEnc){if(!(r<=0||b.sizeEnc<=r))throw Error(`local is modified (branch 8) but size larger than ${r}, don't know what to do: ${JSON.stringify(v)}`);"incremental_pull_only"===o?(v.decisionBranch=34,v.decision="conflict_created_then_do_nothing",y.add(N(u))):(v.decisionBranch=8,v.decision="local_is_modified_then_push",y.add(N(u)))}else"incremental_push_only"===o?(v.decisionBranch=32,v.decision="conflict_created_then_keep_local"):"incremental_pull_only"===o?(v.decisionBranch=33,v.decision="conflict_created_then_do_nothing"):(v.decisionBranch=7,v.decision="remote_is_deleted_thus_also_delete_local")}if(void 0===v.decision)throw Error(`unexpectedly no decision of file in the end: ${JSON.stringify(v)}`)}}if(s.insert("getSyncPlanInplace: finish looping"),y.delete("/"),y.delete(""),y.size>0)throw Error(`unexpectedly keptFolder no decisions: ${[...y]}`);const v=Date.now(),b=U(v),w=W(t);return t["/$@meta"]={key:"/$@meta",sideNotes:{version:"20240508 fs version",generateTime:v,generateTimeFmt:b,service:a.serviceType,hasPassword:""!==a.password,syncConfigDir:a.syncConfigDir,conflictAction:i,syncDirection:o,triggerSource:u,sizeof:w}},s.insert("getSyncPlanInplace: exit"),s.insertSize("sizeof mixedEntityMappings in the end of getSyncPlanInplace",t),s.removeIndent(),t})))(I,null!==(_=d.howToCleanEmptyFolder)&&void 0!==_?_:"clean_both",null!==(x=d.skipSizeLargerThan)&&void 0!==x?x:-1,null!==(D=d.conflictAction)&&void 0!==D?D:"keep_newer",null!==(E=d.syncDirection)&&void 0!==E?E:"bidirectional",i,d,s),console.debug("mixedEntityMappings:"),console.debug(I),i.insert("finish building full sync plan"),yield((t,n,r,i)=>e(void 0,void 0,void 0,(function*(){const e=Date.now(),o={ts:e,tsFmt:U(e),vaultRandomID:r,remoteType:i,syncPlan:JSON.stringify(n,null,2)};yield t.syncPlansTbl.setItem(`${r}\t${e}`,o)})))(o,I,u,d.serviceType),i.insert("finish writing sync plan"),i.insert(`finish step${C} (make plan)`),C=7,"dry"!==s?(yield null==f?void 0:f(s,C),yield null==m?void 0:m(s,C),yield null==g?void 0:g(s,C,S),yield RE(I,t,r,u,a,null!==(M=d.concurrency)&&void 0!==M?M:5,null!==(A=d.protectModifyPercentage)&&void 0!==A?A:50,l,o,i,y),i.insert(`finish step${C} (actual sync)`)):(yield null==f?void 0:f(s,C),yield null==m?void 0:m(s,C),yield null==g?void 0:g(s,C,S),i.insert(`finish step${C} (skip actual sync because of dry run)`))}catch(e){i.insert("start error branch"),S=!1,yield null==p?void 0:p(s,e),i.insert("finish error branch")}i.insert("finish syncRun"),yield i.save(o,u,d.serviceType),C=8,yield null==f?void 0:f(s,C),yield null==m?void 0:m(s,C),yield null==g?void 0:g(s,C,S),console.info("endding sync."),h(!1)}))}const OE={s3:{s3Endpoint:"",s3Region:"",s3AccessKeyID:"",s3SecretAccessKey:"",s3BucketName:"",bypassCorsLocally:!0,partsConcurrency:20,forcePathStyle:!1,remotePrefix:"",useAccurateMTime:!1,reverseProxyNoSignUrl:"",generateFolderObject:!1},webdav:{address:"",username:"",password:"",authType:"basic",manualRecursive:!0,depth:"manual_1",remoteBaseDir:""},dropbox:ee,onedrive:ca,webdis:{address:"",username:"",password:"",remoteBaseDir:""},password:"",serviceType:"s3",currLogLevel:"info",autoRunEveryMilliseconds:-1,initRunAfterMilliseconds:-1,syncOnSaveAfterMilliseconds:-1,agreeToUploadExtraMetadata:!0,concurrency:5,syncConfigDir:!1,syncUnderscoreItems:!1,lang:"auto",logToDB:!1,skipSizeLargerThan:-1,ignorePaths:[],enableStatusBarInfo:!0,deleteToWhere:"system",agreeToUseSyncV3:!1,conflictAction:"keep_newer",howToCleanEmptyFolder:"clean_both",protectModifyPercentage:50,syncDirection:"bidirectional",obfuscateSettingFile:!0,enableMobileStatusBar:!1,encryptionMethod:"unknown",profiler:WD},BE="remotely-save-sync-wait",PE="remotely-save-sync-running",NE="remotely-save-logs";class jE extends l.Plugin{constructor(){super(...arguments),this._syncOnSaveEvent1=()=>{this._checkCurrFileModified("SYNC")},this._syncOnSaveEvent2=aE()((()=>e(this,void 0,void 0,(function*(){yield this._checkCurrFileModified("FILE_CHANGES")}))),3e3,{leading:!1,trailing:!0})}syncRun(){return e(this,arguments,void 0,(function*(t="manual"){var n,r,i,o,s,a,u,c,d;const h=new GD(void 0,null!==(r=null===(n=this.settings.profiler)||void 0===n?void 0:n.enablePrinting)&&void 0!==r&&r,null!==(o=null===(i=this.settings.profiler)||void 0===i?void 0:i.recordSize)&&void 0!==o&&o),f=new EE(this.app.vault,null!==(s=this.settings.syncConfigDir)&&void 0!==s&&s,this.app.vault.configDir,this.manifest.id,h,null!==(a=this.settings.deleteToWhere)&&void 0!==a?a:"system"),p=KD(this.settings,this.app.vault.getName(),(()=>e(this,void 0,void 0,(function*(){return yield this.saveSettings()})))),m=new _E(p,null!==(u=this.settings.password)&&void 0!==u?u:"",null!==(c=this.settings.encryptionMethod)&&void 0!==c?c:"rclone-base64"),g=(e,t)=>this.i18n.t(e,t),y=this.getCurrProfileID(),v=(e,t,n)=>{"manual"!==e&&"dry"!==e||new l.Notice(t,n)};if(this.isSyncing)return v(t,g("syncrun_alreadyrunning",{pluginName:this.manifest.name,syncStatus:"running",newTriggerSource:t})),void(void 0!==this.currSyncMsg&&""!==this.currSyncMsg&&v(t,this.currSyncMsg));yield FE(f,p,m,h,this.db,t,y,this.vaultRandomID,this.app.vault.configDir,this.settings,((e,t,n)=>{const r=(100*t/n).toFixed(1);return g("syncrun_abort_protectmodifypercentage",{protectModifyPercentage:e,realModifyDeleteCount:t,allFilesCount:n,percent:r})}),(t=>e(this,void 0,void 0,(function*(){this.isSyncing=t}))),((t,n)=>e(this,void 0,void 0,(function*(){switch(n){case 0:"dry"===t&&("info"===this.settings.currLogLevel?v(t,g("syncrun_shortstep0")):v(t,g("syncrun_step0")));break;case 1:"info"===this.settings.currLogLevel?v(t,g("syncrun_shortstep1",{serviceType:this.settings.serviceType})):v(t,g("syncrun_step1",{serviceType:this.settings.serviceType}));break;case 2:"info"===this.settings.currLogLevel||v(t,g("syncrun_step2"));break;case 3:"info"===this.settings.currLogLevel||v(t,g("syncrun_step3"));break;case 4:"info"===this.settings.currLogLevel||v(t,g("syncrun_step4"));break;case 5:"info"===this.settings.currLogLevel||v(t,g("syncrun_step5"));break;case 6:"info"===this.settings.currLogLevel||v(t,g("syncrun_step6"));break;case 7:"dry"===t?"info"===this.settings.currLogLevel?v(t,g("syncrun_shortstep2skip")):v(t,g("syncrun_step7skip")):"info"===this.settings.currLogLevel||v(t,g("syncrun_step7"));break;case 8:"info"===this.settings.currLogLevel?v(t,g("syncrun_shortstep2")):v(t,g("syncrun_step8"));break;default:throw Error(`unknown step=${n} for showing notice`)}}))),((t,n)=>e(this,void 0,void 0,(function*(){var e;if(console.error(n),n instanceof xx)for(const e of n.errors)v(t,e.message,1e4);else v(t,null!==(e=null==n?void 0:n.message)&&void 0!==e?e:"error while sync",1e4)}))),((t,n)=>e(this,void 0,void 0,(function*(){if(1===n)void 0!==this.syncRibbon&&((0,l.setIcon)(this.syncRibbon,PE),this.syncRibbon.setAttribute("aria-label",g("syncrun_syncingribbon",{pluginName:this.manifest.name,triggerSource:t})));else if(8===n&&void 0!==this.syncRibbon){(0,l.setIcon)(this.syncRibbon,BE);const e=`${this.manifest.name}`;this.syncRibbon.setAttribute("aria-label",e)}}))),((t,n,r)=>e(this,void 0,void 0,(function*(){if(1===n)this.updateLastSuccessSyncMsg(-1);else if(8===n&&r){const e=Date.now();yield BD(this.db,this.vaultRandomID,e),this.updateLastSuccessSyncMsg(e)}else r||this.updateLastSuccessSyncMsg(-2)}))),((n,r,i,o)=>e(this,void 0,void 0,(function*(){this.setCurrSyncMsg(n,r,i,o,t)})))),m.closeResources(),h.clear(),null===(d=this.syncEvent)||void 0===d||d.trigger("SYNC_DONE")}))}onload(){return e(this,void 0,void 0,(function*(){var t;console.info(`loading plugin ${this.manifest.id}`);const{iconSvgSyncWait:n,iconSvgSyncRunning:r,iconSvgLogs:o}=(()=>{const e=s(u);e.setAttribute("width","100"),e.setAttribute("height","100");const t=s(c);t.setAttribute("width","100"),t.setAttribute("height","100");const n=s(d);n.setAttribute("width","100"),n.setAttribute("height","100");const r={iconSvgSyncWait:e.outerHTML,iconSvgSyncRunning:t.outerHTML,iconSvgLogs:n.outerHTML};return e.empty(),t.empty(),n.empty(),r})();(0,l.addIcon)(BE,n),(0,l.addIcon)(PE,r),(0,l.addIcon)(NE,o),this.oauth2Info={verifier:"",helperModal:void 0,authDiv:void 0,revokeDiv:void 0,revokeAuthSetting:void 0},this.currSyncMsg="",this.isSyncing=!1,this.hasPendingSyncOnSave=!1,this.syncEvent=new l.Events,yield this.loadSettings();const a=this.getCurrProfileID();this.i18n=new _D(this.settings.lang,(t=>e(this,void 0,void 0,(function*(){this.settings.lang=t,yield this.saveSettings()}))));const h=(e,t)=>this.i18n.t(e,t);yield this.checkIfOauthExpires();const y=yield this.getVaultRandomIDFromOldConfigFile();this.tryToAddIgnoreFile();const v=this.getVaultBasePath();try{yield this.prepareDBAndVaultRandomID(v,y,a)}catch(e){throw new l.Notice(null!==(t=null==e?void 0:e.message)&&void 0!==t?t:"error of prepareDBAndVaultRandomID",1e4),e}if(this.enableAutoClearOutputToDBHistIfSet(),this.enableAutoClearSyncPlanHist(),this.registerObsidianProtocolHandler(f,(t=>e(this,void 0,void 0,(function*(){const e=DD(t,this.app.vault.getName());if("error"===e.status)new l.Notice(e.message);else{const t=i()(e.result);this.settings=Object.assign({},this.settings,t),this.saveSettings(),new l.Notice(h("protocol_saveqr",{manifestName:this.manifest.name}))}})))),this.registerObsidianProtocolHandler("remotely-save-cb",(t=>e(this,void 0,void 0,(function*(){new l.Notice(h("protocol_callbacknotsupported",{params:JSON.stringify(t)}))})))),this.registerObsidianProtocolHandler(m,(t=>e(this,void 0,void 0,(function*(){var n,r,i,o,s;if(void 0===t.code||void 0===(null===(n=this.oauth2Info)||void 0===n?void 0:n.verifier))throw new l.Notice(h("protocol_dropbox_connect_fail")),Error(h("protocol_dropbox_connect_unknown",{params:JSON.stringify(t)}));{if(void 0===this.oauth2Info.helperModal)return void new l.Notice(h("protocol_dropbox_no_modal"));{const e=this.oauth2Info.helperModal.contentEl;e.empty(),h("protocol_dropbox_connecting").split("\n").forEach((t=>{e.createEl("p",{text:t})}))}const n=yield ie(this.settings.dropbox.clientID,this.oauth2Info.verifier,t.code,(t=>e(this,void 0,void 0,(function*(){throw new l.Notice(h("protocol_dropbox_connect_fail")),new l.Notice(`${t}`),t})))),a=this;oe(this.settings.dropbox,n,(()=>a.saveSettings()));const u=KD(this.settings,this.app.vault.getName(),(()=>a.saveSettings())),c=yield u.getUserDisplayName();this.settings.dropbox.username=c,yield this.saveSettings(),new l.Notice(h("protocol_dropbox_connect_succ",{username:c})),this.oauth2Info.verifier="",null===(r=this.oauth2Info.helperModal)||void 0===r||r.close(),this.oauth2Info.helperModal=void 0,null===(i=this.oauth2Info.authDiv)||void 0===i||i.toggleClass("dropbox-auth-button-hide",""!==this.settings.dropbox.username),this.oauth2Info.authDiv=void 0,null===(o=this.oauth2Info.revokeAuthSetting)||void 0===o||o.setDesc(h("protocol_dropbox_connect_succ_revoke",{username:this.settings.dropbox.username})),this.oauth2Info.revokeAuthSetting=void 0,null===(s=this.oauth2Info.revokeDiv)||void 0===s||s.toggleClass("dropbox-revoke-auth-button-hide",""===this.settings.dropbox.username),this.oauth2Info.revokeDiv=void 0}})))),this.registerObsidianProtocolHandler(p,(t=>e(this,void 0,void 0,(function*(){var n,r,i,o,s,a,u,c,d,f,p,m,y;if(void 0===t.code||void 0===(null===(n=this.oauth2Info)||void 0===n?void 0:n.verifier))throw new l.Notice(h("protocol_onedrive_connect_fail")),Error(h("protocol_onedrive_connect_unknown",{params:JSON.stringify(t)}));{if(void 0!==this.oauth2Info.helperModal){const e=this.oauth2Info.helperModal.contentEl;e.empty(),h("protocol_onedrive_connecting").split("\n").forEach((t=>{e.createEl("p",{text:t})}))}const n=yield(d=this.settings.onedrive.clientID,f=this.settings.onedrive.authority,p=t.code,m=this.oauth2Info.verifier,y=t=>e(this,void 0,void 0,(function*(){new l.Notice(h("protocol_onedrive_connect_fail")),new l.Notice(`${t}`)})),e(void 0,void 0,void 0,(function*(){try{const e=yield(0,l.request)({url:`${f}/oauth2/v2.0/token`,method:"POST",contentType:"application/x-www-form-urlencoded",body:new URLSearchParams({tenant:"consumers",client_id:d,scope:aa.join(" "),code:p,redirect_uri:ua,grant_type:"authorization_code",code_verifier:m}).toString()}),t=JSON.parse(e);return t.error,t}catch(e){console.error(e),yield y(e)}})));if(void 0!==n.error)throw new l.Notice(`${JSON.stringify(n)}`),Error(`${JSON.stringify(n)}`);const v=this;a=this.settings.onedrive,u=n,c=()=>v.saveSettings(),e(void 0,void 0,void 0,(function*(){console.info("start updating local info of OneDrive token"),a.accessToken=u.access_token,a.accessTokenExpiresAtTime=Date.now()+u.expires_in-3e5,a.accessTokenExpiresInSeconds=u.expires_in,a.refreshToken=u.refresh_token,a.credentialsShouldBeDeletedAtTime=Date.now()+g,void 0!==c&&(yield c()),console.info("finish updating local info of Onedrive token")}));const b=KD(this.settings,this.app.vault.getName(),(()=>v.saveSettings()));this.settings.onedrive.username=yield b.getUserDisplayName(),yield this.saveSettings(),this.oauth2Info.verifier="",null===(r=this.oauth2Info.helperModal)||void 0===r||r.close(),this.oauth2Info.helperModal=void 0,null===(i=this.oauth2Info.authDiv)||void 0===i||i.toggleClass("onedrive-auth-button-hide",""!==this.settings.onedrive.username),this.oauth2Info.authDiv=void 0,null===(o=this.oauth2Info.revokeAuthSetting)||void 0===o||o.setDesc(h("protocol_onedrive_connect_succ_revoke",{username:this.settings.onedrive.username})),this.oauth2Info.revokeAuthSetting=void 0,null===(s=this.oauth2Info.revokeDiv)||void 0===s||s.toggleClass("onedrive-revoke-auth-button-hide",""===this.settings.onedrive.username),this.oauth2Info.revokeDiv=void 0}})))),this.syncRibbon=this.addRibbonIcon(BE,`${this.manifest.name}`,(()=>e(this,void 0,void 0,(function*(){return this.syncRun("manual")})))),this.enableMobileStatusBarIfSet(),(!l.Platform.isMobile||l.Platform.isMobile&&this.settings.enableMobileStatusBar)&&!0===this.settings.enableStatusBarInfo){const t=this.addStatusBarItem();this.statusBarElement=t.createEl("span"),this.statusBarElement.setAttribute("data-tooltip-position","top"),this.updateLastSuccessSyncMsg(yield PD(this.db,this.vaultRandomID)),this.registerInterval(window.setInterval((()=>e(this,void 0,void 0,(function*(){this.updateLastSuccessSyncMsg(yield PD(this.db,this.vaultRandomID))}))),3e4))}if(this.addCommand({id:"start-sync",name:h("command_startsync"),icon:BE,callback:()=>e(this,void 0,void 0,(function*(){this.syncRun("manual")}))}),this.addCommand({id:"start-sync-dry-run",name:h("command_drynrun"),icon:BE,callback:()=>e(this,void 0,void 0,(function*(){this.syncRun("dry")}))}),this.addCommand({id:"export-sync-plans-1",name:h("command_exportsyncplans_1"),icon:NE,callback:()=>e(this,void 0,void 0,(function*(){yield LD(this.db,this.app.vault,this.vaultRandomID,1),new l.Notice(h("settings_syncplans_notice"))}))}),this.addCommand({id:"export-sync-plans-5",name:h("command_exportsyncplans_5"),icon:NE,callback:()=>e(this,void 0,void 0,(function*(){yield LD(this.db,this.app.vault,this.vaultRandomID,5),new l.Notice(h("settings_syncplans_notice"))}))}),this.addCommand({id:"export-sync-plans-all",name:h("command_exportsyncplans_all"),icon:NE,callback:()=>e(this,void 0,void 0,(function*(){yield LD(this.db,this.app.vault,this.vaultRandomID,-1),new l.Notice(h("settings_syncplans_notice"))}))}),this.addSettingTab(new iE(this.app,this)),this.enableCheckingFileStat(),this.settings.agreeToUseSyncV3)this.enableAutoSyncIfSet(),this.enableInitSyncIfSet(),this.toggleSyncOnSaveIfSet();else{new oE(this.app,this).open()}const{oldVersion:b}=yield(w=this.db,_=this.vaultRandomID,x=this.manifest.version,e(void 0,void 0,void 0,(function*(){let e=yield w.simpleKVForMiscTbl.getItem(`${_}-pluginversion`);return null===e&&(e="0.0.0"),yield w.simpleKVForMiscTbl.setItem(`${_}-pluginversion`,x),{oldVersion:e,newVersion:x}})));var w,_,x}))}onunload(){return e(this,void 0,void 0,(function*(){console.info(`unloading plugin ${this.manifest.id}`),this.syncRibbon=void 0,void 0!==this.appContainerObserver&&(this.appContainerObserver.disconnect(),this.appContainerObserver=void 0),void 0!==this.oauth2Info&&(this.oauth2Info.helperModal=void 0,this.oauth2Info={verifier:"",helperModal:void 0,authDiv:void 0,revokeDiv:void 0,revokeAuthSetting:void 0})}))}loadSettings(){return e(this,void 0,void 0,(function*(){this.settings=Object.assign({},i()(OE),V(yield this.loadData())),""===this.settings.dropbox.clientID&&(this.settings.dropbox.clientID=OE.dropbox.clientID),void 0===this.settings.dropbox.remoteBaseDir&&(this.settings.dropbox.remoteBaseDir=""),""===this.settings.onedrive.clientID&&(this.settings.onedrive.clientID=OE.onedrive.clientID),""===this.settings.onedrive.authority&&(this.settings.onedrive.authority=OE.onedrive.authority),void 0===this.settings.onedrive.remoteBaseDir&&(this.settings.onedrive.remoteBaseDir=""),void 0===this.settings.webdav.manualRecursive&&(this.settings.webdav.manualRecursive=!0),void 0!==this.settings.webdav.depth&&"auto"!==this.settings.webdav.depth&&"auto_1"!==this.settings.webdav.depth&&"auto_infinity"!==this.settings.webdav.depth&&"auto_unknown"!==this.settings.webdav.depth||(this.settings.webdav.depth="manual_1",this.settings.webdav.manualRecursive=!0),void 0===this.settings.webdav.remoteBaseDir&&(this.settings.webdav.remoteBaseDir=""),void 0===this.settings.s3.partsConcurrency&&(this.settings.s3.partsConcurrency=20),void 0===this.settings.s3.forcePathStyle&&(this.settings.s3.forcePathStyle=!1),void 0===this.settings.s3.remotePrefix&&(this.settings.s3.remotePrefix=""),void 0===this.settings.s3.useAccurateMTime&&(this.settings.s3.useAccurateMTime=!1),void 0===this.settings.s3.generateFolderObject&&(this.settings.s3.generateFolderObject=!1),void 0===this.settings.ignorePaths&&(this.settings.ignorePaths=[]),void 0===this.settings.enableStatusBarInfo&&(this.settings.enableStatusBarInfo=!0),void 0===this.settings.syncOnSaveAfterMilliseconds&&(this.settings.syncOnSaveAfterMilliseconds=-1),void 0===this.settings.deleteToWhere&&(this.settings.deleteToWhere="system"),this.settings.logToDB=!1,(0,l.requireApiVersion)(v)&&(this.settings.s3.bypassCorsLocally=!0),void 0===this.settings.agreeToUseSyncV3&&(this.settings.agreeToUseSyncV3=!1),void 0===this.settings.conflictAction&&(this.settings.conflictAction="keep_newer"),void 0===this.settings.howToCleanEmptyFolder&&(this.settings.howToCleanEmptyFolder="clean_both"),void 0===this.settings.protectModifyPercentage&&(this.settings.protectModifyPercentage=50),void 0===this.settings.syncDirection&&(this.settings.syncDirection="bidirectional"),void 0===this.settings.obfuscateSettingFile&&(this.settings.obfuscateSettingFile=!0),void 0===this.settings.enableMobileStatusBar&&(this.settings.enableMobileStatusBar=!1),void 0!==this.settings.encryptionMethod&&"unknown"!==this.settings.encryptionMethod||(void 0===this.settings.password||""===this.settings.password?this.settings.encryptionMethod="rclone-base64":this.settings.encryptionMethod="openssl-base64"),void 0===this.settings.profiler&&(this.settings.profiler=WD),void 0===this.settings.profiler.enablePrinting&&(this.settings.profiler.enablePrinting=!1),void 0===this.settings.profiler.recordSize&&(this.settings.profiler.recordSize=!1),yield this.saveSettings()}))}saveSettings(){return e(this,void 0,void 0,(function*(){this.settings.obfuscateSettingFile?yield this.saveData((e=>null==e?(console.debug("the normal config is null or undefined, skip"),e):{readme:"The file contains sensitive info, so DO NOT take screenshot of, copy, or share it to anyone! It's also generated automatically, so do not edit it manually.",d:j(A(G.from(JSON.stringify(e),"utf-8"),{pad:!1}))})(this.settings)):yield this.saveData(this.settings)}))}getCurrProfileID(){if(void 0!==this.settings.serviceType)return`${this.settings.serviceType}-default-1`;throw Error("unknown serviceType in the setting!")}checkIfOauthExpires(){return e(this,void 0,void 0,(function*(){let e=!1;const t=Date.now();""!==this.settings.dropbox.refreshToken&&void 0===this.settings.dropbox.credentialsShouldBeDeletedAtTime&&(this.settings.dropbox.credentialsShouldBeDeletedAtTime=t+2592e6,e=!0),""!==this.settings.onedrive.refreshToken&&void 0===this.settings.onedrive.credentialsShouldBeDeletedAtTime&&(this.settings.onedrive.credentialsShouldBeDeletedAtTime=t+2592e6,e=!0);let n=!1;""!==this.settings.dropbox.refreshToken&&t>=this.settings.dropbox.credentialsShouldBeDeletedAtTime&&(n=!0,this.settings.dropbox=i()(ee),e=!0);let r=!1;""!==this.settings.onedrive.refreshToken&&t>=this.settings.onedrive.credentialsShouldBeDeletedAtTime&&(r=!0,this.settings.onedrive=i()(ca),e=!0),e&&(yield this.saveSettings()),n&&r?new l.Notice(`${this.manifest.name}: You haven't manually auth Dropbox and OneDrive for a while, you need to re-auth them again.`,6e3):n?new l.Notice(`${this.manifest.name}: You haven't manually auth Dropbox for a while, you need to re-auth it again.`,6e3):r&&new l.Notice(`${this.manifest.name}: You haven't manually auth OneDrive for a while, you need to re-auth it again.`,6e3)}))}getVaultRandomIDFromOldConfigFile(){return e(this,void 0,void 0,(function*(){let e="";return void 0!==this.settings.vaultRandomID&&(""!==this.settings.vaultRandomID&&(e=this.settings.vaultRandomID),console.debug("vaultRandomID is no longer saved in data.json"),delete this.settings.vaultRandomID,yield this.saveSettings()),e}))}trash(t){return e(this,void 0,void 0,(function*(){"obsidian"===this.settings.deleteToWhere?yield this.app.vault.adapter.trashLocal(t):(yield this.app.vault.adapter.trashSystem(t))||(yield this.app.vault.adapter.trashLocal(t))}))}getVaultBasePath(){return this.app.vault.adapter instanceof l.FileSystemAdapter?this.app.vault.adapter.getBasePath().split("?")[0]:this.app.vault.adapter.getResourcePath("").split("?")[0]}prepareDBAndVaultRandomID(t,n,r){return e(this,void 0,void 0,(function*(){const{db:e,vaultRandomID:i}=yield TD(t,n,r);this.db=e,this.vaultRandomID=i}))}enableAutoSyncIfSet(){void 0!==this.settings.autoRunEveryMilliseconds&&null!==this.settings.autoRunEveryMilliseconds&&this.settings.autoRunEveryMilliseconds>0&&this.app.workspace.onLayoutReady((()=>{const e=window.setInterval((()=>{this.syncRun("auto")}),this.settings.autoRunEveryMilliseconds);this.autoRunIntervalID=e,this.registerInterval(e)}))}enableInitSyncIfSet(){void 0!==this.settings.initRunAfterMilliseconds&&null!==this.settings.initRunAfterMilliseconds&&this.settings.initRunAfterMilliseconds>0&&this.app.workspace.onLayoutReady((()=>{window.setTimeout((()=>{this.syncRun("auto_once_init")}),this.settings.initRunAfterMilliseconds)}))}_checkCurrFileModified(t){return e(this,void 0,void 0,(function*(){console.debug("inside checkCurrFileModified");const e=this.app.workspace.getActiveFile();if(e){console.debug(`we have currentFile=${e.path}`);const n=e.stat.mtime,r=yield PD(this.db,this.vaultRandomID);if(console.debug(`lastModified=${n}, lastSuccessSyncMillis=${r}`),"SYNC"===t||"FILE_CHANGES"===t&&n>r)return console.debug("so lastModified > lastSuccessSyncMillis or it's called while syncing before"),console.debug(`caller=${t}, isSyncing=${this.isSyncing}, hasPendingSyncOnSave=${this.hasPendingSyncOnSave}`),this.isSyncing?void(this.hasPendingSyncOnSave=!0):void((this.hasPendingSyncOnSave||"FILE_CHANGES"===t)&&(this.hasPendingSyncOnSave=!1,yield this.syncRun("auto_sync_on_save")))}else console.debug("no currentFile here")}))}toggleSyncOnSaveIfSet(){var e;void 0!==this.settings.syncOnSaveAfterMilliseconds&&null!==this.settings.syncOnSaveAfterMilliseconds&&this.settings.syncOnSaveAfterMilliseconds>0?this.app.workspace.onLayoutReady((()=>{var e;this.registerEvent(null===(e=this.syncEvent)||void 0===e?void 0:e.on("SYNC_DONE",this._syncOnSaveEvent1)),this.registerEvent(this.app.vault.on("modify",this._syncOnSaveEvent2)),this.registerEvent(this.app.vault.on("create",this._syncOnSaveEvent2)),this.registerEvent(this.app.vault.on("delete",this._syncOnSaveEvent2))})):(null===(e=this.syncEvent)||void 0===e||e.off("SYNC_DONE",this._syncOnSaveEvent1),this.app.vault.off("modify",this._syncOnSaveEvent2),this.app.vault.off("create",this._syncOnSaveEvent2),this.app.vault.off("delete",this._syncOnSaveEvent2))}enableMobileStatusBarIfSet(){this.app.workspace.onLayoutReady((()=>{l.Platform.isMobile&&this.settings.enableMobileStatusBar&&(this.appContainerObserver=K("enable"))}))}enableCheckingFileStat(){this.app.workspace.onLayoutReady((()=>{const t=(e,t)=>this.i18n.t(e,t);this.registerEvent(this.app.workspace.on("file-menu",((n,r)=>{r instanceof l.TFolder||n.addItem((n=>{n.setTitle(t("menu_check_file_stat")).setIcon("file-cog").onClick((()=>e(this,void 0,void 0,(function*(){var e,t;const n=r.path,i=new EE(this.app.vault,null!==(e=this.settings.syncConfigDir)&&void 0!==e&&e,this.app.vault.configDir,this.manifest.id,void 0,null!==(t=this.settings.deleteToWhere)&&void 0!==t?t:"system"),o=yield i.stat(n);new l.Notice(JSON.stringify(o,null,2),1e4)}))))}))})))}))}saveAgreeToUseNewSyncAlgorithm(){return e(this,void 0,void 0,(function*(){this.settings.agreeToUseSyncV3=!0,yield this.saveSettings()}))}setCurrSyncMsg(e,t,n,r,i){const o=`syncing progress=${e}/${t},decision=${r},path=${n},source=${i}`;this.currSyncMsg=o}updateLastSuccessSyncMsg(e){if(void 0===this.statusBarElement)return;const t=(e,t)=>this.i18n.t(e,t);let n=t("statusbar_lastsync_never"),r=t("statusbar_lastsync_never_label");if(void 0!==e&&-1===e&&(n=t("statusbar_syncing")),void 0!==e&&-2===e&&(n=t("statusbar_failed"),r=t("statusbar_failed")),void 0!==e&&e>0){const i=Date.now()-e,o=Math.floor(i/31556952e3),s=Math.floor(i/2629746e3),a=Math.floor(i/6048e5),u=Math.floor(i/864e5),c=Math.floor(i/36e5),d=Math.floor(i/6e4),l=Math.floor(i/1e3);let h="";h=o>0?t("statusbar_time_years",{time:o}):s>0?t("statusbar_time_months",{time:s}):a>0?t("statusbar_time_weeks",{time:a}):u>0?t("statusbar_time_days",{time:u}):c>0?t("statusbar_time_hours",{time:c}):d>0?t("statusbar_time_minutes",{time:d}):t(l>30?"statusbar_time_lessminute":"statusbar_now");n=h,r=t("statusbar_lastsync_label",{date:new Date(e).toLocaleTimeString(navigator.language,{weekday:"long",year:"numeric",month:"long",day:"numeric"})})}this.statusBarElement.setText(n),this.statusBarElement.setAttribute("aria-label",r)}tryToAddIgnoreFile(){return e(this,void 0,void 0,(function*(){const e=this.manifest.dir||`${this.app.vault.configDir}/plugins/${this.manifest.dir}`;if(!(yield this.app.vault.adapter.exists(e)))return;const t=`${e}/.gitignore`,n=yield this.app.vault.adapter.exists(t);try{n||this.app.vault.adapter.write(t,"data.json\n")}catch(e){}}))}enableAutoClearOutputToDBHistIfSet(){this.app.workspace.onLayoutReady((()=>{window.setTimeout((()=>{var t;t=this.db,e(void 0,void 0,void 0,(function*(){yield t.loggerOutputTbl.clear(),console.debug("successfully clearAllLoggerOutputRecords")}))}),3e4)}))}enableAutoClearSyncPlanHist(){this.app.workspace.onLayoutReady((()=>{window.setTimeout((()=>{RD(this.db)}),45e3);const e=window.setInterval((()=>{RD(this.db)}),3e5);this.registerInterval(e)}))}}})();var i=exports;for(var o in r)i[o]=r[o];r.__esModule&&Object.defineProperty(i,"__esModule",{value:!0})})(); \ No newline at end of file diff --git a/.obsidian/plugins/remotely-save/manifest.json b/.obsidian/plugins/remotely-save/manifest.json new file mode 100644 index 0000000..8ad0406 --- /dev/null +++ b/.obsidian/plugins/remotely-save/manifest.json @@ -0,0 +1,11 @@ +{ + "id": "remotely-save", + "name": "Remotely Save", + "version": "0.4.21", + "minAppVersion": "0.13.21", + "description": "Yet another unofficial plugin allowing users to synchronize notes between local device and the cloud service.", + "author": "fyears", + "authorUrl": "https://github.com/fyears", + "isDesktopOnly": false, + "fundingUrl": "https://github.com/remotely-save/donation" +} diff --git a/.obsidian/plugins/remotely-save/styles.css b/.obsidian/plugins/remotely-save/styles.css new file mode 100644 index 0000000..9d15a6a --- /dev/null +++ b/.obsidian/plugins/remotely-save/styles.css @@ -0,0 +1,87 @@ +/* set the styles */ + +.password-second-confirm { + font-weight: bold; +} + +.password-disclaimer { + font-weight: bold; +} + +.encryptionmethod-second-confirm { + font-weight: bold; +} + +.settings-auth-related { + border-top: 1px solid var(--background-modifier-border); + padding-top: 18px; +} + +.s3-disclaimer { + font-weight: bold; +} +.s3-hide { + display: none; +} + +.dropbox-disclaimer { + font-weight: bold; +} +.dropbox-hide { + display: none; +} + +.dropbox-auth-button-hide { + display: none; +} + +.dropbox-revoke-auth-button-hide { + display: none; +} + +.onedrive-disclaimer { + font-weight: bold; +} +.onedrive-hide { + display: none; +} + +.onedrive-auth-button-hide { + display: none; +} + +.onedrive-revoke-auth-button-hide { + display: none; +} + +.webdav-disclaimer { + font-weight: bold; +} +.webdav-hide { + display: none; +} + +.webdis-disclaimer { + font-weight: bold; +} +.webdis-hide { + display: none; +} + +.qrcode-img { + width: 350px; + height: 350px; +} + +.ignorepaths-textarea { + font-family: monospace; +} + +.logtohttpserver-warning { + color: red; + font-weight: bolder; +} + +.setting-need-wrapping-mobile .setting-item-control { + flex-wrap: wrap; +} diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index f1bc94f..5495514 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -19,6 +19,19 @@ "source": false } } + }, + { + "id": "1c8e2f0f2e175033", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "并发.md", + "mode": "source", + "backlinks": true, + "source": false + } + } } ], "stacked": true @@ -71,7 +84,8 @@ } ], "direction": "horizontal", - "width": 300 + "width": 300, + "collapsed": true }, "right": { "id": "572110f2baf458e8", @@ -160,6 +174,8 @@ }, "left-ribbon": { "hiddenItems": { + "obsidian42-brat:BRAT": false, + "remotely-save:Remotely Save": false, "switcher:Open quick switcher": false, "graph:Open graph view": false, "canvas:Create new canvas": false, @@ -169,9 +185,16 @@ }, "active": "157daa1a9b93f46c", "lastOpenFiles": [ - "sql语句.md", - "代码规范/代码规范.md", "并发.md", + "代码规范/代码规范.md", + "弱引用.md", + "引用类型.md", + "内存泄露.md", + "Pasted image 20240512214620.png", + "补充面试题.md", + "并发编程的其他基础知识.md", + "慢SQL优化.md", + "sql语句.md", "OOP规约.md", "可读性.md", "事务使用.md", @@ -189,14 +212,8 @@ "变量规范.md", "常量规范.md", "常量.md", - "logseq-java/pages/变量.md", "Pasted image 20230403123034.png", "代码规范", - "Java 并发包中并发队列原理剖析.md", - "203-Java/203.1-Java面试/205.15-Redis/Redis.md", - "203-Java/203.1-Java面试/205.15-Redis/Redis设计与实现.md", - "Java 并发包中线程同步器原理剖析.md", - "Java 并发包中并发 List 源码剖析.md", "203-Java/Pasted image 20230613181834.png", "203-Java/203.1-Java面试/205.19-网络&操作系统/Pasted image 20230705222905.png", "203-Java/203.1-Java面试/205.19-网络&操作系统/Pasted image 20230708181100.png", diff --git a/Pasted image 20240512214620.png b/Pasted image 20240512214620.png new file mode 100644 index 0000000..92d7d5b Binary files /dev/null and b/Pasted image 20240512214620.png differ diff --git a/内存泄露.md b/内存泄露.md new file mode 100644 index 0000000..1ef8d1f --- /dev/null +++ b/内存泄露.md @@ -0,0 +1 @@ +不在被使用的对象,但是该对象占用的内存不能被回收 \ No newline at end of file diff --git a/并发.md b/并发.md index 24a8411..9adbfc0 100644 --- a/并发.md +++ b/并发.md @@ -8,4 +8,163 @@ 使用阻塞获取等待锁的方式中,必须在 try 代码块之外,并且在加锁方法与 try 代码块之间没有任何可能抛出异常的方法调用,避免加锁成功后,在 finally 中无法解锁 try 中没有加锁 lock. lock ()就解锁 lock. unlock ()会抛出 IllegalMonitorStateException 异常 try 和加锁之间有代码报错,就不会执行 finally 方法报错释放锁 -分布式锁优先使用 redis 锁,而不是数据库锁 \ No newline at end of file +分布式锁优先使用 redis 锁,而不是数据库锁 + +## 线程池中提交一个任务的流程是怎样的? + +使用 executor() 来提交一个工作线程,submit 会放在一个 Future 里面,返回 future +提交之后就判断当前worker是都达到核心线程数最大值,如果未达到,就创建线程并执行任务 +如果达到了核心线程最大数,就将该任务放入队列中 +如果队列已满,就 addWorker 创建新线程处理任务,如果达到最大线程数,就执行拒绝策略,默认为抛出异常 + +## 线程池中有几种状态?分别是如何变化的? + +ctl 变量,AtomicInteger,表示状态 +RUNNING,会接受新提交的任务 +SHUTDOWN,shutdown ()不再接受新的任务,已有任务会执行完成 +STOP,shutdownNow ()不接受新的任务,已有任务也会中止 + 先修改状态,避免新任务进来 +TYDING,所有线程都终止后,会进入该状态,等待terminated +TERMINATED,terminated ()方法执行后进入该状态 + +## 如何优雅的停止一个线程 + +开启线程,execute (),无需返回值,submit (),需要有返回值,通过 Future. get ()获取 +Thread t1 = new Thread() +t1.stop(), 该方法会直接停止,已经废弃,stop 方法会释放 sync 锁,ReentrantLock 不会释放 +使用 interrupt 方法,Thread. getCurrent. isInterrupted 可以接受到中断的信号,但是线程自己控制是否停止, 睡眠时被中断会抛出InterruptedException + +## 线程池的核心线程数、最大线程数该如何设置? + +CPU 密集型任务,线程计算任务多,核心线程数+1,避免线程切换时间 +IO 密集型任务,CPU 利用率不高,线程等待时间长,核心线程数 x2,避免 CPU 闲置 +线程数=CPU 核心数*(1+等待时间/运行总时间) + +## 如何理解 Java 并发中的可见性? + +多线程修改变量时,一个线程修改了一个变量,然后其他线程可以立刻读取到这个变化的值修改时,如果在缓存就不能被其他线程读取到,使用 volatile 关键字确保读取从内存读取,写入同时写入缓存和内存 + +## 如何理解Java并发中的原子性? + +CPU 按照时间片切换,读取值后被切换,其他线程修改了,但是切换回来不会再去读取该值,而是直接去修改该值,需要通过锁机制来保证原子性 + +## 如何理解 Java 并发中的有序性? + +![[Pasted image 20240512214620.png]] +指令重排序,正常应该先初始化再返回地址 +编译器优化,修改了执行顺序 +通过锁和 volatile 关键字避免 + +## ForkJoinPool所解决的问题是什么 + +RecursiveTask,继承ForkJoinTask +当任务可以拆分的时候,就将任务拆分后分不同的线程处理,最后再将所有的计算结果累加 +可以指定执行的线程数量,默认是机器的线程数量 + +## ThreadPoolExecutor的底层实现原理 + +addWorker 方法会新开线程 +如果已经达到了最大核心线程,就会提交到队列中,有空闲的线程就会执行,队列已满会新开线程,直到最大线程数,超过队列就会拒绝新任务 + +## ForkJoinPool 拆分任务底层实现分析 + +新开一个线程会拆封任务,然后拆分两个线程 join 等待,然后继续拆分任务,直到达到最大线程数据设置 +执行 compute 方法创建一个队列,把任务放进队列中,然后第一个线程取出该任务,将该大任务拆分,放入队列中,任务 1fork,创建一个自己的队列,将任务 1 取出来任务 2fork,任务 1join,任务 2join,之前的线程等待的时候会取帮助其他线程的任务 +JDK 19 的虚拟线程也是基于ForkJoinPool +## ForkJoinPool的底层核心原理源码解析 + +## JDK19中虚拟线程基于ForkJoinPool的相关实现 + +## 如何理解 volatile 关键字 + +volatile 关键字用于避免指令重排序,同时保证共享变量在内存中的可见性,底层是使用内存屏障来实现的 + +## CountDownLatch 和 Semaphore 的区别和底层原理 + +countDownLatch 为控制线程等待,让一个线程等待倒计时结束后执行,通过 countDownLatch. awit 方法阻塞,直到为 0 后继续 +semaphore,让线程通过 acquire 获取许可,获取不到被阻塞,通过 release 方法后返回许可 +cycilcBarrier,当线程达到屏障时,等待一组线程 + +## ReentrantLock中的公平锁和非公平锁的底层实现 + +公平锁,去 AQS 排队获取锁 +非公平锁,竞争锁,没有得到锁就去排队 +这两种锁都是可重入锁,默认为非公平锁 + +## sleep、wait、join、yield + +- 锁池 +竞争锁的线程都会放入锁池中等待锁 + +- 等待池 +调用 wait 方法会放入等待池中, 不会去竞争锁,只有 notify() 随机或 notifyAll () 会将所有线程放入锁池中 + +sleep 是 Thread 的静态方法,wait 是 object 方法 +sleep 不会释放锁,释放 CPU 执行权,会冻结锁,wait 会释放锁,加入到等待队列中 +sleep 不依赖 synchornized,wait 依赖 synchornized +sleep 不需要被唤醒,wait 需要 +sleep 用于线程休眠或轮询暂停操作,wait 用于线程间通信 +sleep 会让出 CPU 执行时间并强制上下文切换,wait 不一定,wait 后可能还是会有机会竞争到锁重新执行 + +yield 执行后线程进入就绪状态,释放了 cpu 执行权,但是保留了执行资格,还是可能下次线程调度继续执行 + +join 执行后线程阻塞,直到其他线程结束或中断线程 + +## Sychronized的偏向锁、轻量级锁、重量级锁 + +首先是无锁,然后当有线程获取锁的时候,会在对象头中记录下线程的 id,后面该线程来获取该锁的时候会直接获取锁,当有线程竞争之后,该锁升级成为轻量级锁,轻量级锁为自旋锁,自旋锁通过 CAS 获取预期的一个标记不会阻塞线程,当自旋过多时升级为重量级锁,重量级锁会阻塞线程 +全局安全点执行清理任务的时候会尝试触发降级锁 + +## ThreadLocal 的底层原理 + +ThreadLocal 可以将数据缓存在一个线程内,每一个 Thread 对象都有一个 ThreadLocalMap,这个 Map 里面 key 为对应的 ThreadLocal,值为设置的缓存值,读取的时候以该 ThreadLocal 为引用,在自己的 map 里找对应的 key, + +## ThreadLocal的原理的使用场景 + +数据库连接池,session 会话管理 +连接管理,一个线程持有一个连接,该连接对象不在线程间共享 +对象跨层传输时,避免多次传递 +线程间数据隔离 +事务操作时,存储线程事务信息 + +## ThreadLocal[[内存泄露]]问题,如何避免 + +线程和 ThreadLocalMap 是强引用,Map 和 ThreadLocal 的 Entity 也是强引用,Entry 的 key 是 ThreadLocal 对象,是一个[[弱引用]],没有指向 key 的强引用该 ThreadLocal 就会被垃圾回收器回收,使用完成之后线程没有回收,但是 Entry 中的 value 是强引用不会被回收,只有线程结束才会回收,value 对象过多的时候就会导致内存泄漏,但是只要调用 get 或 set 方法就可以清理掉需要使用之后手动调用 remove 方法来清除该值 + +## 阿里一面:如何查看线程死锁 + +## 阿里一面:线程之间如何进行通讯的 + +## 并发、并行、串行 + +## 并发篇1 + +## 并发篇2-1 + +## 并发篇2-2 + +## 并发篇3 + +## 并发4 + +## 并发5 + +## 并发三大特性 + +## 对线程安全的理解 + +## 京东一面:Java死锁如何避免 + +## 京东一面:如果你提交任务时,线程池队列已满,这时会发生什么 + +## 蚂蚁一面:sychronized的自旋锁、偏向锁、轻量级锁、重量级锁,分别介绍和联系 + +## 说说你对守护线程的理解 + +## 为什么使用线程池,参数解释 + +## 线程的生命周期及状态 + +## 线程池线程复用的原理 + +## 线程池的底层工作原理 \ No newline at end of file diff --git a/弱引用.md b/弱引用.md index e69de29..1a62022 100644 --- a/弱引用.md +++ b/弱引用.md @@ -0,0 +1 @@ +一般用于缓存类的数据 \ No newline at end of file diff --git a/慢SQL优化.md b/慢SQL优化.md new file mode 100644 index 0000000..00f8351 --- /dev/null +++ b/慢SQL优化.md @@ -0,0 +1,160 @@ +## 优化方式 +数据量 +- SQL 执行后返回给客户端的数据量的大小 +- 数据量越大需要扫描的 I/O 次数越多,数据库服务器的 IO 瓶颈 +取数据的方式 +- 数据在缓存还是磁盘 +- 能否通过全局索引快速寻址 +- 是否结合谓词条件命中全局索引加速扫描 +数据加工的方式 +- 排序、子查询、聚合、关联等需要将数据取到临时表中,再对数据加工 +- 对于数据量多的计算,会消耗大量 CPU 资源 +- 是否选择了合适的 join 方式 +## 优化思路 +减少数据扫描(磁盘访问) +- 尽量在查询中加入一些可以提前过滤数据的位于条件,减少数据扫描量,对查询更加友好 +- 扫描大表数据时是否可以命中索引,减少回表,避免全表扫描 +返回更少数据(减少网络传输或磁盘访问) +减少交互次数(减少网络传输) +- 将数据存放在更快的地方 +- 某条查询涉及大表,无法进一步优化,如果返回数据量不大但访问频率很高,可以将返回的数据放在应用端缓存或 redis 缓存中,提高存取速度 +减少服务器开销(CPU 和内存) +避免大事务 +利用更多资源 +## 优化案例 +- 数据分页优化 +```sql +select * from table_name where type = ? limit ?,?; +``` +偏移 id +```sql +lastId = 0 or min(id) +do { +select * from table_name where type = ? and id > {#lastId} limit ?; +lastId = max(id) +} while (isNotEmpty) +``` +分段查询 +优点:可并行查询,分段互不依赖 +缺点:依赖连续性,数据过于分散代价较高 +```sql +minId = min(id) maxId = max(id) +for(int i = minId; i <= maxId; i+=pageSize){ +select * from table_name where type = ? and id between i and i+ pageSize; +} +``` +- 优化 groupBy +将不需要的数据在 groupBy 之前过滤掉 +```sql +select job, avg(sal) from table_name group by job having job = 'manager' +``` + +```sql +select job, avg(sal) from table_name where job = 'manager' group by job +``` +- 范围查询 +联合索引中如果某个列存在范围查询(大于小于),其右边的列是否还有意义 +设计时需要结合业务需求 +- 优化 order by +索引 +```sql +KEY `idx_account_trade_date_time` (`account_number`,`trade_date_time`) +KEY `idx_trade_date_time` (`trade_date_time`) +KEY `idx_create_time` (`create_time`) +``` +慢 SQL +```sql +select id,,,creator,modifier,create_time,update_time from satatement where (account_number = 'XXX' and create_time > '2024-04-24 00:00:00' and create_time < '2024-04-25 00:00:00' and dc_flag = 'C') order by trade_date_time desc, id desc limit 0,1000; +``` + +```sql +select id,,,creator,modifier,create_time,update_time from satatement where (account_number = 'XXX' and create_time > '2024-04-24 00:00:00' and create_time < '2024-04-25 00:00:00' and dc_flag = 'C') order by create_time desc, id desc limit 0,1000; +``` +MySQL 使不使用索引与所查列无关,只与索引本身,where 条件,order by group by 字段有关,索引的作用为查找和排序 +- 业务拆分 +```sql +select * from order where status = 'S' and update_time < now-5min limit 500 +``` +业务数据增长,status 无法走索引,结合业务特性,对数据获取按日期拆分 +```sql +date = now; minDate = now - 10 day +while(date > minDate) { +select * from order where order_date = #{date} and status = 'S' and update_time < now-5min limit 500 +date = date + 1 +} +``` +## 数据库结构优化 +- 范式优化:表的设计合理化(3 NF),消除冗余(节省空间) +- 反范式优化:适当添加冗余(减少 join) +- 拆分表:分区将数据在物理上分隔开,不同分区数据表存储于不同磁盘中,查询时只需到表分区中扫描,无需全表扫描,同时分散了磁盘 IO +## SQL 语句优化 +1. 避免子查询 +2. 用 in 替换 or +3. 读取适当的记录 limit M,N,不要读取多余的记录 +4. 禁止不必要的 order by 排序 +5. 总和查询禁止排重用 union all +6. 避免随机取数据 +7. 将多次插入换成批量插入 +8. 只返回必要的列,select 具体字段 +9. 区分 in 和 exist +10. 优化 group by +11. 尽量使用数字型字段 +12. 优化 join 语句 +## 大表优化 +- 分库分表 +- 读写分离 +- 数据定期归档 +## 索引的优缺点 +优点 +- 提高查询语句执行效率,减少 IO 操作次数 +- 创建唯一性索引,保证数据库中每一行数据的唯一性 +- 加索引的列会进行排序,使用分组和排序子句可以减少时间 +缺点 +- 索引需要占用一定空间 +- 创建索引和维护索引需要时间 +- 对表中数据进行修改时,索引也要动态维护,降低了更新效率 +## 索引结构 +## 数据行格式 +MySQL 有 4 种存储格式: +1. Compact +2. Redundant(5.0 版本前,已废弃) +3. Dynamic(MySQL 5.7 默认格式) +4. Compressed +Dynamic 下,对于处理行溢出,仅存放溢出页内存地址 +## 索引设计原则 +哪些情况适合建索引 +- 数据有唯一性限制 +- 频繁 where 条件 +- 进场 group by 和 order by 字段,都有时建议联合索引 +- 经常 distinct 字段 +- 多表连接时的字段 + - 数量最好不要超过 3 张 + - 多表查询时 where 条件建索引 + - 对连接字段建索引,且数据类型保持一致 +- 确定数据范围情况下使用数据类型较小的字段,索引也会占空间 +- 字符串建索引使用前缀 + - 节省空间 + - 可定位到相同前缀,然后通过主键查询完整字符串 +- 区分度高的字段(散列性高)的字段 +- 多个字段需要建索引,联合索引优于单值索引 +不需要索引 +- where 条件中用不到 +- 数据量小,小于 1000 条 +- 大量重复数据的列 +- 避免在经常更新的表或字段 +- 不建议主键使用无序的值 +- 不定义冗余或重复索引 + - 已有联合索引不要单独再建单索引 +## 索引优化之 MRR +## 索引下推 +idx (name, age) +```sql +select * from tuser where name like '张%' and age=10; +``` +直接在联合索引里面过滤过滤两次完后在回表 +条件 +- 只能用于 range、ref、eq_ref、ref_or_null 访问方法 +- 只使用 InnoDB 和 MyISAM +- 对存储引擎来说,只适用于二级索引(辅助索引) +- 引用了子查询的条件不能下推 +- 引用了存储函数的条件不能下推,存储引擎无法调用存储函数 \ No newline at end of file