diff --git a/.obsidian/appearance.json b/.obsidian/appearance.json index acd3c3c3..65af9530 100644 --- a/.obsidian/appearance.json +++ b/.obsidian/appearance.json @@ -13,7 +13,8 @@ "bulletp_relationship", "hyphenation_justification", "externallink_icon", - "folder_4_icon" + "folder_4_icon", + "custom_icons_frontmatter_tags" ], - "cssTheme": "California Coast" + "cssTheme": "Primary" } \ No newline at end of file diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json index c2769bd0..4e2e4678 100644 --- a/.obsidian/community-plugins.json +++ b/.obsidian/community-plugins.json @@ -31,5 +31,9 @@ "obsidian-crypto-lookup", "obsidian-footnotes", "obsidian-advanced-uri", - "mrj-text-expand" + "mrj-text-expand", + "fantasy-calendar", + "obsidian-icon-shortcodes", + "cooklang-obsidian", + "obsidian-dialogue-plugin" ] \ No newline at end of file diff --git a/.obsidian/plugins/cooklang-obsidian/main.js b/.obsidian/plugins/cooklang-obsidian/main.js new file mode 100644 index 00000000..c98bbb7f --- /dev/null +++ b/.obsidian/plugins/cooklang-obsidian/main.js @@ -0,0 +1,745 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ROLLUP +if you want to view the source visit the plugin's github repository +*/ + +'use strict'; + +var obsidian = require('obsidian'); + +/*! ***************************************************************************** +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. +***************************************************************************** */ + +function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +var codemirror = CodeMirror; + +function createCommonjsModule(fn) { + var module = { exports: {} }; + return fn(module, module.exports), module.exports; +} + +createCommonjsModule(function (module, exports) { +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: https://codemirror.net/LICENSE + +(function(mod) { + mod(codemirror); +})(function(CodeMirror) { + +CodeMirror.defineMode("cook", function() { + return { + token: function(stream, state) { + var sol = stream.sol() || state.afterSection; + var eol = stream.eol(); + + state.afterSection = false; + + if (sol) { + if (state.nextMultiline) { + state.inMultiline = true; + state.nextMultiline = false; + } else { + state.position = null; + } + } + + if (eol && ! state.nextMultiline) { + state.inMultiline = false; + state.position = null; + } + + if (sol) { + while(stream.eatSpace()) {} + } + + var ch = stream.next(); + + + if (sol && ch === ">") { + if (stream.eat(">")) { + state.position = "metadata-key"; + return "metadata" + } + } + if(state.position === "metadata"); + else if(state.position === "metadata-key") { + if(ch === ':') state.position = "metadata"; + } + else { + if (ch === "-") { + if (stream.eat("-")) { + stream.skipToEnd(); + return "comment"; + } + } + + if (stream.match(/\[-.+?-\]/)) + return "comment"; + + if(stream.match(/^@([^@#~]+?(?={))/)) + return "ingredient"; + else if(stream.match(/^@(.+?\b)/)) + return "ingredient"; + + if(stream.match(/^#([^@#~]+?(?={))/)) + return "cookware"; + else if(stream.match(/^#(.+?\b)/)) + return "cookware"; + + if(ch === '~'){ + state.position = "timer"; + return "formatting"; + } + if(ch === '{'){ + if(state.position != "timer") state.position = "measurement"; + return "formatting"; + } + if(ch === '}'){ + state.position = null; + return "formatting"; + } + if(ch === '%' && (state.position === "measurement" || state.position === "timer")){ + state.position = "unit"; + return "formatting"; + } + } + + return state.position; + }, + + startState: function() { + return { + formatting : false, + nextMultiline : false, // Is the next line multiline value + inMultiline : false, // Is the current line a multiline value + afterSection : false // Did we just open a section + }; + } + + }; +}); + +CodeMirror.defineMIME("text/x-cook", "cook"); +CodeMirror.defineMIME("text/x-cooklang", "cook"); + +}); +}); + +// utility class for parsing cooklang files +class CookLang { + static parse(source) { + const recipe = new Recipe(); + source.split('\n').forEach(line => { + let match; + // clear comments + line = line.replace(/(--.*)|(\[-.+?-\])/, ''); + // skip blank lines + if (line.trim().length === 0) + return; + // metadata lines + else if (match = Metadata.regex.exec(line)) { + recipe.metadata.push(new Metadata(match[0])); + } + // method lines + else { + // ingredients on a line + while (match = Ingredient.regex.exec(line)) { + const ingredient = new Ingredient(match[0]); + recipe.ingredients.push(ingredient); + line = line.replace(match[0], ingredient.methodOutput()); + } + // cookware on a line + while (match = Cookware.regex.exec(line)) { + const c = new Cookware(match[0]); + recipe.cookware.push(c); + line = line.replace(match[0], c.methodOutput()); + } + // timers on a line + while (match = Timer.regex.exec(line)) { + const t = new Timer(match[0]); + recipe.timers.push(t); + line = line.replace(match[0], t.methodOutput()); + } + // add in the method line + recipe.method.push(line.trim()); + } + }); + return recipe; + } +} +// a class representing a recipe +class Recipe { + constructor() { + this.metadata = []; + this.ingredients = []; + this.cookware = []; + this.timers = []; + this.method = []; + this.methodImages = new Map(); + } + calculateTotalTime() { + let time = 0; + this.timers.forEach(timer => { + let amount = 0; + if (parseFloat(timer.amount) + '' == timer.amount) + amount = parseFloat(timer.amount); + else if (timer.amount.contains('/')) { + const split = timer.amount.split('/'); + if (split.length == 2) { + const num = parseFloat(split[0]); + const den = parseFloat(split[1]); + if (num && den) { + amount = num / den; + } + } + } + if (amount > 0) { + if (timer.unit.toLowerCase().startsWith('s')) { + time += amount; + } + else if (timer.unit.toLowerCase().startsWith('m')) { + time += amount * 60; + } + else if (timer.unit.toLowerCase().startsWith('h')) { + time += amount * 60 * 60; + } + } + }); + return time; + } +} +// a class representing an ingredient +class Ingredient { + constructor(s) { + var _a; + this.originalString = null; + this.name = null; + this.amount = null; + this.unit = null; + this.methodOutput = () => { + let s = ``; + if (this.amount !== null) { + s += `${this.amount} `; + } + if (this.unit !== null) { + s += `${this.unit} `; + } + s += `${this.name}`; + return s; + }; + this.listOutput = () => { + let s = ``; + if (this.amount !== null) { + s += `${this.amount} `; + } + if (this.unit !== null) { + s += `${this.unit} `; + } + s += this.name; + return s; + }; + this.originalString = s; + const match = Ingredient.regex.exec(s); + this.name = match[1] || match[3]; + const attrs = (_a = match[2]) === null || _a === void 0 ? void 0 : _a.split('%'); + this.amount = attrs && attrs.length > 0 ? attrs[0] : null; + this.unit = attrs && attrs.length > 1 ? attrs[1] : null; + } +} +// starts with an @, ends at a word boundary or {} +// (also capture what's inside the {}) +Ingredient.regex = /@(?:([^@#~]+?)(?:{(.*?)}|{}))|@(.+?\b)/; +// a class representing an item of cookware +class Cookware { + constructor(s) { + this.originalString = null; + this.name = null; + this.methodOutput = () => { + return `${this.name}`; + }; + this.listOutput = () => { + return this.name; + }; + this.originalString = s; + const match = Cookware.regex.exec(s); + this.name = match[1] || match[2]; + } +} +// starts with a #, ends at a word boundary or {} +Cookware.regex = /#(?:([^@#~]+?)(?:{}))|#(.+?\b)/; +// a class representing a timer +class Timer { + constructor(s) { + this.originalString = null; + this.amount = null; + this.unit = null; + this.methodOutput = () => { + return `${this.amount} ${this.unit}`; + }; + this.listOutput = () => { + return `${this.amount} ${this.unit}`; + }; + const match = Timer.regex.exec(s); + this.amount = match[1]; + this.unit = match[2]; + } +} +// contained within ~{} +Timer.regex = /~{([0-9]+)%(.+?)}/; +// a class representing metadata item +class Metadata { + constructor(s) { + this.originalString = null; + this.key = null; + this.value = null; + this.methodOutput = () => { + return `${this.key} ${this.value}`; + }; + this.listOutput = () => { + return `${this.key} ${this.value}`; + }; + const match = Metadata.regex.exec(s); + this.key = match[1].trim(); + this.value = match[2].trim(); + } +} +// starts with >> +Metadata.regex = />>\s*(.*?):\s*(.*)/; + +// This is the custom view +class CookView extends obsidian.TextFileView { + constructor(leaf, settings) { + super(leaf); + this.settings = settings; + // Add Preview Mode Container + this.previewEl = this.contentEl.createDiv({ cls: 'cook-preview-view', attr: { 'style': 'display: none' } }); + // Add Source Mode Container + this.sourceEl = this.contentEl.createDiv({ cls: 'cook-source-view', attr: { 'style': 'display: block' } }); + // Add container for CodeMirror editor + this.editorEl = this.sourceEl.createEl('textarea', { cls: 'cook-cm-editor' }); + // Create CodeMirror Editor with specific config + this.editor = CodeMirror.fromTextArea(this.editorEl, { + lineNumbers: false, + lineWrapping: true, + scrollbarStyle: null, + keyMap: "default", + theme: "obsidian" + }); + } + onload() { + // Save file on change + this.editor.on('change', () => { + this.requestSave(); + }); + // add the action to switch between source and preview mode + this.changeModeButton = this.addAction('lines-of-text', 'Preview (Ctrl+Click to open in new pane)', (evt) => this.switchMode(evt), 17); + // undocumented: Get the current default view mode to switch to + let defaultViewMode = this.app.vault.getConfig('defaultViewMode'); + this.setState(Object.assign(Object.assign({}, this.getState()), { mode: defaultViewMode }), {}); + } + getState() { + return super.getState(); + } + setState(state, result) { + return super.setState(state, result).then(() => { + if (state.mode) + this.switchMode(state.mode); + }); + } + // function to switch between source and preview mode + switchMode(arg) { + let mode = arg; + // if force mode not provided, switch to opposite of current mode + if (!mode || mode instanceof MouseEvent) + mode = this.currentView === 'source' ? 'preview' : 'source'; + if (arg instanceof MouseEvent) { + if (obsidian.Keymap.isModEvent(arg)) { + this.app.workspace.duplicateLeaf(this.leaf).then(() => { + var _a; + const cookLeaf = (_a = this.app.workspace.activeLeaf) === null || _a === void 0 ? void 0 : _a.view; + if (cookLeaf) { + cookLeaf.setState(Object.assign(Object.assign({}, cookLeaf.getState()), { mode: mode }), {}); + } + }); + } + else { + this.setState(Object.assign(Object.assign({}, this.getState()), { mode: mode }), {}); + } + } + else { + // switch to preview mode + if (mode === 'preview') { + this.currentView = 'preview'; + obsidian.setIcon(this.changeModeButton, 'pencil'); + this.changeModeButton.setAttribute('aria-label', 'Edit (Ctrl+Click to edit in new pane)'); + this.renderPreview(this.recipe); + this.previewEl.style.setProperty('display', 'block'); + this.sourceEl.style.setProperty('display', 'none'); + } + // switch to source mode + else { + this.currentView = 'source'; + obsidian.setIcon(this.changeModeButton, 'lines-of-text'); + this.changeModeButton.setAttribute('aria-label', 'Preview (Ctrl+Click to open in new pane)'); + this.previewEl.style.setProperty('display', 'none'); + this.sourceEl.style.setProperty('display', 'block'); + this.editor.refresh(); + } + } + } + // get the data for save + getViewData() { + this.data = this.editor.getValue(); + // may as well parse the recipe while we're here. + this.recipe = CookLang.parse(this.data); + return this.data; + } + // load the data into the view + setViewData(data, clear) { + return __awaiter(this, void 0, void 0, function* () { + this.data = data; + if (clear) { + this.editor.swapDoc(CodeMirror.Doc(data, "text/x-cook")); + this.editor.clearHistory(); + } + this.editor.setValue(data); + this.recipe = CookLang.parse(data); + // if we're in preview view, also render that + if (this.currentView === 'preview') + this.renderPreview(this.recipe); + }); + } + // clear the editor, etc + clear() { + this.previewEl.empty(); + this.editor.setValue(''); + this.editor.clearHistory(); + this.recipe = new Recipe(); + this.data = null; + } + getDisplayText() { + if (this.file) + return this.file.basename; + else + return "Cooklang (no file)"; + } + canAcceptExtension(extension) { + return extension == 'cook'; + } + getViewType() { + return "cook"; + } + // when the view is resized, refresh CodeMirror (thanks Licat!) + onResize() { + this.editor.refresh(); + } + // icon for the view + getIcon() { + return "document-cook"; + } + // render the preview view + renderPreview(recipe) { + // clear the preview before adding the rest + this.previewEl.empty(); + // we can't render what we don't have... + if (!recipe) + return; + if (this.settings.showImages) { + // add any files following the cooklang conventions to the recipe object + // https://cooklang.org/docs/spec/#adding-pictures + const otherFiles = this.file.parent.children.filter(f => (f instanceof obsidian.TFile) && (f.basename == this.file.basename || f.basename.startsWith(this.file.basename + '.')) && f.name != this.file.name); + otherFiles.forEach(f => { + // convention specifies JPEGs and PNGs. Added GIFs as well. Why not? + if (f.extension == "jpg" || f.extension == "jpeg" || f.extension == "png" || f.extension == "gif") { + // main recipe image + if (f.basename == this.file.basename) + recipe.image = f; + else { + const split = f.basename.split('.'); + // individual step images + if (split.length == 2 && parseInt(split[1])) { + recipe.methodImages.set(parseInt(split[1]), f); + } + } + } + }); + // if there is a main image, put it as a banner image at the top + if (recipe.image) { + const img = this.previewEl.createEl('img', { cls: 'main-image' }); + img.src = this.app.vault.getResourcePath(recipe.image); + } + } + if (this.settings.showIngredientList) { + // Add the Ingredients header + this.previewEl.createEl('h2', { cls: 'ingredients-header', text: 'Ingredients' }); + // Add the ingredients list + const ul = this.previewEl.createEl('ul', { cls: 'ingredients' }); + recipe.ingredients.forEach(ingredient => { + const li = ul.createEl('li'); + if (ingredient.amount !== null) { + li.createEl('span', { cls: 'amount', text: ingredient.amount }); + li.appendText(' '); + } + if (ingredient.unit !== null) { + li.createEl('span', { cls: 'unit', text: ingredient.unit }); + li.appendText(' '); + } + li.appendText(ingredient.name); + }); + } + if (this.settings.showCookwareList) { + // Add the Cookware header + this.previewEl.createEl('h2', { cls: 'cookware-header', text: 'Cookware' }); + // Add the Cookware list + const ul = this.previewEl.createEl('ul', { cls: 'cookware' }); + recipe.cookware.forEach(item => { + ul.createEl('li', { text: item.name }); + }); + } + if (this.settings.showTotalTime) { + let time = recipe.calculateTotalTime(); + if (time > 0) { + // Add the Timers header + this.previewEl.createEl('h2', { cls: 'time-header', text: 'Total Time' }); + this.previewEl.createEl('p', { cls: 'time', text: this.formatTime(time) }); + } + } + // add the method header + this.previewEl.createEl('h2', { cls: 'method-header', text: 'Method' }); + // add the method list + const mol = this.previewEl.createEl('ol', { cls: 'method' }); + let i = 1; + recipe.method.forEach(line => { + var _a, _b; + const mli = mol.createEl('li'); + mli.innerHTML = line; + if (!this.settings.showQuantitiesInline) { + (_a = mli.querySelectorAll('.amount')) === null || _a === void 0 ? void 0 : _a.forEach(el => el.remove()); + (_b = mli.querySelectorAll('.unit')) === null || _b === void 0 ? void 0 : _b.forEach(el => el.remove()); + } + if (this.settings.showImages && recipe.methodImages.has(i)) { + const img = mli.createEl('img', { cls: 'method-image' }); + img.src = this.app.vault.getResourcePath(recipe.methodImages.get(i)); + } + i++; + }); + } + formatTime(time) { + let minutes = Math.floor(time / 60); + let hours = Math.floor(minutes / 60); + minutes = minutes % 60; + let result = ""; + if (hours > 0) + result += hours + " hours "; + if (minutes > 0) + result += minutes + " minutes "; + return result; + } +} + +class CookLangSettings { + constructor() { + this.showImages = true; + this.showIngredientList = true; + this.showCookwareList = true; + this.showTotalTime = true; + this.showQuantitiesInline = false; + } +} +class CookSettingsTab extends obsidian.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.plugin = plugin; + } + display() { + let { containerEl } = this; + containerEl.empty(); + new obsidian.Setting(containerEl) + .setName('Preview Options') + .setHeading(); + new obsidian.Setting(containerEl) + .setName('Show images') + .setDesc('Show images in the recipe (see https://cooklang.org/docs/spec/#adding-pictures)') + .addToggle(toggle => toggle + .setValue(this.plugin.settings.showImages) + .onChange((value) => { + this.plugin.settings.showImages = value; + this.plugin.saveData(this.plugin.settings); + this.plugin.reloadCookViews(); + })); + new obsidian.Setting(containerEl) + .setName('Show ingredient list') + .setDesc('Show the list of ingredients at the top of the recipe') + .addToggle(toggle => toggle + .setValue(this.plugin.settings.showIngredientList) + .onChange((value) => { + this.plugin.settings.showIngredientList = value; + this.plugin.saveData(this.plugin.settings); + this.plugin.reloadCookViews(); + })); + new obsidian.Setting(containerEl) + .setName('Show cookware list') + .setDesc('Show the list of cookware at the top of the recipe') + .addToggle(toggle => toggle + .setValue(this.plugin.settings.showCookwareList) + .onChange((value) => { + this.plugin.settings.showCookwareList = value; + this.plugin.saveData(this.plugin.settings); + this.plugin.reloadCookViews(); + })); + new obsidian.Setting(containerEl) + .setName('Show total time') + .setDesc('Show the total of all timers at the top of the recipe') + .addToggle(toggle => toggle + .setValue(this.plugin.settings.showTotalTime) + .onChange((value) => { + this.plugin.settings.showTotalTime = value; + this.plugin.saveData(this.plugin.settings); + this.plugin.reloadCookViews(); + })); + new obsidian.Setting(containerEl) + .setName('Show quantities inline') + .setDesc('Show the ingredient quantities inline in the recipe method') + .addToggle(toggle => toggle + .setValue(this.plugin.settings.showQuantitiesInline) + .onChange((value) => { + this.plugin.settings.showQuantitiesInline = value; + this.plugin.saveData(this.plugin.settings); + this.plugin.reloadCookViews(); + })); + } +} + +class CookPlugin extends obsidian.Plugin { + constructor() { + super(...arguments); + this.cookFileCreator = () => __awaiter(this, void 0, void 0, function* () { + var _a, _b; + let newFileFolderPath = null; + const newFileLocation = this.app.vault.getConfig('newFileLocation'); + if (!newFileLocation || newFileLocation === "root") { + newFileFolderPath = '/'; + } + else if (newFileLocation === "current") { + newFileFolderPath = (_b = (_a = this.app.workspace.getActiveFile()) === null || _a === void 0 ? void 0 : _a.parent) === null || _b === void 0 ? void 0 : _b.path; + } + else { + newFileFolderPath = this.app.vault.getConfig('newFileFolderPath'); + } + if (!newFileFolderPath) + newFileFolderPath = '/'; + else if (!newFileFolderPath.endsWith('/')) + newFileFolderPath += '/'; + const originalPath = newFileFolderPath; + newFileFolderPath = newFileFolderPath + 'Untitled.cook'; + let i = 0; + while (this.app.vault.getAbstractFileByPath(newFileFolderPath)) { + newFileFolderPath = `${originalPath}Untitled ${++i}.cook`; + } + const newFile = yield this.app.vault.create(newFileFolderPath, ''); + return newFile; + }); + // function to create the view + this.cookViewCreator = (leaf) => { + return new CookView(leaf, this.settings); + }; + // this function provides the icon for the document + // I added a modification of the CookLang icon with no colours or shadows + this.addDocumentIcon = (extension) => { + obsidian.addIcon(`document-${extension}`, ` + + + + + + + `); + }; + } + onload() { + const _super = Object.create(null, { + onload: { get: () => super.onload } + }); + return __awaiter(this, void 0, void 0, function* () { + _super.onload.call(this); + this.settings = Object.assign(new CookLangSettings(), yield this.loadData()); + // register a custom icon + this.addDocumentIcon("cook"); + // register the view and extensions + this.registerView("cook", this.cookViewCreator); + this.registerExtensions(["cook"], "cook"); + this.addSettingTab(new CookSettingsTab(this.app, this)); + // commands: + // - Create new recipe + // - Create recipe in new pane + // - Convert markdown file to `.cook` + this.addCommand({ + id: "create-cook", + name: "Create new recipe", + callback: () => __awaiter(this, void 0, void 0, function* () { + const newFile = yield this.cookFileCreator(); + this.app.workspace.getLeaf().openFile(newFile); + }) + }); + this.addCommand({ + id: "create-cook-new-pane", + name: "Create recipe in new pane", + callback: () => __awaiter(this, void 0, void 0, function* () { + const newFile = yield this.cookFileCreator(); + yield this.app.workspace.getLeaf(true).openFile(newFile); + }) + }); + // register the convert to cook command + this.addCommand({ + id: "convert-to-cook", + name: "Convert markdown file to `.cook`", + checkCallback: (checking) => { + const file = this.app.workspace.getActiveFile(); + const isMd = file.extension === "md"; + if (checking) { + return isMd; + } + else if (isMd) { + // replace last instance of .md with .cook + this.app.vault.rename(file, file.path.replace(/\.md$/, ".cook")).then(() => { + this.app.workspace.activeLeaf.openFile(file); + }); + } + } + }); + }); + } + reloadCookViews() { + this.app.workspace.getLeavesOfType('cook').forEach(leaf => { + if (leaf.view instanceof CookView) { + leaf.view.settings = this.settings; + if (leaf.view.recipe) + leaf.view.renderPreview(leaf.view.recipe); + } + }); + } +} + +module.exports = CookPlugin; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9saWIvY29kZW1pcnJvci5qcyIsInNyYy9tb2RlL2Nvb2svY29vay5qcyIsInNyYy9jb29rbGFuZy50cyIsInNyYy9jb29rVmlldy50cyIsInNyYy9zZXR0aW5ncy50cyIsInNyYy9tYWluLnRzIl0sInNvdXJjZXNDb250ZW50IjpudWxsLCJuYW1lcyI6WyJyZXF1aXJlJCQwIiwiVGV4dEZpbGVWaWV3IiwiS2V5bWFwIiwic2V0SWNvbiIsIlRGaWxlIiwiUGx1Z2luU2V0dGluZ1RhYiIsIlNldHRpbmciLCJQbHVnaW4iLCJhZGRJY29uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdURBO0FBQ08sU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFO0FBQzdELElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ2hILElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQy9ELFFBQVEsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUNuRyxRQUFRLFNB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 diff --git a/.obsidian/plugins/cooklang-obsidian/manifest.json b/.obsidian/plugins/cooklang-obsidian/manifest.json new file mode 100644 index 00000000..e046b715 --- /dev/null +++ b/.obsidian/plugins/cooklang-obsidian/manifest.json @@ -0,0 +1 @@ +{"id":"cooklang-obsidian","name":"CookLang Editor","author":"death_au","authorUrl":"https://github.com/deathau","description":"Edit and display CookLang recipes in Obsidian","isDesktopOnly":false,"version":"0.2.0","minAppVersion":"0.10.12"} \ No newline at end of file diff --git a/.obsidian/plugins/cooklang-obsidian/styles.css b/.obsidian/plugins/cooklang-obsidian/styles.css new file mode 100644 index 00000000..7bb9f2cd --- /dev/null +++ b/.obsidian/plugins/cooklang-obsidian/styles.css @@ -0,0 +1,68 @@ +.workspace-leaf-content[data-type=cook] .view-content { + font-family: inherit; +} +.workspace-leaf-content[data-type=cook] .cook-preview-view, +.workspace-leaf-content[data-type=cook] .cook-source-view { + max-width: 700px; + margin-left: auto; + margin-right: auto; +} +.workspace-leaf-content[data-type=cook] .main-image { + width: 100vw; + aspect-ratio: 1.618; + object-fit: cover; +} +.workspace-leaf-content[data-type=cook] .method-image { + display: block; + margin-top: 1em; + max-width: 100%; + max-height: 16vw; +} +.workspace-leaf-content[data-type=cook] ul.ingredients, +.workspace-leaf-content[data-type=cook] ul.cookware { + column-count: 2; +} +.workspace-leaf-content[data-type=cook] ol.method { + margin-left: 0; + padding-right: 0; + list-style-type: none; + padding: 0; +} +.workspace-leaf-content[data-type=cook] ol.method > li { + counter-increment: step-counter; +} +.workspace-leaf-content[data-type=cook] ol.method > li::before { + content: "Step " counter(step-counter); + font-weight: 600; + display: block; + font-size: 1.17em; + margin-block-start: 1em; + margin-block-end: 1em; + margin-inline-start: 0px; + margin-inline-end: 0px; +} +.workspace-leaf-content[data-type=cook] span.time, +.workspace-leaf-content[data-type=cook] span.ingredient, +.workspace-leaf-content[data-type=cook] span.cookware { + font-weight: 600; +} +.workspace-leaf-content[data-type=cook] .cm-ingredient, +.workspace-leaf-content[data-type=cook] .cm-cookware { + color: var(--text-accent); + font-weight: 600; +} +.workspace-leaf-content[data-type=cook] .cm-formatting { + color: var(--text-faint); +} +.workspace-leaf-content[data-type=cook] .cm-measurement, +.workspace-leaf-content[data-type=cook] .cm-timer, +.workspace-leaf-content[data-type=cook] .cm-unit { + color: var(--text-muted); +} +.workspace-leaf-content[data-type=cook] .cm-metadata, +.workspace-leaf-content[data-type=cook] .cm-metadata-key { + font-family: var(--font-monospace); +} +.workspace-leaf-content[data-type=cook] .cm-metadata-key { + font-weight: 600; +} \ No newline at end of file diff --git a/.obsidian/plugins/emoji-shortcodes/main.js b/.obsidian/plugins/emoji-shortcodes/main.js index da92f236..d09938f3 100644 --- a/.obsidian/plugins/emoji-shortcodes/main.js +++ b/.obsidian/plugins/emoji-shortcodes/main.js @@ -1997,7 +1997,8 @@ class EmojiSuggester extends obsidian.EditorSuggest { return null; } getSuggestions(context) { - return Object.keys(emoji).filter(p => p.startsWith(context.query)); + let emoji_query = context.query.replace(':', ''); + return Object.keys(emoji).filter(p => p.includes(emoji_query)); } renderSuggestion(suggestion, el) { const outer = el.createDiv({ cls: "ES-suggester-container" }); @@ -2013,4 +2014,4 @@ class EmojiSuggester extends obsidian.EditorSuggest { } module.exports = EmojiShortcodesPlugin; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9lbW9qaUxpc3QudHMiLCJzcmMvZW1vamlQb3N0UHJvY2Vzc29yLnRzIiwic3JjL3NldHRpbmdzLnRzIiwic3JjL21haW4udHMiXSwic291cmNlc0NvbnRlbnQiOm51bGwsIm5hbWVzIjpbIlBsdWdpblNldHRpbmdUYWIiLCJTZXR0aW5nIiwiUGx1Z2luIiwiRWRpdG9yU3VnZ2VzdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXVEQTtBQUNPLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRTtBQUM3RCxJQUFJLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sS0FBSyxZQUFZLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsVUFBVSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtBQUNoSCxJQUFJLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLFVBQVUsT0FBTyxFQUFFLE1BQU0sRUFBRTtBQUMvRCxRQUFRLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDbkcsUUFBUSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FB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 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9lbW9qaUxpc3QudHMiLCJzcmMvZW1vamlQb3N0UHJvY2Vzc29yLnRzIiwic3JjL3NldHRpbmdzLnRzIiwic3JjL21haW4udHMiXSwic291cmNlc0NvbnRlbnQiOm51bGwsIm5hbWVzIjpbIlBsdWdpblNldHRpbmdUYWIiLCJTZXR0aW5nIiwiUGx1Z2luIiwiRWRpdG9yU3VnZ2VzdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXVEQTtBQUNPLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRTtBQUM3RCxJQUFJLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sS0FBSyxZQUFZLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsVUFBVSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtBQUNoSCxJQUFJLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLFVBQVUsT0FBTyxFQUFFLE1BQU0sRUFBRTtBQUMvRCxRQUFRLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDbkcsUUFBUSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FB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 diff --git a/.obsidian/plugins/emoji-shortcodes/manifest.json b/.obsidian/plugins/emoji-shortcodes/manifest.json index 4377d959..f128b64c 100644 --- a/.obsidian/plugins/emoji-shortcodes/manifest.json +++ b/.obsidian/plugins/emoji-shortcodes/manifest.json @@ -1,7 +1,7 @@ { "id": "emoji-shortcodes", "name": "Emoji Shortcodes", - "version": "2.1.0", + "version": "2.1.1", "minAppVersion": "0.12.17", "description": "This Plugin enables the use of Markdown Emoji Shortcodes :smile:", "author": "phibr0", diff --git a/.obsidian/plugins/fantasy-calendar/data.json b/.obsidian/plugins/fantasy-calendar/data.json new file mode 100644 index 00000000..e487ab79 --- /dev/null +++ b/.obsidian/plugins/fantasy-calendar/data.json @@ -0,0 +1,8 @@ +{ + "calendars": [], + "currentCalendar": null, + "defaultCalendar": null, + "eventPreview": false, + "configDirectory": null, + "path": "/" +} \ No newline at end of file diff --git a/.obsidian/plugins/fantasy-calendar/main.js b/.obsidian/plugins/fantasy-calendar/main.js new file mode 100644 index 00000000..5355d60b --- /dev/null +++ b/.obsidian/plugins/fantasy-calendar/main.js @@ -0,0 +1,2 @@ +/*! For license information please see main.js.LICENSE.txt */ +(()=>{var e={792:function(e){e.exports=function(){"use strict";for(var e=function(e,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),en?n:e},t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n255)&&(t._clipped=!0),t[n]=e(t[n],0,255)):3===n&&(t[n]=e(t[n],0,1));return t},limit:e,type:i,unpack:function(e,t){return void 0===t&&(t=null),e.length>=3?Array.prototype.slice.call(e):"object"==i(e[0])&&t?t.split("").filter((function(t){return void 0!==e[0][t]})).map((function(t){return e[0][t]})):e[0]},last:function(e){if(e.length<2)return null;var t=e.length-1;return"string"==i(e[t])?e[t].toLowerCase():null},PI:o,TWOPI:2*o,PITHIRD:o/3,DEG2RAD:o/180,RAD2DEG:180/o},l={format:{},autodetect:[]},c=s.last,d=s.clip_rgb,u=s.type,h=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=this;if("object"===u(e[0])&&e[0].constructor&&e[0].constructor===this.constructor)return e[0];var a=c(e),r=!1;if(!a){r=!0,l.sorted||(l.autodetect=l.autodetect.sort((function(e,t){return t.p-e.p})),l.sorted=!0);for(var i=0,o=l.autodetect;i4?e[4]:1;return 1===i?[0,0,0,o]:[n>=1?0:255*(1-n)*(1-i),a>=1?0:255*(1-a)*(1-i),r>=1?0:255*(1-r)*(1-i),o]},x=s.unpack,D=s.type;f.prototype.cmyk=function(){return v(this._rgb)},m.cmyk=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(f,[null].concat(e,["cmyk"])))},l.format.cmyk=w,l.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=x(e,"cmyk"),"array"===D(e)&&4===e.length)return"cmyk"}});var k=s.unpack,E=s.last,C=function(e){return Math.round(100*e)/100},A=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=k(e,"hsla"),a=E(e)||"lsa";return n[0]=C(n[0]||0),n[1]=C(100*n[1])+"%",n[2]=C(100*n[2])+"%","hsla"===a||n.length>3&&n[3]<1?(n[3]=n.length>3?n[3]:1,a="hsla"):n.length=3,a+"("+n.join(",")+")"},T=s.unpack,S=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=(e=T(e,"rgba"))[0],a=e[1],r=e[2];n/=255,a/=255,r/=255;var i,o,s=Math.min(n,a,r),l=Math.max(n,a,r),c=(l+s)/2;return l===s?(i=0,o=Number.NaN):i=c<.5?(l-s)/(l+s):(l-s)/(2-l-s),n==l?o=(a-r)/(l-s):a==l?o=2+(r-n)/(l-s):r==l&&(o=4+(n-a)/(l-s)),(o*=60)<0&&(o+=360),e.length>3&&void 0!==e[3]?[o,i,c,e[3]]:[o,i,c]},$=s.unpack,M=s.last,q=Math.round,I=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=$(e,"rgba"),a=M(e)||"rgb";return"hsl"==a.substr(0,3)?A(S(n),a):(n[0]=q(n[0]),n[1]=q(n[1]),n[2]=q(n[2]),("rgba"===a||n.length>3&&n[3]<1)&&(n[3]=n.length>3?n[3]:1,a="rgba"),a+"("+n.slice(0,"rgb"===a?3:4).join(",")+")")},F=s.unpack,N=Math.round,O=function(){for(var e,t=[],n=arguments.length;n--;)t[n]=arguments[n];var a,r,i,o=(t=F(t,"hsl"))[0],s=t[1],l=t[2];if(0===s)a=r=i=255*l;else{var c=[0,0,0],d=[0,0,0],u=l<.5?l*(1+s):l+s-l*s,h=2*l-u,f=o/360;c[0]=f+1/3,c[1]=f,c[2]=f-1/3;for(var p=0;p<3;p++)c[p]<0&&(c[p]+=1),c[p]>1&&(c[p]-=1),6*c[p]<1?d[p]=h+6*(u-h)*c[p]:2*c[p]<1?d[p]=u:3*c[p]<2?d[p]=h+(u-h)*(2/3-c[p])*6:d[p]=h;a=(e=[N(255*d[0]),N(255*d[1]),N(255*d[2])])[0],r=e[1],i=e[2]}return t.length>3?[a,r,i,t[3]]:[a,r,i,1]},B=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,L=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,R=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,j=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,_=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,P=Math.round,G=function(e){var t;if(e=e.toLowerCase().trim(),l.format.named)try{return l.format.named(e)}catch(e){}if(t=e.match(B)){for(var n=t.slice(1,4),a=0;a<3;a++)n[a]=+n[a];return n[3]=1,n}if(t=e.match(L)){for(var r=t.slice(1,5),i=0;i<4;i++)r[i]=+r[i];return r}if(t=e.match(R)){for(var o=t.slice(1,4),s=0;s<3;s++)o[s]=P(2.55*o[s]);return o[3]=1,o}if(t=e.match(j)){for(var c=t.slice(1,5),d=0;d<3;d++)c[d]=P(2.55*c[d]);return c[3]=+c[3],c}if(t=e.match(_)){var u=t.slice(1,4);u[1]*=.01,u[2]*=.01;var h=O(u);return h[3]=1,h}if(t=e.match(V)){var f=t.slice(1,4);f[1]*=.01,f[2]*=.01;var p=O(f);return p[3]=+t[4],p}};G.test=function(e){return B.test(e)||L.test(e)||R.test(e)||j.test(e)||_.test(e)||V.test(e)};var H=G,W=s.type;f.prototype.css=function(e){return I(this._rgb,e)},m.css=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(f,[null].concat(e,["css"])))},l.format.css=H,l.autodetect.push({p:5,test:function(e){for(var t=[],n=arguments.length-1;n-- >0;)t[n]=arguments[n+1];if(!t.length&&"string"===W(e)&&H.test(e))return"css"}});var U=s.unpack;l.format.gl=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=U(e,"rgba");return n[0]*=255,n[1]*=255,n[2]*=255,n},m.gl=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(f,[null].concat(e,["gl"])))},f.prototype.gl=function(){var e=this._rgb;return[e[0]/255,e[1]/255,e[2]/255,e[3]]};var z=s.unpack,Y=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a=z(e,"rgb"),r=a[0],i=a[1],o=a[2],s=Math.min(r,i,o),l=Math.max(r,i,o),c=l-s,d=100*c/255,u=s/(255-c)*100;return 0===c?n=Number.NaN:(r===l&&(n=(i-o)/c),i===l&&(n=2+(o-r)/c),o===l&&(n=4+(r-i)/c),(n*=60)<0&&(n+=360)),[n,d,u]},Z=s.unpack,K=Math.floor,Q=function(){for(var e,t,n,a,r,i,o=[],s=arguments.length;s--;)o[s]=arguments[s];var l,c,d,u=(o=Z(o,"hcg"))[0],h=o[1],f=o[2];f*=255;var p=255*h;if(0===h)l=c=d=f;else{360===u&&(u=0),u>360&&(u-=360),u<0&&(u+=360);var m=K(u/=60),g=u-m,y=f*(1-h),v=y+p*(1-g),b=y+p*g,w=y+p;switch(m){case 0:l=(e=[w,b,y])[0],c=e[1],d=e[2];break;case 1:l=(t=[v,w,y])[0],c=t[1],d=t[2];break;case 2:l=(n=[y,w,b])[0],c=n[1],d=n[2];break;case 3:l=(a=[y,v,w])[0],c=a[1],d=a[2];break;case 4:l=(r=[b,y,w])[0],c=r[1],d=r[2];break;case 5:l=(i=[w,y,v])[0],c=i[1],d=i[2]}}return[l,c,d,o.length>3?o[3]:1]},J=s.unpack,X=s.type;f.prototype.hcg=function(){return Y(this._rgb)},m.hcg=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(f,[null].concat(e,["hcg"])))},l.format.hcg=Q,l.autodetect.push({p:1,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=J(e,"hcg"),"array"===X(e)&&3===e.length)return"hcg"}});var ee=s.unpack,te=s.last,ne=Math.round,ae=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=ee(e,"rgba"),a=n[0],r=n[1],i=n[2],o=n[3],s=te(e)||"auto";void 0===o&&(o=1),"auto"===s&&(s=o<1?"rgba":"rgb");var l="000000"+((a=ne(a))<<16|(r=ne(r))<<8|(i=ne(i))).toString(16);l=l.substr(l.length-6);var c="0"+ne(255*o).toString(16);switch(c=c.substr(c.length-2),s.toLowerCase()){case"rgba":return"#"+l+c;case"argb":return"#"+c+l;default:return"#"+l}},re=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,ie=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,oe=function(e){if(e.match(re)){4!==e.length&&7!==e.length||(e=e.substr(1)),3===e.length&&(e=(e=e.split(""))[0]+e[0]+e[1]+e[1]+e[2]+e[2]);var t=parseInt(e,16);return[t>>16,t>>8&255,255&t,1]}if(e.match(ie)){5!==e.length&&9!==e.length||(e=e.substr(1)),4===e.length&&(e=(e=e.split(""))[0]+e[0]+e[1]+e[1]+e[2]+e[2]+e[3]+e[3]);var n=parseInt(e,16);return[n>>24&255,n>>16&255,n>>8&255,Math.round((255&n)/255*100)/100]}throw new Error("unknown hex color: "+e)},se=s.type;f.prototype.hex=function(e){return ae(this._rgb,e)},m.hex=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(f,[null].concat(e,["hex"])))},l.format.hex=oe,l.autodetect.push({p:4,test:function(e){for(var t=[],n=arguments.length-1;n-- >0;)t[n]=arguments[n+1];if(!t.length&&"string"===se(e)&&[3,4,5,6,7,8,9].indexOf(e.length)>=0)return"hex"}});var le=s.unpack,ce=s.TWOPI,de=Math.min,ue=Math.sqrt,he=Math.acos,fe=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a=le(e,"rgb"),r=a[0],i=a[1],o=a[2],s=de(r/=255,i/=255,o/=255),l=(r+i+o)/3,c=l>0?1-s/l:0;return 0===c?n=NaN:(n=(r-i+(r-o))/2,n/=ue((r-i)*(r-i)+(r-o)*(i-o)),n=he(n),o>i&&(n=ce-n),n/=ce),[360*n,c,l]},pe=s.unpack,me=s.limit,ge=s.TWOPI,ye=s.PITHIRD,ve=Math.cos,be=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,r,i=(e=pe(e,"hsi"))[0],o=e[1],s=e[2];return isNaN(i)&&(i=0),isNaN(o)&&(o=0),i>360&&(i-=360),i<0&&(i+=360),(i/=360)<1/3?a=1-((r=(1-o)/3)+(n=(1+o*ve(ge*i)/ve(ye-ge*i))/3)):i<2/3?r=1-((n=(1-o)/3)+(a=(1+o*ve(ge*(i-=1/3))/ve(ye-ge*i))/3)):n=1-((a=(1-o)/3)+(r=(1+o*ve(ge*(i-=2/3))/ve(ye-ge*i))/3)),[255*(n=me(s*n*3)),255*(a=me(s*a*3)),255*(r=me(s*r*3)),e.length>3?e[3]:1]},we=s.unpack,xe=s.type;f.prototype.hsi=function(){return fe(this._rgb)},m.hsi=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(f,[null].concat(e,["hsi"])))},l.format.hsi=be,l.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=we(e,"hsi"),"array"===xe(e)&&3===e.length)return"hsi"}});var De=s.unpack,ke=s.type;f.prototype.hsl=function(){return S(this._rgb)},m.hsl=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(f,[null].concat(e,["hsl"])))},l.format.hsl=O,l.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=De(e,"hsl"),"array"===ke(e)&&3===e.length)return"hsl"}});var Ee=s.unpack,Ce=Math.min,Ae=Math.max,Te=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,r,i=(e=Ee(e,"rgb"))[0],o=e[1],s=e[2],l=Ce(i,o,s),c=Ae(i,o,s),d=c-l;return r=c/255,0===c?(n=Number.NaN,a=0):(a=d/c,i===c&&(n=(o-s)/d),o===c&&(n=2+(s-i)/d),s===c&&(n=4+(i-o)/d),(n*=60)<0&&(n+=360)),[n,a,r]},Se=s.unpack,$e=Math.floor,Me=function(){for(var e,t,n,a,r,i,o=[],s=arguments.length;s--;)o[s]=arguments[s];var l,c,d,u=(o=Se(o,"hsv"))[0],h=o[1],f=o[2];if(f*=255,0===h)l=c=d=f;else{360===u&&(u=0),u>360&&(u-=360),u<0&&(u+=360);var p=$e(u/=60),m=u-p,g=f*(1-h),y=f*(1-h*m),v=f*(1-h*(1-m));switch(p){case 0:l=(e=[f,v,g])[0],c=e[1],d=e[2];break;case 1:l=(t=[y,f,g])[0],c=t[1],d=t[2];break;case 2:l=(n=[g,f,v])[0],c=n[1],d=n[2];break;case 3:l=(a=[g,y,f])[0],c=a[1],d=a[2];break;case 4:l=(r=[v,g,f])[0],c=r[1],d=r[2];break;case 5:l=(i=[f,g,y])[0],c=i[1],d=i[2]}}return[l,c,d,o.length>3?o[3]:1]},qe=s.unpack,Ie=s.type;f.prototype.hsv=function(){return Te(this._rgb)},m.hsv=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(f,[null].concat(e,["hsv"])))},l.format.hsv=Me,l.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=qe(e,"hsv"),"array"===Ie(e)&&3===e.length)return"hsv"}});var Fe=18,Ne=.95047,Oe=1,Be=1.08883,Le=.137931034,Re=.206896552,je=.12841855,_e=.008856452,Ve=s.unpack,Pe=Math.pow,Ge=function(e){return(e/=255)<=.04045?e/12.92:Pe((e+.055)/1.055,2.4)},He=function(e){return e>_e?Pe(e,1/3):e/je+Le},We=function(e,t,n){return e=Ge(e),t=Ge(t),n=Ge(n),[He((.4124564*e+.3575761*t+.1804375*n)/Ne),He((.2126729*e+.7151522*t+.072175*n)/Oe),He((.0193339*e+.119192*t+.9503041*n)/Be)]},Ue=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=Ve(e,"rgb"),a=n[0],r=n[1],i=n[2],o=We(a,r,i),s=o[0],l=o[1],c=116*l-16;return[c<0?0:c,500*(s-l),200*(l-o[2])]},ze=s.unpack,Ye=Math.pow,Ze=function(e){return 255*(e<=.00304?12.92*e:1.055*Ye(e,1/2.4)-.055)},Ke=function(e){return e>Re?e*e*e:je*(e-Le)},Qe=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,r,i=(e=ze(e,"lab"))[0],o=e[1],s=e[2];return a=(i+16)/116,n=isNaN(o)?a:a+o/500,r=isNaN(s)?a:a-s/200,a=Oe*Ke(a),n=Ne*Ke(n),r=Be*Ke(r),[Ze(3.2404542*n-1.5371385*a-.4985314*r),Ze(-.969266*n+1.8760108*a+.041556*r),Ze(.0556434*n-.2040259*a+1.0572252*r),e.length>3?e[3]:1]},Je=s.unpack,Xe=s.type;f.prototype.lab=function(){return Ue(this._rgb)},m.lab=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(f,[null].concat(e,["lab"])))},l.format.lab=Qe,l.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=Je(e,"lab"),"array"===Xe(e)&&3===e.length)return"lab"}});var et=s.unpack,tt=s.RAD2DEG,nt=Math.sqrt,at=Math.atan2,rt=Math.round,it=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=et(e,"lab"),a=n[0],r=n[1],i=n[2],o=nt(r*r+i*i),s=(at(i,r)*tt+360)%360;return 0===rt(1e4*o)&&(s=Number.NaN),[a,o,s]},ot=s.unpack,st=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=ot(e,"rgb"),a=n[0],r=n[1],i=n[2],o=Ue(a,r,i),s=o[0],l=o[1],c=o[2];return it(s,l,c)},lt=s.unpack,ct=s.DEG2RAD,dt=Math.sin,ut=Math.cos,ht=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=lt(e,"lch"),a=n[0],r=n[1],i=n[2];return isNaN(i)&&(i=0),[a,ut(i*=ct)*r,dt(i)*r]},ft=s.unpack,pt=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=(e=ft(e,"lch"))[0],a=e[1],r=e[2],i=ht(n,a,r),o=i[0],s=i[1],l=i[2],c=Qe(o,s,l);return[c[0],c[1],c[2],e.length>3?e[3]:1]},mt=s.unpack,gt=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=mt(e,"hcl").reverse();return pt.apply(void 0,n)},yt=s.unpack,vt=s.type;f.prototype.lch=function(){return st(this._rgb)},f.prototype.hcl=function(){return st(this._rgb).reverse()},m.lch=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(f,[null].concat(e,["lch"])))},m.hcl=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(f,[null].concat(e,["hcl"])))},l.format.lch=pt,l.format.hcl=gt,["lch","hcl"].forEach((function(e){return l.autodetect.push({p:2,test:function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];if(t=yt(t,e),"array"===vt(t)&&3===t.length)return e}})}));var bt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},wt=s.type;f.prototype.name=function(){for(var e=ae(this._rgb,"rgb"),t=0,n=Object.keys(bt);t0;)t[n]=arguments[n+1];if(!t.length&&"string"===wt(e)&&bt[e.toLowerCase()])return"named"}});var xt=s.unpack,Dt=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=xt(e,"rgb");return(n[0]<<16)+(n[1]<<8)+n[2]},kt=s.type,Et=s.type;f.prototype.num=function(){return Dt(this._rgb)},m.num=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(f,[null].concat(e,["num"])))},l.format.num=function(e){if("number"==kt(e)&&e>=0&&e<=16777215)return[e>>16,e>>8&255,255&e,1];throw new Error("unknown num color: "+e)},l.autodetect.push({p:5,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(1===e.length&&"number"===Et(e[0])&&e[0]>=0&&e[0]<=16777215)return"num"}});var Ct=s.unpack,At=s.type,Tt=Math.round;f.prototype.rgb=function(e){return void 0===e&&(e=!0),!1===e?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Tt)},f.prototype.rgba=function(e){return void 0===e&&(e=!0),this._rgb.slice(0,4).map((function(t,n){return n<3?!1===e?t:Tt(t):t}))},m.rgb=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(f,[null].concat(e,["rgb"])))},l.format.rgb=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=Ct(e,"rgba");return void 0===n[3]&&(n[3]=1),n},l.autodetect.push({p:3,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=Ct(e,"rgba"),"array"===At(e)&&(3===e.length||4===e.length&&"number"==At(e[3])&&e[3]>=0&&e[3]<=1))return"rgb"}});var St=Math.log,$t=function(e){var t,n,a,r=e/100;return r<66?(t=255,n=-155.25485562709179-.44596950469579133*(n=r-2)+104.49216199393888*St(n),a=r<20?0:.8274096064007395*(a=r-10)-254.76935184120902+115.67994401066147*St(a)):(t=351.97690566805693+.114206453784165*(t=r-55)-40.25366309332127*St(t),n=325.4494125711974+.07943456536662342*(n=r-50)-28.0852963507957*St(n),a=255),[t,n,a,1]},Mt=s.unpack,qt=Math.round,It=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];for(var n,a=Mt(e,"rgb"),r=a[0],i=a[2],o=1e3,s=4e4,l=.4;s-o>l;){var c=$t(n=.5*(s+o));c[2]/c[0]>=i/r?s=n:o=n}return qt(n)};f.prototype.temp=f.prototype.kelvin=f.prototype.temperature=function(){return It(this._rgb)},m.temp=m.kelvin=m.temperature=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(f,[null].concat(e,["temp"])))},l.format.temp=l.format.kelvin=l.format.temperature=$t;var Ft=s.type;f.prototype.alpha=function(e,t){return void 0===t&&(t=!1),void 0!==e&&"number"===Ft(e)?t?(this._rgb[3]=e,this):new f([this._rgb[0],this._rgb[1],this._rgb[2],e],"rgb"):this._rgb[3]},f.prototype.clipped=function(){return this._rgb._clipped||!1},f.prototype.darken=function(e){void 0===e&&(e=1);var t=this.lab();return t[0]-=Fe*e,new f(t,"lab").alpha(this.alpha(),!0)},f.prototype.brighten=function(e){return void 0===e&&(e=1),this.darken(-e)},f.prototype.darker=f.prototype.darken,f.prototype.brighter=f.prototype.brighten,f.prototype.get=function(e){var t=e.split("."),n=t[0],a=t[1],r=this[n]();if(a){var i=n.indexOf(a);if(i>-1)return r[i];throw new Error("unknown channel "+a+" in mode "+n)}return r};var Nt=s.type,Ot=Math.pow;f.prototype.luminance=function(e){if(void 0!==e&&"number"===Nt(e)){if(0===e)return new f([0,0,0,this._rgb[3]],"rgb");if(1===e)return new f([255,255,255,this._rgb[3]],"rgb");var t=this.luminance(),n=20,a=function(t,r){var i=t.interpolate(r,.5,"rgb"),o=i.luminance();return Math.abs(e-o)<1e-7||!n--?i:o>e?a(t,i):a(i,r)},r=(t>e?a(new f([0,0,0]),this):a(this,new f([255,255,255]))).rgb();return new f(r.concat([this._rgb[3]]))}return Bt.apply(void 0,this._rgb.slice(0,3))};var Bt=function(e,t,n){return.2126*(e=Lt(e))+.7152*(t=Lt(t))+.0722*Lt(n)},Lt=function(e){return(e/=255)<=.03928?e/12.92:Ot((e+.055)/1.055,2.4)},Rt={},jt=s.type,_t=function(e,t,n){void 0===n&&(n=.5);for(var a=[],r=arguments.length-3;r-- >0;)a[r]=arguments[r+3];var i=a[0]||"lrgb";if(Rt[i]||a.length||(i=Object.keys(Rt)[0]),!Rt[i])throw new Error("interpolation mode "+i+" is not defined");return"object"!==jt(e)&&(e=new f(e)),"object"!==jt(t)&&(t=new f(t)),Rt[i](e,t,n).alpha(e.alpha()+n*(t.alpha()-e.alpha()))};f.prototype.mix=f.prototype.interpolate=function(e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-2;a-- >0;)n[a]=arguments[a+2];return _t.apply(void 0,[this,e,t].concat(n))},f.prototype.premultiply=function(e){void 0===e&&(e=!1);var t=this._rgb,n=t[3];return e?(this._rgb=[t[0]*n,t[1]*n,t[2]*n,n],this):new f([t[0]*n,t[1]*n,t[2]*n,n],"rgb")},f.prototype.saturate=function(e){void 0===e&&(e=1);var t=this.lch();return t[1]+=Fe*e,t[1]<0&&(t[1]=0),new f(t,"lch").alpha(this.alpha(),!0)},f.prototype.desaturate=function(e){return void 0===e&&(e=1),this.saturate(-e)};var Vt=s.type;f.prototype.set=function(e,t,n){void 0===n&&(n=!1);var a=e.split("."),r=a[0],i=a[1],o=this[r]();if(i){var s=r.indexOf(i);if(s>-1){if("string"==Vt(t))switch(t.charAt(0)){case"+":case"-":o[s]+=+t;break;case"*":o[s]*=+t.substr(1);break;case"/":o[s]/=+t.substr(1);break;default:o[s]=+t}else{if("number"!==Vt(t))throw new Error("unsupported value for Color.set");o[s]=t}var l=new f(o,r);return n?(this._rgb=l._rgb,this):l}throw new Error("unknown channel "+i+" in mode "+r)}return o};Rt.rgb=function(e,t,n){var a=e._rgb,r=t._rgb;return new f(a[0]+n*(r[0]-a[0]),a[1]+n*(r[1]-a[1]),a[2]+n*(r[2]-a[2]),"rgb")};var Pt=Math.sqrt,Gt=Math.pow;Rt.lrgb=function(e,t,n){var a=e._rgb,r=a[0],i=a[1],o=a[2],s=t._rgb,l=s[0],c=s[1],d=s[2];return new f(Pt(Gt(r,2)*(1-n)+Gt(l,2)*n),Pt(Gt(i,2)*(1-n)+Gt(c,2)*n),Pt(Gt(o,2)*(1-n)+Gt(d,2)*n),"rgb")};Rt.lab=function(e,t,n){var a=e.lab(),r=t.lab();return new f(a[0]+n*(r[0]-a[0]),a[1]+n*(r[1]-a[1]),a[2]+n*(r[2]-a[2]),"lab")};var Ht=function(e,t,n,a){var r,i,o,s,l,c,d,u,h,p,m,g;return"hsl"===a?(o=e.hsl(),s=t.hsl()):"hsv"===a?(o=e.hsv(),s=t.hsv()):"hcg"===a?(o=e.hcg(),s=t.hcg()):"hsi"===a?(o=e.hsi(),s=t.hsi()):"lch"!==a&&"hcl"!==a||(a="hcl",o=e.hcl(),s=t.hcl()),"h"===a.substr(0,1)&&(l=(r=o)[0],d=r[1],h=r[2],c=(i=s)[0],u=i[1],p=i[2]),isNaN(l)||isNaN(c)?isNaN(l)?isNaN(c)?g=Number.NaN:(g=c,1!=h&&0!=h||"hsv"==a||(m=u)):(g=l,1!=p&&0!=p||"hsv"==a||(m=d)):g=l+n*(c>l&&c-l>180?c-(l+360):c180?c+360-l:c-l),void 0===m&&(m=d+n*(u-d)),new f([g,m,h+n*(p-h)],a)},Wt=function(e,t,n){return Ht(e,t,n,"lch")};Rt.lch=Wt,Rt.hcl=Wt;Rt.num=function(e,t,n){var a=e.num(),r=t.num();return new f(a+n*(r-a),"num")};Rt.hcg=function(e,t,n){return Ht(e,t,n,"hcg")};Rt.hsi=function(e,t,n){return Ht(e,t,n,"hsi")};Rt.hsl=function(e,t,n){return Ht(e,t,n,"hsl")};Rt.hsv=function(e,t,n){return Ht(e,t,n,"hsv")};var Ut=s.clip_rgb,zt=Math.pow,Yt=Math.sqrt,Zt=Math.PI,Kt=Math.cos,Qt=Math.sin,Jt=Math.atan2,Xt=function(e,t){for(var n=e.length,a=[0,0,0,0],r=0;r.9999999&&(a[3]=1),new f(Ut(a))},en=s.type,tn=Math.pow,nn=function(e){var t="rgb",n=m("#ccc"),a=0,r=[0,1],i=[],o=[0,0],s=!1,l=[],c=!1,d=0,u=1,h=!1,f={},p=!0,g=1,y=function(e){if((e=e||["#fff","#000"])&&"string"===en(e)&&m.brewer&&m.brewer[e.toLowerCase()]&&(e=m.brewer[e.toLowerCase()]),"array"===en(e)){1===e.length&&(e=[e[0],e[0]]),e=e.slice(0);for(var t=0;t2?function(e){if(null!=s){for(var t=s.length-1,n=0;n=s[n];)n++;return n-1}return 0}(e)/(s.length-2):u!==d?(e-d)/(u-d):1,c=b(c),a||(c=v(c)),1!==g&&(c=tn(c,g)),c=o[0]+c*(1-o[0]-o[1]),c=Math.min(1,Math.max(0,c));var h=Math.floor(1e4*c);if(p&&f[h])r=f[h];else{if("array"===en(l))for(var y=0;y=w&&y===i.length-1){r=l[y];break}if(c>w&&c2){var c=e.map((function(t,n){return n/(e.length-1)})),h=e.map((function(e){return(e-d)/(u-d)}));h.every((function(e,t){return c[t]===e}))||(b=function(e){if(e<=0||e>=1)return e;for(var t=0;e>=h[t+1];)t++;var n=(e-h[t])/(h[t+1]-h[t]);return c[t]+n*(c[t+1]-c[t])})}}return r=[d,u],D},D.mode=function(e){return arguments.length?(t=e,x(),D):t},D.range=function(e,t){return y(e),D},D.out=function(e){return c=e,D},D.spread=function(e){return arguments.length?(a=e,D):a},D.correctLightness=function(e){return null==e&&(e=!0),h=e,x(),v=h?function(e){for(var t=w(0,!0).lab()[0],n=w(1,!0).lab()[0],a=t>n,r=w(e,!0).lab()[0],i=t+(n-t)*e,o=r-i,s=0,l=1,c=20;Math.abs(o)>.01&&c-- >0;)a&&(o*=-1),o<0?(s=e,e+=.5*(l-e)):(l=e,e+=.5*(s-e)),o=(r=w(e,!0).lab()[0])-i;return e}:function(e){return e},D},D.padding=function(e){return null!=e?("number"===en(e)&&(e=[e,e]),o=e,D):o},D.colors=function(t,n){arguments.length<2&&(n="hex");var a=[];if(0===arguments.length)a=l.slice(0);else if(1===t)a=[D(.5)];else if(t>1){var i=r[0],o=r[1]-i;a=an(0,t,!1).map((function(e){return D(i+e/(t-1)*o)}))}else{e=[];var c=[];if(s&&s.length>2)for(var d=1,u=s.length,h=1<=u;h?du;h?d++:d--)c.push(.5*(s[d-1]+s[d]));else c=r;a=c.map((function(e){return D(e)}))}return m[n]&&(a=a.map((function(e){return e[n]()}))),a},D.cache=function(e){return null!=e?(p=e,D):p},D.gamma=function(e){return null!=e?(g=e,D):g},D.nodata=function(e){return null!=e?(n=m(e),D):n},D};function an(e,t,n){for(var a=[],r=ei;r?o++:o--)a.push(o);return a}var rn=function(e){var t,n,a,r,i,o,s;if(2===(e=e.map((function(e){return new f(e)}))).length)t=e.map((function(e){return e.lab()})),i=t[0],o=t[1],r=function(e){var t=[0,1,2].map((function(t){return i[t]+e*(o[t]-i[t])}));return new f(t,"lab")};else if(3===e.length)n=e.map((function(e){return e.lab()})),i=n[0],o=n[1],s=n[2],r=function(e){var t=[0,1,2].map((function(t){return(1-e)*(1-e)*i[t]+2*(1-e)*e*o[t]+e*e*s[t]}));return new f(t,"lab")};else if(4===e.length){var l;a=e.map((function(e){return e.lab()})),i=a[0],o=a[1],s=a[2],l=a[3],r=function(e){var t=[0,1,2].map((function(t){return(1-e)*(1-e)*(1-e)*i[t]+3*(1-e)*(1-e)*e*o[t]+3*(1-e)*e*e*s[t]+e*e*e*l[t]}));return new f(t,"lab")}}else if(5===e.length){var c=rn(e.slice(0,3)),d=rn(e.slice(2,5));r=function(e){return e<.5?c(2*e):d(2*(e-.5))}}return r},on=function(e,t,n){if(!on[n])throw new Error("unknown blend mode "+n);return on[n](e,t)},sn=function(e){return function(t,n){var a=m(n).rgb(),r=m(t).rgb();return m.rgb(e(a,r))}},ln=function(e){return function(t,n){var a=[];return a[0]=e(t[0],n[0]),a[1]=e(t[1],n[1]),a[2]=e(t[2],n[2]),a}};on.normal=sn(ln((function(e){return e}))),on.multiply=sn(ln((function(e,t){return e*t/255}))),on.screen=sn(ln((function(e,t){return 255*(1-(1-e/255)*(1-t/255))}))),on.overlay=sn(ln((function(e,t){return t<128?2*e*t/255:255*(1-2*(1-e/255)*(1-t/255))}))),on.darken=sn(ln((function(e,t){return e>t?t:e}))),on.lighten=sn(ln((function(e,t){return e>t?e:t}))),on.dodge=sn(ln((function(e,t){return 255===e||(e=t/255*255/(1-e/255))>255?255:e}))),on.burn=sn(ln((function(e,t){return 255*(1-(1-t/255)/(e/255))})));for(var cn=on,dn=s.type,un=s.clip_rgb,hn=s.TWOPI,fn=Math.pow,pn=Math.sin,mn=Math.cos,gn=Math.floor,yn=Math.random,vn=Math.log,bn=Math.pow,wn=Math.floor,xn=Math.abs,Dn=function(e,t){void 0===t&&(t=null);var n={min:Number.MAX_VALUE,max:-1*Number.MAX_VALUE,sum:0,values:[],count:0};return"object"===i(e)&&(e=Object.values(e)),e.forEach((function(e){t&&"object"===i(e)&&(e=e[t]),null==e||isNaN(e)||(n.values.push(e),n.sum+=e,en.max&&(n.max=e),n.count+=1)})),n.domain=[n.min,n.max],n.limits=function(e,t){return kn(n,e,t)},n},kn=function(e,t,n){void 0===t&&(t="equal"),void 0===n&&(n=7),"array"==i(e)&&(e=Dn(e));var a=e.min,r=e.max,o=e.values.sort((function(e,t){return e-t}));if(1===n)return[a,r];var s=[];if("c"===t.substr(0,1)&&(s.push(a),s.push(r)),"e"===t.substr(0,1)){s.push(a);for(var l=1;l 0");var c=Math.LOG10E*vn(a),d=Math.LOG10E*vn(r);s.push(a);for(var u=1;u200&&(w=!1)}for(var B={},L=0;L=360;)m-=360;o[p]=m}else o[p]=o[p]/s[p];return h/=a,new f(o,t).alpha(h>.99999?1:h,!0)},m.bezier=function(e){var t=rn(e);return t.scale=function(){return nn(t)},t},m.blend=cn,m.cubehelix=function(e,t,n,a,r){void 0===e&&(e=300),void 0===t&&(t=-1.5),void 0===n&&(n=1),void 0===a&&(a=1),void 0===r&&(r=[0,1]);var i,o=0;"array"===dn(r)?i=r[1]-r[0]:(i=0,r=[r,r]);var s=function(s){var l=hn*((e+120)/360+t*s),c=fn(r[0]+i*s,a),d=(0!==o?n[0]+s*o:n)*c*(1-c)/2,u=mn(l),h=pn(l);return m(un([255*(c+d*(-.14861*u+1.78277*h)),255*(c+d*(-.29227*u-.90649*h)),255*(c+d*(1.97294*u)),1]))};return s.start=function(t){return null==t?e:(e=t,s)},s.rotations=function(e){return null==e?t:(t=e,s)},s.gamma=function(e){return null==e?a:(a=e,s)},s.hue=function(e){return null==e?n:("array"===dn(n=e)?0==(o=n[1]-n[0])&&(n=n[1]):o=0,s)},s.lightness=function(e){return null==e?r:("array"===dn(e)?(r=e,i=e[1]-e[0]):(r=[e,e],i=0),s)},s.scale=function(){return m.scale(s)},s.hue(n),s},m.mix=m.interpolate=_t,m.random=function(){for(var e="#",t=0;t<6;t++)e+="0123456789abcdef".charAt(gn(16*yn()));return new f(e,"hex")},m.scale=nn,m.analyze=En.analyze,m.contrast=function(e,t){e=new f(e),t=new f(t);var n=e.luminance(),a=t.luminance();return n>a?(n+.05)/(a+.05):(a+.05)/(n+.05)},m.deltaE=function(e,t,n,a){void 0===n&&(n=1),void 0===a&&(a=1),e=new f(e),t=new f(t);for(var r=Array.from(e.lab()),i=r[0],o=r[1],s=r[2],l=Array.from(t.lab()),c=l[0],d=l[1],u=l[2],h=Cn(o*o+s*s),p=Cn(d*d+u*u),m=i<16?.511:.040975*i/(1+.01765*i),g=.0638*h/(1+.0131*h)+.638,y=h<1e-6?0:180*An(s,o)/$n;y<0;)y+=360;for(;y>=360;)y-=360;var v=y>=164&&y<=345?.56+Tn(.2*Sn($n*(y+168)/180)):.36+Tn(.4*Sn($n*(y+35)/180)),b=h*h*h*h,w=Cn(b/(b+1900)),x=g*(w*v+1-w),D=h-p,k=o-d,E=s-u,C=(i-c)/(n*m),A=D/(a*g);return Cn(C*C+A*A+(k*k+E*E-D*D)/(x*x))},m.distance=function(e,t,n){void 0===n&&(n="lab"),e=new f(e),t=new f(t);var a=e.get(n),r=t.get(n),i=0;for(var o in a){var s=(a[o]||0)-(r[o]||0);i+=s*s}return Math.sqrt(i)},m.limits=En.limits,m.valid=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];try{return new(Function.prototype.bind.apply(f,[null].concat(e))),!0}catch(e){return!1}},m.scales=Mn,m.colors=bt,m.brewer=On,m}()},512:(e,t,n)=>{"use strict";t.Z=void 0;var a=s(n(869)),r=s(n(899)),i=s(n(382)),o=s(n(792));function s(e){return e&&e.__esModule?e:{default:e}}function l(e){if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(e=function(e,t){if(e){if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(e,t):void 0}}(e))){var t=0,n=function(){};return{s:n,n:function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:n}}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 a,r,i=!0,o=!1;return{s:function(){a=e[Symbol.iterator]()},n:function(){var e=a.next();return i=e.done,e},e:function(e){o=!0,r=e},f:function(){try{i||null==a.return||a.return()}finally{if(o)throw r}}}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n=t.hueMin&&a[0]<=t.hueMax&&a[1]>=t.chromaMin&&a[1]<=t.chromaMax&&a[2]>=t.lightMin&&a[2]<=t.lightMax&&i[0]>=e[0]-2&&i[0]<=e[0]+2&&i[1]>=e[1]-2&&i[1]<=e[1]+2&&i[2]>=e[2]-2&&i[2]<=e[2]+2},g=function(e){for(var t=e.slice(0),n=[t.shift()];t.length>0;){for(var a=n[n.length-1],r=0,i=Number.MIN_SAFE_INTEGER,o=0;oi&&(i=s,r=o)}n.push(t.splice(r,1)[0])}return n};t.Z=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=u({},f,{},e);if(t.count<=0)return[];t.samples<3*t.count&&(t.samples=Math.ceil(3*t.count));var n=[],s=[],c=new Set,d=Math.ceil(Math.cbrt(t.samples)),h=(t.hueMax-t.hueMin)/d,y=(t.chromaMax-t.chromaMin)/d,v=(t.lightMax-t.lightMin)/d;if(h<=0)throw new Error("hueMax must be greater than hueMin!");if(y<=0)throw new Error("chromaMax must be greater than chromaMin!");if(v<=0)throw new Error("lightMax must be greater than lightMin!");for(var b=t.hueMin+h/2;b<=t.hueMax;b+=h)for(var w=t.chromaMin+y/2;w<=t.chromaMax;w+=y)for(var x=t.lightMin+v/2;x<=t.lightMax;x+=v){var D=o.default.hcl(b,w,x).lab();m(D,t)&&c.add(D.toString())}if(c=(c=Array.from(c)).map((function(e){return e.split(",").map((function(e){return parseFloat(e)}))})),c.length=t.count));E+=k);for(var C=1;C<=t.quality;C+=1){for(var A=(0,r.default)(s),T=(0,r.default)(c),S=0;S{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default={sum:function(e){return e.reduce((function(e,t){return e+t}))}}},346:function(e){var t;t=function(){"use strict";var e=Function.prototype.toString,t=Object.create,n=Object.defineProperty,a=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getOwnPropertySymbols,o=Object.getPrototypeOf,s=Object.prototype,l=s.hasOwnProperty,c=s.propertyIsEnumerable,d="function"==typeof i,u="function"==typeof WeakMap,h=function(n,a){if(!n.constructor)return t(null);var r=n.constructor,i=n.__proto__||o(n);if(r===a.Object)return i===a.Object.prototype?{}:t(i);if(~e.call(r).indexOf("[native code]"))try{return new r}catch(e){}return t(i)},f=function(e,t,n,a){var r=h(e,t);for(var o in a.set(e,r),e)l.call(e,o)&&(r[o]=n(e[o],a));if(d){var s=i(e),u=s.length;if(u)for(var f=0,p=void 0;f\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g,d={"ยญ":"shy","โ€Œ":"zwnj","โ€":"zwj","โ€Ž":"lrm","โฃ":"ic","โข":"it","โก":"af","โ€":"rlm","โ€‹":"ZeroWidthSpace","โ ":"NoBreak","ฬ‘":"DownBreve","โƒ›":"tdot","โƒœ":"DotDot","\t":"Tab","\n":"NewLine","โ€ˆ":"puncsp","โŸ":"MediumSpace","โ€‰":"thinsp","โ€Š":"hairsp","โ€„":"emsp13","โ€‚":"ensp","โ€…":"emsp14","โ€ƒ":"emsp","โ€‡":"numsp","ย ":"nbsp","โŸโ€Š":"ThickSpace","โ€พ":"oline",_:"lowbar","โ€":"dash","โ€“":"ndash","โ€”":"mdash","โ€•":"horbar",",":"comma",";":"semi","โ":"bsemi",":":"colon","โฉด":"Colone","!":"excl","ยก":"iexcl","?":"quest","ยฟ":"iquest",".":"period","โ€ฅ":"nldr","โ€ฆ":"mldr","ยท":"middot","'":"apos","โ€˜":"lsquo","โ€™":"rsquo","โ€š":"sbquo","โ€น":"lsaquo","โ€บ":"rsaquo",'"':"quot","โ€œ":"ldquo","โ€":"rdquo","โ€ž":"bdquo","ยซ":"laquo","ยป":"raquo","(":"lpar",")":"rpar","[":"lsqb","]":"rsqb","{":"lcub","}":"rcub","โŒˆ":"lceil","โŒ‰":"rceil","โŒŠ":"lfloor","โŒ‹":"rfloor","โฆ…":"lopar","โฆ†":"ropar","โฆ‹":"lbrke","โฆŒ":"rbrke","โฆ":"lbrkslu","โฆŽ":"rbrksld","โฆ":"lbrksld","โฆ":"rbrkslu","โฆ‘":"langd","โฆ’":"rangd","โฆ“":"lparlt","โฆ”":"rpargt","โฆ•":"gtlPar","โฆ–":"ltrPar","โŸฆ":"lobrk","โŸง":"robrk","โŸจ":"lang","โŸฉ":"rang","โŸช":"Lang","โŸซ":"Rang","โŸฌ":"loang","โŸญ":"roang","โฒ":"lbbrk","โณ":"rbbrk","โ€–":"Vert","ยง":"sect","ยถ":"para","@":"commat","*":"ast","/":"sol",undefined:null,"&":"amp","#":"num","%":"percnt","โ€ฐ":"permil","โ€ฑ":"pertenk","โ€ ":"dagger","โ€ก":"Dagger","โ€ข":"bull","โƒ":"hybull","โ€ฒ":"prime","โ€ณ":"Prime","โ€ด":"tprime","โ—":"qprime","โ€ต":"bprime","โ":"caret","`":"grave","ยด":"acute","หœ":"tilde","^":"Hat","ยฏ":"macr","ห˜":"breve","ห™":"dot","ยจ":"die","หš":"ring","ห":"dblac","ยธ":"cedil","ห›":"ogon",ห†:"circ",ห‡:"caron","ยฐ":"deg","ยฉ":"copy","ยฎ":"reg","โ„—":"copysr",โ„˜:"wp","โ„ž":"rx","โ„ง":"mho","โ„ฉ":"iiota","โ†":"larr","โ†š":"nlarr","โ†’":"rarr","โ†›":"nrarr","โ†‘":"uarr","โ†“":"darr","โ†”":"harr","โ†ฎ":"nharr","โ†•":"varr","โ†–":"nwarr","โ†—":"nearr","โ†˜":"searr","โ†™":"swarr","โ†":"rarrw","โ†ฬธ":"nrarrw","โ†ž":"Larr","โ†Ÿ":"Uarr","โ† ":"Rarr","โ†ก":"Darr","โ†ข":"larrtl","โ†ฃ":"rarrtl","โ†ค":"mapstoleft","โ†ฅ":"mapstoup","โ†ฆ":"map","โ†ง":"mapstodown","โ†ฉ":"larrhk","โ†ช":"rarrhk","โ†ซ":"larrlp","โ†ฌ":"rarrlp","โ†ญ":"harrw","โ†ฐ":"lsh","โ†ฑ":"rsh","โ†ฒ":"ldsh","โ†ณ":"rdsh","โ†ต":"crarr","โ†ถ":"cularr","โ†ท":"curarr","โ†บ":"olarr","โ†ป":"orarr","โ†ผ":"lharu","โ†ฝ":"lhard","โ†พ":"uharr","โ†ฟ":"uharl","โ‡€":"rharu","โ‡":"rhard","โ‡‚":"dharr","โ‡ƒ":"dharl","โ‡„":"rlarr","โ‡…":"udarr","โ‡†":"lrarr","โ‡‡":"llarr","โ‡ˆ":"uuarr","โ‡‰":"rrarr","โ‡Š":"ddarr","โ‡‹":"lrhar","โ‡Œ":"rlhar","โ‡":"lArr","โ‡":"nlArr","โ‡‘":"uArr","โ‡’":"rArr","โ‡":"nrArr","โ‡“":"dArr","โ‡”":"iff","โ‡Ž":"nhArr","โ‡•":"vArr","โ‡–":"nwArr","โ‡—":"neArr","โ‡˜":"seArr","โ‡™":"swArr","โ‡š":"lAarr","โ‡›":"rAarr","โ‡":"zigrarr","โ‡ค":"larrb","โ‡ฅ":"rarrb","โ‡ต":"duarr","โ‡ฝ":"loarr","โ‡พ":"roarr","โ‡ฟ":"hoarr","โˆ€":"forall","โˆ":"comp","โˆ‚":"part","โˆ‚ฬธ":"npart","โˆƒ":"exist","โˆ„":"nexist","โˆ…":"empty","โˆ‡":"Del","โˆˆ":"in","โˆ‰":"notin","โˆ‹":"ni","โˆŒ":"notni","ฯถ":"bepsi","โˆ":"prod","โˆ":"coprod","โˆ‘":"sum","+":"plus","ยฑ":"pm","รท":"div","ร—":"times","<":"lt","โ‰ฎ":"nlt","<โƒ’":"nvlt","=":"equals","โ‰ ":"ne","=โƒฅ":"bne","โฉต":"Equal",">":"gt","โ‰ฏ":"ngt",">โƒ’":"nvgt","ยฌ":"not","|":"vert","ยฆ":"brvbar","โˆ’":"minus","โˆ“":"mp","โˆ”":"plusdo","โ„":"frasl","โˆ–":"setmn","โˆ—":"lowast","โˆ˜":"compfn","โˆš":"Sqrt","โˆ":"prop","โˆž":"infin","โˆŸ":"angrt","โˆ ":"ang","โˆ โƒ’":"nang","โˆก":"angmsd","โˆข":"angsph","โˆฃ":"mid","โˆค":"nmid","โˆฅ":"par","โˆฆ":"npar","โˆง":"and","โˆจ":"or","โˆฉ":"cap","โˆฉ๏ธ€":"caps","โˆช":"cup","โˆช๏ธ€":"cups","โˆซ":"int","โˆฌ":"Int","โˆญ":"tint","โจŒ":"qint","โˆฎ":"oint","โˆฏ":"Conint","โˆฐ":"Cconint","โˆฑ":"cwint","โˆฒ":"cwconint","โˆณ":"awconint","โˆด":"there4","โˆต":"becaus","โˆถ":"ratio","โˆท":"Colon","โˆธ":"minusd","โˆบ":"mDDot","โˆป":"homtht","โˆผ":"sim","โ‰":"nsim","โˆผโƒ’":"nvsim","โˆฝ":"bsim","โˆฝฬฑ":"race","โˆพ":"ac","โˆพฬณ":"acE","โˆฟ":"acd","โ‰€":"wr","โ‰‚":"esim","โ‰‚ฬธ":"nesim","โ‰ƒ":"sime","โ‰„":"nsime","โ‰…":"cong","โ‰‡":"ncong","โ‰†":"simne","โ‰ˆ":"ap","โ‰‰":"nap","โ‰Š":"ape","โ‰‹":"apid","โ‰‹ฬธ":"napid","โ‰Œ":"bcong","โ‰":"CupCap","โ‰ญ":"NotCupCap","โ‰โƒ’":"nvap","โ‰Ž":"bump","โ‰Žฬธ":"nbump","โ‰":"bumpe","โ‰ฬธ":"nbumpe","โ‰":"doteq","โ‰ฬธ":"nedot","โ‰‘":"eDot","โ‰’":"efDot","โ‰“":"erDot","โ‰”":"colone","โ‰•":"ecolon","โ‰–":"ecir","โ‰—":"cire","โ‰™":"wedgeq","โ‰š":"veeeq","โ‰œ":"trie","โ‰Ÿ":"equest","โ‰ก":"equiv","โ‰ข":"nequiv","โ‰กโƒฅ":"bnequiv","โ‰ค":"le","โ‰ฐ":"nle","โ‰คโƒ’":"nvle","โ‰ฅ":"ge","โ‰ฑ":"nge","โ‰ฅโƒ’":"nvge","โ‰ฆ":"lE","โ‰ฆฬธ":"nlE","โ‰ง":"gE","โ‰งฬธ":"ngE","โ‰จ๏ธ€":"lvnE","โ‰จ":"lnE","โ‰ฉ":"gnE","โ‰ฉ๏ธ€":"gvnE","โ‰ช":"ll","โ‰ชฬธ":"nLtv","โ‰ชโƒ’":"nLt","โ‰ซ":"gg","โ‰ซฬธ":"nGtv","โ‰ซโƒ’":"nGt","โ‰ฌ":"twixt","โ‰ฒ":"lsim","โ‰ด":"nlsim","โ‰ณ":"gsim","โ‰ต":"ngsim","โ‰ถ":"lg","โ‰ธ":"ntlg","โ‰ท":"gl","โ‰น":"ntgl","โ‰บ":"pr","โŠ€":"npr","โ‰ป":"sc","โŠ":"nsc","โ‰ผ":"prcue","โ‹ ":"nprcue","โ‰ฝ":"sccue","โ‹ก":"nsccue","โ‰พ":"prsim","โ‰ฟ":"scsim","โ‰ฟฬธ":"NotSucceedsTilde","โŠ‚":"sub","โŠ„":"nsub","โŠ‚โƒ’":"vnsub","โŠƒ":"sup","โŠ…":"nsup","โŠƒโƒ’":"vnsup","โŠ†":"sube","โŠˆ":"nsube","โŠ‡":"supe","โŠ‰":"nsupe","โŠŠ๏ธ€":"vsubne","โŠŠ":"subne","โŠ‹๏ธ€":"vsupne","โŠ‹":"supne","โŠ":"cupdot","โŠŽ":"uplus","โŠ":"sqsub","โŠฬธ":"NotSquareSubset","โŠ":"sqsup","โŠฬธ":"NotSquareSuperset","โŠ‘":"sqsube","โ‹ข":"nsqsube","โŠ’":"sqsupe","โ‹ฃ":"nsqsupe","โŠ“":"sqcap","โŠ“๏ธ€":"sqcaps","โŠ”":"sqcup","โŠ”๏ธ€":"sqcups","โŠ•":"oplus","โŠ–":"ominus","โŠ—":"otimes","โŠ˜":"osol","โŠ™":"odot","โŠš":"ocir","โŠ›":"oast","โŠ":"odash","โŠž":"plusb","โŠŸ":"minusb","โŠ ":"timesb","โŠก":"sdotb","โŠข":"vdash","โŠฌ":"nvdash","โŠฃ":"dashv","โŠค":"top","โŠฅ":"bot","โŠง":"models","โŠจ":"vDash","โŠญ":"nvDash","โŠฉ":"Vdash","โŠฎ":"nVdash","โŠช":"Vvdash","โŠซ":"VDash","โŠฏ":"nVDash","โŠฐ":"prurel","โŠฒ":"vltri","โ‹ช":"nltri","โŠณ":"vrtri","โ‹ซ":"nrtri","โŠด":"ltrie","โ‹ฌ":"nltrie","โŠดโƒ’":"nvltrie","โŠต":"rtrie","โ‹ญ":"nrtrie","โŠตโƒ’":"nvrtrie","โŠถ":"origof","โŠท":"imof","โŠธ":"mumap","โŠน":"hercon","โŠบ":"intcal","โŠป":"veebar","โŠฝ":"barvee","โŠพ":"angrtvb","โŠฟ":"lrtri","โ‹€":"Wedge","โ‹":"Vee","โ‹‚":"xcap","โ‹ƒ":"xcup","โ‹„":"diam","โ‹…":"sdot","โ‹†":"Star","โ‹‡":"divonx","โ‹ˆ":"bowtie","โ‹‰":"ltimes","โ‹Š":"rtimes","โ‹‹":"lthree","โ‹Œ":"rthree","โ‹":"bsime","โ‹Ž":"cuvee","โ‹":"cuwed","โ‹":"Sub","โ‹‘":"Sup","โ‹’":"Cap","โ‹“":"Cup","โ‹”":"fork","โ‹•":"epar","โ‹–":"ltdot","โ‹—":"gtdot","โ‹˜":"Ll","โ‹˜ฬธ":"nLl","โ‹™":"Gg","โ‹™ฬธ":"nGg","โ‹š๏ธ€":"lesg","โ‹š":"leg","โ‹›":"gel","โ‹›๏ธ€":"gesl","โ‹ž":"cuepr","โ‹Ÿ":"cuesc","โ‹ฆ":"lnsim","โ‹ง":"gnsim","โ‹จ":"prnsim","โ‹ฉ":"scnsim","โ‹ฎ":"vellip","โ‹ฏ":"ctdot","โ‹ฐ":"utdot","โ‹ฑ":"dtdot","โ‹ฒ":"disin","โ‹ณ":"isinsv","โ‹ด":"isins","โ‹ต":"isindot","โ‹ตฬธ":"notindot","โ‹ถ":"notinvc","โ‹ท":"notinvb","โ‹น":"isinE","โ‹นฬธ":"notinE","โ‹บ":"nisd","โ‹ป":"xnis","โ‹ผ":"nis","โ‹ฝ":"notnivc","โ‹พ":"notnivb","โŒ…":"barwed","โŒ†":"Barwed","โŒŒ":"drcrop","โŒ":"dlcrop","โŒŽ":"urcrop","โŒ":"ulcrop","โŒ":"bnot","โŒ’":"profline","โŒ“":"profsurf","โŒ•":"telrec","โŒ–":"target","โŒœ":"ulcorn","โŒ":"urcorn","โŒž":"dlcorn","โŒŸ":"drcorn","โŒข":"frown","โŒฃ":"smile","โŒญ":"cylcty","โŒฎ":"profalar","โŒถ":"topbot","โŒฝ":"ovbar","โŒฟ":"solbar","โผ":"angzarr","โŽฐ":"lmoust","โŽฑ":"rmoust","โŽด":"tbrk","โŽต":"bbrk","โŽถ":"bbrktbrk","โœ":"OverParenthesis","โ":"UnderParenthesis","โž":"OverBrace","โŸ":"UnderBrace","โข":"trpezium","โง":"elinters","โฃ":"blank","โ”€":"boxh","โ”‚":"boxv","โ”Œ":"boxdr","โ”":"boxdl","โ””":"boxur","โ”˜":"boxul","โ”œ":"boxvr","โ”ค":"boxvl","โ”ฌ":"boxhd","โ”ด":"boxhu","โ”ผ":"boxvh","โ•":"boxH","โ•‘":"boxV","โ•’":"boxdR","โ•“":"boxDr","โ•”":"boxDR","โ••":"boxdL","โ•–":"boxDl","โ•—":"boxDL","โ•˜":"boxuR","โ•™":"boxUr","โ•š":"boxUR","โ•›":"boxuL","โ•œ":"boxUl","โ•":"boxUL","โ•ž":"boxvR","โ•Ÿ":"boxVr","โ• ":"boxVR","โ•ก":"boxvL","โ•ข":"boxVl","โ•ฃ":"boxVL","โ•ค":"boxHd","โ•ฅ":"boxhD","โ•ฆ":"boxHD","โ•ง":"boxHu","โ•จ":"boxhU","โ•ฉ":"boxHU","โ•ช":"boxvH","โ•ซ":"boxVh","โ•ฌ":"boxVH","โ–€":"uhblk","โ–„":"lhblk","โ–ˆ":"block","โ–‘":"blk14","โ–’":"blk12","โ–“":"blk34","โ–ก":"squ","โ–ช":"squf","โ–ซ":"EmptyVerySmallSquare","โ–ญ":"rect","โ–ฎ":"marker","โ–ฑ":"fltns","โ–ณ":"xutri","โ–ด":"utrif","โ–ต":"utri","โ–ธ":"rtrif","โ–น":"rtri","โ–ฝ":"xdtri","โ–พ":"dtrif","โ–ฟ":"dtri","โ—‚":"ltrif","โ—ƒ":"ltri","โ—Š":"loz","โ—‹":"cir","โ—ฌ":"tridot","โ—ฏ":"xcirc","โ—ธ":"ultri","โ—น":"urtri","โ—บ":"lltri","โ—ป":"EmptySmallSquare","โ—ผ":"FilledSmallSquare","โ˜…":"starf","โ˜†":"star","โ˜Ž":"phone","โ™€":"female","โ™‚":"male","โ™ ":"spades","โ™ฃ":"clubs","โ™ฅ":"hearts","โ™ฆ":"diams","โ™ช":"sung","โœ“":"check","โœ—":"cross","โœ ":"malt","โœถ":"sext","โ˜":"VerticalSeparator","โŸˆ":"bsolhsub","โŸ‰":"suphsol","โŸต":"xlarr","โŸถ":"xrarr","โŸท":"xharr","โŸธ":"xlArr","โŸน":"xrArr","โŸบ":"xhArr","โŸผ":"xmap","โŸฟ":"dzigrarr","โค‚":"nvlArr","โคƒ":"nvrArr","โค„":"nvHarr","โค…":"Map","โคŒ":"lbarr","โค":"rbarr","โคŽ":"lBarr","โค":"rBarr","โค":"RBarr","โค‘":"DDotrahd","โค’":"UpArrowBar","โค“":"DownArrowBar","โค–":"Rarrtl","โค™":"latail","โคš":"ratail","โค›":"lAtail","โคœ":"rAtail","โค":"larrfs","โคž":"rarrfs","โคŸ":"larrbfs","โค ":"rarrbfs","โคฃ":"nwarhk","โคค":"nearhk","โคฅ":"searhk","โคฆ":"swarhk","โคง":"nwnear","โคจ":"toea","โคฉ":"tosa","โคช":"swnwar","โคณ":"rarrc","โคณฬธ":"nrarrc","โคต":"cudarrr","โคถ":"ldca","โคท":"rdca","โคธ":"cudarrl","โคน":"larrpl","โคผ":"curarrm","โคฝ":"cularrp","โฅ…":"rarrpl","โฅˆ":"harrcir","โฅ‰":"Uarrocir","โฅŠ":"lurdshar","โฅ‹":"ldrushar","โฅŽ":"LeftRightVector","โฅ":"RightUpDownVector","โฅ":"DownLeftRightVector","โฅ‘":"LeftUpDownVector","โฅ’":"LeftVectorBar","โฅ“":"RightVectorBar","โฅ”":"RightUpVectorBar","โฅ•":"RightDownVectorBar","โฅ–":"DownLeftVectorBar","โฅ—":"DownRightVectorBar","โฅ˜":"LeftUpVectorBar","โฅ™":"LeftDownVectorBar","โฅš":"LeftTeeVector","โฅ›":"RightTeeVector","โฅœ":"RightUpTeeVector","โฅ":"RightDownTeeVector","โฅž":"DownLeftTeeVector","โฅŸ":"DownRightTeeVector","โฅ ":"LeftUpTeeVector","โฅก":"LeftDownTeeVector","โฅข":"lHar","โฅฃ":"uHar","โฅค":"rHar","โฅฅ":"dHar","โฅฆ":"luruhar","โฅง":"ldrdhar","โฅจ":"ruluhar","โฅฉ":"rdldhar","โฅช":"lharul","โฅซ":"llhard","โฅฌ":"rharul","โฅญ":"lrhard","โฅฎ":"udhar","โฅฏ":"duhar","โฅฐ":"RoundImplies","โฅฑ":"erarr","โฅฒ":"simrarr","โฅณ":"larrsim","โฅด":"rarrsim","โฅต":"rarrap","โฅถ":"ltlarr","โฅธ":"gtrarr","โฅน":"subrarr","โฅป":"suplarr","โฅผ":"lfisht","โฅฝ":"rfisht","โฅพ":"ufisht","โฅฟ":"dfisht","โฆš":"vzigzag","โฆœ":"vangrt","โฆ":"angrtvbd","โฆค":"ange","โฆฅ":"range","โฆฆ":"dwangle","โฆง":"uwangle","โฆจ":"angmsdaa","โฆฉ":"angmsdab","โฆช":"angmsdac","โฆซ":"angmsdad","โฆฌ":"angmsdae","โฆญ":"angmsdaf","โฆฎ":"angmsdag","โฆฏ":"angmsdah","โฆฐ":"bemptyv","โฆฑ":"demptyv","โฆฒ":"cemptyv","โฆณ":"raemptyv","โฆด":"laemptyv","โฆต":"ohbar","โฆถ":"omid","โฆท":"opar","โฆน":"operp","โฆป":"olcross","โฆผ":"odsold","โฆพ":"olcir","โฆฟ":"ofcir","โง€":"olt","โง":"ogt","โง‚":"cirscir","โงƒ":"cirE","โง„":"solb","โง…":"bsolb","โง‰":"boxbox","โง":"trisb","โงŽ":"rtriltri","โง":"LeftTriangleBar","โงฬธ":"NotLeftTriangleBar","โง":"RightTriangleBar","โงฬธ":"NotRightTriangleBar","โงœ":"iinfin","โง":"infintie","โงž":"nvinfin","โงฃ":"eparsl","โงค":"smeparsl","โงฅ":"eqvparsl","โงซ":"lozf","โงด":"RuleDelayed","โงถ":"dsol","โจ€":"xodot","โจ":"xoplus","โจ‚":"xotime","โจ„":"xuplus","โจ†":"xsqcup","โจ":"fpartint","โจ":"cirfnint","โจ‘":"awint","โจ’":"rppolint","โจ“":"scpolint","โจ”":"npolint","โจ•":"pointint","โจ–":"quatint","โจ—":"intlarhk","โจข":"pluscir","โจฃ":"plusacir","โจค":"simplus","โจฅ":"plusdu","โจฆ":"plussim","โจง":"plustwo","โจฉ":"mcomma","โจช":"minusdu","โจญ":"loplus","โจฎ":"roplus","โจฏ":"Cross","โจฐ":"timesd","โจฑ":"timesbar","โจณ":"smashp","โจด":"lotimes","โจต":"rotimes","โจถ":"otimesas","โจท":"Otimes","โจธ":"odiv","โจน":"triplus","โจบ":"triminus","โจป":"tritime","โจผ":"iprod","โจฟ":"amalg","โฉ€":"capdot","โฉ‚":"ncup","โฉƒ":"ncap","โฉ„":"capand","โฉ…":"cupor","โฉ†":"cupcap","โฉ‡":"capcup","โฉˆ":"cupbrcap","โฉ‰":"capbrcup","โฉŠ":"cupcup","โฉ‹":"capcap","โฉŒ":"ccups","โฉ":"ccaps","โฉ":"ccupssm","โฉ“":"And","โฉ”":"Or","โฉ•":"andand","โฉ–":"oror","โฉ—":"orslope","โฉ˜":"andslope","โฉš":"andv","โฉ›":"orv","โฉœ":"andd","โฉ":"ord","โฉŸ":"wedbar","โฉฆ":"sdote","โฉช":"simdot","โฉญ":"congdot","โฉญฬธ":"ncongdot","โฉฎ":"easter","โฉฏ":"apacir","โฉฐ":"apE","โฉฐฬธ":"napE","โฉฑ":"eplus","โฉฒ":"pluse","โฉณ":"Esim","โฉท":"eDDot","โฉธ":"equivDD","โฉน":"ltcir","โฉบ":"gtcir","โฉป":"ltquest","โฉผ":"gtquest","โฉฝ":"les","โฉฝฬธ":"nles","โฉพ":"ges","โฉพฬธ":"nges","โฉฟ":"lesdot","โช€":"gesdot","โช":"lesdoto","โช‚":"gesdoto","โชƒ":"lesdotor","โช„":"gesdotol","โช…":"lap","โช†":"gap","โช‡":"lne","โชˆ":"gne","โช‰":"lnap","โชŠ":"gnap","โช‹":"lEg","โชŒ":"gEl","โช":"lsime","โชŽ":"gsime","โช":"lsimg","โช":"gsiml","โช‘":"lgE","โช’":"glE","โช“":"lesges","โช”":"gesles","โช•":"els","โช–":"egs","โช—":"elsdot","โช˜":"egsdot","โช™":"el","โชš":"eg","โช":"siml","โชž":"simg","โชŸ":"simlE","โช ":"simgE","โชก":"LessLess","โชกฬธ":"NotNestedLessLess","โชข":"GreaterGreater","โชขฬธ":"NotNestedGreaterGreater","โชค":"glj","โชฅ":"gla","โชฆ":"ltcc","โชง":"gtcc","โชจ":"lescc","โชฉ":"gescc","โชช":"smt","โชซ":"lat","โชฌ":"smte","โชฌ๏ธ€":"smtes","โชญ":"late","โชญ๏ธ€":"lates","โชฎ":"bumpE","โชฏ":"pre","โชฏฬธ":"npre","โชฐ":"sce","โชฐฬธ":"nsce","โชณ":"prE","โชด":"scE","โชต":"prnE","โชถ":"scnE","โชท":"prap","โชธ":"scap","โชน":"prnap","โชบ":"scnap","โชป":"Pr","โชผ":"Sc","โชฝ":"subdot","โชพ":"supdot","โชฟ":"subplus","โซ€":"supplus","โซ":"submult","โซ‚":"supmult","โซƒ":"subedot","โซ„":"supedot","โซ…":"subE","โซ…ฬธ":"nsubE","โซ†":"supE","โซ†ฬธ":"nsupE","โซ‡":"subsim","โซˆ":"supsim","โซ‹๏ธ€":"vsubnE","โซ‹":"subnE","โซŒ๏ธ€":"vsupnE","โซŒ":"supnE","โซ":"csub","โซ":"csup","โซ‘":"csube","โซ’":"csupe","โซ“":"subsup","โซ”":"supsub","โซ•":"subsub","โซ–":"supsup","โซ—":"suphsub","โซ˜":"supdsub","โซ™":"forkv","โซš":"topfork","โซ›":"mlcp","โซค":"Dashv","โซฆ":"Vdashl","โซง":"Barv","โซจ":"vBar","โซฉ":"vBarv","โซซ":"Vbar","โซฌ":"Not","โซญ":"bNot","โซฎ":"rnmid","โซฏ":"cirmid","โซฐ":"midcir","โซฑ":"topcir","โซฒ":"nhpar","โซณ":"parsim","โซฝ":"parsl","โซฝโƒฅ":"nparsl","โ™ญ":"flat","โ™ฎ":"natur","โ™ฏ":"sharp","ยค":"curren","ยข":"cent",$:"dollar","ยฃ":"pound","ยฅ":"yen","โ‚ฌ":"euro","ยน":"sup1","ยฝ":"half","โ…“":"frac13","ยผ":"frac14","โ…•":"frac15","โ…™":"frac16","โ…›":"frac18","ยฒ":"sup2","โ…”":"frac23","โ…–":"frac25","ยณ":"sup3","ยพ":"frac34","โ…—":"frac35","โ…œ":"frac38","โ…˜":"frac45","โ…š":"frac56","โ…":"frac58","โ…ž":"frac78",๐’ถ:"ascr",๐•’:"aopf",๐”ž:"afr",๐”ธ:"Aopf",๐”„:"Afr",๐’œ:"Ascr",ยช:"ordf",รก:"aacute",ร:"Aacute",ร :"agrave",ร€:"Agrave",ฤƒ:"abreve",ฤ‚:"Abreve",รข:"acirc",ร‚:"Acirc",รฅ:"aring",ร…:"angst",รค:"auml",ร„:"Auml",รฃ:"atilde",รƒ:"Atilde",ฤ…:"aogon",ฤ„:"Aogon",ฤ:"amacr",ฤ€:"Amacr",รฆ:"aelig",ร†:"AElig",๐’ท:"bscr",๐•“:"bopf",๐”Ÿ:"bfr",๐”น:"Bopf",โ„ฌ:"Bscr",๐”…:"Bfr",๐” :"cfr",๐’ธ:"cscr",๐•”:"copf",โ„ญ:"Cfr",๐’ž:"Cscr",โ„‚:"Copf",ฤ‡:"cacute",ฤ†:"Cacute",ฤ‰:"ccirc",ฤˆ:"Ccirc",ฤ:"ccaron",ฤŒ:"Ccaron",ฤ‹:"cdot",ฤŠ:"Cdot",รง:"ccedil",ร‡:"Ccedil","โ„…":"incare",๐”ก:"dfr",โ…†:"dd",๐••:"dopf",๐’น:"dscr",๐’Ÿ:"Dscr",๐”‡:"Dfr",โ……:"DD",๐”ป:"Dopf",ฤ:"dcaron",ฤŽ:"Dcaron",ฤ‘:"dstrok",ฤ:"Dstrok",รฐ:"eth",ร:"ETH",โ…‡:"ee",โ„ฏ:"escr",๐”ข:"efr",๐•–:"eopf",โ„ฐ:"Escr",๐”ˆ:"Efr",๐”ผ:"Eopf",รฉ:"eacute",ร‰:"Eacute",รจ:"egrave",รˆ:"Egrave",รช:"ecirc",รŠ:"Ecirc",ฤ›:"ecaron",ฤš:"Ecaron",รซ:"euml",ร‹:"Euml",ฤ—:"edot",ฤ–:"Edot",ฤ™:"eogon",ฤ˜:"Eogon",ฤ“:"emacr",ฤ’:"Emacr",๐”ฃ:"ffr",๐•—:"fopf",๐’ป:"fscr",๐”‰:"Ffr",๐”ฝ:"Fopf",โ„ฑ:"Fscr",๏ฌ€:"fflig",๏ฌƒ:"ffilig",๏ฌ„:"ffllig",๏ฌ:"filig",fj:"fjlig",๏ฌ‚:"fllig",ฦ’:"fnof",โ„Š:"gscr",๐•˜:"gopf",๐”ค:"gfr",๐’ข:"Gscr",๐”พ:"Gopf",๐”Š:"Gfr",วต:"gacute",ฤŸ:"gbreve",ฤž:"Gbreve",ฤ:"gcirc",ฤœ:"Gcirc",ฤก:"gdot",ฤ :"Gdot",ฤข:"Gcedil",๐”ฅ:"hfr",โ„Ž:"planckh",๐’ฝ:"hscr",๐•™:"hopf",โ„‹:"Hscr",โ„Œ:"Hfr",โ„:"Hopf",ฤฅ:"hcirc",ฤค:"Hcirc",โ„:"hbar",ฤง:"hstrok",ฤฆ:"Hstrok",๐•š:"iopf",๐”ฆ:"ifr",๐’พ:"iscr",โ…ˆ:"ii",๐•€:"Iopf",โ„:"Iscr",โ„‘:"Im",รญ:"iacute",ร:"Iacute",รฌ:"igrave",รŒ:"Igrave",รฎ:"icirc",รŽ:"Icirc",รฏ:"iuml",ร:"Iuml",ฤฉ:"itilde",ฤจ:"Itilde",ฤฐ:"Idot",ฤฏ:"iogon",ฤฎ:"Iogon",ฤซ:"imacr",ฤช:"Imacr",ฤณ:"ijlig",ฤฒ:"IJlig",ฤฑ:"imath",๐’ฟ:"jscr",๐•›:"jopf",๐”ง:"jfr",๐’ฅ:"Jscr",๐”:"Jfr",๐•:"Jopf",ฤต:"jcirc",ฤด:"Jcirc",ศท:"jmath",๐•œ:"kopf",๐“€:"kscr",๐”จ:"kfr",๐’ฆ:"Kscr",๐•‚:"Kopf",๐”Ž:"Kfr",ฤท:"kcedil",ฤถ:"Kcedil",๐”ฉ:"lfr",๐“:"lscr",โ„“:"ell",๐•:"lopf",โ„’:"Lscr",๐”:"Lfr",๐•ƒ:"Lopf",ฤบ:"lacute",ฤน:"Lacute",ฤพ:"lcaron",ฤฝ:"Lcaron",ฤผ:"lcedil",ฤป:"Lcedil",ล‚:"lstrok",ล:"Lstrok",ล€:"lmidot",ฤฟ:"Lmidot",๐”ช:"mfr",๐•ž:"mopf",๐“‚:"mscr",๐”:"Mfr",๐•„:"Mopf",โ„ณ:"Mscr",๐”ซ:"nfr",๐•Ÿ:"nopf",๐“ƒ:"nscr",โ„•:"Nopf",๐’ฉ:"Nscr",๐”‘:"Nfr",ล„:"nacute",ลƒ:"Nacute",ลˆ:"ncaron",ล‡:"Ncaron",รฑ:"ntilde",ร‘:"Ntilde",ล†:"ncedil",ล…:"Ncedil","โ„–":"numero",ล‹:"eng",ลŠ:"ENG",๐• :"oopf",๐”ฌ:"ofr",โ„ด:"oscr",๐’ช:"Oscr",๐”’:"Ofr",๐•†:"Oopf",ยบ:"ordm",รณ:"oacute",ร“:"Oacute",รฒ:"ograve",ร’:"Ograve",รด:"ocirc",ร”:"Ocirc",รถ:"ouml",ร–:"Ouml",ล‘:"odblac",ล:"Odblac",รต:"otilde",ร•:"Otilde",รธ:"oslash",ร˜:"Oslash",ล:"omacr",ลŒ:"Omacr",ล“:"oelig",ล’:"OElig",๐”ญ:"pfr",๐“…:"pscr",๐•ก:"popf",โ„™:"Popf",๐”“:"Pfr",๐’ซ:"Pscr",๐•ข:"qopf",๐”ฎ:"qfr",๐“†:"qscr",๐’ฌ:"Qscr",๐””:"Qfr",โ„š:"Qopf",ฤธ:"kgreen",๐”ฏ:"rfr",๐•ฃ:"ropf",๐“‡:"rscr",โ„›:"Rscr",โ„œ:"Re",โ„:"Ropf",ล•:"racute",ล”:"Racute",ล™:"rcaron",ล˜:"Rcaron",ล—:"rcedil",ล–:"Rcedil",๐•ค:"sopf",๐“ˆ:"sscr",๐”ฐ:"sfr",๐•Š:"Sopf",๐”–:"Sfr",๐’ฎ:"Sscr","โ“ˆ":"oS",ล›:"sacute",ลš:"Sacute",ล:"scirc",ลœ:"Scirc",ลก:"scaron",ล :"Scaron",ลŸ:"scedil",ลž:"Scedil",รŸ:"szlig",๐”ฑ:"tfr",๐“‰:"tscr",๐•ฅ:"topf",๐’ฏ:"Tscr",๐”—:"Tfr",๐•‹:"Topf",ลฅ:"tcaron",ลค:"Tcaron",ลฃ:"tcedil",ลข:"Tcedil","โ„ข":"trade",ลง:"tstrok",ลฆ:"Tstrok",๐“Š:"uscr",๐•ฆ:"uopf",๐”ฒ:"ufr",๐•Œ:"Uopf",๐”˜:"Ufr",๐’ฐ:"Uscr",รบ:"uacute",รš:"Uacute",รน:"ugrave",ร™:"Ugrave",ลญ:"ubreve",ลฌ:"Ubreve",รป:"ucirc",ร›:"Ucirc",ลฏ:"uring",ลฎ:"Uring",รผ:"uuml",รœ:"Uuml",ลฑ:"udblac",ลฐ:"Udblac",ลฉ:"utilde",ลจ:"Utilde",ลณ:"uogon",ลฒ:"Uogon",ลซ:"umacr",ลช:"Umacr",๐”ณ:"vfr",๐•ง:"vopf",๐“‹:"vscr",๐”™:"Vfr",๐•:"Vopf",๐’ฑ:"Vscr",๐•จ:"wopf",๐“Œ:"wscr",๐”ด:"wfr",๐’ฒ:"Wscr",๐•Ž:"Wopf",๐”š:"Wfr",ลต:"wcirc",ลด:"Wcirc",๐”ต:"xfr",๐“:"xscr",๐•ฉ:"xopf",๐•:"Xopf",๐”›:"Xfr",๐’ณ:"Xscr",๐”ถ:"yfr",๐“Ž:"yscr",๐•ช:"yopf",๐’ด:"Yscr",๐”œ:"Yfr",๐•:"Yopf",รฝ:"yacute",ร:"Yacute",ลท:"ycirc",ลถ:"Ycirc",รฟ:"yuml",ลธ:"Yuml",๐“:"zscr",๐”ท:"zfr",๐•ซ:"zopf",โ„จ:"Zfr",โ„ค:"Zopf",๐’ต:"Zscr",ลบ:"zacute",ลน:"Zacute",ลพ:"zcaron",ลฝ:"Zcaron",ลผ:"zdot",ลป:"Zdot",ฦต:"imped",รพ:"thorn",รž:"THORN",ล‰:"napos",ฮฑ:"alpha",ฮ‘:"Alpha",ฮฒ:"beta",ฮ’:"Beta",ฮณ:"gamma",ฮ“:"Gamma",ฮด:"delta",ฮ”:"Delta",ฮต:"epsi",ฯต:"epsiv",ฮ•:"Epsilon",ฯ:"gammad",ฯœ:"Gammad",ฮถ:"zeta",ฮ–:"Zeta",ฮท:"eta",ฮ—:"Eta",ฮธ:"theta",ฯ‘:"thetav",ฮ˜:"Theta",ฮน:"iota",ฮ™:"Iota",ฮบ:"kappa",ฯฐ:"kappav",ฮš:"Kappa",ฮป:"lambda",ฮ›:"Lambda",ฮผ:"mu",ยต:"micro",ฮœ:"Mu",ฮฝ:"nu",ฮ:"Nu",ฮพ:"xi",ฮž:"Xi",ฮฟ:"omicron",ฮŸ:"Omicron",ฯ€:"pi",ฯ–:"piv",ฮ :"Pi",ฯ:"rho",ฯฑ:"rhov",ฮก:"Rho",ฯƒ:"sigma",ฮฃ:"Sigma",ฯ‚:"sigmaf",ฯ„:"tau",ฮค:"Tau",ฯ…:"upsi",ฮฅ:"Upsilon",ฯ’:"Upsi",ฯ†:"phi",ฯ•:"phiv",ฮฆ:"Phi",ฯ‡:"chi",ฮง:"Chi",ฯˆ:"psi",ฮจ:"Psi",ฯ‰:"omega",ฮฉ:"ohm",ะฐ:"acy",ะ:"Acy",ะฑ:"bcy",ะ‘:"Bcy",ะฒ:"vcy",ะ’:"Vcy",ะณ:"gcy",ะ“:"Gcy",ั“:"gjcy",ะƒ:"GJcy",ะด:"dcy",ะ”:"Dcy",ั’:"djcy",ะ‚:"DJcy",ะต:"iecy",ะ•:"IEcy",ั‘:"iocy",ะ:"IOcy",ั”:"jukcy",ะ„:"Jukcy",ะถ:"zhcy",ะ–:"ZHcy",ะท:"zcy",ะ—:"Zcy",ั•:"dscy",ะ…:"DScy",ะธ:"icy",ะ˜:"Icy",ั–:"iukcy",ะ†:"Iukcy",ั—:"yicy",ะ‡:"YIcy",ะน:"jcy",ะ™:"Jcy",ั˜:"jsercy",ะˆ:"Jsercy",ะบ:"kcy",ะš:"Kcy",ัœ:"kjcy",ะŒ:"KJcy",ะป:"lcy",ะ›:"Lcy",ั™:"ljcy",ะ‰:"LJcy",ะผ:"mcy",ะœ:"Mcy",ะฝ:"ncy",ะ:"Ncy",ัš:"njcy",ะŠ:"NJcy",ะพ:"ocy",ะž:"Ocy",ะฟ:"pcy",ะŸ:"Pcy",ั€:"rcy",ะ :"Rcy",ั:"scy",ะก:"Scy",ั‚:"tcy",ะข:"Tcy",ั›:"tshcy",ะ‹:"TSHcy",ัƒ:"ucy",ะฃ:"Ucy",ัž:"ubrcy",ะŽ:"Ubrcy",ั„:"fcy",ะค:"Fcy",ั…:"khcy",ะฅ:"KHcy",ั†:"tscy",ะฆ:"TScy",ั‡:"chcy",ะง:"CHcy",ัŸ:"dzcy",ะ:"DZcy",ัˆ:"shcy",ะจ:"SHcy",ั‰:"shchcy",ะฉ:"SHCHcy",ัŠ:"hardcy",ะช:"HARDcy",ั‹:"ycy",ะซ:"Ycy",ัŒ:"softcy",ะฌ:"SOFTcy",ั:"ecy",ะญ:"Ecy",ัŽ:"yucy",ะฎ:"YUcy",ั:"yacy",ะฏ:"YAcy",โ„ต:"aleph",โ„ถ:"beth",โ„ท:"gimel",โ„ธ:"daleth"},u=/["&'<>`]/g,h={'"':""","&":"&","'":"'","<":"<",">":">","`":"`"},f=/&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/,p=/[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,m=/&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g,g={aacute:"รก",Aacute:"ร",abreve:"ฤƒ",Abreve:"ฤ‚",ac:"โˆพ",acd:"โˆฟ",acE:"โˆพฬณ",acirc:"รข",Acirc:"ร‚",acute:"ยด",acy:"ะฐ",Acy:"ะ",aelig:"รฆ",AElig:"ร†",af:"โก",afr:"๐”ž",Afr:"๐”„",agrave:"ร ",Agrave:"ร€",alefsym:"โ„ต",aleph:"โ„ต",alpha:"ฮฑ",Alpha:"ฮ‘",amacr:"ฤ",Amacr:"ฤ€",amalg:"โจฟ",amp:"&",AMP:"&",and:"โˆง",And:"โฉ“",andand:"โฉ•",andd:"โฉœ",andslope:"โฉ˜",andv:"โฉš",ang:"โˆ ",ange:"โฆค",angle:"โˆ ",angmsd:"โˆก",angmsdaa:"โฆจ",angmsdab:"โฆฉ",angmsdac:"โฆช",angmsdad:"โฆซ",angmsdae:"โฆฌ",angmsdaf:"โฆญ",angmsdag:"โฆฎ",angmsdah:"โฆฏ",angrt:"โˆŸ",angrtvb:"โŠพ",angrtvbd:"โฆ",angsph:"โˆข",angst:"ร…",angzarr:"โผ",aogon:"ฤ…",Aogon:"ฤ„",aopf:"๐•’",Aopf:"๐”ธ",ap:"โ‰ˆ",apacir:"โฉฏ",ape:"โ‰Š",apE:"โฉฐ",apid:"โ‰‹",apos:"'",ApplyFunction:"โก",approx:"โ‰ˆ",approxeq:"โ‰Š",aring:"รฅ",Aring:"ร…",ascr:"๐’ถ",Ascr:"๐’œ",Assign:"โ‰”",ast:"*",asymp:"โ‰ˆ",asympeq:"โ‰",atilde:"รฃ",Atilde:"รƒ",auml:"รค",Auml:"ร„",awconint:"โˆณ",awint:"โจ‘",backcong:"โ‰Œ",backepsilon:"ฯถ",backprime:"โ€ต",backsim:"โˆฝ",backsimeq:"โ‹",Backslash:"โˆ–",Barv:"โซง",barvee:"โŠฝ",barwed:"โŒ…",Barwed:"โŒ†",barwedge:"โŒ…",bbrk:"โŽต",bbrktbrk:"โŽถ",bcong:"โ‰Œ",bcy:"ะฑ",Bcy:"ะ‘",bdquo:"โ€ž",becaus:"โˆต",because:"โˆต",Because:"โˆต",bemptyv:"โฆฐ",bepsi:"ฯถ",bernou:"โ„ฌ",Bernoullis:"โ„ฌ",beta:"ฮฒ",Beta:"ฮ’",beth:"โ„ถ",between:"โ‰ฌ",bfr:"๐”Ÿ",Bfr:"๐”…",bigcap:"โ‹‚",bigcirc:"โ—ฏ",bigcup:"โ‹ƒ",bigodot:"โจ€",bigoplus:"โจ",bigotimes:"โจ‚",bigsqcup:"โจ†",bigstar:"โ˜…",bigtriangledown:"โ–ฝ",bigtriangleup:"โ–ณ",biguplus:"โจ„",bigvee:"โ‹",bigwedge:"โ‹€",bkarow:"โค",blacklozenge:"โงซ",blacksquare:"โ–ช",blacktriangle:"โ–ด",blacktriangledown:"โ–พ",blacktriangleleft:"โ—‚",blacktriangleright:"โ–ธ",blank:"โฃ",blk12:"โ–’",blk14:"โ–‘",blk34:"โ–“",block:"โ–ˆ",bne:"=โƒฅ",bnequiv:"โ‰กโƒฅ",bnot:"โŒ",bNot:"โซญ",bopf:"๐•“",Bopf:"๐”น",bot:"โŠฅ",bottom:"โŠฅ",bowtie:"โ‹ˆ",boxbox:"โง‰",boxdl:"โ”",boxdL:"โ••",boxDl:"โ•–",boxDL:"โ•—",boxdr:"โ”Œ",boxdR:"โ•’",boxDr:"โ•“",boxDR:"โ•”",boxh:"โ”€",boxH:"โ•",boxhd:"โ”ฌ",boxhD:"โ•ฅ",boxHd:"โ•ค",boxHD:"โ•ฆ",boxhu:"โ”ด",boxhU:"โ•จ",boxHu:"โ•ง",boxHU:"โ•ฉ",boxminus:"โŠŸ",boxplus:"โŠž",boxtimes:"โŠ ",boxul:"โ”˜",boxuL:"โ•›",boxUl:"โ•œ",boxUL:"โ•",boxur:"โ””",boxuR:"โ•˜",boxUr:"โ•™",boxUR:"โ•š",boxv:"โ”‚",boxV:"โ•‘",boxvh:"โ”ผ",boxvH:"โ•ช",boxVh:"โ•ซ",boxVH:"โ•ฌ",boxvl:"โ”ค",boxvL:"โ•ก",boxVl:"โ•ข",boxVL:"โ•ฃ",boxvr:"โ”œ",boxvR:"โ•ž",boxVr:"โ•Ÿ",boxVR:"โ• ",bprime:"โ€ต",breve:"ห˜",Breve:"ห˜",brvbar:"ยฆ",bscr:"๐’ท",Bscr:"โ„ฌ",bsemi:"โ",bsim:"โˆฝ",bsime:"โ‹",bsol:"\\",bsolb:"โง…",bsolhsub:"โŸˆ",bull:"โ€ข",bullet:"โ€ข",bump:"โ‰Ž",bumpe:"โ‰",bumpE:"โชฎ",bumpeq:"โ‰",Bumpeq:"โ‰Ž",cacute:"ฤ‡",Cacute:"ฤ†",cap:"โˆฉ",Cap:"โ‹’",capand:"โฉ„",capbrcup:"โฉ‰",capcap:"โฉ‹",capcup:"โฉ‡",capdot:"โฉ€",CapitalDifferentialD:"โ……",caps:"โˆฉ๏ธ€",caret:"โ",caron:"ห‡",Cayleys:"โ„ญ",ccaps:"โฉ",ccaron:"ฤ",Ccaron:"ฤŒ",ccedil:"รง",Ccedil:"ร‡",ccirc:"ฤ‰",Ccirc:"ฤˆ",Cconint:"โˆฐ",ccups:"โฉŒ",ccupssm:"โฉ",cdot:"ฤ‹",Cdot:"ฤŠ",cedil:"ยธ",Cedilla:"ยธ",cemptyv:"โฆฒ",cent:"ยข",centerdot:"ยท",CenterDot:"ยท",cfr:"๐” ",Cfr:"โ„ญ",chcy:"ั‡",CHcy:"ะง",check:"โœ“",checkmark:"โœ“",chi:"ฯ‡",Chi:"ฮง",cir:"โ—‹",circ:"ห†",circeq:"โ‰—",circlearrowleft:"โ†บ",circlearrowright:"โ†ป",circledast:"โŠ›",circledcirc:"โŠš",circleddash:"โŠ",CircleDot:"โŠ™",circledR:"ยฎ",circledS:"โ“ˆ",CircleMinus:"โŠ–",CirclePlus:"โŠ•",CircleTimes:"โŠ—",cire:"โ‰—",cirE:"โงƒ",cirfnint:"โจ",cirmid:"โซฏ",cirscir:"โง‚",ClockwiseContourIntegral:"โˆฒ",CloseCurlyDoubleQuote:"โ€",CloseCurlyQuote:"โ€™",clubs:"โ™ฃ",clubsuit:"โ™ฃ",colon:":",Colon:"โˆท",colone:"โ‰”",Colone:"โฉด",coloneq:"โ‰”",comma:",",commat:"@",comp:"โˆ",compfn:"โˆ˜",complement:"โˆ",complexes:"โ„‚",cong:"โ‰…",congdot:"โฉญ",Congruent:"โ‰ก",conint:"โˆฎ",Conint:"โˆฏ",ContourIntegral:"โˆฎ",copf:"๐•”",Copf:"โ„‚",coprod:"โˆ",Coproduct:"โˆ",copy:"ยฉ",COPY:"ยฉ",copysr:"โ„—",CounterClockwiseContourIntegral:"โˆณ",crarr:"โ†ต",cross:"โœ—",Cross:"โจฏ",cscr:"๐’ธ",Cscr:"๐’ž",csub:"โซ",csube:"โซ‘",csup:"โซ",csupe:"โซ’",ctdot:"โ‹ฏ",cudarrl:"โคธ",cudarrr:"โคต",cuepr:"โ‹ž",cuesc:"โ‹Ÿ",cularr:"โ†ถ",cularrp:"โคฝ",cup:"โˆช",Cup:"โ‹“",cupbrcap:"โฉˆ",cupcap:"โฉ†",CupCap:"โ‰",cupcup:"โฉŠ",cupdot:"โŠ",cupor:"โฉ…",cups:"โˆช๏ธ€",curarr:"โ†ท",curarrm:"โคผ",curlyeqprec:"โ‹ž",curlyeqsucc:"โ‹Ÿ",curlyvee:"โ‹Ž",curlywedge:"โ‹",curren:"ยค",curvearrowleft:"โ†ถ",curvearrowright:"โ†ท",cuvee:"โ‹Ž",cuwed:"โ‹",cwconint:"โˆฒ",cwint:"โˆฑ",cylcty:"โŒญ",dagger:"โ€ ",Dagger:"โ€ก",daleth:"โ„ธ",darr:"โ†“",dArr:"โ‡“",Darr:"โ†ก",dash:"โ€",dashv:"โŠฃ",Dashv:"โซค",dbkarow:"โค",dblac:"ห",dcaron:"ฤ",Dcaron:"ฤŽ",dcy:"ะด",Dcy:"ะ”",dd:"โ…†",DD:"โ……",ddagger:"โ€ก",ddarr:"โ‡Š",DDotrahd:"โค‘",ddotseq:"โฉท",deg:"ยฐ",Del:"โˆ‡",delta:"ฮด",Delta:"ฮ”",demptyv:"โฆฑ",dfisht:"โฅฟ",dfr:"๐”ก",Dfr:"๐”‡",dHar:"โฅฅ",dharl:"โ‡ƒ",dharr:"โ‡‚",DiacriticalAcute:"ยด",DiacriticalDot:"ห™",DiacriticalDoubleAcute:"ห",DiacriticalGrave:"`",DiacriticalTilde:"หœ",diam:"โ‹„",diamond:"โ‹„",Diamond:"โ‹„",diamondsuit:"โ™ฆ",diams:"โ™ฆ",die:"ยจ",DifferentialD:"โ…†",digamma:"ฯ",disin:"โ‹ฒ",div:"รท",divide:"รท",divideontimes:"โ‹‡",divonx:"โ‹‡",djcy:"ั’",DJcy:"ะ‚",dlcorn:"โŒž",dlcrop:"โŒ",dollar:"$",dopf:"๐••",Dopf:"๐”ป",dot:"ห™",Dot:"ยจ",DotDot:"โƒœ",doteq:"โ‰",doteqdot:"โ‰‘",DotEqual:"โ‰",dotminus:"โˆธ",dotplus:"โˆ”",dotsquare:"โŠก",doublebarwedge:"โŒ†",DoubleContourIntegral:"โˆฏ",DoubleDot:"ยจ",DoubleDownArrow:"โ‡“",DoubleLeftArrow:"โ‡",DoubleLeftRightArrow:"โ‡”",DoubleLeftTee:"โซค",DoubleLongLeftArrow:"โŸธ",DoubleLongLeftRightArrow:"โŸบ",DoubleLongRightArrow:"โŸน",DoubleRightArrow:"โ‡’",DoubleRightTee:"โŠจ",DoubleUpArrow:"โ‡‘",DoubleUpDownArrow:"โ‡•",DoubleVerticalBar:"โˆฅ",downarrow:"โ†“",Downarrow:"โ‡“",DownArrow:"โ†“",DownArrowBar:"โค“",DownArrowUpArrow:"โ‡ต",DownBreve:"ฬ‘",downdownarrows:"โ‡Š",downharpoonleft:"โ‡ƒ",downharpoonright:"โ‡‚",DownLeftRightVector:"โฅ",DownLeftTeeVector:"โฅž",DownLeftVector:"โ†ฝ",DownLeftVectorBar:"โฅ–",DownRightTeeVector:"โฅŸ",DownRightVector:"โ‡",DownRightVectorBar:"โฅ—",DownTee:"โŠค",DownTeeArrow:"โ†ง",drbkarow:"โค",drcorn:"โŒŸ",drcrop:"โŒŒ",dscr:"๐’น",Dscr:"๐’Ÿ",dscy:"ั•",DScy:"ะ…",dsol:"โงถ",dstrok:"ฤ‘",Dstrok:"ฤ",dtdot:"โ‹ฑ",dtri:"โ–ฟ",dtrif:"โ–พ",duarr:"โ‡ต",duhar:"โฅฏ",dwangle:"โฆฆ",dzcy:"ัŸ",DZcy:"ะ",dzigrarr:"โŸฟ",eacute:"รฉ",Eacute:"ร‰",easter:"โฉฎ",ecaron:"ฤ›",Ecaron:"ฤš",ecir:"โ‰–",ecirc:"รช",Ecirc:"รŠ",ecolon:"โ‰•",ecy:"ั",Ecy:"ะญ",eDDot:"โฉท",edot:"ฤ—",eDot:"โ‰‘",Edot:"ฤ–",ee:"โ…‡",efDot:"โ‰’",efr:"๐”ข",Efr:"๐”ˆ",eg:"โชš",egrave:"รจ",Egrave:"รˆ",egs:"โช–",egsdot:"โช˜",el:"โช™",Element:"โˆˆ",elinters:"โง",ell:"โ„“",els:"โช•",elsdot:"โช—",emacr:"ฤ“",Emacr:"ฤ’",empty:"โˆ…",emptyset:"โˆ…",EmptySmallSquare:"โ—ป",emptyv:"โˆ…",EmptyVerySmallSquare:"โ–ซ",emsp:"โ€ƒ",emsp13:"โ€„",emsp14:"โ€…",eng:"ล‹",ENG:"ลŠ",ensp:"โ€‚",eogon:"ฤ™",Eogon:"ฤ˜",eopf:"๐•–",Eopf:"๐”ผ",epar:"โ‹•",eparsl:"โงฃ",eplus:"โฉฑ",epsi:"ฮต",epsilon:"ฮต",Epsilon:"ฮ•",epsiv:"ฯต",eqcirc:"โ‰–",eqcolon:"โ‰•",eqsim:"โ‰‚",eqslantgtr:"โช–",eqslantless:"โช•",Equal:"โฉต",equals:"=",EqualTilde:"โ‰‚",equest:"โ‰Ÿ",Equilibrium:"โ‡Œ",equiv:"โ‰ก",equivDD:"โฉธ",eqvparsl:"โงฅ",erarr:"โฅฑ",erDot:"โ‰“",escr:"โ„ฏ",Escr:"โ„ฐ",esdot:"โ‰",esim:"โ‰‚",Esim:"โฉณ",eta:"ฮท",Eta:"ฮ—",eth:"รฐ",ETH:"ร",euml:"รซ",Euml:"ร‹",euro:"โ‚ฌ",excl:"!",exist:"โˆƒ",Exists:"โˆƒ",expectation:"โ„ฐ",exponentiale:"โ…‡",ExponentialE:"โ…‡",fallingdotseq:"โ‰’",fcy:"ั„",Fcy:"ะค",female:"โ™€",ffilig:"๏ฌƒ",fflig:"๏ฌ€",ffllig:"๏ฌ„",ffr:"๐”ฃ",Ffr:"๐”‰",filig:"๏ฌ",FilledSmallSquare:"โ—ผ",FilledVerySmallSquare:"โ–ช",fjlig:"fj",flat:"โ™ญ",fllig:"๏ฌ‚",fltns:"โ–ฑ",fnof:"ฦ’",fopf:"๐•—",Fopf:"๐”ฝ",forall:"โˆ€",ForAll:"โˆ€",fork:"โ‹”",forkv:"โซ™",Fouriertrf:"โ„ฑ",fpartint:"โจ",frac12:"ยฝ",frac13:"โ…“",frac14:"ยผ",frac15:"โ…•",frac16:"โ…™",frac18:"โ…›",frac23:"โ…”",frac25:"โ…–",frac34:"ยพ",frac35:"โ…—",frac38:"โ…œ",frac45:"โ…˜",frac56:"โ…š",frac58:"โ…",frac78:"โ…ž",frasl:"โ„",frown:"โŒข",fscr:"๐’ป",Fscr:"โ„ฑ",gacute:"วต",gamma:"ฮณ",Gamma:"ฮ“",gammad:"ฯ",Gammad:"ฯœ",gap:"โช†",gbreve:"ฤŸ",Gbreve:"ฤž",Gcedil:"ฤข",gcirc:"ฤ",Gcirc:"ฤœ",gcy:"ะณ",Gcy:"ะ“",gdot:"ฤก",Gdot:"ฤ ",ge:"โ‰ฅ",gE:"โ‰ง",gel:"โ‹›",gEl:"โชŒ",geq:"โ‰ฅ",geqq:"โ‰ง",geqslant:"โฉพ",ges:"โฉพ",gescc:"โชฉ",gesdot:"โช€",gesdoto:"โช‚",gesdotol:"โช„",gesl:"โ‹›๏ธ€",gesles:"โช”",gfr:"๐”ค",Gfr:"๐”Š",gg:"โ‰ซ",Gg:"โ‹™",ggg:"โ‹™",gimel:"โ„ท",gjcy:"ั“",GJcy:"ะƒ",gl:"โ‰ท",gla:"โชฅ",glE:"โช’",glj:"โชค",gnap:"โชŠ",gnapprox:"โชŠ",gne:"โชˆ",gnE:"โ‰ฉ",gneq:"โชˆ",gneqq:"โ‰ฉ",gnsim:"โ‹ง",gopf:"๐•˜",Gopf:"๐”พ",grave:"`",GreaterEqual:"โ‰ฅ",GreaterEqualLess:"โ‹›",GreaterFullEqual:"โ‰ง",GreaterGreater:"โชข",GreaterLess:"โ‰ท",GreaterSlantEqual:"โฉพ",GreaterTilde:"โ‰ณ",gscr:"โ„Š",Gscr:"๐’ข",gsim:"โ‰ณ",gsime:"โชŽ",gsiml:"โช",gt:">",Gt:"โ‰ซ",GT:">",gtcc:"โชง",gtcir:"โฉบ",gtdot:"โ‹—",gtlPar:"โฆ•",gtquest:"โฉผ",gtrapprox:"โช†",gtrarr:"โฅธ",gtrdot:"โ‹—",gtreqless:"โ‹›",gtreqqless:"โชŒ",gtrless:"โ‰ท",gtrsim:"โ‰ณ",gvertneqq:"โ‰ฉ๏ธ€",gvnE:"โ‰ฉ๏ธ€",Hacek:"ห‡",hairsp:"โ€Š",half:"ยฝ",hamilt:"โ„‹",hardcy:"ัŠ",HARDcy:"ะช",harr:"โ†”",hArr:"โ‡”",harrcir:"โฅˆ",harrw:"โ†ญ",Hat:"^",hbar:"โ„",hcirc:"ฤฅ",Hcirc:"ฤค",hearts:"โ™ฅ",heartsuit:"โ™ฅ",hellip:"โ€ฆ",hercon:"โŠน",hfr:"๐”ฅ",Hfr:"โ„Œ",HilbertSpace:"โ„‹",hksearow:"โคฅ",hkswarow:"โคฆ",hoarr:"โ‡ฟ",homtht:"โˆป",hookleftarrow:"โ†ฉ",hookrightarrow:"โ†ช",hopf:"๐•™",Hopf:"โ„",horbar:"โ€•",HorizontalLine:"โ”€",hscr:"๐’ฝ",Hscr:"โ„‹",hslash:"โ„",hstrok:"ฤง",Hstrok:"ฤฆ",HumpDownHump:"โ‰Ž",HumpEqual:"โ‰",hybull:"โƒ",hyphen:"โ€",iacute:"รญ",Iacute:"ร",ic:"โฃ",icirc:"รฎ",Icirc:"รŽ",icy:"ะธ",Icy:"ะ˜",Idot:"ฤฐ",iecy:"ะต",IEcy:"ะ•",iexcl:"ยก",iff:"โ‡”",ifr:"๐”ฆ",Ifr:"โ„‘",igrave:"รฌ",Igrave:"รŒ",ii:"โ…ˆ",iiiint:"โจŒ",iiint:"โˆญ",iinfin:"โงœ",iiota:"โ„ฉ",ijlig:"ฤณ",IJlig:"ฤฒ",Im:"โ„‘",imacr:"ฤซ",Imacr:"ฤช",image:"โ„‘",ImaginaryI:"โ…ˆ",imagline:"โ„",imagpart:"โ„‘",imath:"ฤฑ",imof:"โŠท",imped:"ฦต",Implies:"โ‡’",in:"โˆˆ",incare:"โ„…",infin:"โˆž",infintie:"โง",inodot:"ฤฑ",int:"โˆซ",Int:"โˆฌ",intcal:"โŠบ",integers:"โ„ค",Integral:"โˆซ",intercal:"โŠบ",Intersection:"โ‹‚",intlarhk:"โจ—",intprod:"โจผ",InvisibleComma:"โฃ",InvisibleTimes:"โข",iocy:"ั‘",IOcy:"ะ",iogon:"ฤฏ",Iogon:"ฤฎ",iopf:"๐•š",Iopf:"๐•€",iota:"ฮน",Iota:"ฮ™",iprod:"โจผ",iquest:"ยฟ",iscr:"๐’พ",Iscr:"โ„",isin:"โˆˆ",isindot:"โ‹ต",isinE:"โ‹น",isins:"โ‹ด",isinsv:"โ‹ณ",isinv:"โˆˆ",it:"โข",itilde:"ฤฉ",Itilde:"ฤจ",iukcy:"ั–",Iukcy:"ะ†",iuml:"รฏ",Iuml:"ร",jcirc:"ฤต",Jcirc:"ฤด",jcy:"ะน",Jcy:"ะ™",jfr:"๐”ง",Jfr:"๐”",jmath:"ศท",jopf:"๐•›",Jopf:"๐•",jscr:"๐’ฟ",Jscr:"๐’ฅ",jsercy:"ั˜",Jsercy:"ะˆ",jukcy:"ั”",Jukcy:"ะ„",kappa:"ฮบ",Kappa:"ฮš",kappav:"ฯฐ",kcedil:"ฤท",Kcedil:"ฤถ",kcy:"ะบ",Kcy:"ะš",kfr:"๐”จ",Kfr:"๐”Ž",kgreen:"ฤธ",khcy:"ั…",KHcy:"ะฅ",kjcy:"ัœ",KJcy:"ะŒ",kopf:"๐•œ",Kopf:"๐•‚",kscr:"๐“€",Kscr:"๐’ฆ",lAarr:"โ‡š",lacute:"ฤบ",Lacute:"ฤน",laemptyv:"โฆด",lagran:"โ„’",lambda:"ฮป",Lambda:"ฮ›",lang:"โŸจ",Lang:"โŸช",langd:"โฆ‘",langle:"โŸจ",lap:"โช…",Laplacetrf:"โ„’",laquo:"ยซ",larr:"โ†",lArr:"โ‡",Larr:"โ†ž",larrb:"โ‡ค",larrbfs:"โคŸ",larrfs:"โค",larrhk:"โ†ฉ",larrlp:"โ†ซ",larrpl:"โคน",larrsim:"โฅณ",larrtl:"โ†ข",lat:"โชซ",latail:"โค™",lAtail:"โค›",late:"โชญ",lates:"โชญ๏ธ€",lbarr:"โคŒ",lBarr:"โคŽ",lbbrk:"โฒ",lbrace:"{",lbrack:"[",lbrke:"โฆ‹",lbrksld:"โฆ",lbrkslu:"โฆ",lcaron:"ฤพ",Lcaron:"ฤฝ",lcedil:"ฤผ",Lcedil:"ฤป",lceil:"โŒˆ",lcub:"{",lcy:"ะป",Lcy:"ะ›",ldca:"โคถ",ldquo:"โ€œ",ldquor:"โ€ž",ldrdhar:"โฅง",ldrushar:"โฅ‹",ldsh:"โ†ฒ",le:"โ‰ค",lE:"โ‰ฆ",LeftAngleBracket:"โŸจ",leftarrow:"โ†",Leftarrow:"โ‡",LeftArrow:"โ†",LeftArrowBar:"โ‡ค",LeftArrowRightArrow:"โ‡†",leftarrowtail:"โ†ข",LeftCeiling:"โŒˆ",LeftDoubleBracket:"โŸฆ",LeftDownTeeVector:"โฅก",LeftDownVector:"โ‡ƒ",LeftDownVectorBar:"โฅ™",LeftFloor:"โŒŠ",leftharpoondown:"โ†ฝ",leftharpoonup:"โ†ผ",leftleftarrows:"โ‡‡",leftrightarrow:"โ†”",Leftrightarrow:"โ‡”",LeftRightArrow:"โ†”",leftrightarrows:"โ‡†",leftrightharpoons:"โ‡‹",leftrightsquigarrow:"โ†ญ",LeftRightVector:"โฅŽ",LeftTee:"โŠฃ",LeftTeeArrow:"โ†ค",LeftTeeVector:"โฅš",leftthreetimes:"โ‹‹",LeftTriangle:"โŠฒ",LeftTriangleBar:"โง",LeftTriangleEqual:"โŠด",LeftUpDownVector:"โฅ‘",LeftUpTeeVector:"โฅ ",LeftUpVector:"โ†ฟ",LeftUpVectorBar:"โฅ˜",LeftVector:"โ†ผ",LeftVectorBar:"โฅ’",leg:"โ‹š",lEg:"โช‹",leq:"โ‰ค",leqq:"โ‰ฆ",leqslant:"โฉฝ",les:"โฉฝ",lescc:"โชจ",lesdot:"โฉฟ",lesdoto:"โช",lesdotor:"โชƒ",lesg:"โ‹š๏ธ€",lesges:"โช“",lessapprox:"โช…",lessdot:"โ‹–",lesseqgtr:"โ‹š",lesseqqgtr:"โช‹",LessEqualGreater:"โ‹š",LessFullEqual:"โ‰ฆ",LessGreater:"โ‰ถ",lessgtr:"โ‰ถ",LessLess:"โชก",lesssim:"โ‰ฒ",LessSlantEqual:"โฉฝ",LessTilde:"โ‰ฒ",lfisht:"โฅผ",lfloor:"โŒŠ",lfr:"๐”ฉ",Lfr:"๐”",lg:"โ‰ถ",lgE:"โช‘",lHar:"โฅข",lhard:"โ†ฝ",lharu:"โ†ผ",lharul:"โฅช",lhblk:"โ–„",ljcy:"ั™",LJcy:"ะ‰",ll:"โ‰ช",Ll:"โ‹˜",llarr:"โ‡‡",llcorner:"โŒž",Lleftarrow:"โ‡š",llhard:"โฅซ",lltri:"โ—บ",lmidot:"ล€",Lmidot:"ฤฟ",lmoust:"โŽฐ",lmoustache:"โŽฐ",lnap:"โช‰",lnapprox:"โช‰",lne:"โช‡",lnE:"โ‰จ",lneq:"โช‡",lneqq:"โ‰จ",lnsim:"โ‹ฆ",loang:"โŸฌ",loarr:"โ‡ฝ",lobrk:"โŸฆ",longleftarrow:"โŸต",Longleftarrow:"โŸธ",LongLeftArrow:"โŸต",longleftrightarrow:"โŸท",Longleftrightarrow:"โŸบ",LongLeftRightArrow:"โŸท",longmapsto:"โŸผ",longrightarrow:"โŸถ",Longrightarrow:"โŸน",LongRightArrow:"โŸถ",looparrowleft:"โ†ซ",looparrowright:"โ†ฌ",lopar:"โฆ…",lopf:"๐•",Lopf:"๐•ƒ",loplus:"โจญ",lotimes:"โจด",lowast:"โˆ—",lowbar:"_",LowerLeftArrow:"โ†™",LowerRightArrow:"โ†˜",loz:"โ—Š",lozenge:"โ—Š",lozf:"โงซ",lpar:"(",lparlt:"โฆ“",lrarr:"โ‡†",lrcorner:"โŒŸ",lrhar:"โ‡‹",lrhard:"โฅญ",lrm:"โ€Ž",lrtri:"โŠฟ",lsaquo:"โ€น",lscr:"๐“",Lscr:"โ„’",lsh:"โ†ฐ",Lsh:"โ†ฐ",lsim:"โ‰ฒ",lsime:"โช",lsimg:"โช",lsqb:"[",lsquo:"โ€˜",lsquor:"โ€š",lstrok:"ล‚",Lstrok:"ล",lt:"<",Lt:"โ‰ช",LT:"<",ltcc:"โชฆ",ltcir:"โฉน",ltdot:"โ‹–",lthree:"โ‹‹",ltimes:"โ‹‰",ltlarr:"โฅถ",ltquest:"โฉป",ltri:"โ—ƒ",ltrie:"โŠด",ltrif:"โ—‚",ltrPar:"โฆ–",lurdshar:"โฅŠ",luruhar:"โฅฆ",lvertneqq:"โ‰จ๏ธ€",lvnE:"โ‰จ๏ธ€",macr:"ยฏ",male:"โ™‚",malt:"โœ ",maltese:"โœ ",map:"โ†ฆ",Map:"โค…",mapsto:"โ†ฆ",mapstodown:"โ†ง",mapstoleft:"โ†ค",mapstoup:"โ†ฅ",marker:"โ–ฎ",mcomma:"โจฉ",mcy:"ะผ",Mcy:"ะœ",mdash:"โ€”",mDDot:"โˆบ",measuredangle:"โˆก",MediumSpace:"โŸ",Mellintrf:"โ„ณ",mfr:"๐”ช",Mfr:"๐”",mho:"โ„ง",micro:"ยต",mid:"โˆฃ",midast:"*",midcir:"โซฐ",middot:"ยท",minus:"โˆ’",minusb:"โŠŸ",minusd:"โˆธ",minusdu:"โจช",MinusPlus:"โˆ“",mlcp:"โซ›",mldr:"โ€ฆ",mnplus:"โˆ“",models:"โŠง",mopf:"๐•ž",Mopf:"๐•„",mp:"โˆ“",mscr:"๐“‚",Mscr:"โ„ณ",mstpos:"โˆพ",mu:"ฮผ",Mu:"ฮœ",multimap:"โŠธ",mumap:"โŠธ",nabla:"โˆ‡",nacute:"ล„",Nacute:"ลƒ",nang:"โˆ โƒ’",nap:"โ‰‰",napE:"โฉฐฬธ",napid:"โ‰‹ฬธ",napos:"ล‰",napprox:"โ‰‰",natur:"โ™ฎ",natural:"โ™ฎ",naturals:"โ„•",nbsp:"ย ",nbump:"โ‰Žฬธ",nbumpe:"โ‰ฬธ",ncap:"โฉƒ",ncaron:"ลˆ",Ncaron:"ล‡",ncedil:"ล†",Ncedil:"ล…",ncong:"โ‰‡",ncongdot:"โฉญฬธ",ncup:"โฉ‚",ncy:"ะฝ",Ncy:"ะ",ndash:"โ€“",ne:"โ‰ ",nearhk:"โคค",nearr:"โ†—",neArr:"โ‡—",nearrow:"โ†—",nedot:"โ‰ฬธ",NegativeMediumSpace:"โ€‹",NegativeThickSpace:"โ€‹",NegativeThinSpace:"โ€‹",NegativeVeryThinSpace:"โ€‹",nequiv:"โ‰ข",nesear:"โคจ",nesim:"โ‰‚ฬธ",NestedGreaterGreater:"โ‰ซ",NestedLessLess:"โ‰ช",NewLine:"\n",nexist:"โˆ„",nexists:"โˆ„",nfr:"๐”ซ",Nfr:"๐”‘",nge:"โ‰ฑ",ngE:"โ‰งฬธ",ngeq:"โ‰ฑ",ngeqq:"โ‰งฬธ",ngeqslant:"โฉพฬธ",nges:"โฉพฬธ",nGg:"โ‹™ฬธ",ngsim:"โ‰ต",ngt:"โ‰ฏ",nGt:"โ‰ซโƒ’",ngtr:"โ‰ฏ",nGtv:"โ‰ซฬธ",nharr:"โ†ฎ",nhArr:"โ‡Ž",nhpar:"โซฒ",ni:"โˆ‹",nis:"โ‹ผ",nisd:"โ‹บ",niv:"โˆ‹",njcy:"ัš",NJcy:"ะŠ",nlarr:"โ†š",nlArr:"โ‡",nldr:"โ€ฅ",nle:"โ‰ฐ",nlE:"โ‰ฆฬธ",nleftarrow:"โ†š",nLeftarrow:"โ‡",nleftrightarrow:"โ†ฎ",nLeftrightarrow:"โ‡Ž",nleq:"โ‰ฐ",nleqq:"โ‰ฆฬธ",nleqslant:"โฉฝฬธ",nles:"โฉฝฬธ",nless:"โ‰ฎ",nLl:"โ‹˜ฬธ",nlsim:"โ‰ด",nlt:"โ‰ฎ",nLt:"โ‰ชโƒ’",nltri:"โ‹ช",nltrie:"โ‹ฌ",nLtv:"โ‰ชฬธ",nmid:"โˆค",NoBreak:"โ ",NonBreakingSpace:"ย ",nopf:"๐•Ÿ",Nopf:"โ„•",not:"ยฌ",Not:"โซฌ",NotCongruent:"โ‰ข",NotCupCap:"โ‰ญ",NotDoubleVerticalBar:"โˆฆ",NotElement:"โˆ‰",NotEqual:"โ‰ ",NotEqualTilde:"โ‰‚ฬธ",NotExists:"โˆ„",NotGreater:"โ‰ฏ",NotGreaterEqual:"โ‰ฑ",NotGreaterFullEqual:"โ‰งฬธ",NotGreaterGreater:"โ‰ซฬธ",NotGreaterLess:"โ‰น",NotGreaterSlantEqual:"โฉพฬธ",NotGreaterTilde:"โ‰ต",NotHumpDownHump:"โ‰Žฬธ",NotHumpEqual:"โ‰ฬธ",notin:"โˆ‰",notindot:"โ‹ตฬธ",notinE:"โ‹นฬธ",notinva:"โˆ‰",notinvb:"โ‹ท",notinvc:"โ‹ถ",NotLeftTriangle:"โ‹ช",NotLeftTriangleBar:"โงฬธ",NotLeftTriangleEqual:"โ‹ฌ",NotLess:"โ‰ฎ",NotLessEqual:"โ‰ฐ",NotLessGreater:"โ‰ธ",NotLessLess:"โ‰ชฬธ",NotLessSlantEqual:"โฉฝฬธ",NotLessTilde:"โ‰ด",NotNestedGreaterGreater:"โชขฬธ",NotNestedLessLess:"โชกฬธ",notni:"โˆŒ",notniva:"โˆŒ",notnivb:"โ‹พ",notnivc:"โ‹ฝ",NotPrecedes:"โŠ€",NotPrecedesEqual:"โชฏฬธ",NotPrecedesSlantEqual:"โ‹ ",NotReverseElement:"โˆŒ",NotRightTriangle:"โ‹ซ",NotRightTriangleBar:"โงฬธ",NotRightTriangleEqual:"โ‹ญ",NotSquareSubset:"โŠฬธ",NotSquareSubsetEqual:"โ‹ข",NotSquareSuperset:"โŠฬธ",NotSquareSupersetEqual:"โ‹ฃ",NotSubset:"โŠ‚โƒ’",NotSubsetEqual:"โŠˆ",NotSucceeds:"โŠ",NotSucceedsEqual:"โชฐฬธ",NotSucceedsSlantEqual:"โ‹ก",NotSucceedsTilde:"โ‰ฟฬธ",NotSuperset:"โŠƒโƒ’",NotSupersetEqual:"โŠ‰",NotTilde:"โ‰",NotTildeEqual:"โ‰„",NotTildeFullEqual:"โ‰‡",NotTildeTilde:"โ‰‰",NotVerticalBar:"โˆค",npar:"โˆฆ",nparallel:"โˆฆ",nparsl:"โซฝโƒฅ",npart:"โˆ‚ฬธ",npolint:"โจ”",npr:"โŠ€",nprcue:"โ‹ ",npre:"โชฏฬธ",nprec:"โŠ€",npreceq:"โชฏฬธ",nrarr:"โ†›",nrArr:"โ‡",nrarrc:"โคณฬธ",nrarrw:"โ†ฬธ",nrightarrow:"โ†›",nRightarrow:"โ‡",nrtri:"โ‹ซ",nrtrie:"โ‹ญ",nsc:"โŠ",nsccue:"โ‹ก",nsce:"โชฐฬธ",nscr:"๐“ƒ",Nscr:"๐’ฉ",nshortmid:"โˆค",nshortparallel:"โˆฆ",nsim:"โ‰",nsime:"โ‰„",nsimeq:"โ‰„",nsmid:"โˆค",nspar:"โˆฆ",nsqsube:"โ‹ข",nsqsupe:"โ‹ฃ",nsub:"โŠ„",nsube:"โŠˆ",nsubE:"โซ…ฬธ",nsubset:"โŠ‚โƒ’",nsubseteq:"โŠˆ",nsubseteqq:"โซ…ฬธ",nsucc:"โŠ",nsucceq:"โชฐฬธ",nsup:"โŠ…",nsupe:"โŠ‰",nsupE:"โซ†ฬธ",nsupset:"โŠƒโƒ’",nsupseteq:"โŠ‰",nsupseteqq:"โซ†ฬธ",ntgl:"โ‰น",ntilde:"รฑ",Ntilde:"ร‘",ntlg:"โ‰ธ",ntriangleleft:"โ‹ช",ntrianglelefteq:"โ‹ฌ",ntriangleright:"โ‹ซ",ntrianglerighteq:"โ‹ญ",nu:"ฮฝ",Nu:"ฮ",num:"#",numero:"โ„–",numsp:"โ€‡",nvap:"โ‰โƒ’",nvdash:"โŠฌ",nvDash:"โŠญ",nVdash:"โŠฎ",nVDash:"โŠฏ",nvge:"โ‰ฅโƒ’",nvgt:">โƒ’",nvHarr:"โค„",nvinfin:"โงž",nvlArr:"โค‚",nvle:"โ‰คโƒ’",nvlt:"<โƒ’",nvltrie:"โŠดโƒ’",nvrArr:"โคƒ",nvrtrie:"โŠตโƒ’",nvsim:"โˆผโƒ’",nwarhk:"โคฃ",nwarr:"โ†–",nwArr:"โ‡–",nwarrow:"โ†–",nwnear:"โคง",oacute:"รณ",Oacute:"ร“",oast:"โŠ›",ocir:"โŠš",ocirc:"รด",Ocirc:"ร”",ocy:"ะพ",Ocy:"ะž",odash:"โŠ",odblac:"ล‘",Odblac:"ล",odiv:"โจธ",odot:"โŠ™",odsold:"โฆผ",oelig:"ล“",OElig:"ล’",ofcir:"โฆฟ",ofr:"๐”ฌ",Ofr:"๐”’",ogon:"ห›",ograve:"รฒ",Ograve:"ร’",ogt:"โง",ohbar:"โฆต",ohm:"ฮฉ",oint:"โˆฎ",olarr:"โ†บ",olcir:"โฆพ",olcross:"โฆป",oline:"โ€พ",olt:"โง€",omacr:"ล",Omacr:"ลŒ",omega:"ฯ‰",Omega:"ฮฉ",omicron:"ฮฟ",Omicron:"ฮŸ",omid:"โฆถ",ominus:"โŠ–",oopf:"๐• ",Oopf:"๐•†",opar:"โฆท",OpenCurlyDoubleQuote:"โ€œ",OpenCurlyQuote:"โ€˜",operp:"โฆน",oplus:"โŠ•",or:"โˆจ",Or:"โฉ”",orarr:"โ†ป",ord:"โฉ",order:"โ„ด",orderof:"โ„ด",ordf:"ยช",ordm:"ยบ",origof:"โŠถ",oror:"โฉ–",orslope:"โฉ—",orv:"โฉ›",oS:"โ“ˆ",oscr:"โ„ด",Oscr:"๐’ช",oslash:"รธ",Oslash:"ร˜",osol:"โŠ˜",otilde:"รต",Otilde:"ร•",otimes:"โŠ—",Otimes:"โจท",otimesas:"โจถ",ouml:"รถ",Ouml:"ร–",ovbar:"โŒฝ",OverBar:"โ€พ",OverBrace:"โž",OverBracket:"โŽด",OverParenthesis:"โœ",par:"โˆฅ",para:"ยถ",parallel:"โˆฅ",parsim:"โซณ",parsl:"โซฝ",part:"โˆ‚",PartialD:"โˆ‚",pcy:"ะฟ",Pcy:"ะŸ",percnt:"%",period:".",permil:"โ€ฐ",perp:"โŠฅ",pertenk:"โ€ฑ",pfr:"๐”ญ",Pfr:"๐”“",phi:"ฯ†",Phi:"ฮฆ",phiv:"ฯ•",phmmat:"โ„ณ",phone:"โ˜Ž",pi:"ฯ€",Pi:"ฮ ",pitchfork:"โ‹”",piv:"ฯ–",planck:"โ„",planckh:"โ„Ž",plankv:"โ„",plus:"+",plusacir:"โจฃ",plusb:"โŠž",pluscir:"โจข",plusdo:"โˆ”",plusdu:"โจฅ",pluse:"โฉฒ",PlusMinus:"ยฑ",plusmn:"ยฑ",plussim:"โจฆ",plustwo:"โจง",pm:"ยฑ",Poincareplane:"โ„Œ",pointint:"โจ•",popf:"๐•ก",Popf:"โ„™",pound:"ยฃ",pr:"โ‰บ",Pr:"โชป",prap:"โชท",prcue:"โ‰ผ",pre:"โชฏ",prE:"โชณ",prec:"โ‰บ",precapprox:"โชท",preccurlyeq:"โ‰ผ",Precedes:"โ‰บ",PrecedesEqual:"โชฏ",PrecedesSlantEqual:"โ‰ผ",PrecedesTilde:"โ‰พ",preceq:"โชฏ",precnapprox:"โชน",precneqq:"โชต",precnsim:"โ‹จ",precsim:"โ‰พ",prime:"โ€ฒ",Prime:"โ€ณ",primes:"โ„™",prnap:"โชน",prnE:"โชต",prnsim:"โ‹จ",prod:"โˆ",Product:"โˆ",profalar:"โŒฎ",profline:"โŒ’",profsurf:"โŒ“",prop:"โˆ",Proportion:"โˆท",Proportional:"โˆ",propto:"โˆ",prsim:"โ‰พ",prurel:"โŠฐ",pscr:"๐“…",Pscr:"๐’ซ",psi:"ฯˆ",Psi:"ฮจ",puncsp:"โ€ˆ",qfr:"๐”ฎ",Qfr:"๐””",qint:"โจŒ",qopf:"๐•ข",Qopf:"โ„š",qprime:"โ—",qscr:"๐“†",Qscr:"๐’ฌ",quaternions:"โ„",quatint:"โจ–",quest:"?",questeq:"โ‰Ÿ",quot:'"',QUOT:'"',rAarr:"โ‡›",race:"โˆฝฬฑ",racute:"ล•",Racute:"ล”",radic:"โˆš",raemptyv:"โฆณ",rang:"โŸฉ",Rang:"โŸซ",rangd:"โฆ’",range:"โฆฅ",rangle:"โŸฉ",raquo:"ยป",rarr:"โ†’",rArr:"โ‡’",Rarr:"โ† ",rarrap:"โฅต",rarrb:"โ‡ฅ",rarrbfs:"โค ",rarrc:"โคณ",rarrfs:"โคž",rarrhk:"โ†ช",rarrlp:"โ†ฌ",rarrpl:"โฅ…",rarrsim:"โฅด",rarrtl:"โ†ฃ",Rarrtl:"โค–",rarrw:"โ†",ratail:"โคš",rAtail:"โคœ",ratio:"โˆถ",rationals:"โ„š",rbarr:"โค",rBarr:"โค",RBarr:"โค",rbbrk:"โณ",rbrace:"}",rbrack:"]",rbrke:"โฆŒ",rbrksld:"โฆŽ",rbrkslu:"โฆ",rcaron:"ล™",Rcaron:"ล˜",rcedil:"ล—",Rcedil:"ล–",rceil:"โŒ‰",rcub:"}",rcy:"ั€",Rcy:"ะ ",rdca:"โคท",rdldhar:"โฅฉ",rdquo:"โ€",rdquor:"โ€",rdsh:"โ†ณ",Re:"โ„œ",real:"โ„œ",realine:"โ„›",realpart:"โ„œ",reals:"โ„",rect:"โ–ญ",reg:"ยฎ",REG:"ยฎ",ReverseElement:"โˆ‹",ReverseEquilibrium:"โ‡‹",ReverseUpEquilibrium:"โฅฏ",rfisht:"โฅฝ",rfloor:"โŒ‹",rfr:"๐”ฏ",Rfr:"โ„œ",rHar:"โฅค",rhard:"โ‡",rharu:"โ‡€",rharul:"โฅฌ",rho:"ฯ",Rho:"ฮก",rhov:"ฯฑ",RightAngleBracket:"โŸฉ",rightarrow:"โ†’",Rightarrow:"โ‡’",RightArrow:"โ†’",RightArrowBar:"โ‡ฅ",RightArrowLeftArrow:"โ‡„",rightarrowtail:"โ†ฃ",RightCeiling:"โŒ‰",RightDoubleBracket:"โŸง",RightDownTeeVector:"โฅ",RightDownVector:"โ‡‚",RightDownVectorBar:"โฅ•",RightFloor:"โŒ‹",rightharpoondown:"โ‡",rightharpoonup:"โ‡€",rightleftarrows:"โ‡„",rightleftharpoons:"โ‡Œ",rightrightarrows:"โ‡‰",rightsquigarrow:"โ†",RightTee:"โŠข",RightTeeArrow:"โ†ฆ",RightTeeVector:"โฅ›",rightthreetimes:"โ‹Œ",RightTriangle:"โŠณ",RightTriangleBar:"โง",RightTriangleEqual:"โŠต",RightUpDownVector:"โฅ",RightUpTeeVector:"โฅœ",RightUpVector:"โ†พ",RightUpVectorBar:"โฅ”",RightVector:"โ‡€",RightVectorBar:"โฅ“",ring:"หš",risingdotseq:"โ‰“",rlarr:"โ‡„",rlhar:"โ‡Œ",rlm:"โ€",rmoust:"โŽฑ",rmoustache:"โŽฑ",rnmid:"โซฎ",roang:"โŸญ",roarr:"โ‡พ",robrk:"โŸง",ropar:"โฆ†",ropf:"๐•ฃ",Ropf:"โ„",roplus:"โจฎ",rotimes:"โจต",RoundImplies:"โฅฐ",rpar:")",rpargt:"โฆ”",rppolint:"โจ’",rrarr:"โ‡‰",Rrightarrow:"โ‡›",rsaquo:"โ€บ",rscr:"๐“‡",Rscr:"โ„›",rsh:"โ†ฑ",Rsh:"โ†ฑ",rsqb:"]",rsquo:"โ€™",rsquor:"โ€™",rthree:"โ‹Œ",rtimes:"โ‹Š",rtri:"โ–น",rtrie:"โŠต",rtrif:"โ–ธ",rtriltri:"โงŽ",RuleDelayed:"โงด",ruluhar:"โฅจ",rx:"โ„ž",sacute:"ล›",Sacute:"ลš",sbquo:"โ€š",sc:"โ‰ป",Sc:"โชผ",scap:"โชธ",scaron:"ลก",Scaron:"ล ",sccue:"โ‰ฝ",sce:"โชฐ",scE:"โชด",scedil:"ลŸ",Scedil:"ลž",scirc:"ล",Scirc:"ลœ",scnap:"โชบ",scnE:"โชถ",scnsim:"โ‹ฉ",scpolint:"โจ“",scsim:"โ‰ฟ",scy:"ั",Scy:"ะก",sdot:"โ‹…",sdotb:"โŠก",sdote:"โฉฆ",searhk:"โคฅ",searr:"โ†˜",seArr:"โ‡˜",searrow:"โ†˜",sect:"ยง",semi:";",seswar:"โคฉ",setminus:"โˆ–",setmn:"โˆ–",sext:"โœถ",sfr:"๐”ฐ",Sfr:"๐”–",sfrown:"โŒข",sharp:"โ™ฏ",shchcy:"ั‰",SHCHcy:"ะฉ",shcy:"ัˆ",SHcy:"ะจ",ShortDownArrow:"โ†“",ShortLeftArrow:"โ†",shortmid:"โˆฃ",shortparallel:"โˆฅ",ShortRightArrow:"โ†’",ShortUpArrow:"โ†‘",shy:"ยญ",sigma:"ฯƒ",Sigma:"ฮฃ",sigmaf:"ฯ‚",sigmav:"ฯ‚",sim:"โˆผ",simdot:"โฉช",sime:"โ‰ƒ",simeq:"โ‰ƒ",simg:"โชž",simgE:"โช ",siml:"โช",simlE:"โชŸ",simne:"โ‰†",simplus:"โจค",simrarr:"โฅฒ",slarr:"โ†",SmallCircle:"โˆ˜",smallsetminus:"โˆ–",smashp:"โจณ",smeparsl:"โงค",smid:"โˆฃ",smile:"โŒฃ",smt:"โชช",smte:"โชฌ",smtes:"โชฌ๏ธ€",softcy:"ัŒ",SOFTcy:"ะฌ",sol:"/",solb:"โง„",solbar:"โŒฟ",sopf:"๐•ค",Sopf:"๐•Š",spades:"โ™ ",spadesuit:"โ™ ",spar:"โˆฅ",sqcap:"โŠ“",sqcaps:"โŠ“๏ธ€",sqcup:"โŠ”",sqcups:"โŠ”๏ธ€",Sqrt:"โˆš",sqsub:"โŠ",sqsube:"โŠ‘",sqsubset:"โŠ",sqsubseteq:"โŠ‘",sqsup:"โŠ",sqsupe:"โŠ’",sqsupset:"โŠ",sqsupseteq:"โŠ’",squ:"โ–ก",square:"โ–ก",Square:"โ–ก",SquareIntersection:"โŠ“",SquareSubset:"โŠ",SquareSubsetEqual:"โŠ‘",SquareSuperset:"โŠ",SquareSupersetEqual:"โŠ’",SquareUnion:"โŠ”",squarf:"โ–ช",squf:"โ–ช",srarr:"โ†’",sscr:"๐“ˆ",Sscr:"๐’ฎ",ssetmn:"โˆ–",ssmile:"โŒฃ",sstarf:"โ‹†",star:"โ˜†",Star:"โ‹†",starf:"โ˜…",straightepsilon:"ฯต",straightphi:"ฯ•",strns:"ยฏ",sub:"โŠ‚",Sub:"โ‹",subdot:"โชฝ",sube:"โŠ†",subE:"โซ…",subedot:"โซƒ",submult:"โซ",subne:"โŠŠ",subnE:"โซ‹",subplus:"โชฟ",subrarr:"โฅน",subset:"โŠ‚",Subset:"โ‹",subseteq:"โŠ†",subseteqq:"โซ…",SubsetEqual:"โŠ†",subsetneq:"โŠŠ",subsetneqq:"โซ‹",subsim:"โซ‡",subsub:"โซ•",subsup:"โซ“",succ:"โ‰ป",succapprox:"โชธ",succcurlyeq:"โ‰ฝ",Succeeds:"โ‰ป",SucceedsEqual:"โชฐ",SucceedsSlantEqual:"โ‰ฝ",SucceedsTilde:"โ‰ฟ",succeq:"โชฐ",succnapprox:"โชบ",succneqq:"โชถ",succnsim:"โ‹ฉ",succsim:"โ‰ฟ",SuchThat:"โˆ‹",sum:"โˆ‘",Sum:"โˆ‘",sung:"โ™ช",sup:"โŠƒ",Sup:"โ‹‘",sup1:"ยน",sup2:"ยฒ",sup3:"ยณ",supdot:"โชพ",supdsub:"โซ˜",supe:"โŠ‡",supE:"โซ†",supedot:"โซ„",Superset:"โŠƒ",SupersetEqual:"โŠ‡",suphsol:"โŸ‰",suphsub:"โซ—",suplarr:"โฅป",supmult:"โซ‚",supne:"โŠ‹",supnE:"โซŒ",supplus:"โซ€",supset:"โŠƒ",Supset:"โ‹‘",supseteq:"โŠ‡",supseteqq:"โซ†",supsetneq:"โŠ‹",supsetneqq:"โซŒ",supsim:"โซˆ",supsub:"โซ”",supsup:"โซ–",swarhk:"โคฆ",swarr:"โ†™",swArr:"โ‡™",swarrow:"โ†™",swnwar:"โคช",szlig:"รŸ",Tab:"\t",target:"โŒ–",tau:"ฯ„",Tau:"ฮค",tbrk:"โŽด",tcaron:"ลฅ",Tcaron:"ลค",tcedil:"ลฃ",Tcedil:"ลข",tcy:"ั‚",Tcy:"ะข",tdot:"โƒ›",telrec:"โŒ•",tfr:"๐”ฑ",Tfr:"๐”—",there4:"โˆด",therefore:"โˆด",Therefore:"โˆด",theta:"ฮธ",Theta:"ฮ˜",thetasym:"ฯ‘",thetav:"ฯ‘",thickapprox:"โ‰ˆ",thicksim:"โˆผ",ThickSpace:"โŸโ€Š",thinsp:"โ€‰",ThinSpace:"โ€‰",thkap:"โ‰ˆ",thksim:"โˆผ",thorn:"รพ",THORN:"รž",tilde:"หœ",Tilde:"โˆผ",TildeEqual:"โ‰ƒ",TildeFullEqual:"โ‰…",TildeTilde:"โ‰ˆ",times:"ร—",timesb:"โŠ ",timesbar:"โจฑ",timesd:"โจฐ",tint:"โˆญ",toea:"โคจ",top:"โŠค",topbot:"โŒถ",topcir:"โซฑ",topf:"๐•ฅ",Topf:"๐•‹",topfork:"โซš",tosa:"โคฉ",tprime:"โ€ด",trade:"โ„ข",TRADE:"โ„ข",triangle:"โ–ต",triangledown:"โ–ฟ",triangleleft:"โ—ƒ",trianglelefteq:"โŠด",triangleq:"โ‰œ",triangleright:"โ–น",trianglerighteq:"โŠต",tridot:"โ—ฌ",trie:"โ‰œ",triminus:"โจบ",TripleDot:"โƒ›",triplus:"โจน",trisb:"โง",tritime:"โจป",trpezium:"โข",tscr:"๐“‰",Tscr:"๐’ฏ",tscy:"ั†",TScy:"ะฆ",tshcy:"ั›",TSHcy:"ะ‹",tstrok:"ลง",Tstrok:"ลฆ",twixt:"โ‰ฌ",twoheadleftarrow:"โ†ž",twoheadrightarrow:"โ† ",uacute:"รบ",Uacute:"รš",uarr:"โ†‘",uArr:"โ‡‘",Uarr:"โ†Ÿ",Uarrocir:"โฅ‰",ubrcy:"ัž",Ubrcy:"ะŽ",ubreve:"ลญ",Ubreve:"ลฌ",ucirc:"รป",Ucirc:"ร›",ucy:"ัƒ",Ucy:"ะฃ",udarr:"โ‡…",udblac:"ลฑ",Udblac:"ลฐ",udhar:"โฅฎ",ufisht:"โฅพ",ufr:"๐”ฒ",Ufr:"๐”˜",ugrave:"รน",Ugrave:"ร™",uHar:"โฅฃ",uharl:"โ†ฟ",uharr:"โ†พ",uhblk:"โ–€",ulcorn:"โŒœ",ulcorner:"โŒœ",ulcrop:"โŒ",ultri:"โ—ธ",umacr:"ลซ",Umacr:"ลช",uml:"ยจ",UnderBar:"_",UnderBrace:"โŸ",UnderBracket:"โŽต",UnderParenthesis:"โ",Union:"โ‹ƒ",UnionPlus:"โŠŽ",uogon:"ลณ",Uogon:"ลฒ",uopf:"๐•ฆ",Uopf:"๐•Œ",uparrow:"โ†‘",Uparrow:"โ‡‘",UpArrow:"โ†‘",UpArrowBar:"โค’",UpArrowDownArrow:"โ‡…",updownarrow:"โ†•",Updownarrow:"โ‡•",UpDownArrow:"โ†•",UpEquilibrium:"โฅฎ",upharpoonleft:"โ†ฟ",upharpoonright:"โ†พ",uplus:"โŠŽ",UpperLeftArrow:"โ†–",UpperRightArrow:"โ†—",upsi:"ฯ…",Upsi:"ฯ’",upsih:"ฯ’",upsilon:"ฯ…",Upsilon:"ฮฅ",UpTee:"โŠฅ",UpTeeArrow:"โ†ฅ",upuparrows:"โ‡ˆ",urcorn:"โŒ",urcorner:"โŒ",urcrop:"โŒŽ",uring:"ลฏ",Uring:"ลฎ",urtri:"โ—น",uscr:"๐“Š",Uscr:"๐’ฐ",utdot:"โ‹ฐ",utilde:"ลฉ",Utilde:"ลจ",utri:"โ–ต",utrif:"โ–ด",uuarr:"โ‡ˆ",uuml:"รผ",Uuml:"รœ",uwangle:"โฆง",vangrt:"โฆœ",varepsilon:"ฯต",varkappa:"ฯฐ",varnothing:"โˆ…",varphi:"ฯ•",varpi:"ฯ–",varpropto:"โˆ",varr:"โ†•",vArr:"โ‡•",varrho:"ฯฑ",varsigma:"ฯ‚",varsubsetneq:"โŠŠ๏ธ€",varsubsetneqq:"โซ‹๏ธ€",varsupsetneq:"โŠ‹๏ธ€",varsupsetneqq:"โซŒ๏ธ€",vartheta:"ฯ‘",vartriangleleft:"โŠฒ",vartriangleright:"โŠณ",vBar:"โซจ",Vbar:"โซซ",vBarv:"โซฉ",vcy:"ะฒ",Vcy:"ะ’",vdash:"โŠข",vDash:"โŠจ",Vdash:"โŠฉ",VDash:"โŠซ",Vdashl:"โซฆ",vee:"โˆจ",Vee:"โ‹",veebar:"โŠป",veeeq:"โ‰š",vellip:"โ‹ฎ",verbar:"|",Verbar:"โ€–",vert:"|",Vert:"โ€–",VerticalBar:"โˆฃ",VerticalLine:"|",VerticalSeparator:"โ˜",VerticalTilde:"โ‰€",VeryThinSpace:"โ€Š",vfr:"๐”ณ",Vfr:"๐”™",vltri:"โŠฒ",vnsub:"โŠ‚โƒ’",vnsup:"โŠƒโƒ’",vopf:"๐•ง",Vopf:"๐•",vprop:"โˆ",vrtri:"โŠณ",vscr:"๐“‹",Vscr:"๐’ฑ",vsubne:"โŠŠ๏ธ€",vsubnE:"โซ‹๏ธ€",vsupne:"โŠ‹๏ธ€",vsupnE:"โซŒ๏ธ€",Vvdash:"โŠช",vzigzag:"โฆš",wcirc:"ลต",Wcirc:"ลด",wedbar:"โฉŸ",wedge:"โˆง",Wedge:"โ‹€",wedgeq:"โ‰™",weierp:"โ„˜",wfr:"๐”ด",Wfr:"๐”š",wopf:"๐•จ",Wopf:"๐•Ž",wp:"โ„˜",wr:"โ‰€",wreath:"โ‰€",wscr:"๐“Œ",Wscr:"๐’ฒ",xcap:"โ‹‚",xcirc:"โ—ฏ",xcup:"โ‹ƒ",xdtri:"โ–ฝ",xfr:"๐”ต",Xfr:"๐”›",xharr:"โŸท",xhArr:"โŸบ",xi:"ฮพ",Xi:"ฮž",xlarr:"โŸต",xlArr:"โŸธ",xmap:"โŸผ",xnis:"โ‹ป",xodot:"โจ€",xopf:"๐•ฉ",Xopf:"๐•",xoplus:"โจ",xotime:"โจ‚",xrarr:"โŸถ",xrArr:"โŸน",xscr:"๐“",Xscr:"๐’ณ",xsqcup:"โจ†",xuplus:"โจ„",xutri:"โ–ณ",xvee:"โ‹",xwedge:"โ‹€",yacute:"รฝ",Yacute:"ร",yacy:"ั",YAcy:"ะฏ",ycirc:"ลท",Ycirc:"ลถ",ycy:"ั‹",Ycy:"ะซ",yen:"ยฅ",yfr:"๐”ถ",Yfr:"๐”œ",yicy:"ั—",YIcy:"ะ‡",yopf:"๐•ช",Yopf:"๐•",yscr:"๐“Ž",Yscr:"๐’ด",yucy:"ัŽ",YUcy:"ะฎ",yuml:"รฟ",Yuml:"ลธ",zacute:"ลบ",Zacute:"ลน",zcaron:"ลพ",Zcaron:"ลฝ",zcy:"ะท",Zcy:"ะ—",zdot:"ลผ",Zdot:"ลป",zeetrf:"โ„จ",ZeroWidthSpace:"โ€‹",zeta:"ฮถ",Zeta:"ฮ–",zfr:"๐”ท",Zfr:"โ„จ",zhcy:"ะถ",ZHcy:"ะ–",zigrarr:"โ‡",zopf:"๐•ซ",Zopf:"โ„ค",zscr:"๐“",Zscr:"๐’ต",zwj:"โ€",zwnj:"โ€Œ"},y={aacute:"รก",Aacute:"ร",acirc:"รข",Acirc:"ร‚",acute:"ยด",aelig:"รฆ",AElig:"ร†",agrave:"ร ",Agrave:"ร€",amp:"&",AMP:"&",aring:"รฅ",Aring:"ร…",atilde:"รฃ",Atilde:"รƒ",auml:"รค",Auml:"ร„",brvbar:"ยฆ",ccedil:"รง",Ccedil:"ร‡",cedil:"ยธ",cent:"ยข",copy:"ยฉ",COPY:"ยฉ",curren:"ยค",deg:"ยฐ",divide:"รท",eacute:"รฉ",Eacute:"ร‰",ecirc:"รช",Ecirc:"รŠ",egrave:"รจ",Egrave:"รˆ",eth:"รฐ",ETH:"ร",euml:"รซ",Euml:"ร‹",frac12:"ยฝ",frac14:"ยผ",frac34:"ยพ",gt:">",GT:">",iacute:"รญ",Iacute:"ร",icirc:"รฎ",Icirc:"รŽ",iexcl:"ยก",igrave:"รฌ",Igrave:"รŒ",iquest:"ยฟ",iuml:"รฏ",Iuml:"ร",laquo:"ยซ",lt:"<",LT:"<",macr:"ยฏ",micro:"ยต",middot:"ยท",nbsp:"ย ",not:"ยฌ",ntilde:"รฑ",Ntilde:"ร‘",oacute:"รณ",Oacute:"ร“",ocirc:"รด",Ocirc:"ร”",ograve:"รฒ",Ograve:"ร’",ordf:"ยช",ordm:"ยบ",oslash:"รธ",Oslash:"ร˜",otilde:"รต",Otilde:"ร•",ouml:"รถ",Ouml:"ร–",para:"ยถ",plusmn:"ยฑ",pound:"ยฃ",quot:'"',QUOT:'"',raquo:"ยป",reg:"ยฎ",REG:"ยฎ",sect:"ยง",shy:"ยญ",sup1:"ยน",sup2:"ยฒ",sup3:"ยณ",szlig:"รŸ",thorn:"รพ",THORN:"รž",times:"ร—",uacute:"รบ",Uacute:"รš",ucirc:"รป",Ucirc:"ร›",ugrave:"รน",Ugrave:"ร™",uml:"ยจ",uuml:"รผ",Uuml:"รœ",yacute:"รฝ",Yacute:"ร",yen:"ยฅ",yuml:"รฟ"},v={0:"๏ฟฝ",128:"โ‚ฌ",130:"โ€š",131:"ฦ’",132:"โ€ž",133:"โ€ฆ",134:"โ€ ",135:"โ€ก",136:"ห†",137:"โ€ฐ",138:"ล ",139:"โ€น",140:"ล’",142:"ลฝ",145:"โ€˜",146:"โ€™",147:"โ€œ",148:"โ€",149:"โ€ข",150:"โ€“",151:"โ€”",152:"หœ",153:"โ„ข",154:"ลก",155:"โ€บ",156:"ล“",158:"ลพ",159:"ลธ"},b=[1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65e3,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111],w=String.fromCharCode,x={}.hasOwnProperty,D=function(e,t){return x.call(e,t)},k=function(e,t){if(!e)return t;var n,a={};for(n in t)a[n]=D(e,n)?e[n]:t[n];return a},E=function(e,t){var n="";return e>=55296&&e<=57343||e>1114111?(t&&T("character reference outside the permissible Unicode range"),"๏ฟฝ"):D(v,e)?(t&&T("disallowed character reference"),v[e]):(t&&function(e,t){for(var n=-1,a=e.length;++n65535&&(n+=w((e-=65536)>>>10&1023|55296),e=56320|1023&e),n+=w(e))},C=function(e){return"&#x"+e.toString(16).toUpperCase()+";"},A=function(e){return"&#"+e+";"},T=function(e){throw Error("Parse error: "+e)},S=function(e,t){(t=k(t,S.options)).strict&&p.test(e)&&T("forbidden code point");var n=t.encodeEverything,a=t.useNamedReferences,r=t.allowUnsafeSymbols,i=t.decimal?A:C,h=function(e){return i(e.charCodeAt(0))};return n?(e=e.replace(s,(function(e){return a&&D(d,e)?"&"+d[e]+";":h(e)})),a&&(e=e.replace(/>\u20D2/g,">⃒").replace(/<\u20D2/g,"<⃒").replace(/fj/g,"fj")),a&&(e=e.replace(c,(function(e){return"&"+d[e]+";"})))):a?(r||(e=e.replace(u,(function(e){return"&"+d[e]+";"}))),e=(e=e.replace(/>\u20D2/g,">⃒").replace(/<\u20D2/g,"<⃒")).replace(c,(function(e){return"&"+d[e]+";"}))):r||(e=e.replace(u,h)),e.replace(o,(function(e){var t=e.charCodeAt(0),n=e.charCodeAt(1);return i(1024*(t-55296)+n-56320+65536)})).replace(l,h)};S.options={allowUnsafeSymbols:!1,encodeEverything:!1,strict:!1,useNamedReferences:!1,decimal:!1};var $=function(e,t){var n=(t=k(t,$.options)).strict;return n&&f.test(e)&&T("malformed character reference"),e.replace(m,(function(e,a,r,i,o,s,l,c,d){var u,h,f,p,m,v;return a?g[m=a]:r?(m=r,(v=i)&&t.isAttributeValue?(n&&"="==v&&T("`&` did not start a character reference"),e):(n&&T("named character reference was not terminated by a semicolon"),y[m]+(v||""))):o?(f=o,h=s,n&&!h&&T("character reference was not terminated by a semicolon"),u=parseInt(f,10),E(u,n)):l?(p=l,h=c,n&&!h&&T("character reference was not terminated by a semicolon"),u=parseInt(p,16),E(u,n)):(n&&T("named character reference was not terminated by a semicolon"),e)}))};$.options={isAttributeValue:!1,strict:!1};var M={version:"1.2.0",encode:S,decode:$,escape:function(e){return e.replace(u,(function(e){return h[e]}))},unescape:$};void 0===(a=function(){return M}.call(t,n,t,e))||(e.exports=a)}()},349:(e,t,n)=>{var a=n(536),r=n(775),i=n(310);e.exports=function(e,t,n){return n=n||a,r(e)&&r(t)?e.length===t.length&&i(e,function(e){return function(t,n){return n in this&&e(t,this[n])}}(n),t):n(e,t)}},310:(e,t,n)=>{var a=n(891);e.exports=function(e,t,n){t=a(t,n);var r=!0;if(null==e)return r;for(var i=-1,o=e.length;++i{e.exports=function(e){return e}},891:(e,t,n)=>{var a=n(761),r=n(437),i=n(614);e.exports=function(e,t){if(null==e)return a;switch(typeof e){case"function":return void 0!==t?function(n,a,r){return e.call(t,n,a,r)}:e;case"object":return function(t){return i(t,e)};case"string":case"number":return r(e)}}},437:e=>{e.exports=function(e){return function(t){return t[e]}}},769:(e,t,n)=>{var a=n(224),r=n(274),i=n(29);e.exports=function(e){switch(a(e)){case"Object":return r(o=e)?i({},o):o;case"Array":return e.slice();case"RegExp":return n="",n+=(t=e).multiline?"m":"",n+=t.global?"g":"",n+=t.ignoreCase?"i":"",new RegExp(t.source,n);case"Date":return new Date(+e);default:return e}var t,n,o}},899:(e,t,n)=>{var a=n(769),r=n(463),i=n(224),o=n(274);e.exports=function e(t,n){switch(i(t)){case"Object":return function(t,n){if(o(t)){var a={};return r(t,(function(t,a){this[a]=e(t,n)}),a),a}return n?n(t):t}(t,n);case"Array":return function(t,n){for(var a=[],r=-1,i=t.length;++r{var a=n(536),r=n(7),i=n(775),o=n(661),s=n(349);e.exports=function e(t,n,l){l=l||a;var c=r(t)&&r(n),d=!c&&i(t)&&i(n);return c||d?(c?o:s)(t,n,(function(t,n){return e(t,n,l)})):l(t,n)}},536:e=>{e.exports=function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}},775:(e,t,n)=>{var a=n(813),r=Array.isArray||function(e){return a(e,"Array")};e.exports=r},813:(e,t,n)=>{var a=n(224);e.exports=function(e,t){return a(e)===t}},7:(e,t,n)=>{var a=n(813);e.exports=function(e){return a(e,"Object")}},274:e=>{e.exports=function(e){return!!e&&"object"==typeof e&&e.constructor===Object}},224:e=>{e.exports=function(e){return Object.prototype.toString.call(e).slice(8,-1)}},614:(e,t,n)=>{var a=n(463),r=n(775);function i(e,t){for(var n=-1,a=e.length;++n{var a=n(683),r=n(808),i=n(7),o=n(536);function s(e,t){return a(this,t)}e.exports=function(e,t,n){return n=n||o,i(e)&&i(t)?r(e,function(e){return function(t,n){return a(this,n)&&e(t,this[n])}}(n),t)&&r(t,s,e):n(e,t)}},808:(e,t,n)=>{var a=n(463),r=n(891);e.exports=function(e,t,n){t=r(t,n);var i=!0;return a(e,(function(n,a){if(!t(n,a,e))return i=!1,!1})),i}},473:(e,t,n)=>{var a,r,i=n(683);function o(e,t,n,a){return e.call(a,t[n],n,t)}e.exports=function(e,t,n){var s,l=0;for(s in null==a&&function(){for(var e in r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],a=!0,{toString:null})a=!1}(),e)if(!1===o(t,e,s,n))break;if(a)for(var c=e.constructor,d=!!c&&e===c.prototype;(s=r[l++])&&("constructor"===s&&(d||!i(e,s))||e[s]===Object.prototype[s]||!1!==o(t,e,s,n)););}},463:(e,t,n)=>{var a=n(683),r=n(473);e.exports=function(e,t,n){r(e,(function(r,i){if(a(e,i))return t.call(n,e[i],i,e)}))}},683:e=>{e.exports=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},29:(e,t,n)=>{var a=n(463);function r(e,t){this[t]=e}e.exports=function(e,t){for(var n,i=0,o=arguments.length;++i{"use strict";e.exports=function(e,t,n,a){var r=self||window;try{try{var i;try{i=new r.Blob([e])}catch(t){(i=new(r.BlobBuilder||r.WebKitBlobBuilder||r.MozBlobBuilder||r.MSBlobBuilder)).append(e),i=i.getBlob()}var o=r.URL||r.webkitURL,s=o.createObjectURL(i),l=new r[t](s,n);return o.revokeObjectURL(s),l}catch(a){return new r[t]("data:application/javascript,".concat(encodeURIComponent(e)),n)}}catch(e){if(!a)throw Error("Inline worker is not supported");return new r[t](a,n)}}}},t={};function n(a){var r=t[a];if(void 0!==r)return r.exports;var i=t[a]={id:a,loaded:!1,exports:{}};return e[a].call(i.exports,i,i.exports,n),i.loaded=!0,i.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 a in t)n.o(t,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},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 a={};(()=>{"use strict";function e(e,t,n,a){return new(n||(n=Promise))((function(r,i){function o(e){try{l(a.next(e))}catch(e){i(e)}}function s(e){try{l(a.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((a=a.apply(e,t||[])).next())}))}n.r(a),n.d(a,{DEFAULT_CALENDAR:()=>il,DEFAULT_DATA:()=>ol,MODIFIER_KEY:()=>rl,default:()=>sl}),Object.create,Object.create;const t=require("obsidian");var r=n(346),i=n.n(r),o=n(512);function s(e,t){const n=window.moment(e),a=window.moment(t);let r=a.diff(n,"days");return(n.year()=a.hour()||n.minute()>=a.minute()||n.second()>=a.second()||n.millisecond()>=a.millisecond())&&(r+=1),r}function l(e,t){return(e%t+t)%t}function c(e){return"ID_xyxyxyxyxyxy".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}function d(e){var t;if(!(null===(t=e.interval)||void 0===t?void 0:t.length))return"";const n=e.interval.sort(((e,t)=>e.interval-t.interval));let a=[];for(let t of n){const r=t.interval+(t.ignore?0:e.offset);if(t.exclusive)a.push(`not every ${u(r)} year`);else{const e=n.indexOf(t),i=e>0&&n[e-1].exclusive;a.push(`${i?"also ":""}every ${u(r)} year`)}}const r=a.join(", but ");return r[0].toUpperCase()+r.slice(1).toLowerCase()}function u(e){const t=e%10,n=e%100;return 1==t&&11!=n?e+"st":2==t&&12!=n?e+"nd":3==t&&13!=n?e+"rd":e+"th"}function h(e,t,n){if(!e||null==e.day)return"";const{day:a,month:r,year:i}=e;if(null!=r&&!t[r])return"Invalid Date";if(n&&n.day){const e=n.day,o=n.month,s=n.year;if(null!=o&&null!=s&&null!=r&&null!=i)return i!=s?`${t[r].name} ${u(a)}, ${i} - ${t[o].name} ${u(e)}, ${s}`:o==r?`${t[r].name} ${u(a)}-${u(e)}, ${i}`:null!=r&&null!=i?`${t[r].name} ${u(a)}-${t[o].name} ${u(e)}, ${i}`:null!=r?`${t[r].name} ${u(a)}-${t[o].name} ${u(e)} of every year`:`${u(a)}-${u(e)} of every month`}return null!=r&&null!=i?`${t[r].name} ${u(a)}, ${i}`:null!=r?`${t[r].name} ${u(a)} of every year`:`${u(a)} of every month`}var f=n(492);const p={"Dark-Solid":"#000000",Red:"#9b2c2c",Pink:"#880E4F",Purple:"#4A148C","Deep-Purple":"#311B92",Blue:"#0D47A1","Light-Blue":"#0288D1",Cyan:"#006064",Teal:"#004D40",Green:"#2E7D32","Light-Green":"#7CB342",Lime:"#9e9d24",Yellow:"#FFEB3B",Orange:"#FF9100","Blue-Grey":"#455A64"},m=[{name:"Gregorian Calendar",description:"A calendar for the real world. Note: May not be 100% accurate.",static:{incrementDay:!0,displayMoons:!0,firstWeekDay:6,overflow:!0,weekdays:[{type:"day",name:"Sunday",id:"ID_19ea684b4a08"},{type:"day",name:"Monday",id:"ID_2928b90ab949"},{type:"day",name:"Tuesday",id:"ID_0ad9a8f9e95b"},{type:"day",name:"Wednesday",id:"ID_195a4b290bc9"},{type:"day",name:"Thursday",id:"ID_abe8c89b0999"},{type:"day",name:"Friday",id:"ID_2b5b8a79fa4a"},{type:"day",name:"Saturday",id:"ID_1a78cb79c8cb"}],months:[{name:"January",type:"month",length:31,id:"ID_e9997a780b3a"},{name:"February",type:"month",length:28,id:"ID_b8c9ebeb0b89"},{name:"March",type:"month",length:31,id:"ID_b83bda2b9be8"},{name:"April",type:"month",length:30,id:"ID_29baea7b28ab"},{name:"May",type:"month",length:31,id:"ID_6a3899fad909"},{name:"June",type:"month",length:30,id:"ID_384aeb1afa8a"},{name:"July",type:"month",length:31,id:"ID_48b8cba87b8a"},{name:"August",type:"month",length:31,id:"ID_fa0b1a6bab8a"},{name:"September",type:"month",length:30,id:"ID_da880b8af849"},{name:"October",type:"month",length:31,id:"ID_babba8186968"},{name:"November",type:"month",length:30,id:"ID_da582bfaf9b9"},{name:"December",type:"month",length:31,id:"ID_ba1bab4a3a28"}],moons:[{name:"Moon",cycle:29.530588853,offset:9.24953,faceColor:"#ffffff",shadowColor:"#000000",id:"ID_a9ab186b1819"}],leapDays:[{name:"Leap Day",type:"leapday",interval:[{ignore:!1,exclusive:!1,interval:400},{ignore:!1,exclusive:!0,interval:100},{ignore:!1,exclusive:!1,interval:4}],offset:0,timespan:1,intercalary:!1,id:"ID_b91ad86a887a"}],eras:[{name:"Before Christ",description:"",format:"Year {{abs_year}} - {{era_name}}",start:{year:-1,month:0,day:31}},{name:"Anno Domini",description:"",format:"Year {{year}} - {{era_name}}",start:{year:1,month:0,day:1}}],offset:2},current:{year:null,day:null,month:null},events:[{name:"Summer Solstice",description:"At the summer solstice, the Sun travels the longest path through the sky, and that day therefore has the most daylight.",id:"824599",note:null,date:{day:null,year:null,month:null},category:null},{name:"Winter Solstice",description:"The winter solstice marks the shortest day and longest night of the year, when the sun is at its lowest arc in the sky.",id:"824600",note:null,date:{day:null,year:null,month:null},category:null},{name:"Spring Equinox",description:"The equinox marks the day and the night is equally as long.",id:"824601",note:null,date:{day:null,year:null,month:null},category:null},{name:"Autumn Equinox",description:"The equinox marks the day and the night is equally as long.",id:"824602",note:null,date:{day:null,year:null,month:null},category:null},{name:"Christmas",description:"Christmas is a Christian holiday celebrating the birth of Christ. Due to a combination of marketability and long lasting traditions it is popular even among many non-Christians, especially in countries that have a strong Christian tradition.",id:"824603",note:null,date:{day:25,year:null,month:11},category:"christian-holidays"},{name:"Paschal Full Moon",description:"The first full moon after march 21st, which is considered the fixed date for the spring equinox.",id:"824604",note:null,date:{day:null,year:null,month:null},category:"christian-holidays"},{name:"Easter",description:"Easter is considered the most important feast for Christians, celebrating the resurrection of Christ. It is classed as a moveable feast occurring on the first full moon after the spring equinox, which is considered to be fixed at March 21st for the sake of computing the date.",id:"824605",note:null,date:{day:null,year:null,month:null},category:"christian-holidays"},{name:"Easter Monday",description:"The Monday following the Easter Sunday is often considered part of the Easter Celebration and is a day off in many countries with a strong Christian tradition.",id:"824606",note:null,date:{day:null,year:null,month:null},category:"christian-holidays"},{name:"Good Friday",description:"Good Friday is the Friday preceding Easter. It comemmorates the crucifixion of Christ according to the Bible.",id:"824607",note:null,date:{day:null,year:null,month:null},category:"christian-holidays"},{name:"Pentecost",description:"Celebrated exactly 50 days after Easter, Pentecost is the celebration of the Holy Spirit appearing before the Apostles as described in the Bible.",id:"824608",note:null,date:{day:null,year:null,month:null},category:"christian-holidays"},{name:"New Year's Day",description:"New Year's Day marks the start of a new year on the Gregorian Calendar. It starts when the clock strikes midnight and is often celebrated with fireworks, champagne and kissing.",id:"824609",note:null,date:{day:1,year:null,month:0},category:"secular-holidays"},{name:"Valentine's Day",description:"Valentine's day is a celebration of love and romance that is popular across the world. Many more cynically minded people mostly consider it an attempt to monetize the expectation of romantic gestures on the holiday through gift cards, flowers, chocolate and dates.",id:"824610",note:null,date:{day:14,year:null,month:1},category:"secular-holidays"},{name:"Halloween",description:'Halloween is holiday popular in the US, Canada and Ireland that has gradually been adopted by more and more countries. It is often celebrated by people dressing up, usually as something scary. Children will often go from door to door shouting "trick or treat" in the hopes of receiving candy, while adults tend to go to parties.',id:"824611",note:null,date:{day:31,year:null,month:9},category:"secular-holidays"},{name:"Work on the first version of this calendar started.",description:"Aecius started work on the first version Gregorian Calendar for Fantasy Calendar on this day.",id:"824612",note:null,date:{day:23,year:2019,month:5},category:"miscellaneous-events"},{name:"Work on this version of the Gregorian Calendar started.",description:"On this day, Aecius started to rework the Gregorian Calendar from scratch to make it work with the updates Wasp and Alex implemented since the summer of 2019.",id:"824613",note:null,date:{day:21,year:2020,month:0},category:"miscellaneous-events"},{name:"Introduction of the Gregorian Calendar",description:"On this day in 1582 the Gregorian calendar was officially introduced, following Thursday October 4th on the Julian Calendar",id:"824614",note:null,date:{day:15,year:1582,month:9},category:"historical-events"}],id:null,categories:[{name:"Natural Events",id:"natural-events",color:"#2E7D32"},{name:"Christian Holidays",id:"christian-holidays",color:"#9b2c2c"},{name:"Secular Holidays",id:"secular-holidays",color:"#0D47A1"},{name:"Historical Events",id:"historical-events",color:"#455A64"},{name:"Miscellaneous Events",id:"miscellaneous-events",color:"#0288D1"}]},{name:"Calendar of Greyhawk",description:"Calendar of the world of Greyhawk.",static:{incrementDay:!1,displayMoons:!0,firstWeekDay:0,overflow:!1,weekdays:[{type:"day",name:"Starday",id:"ID_a8e979984938"},{type:"day",name:"Sunday",id:"ID_1b68bb78ca1b"},{type:"day",name:"Moonday",id:"ID_c8b86aea0998"},{type:"day",name:"Godsday",id:"ID_b8097a18e95b"},{type:"day",name:"Waterday",id:"ID_1918c99949ca"},{type:"day",name:"Earthday",id:"ID_fa295a1bab89"},{type:"day",name:"Freeday",id:"ID_6a485ada3ae8"}],months:[{name:"Needfest",type:"month",length:7,id:"ID_b8a9e9da8a48"},{name:"Fireseek",type:"month",length:28,id:"ID_39b90bd8189a"},{name:"Readying",type:"month",length:28,id:"ID_48a9081ad839"},{name:"Coldeven",type:"month",length:28,id:"ID_5a7b6beadb68"},{name:"Growfest",type:"month",length:7,id:"ID_48c8d82b1908"},{name:"Planting",type:"month",length:28,id:"ID_081a793a49da"},{name:"Flocktime",type:"month",length:28,id:"ID_eb68a89a0a2a"},{name:"Wealsun",type:"month",length:28,id:"ID_9b3a098ae908"},{name:"Richfest",type:"month",length:7,id:"ID_f99b4b3a08b8"},{name:"Reaping",type:"month",length:28,id:"ID_ebe9eb68ea39"},{name:"Goodmonth",type:"month",length:28,id:"ID_fb3b6af9895b"},{name:"Harvester",type:"month",length:28,id:"ID_395bcb399b8a"},{name:"Brewfest",type:"month",length:7,id:"ID_e8b908181afa"},{name:"Patchwall",type:"month",length:28,id:"ID_cbda3b399969"},{name:"Ready'reat",type:"month",length:28,id:"ID_592a2a690bf8"},{name:"Sunsebb",type:"month",length:28,id:"ID_39e8faf8e9b8"}],moons:[{name:"Luna",cycle:28,offset:3,faceColor:"#ffffff",shadowColor:"#292b4a",id:"ID_f8997b39b8b8"},{name:"Celene",cycle:91,offset:46,faceColor:"#ffffff",shadowColor:"#292b4a",id:"ID_7afbb9b88be8"}],leapDays:[],eras:[{name:"Common Year",description:"",format:"Year {{year}} CY",start:{year:1,month:0,day:1}}]},current:{year:591,day:1,month:0},events:[{name:"Winter Solstice",description:"The winter solstice marks the shortest day and longest night of the year, when the sun is at its lowest arc in the sky.",id:"824573",note:null,date:{day:null,year:null,month:null},category:null},{name:"Spring Equinox",description:"The 4th of Growfest is the first day of Low Summer in Oerth's Calendar. This is the point where the sun crosses Oerth's equator. Holidays celebrated on this date include Saint Cuthbert's Day, the Feast of Edoira, the Spring Feast, and Raxivort's Orgy. This is also the day on which the priests of Tlaloc ritually sacrifice and eat the flesh of human children or babies in their patron's honor. Worshippers of Rillifane Rallathil celebrate the Budding on this day, a joyful celebration of new life celebrated through dance and song in oak groves in the heart of the forest. A ritual hunt of a noble heart is held on this day, after which the venison is eaten in celebration of Rillifane's bounty.\n\nAlso celebrated on this date is the Sanctification of Renewal, a sacred holiday to the followers of Garyx.",id:"824574",note:null,date:{day:null,year:null,month:null},category:null},{name:"Summer Solstice",description:"\tAt the summer solstice, the Sun travels the longest path through the sky, and that day therefore has the most daylight.",id:"824575",note:null,date:{day:null,year:null,month:null},category:null},{name:"Autumn Equinox",description:"The 4th of Brewfest is the Autumnal Equinox, when the sun crosses the equator from north to south. This date is the official end of high summer and the beginning of autumn on the Greyhawk Calendar. This date is holy to Wenta and is sometimes regarded as an unofficial holy day of Velnius. Among the xvarts, it also marks the celebration of Raxivort's Orgy. The worshippers of Rillifane Rallathil celebrate the Transformation on this day, a time of dancing and spiritual rebirth marking the beginning of autumn and the promise that spring will come again.",id:"824576",note:null,date:{day:null,year:null,month:null},category:null},{name:"Great Moons Glory",description:"The night of Great Moon's Glory on Readying 11th, when Luna is full but Celene is new. It is holy to Celestian, and a time when offerings are left to Atroa to beg her to come early and to Telchur to request that he peacefully leave. Druids of the Old Faith are known to also hold this night as auspicious, but few outside their circles know the details.",id:"824577",note:null,date:{day:null,year:null,month:null},category:null},{name:"Dark Night",description:"Dark Night, also called Black Night, Star Night, and the Night of Hopeful Dawn, is observed on Goodmonth 11. It is a holy night for the church of Celestian because the stars are so easy to observe without the light of one of the moons getting in the way.\n\nIt is also a holy night for the church of Rao, who refer to it as the Night of Hopeful Judgment. They believe that Rao chooses this time to separate the sinful from the righteous in the afterworld. There is also a prophecy in the Raoan holy text, the Book of Incarum, that claims that Rao will cleanse the world of evil on this night, sometime in the future.\n\nThe priesthood of Kurell consider it holy, too, calling it Kurell's Night, requiring the faithful to undertake special missions on this night to prove their cleverness and skill. Kurell smiles particularly on acts of theft or vengeance performed on his holy night, blessing those who do so successfully. Donations to Kurell's church are encouraged afterwards, for Kurell may take vengeance against those who do not properly thank him for his aid.\n\nMost other people regard Dark Night as a time of ill omen, fearing it as much as the night of the Blood Moon Festival. Bonfires are burned from dusk till dawn, particularly in small villages and in Elmshire and Narwell. Orc and goblin religions view it as an excellent night for raiding settlements. Certain evil cults perform kidnappings, murders, and vile rites during this period. On the other hand, lycanthropic activity is at its lowest.\n\nIggwilv and Tuerny attempted to summon a demonic army to Luna on this night in 585 CY.",id:"824578",note:null,date:{day:null,year:null,month:null},category:null},{name:"Agelong",description:"Agelong, observed on the 4th of Richfest (the Summer Solstice), is the celebration of the legendary creation of the elves. According to myth, after Corellon Larethian spilled his blood during the battle with Gruumsh, the rest of the Seldarine gathered this sacred blood and mingled it with the tears shed during the same battle by Sehanine Moonbow. The Seldarine then infused these divine fluids into vessels they had created to be the bodies of the elven race.\n\nThis day is, among the elves, mostly an excuse to go orc-hunting. Elven warriors cut themselves with daggers carved from volcanic glass to remind themselves of Corellon's own wound from Gruumsh's spear, then strive to slaughter as many orcs as possible during the night.",id:"824579",note:null,date:{day:4,year:null,month:8},category:null},{name:"Blood Moon Festival",description:"The Blood Moon Festival is celebrated on Coldeven 11, the night when Luna is full just before the Spring Equinox. On this night, curses are said to be twice as powerful and the forces of evil are at their strongest. Fiends roam the lands, and human sacrifice is common. This night is held especially sacred by cultists of Nerull, but worshipers of Kurell also mark this night as especially auspicious for acts of vengeance. Goodly folk superstitiously guard their homes with horseshoes, holy water, bottles of milk, and iron filings.\n\nDemonic forces sent by Iuz destroyed the leadership of the Horned Society during the Blood Moon Festival of 583 CY.\n\nIt's possible that this is also the night the elves celebrate as Faerieluck.",id:"824580",note:null,date:{day:11,year:null,month:3},category:null},{name:"Breadgiving Day",description:"Celebrated on on the Winter Solstice (Needfest 4), Breadgiving Day, is a day of charity observed in the Free City of Greyhawk by the faiths of Pelor, Rao, and Saint Cuthbert.\n\nThis was not originally a religious holiday as such. It is a new practice that began after the Greyhawk Wars to feed the refugees that flooded the city during that time. Since of Old City who line up by the hundreds along the Processional from the Black Gate. The booths are worked by low-ranking priests from all three religions, with armed priests of St. Cuthbert providing security. A smaller event is held simultaneously below Wharfgate in Greyhawk City's Shacktown.\n\nThe clergies of Heironeous, Pholtus, and Trithereon do not participate, but they compete with one another to perform good deeds the whole week of Needfest. The rivalries between Trithereon and Pholtus, Trithereon and Heironeous, and Pholtus and St. Cuthbert are such that the faiths sometimes fall into arguments and even blows if their \"good deeds\" conflict with each other. Greyhawk's rowdy citizens often cheer and place bets on the outcomes of these quarrels.\n\nThe priests of Pelor hold a morning ceremony on this day with a sermon, singing, and music.",id:"824581",note:null,date:{day:4,year:null,month:0},category:null},{name:"Brewfest",description:"Also called Drunken Days or the Feast of Brewers, Brewfest, the fourth festival week of Oerth's calendar, is a rowdy period unsurprisingly claimed as a holy time by the churches of Olidammara and Wenta. The Free City of Greyhawk does not celebrate the entire week, but Brewfest 1 and Brewfest 7 are both set aside as public holidays. In Elmshire, the week is spent in restful, carefree music, drinking, and dancing. In Hardby it is spent with fistfights, riots, and ensuing hangovers. In Narwell it is celebrated with ale-brewing contests, horse races, beatings, and robbery. In Safeton it is celebrated with nervous violence and nightly orc hunts. The week is also sacred to the Old Faith.\n\nThe elves call this week Fallrite, and use it to contemplate the spirits of their ancestors, the passage to the afterworld, and the fragility of life. They believe other races make merry during Brewfest because they are \"hiding\" to avoid facing death's reality. In contrast, the olvenfolk strive to fulfill the most important of their duties and reach the most crucial of their decisions during this time of year. The elven kings and queens traditionally judge capital cases during Fallrite.",id:"824582",note:null,date:{day:4,year:null,month:12},category:null},{name:"Faerieluck",description:"Faerieluck is a holiday celebrated by the elves in early spring, when the power of Faerie runs high and they celebrate with their fey cousins: the sprites, buckawns, pixies, nymphs and so forth. The point of the festival is to remind the elves of their ancient kinship with these creatures. The day is spent playing practical jokes, engaging in battles of wit, and general merriment.",id:"824583",note:null,date:{day:11,year:null,month:2},category:null},{name:"Feast of Edoira",description:"The Feast of Edoira is a holiday celebrated in the Domain of Greyhawk on Growfest 4, during the Spring Equinox. It is named after Edoira, a priest of Rao who centuries ago established the Edoiran Compact, a pact by which many of the lawful good-aligned faiths and people of the Domain could agree to cooperate. The Compact was later extended to non-lawful good and neutral faiths.\n\nEdoira was never deified but was revered by many good faiths in the Domain. The holiday was marked by religious services on Godsday of Growfest led by the clerics of the good faiths who partook of the Compact, and secular festivals by the ordinary citizenry. Observance of the holiday has declined over the years, though the clergies of Rao and Pelor still hold their traditional interfaith services, with occasional participation by the priesthoods of Heironeous and Mayaheine. Since the end of the Greyhawk Wars most of the Domain's outlying communities no longer observe the holiday. Only one church in Safeton still does so.",id:"824584",note:null,date:{day:4,year:null,month:4},category:null},{name:"Desportium of Magic",description:"The highlight of Growfest is the Desportium of Magic. During this day torchlight only, no magic illumination is supposed to be used. Wizards and Sorcerers then perform feats of illusion and magic trying to outdo one another with their displays. Usually there is a panel of judges to decide, in the larger cities there is usually a limit of 5-person teams competing. Each performance during the Desportium of Magic uses a long established theme, that of an attack on the town by various monsters and Dark Elves, repelled by brave warriors and spellcasters. The displays, made up of any number of spells cast without the use of magic devices, cannot actually cause any harm to property or people, but must be as wonderful, striking, detailed, and lifelike as possible.\n\nThis motif is based on actual attacks through the years from the Uttermost War to the most recent Great Slave Raids. The idea is to make the attackers as dreadful as possible and the defenders as heroic as possible, secondary is to make sure that people will always remember the terror of the Uttermost War. In large cities like the CSIO and CSWE and Tarantis, these performances last all night and are amazing to watch. In smaller villages without spellcasters, puppet plays are often done in its stead.",id:"824585",note:null,date:{day:7,year:null,month:4},category:null},{name:"Holy Day of Pelor",description:"The Holy Day of Pelor, also known as Giving Day and Midsummer's Day, is celebrated on the Summer Solstice.\n\nBecause Pelor is widely loved by the commoners, this day is set aside as a day of rest in the Free City of Greyhawk. Only essential work is done on this day. Many merchants close their shops on Giving Day as well out of respect for the Sun Father and his teachings. Gambling houses are closed, but not hostelries, for Giving Day is a day of feasting and goodwill, a time for enjoying the fruits of the Oerth.\n\nPublic services are held from dawn until noon by Pelor's priests, outdoors if the weather permits (which if almost always does, as the clerics use weather-controlling magic for maximum sunlight). Even Greyhawk City's large temple of Pelor is not big enough to hold the throngs who come to celebrate on this day, so throngs of the faithful fill the temple grounds in the Garden Quarter, spilling out from the Millstream to the Nobles' Wall, and to the road leading toward Greyhawk's Grand Theater. Many come, of course, for the free meal the priests provide after the service. The Pelorian priests are well aware of this, but believe that for the needy, a full stomach must come before wisdom and learning. Members of Greyhawk's Guild of Thieves and Beggar's Union, many of whom remember Midsummer's Day fondly from their orphaned childhoods, both protect priests of Pelor on this day, and woe onto those who attempt to test them on this matter.\n\nPriests of Pelor, bedecked in yellow and gold, parade about the streets, demanding donations for their charitable works, freely using guilt to squeeze more from stingy purses. Free healings are given out, particularly to children. Most Greyhawkers wear at least one item of yellow cloth on this day out of respect.\n\nSome crusading Pelorians crusade against evil lycanthropes on this night, since both Celene and Luna are full.",id:"824586",note:null,date:{day:4,year:null,month:8},category:null},{name:"Holy Day of Serenity",description:"The Holy Day of Serenity, on Reaping 10, is celebrated in Veluna as a holy day of Rao, though it's actually the anniversary of Veluna's secession from Furyondy in 476 CY. It is celebrated with religious singing and worship.",id:"824587",note:null,date:{day:10,year:null,month:9},category:null}],id:null,categories:[{name:"Natural Events",id:"natural-events",color:"#2E7D32"},{name:"Religious Holidays",id:"religious-holidays",color:"#FFEB3B"},{name:"Secular Holidays",id:"secular-holidays",color:"#0D47A1"},{name:"Magical Events",id:"magical-events",color:"#311B92"},{name:"Miscellaneous Events",id:"miscellaneous-events",color:"#0288D1"}]},{name:"Calendar of Golarion",description:"Calendar for the world of Pathfinder.",static:{firstWeekDay:0,incrementDay:!1,displayMoons:!0,overflow:!0,weekdays:[{type:"day",name:"Moonday",id:"ID_db8af8f85b8a"},{type:"day",name:"Toilday",id:"ID_f87a094b2849"},{type:"day",name:"Wealday",id:"ID_2a5bb88b3ae8"},{type:"day",name:"Oathday",id:"ID_c93a0be8981b"},{type:"day",name:"Fireday",id:"ID_2b7b59794a0b"},{type:"day",name:"Starday",id:"ID_baaa6a89ca1b"},{type:"day",name:"Sunday",id:"ID_f9baca088b28"}],months:[{name:"Abadius",type:"month",length:31,id:"ID_dad9da89f818"},{name:"Calistril",type:"month",length:28,id:"ID_980a88cb9b68"},{name:"Pharast",type:"month",length:31,id:"ID_a9c96ac80908"},{name:"Gozran",type:"month",length:30,id:"ID_a99a697b9abb"},{name:"Desnus",type:"month",length:31,id:"ID_8bcad9a8f84a"},{name:"Sarenith",type:"month",length:30,id:"ID_484a49a998db"},{name:"Erastus",type:"month",length:31,id:"ID_9a48e9b96938"},{name:"Arodus",type:"month",length:31,id:"ID_bbe99b2afaea"},{name:"Rova",type:"month",length:30,id:"ID_ba39fbe8c8b8"},{name:"Lamashan",type:"month",length:31,id:"ID_69d93ba9dba8"},{name:"Neth",type:"month",length:30,id:"ID_4ad8fb79eb6a"},{name:"Kuthona",type:"month",length:31,id:"ID_9a3a8b388939"}],moons:[{name:"Somal",cycle:29.5,offset:9.5,faceColor:"#ffffff",shadowColor:"#292b4a",id:"ID_b87ab959cac9"}],leapDays:[{name:"Leap Day",type:"leapday",interval:[{ignore:!1,exclusive:!1,interval:8}],offset:0,timespan:1,intercalary:!1,id:"ID_88c8da3b8b2b"}],eras:[{name:"Age of Serpents",description:"",format:"Year {{year}} - {{era_name}}",start:{year:4720,month:8,day:15}},{name:"Age of Darkness",description:"",format:"Year {{abs_year}} - {{era_name}}",start:{year:-5300,month:0,day:1}},{name:"Age of Anguish",description:"",format:"Year {{year}} - {{era_name}}",start:{year:-4500,month:8,day:1}},{name:"Age of Destiny",description:"",format:"Year {{year}} - {{era_name}}",start:{year:-3500,month:8,day:1}},{name:"Age of Enthronement",description:"",format:"Year {{year}} AR - {{era_name}}",start:{year:1,month:8,day:1}},{name:"Age of Lost Omens",description:"",format:"Year {{year}} AR - {{era_name}}",start:{year:4606,month:8,day:1}}]},current:{year:4720,day:15,month:0},events:[{name:"Summer Solstice",description:"At the summer solstice, the Sun travels the longest path through the sky, and that day therefore has the most daylight.",id:"824492",note:null,date:{day:null,year:null,month:null},category:null},{name:"Winter Solstice",description:"The winter solstice marks the shortest day and longest night of the year, when the sun is at its lowest arc in the sky.",id:"824493",note:null,date:{day:null,year:null,month:null},category:null},{name:"Spring Equinox",description:"The equinox marks the day and the night is equally as long.",id:"824494",note:null,date:{day:null,year:null,month:null},category:null},{name:"Autumn Equinox",description:"The equinox marks the day and the night is equally as long.",id:"824495",note:null,date:{day:null,year:null,month:null},category:null},{name:"Eternal Kiss",description:"Zon-Kuthon\n\nCulminating on the first new moon of the new year, the Eternal Kiss is an 11 day ceremony honoring Zon-Kuthon. On the final day, a living sacrifice is made to the Dark Prince, after the victim is pampered and pleasured for the ten days prior. The sacrifice can either be an enemy or a great devotee of the church, and is kept alive for as long as possible during the torture using magic. This holiday often involves fortune-telling as a part of the torture, using the victim's entrails or their cries of pain to determine the Midnight Lord's will. Occasionally it is believed that the sacrifice will prophesy with the voice of Zon-Kuthon himself.",id:"824496",note:null,date:{day:null,year:null,month:null},category:null},{name:"Longnight",description:"Longnight is a holiday celebrated on the full moon in the winter month of Abadius. During the festival, revelers stay up all night to greet the dawn to defy the long winter months. It is even celebrated in Irrisen, where there are no natural seasons.",id:"824497",note:null,date:{day:null,year:null,month:0},category:null},{name:"Foundation Day",description:"Absalom, Milani\n\nFoundation Day is a civil holiday celebrated on the New Year (1 Abadius) in Absalom to commemorate the city's founding by the god Aroden in 1 AR.",id:"824498",note:null,date:{day:1,year:null,month:0},category:null},{name:"Pjallarane Day",description:"Irrisen\n\nPjallarane Day is an ancient holiday in Irrisen celebrated on 1 Abadius (New Year's Day). Every 100 years, Baba Yaga returns to Golarion to remove her daughter from the throne of Irrisen, and put another daughter on the throne instead. In 3713 AR the third Queen of Irrisen, Pjallarane, and her children chose to resist. Baba Yaga ruthlessly crushed the rebellion in a single day, which is now celebrated as a holiday. The festival includes feasting and the burning of effigies of tar and straw. This is a reminder of the fate of Pjallarane's followers, who were burned alive as a warning to all those who would oppose Baba Yaga.",id:"824499",note:null,date:{day:1,year:null,month:0},category:null},{name:"Vault Day",description:"Abadar\n\nVault Day is a holiday held on 6 Abadius in honor of Abadar, Master of the First Vault.",id:"824500",note:null,date:{day:6,year:null,month:0},category:null},{name:"Ruby Prince's Birthday",description:"Osirion\n\nThe Ruby Prince's Birthday is a national holiday in Osirion in honor of the birthday of Khemet III, the Ruby Prince. It is celebrated annually on the 20 Abadius.",id:"824501",note:null,date:{day:20,year:null,month:0},category:null},{name:"Merrymead",description:"Druma, Cayden Cailean\n\nA holiday occurring on 2 Calistril, Merrymead was started in Druma and is supposed to be a time to share of the last of the previous year's mead with the rest of the community.\n\nIn current times, most people just use it as an excuse to drink excessively. The poor travel from bar to bar drinking whatever alcohol they can afford, while the wealthy will set aside specific vintages for this day. A known consequence of this day are 'mead riots' that happen when there are more celebrants than there is alcohol to serve them. This leads to a violent, destructive group of people in a crowded bar. If this is a common occurrence for particular cities, they may reinforce their guard force for the inevitably eventful night.",id:"824502",note:null,date:{day:2,year:null,month:1},category:null},{name:"King Eodred II's Birthday",description:"Korvosa\n\nKing Eodred II's Birthday was a local holiday in the Varisian city-state of Korvosa and was celebrated on 16 Calistril. It commemorated the birthday of its former ruler, King Eodred Arabasti II, who decreed that on the day, scantily clad women would dance and serve free wine to celebrants.",id:"824503",note:null,date:{day:16,year:null,month:1},category:null},{name:"Loyalty Day",description:"Cheliax, Asmodeus\n\nLoyalty Day is a holiday in the nation of Cheliax commemorating the date on Calistril 19, 4640 AR when House Thrune signed the Treaty of Egorian, declaring it the victor in the Chelish Civil War and ruler of the empire. Because of House Thrune's well-known ties to the infernal, this holiday is also observed by the Church of Asmodeus who consider it a feast day. The church along with local governments provide a free meal to all citizens to remind them of the benefits House Thrune provides them with.",id:"824504",note:null,date:{day:19,year:null,month:1},category:null},{name:"Fateless Day",description:"Mahathallah\n\nFollowers of Mahathallah mark each leap day as Fateless Day, when the River of Souls temporarily stops and souls can escape Pharasma's judgment. They perform many sacrificial and suicidal rituals on Fateless Day.",id:"824505",note:null,date:{day:29,year:null,month:1},category:null},{name:"Golemwalk Parade",description:"Magnimar, Varisia\n\nThe Golemwalk Parade is a parade of golems created by amateurs hoping to win a monetary grant, or even a job, from the Golemworks in Magnimar. At the end of the parade along the Avenue of Honors, the constructs are judged.",id:"824506",note:null,date:{day:null,year:null,month:2},category:null},{name:"Day of Bones",description:"Pharasma\n\nPriests and worshipers of the Lady of Graves parade the bodies of the recently dead on this holiday, holding free burials afterwards.",id:"824507",note:null,date:{day:5,year:null,month:2},category:null},{name:"Sable Company Founding Day",description:"Korvosa\n\nSable Company Founding Day is a holiday marking the founding of the Sable Company of the Varisian city-state of Korvosa. Celebrated on 6 Pharast, the day is marked by somber military parades that generally preclude the consumption of alcohol, a staple on most other holidays.",id:"824508",note:null,date:{day:6,year:null,month:2},category:null},{name:"Night of Tears",description:"Solku\n\nThe Night of Tears held annually on 7 Pharast in the Katapeshi town of Solku. It is a solemn vigil commemorating those lost in the Battle of Red Hail in 4701 AR.",id:"824509",note:null,date:{day:7,year:null,month:2},category:null},{name:"Kaliashahrim",description:"Qadira\n\nKaliashahrim is a national holiday celebrated on Pharast 13 in Qadira that celebrates the Padishah Emperor of distant Katheer, and Qadira's loyalty to him.",id:"824510",note:null,date:{day:13,year:null,month:2},category:null},{name:"Conquest Day",description:"Nex\n\nEvery year, on the 26th of Pharast, Elder Architect Oblosk โ€” oldest member of Nex's Council of Three and Nine โ€” ascends to the highest balconies of the Bandeshar in Quantium. In a voice made thunderous by the platform's magic, the wizened pech councilman spends the hours from dusk to just past noon enumerating the atrocities committed by the necromancers of Geb upon the people of Nex, culminating with the disappearance of the archwizard Nex himself. At the conclusion of this record of national wounds, the country's eleven other council members join Oblosk in renewing their yearly vow to neither forget nor forgive the Gebbites' atrocities and to again swear in their lost ruler's name to endlessly wage war against their ancient enemies.\n\nOn this day, known as Conquest Day, all the people of Nex are expected to share in their leaders' oaths, to celebrate the shared patriotism of their wondrous nation, and to remember the sacrifices of heroes past. This also makes it a day for many Nexian wizards to reveal deadly new spells, gigantic constructs, and audacious arcane masterworksโ€”which many creators promise to be the doom of their foes. Even throughout the rest of the Inner Sea region, many crusaders, rebels, and zealots observe Conquest Day as a day to renew blood oaths, launch long-planned battles, and finally take revenge. It is a day for words of honor, a day for battle cries, and a day where glory most favors the bold.",id:"824511",note:null,date:{day:26,year:null,month:2},category:null},{name:"Days of Wrath",description:"Asmodeus, Cheliax\n\nThe Days of Wrath, or Dies Irae, are a holiday celebrated on both solstices and equinoxes in the nation of Cheliax and wherever Asmodeus is worshiped. They are primarily a national holiday and not truly a religious one, but the two are often confused due to Cheliax's current political climate. Various contests and blood sports are held on these days, promoting those elites who can clearly demonstrate their superiority over others. Some believe that these competitions are watched and judged by devils themselves. In the parts of the world where the Prince of Darkness is not openly venerated, these holidays take on a different tone: they are used to settle old grievances and also to end contracts.\n\nIn these days, bloodsports are organized into cities' stadiums. Slaves and servants of any master may choose to enter the arena for one-on-one bloody battles to the death. Free men and women of all classes are free to enter the arena as well. The entrants fight in rounds until at last one stands alone. The winner is granted freedom from slavery or servitude, erasure of all debts, and a purse of gold.\n\nThe winter solstice sees the culmination of the Dies Irae, with all the winners of the three previous bouts summoned to Egorian to fight to the death for the amusement of the nobles. The winner is given a title of baronet and a plot of land.",id:"824512",note:null,date:{day:null,year:null,month:null},category:null},{name:"Firstbloom",description:"Gozreh\n\nFirstbloom is a holiday celebrating the first planting of the agricultural season, and generally associated with the weather god Gozreh. It falls on the vernal equinox. Many farming communities see it as the beginning of the year, even though conventional calendars begin two months earlier. Despite weariness after a full day planting, many farming communities hold celebrations come the night: feasting, dancing and courtship feature showing the cycle of nature.",id:"824513",note:null,date:{day:null,year:null,month:null},category:null},{name:"First Cut",description:"Falcon's Hollow\n\nThe First Cut celebration in Falcon's Hollow used to mark the start of the work in the woods each spring. Now, however, it is a meaningless ramshackle ceremony as Thuldrin Kreed forces the lumber crews to work through even during the coldest months in the winter. Still, First Cut brings people out to celebrate the start of the spring.",id:"824514",note:null,date:{day:null,year:null,month:null},category:null},{name:"Currentseve",description:"Gozreh\n\nOn this religious holiday, all who travel on the water make offerings to Gozreh in the hopes of safe passage for the coming year.",id:"824515",note:null,date:{day:7,year:null,month:3},category:null},{name:"Taxfest",description:"Abadar\n\nNo one enjoys paying taxes but the collection of fair taxes is considered an integral part of the maintenance of society, and is therefore holy to the god Abadar. Every year on the 15th of Gozran, priests of the church of Abadar spend the day walking city streets, doing what they can to make the bitter pill of annual taxes a bit easier to swallow.\n\nThe Business of the Day\n\nFrom dawn to dusk, clerics of Abadar attend the tax collectors of sizeable communities as the tax wagons roll from door to door. The church officials monitor these activities to make sure that the process is conducted respectfully and justly, and that citizens know that the process is monitored. More than just aiding in the yearly errand, the faithful personally thank every citizen for contributing to the improvement of their city, extol the public works funded by their contributions, and foretell the grandeur of civic projects to come. The disenfranchised and destitute they attempt to comfort as best they can, quoting from their god's dogma on work and worthiness, but this is not a day for discounts or deferrals. The citizens are able to voice their concerns and ideas as to where the monies levied should best be applied. Citizens are free to speak their mind on any issue here without fear of repercussion.\n\nThe Celebrations of the Day\n\nAt dusk, the Abadarans host several celebrations in parks, plazas, and other communal areas about the city, organizing donations and contributions from local vendors to feed and entertain all-comers. Having already preached to most of the city over the course of the day, the clerics perform only a brief opening ceremony, dedicating the feast to Abadar, the city, and its great people. These celebrations are often quite distinct from neighbourhood to neighbourhood and are almost always divided along economic boundaries.\n\nThe festivities involving the wealthiest citizens usually happen on the steps of city hall or other grand civic buildings and feature the best music and food, but often little more than polite card and guessing games. These galas usually wrap up by midnight.\n\nFor the common folk, the parks and marketplaces take on a carnival atmosphere, with simple but good food, local ales, performances by talented citizens, and games of chance going on well into the night. A prevailing superstition through these festivals is that, during the celebration, it is lucky to kissโ€”or in some regions, pinchโ€”a cleric of Abadar, leading to many a rosy-cheeked cleric.\n\nEven the city's poor are given reason to celebrate, as the local temple of Abadar hosts a cheery but unabashedly religious gathering on its steps, feeding all comers, doling out a hearty ration of wine, singing hymns of the faith, and providing tokens for a second wine ration for any who return to attend a service within the month.\n\nFor a holiday that revolves around paying taxes, this Abadaran festival is not as reviled as one might expect.",id:"824516",note:null,date:{day:15,year:null,month:3},category:null},{name:"Wrights of Augustana",description:"Andoran, Brigh\n\nThis local festival in the Andoran port city of Augustana is held to honor and celebrate the local shipbuilding industry as well as the navy. The mathematics and engineering required for the building of the ships is praised by Brigh's faithful.",id:"824517",note:null,date:{day:16,year:null,month:3},category:null},{name:"Gala of Sails",description:"Absalom\n\nOne of two local festivals where kite-battlers compete.",id:"824518",note:null,date:{day:27,year:null,month:3},category:null},{name:"Remembrance Moon",description:"Iomedae, Lastwall, Ustalav\n\nA national holiday to commemorate those who died in the Shining Crusade against the Whispering Tyrant. Although not strictly a religious holiday, Iomedae's name is heavily invoked, due to her many military accomplishments during the war.",id:"824519",note:null,date:{day:null,year:null,month:4},category:null},{name:"Angel Day",description:"Magnimar, Varisia\n\nAngel Day is a local Magnimarian holiday celebrated on 31 Desnus. The annual celebration marks the founding of the city, and its founders' flight from Korvosa. It also honors the presence and popular worship of the empyreal lords, which predates the city by centuries. During the festival, nearly all local businesses shut their doors and the citizens take part in countless feasts, masquerade balls dressed as angels, and the burning of devil effigies meant to symbolize infernally-influenced Korvosa.",id:"824520",note:null,date:{day:31,year:null,month:4},category:null},{name:"Old-Mage Day",description:"Holiday celebrating Old-Mage Jatembe, the father of Garundi magic.",id:"824521",note:null,date:{day:13,year:null,month:4},category:null},{name:"Multiple Events",description:"Festival of the Ruling Sun\n\nShizuru\n\nCelebrates the longest day.\n\nFounder's FollyUlar Kel\n\nAdventurers and children follow a hallucinatory red stripe along zigzagging paths, amusing residents.\n\nHarvest Bounty Festival\n\nSegada\n\nMarking the beginning of the harvest season, this festival involves sporting tournaments, dancing, storytelling, and feasts. Celebrants give thanks and eliminate grudges.\n\nLongwalk\n\nGrandmother Spider, Nurvatchta; southern hemisphere winter solstice\n\nCelebrates the escape of Nurvatchta's anadi people from bondage, in part thanks to Grandmother Spider lengthening their cover of darkness in their escape.\n\nRitual of Stardust\n\nDesna\n\nFestival held in the evening and through the night, where Desna's faithful sing songs and throw sand and powdered gems into bonfires.\n\nRunefeast\n\nMagrim\n\nDay marking the day dwarves learnt the first runes and the proper way to pray.\n\nSunwrought FestivalSarenrae, Brigh\n\nDay commemorating the defeat of Rovagug by Sarenrae, celebrated with the flying of kites, fireworks, and gift giving.",id:"824522",note:null,date:{day:null,year:null,month:null},category:null},{name:"Burning Blades",description:"Sarenrae\n\nThe holy, month-long festival ends on this day, featuring dances with flaming blades.",id:"824523",note:null,date:{day:10,year:null,month:5},category:null},{name:"Liberty Day",description:"Andoran, Milani\n\nHoliday celebrating Andoran's independence. Milanites celebrate that very little violence occurred.",id:"824524",note:null,date:{day:3,year:null,month:5},category:null},{name:"Talon Tag",description:"Andoran\n\nThe Eagle Knights perform aerial displays in Almas on this day.",id:"824525",note:null,date:{day:21,year:null,month:5},category:null},{name:"Riverwind Festival",description:"Korvosa\n\nAn early summer holiday that honors a cooling shift in the winds, celebrated with much drinking.",id:"824526",note:null,date:{day:22,year:null,month:5},category:null},{name:"Inheritor's Ascendance ",description:"Iomedae\n\nInheritor's Ascendance, originally called 'Herald's Day', honours the day that Iomedae was chosen by the god Aroden to become his herald (thus replacing Arazni), thus boosting her power beyond that of a fledgling goddess. This holiday was renamed after the demise of Aroden.",id:"824527",note:null,date:{day:1,year:null,month:7},category:null},{name:"First Crusader Day",description:"Mendev\n\nHoliday in celebration of the continuing crusade against the demons of the Worldwound.",id:"824528",note:null,date:{day:6,year:null,month:7},category:null},{name:"Day of Silenced Whispers",description:"Ustalav\n\nThe Day of Silenced Whispers is an Ustalavic holiday celebrated every 9 Arodus marking the defeat of the Whispering Tyrant in 3827 AR by the coalition forces of the Shining Crusade and the liberation of the country after centuries of undead domination.",id:"824529",note:null,date:{day:9,year:null,month:7},category:null},{name:"Founding Day",description:"Ilsurian, Varisia\n\nFestival celebrating the founding by Ilsur of the town of Ilsurian in 4631 AR.",id:"824530",note:null,date:{day:10,year:null,month:7},category:null},{name:"Armasse",description:"Aroden, Iomedae, Milani\n\nThe raucous, week-long festival known as Armasse is held each year beginning on 16 Arodus. The celebration โ€” once dedicated to the god Aroden โ€” is still important to the faithful of Iomedae, who use it to train commoners in combat, ordain apprentice clergy, pick squires for knights, and teach military history, hoping to prevent the mistakes of the past from being repeated. Among those not dedicated to the Inheritor the holiday has lost most of its religious significance since Aroden's death, tending now only toward wild partying, a fact that has precluded the diabolist authorities of Cheliax from prohibiting Armasse outright. Nevertheless, in places where the church of Asmodeus is openly allowed, it hosts special activities for its parishioners during the same week in an effort to counter the influence of the holiday. The city of Corentyn is especially known for its extravagant Armasse festivities.",id:"824531",note:null,date:{day:16,year:null,month:7},category:null},{name:"Saint Alika's Birthday",description:"Korvosa\n\nQuiet holiday honoring the birth of Saint Alika the Martyr.",id:"824532",note:null,date:{day:31,year:null,month:7},category:null},{name:"Archerfeast",description:"Erastil\n\nArcher's Day or Archerfeast is a holiday of the god Erastil held annually on the 3rd of Erastus. Despite the holiday's origins in the worship of Erastil, common country folk from the Lands of the Linnorm Kings to Taldor celebrate the height of summer with a day set aside for establishing new relationships, enjoying current camaraderie, and celebrating the gifts of the gods. Archery competitions are held frequently in which the men test their skill with the bow through progressively harder trials. The exact form of competition is different from place to place, and the winner is awarded a rack of elk horns and a quiver of blessed arrows. He is also given the title of \"Protector\", which he holds until the next year.\n\nWhile the festival's traditions emphasize contests of marksmanship, most have expanded to exhibit talents of all types, from baking and storytelling to racing and mock combat. Aside from encouraging a fair-like atmosphere, many of the displays and competitions serve one of two secondary purposes: either as a way for merchants to show off their superior livestock and wares, or (more popularly) as a way for eligible men and women to show off to each other.\n\nWhile the day's events at most Archerfeast fairs are filled with games, food, and crafts, the night brings dancing, drinking, pranks, and the crowning of the princes and princesses of spring and summer for the two single youths and two single adults who fared best in the day's events. The festivities continue late into the evening, but end promptly at midnight, so that in true Erastilian fashion the next day's responsibilities are not overly impeded. For those not of Erastil's flock, however, private parties, drinking, and trysting carry on long into the next morning.",id:"824533",note:null,date:{day:3,year:null,month:6},category:null},{name:"Founding Festival",description:"Korvosa\n\nFounding Festival is a local Korvosan celebration marking the establishment of the city in 4407 AR. Held annually on 14 Erastus, the festival is a chance for the citizens to let off some steam, drink copiously, and watch magical light shows late into the night.",id:"824534",note:null,date:{day:14,year:null,month:6},category:null},{name:"Burning Night",description:"Razmiran\n\nItems or people who have transgressed against the god-king of Razmiran are burned on this day.",id:"824535",note:null,date:{day:17,year:null,month:6},category:null},{name:"Kianidi Festival",description:"Garundi\n\nThe Kianidi Festival is a week long event held annually between 15 and 21 Erastus by Garundi people everywhere. The Garundi have a powerful belief in belonging to a specific location in this world, with clans or tribes sometimes traveling for years in search of their true home. In these travels each individual will collect small mementos of the places she or he has visited in order to remember them and maintain a spiritual connection. During the Kianidi, a tribe will gather and display these mementos to the group. The best ones are chosen and made part of the clan or tribal history, something which Garundi feel is a great honor.",id:"824536",note:null,date:{day:15,year:null,month:6},category:null},{name:"Harvest Moon",description:null,id:"824537",note:null,date:{day:null,year:null,month:8},category:null},{name:"Multiple Events",description:"Festival of Night's Return\n\nNidal\n\nCelebrated throughout Nidal, this holiday involves the burning of effigies and self-flagellation.\n\nSwallowtail Festival\n\nDesna\n\nHoliday celebrated with storytelling, feasting, and the release of butterflies.\n\nWaning Light Festival\n\nSegada\n\nAlso called Blessing of the Sun and Night of Spirits, participants bid farewell to the long days of sunshine with feasting, dancing, and music.",id:"824538",note:null,date:{day:null,year:null,month:null},category:null},{name:"Signing Day",description:"Andoran, Cheliax, Galt, Isger\n\nSigning Day is a Chelish holiday, dating back to the height of the empire. Observed on the second Oathday of Rova, this is the day on which new laws in the empire took effect. The significance of this day expanded over many years until imperial marriages, significant business arrangements and oaths of fealty were all conducted on this day.\n\nOriginally, the holiday began as a celebration of the mutual-defense pact between Cheliax, Isger, Galt and Andoran when the united nations threw off the shackles of Taldor, declaring themselves independent from the empire. Observances of the holiday vary, but often include firework displays, feats of strength, and public debates to showcase speaking and rhetorical skills.\n\nAs Cheliax degenerated to civil war and diabolism after 4606 AR, blood pacts and infernal contracts also began to be signed on this day. As a result of Cheliax's new affiliation, Andoran and Galt began to distance themselves from Cheliax and the original interpretation of the holiday. In Andoran it continues to be the day that most national laws take effect as well as being a traditional day of marriage, and the date on which new Steel Falcons are inducted.",id:"824539",note:null,date:{day:null,year:null,month:8},category:null},{name:"Crabfest",description:"Korvosa\n\nCrabfest is a Korvosan holiday held on the first Wealday of Rova. It celebrates the return of the crabs from the cooler waters of the Jeggare River to their winter habitat in Conqueror's Bay, and is marked by crab boil feasts held throughout the city and its surrounding communities.",id:"824540",note:null,date:{day:null,year:null,month:8},category:null},{name:"Feast of Szurpade",description:'Irrisen\n\nThis "celebration of plenty" festival mocks the traditional harvest festivals celebrated in the region before Baba Yaga and her eternal winter descended upon the land.',id:"824541",note:null,date:{day:26,year:null,month:8},category:null},{name:"Day of Sundering",description:"Ydersius\n\nOnce many holidays were celebrated by the faith of Ydersius, but today only this date has much significance.",id:"824542",note:null,date:{day:29,year:null,month:8},category:null},{name:"Admani Upastuti",description:"Jalmeri\n\nAdmani Upastuti is a Jalmeri holiday celebrated on the first full moon of Lamashan that marks the founding of Jalmeray as a Vudran colony.",id:"824543",note:null,date:{day:null,year:null,month:9},category:null},{name:"Ascendance Day",description:"Iomedae\n\nAscendance Day is an Iomedaean holiday, held on the 6th of Lamashan. The day marks the anniversary of the day Iomedae took the Test of the Starstone in the autumn of 3832 AR and ascended to godhood.\n\nCelebration\n\nThe day is a joyous celebration for the faithful, with singing, pledging of friendships, and forgiving of old grudges.\n\nTo many, the Test of the Starstone represents the greatest of all challenges, yet for Iomedae it was one of three storied promotions in her rise from Aroden's herald to a goddess in her own right. On the 6th of Lamashan, the Inheritor's faithful observe the heroism of Iomedae's life before her moment of ascension and celebrate the anniversary of the apotheosis itself.\n\nThe celebration takes place in several stages. Early in the day, troupes of performersโ€”as often passionate amateurs as professionalsโ€”stage morality plays featuring the Eleven Acts of Iomedae, the heroic near-miracles and sacrifices she made leading up to her trials in the Starstone Cathedral. Scripts vary by region, city, and even neighborhood, but despite differences in setting, performance medium, and word choice, the themes and morals are all the same.\n\nAs the day continues, the priests organize jousts and mock battles, allowing anyone to participate so long as she can demonstrate enough skill to not be a risk to herself or others. The winners of these contests then face tests of mental acuity such as solving riddles, deciphering philosophical quandaries, and answering questions of honor and justice. Those who prove themselves in both contests are awarded a white cloakโ€”representing the Inheritor at peaceโ€”styled after Iomedae's own red garment to wear for the rest of the celebration. Feasting and singing follow the competitions, mirroring the jubilation that followed Iomedae's ascension. This is occasion for making pledges of friendship and forgiving enemies, and priests circulate about the crowd offering the Inheritor's blessing to those who do and providing a moment's counsel or mediation for those who need an extra nudge.\n\nThe celebration typically ends before midnight, and the following day the priests and previous day's champions gather up the blunted swords from the mock battles, sharpen them, and distribute them among the church's armory and those of like-minded organizations so that all may remain vigilant against evil and prepared to strike it down.",id:"824544",note:null,date:{day:6,year:null,month:9},category:null},{name:"Bastion Day",description:"Solku\n\nBastion Day is a two-day festival held annually on 19 and 20 Lamashan in the Katapeshi town of Solku honoring the founding of the town, when it is traditional to host a stranger from one noon until the next.",id:"824545",note:null,date:{day:19,year:4712,month:9},category:null},{name:"Jestercap",description:"Andoran, Druma, Taldor\n\nJestercap occurs at the end of the month of Lamashan, traditionally on the 27th (although a few regions have taken to moving the exact day around slightly so it always falls on the last Starday of the month, allowing people who wish to celebrate in excess to have the following day of rest to recover).\n\nHistory\n\nWhile Jestercap has been embraced with excited open arms by the gnome communities of the Inner Sea region, its original genesis is said to have been in one of Taldor's coastal cities not long after King Aspex the Even-Tongued broke from the nation, significantly weakening Taldor's power and beginning that nation's long decline. The holiday was originally intended to distract the distraught Taldan populace with a night of revelry and comedic entertainment, but the antics of jesters were simply not enough.\n\nOver the course of the first few years, Jestercap evolved from a holiday of observation to a holiday of participation. Today, the holiday is a time where anyone can pull pranks or jokes or japes on companions, on neighbors, and (most typically) on rivals, with the understanding that provided no lasting harm is done, any humiliations inflicted before midnight are to be taken in stride. Of course, come morning the day after, there are inevitably jokes that went too far, and grudges and feuds borne from Jestercap antics have a way of lingering for months to follow.\n\nIn Religion\n\nFollowers of Chaldira Zuzaristan, a halfling deity of mischief, treat Jestercap as a holy day and their pranks โ€” often elaborate and extravagant in nature and plotted for months in advance โ€” as displays of their faith.",id:"824546",note:null,date:{day:27,year:null,month:9},category:null},{name:"Feast of the Survivors",description:"Zon-Kuthon, Nidal\n\nA harvest festival signifying the centuries of Nidalese ancestors protected by Zon-Kuthon. The ceremonial tables are made of human bones of community members from past generations.",id:"824547",note:null,date:{day:null,year:null,month:9},category:null},{name:"Kraken Carnival",description:"Absalom\n\nThe second of two local festivals where kite-battlers compete.",id:"824548",note:null,date:{day:15,year:null,month:9},category:null},{name:"Independence Day",description:"Galt\n\nMarks the beginning of the Red Revolution.",id:"824549",note:null,date:{day:5,year:null,month:10},category:null},{name:"Seven Veils",description:"Sivanah\n\nThe holiday known as Seven Veils, which takes place on the 23rd of Neth in most realms of the Inner Sea region, is a celebration of the region's diversity โ€” a time when social boundaries break down even further in a day-long event filled with dancing, feasting, and courting. The evening traditionally closes out with the Seven Veil masquerade, a ball wherein the participants wear disguises that hide their race or gender (often using minor magical trinkets and spells) or disguise these features as entirely new characteristics. At the end of the ball, the participants remove their disguises to their partners, often with unpredictable and sometimes delightfully awkward results. Traditionalists and conservative minds often find the Seven Veils masquerades to be scandalous or off-putting, yet they remain particularly popular in most of the larger cities of the land.\n\nHistorians note that the original \"Dance of the Seven Veils\" has a much different genesis than one promoting diversity โ€” the mysterious cult of Sivanah, goddess of illusions, mystery, and reflections, is generally cited as the source of this festival, and indeed, worshippers of the goddess (herself known as the Seventh Veil) count the 23rd of Neth as one of their most sacred of days. What rituals the church of Sivanah performs on this date, however, are unknown to outsiders, for the cult enjoys its secrets. This secrecy has, unsurprisingly, given rise to all manner of sinister rumour, yet when Seven Veils rolls around each year, its eager participants are quick to set aside rumour in preference for the night's fun and games.",id:"824550",note:null,date:{day:23,year:null,month:10},category:null},{name:"Abjurant Day",description:"Nethys\n\nAbjurant Day occurs on 8 Neth and is known as a day of cooperation between neighbors to shore up mutual defenses and train allies in magic. Potential apprentices are often tested on the day.",id:"824551",note:null,date:{day:8,year:null,month:10},category:null},{name:"Great Fire Remembrance",description:"Korvosa\n\nGreat Fire Remembrance is a holiday celebrated on each 13 Neth in the Varisian city of Korvosa. It commemorates the Great Fire of 4429 AR, which devastated the then still fledgling Chelish colony of Fort Korvosa. On this somber day, most of the city shuts down and people generally remain at home. It has become tradition not to light any fires (not even cooking fires) on Great Fire Remembrance.",id:"824552",note:null,date:{day:13,year:null,month:10},category:null},{name:"Even-Tongued Day",description:"Cheliax, Asmodeus, Milani\n\nObserved on 14 of Neth, Even-Tongued Day was once a day of joy and celebration in Cheliax, but has become instead one of mourning.\n\nOriginally, the date marked the conquest of Aspex the Even-Tongued, who brought the nations of Galt, Andoran and Isger under Chelish control. Since the death of Aroden and the loss of these nations, the holiday instead marks the loss of territory and glory once held by Cheliax. Oaths are sometimes made, typically to Asmodeus, and rarely of a pleasant nature (such as the reclaiming of the lost empire and vengeance against treacherous former allies).\n\nCitizens wear black on this day, public speaking is forbidden, and old feuds and vendettas are rekindled.",id:"824553",note:null,date:{day:14,year:null,month:10},category:null},{name:"Evoking Day",description:"Nethys\n\nA holy day to followers of Nethys, Evoking Day is full of vibrant explosions, skillful wielding of spells, and much dancing. Evoking Day is observed on the 18th of Neth, and while this holiday is mostly celebrated in Garund, temples dedicated to Nethys host celebrations throughout the Inner Sea region. Traditional celebrations of Evoking Day have changed over the thousands of years since its first incarnation, but to this day every occurrence of Evoking Day still features a grand meal shared by celebrants during the afternoon and a wondrous exhibition of brilliant and explosive magic once the sun sets. These days, such colorful magical displays are augmented with fireworks of a dozen different colors and patterns.\n\nIn temples of Nethys dedicated to revering evocation magic, priests and prominent arcanists participate in spell duels where each contestant stands on a raised platform and takes turns trying to incapacitate her opponent. The magic wielded in theses duels favors the flashy over the dangerous, but clerics of Nethys are on hand to treat any injuries. These duels gather large crowds eager to lend their applause to their favorite contestant.\n\nIt is also during this festival when wizards who worship Nethys open their spellbooks to others who share their craft. Wizards normally guard their spellbooks with their lives and covet the eldritch information therein, but on Evoking Day these wizards meet with one another prior to the afternoon feast to share their spells just as they prepare to share a grand meal.\n\nThough Evoking Day is primarily a day of grand magic, those with no spellcasting talent still flock to local temples of Nethys to partake in the shared feast and flashy evening displays of magic and fireworks. Between the meal and into the night, celebrants wear black-and-white robes and perform joyous dances meant to give thanks to the wonders Nethys brought to humankind. These dances are grand affairs involving dozens of dancers all spinning and clapping to the accompanying music as their black-and-white robes fan out around them with each spin. As night descends and the fireworks and magical displays begin, the dancing rises to a climax erupting in shouts and calls to Nethys with each thunderous boom.",id:"824554",note:null,date:{day:18,year:null,month:10},category:null},{name:"Baptism of Ice",description:"Irrisen\n\nIn the Irriseni Baptism of Ice, an annual fertility festival held from the 24th to the 30th of Neth, locals parade all children born during the year through the town in fine clothes. In most towns, the festival ends with a symbolic sacrifice of a child to the cold. However, in Whitethrone and Irrisen's provincial capitals, a peasant child is killed through exposure.",id:"824555",note:null,date:{day:24,year:null,month:10},category:null},{name:"Transmutatum",description:"Nethys\n\nTransmutatum is one of the three major holidays of the church of Nethys, on 28th of Neth. It is a day of reflection and self-improvement. Many followers of Nethys begin research and crafting projects on this day.",id:"824556",note:null,date:{day:28,year:null,month:10},category:null},{name:"Winter Week",description:"Traditional feast; time for courting and spending time with friends.",id:"824557",note:null,date:{day:null,year:null,month:11},category:null},{name:"The Shadowchaining",description:"Zon-Kuthon, Nidal\n\nCommemorating the Midnight Lord's gift of shadow animals.",id:"824558",note:null,date:{day:1,year:null,month:11},category:null},{name:"Pseudodragon Festival",description:"Korvosa\n\nKorvosa's Pseudodragon Festival, a holiday celebrated annually on 7 Kuthona, marks the winter migration of wild pseudodragons from the Mindspin Mountains to Conqueror's Bay, which inspires the creatures already in the cityโ€”even those domesticatedโ€”to play with their wild kin in the skies over the city. Locals mark the day with a joyous inebriation.",id:"824559",note:null,date:{day:7,year:null,month:11},category:null},{name:"Ascension Day",description:"Cayden Cailean\n\nMuch like the god to whom it is dedicated, the Caydenite holiday of Ascension Day is generally celebrated in a very informal style. Occurring annually on 11 Kuthona, it commemorates the day Cayden Cailean passed the Test of the Starstone and ascended to godhood in 2765 AR. In all likelihood, the 11th of Kuthona is not the exact date on which it actually happened, but since the god was dead drunk when it happened, it will probably be never known.",id:"824560",note:null,date:{day:11,year:null,month:11},category:null},{name:"Winterbloom",description:"Naderi\n\nHoliday celebrating Naderi's ascension. Celebrations are typically understated but include readings of The Lay of Arden and Lysena.",id:"824561",note:null,date:{day:15,year:null,month:11},category:null},{name:"Final Day",description:"Groetus\n\nCultists of Groetus perform an hour's silence at dusk on the last day of the year and seek guidance from their god about the End Time.",id:"824562",note:null,date:{day:31,year:null,month:11},category:null},{name:"Night of the Pale",description:"Not all of Golarion's holidays and festivals are times of rejoicing and delight. Holidays worshiped by dark and sinister cults and religions tend to be hidden affairs, their rituals and ceremonies involving cruelties and vile practices that send shivers of fear through gentler society. Scholars suspect that the Night of the Paleโ€”a holiday that traditionally takes place on the last day of the year, the 31st of Kuthonaโ€”has links to several sinister religions, but today no one church has specific association with the event. Nonetheless, the Night of the Pale is an event that many look forward to all year, whether in fear or excitement.\n\nOn the Night of the Pale, it is said that the ghosts of those who died during the previous year manifest upon the world and come to visit the homes they lived in during life. Although some might think that the chance of seeing even the shade of a dearly departed one might be a blessing, the Night of the Pale is not a time for tearful reunions, for these ghosts, tradition says, do not return out of love for those they left behind but out of darker compulsions. Lingering jealousy, unfinished arguments, or the simmering need for revenge are said to be what compels the dead to return to torment the living on the Night of the Pale.\n\nThe evening of this night in many communities is celebrated by a morbid feast, the food prepared with themes revolving around graveyards, the dead, and other spooky traditions. This feast, on one level, helps the celebrants to make light of their fears while sharing good company with similarly nervous neighbors, but at another level is believed to placate vengeful spirits as toasts are raised to the memories of the recently departed. These feasts include retellings of favorite memories of the departed, in hopes of reminding the approaching ghosts of brighter and kinder memories than those that compel them to return. The feast always ends at least an hour before midnight in order to give participants time to return home, decorate doors and windows with salt and other trinkets taken from the feasting table (salted bread baked into crook-like shapes are a favorite, as these can be hung from doorknobs and eaves) to ward off evil spirits, and hide in their bedrooms until dawn. Brave youths and adventurers often deliberately stay out after midnight, either to dare the ghosts to challenge them or simply for the thrill of bucking tradition. Every Night of the Pale, it seems, there are disappearances among those who stay out after midnight, although whether these vanishings are the result of dissatisfied locals taking the opportunity to run away from home, murderers or wild animals or other mundane dangers, or the vengeful spirits carrying off their victims depends upon the circumstances.\n\nThe morning after a Night of the Pale is also the first day of the new yearโ€”a time that many celebrate more as a relief for surviving the night before than in anticipation of what the new year might bring, although regional preferences for how this day is celebrated vary enough that no single tradition holds over the other. Save, of course, the lingering fears of what dread spirits might come knocking upon warded doors one year away...",id:"824563",note:null,date:{day:31,year:null,month:11},category:null},{name:"Turning Day",description:"Alseta\n\nThe changing of the year is celebrated with the forgiveness of old debts and grudges, and embracing new opportunities.",id:"824564",note:null,date:{day:31,year:null,month:11},category:null},{name:"Ritual of Stardust",description:"Desna\n\nThe Ritual of Stardust is one of the few formal religious holidays in honor of the goddess Desna. It is held on both the summer and winter solstices.\n\nFollowers of the Song of Spheres gather at dusk and light enormous bonfires and hold feasts, watching the sparks and embers float out into the darkening sky. After it is fully dark, the celebrants chant and sing songs as they watch the fires burn low. When only embers remain, sand mixed with ground star gems (either star rubies, star sapphires, or rose quartz) is thrown on them or into the air downwind. At this point it is common to make proclamations of love and friendship and of promised journeys to come. The twinkling of the sand is thought to mirror the night sky and demonstrate Desna's witnessing of these pronouncements.",id:"824565",note:null,date:{day:null,year:null,month:null},category:null},{name:"Planting Week",description:"Erastil\n\nThis holy week to the god Erastil is a time of heavy work in the fields for farmers.",id:"824566",note:null,date:{day:null,year:null,month:null},category:null},{name:"Ascendance Night",description:"Norgorber\n\nDay marking the apotheosis of the Reaper of Reputation.",id:"824567",note:null,date:{day:2,year:null,month:4},category:null},{name:"Azvadeva Dejal",description:"Gruhastha\n\nCelebration of the revelation of the Azvadeva Pujila, with gifts of books, celebrations of knowledge, blessing of animals, and a vegetarian feast.",id:"824568",note:null,date:{day:3,year:null,month:4},category:null},{name:"Goblin Flea Market",description:"Andoran\n\nA market day that focuses on unusual crafts and offers games to children who dress up for the occasion.",id:"824569",note:null,date:{day:null,year:null,month:null},category:null},{name:"Breaching Festival",description:"Korvosa\n\nYearly festival in which contestants try to break through the magical wards protecting the Academae.",id:"824570",note:null,date:{day:null,year:null,month:4},category:null},{name:"Silverglazer Sunday",description:"Andoran\n\nSilverglazer Sunday is a two-part Andoren national festival that is held on the last Sunday of Arodus and the first Sunday of Rova every year. Celebrants spend the two Sundays fishing, holding swimming competitions, and making enormous puppets.",id:"824571",note:null,date:{day:null,year:null,month:null},category:null},{name:"Batul al-Alim",description:"Qadira\n\nBatul al-Alim is a holiday celebrated on the last Oathday of Calistril in Qadira. It commemorates the birthday of the popular romantic poet of the same name.",id:"824572",note:null,date:{day:null,year:null,month:1},category:null}],id:null,categories:[{name:"Natural Events",id:"natural-events",color:"#2E7D32"},{name:"Religious Holidays",id:"religious-holidays",color:"#9b2c2c"},{name:"Secular Holidays",id:"secular-holidays",color:"#0D47A1"},{name:"Historical Events",id:"historical-events",color:"#455A64"},{name:"Miscellaneous Events",id:"miscellaneous-events",color:"#0288D1"}]},{name:"Calendar of Galifar",description:"Calendar of the world of Eberron.",static:{firstWeekDay:0,incrementDay:!1,displayMoons:!0,overflow:!1,weekdays:[{type:"day",name:"Sul",id:"ID_598a7bd9b8b9"},{type:"day",name:"Mol",id:"ID_69088ac8f818"},{type:"day",name:"Zol",id:"ID_a8c85a98f8fa"},{type:"day",name:"Wir",id:"ID_fa4b687aaba9"},{type:"day",name:"Zor",id:"ID_58e9a82a6bc8"},{type:"day",name:"Far",id:"ID_9a18cb889ada"},{type:"day",name:"Sar",id:"ID_3b9bfa38c979"}],months:[{name:"Zarantyr",type:"month",length:28,id:"ID_7a8afb09aa6a"},{name:"Olarune",type:"month",length:28,id:"ID_386b188b2a89"},{name:"Therendor",type:"month",length:28,id:"ID_599a0ad859c8"},{name:"Eyre",type:"month",length:28,id:"ID_98a95869e90b"},{name:"Dravago",type:"month",length:28,id:"ID_eb5a194bcbf8"},{name:"Nymm",type:"month",length:28,id:"ID_bb596aa9ca5b"},{name:"Lharvion",type:"month",length:28,id:"ID_fb1bb9dabb88"},{name:"Barrakas",type:"month",length:28,id:"ID_8bcb19c8f90a"},{name:"Rhaan",type:"month",length:28,id:"ID_0a09eb5b7b9b"},{name:"Sypheros",type:"month",length:28,id:"ID_3b98ab1a29e8"},{name:"Aryth",type:"month",length:28,id:"ID_899b59faaba9"},{name:"Vult",type:"month",length:28,id:"ID_8a286b78aac9"}],moons:[{name:"Nymm",cycle:28,offset:-14,faceColor:"#ffffff",shadowColor:"#000000",id:"ID_a8b88988a94a"},{name:"Sypheros",cycle:35,offset:-11,faceColor:"#ffffff",shadowColor:"#000000",id:"ID_5ba80b4b096a"},{name:"Therendor",cycle:42,offset:21,faceColor:"#ffffff",shadowColor:"#000000",id:"ID_c999085a499b"},{name:"Rhaan",cycle:49,offset:9,faceColor:"#ffffff",shadowColor:"#000000",id:"ID_39f91ab8a85a"},{name:"Olarune",cycle:56,offset:27,faceColor:"#ffffff",shadowColor:"#000000",id:"ID_2ada8b99788b"},{name:"Eyre",cycle:63,offset:10,faceColor:"#ffffff",shadowColor:"#000000",id:"ID_49285b79d988"},{name:"Vult",cycle:70,offset:6,faceColor:"#ffffff",shadowColor:"#000000",id:"ID_eaebb94a9acb"},{name:"Zarantyr",cycle:77,offset:31,faceColor:"#ffffff",shadowColor:"#000000",id:"ID_98d86aabcbb9"},{name:"Aryth",cycle:84,offset:41,faceColor:"#ffffff",shadowColor:"#000000",id:"ID_d989b809d97b"},{name:"Dravago",cycle:91,offset:31,faceColor:"#ffffff",shadowColor:"#000000",id:"ID_1a293959eaab"},{name:"Lharvion",cycle:98,offset:34,faceColor:"#ffffff",shadowColor:"#000000",id:"ID_cbf919491a5b"},{name:"Barrakas",cycle:105,offset:-11,faceColor:"#ffffff",shadowColor:"#000000",id:"ID_4a1a2a6b589b"}],leapDays:[],eras:[]},current:{year:998,day:1,month:0},events:[{name:"The Tain Gala - Sharn",description:"The Tain Gala is a notable event held on the first Far of each month in Sharn.",id:"824461",note:null,date:{day:null,year:null,month:null},category:null},{name:"Revelation Day - Blood of Vol",description:"Meditation ceremony for Seekers (also called Ascension Day).",id:"824462",note:null,date:{day:13,year:null,month:0},category:null},{name:"Winter Solstice",description:"The longest night of the year.",id:"824463",note:null,date:{day:14,year:null,month:0},category:null},{name:"Rebirth Eve - The Silver Flame",description:"The Purified new year; a night for spiritual vigil and guarding against evil. ",id:"824464",note:null,date:{day:14,year:null,month:0},category:null},{name:"Crystalfall - Sharn",description:"A day of remembrance; Ice sculptures are created (and destroyed) to commemorate the destruction of the Glass Tower on 9 Olarune in 918 by abjurers. ",id:"824465",note:null,date:{day:9,year:998,month:1},category:null},{name:"Bright Souls' Day - The Silver Flame",description:"On this day each year, the Purified celebrate the lives and sacrifice of all followers of the Flame who died while fighting evil and protecting the faithful. ",id:"824466",note:null,date:{day:18,year:null,month:1},category:null},{name:"The Day of Mourning - Sharn",description:"In commemoration of the destruction of the nation of Cyre, those who survived gather to remember the loss of their kingdom on this date in the year 994. ",id:"824467",note:null,date:{day:20,year:995,month:1},category:null},{name:"Tirasday - The Silver Flame",description:"On this day, the Silver Flame work, give gifts, and partake in joyous celebration out of thankfulness for the new planting season and the birth of Tira Miron - the Voice of the Silver Flame.",id:"824468",note:null,date:{day:5,year:null,month:2},category:null},{name:"Sun's Blessing - The Sovereign Host",description:"The Sovereign Host enjoys this festival of peace, and of setting aside differences, in the name of Dol Arrah.",id:"824469",note:null,date:{day:15,year:null,month:2},category:null},{name:"Initiation Day - The Silver Flame",description:"Seminary graduations and breaking grounds for new churches are common on this day as the Silver Flame recalls their declarations of independent faith and the construction of their first cathedral on this special day each year. ",id:"824470",note:null,date:{day:11,year:null,month:3},category:null},{name:"Baker's Night - The Silver Flame",description:"An old and misunderstood, yet immensely popular, holiday wherein followers of the Silver Flame gather to share pastries and treats created by bakers within their fold. ",id:"824471",note:null,date:{day:6,year:null,month:4},category:null},{name:"Aureon's Crown - Sharn and The Sovereign Host",description:"The Sovereign Host celebrate knowledge on this day with lectures and sermons.Secular institutions hold graduation and commencement ceremonies on this date, as do the monastic schools of the Silver Flame.In Sharn this has become a common secular holiday, wherein even non-devout members of the Five Nations attend lectures and sermons held by the priests of Aureon on philosophical, historical, and a range of other topics - including discussions on the nature of the gods.\n\n",id:"824472",note:null,date:{day:26,year:null,month:4},category:null},{name:"Promisetide - The Silver Flame",description:"A controversial holiday outside of the Silver Flame faith, on this day the Purified honor the Silver Flame for the promise of paradise. They also honor (without worship) the Sovereign Host for having created the world, before stepping aside to allow the Flame its rightful place as the last god of Eberron.ย  ",id:"824473",note:null,date:{day:28,year:null,month:4},category:null},{name:"Brightblade - Sharn and The Sovereign Host",description:"This Sovereign Host festival, dedicated to Dol Dorn, is marked by gladiatorial and athletic contests. \n\nIn Sharn, festival celebrations occur throughout the temple districts with events culminating in a combined contest of champions at the Cornerstone Arena. ",id:"824474",note:null,date:{day:12,year:null,month:5},category:null},{name:"First Dawn - The Silver Flame",description:"On this day in 914, the Church of the Silver Flame officially assumed control of the government of Thrane. On each anniversary, the Purified give thanks for their just rule, while also honoring the memory of King Thalin, whose death paved the way for their governance.",id:"824475",note:null,date:{day:21,year:915,month:5},category:null},{name:"Silvertide - The Silver Flame",description:"Commemoration of both the couatl sacrifice and the entry, thousands of years ago, of the Silver Flame into Eberron mark this highest of holy days. The vast majority of Purified spend this day in prayer and observance.ย  ",id:"824476",note:null,date:{day:14,year:null,month:6},category:null},{name:"The Race of Eight Winds - Sharn",description:"Legend tells of King Galifar II's fascination with aerial scouts and cavalry. The evolution of this annual contest took centuries, but has given Sharn an exotic and well anticipated event involving beasts and their riders in a symbiotic quest for glory* over a course that finds them weaving through the spires of the city. \n\n\n\n*the winner also receives 500gp and a land grant located elsewhere in Breland.",id:"824477",note:null,date:{day:21,year:201,month:6},category:null},{name:"The Hunt - Sharn and The Sovereign Host",description:"The Sovereign Host celebrate Balinor with communal hunts of dangerous creatures. \n\nIn Sharn, a dangerous beast*, whose transport to the city was arranged by the priests of Balinor, is released into the Depths of the Lower-City. Open to any who would participate (and pay an entry fee in the form of a 5gp donation), the victor must return with the beast's head to receive a 500gp purse, local fame, and the blessing of Balinor. \n\n\n\n*often a singular beast, it can be several - which then requires the victor to return with the most skins. ",id:"824478",note:null,date:{day:4,year:null,month:7},category:null},{name:"Victory Day - The Silver Flame",description:"Commemorating the conclusion of the lycanthropic purge (832 YK - 880 YK), on Victory Day the adult faithful of the Silver Flame attend sermons on triumph, defeat, and the somewhat questionable methods utilized by the templars during the purge - while the children of the faithful act out great battles with toy swords. ",id:"824479",note:null,date:{day:9,year:881,month:7},category:null},{name:"Fathen's Fall - Sharn",description:"Honoring the memory of Fathen, a great hero of the Silver Crusade (832 YK - 880 YK), who, in the last days of the purge, was torn apart by wererats on the streets of North Market. Faithful gather on this day at the Shrine of Fathen the Martyr to listen to a sermon from the priest of High Hope. This holiday is often uncomfortable and tense for shifter communities in Sharn. ",id:"824480",note:null,date:{day:25,year:881,month:7},category:null},{name:"Boldrei's Feast - Sharn and The Sovereign Host",description:"A feast of community in the name of Boldrei, extravagant parties are often held on this holiday and it has also become the traditional day for elections. \n\nIn Sharn, a great feast is held at the Pavilion of the Host with goods and services donatedย  from local merchants, as well as House Ghallanda. Many grand parties, some quite astonishing in their opulence, are hosted by the wealthiest members of varying districts - often in competition with one another for social standing. ",id:"824481",note:null,date:{day:9,year:null,month:8},category:null},{name:"The Ascension - Sharn",description:"Each year on The Ascension, followers reaffirm their faith and give thanks as well as attend blessing ceremonies at temples throughout the city - the grandest of which occurs at the Cathedral of the Cleansing Flame. All of this is to honor the sacrifice of Tira Miron, the Voice of the Flame, without which there would be no Church of the Silver Flame. Contributions to their community on this day are a high priority for the faithful.",id:"824482",note:null,date:{day:1,year:null,month:9},category:null},{name:"Wildnight - Sharn",description:"With the The Fury (the Sovereign of Passion and Madness) reaching the height of her power on this night, people find it difficult to control or restrain their impulses - once the sun sets, public revelry in the streets climbs to joyous or, all too often, dangerous levels, calming only as the sun rises on the following morning. ",id:"824483",note:null,date:{day:18,year:null,month:9},category:null},{name:"Saint Voltros's Day - The Silver Flame",description:"Though one of the least high holy days, it is marked by brief prayers and church services in the honor of the birth of Saint Voltros - the first paladin called to only serve the Silver Flame.",id:"824484",note:null,date:{day:25,year:null,month:9},category:null},{name:"Thronehold - Sharn",description:"On this day in 996, the Treaty of Thronehold was signed, formally ending the Last War. Annual celebratory feasts are held throughout the Five Nations to mark this auspicious and long-awaited event. ",id:"824485",note:null,date:{day:11,year:997,month:10},category:null},{name:"Rampartide - The Silver Flame",description:"In accordance with scripture, on this day the Purified steel themselves against wickedness, both without and within, through repentance and fasting. Children, elderly, and the sick are required only to give up their favorite foods for the day. ",id:"824486",note:null,date:{day:24,year:null,month:10},category:null},{name:"Long Shadows - Sharn",description:"As dark magic dominates over these three days of the Long Shadows, the myth of Sovereign Lord Aureon's stolen shadow is forefront in the minds of the people. Most will spend these days indoors huddled around the warmth of a fire, but those few who worship the dark deity use this time to prey upon the weak and the foolish. ",id:"824487",note:null,date:{day:26,year:null,month:11},category:null},{name:"Khybersef - The Silver Flame",description:'Originally called Khyber\'s Eve, the Purified spend the night in intense prayer and spiritual vigilance against the, according to scripture, "thinning of the bonds that hold the demon lords in Khyber" between now (the beginning of winter) and the solstice. Quests and crusades often begin on Khybersef. ',id:"824488",note:null,date:{day:27,year:null,month:11},category:null},{name:"Spring Equinox",description:"The spring equinox is when the day and the night are equally as long, and are getting longer.",id:"824489",note:null,date:{day:null,year:null,month:null},category:null},{name:"Summer Solstice",description:"\tAt the summer solstice, the Sun travels the longest path through the sky, and that day therefore has the most daylight.",id:"824490",note:null,date:{day:null,year:null,month:null},category:null},{name:"Autumn Equinox",description:"The autumn equinox is when the day and the night are equally as long, and are getting shorter.",id:"824491",note:null,date:{day:null,year:null,month:null},category:null}],id:null,categories:[]},{name:"Barovian Calendar",description:"Calendar of the realm of Barovia, home of Strahd.",static:{firstWeekDay:0,incrementDay:!1,displayMoons:!0,overflow:!0,weekdays:[{type:"day",name:"Monday",id:"ID_6a183b08c8eb"},{type:"day",name:"Tuesday",id:"ID_892b7b7a5ae9"},{type:"day",name:"Wednesday",id:"ID_6bb98899ba68"},{type:"day",name:"Thursday",id:"ID_4a7b683aea19"},{type:"day",name:"Friday",id:"ID_78690a099b89"},{type:"day",name:"Saturday",id:"ID_ba5b09ba5a89"},{type:"day",name:"Sunday",id:"ID_29b90acaead9"}],months:[{name:"1st Moon",type:"month",length:31,id:"ID_7b4978ab581a"},{name:"2nd Moon",type:"month",length:28,id:"ID_cb99fbb9395b"},{name:"3rd Moon",type:"month",length:31,id:"ID_79881a89cb18"},{name:"4th Moon",type:"month",length:30,id:"ID_5b9a8a397908"},{name:"5th Moon",type:"month",length:31,id:"ID_f8399ab80818"},{name:"6th Moon",type:"month",length:30,id:"ID_3ac84a7bc869"},{name:"7th Moon",type:"month",length:31,id:"ID_e98bc86bc809"},{name:"8th Moon",type:"month",length:31,id:"ID_89ea78ca5988"},{name:"9th Moon",type:"month",length:30,id:"ID_798a3b990a4b"},{name:"10th Moon",type:"month",length:31,id:"ID_3a9999e8eb59"},{name:"11th Moon",type:"month",length:30,id:"ID_db39383b990a"},{name:"12th Moon",type:"month",length:31,id:"ID_1bfa3b180a48"}],moons:[{name:"Moon",cycle:29.530588853,offset:10.24953,faceColor:"#ffffff",shadowColor:"#000000",id:"ID_e98b3a8ab8da"}],leapDays:[{name:"Leap Day",type:"leapday",interval:[{ignore:!1,exclusive:!1,interval:400},{ignore:!1,exclusive:!0,interval:100},{ignore:!1,exclusive:!1,interval:4}],offset:0,timespan:1,intercalary:!1,id:"ID_6a28dbb81a48"}],eras:[{name:"Before Christ",description:"",format:"Year {{year}} - {{era_name}}",start:{year:-9e3,month:0,day:0}},{name:"Anno Domini",description:"",format:"Year {{year}} - {{era_name}}",start:{year:1,month:0,day:1}}]},current:{year:735,day:1,month:0},events:[{name:"Winter Solstice",description:"The Winter Solstice is the day of the year with the least time between sunrise and sunset. Many western cultures consider it the official start of winter.",id:"824455",note:null,date:{day:null,year:null,month:null},category:"natural-event"},{name:"Summer Solstice",description:"The Summer Solstice is the day of the year with the most time between \nsunrise and sunset. Many western cultures consider it the official start\n of summer.",id:"824456",note:null,date:{day:null,year:null,month:null},category:"natural-event"},{name:"Spring Equinox",description:"The Spring Equinox,\nalso called the Vernal Equinox, is the day between the winter and\nsummer solstices where the day is the exact same length as the night.\nMany western cultures consider it the official start of Spring.\n",id:"824457",note:null,date:{day:null,year:null,month:null},category:"natural-event"},{name:"Autumnal Equinox",description:"The Autumnal Equinox,\nalso called the Fall Equinox, is the midpoint between the summer and\nwinter solstices, where the day is the exact same length as the night.\nMany western cultures consider it the official start of Autumn.\n",id:"824458",note:null,date:{day:null,year:null,month:null},category:null},{name:"New Year's Day",description:"New Year's day marks the start of a new year.",id:"824459",note:null,date:{day:1,year:null,month:null},category:null},{name:"Paschal Full Moon",description:"The first full moon after march 21st, which is considered the fixed date for the spring equinox.",id:"824460",note:null,date:{day:null,year:null,month:null},category:"natural-event"}],id:null,categories:[{name:"Natural Event",id:"natural-event",color:"#9e9d24"}]},{name:"Exandrian Calendar",description:"Calendar of the world of Wildemount.",static:{firstWeekDay:2,incrementDay:!1,displayMoons:!0,overflow:!0,weekdays:[{type:"day",name:"Miresen",id:"ID_3b38aaa81bca"},{type:"day",name:"Grissen",id:"ID_da6b19882baa"},{type:"day",name:"Whelsen",id:"ID_a9cae8f88b98"},{type:"day",name:"Conthsen",id:"ID_e87859eb5aaa"},{type:"day",name:"Folsen",id:"ID_59180abbea8a"},{type:"day",name:"Yulisen",id:"ID_98082bd8d8ca"},{type:"day",name:"Da'leysen",id:"ID_da4ba92b299a"}],months:[{name:"Horisal",type:"month",length:29,id:"ID_e89a4ab9995b"},{name:"Misuthar",type:"month",length:30,id:"ID_18b8894bab7b"},{name:"Dualahei",type:"month",length:30,id:"ID_0a9b29f8f8db"},{name:"Thunsheer",type:"month",length:31,id:"ID_6a8a8a5bea5b"},{name:"Unndilar",type:"month",length:28,id:"ID_b8295bdbcafa"},{name:"Brussendar",type:"month",length:31,id:"ID_c92a489bb909"},{name:"Sydenstar",type:"month",length:32,id:"ID_7b48bb1b0a4a"},{name:"Fessuran",type:"month",length:29,id:"ID_289858c97849"},{name:"Quen'pillar",type:"month",length:27,id:"ID_f8abd9a86aa9"},{name:"Cuersaar",type:"month",length:29,id:"ID_7aba59fa2b69"},{name:"Duscar",type:"month",length:32,id:"ID_5819f86b99cb"}],moons:[{name:"Catha",cycle:33,offset:7,faceColor:"#ffffff",shadowColor:"#292b4a",id:"ID_0ab929092b5b"},{name:"Ruidus",cycle:328,offset:80,faceColor:"#ff6161",shadowColor:"#1f1f1f",id:"ID_b9783ac818e9"}],leapDays:[],eras:[{name:"The Founding",description:"",format:"Year {{year}} - {{era_name}}",start:{year:1,month:0,day:1}},{name:"Age of Arcanum",description:"",format:"Year {{year}} - {{era_name}}",start:{year:-1500,month:0,day:1}},{name:"The Calamity",description:"",format:"Year {{year}} - {{era_name}}",start:{year:-665,month:0,day:1}},{name:"Post-Divergence",description:"",format:"Year {{year}} P.D.",start:{year:1,month:0,day:1}}]},current:{day:1,month:0,year:836},events:[{name:"Spring Equinox",description:"The spring equinox is when the day and the night are equally as long, and are getting longer.",id:"824430",note:null,date:{day:null,year:null,month:null},category:null},{name:"Summer Solstice",description:"\tAt the summer solstice, the Sun travels the longest path through the sky, and that day therefore has the most daylight.",id:"824431",note:null,date:{day:null,year:null,month:null},category:null},{name:"Autumn Equinox",description:"The autumn equinox is when the day and the night are equally as long, and are getting shorter.",id:"824432",note:null,date:{day:null,year:null,month:null},category:null},{name:"Winter Solstice",description:"The winter solstice marks the shortest day and longest night of the year, when the sun is at its lowest arc in the sky.",id:"824433",note:null,date:{day:null,year:null,month:null},category:null},{name:"New Dawn",description:"The first day of the new year is also the holy day of the Changebringer, as the old year gives way to a new path.\n\nIn Tal'Dorei, Emon celebrates New Dawn with a grand midnight feast, which commonly features a short play celebrating the changes witnessed in the past year.\n\nOn the Menagerie Coast, people celebrate by having a feast on the shore at dusk to watch the sunset. They feast and discuss their hopes for the new year until the sun rises.",id:"824434",note:null,date:{day:1,year:null,month:0},category:"religious-holidays"},{name:"Hillsgold",description:"This holiday is up to the calendar owner to decide what it is for! :)",id:"824435",note:null,date:{day:27,year:null,month:0},category:"secular-holidays"},{name:"Day of Challenging",description:"The holy day of the Stormlord is one of the most raucous holidays in Emon. Thousands of spectators attend the annual Godsbrawl, which is held in the fighting ring within the Temple of the Stormlord. The people root for their deity's favored champion, and there is a fierce (yet friendly) rivalry between the Champion of the Stormlord and the Champion of the Platinum Dragon. The winner earns the title of \"Supreme Champion\" for an entire year.\n\nThe Day of Challenging is one of the most raucous holidays in Port Damali, and thousands of spectators attend the annual Godsbrawl held in the Temple ofย Kord to root for their favored deity's champion, particularly the chosen champions of the Storm Lord and theย All-Hammer.ย ",id:"824436",note:null,date:{day:7,year:null,month:1},category:"religious-holidays"},{name:"Renewal Festival",description:"Spring begins early in the month of Dualahei, officially starting on the 13th with the Renewal Festival.",id:"824437",note:null,date:{day:13,year:null,month:2},category:"secular-holidays"},{name:"Wild's Grandeur",description:"Though the Archeart is the god of spring, the peak of the spring season is the holy day of the Wildmother.\n\nThe people in the southern wilds of Tal'Dorei celebrate the Wildmother's strength by journeying to a place of great natural beauty. This could be the top of a mountainous waterfall, the center of a desert, or even an old and peaceful city park (such as Azalea Street Park in Emon). Though Emon rarely celebrates Wild's Grandeur, the few who do will plant trees in observance of the holiday.\n\nThe people of the Menagerie Coast set aside this day to sail for no reason other than the pleasure of observing the natural beauty of their surroundings. Those who still partake in elements of Ki'Nau culture take this day to appreciate the fruits and foods granted by the sea, leaving offerings of delicacies and small handmade crafts at temporary altars of twisted roots and grasses.",id:"824438",note:null,date:{day:20,year:null,month:2},category:"religious-holidays"},{name:"Harvest's Rise",description:"This holiday is up to the calendar owner to decide what it is for! :)",id:"824439",note:null,date:{day:11,year:null,month:3},category:"secular-holidays"},{name:"Merryfrond's Day",description:"This holiday is up to the calendar owner to decide what it is for! :)",id:"824440",note:null,date:{day:31,year:null,month:3},category:"secular-holidays"},{name:"Deep Solace",description:"Moradin's holy day is Deep Solace, which is celebrated on the eighteenth day of the fifth month. Especially devout followers of the All-Hammer spend the day in isolation, meditating on the meaning of family and how they may be better mothers, fathers, siblings, and children.\n\nThe dwarven communities across Exandria, such as the ones in Grimgolir and Kraghammer, celebrate with a full day of feasting and drinking.ย ",id:"824441",note:null,date:{day:18,year:null,month:4},category:"religious-holidays"},{name:"Zenith",description:"Summer begins in the middle of Unndilar, officially starting at noon on the 26th day known as the Zenith.",id:"824442",note:null,date:{day:26,year:null,month:4},category:"secular-holidays"},{name:"Artisan's Faire",description:"This holiday is up to the calendar owner to decide what it is for! :)",id:"824443",note:null,date:{day:15,year:null,month:5},category:"secular-holidays"},{name:"Elvendawn",description:"Corellon's holy day is called Elvendawn,\nor Midsummer. It is celebrated on the twentieth day\nof the sixth month, and commemorates the elves' first\nemergence from the Feywild.\n\nIn Syngorn, the Elves open small doorways into the Feywild and celebrate alongside the wild fey with uncharacteristic vigor.\n\nThough the Dwendalian\nEmpire doesn't promote the worship of the Arch Heart,\nthe elves of Bysaes Tyl quietly celebrate in private by\nopening small doors to the Feywild and having a little\nmore wine than usual.ย ",id:"824444",note:null,date:{day:20,year:null,month:5},category:"religious-holidays"},{name:"Highsummer",description:"The holy day of the Dawnfather is the peak of the summer season.\n\nEmon celebrates with an entire week of gift-giving and feasting, ending at midnight on the 21st of Sydenstar (the anniversary of the Battle of the Umbra Hills, where Zan Tal'Dorei dethroned Trist Drassig).\n\nWhitestone (where the Dawnfather is the city's patron god) celebrates with gift-giving and a festival of lights around the Sun Tree. Due to the Briarwood occupation, money is thin, so most Whitestone folk choose to recount the small things they are thankful for, rather than buy gifts.\n\nWhile other parts of Exandria feast, the Dwendalian\nEmpire uses this day as an opportunity to enlist more\nsoldiers in its army. The military holds great feasts and\nhands out toy soldiers and other propaganda, encouraging people to enlist and help fight against the evil that\nthreatens the king.ย ",id:"824445",note:null,date:{day:7,year:null,month:6},category:"religious-holidays"},{name:"Morn of Largesse",description:"This holiday is up to the calendar owner to decide what it is for! :)",id:"824446",note:null,date:{day:14,year:null,month:6},category:"secular-holidays"},{name:"Harvest's Close",description:"Autumn begins on the 3rd of Fessuranย and is typically celebrated with feasting in rural regions and with carnivals in the cities.ย ",id:"824447",note:null,date:{day:3,year:null,month:7},category:"secular-holidays"},{name:"The Hazel Festival",description:"This holiday is up to the calendar owner to decide what it is for! :)",id:"824448",note:null,date:{day:12,year:null,month:8},category:"secular-holidays"},{name:"Civilization's Dawn",description:"The Law Bearer's holy day is Civilization's\nDawn, which is celebrated on the autumnal equinox,\nusually the twenty-second day of the ninth month.\n\nEmon celebrates with a great bonfire in the square of each neighborhood, around which each community dances and gives gifts.\n\nIn the\nDwendalian Empire, people celebrate by having feasts \nin honor of the laws of the Dwendal bloodline. One seat\nat every table is left open for the king, who eats in spirit\nwith the people he rules.ย ",id:"824449",note:null,date:{day:22,year:null,month:8},category:"religious-holidays"},{name:"Night of Ascension",description:"The Raven Queen's holy day is called the Night of Ascension, celebrating her apotheosis. The actual date of the her rise to divinity is unclear, but the Night of Ascension is celebrated on the thirteenth day of the tenth month.\n\nThough most in Emon see this celebration of the dead as unnerving and macabre, the followers of the Matron of Ravens believe that the honored dead would prefer to be venerated with cheer, not misery.\n\nWhat was once a night of cheery celebration of the dead in the Dwendalian Empire has recently become an occasion to burn effigies and decry the Kryn Dynasty for their unnatural relationship with death.",id:"824450",note:null,date:{day:13,year:null,month:9},category:"religious-holidays"},{name:"Zan's Cup",description:"This holiday is up to the calendar owner to decide what it is for! :)",id:"824451",note:null,date:{day:21,year:null,month:9},category:"secular-holidays"},{name:"Barren Eve",description:"Winter begins on the 2nd day of Duscar, the Barren Eve, which is a nighttime celebration and remembrance of those who fell in battle.",id:"824452",note:null,date:{day:2,year:null,month:10},category:"secular-holidays"},{name:"Embertide",description:"Bahamut's holy day is called Embertide,ย and is celebrated on the fifth day of Duscar. This is a dayย of remembrance, solemnity, and respect for those whoย have fallen in the defense of others.",id:"824453",note:null,date:{day:5,year:null,month:10},category:"religious-holidays"},{name:"Winter's Crest",description:"This day celebrates the freedom of Tal'Dorei from Errevon the Rimelord. It is the peak of the winter season, so devout followers of the Matron of Ravens (as the goddess of winter) consider it to be one of her holy days.\n\nHowever, in most of the land, people see Winter's Crest as a secular holiday, often celebrated with omnipresent music in public areas, lavish gift-giving to relatives and loved ones, and the cutting and decorating of trees placed indoors. The Sun Tree in Whitestone is often decorated with lights and other baubles for Winter's Crest.",id:"824454",note:null,date:{day:20,year:null,month:10},category:"secular-holidays"}],id:null,categories:[{name:"Religious Holidays",id:"religious-holidays",color:"#0D47A1"},{name:"Secular Holidays",id:"secular-holidays",color:"#4A148C"}]},{name:"Calendar of Harptos",description:"Calendar of Faerรปn of the Forgotten Realms.",static:{firstWeekDay:0,incrementDay:!1,displayMoons:!0,overflow:!1,weekdays:[{type:"day",name:"I",id:"ID_9999882bb94a"},{type:"day",name:"II",id:"ID_8a0b4b79d888"},{type:"day",name:"III",id:"ID_da483aca8bf9"},{type:"day",name:"IV",id:"ID_a8fbea39cac8"},{type:"day",name:"V",id:"ID_9b19d9787b0b"},{type:"day",name:"VI",id:"ID_382a590a8a28"},{type:"day",name:"VII",id:"ID_fbca0ab80afb"},{type:"day",name:"VIII",id:"ID_ca093bca5ad9"},{type:"day",name:"IX",id:"ID_d95b39098bf8"},{type:"day",name:"X",id:"ID_389bfb5858db"}],months:[{name:"Hammer (Deepwinter)",type:"month",length:30,id:"ID_cbeb4b190b6a"},{name:"Midwinter",type:"intercalary",length:1,id:"ID_89bad9089b7b"},{name:"Alturiak (The Claw of Winter)",type:"month",length:30,id:"ID_6a08a8aacb7b"},{name:"Ches (The Claw of the Sunsets)",type:"month",length:30,id:"ID_db2a7bf97afa"},{name:"Tarsakh (The Claw of Storms)",type:"month",length:30,id:"ID_6b48982b0bda"},{name:"Greengrass",type:"intercalary",length:1,id:"ID_08790af92809"},{name:"Mirtul (The Melting)",type:"month",length:30,id:"ID_b91b39f95a28"},{name:"Kythorn (The Time of Flowers)",type:"month",length:30,id:"ID_f8e9585a2bf8"},{name:"Flamerule (Summertide)",type:"month",length:30,id:"ID_fa895bdb38e9"},{name:"Midsummer",type:"intercalary",length:1,id:"ID_a9181b5a683a"},{name:"Eleasis (Highsun)",type:"month",length:30,id:"ID_1b1b1b287b0a"},{name:"Eleint (The Fading)",type:"month",length:30,id:"ID_1aca5918993a"},{name:"Highharvestide",type:"intercalary",length:1,id:"ID_a94a183b4b88"},{name:"Marpenoth (Leaffall)",type:"month",length:30,id:"ID_58d97969eb79"},{name:"Uktar (The Rotting)",type:"month",length:30,id:"ID_4b090b787b18"},{name:"The Feast of the Moon",type:"intercalary",length:1,id:"ID_1b0ae8dbdb4a"},{name:"Nightal (The Drawing Down)",type:"month",length:30,id:"ID_abb82afab80a"}],moons:[{name:"Selรบne",cycle:30.4375,offset:13.9,faceColor:"#ffffff",shadowColor:"#000000",id:"ID_48ea2a69a888"}],leapDays:[{name:"Shieldsmeet",type:"leapday",interval:[{ignore:!1,exclusive:!1,interval:4}],offset:0,timespan:9,intercalary:!1,id:"ID_5b08faa88ada"}],eras:[]},current:{year:1491,day:1,month:0},events:[{name:"Winter Solstice",description:null,id:"824588",note:null,date:{day:null,year:null,month:null},category:"natural-events"},{name:"Vernal Equinox",description:null,id:"824589",note:null,date:{day:null,year:null,month:null},category:"natural-events"},{name:"Summer Solstice",description:null,id:"824590",note:null,date:{day:null,year:null,month:null},category:"natural-events"},{name:"Autumnal Equinox",description:null,id:"824591",note:null,date:{day:null,year:null,month:null},category:"natural-events"},{name:"Shieldmeet",description:"Shieldmeet was the equivalent of a leap year day in the Calendar of Harptos, occurring once every four years, adding a day after the festival of Midsummer and before Eleasis 1. Traditionally the day was used for fairs, bazaars, musical and theatrical performances, and tournaments of skill and magical ability. Nobles usually held court to hear the petitions of their people and to make or renew trade pacts, alliances, and agreements. Shieldmeet was known as Cinnaelos'Cor (also seen as Cinnaeloscor), \"the Day of Corellon's Peace\" in elvish and marked the end of an aeloulaev and the beginning of a new one in the elven Aryselmalyn calendar.",id:"824592",note:null,date:{day:2,year:null,month:9},category:"festivals"},{name:"Feast of the Moon",description:"The Feast of the Moon, or Moonfest, was an annual festival in the Calendar of Harptos, occurring between the final night of Uktar and the first day of Nightal. It was the last great festival of the calendar year.\n\nThe day traditionally marked the onset of winter. It was also a time to celebrate and honor the ancestors and the respected dead. On this day, folk blessed their ancestors' graves and performed the Ritual of Remembrance. People also gathered to tell stories of the deeds of their ancestors and of the gods until deep into the night, until they merged and became legend. This was a time to hear of past heroes, great treasures, and lost cities.\n\nIn Faerรƒฦ’ร‚ยปn, battles were typically fought between harvest-time and the coming of winter. This meant that most of the fighting usually occurred in the month of Uktar. The timing of the Feast of the Moonรƒยขรขโ€šยฌรขโ‚ฌafter recently slain soldiers had joined the ranks of the deadรƒยขรขโ€šยฌรขโ‚ฌwas thus practical, if sadly ironic.\n\nThe Heralds of Faerรƒฦ’ร‚ยปn had a number of special duties on the Feast of the Moon. Prime among these was to perform the Bloodsong ceremony, at which a Herald publicly recited the genealogies of each noble family in the area. In this way, the Heralds reaffirmed a noble family's traditional authority and status, as well as the respect accorded to them.\n\nPriests of a number of deities of various pantheons held rites, ceremonies, and festivals on the Feast of the Moon. Many, though not all, focused on remembering the dead in one way or another.",id:"824593",note:null,date:{day:1,year:null,month:15},category:"festivals"},{name:"Highharvesttide",description:'Highharvestide was an annual festival in the Calendar of Harptos, taking place between 30 Eleint and 1 Marpenoth. It was traditionally a feast to celebrate the harvest and the abundance of food, but also the time when those wishing to travel left on their journeys before winter set in.\n\nPreparations for the feast started as early as a tenday before, while preparing, cooking, and preserving the harvest for the cold winter months. Traditions varied from community to community, but examples of festive activity included food-related contests; races and challenges of skill and strength; receiving homemade sweets from the local clergy; and priests blessing larders, wine cellars, grain bins, and food preserves.\n\nThis day was often an important anniversary to various governments. Often, taxes and tithes came due, rulers held "open courts" to hear the concerns of their citizens, oaths were publicly renewed, troops received marching orders to new duty stations, and guilds met to confer on prices and rate changes for goods and services.\n\nAccording to tradition, dwarves only drank water and elves drank only dew on this day. However, these traditions began to fade in the 14th and 15th century DR.\n\nIt was said that children born on this day were favored by Tymora to have lifelong good luck but be smitten with wanderlust. Another legend was that human females born on this day had control over their reproductive system (i.e., got pregnant only when they wanted to) by force of will alone, and that they could instantly sense when they had been poisoned, either by ingestion or being bitten by a venomous creature for example.',id:"824594",note:null,date:{day:1,year:null,month:12},category:"festivals"},{name:"Greengrass",description:"Greengrass was a festival to welcome in the first day of spring in the Calendar of Harptos. It occured annually on a special day between Tarsakh 30 and Mirtul 1. Traditionally, the wealthier people brought out flowers to give to the less wealthy, who either wore them or spread them on the ground to encourage the deities to usher in the summer.",id:"824595",note:null,date:{day:1,year:null,month:5},category:"festivals"},{name:"Midwinter",description:"Midwinter (also known as Deadwinter Day) was a festival to mark the midpoint of winter in the Calendar of Harptos. It occured on a special day between Hammer 30 and Alturiak 1. Amongst nobles and monarchs it was known as Midwinter and was traditionally used to make or renew alliances, although the common people called it Deadwinter Day, a reference to the cold and hard times that remained before the spring.\n\nOn Midwinter Day the Red Fellowship of the Deity known as the Red Knight observes the Retreat. This solemn ceremony consists of an assembly wherein the clergy discuss the previous year's campaigns. Strategies are discussed, battles analyzed, and the accumulated lore integrated into the church's teachings.\n\nThe holiest day of the year for the Church of Shevarash is Midwinter Night, during which the Dark Court Slaughter is remembered. Inductions into the ranks of the clergy occur at this time. Each new cleric screams vows of vengeance into the night air and swears neither to laugh nor smile until the Spider Queen and her followers are no more.",id:"824596",note:null,date:{day:1,year:null,month:1},category:"festivals"},{name:"Midsummer",description:"Midsummer was a festival that celebrated love and music through feast. It occurred between Flamerule 30 and Eleasis 1 on the Calendar of Harptos. It was a time when love advanced, and it was said the deities themselves took a hand to ensure good weather. If bad weather was experienced on this night it was considered an extremely bad omen. Shieldmeet occurred the day after Midsummer on leap years.",id:"824597",note:null,date:{day:1,year:null,month:9},category:"festivals"}],id:null,categories:[{name:"Natural Events",id:"natural-events",color:"#2E7D32"},{name:"Festivals",id:"festivals",color:"#9b2c2c"}]}];function g(){}const y=e=>e;function v(e){return e()}function b(){return Object.create(null)}function w(e){e.forEach(v)}function x(e){return"function"==typeof e}function D(e,t){return e!=e?t==t:e!==t||e&&"object"==typeof e||"function"==typeof e}function k(e){return 0===Object.keys(e).length}function E(e,t,n,a){if(e){const r=C(e,t,n,a);return e[0](r)}}function C(e,t,n,a){return e[1]&&a?function(e,t){for(const n in t)e[n]=t[n];return e}(n.ctx.slice(),e[1](a(t))):n.ctx}function A(e,t,n,a){if(e[2]&&a){const r=e[2](a(n));if(void 0===t.dirty)return r;if("object"==typeof r){const e=[],n=Math.max(t.dirty.length,r.length);for(let a=0;a32){const t=[],n=e.ctx.length/32;for(let e=0;ewindow.performance.now():()=>Date.now(),F=q?e=>requestAnimationFrame(e):g;const N=new Set;function O(e){N.forEach((t=>{t.c(e)||(N.delete(t),t.f())})),0!==N.size&&F(O)}let B=!1;function L(e,t){e.appendChild(t)}function R(e,t,n){const a=j(e);if(!a.getElementById(t)){const e=H("style");e.id=t,e.textContent=n,_(a,e)}}function j(e){if(!e)return document;const t=e.getRootNode?e.getRootNode():e.ownerDocument;return t&&t.host?t:e.ownerDocument}function _(e,t){L(e.head||e,t)}function V(e,t,n){e.insertBefore(t,n||null)}function P(e){e.parentNode.removeChild(e)}function G(e,t){for(let n=0;ne.removeEventListener(t,n,a)}function K(e,t,n){null==n?e.removeAttribute(t):e.getAttribute(t)!==n&&e.setAttribute(t,n)}function Q(e){return""===e?null:+e}function J(e,t){t=""+t,e.wholeText!==t&&(e.data=t)}function X(e,t){e.value=null==t?"":t}function ee(e,t,n,a){e.style.setProperty(t,n,a?"important":"")}function te(e,t){for(let n=0;ne.indexOf(t)<0:e=>-1===e.indexOf("__svelte")),r=n.length-a.length;r&&(e.style.animation=a.join(", "),oe-=r,oe||F((()=>{oe||(re.forEach((e=>{const t=e.__svelte_stylesheet;let n=t.cssRules.length;for(;n--;)t.deleteRule(n);e.__svelte_rules={}})),re.clear())})))}(e,h),f=!1}return function(e){let t;0===N.size&&F(O),new Promise((n=>{N.add(t={c:e,f:n})}))}((e=>{if(!p&&e>=l&&(p=!0),p&&e>=c&&(d(1,0),m()),!f)return!1;if(p){const t=0+1*s((e-l)/o);d(t,1-t)}return!0})),u&&(h=function(e,t,n,a,r,i,o,s=0){const l=16.666/a;let c="{\n";for(let e=0;e<=1;e+=l){const a=t+(n-t)*i(e);c+=100*e+`%{${o(a,1-a)}}\n`}const d=c+`100% {${o(n,1-n)}}\n}`,u=`__svelte_${function(e){let t=5381,n=e.length;for(;n--;)t=(t<<5)-t^e.charCodeAt(n);return t>>>0}(d)}_${s}`,h=j(e);re.add(h);const f=h.__svelte_stylesheet||(h.__svelte_stylesheet=function(e){const t=H("style");return _(j(e),t),t}(e).sheet),p=h.__svelte_rules||(h.__svelte_rules={});p[u]||(p[u]=!0,f.insertRule(`@keyframes ${u} ${d}`,f.cssRules.length));const m=e.style.animation||"";return e.style.animation=`${m?`${m}, `:""}${u} ${a}ms linear ${r}ms 1 both`,oe+=1,u}(e,0,1,o,i,s,u)),i||(p=!0),d(0,1),m}function le(e){const t=getComputedStyle(e);if("absolute"!==t.position&&"fixed"!==t.position){const{width:n,height:a}=t,r=e.getBoundingClientRect();e.style.position="absolute",e.style.width=n,e.style.height=a,function(e,t){const n=e.getBoundingClientRect();if(t.left!==n.left||t.top!==n.top){const a=getComputedStyle(e),r="none"===a.transform?"":a.transform;e.style.transform=`${r} translate(${t.left-n.left}px, ${t.top-n.top}px)`}}(e,r)}}function ce(e){ie=e}function de(){if(!ie)throw new Error("Function called outside component initialization");return ie}function ue(e){de().$$.on_mount.push(e)}function he(){const e=de();return(t,n)=>{const a=e.$$.callbacks[t];if(a){const r=function(e,t,n=!1){const a=document.createEvent("CustomEvent");return a.initCustomEvent(e,n,!1,t),a}(t,n);a.slice().forEach((t=>{t.call(e,r)}))}}}function fe(e,t){de().$$.context.set(e,t)}function pe(e){return de().$$.context.get(e)}function me(e,t){const n=e.$$.callbacks[t.type];n&&n.slice().forEach((e=>e.call(this,t)))}const ge=[],ye=[],ve=[],be=[],we=Promise.resolve();let xe=!1;function De(){xe||(xe=!0,we.then(Te))}function ke(){return De(),we}function Ee(e){ve.push(e)}let Ce=!1;const Ae=new Set;function Te(){if(!Ce){Ce=!0;do{for(let e=0;e{$e.delete(e),a&&(n&&e.d(1),a())})),e.o(t)}}function Be(e,t){e.f(),function(e,t){e.d(1),t.delete(e.key)}(e,t)}function Le(e,t){e.f(),function(e,t){Oe(e,1,1,(()=>{t.delete(e.key)}))}(e,t)}function Re(e,t,n,a,r,i,o,s,l,c,d,u){let h=e.length,f=i.length,p=h;const m={};for(;p--;)m[e[p].key]=p;const g=[],y=new Map,v=new Map;for(p=f;p--;){const e=u(r,i,p),s=n(e);let l=o.get(s);l?a&&l.p(e,t):(l=c(s,e),l.c()),y.set(s,g[p]=l),s in m&&v.set(s,Math.abs(p-m[s]))}const b=new Set,w=new Set;function x(e){Ne(e,1),e.m(s,d),o.set(e.key,e),d=e.first,f--}for(;h&&f;){const t=g[f-1],n=e[h-1],a=t.key,r=n.key;t===n?(d=t.first,h--,f--):y.has(r)?!o.has(a)||b.has(a)?x(t):w.has(r)?h--:v.get(a)>v.get(r)?(w.add(a),x(t)):(b.add(r),h--):(l(n,o),h--)}for(;h--;){const t=e[h];y.has(t.key)||l(t,o)}for(;f;)x(g[f-1]);return g}function je(e){e&&e.c()}function _e(e,t,n,a){const{fragment:r,on_mount:i,on_destroy:o,after_update:s}=e.$$;r&&r.m(t,n),a||Ee((()=>{const t=i.map(v).filter(x);o?o.push(...t):w(t),e.$$.on_mount=[]})),s.forEach(Ee)}function Ve(e,t){const n=e.$$;null!==n.fragment&&(w(n.on_destroy),n.fragment&&n.fragment.d(t),n.on_destroy=n.fragment=null,n.ctx=[])}function Pe(e,t,n,a,r,i,o,s=[-1]){const l=ie;ce(e);const c=e.$$={fragment:null,ctx:null,props:i,update:g,not_equal:r,bound:b(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(t.context||(l?l.$$.context:[])),callbacks:b(),dirty:s,skip_bound:!1,root:t.target||l.$$.root};o&&o(c.root);let d=!1;if(c.ctx=n?n(e,t.props||{},((t,n,...a)=>{const i=a.length?a[0]:n;return c.ctx&&r(c.ctx[t],c.ctx[t]=i)&&(!c.skip_bound&&c.bound[t]&&c.bound[t](i),d&&function(e,t){-1===e.$$.dirty[0]&&(ge.push(e),De(),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<{const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}$set(e){this.$$set&&!k(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}});class Ge{$destroy(){Ve(this,1),this.$destroy=g}$on(e,t){const n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(t),()=>{const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}$set(e){this.$$set&&!k(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}function He(e){const t=e-1;return t*t*t+1}function We(e,{from:t,to:n},a={}){const r=getComputedStyle(e),i="none"===r.transform?"":r.transform,[o,s]=r.transformOrigin.split(" ").map(parseFloat),l=t.left+t.width*o/n.width-(n.left+o),c=t.top+t.height*s/n.height-(n.top+s),{delay:d=0,duration:u=(e=>120*Math.sqrt(e)),easing:h=He}=a;return{delay:d,duration:x(u)?u(Math.sqrt(l*l+c*c)):u,easing:h,css:(e,a)=>{const r=a*l,o=a*c,s=e+a*t.width/n.width,d=e+a*t.height/n.height;return`transform: ${i} translate(${r}px, ${o}px) scale(${s}, ${d});`}}}function Ue(e,t,n){e.dispatchEvent(new CustomEvent("finalize",{detail:{items:t,info:n}}))}function ze(e,t,n){e.dispatchEvent(new CustomEvent("consider",{detail:{items:t,info:n}}))}const Ye="draggedEntered",Ze="draggedLeft",Ke="draggedOverIndex",Qe="draggedLeftDocument",Je="leftForAnother",Xe="outsideOfAny";function et(e,t,n){e.dispatchEvent(new CustomEvent(Ye,{detail:{indexObj:t,draggedEl:n}}))}function tt(e,t,n){e.dispatchEvent(new CustomEvent(Ze,{detail:{draggedEl:t,type:Je,theOtherDz:n}}))}function nt(e,t,n){e.dispatchEvent(new CustomEvent(Ke,{detail:{indexObj:t,draggedEl:n}}))}const at="dragStarted",rt="droppedIntoZone",it="droppedIntoAnother",ot="dragStopped",st="pointer",lt="keyboard",ct="data-is-dnd-shadow-item",dt="id:dnd-shadow-placeholder-0000";let ut="id",ht=0;function ft(){ht++}function pt(){if(0===ht)throw new Error("Bug! trying to decrement when there are no dropzones");ht--}const mt="undefined"==typeof window;let gt;function yt(e){let t;const n=e.getBoundingClientRect(),a=getComputedStyle(e),r=a.transform;if(r){let i,o,s,l;if(r.startsWith("matrix3d("))t=r.slice(9,-1).split(/, /),i=+t[0],o=+t[5],s=+t[12],l=+t[13];else{if(!r.startsWith("matrix("))return n;t=r.slice(7,-1).split(/, /),i=+t[0],o=+t[3],s=+t[4],l=+t[5]}const c=a.transformOrigin,d=n.x-s-(1-i)*parseFloat(c),u=n.y-l-(1-o)*parseFloat(c.slice(c.indexOf(" ")+1)),h=i?n.width/i:e.offsetWidth,f=o?n.height/o:e.offsetHeight;return{x:d,y:u,width:h,height:f,top:u,right:d+h,bottom:u+f,left:d}}return n}function vt(e){const t=yt(e);return{top:t.top+window.scrollY,bottom:t.bottom+window.scrollY,left:t.left+window.scrollX,right:t.right+window.scrollX}}function bt(e){const t=e.getBoundingClientRect();return{top:t.top+window.scrollY,bottom:t.bottom+window.scrollY,left:t.left+window.scrollX,right:t.right+window.scrollX}}function wt(e){return{x:(e.left+e.right)/2,y:(e.top+e.bottom)/2}}function xt(e,t){return e.y<=t.bottom&&e.y>=t.top&&e.x>=t.left&&e.x<=t.right}function Dt(e){return wt(bt(e))}function kt(e,t){return xt(Dt(e),vt(t))}function Et(){gt=new Map}function Ct(e,t){if(!kt(e,t))return null;const n=t.children;if(0===n.length)return{index:0,isProximityBased:!0};const a=function(e){const t=Array.from(e.children).findIndex((e=>e.getAttribute(ct)));if(t>=0)return gt.has(e)||gt.set(e,new Map),gt.get(e).set(t,vt(e.children[t])),t}(t);for(let r=0;rn(t))))}function a(e){return 25-e}return t(),{scrollIfNeeded:function(r,i){if(!i)return!1;const o=function(e,t){const n=bt(t);return xt(e,n)?{top:e.y-n.top,bottom:n.bottom-e.y,left:e.x-n.left,right:Math.min(n.right,document.documentElement.clientWidth)-e.x}:null}(r,i);if(null===o)return t(),!1;const s=!!e.directionObj;let[l,c]=[!1,!1];return i.scrollHeight>i.clientHeight&&(o.bottom<25?(l=!0,e.directionObj={x:0,y:1},e.stepPx=a(o.bottom)):o.top<25&&(l=!0,e.directionObj={x:0,y:-1},e.stepPx=a(o.top)),!s&&l)||i.scrollWidth>i.clientWidth&&(o.right<25?(c=!0,e.directionObj={x:1,y:0},e.stepPx=a(o.right)):o.left<25&&(c=!0,e.directionObj={x:-1,y:0},e.stepPx=a(o.left)),!s&&c)?(n(i),!0):(t(),!1)},resetScrolling:t}}function Tt(e){return JSON.stringify(e,null,2)}function St(e){if(!e)throw new Error("cannot get depth of a falsy node");return $t(e,0)}function $t(e,t=0){return e.parentElement?$t(e.parentElement,t+1):t-1}Et();const{scrollIfNeeded:Mt,resetScrolling:qt}=At();let It,Ft;function Nt(e){const t=e.touches?e.touches[0]:e;Ft={x:t.clientX,y:t.clientY}}const{scrollIfNeeded:Ot,resetScrolling:Bt}=At();let Lt;function Rt(){Ft&&Ot(Ft,document.documentElement),Lt=window.setTimeout(Rt,300)}function jt(e){return`${e} 0.2s ease`}function _t(e,t,n,a,r){const i=t.getBoundingClientRect(),o=e.getBoundingClientRect(),s=i.width-o.width,l=i.height-o.height;if(s||l){const t={left:(n-o.left)/o.width,top:(a-o.top)/o.height};e.style.height=`${i.height}px`,e.style.width=`${i.width}px`,e.style.left=parseFloat(e.style.left)-t.left*s+"px",e.style.top=parseFloat(e.style.top)-t.top*l+"px"}Vt(t,e),r()}function Vt(e,t){const n=window.getComputedStyle(e);Array.from(n).filter((e=>e.startsWith("background")||e.startsWith("padding")||e.startsWith("font")||e.startsWith("text")||e.startsWith("align")||e.startsWith("justify")||e.startsWith("display")||e.startsWith("flex")||e.startsWith("border")||"opacity"===e||"color"===e||"list-style-type"===e)).forEach((e=>t.style.setProperty(e,n.getPropertyValue(e),n.getPropertyPriority(e))))}function Pt(e,t){e.draggable=!1,e.ondragstart=()=>!1,t?(e.style.userSelect="",e.style.WebkitUserSelect="",e.style.cursor=""):(e.style.userSelect="none",e.style.WebkitUserSelect="none",e.style.cursor="grab")}function Gt(e,t=(()=>{}),n=(()=>[])){e.forEach((e=>{const a=t(e);Object.keys(a).forEach((t=>{e.style[t]=a[t]})),n(e).forEach((t=>e.classList.add(t)))}))}function Ht(e,t=(()=>{}),n=(()=>[])){e.forEach((e=>{const a=t(e);Object.keys(a).forEach((t=>{e.style[t]=""})),n(e).forEach((t=>e.classList.contains(t)&&e.classList.remove(t)))}))}const Wt={outline:"rgba(255, 255, 102, 0.7) solid 2px"};let Ut,zt,Yt,Zt,Kt,Qt,Jt,Xt,en,tn,nn,an=!1,rn=!1,on=!1;const sn=new Map,ln=new Map,cn=new WeakMap;function dn(e,t){sn.get(t).delete(e),pt(),0===sn.get(t).size&&sn.delete(t)}function un(){window.addEventListener("mousemove",Nt),window.addEventListener("touchmove",Nt),Rt();const e=sn.get(Zt);for(const t of e)t.addEventListener(Ye,fn),t.addEventListener(Ze,pn),t.addEventListener(Ke,mn);window.addEventListener(Qe,yn);const t=Math.max(100,...Array.from(e.keys()).map((e=>ln.get(e).dropAnimationDurationMs)));!function(e,t,n=200){let a,r,i,o=!1;const s=Array.from(t).sort(((e,t)=>St(t)-St(e)));!function t(){const l=Dt(e);if(!Mt(l,a)&&i&&Math.abs(i.x-l.x)<10&&Math.abs(i.y-l.y)<10)return void(It=window.setTimeout(t,n));if(function(e){const t=bt(e);return t.right<0||t.left>document.documentElement.scrollWidth||t.bottom<0||t.top>document.documentElement.scrollHeight}(e))return void function(e){window.dispatchEvent(new CustomEvent(Qe,{detail:{draggedEl:e}}))}(e);i=l;let c=!1;for(const t of s){const n=Ct(e,t);if(null===n)continue;const{index:i}=n;c=!0,t!==a?(a&&tt(a,e,t),et(t,n,e),a=t):i!==r&&(nt(t,n,e),r=i);break}!c&&o&&a?(function(e,t){e.dispatchEvent(new CustomEvent(Ze,{detail:{draggedEl:t,type:Xe}}))}(a,e),a=void 0,r=void 0,o=!1):o=!0,It=window.setTimeout(t,n)}()}(zt,e,1.07*t)}function hn(e){return e.findIndex((e=>!!e.isDndShadowItem&&e.id!==dt))}function fn(e){let{items:t,dropFromOthersDisabled:n}=ln.get(e.currentTarget);if(n&&e.currentTarget!==Kt)return;if(on=!1,t=t.filter((e=>e.id!==Jt.id)),Kt!==e.currentTarget){const e=ln.get(Kt).items.filter((e=>!e.isDndShadowItem));ze(Kt,e,{trigger:"dragEnteredAnother",id:Yt.id,source:st})}else{const e=function(e){return e.findIndex((e=>e.id===dt))}(t);-1!==e&&t.splice(e,1)}const{index:a,isProximityBased:r}=e.detail.indexObj,i=r&&a===e.currentTarget.children.length-1?a+1:a;Xt=e.currentTarget,t.splice(i,0,Jt),ze(e.currentTarget,t,{trigger:"draggedEntered",id:Yt.id,source:st})}function pn(e){if(!an)return;const{items:t,dropFromOthersDisabled:n}=ln.get(e.currentTarget);if(n&&e.currentTarget!==Kt&&e.currentTarget!==Xt)return;const a=hn(t),r=t.splice(a,1)[0];Xt=void 0;const{type:i,theOtherDz:o}=e.detail;if(i===Xe||i===Je&&o!==Kt&&ln.get(o).dropFromOthersDisabled){on=!0,Xt=Kt;const e=ln.get(Kt).items;e.splice(Qt,0,r),ze(Kt,e,{trigger:"draggedLeftAll",id:Yt.id,source:st})}ze(e.currentTarget,t,{trigger:"draggedLeft",id:Yt.id,source:st})}function mn(e){const{items:t,dropFromOthersDisabled:n}=ln.get(e.currentTarget);if(n&&e.currentTarget!==Kt)return;on=!1;const{index:a}=e.detail.indexObj,r=hn(t);t.splice(r,1),t.splice(a,0,Jt),ze(e.currentTarget,t,{trigger:"draggedOverIndex",id:Yt.id,source:st})}function gn(e){e.preventDefault();const t=e.touches?e.touches[0]:e;tn={x:t.clientX,y:t.clientY},zt.style.transform=`translate3d(${tn.x-en.x}px, ${tn.y-en.y}px, 0)`}function yn(){rn=!0,window.removeEventListener("mousemove",gn),window.removeEventListener("touchmove",gn),window.removeEventListener("mouseup",yn),window.removeEventListener("touchend",yn),function(){window.removeEventListener("mousemove",Nt),window.removeEventListener("touchmove",Nt),Ft=void 0,window.clearTimeout(Lt),Bt();const e=sn.get(Zt);for(const t of e)t.removeEventListener(Ye,fn),t.removeEventListener(Ze,pn),t.removeEventListener(Ke,mn);window.removeEventListener(Qe,yn),clearTimeout(It),qt(),Et()}(),function(e){e.style.cursor="grab"}(zt),Xt||(Xt=Kt);let{items:e,type:t}=ln.get(Xt);Ht(sn.get(t),(e=>ln.get(e).dropTargetStyle),(e=>ln.get(e).dropTargetClasses));let n=hn(e);-1===n&&(n=Qt),e=e.map((e=>e.isDndShadowItem?Yt:e)),function(e,t){const n=yt(Xt.children[e]),a=n.left-parseFloat(zt.style.left),r=n.top-parseFloat(zt.style.top),{dropAnimationDurationMs:i}=ln.get(Xt),o=`transform ${i}ms ease`;zt.style.transition=zt.style.transition?zt.style.transition+","+o:o,zt.style.transform=`translate3d(${a}px, ${r}px, 0)`,window.setTimeout(t,i)}(n,(function(){var t;nn(),Ue(Xt,e,{trigger:on?"droppedOutsideOfAny":rt,id:Yt.id,source:st}),Xt!==Kt&&Ue(Kt,ln.get(Kt).items,{trigger:it,id:Yt.id,source:st}),(t=Xt.children[n]).style.visibility="",t.removeAttribute(ct),zt.remove(),Ut.remove(),zt=void 0,Ut=void 0,Yt=void 0,Zt=void 0,Kt=void 0,Qt=void 0,Jt=void 0,Xt=void 0,en=void 0,tn=void 0,an=!1,rn=!1,nn=void 0,on=!1}))}const vn={DND_ZONE_ACTIVE:"dnd-zone-active",DND_ZONE_DRAG_DISABLED:"dnd-zone-drag-disabled"},bn={[vn.DND_ZONE_ACTIVE]:"Tab to one the items and press space-bar or enter to start dragging it",[vn.DND_ZONE_DRAG_DISABLED]:"This is a disabled drag and drop list"};let wn;function xn(){wn=document.createElement("div"),wn.id="dnd-action-aria-alert",wn.style.position="fixed",wn.style.bottom="0",wn.style.left="0",wn.style.zIndex="-5",wn.style.opacity="0",wn.style.height="0",wn.style.width="0",wn.setAttribute("role","alert"),document.body.prepend(wn),Object.entries(bn).forEach((([e,t])=>document.body.prepend(function(e,t){const n=document.createElement("div");return n.id=e,n.innerHTML=`

${t}

`,n.style.display="none",n.style.position="fixed",n.style.zIndex="-5",n}(e,t))))}function Dn(e){wn.innerHTML="";const t=document.createTextNode(e);wn.appendChild(t),wn.style.display="none",wn.style.display="inline"}const kn={outline:"rgba(255, 255, 102, 0.7) solid 2px"};let En,Cn,An,Tn,Sn=!1,$n="",Mn="";const qn=new WeakSet,In=new WeakMap,Fn=new WeakMap,Nn=new Map,On=new Map,Bn=new Map,Ln=mt?null:("complete"===document.readyState?xn():window.addEventListener("DOMContentLoaded",xn),{...vn});function Rn(e,t){Cn===e&&Gn(),Bn.get(t).delete(e),pt(),0===Bn.get(t).size&&Bn.delete(t),0===Bn.size&&(window.removeEventListener("keydown",jn),window.removeEventListener("click",_n))}function jn(e){Sn&&"Escape"===e.key&&Gn()}function _n(){Sn&&(qn.has(document.activeElement)||Gn())}function Vn(e){if(!Sn)return;const t=e.currentTarget;if(t===Cn)return;$n=t.getAttribute("aria-label")||"";const{items:n}=On.get(Cn),a=n.find((e=>e.id===Tn)),r=n.indexOf(a),i=n.splice(r,1)[0],{items:o,autoAriaDisabled:s}=On.get(t);t.getBoundingClientRect().tope(On.get(t))))}function Gn(e=!0){On.get(Cn).autoAriaDisabled||Dn(`Stopped dragging item ${Mn}`),qn.has(document.activeElement)&&document.activeElement.blur(),e&&ze(Cn,On.get(Cn).items,{trigger:ot,id:Tn,source:lt}),Ht(Bn.get(En),(e=>On.get(e).dropTargetStyle),(e=>On.get(e).dropTargetClasses)),An=null,Tn=null,Mn="",En=null,Cn=null,$n="",Sn=!1,Pn()}function Hn(e,t){Wn(t);const n=function(e,t){const n={items:void 0,type:void 0,flipDurationMs:0,dragDisabled:!1,morphDisabled:!1,dropFromOthersDisabled:!1,dropTargetStyle:Wt,dropTargetClasses:[],transformDraggedElement:()=>{},centreDraggedOnCursor:!1};let a=new Map;function r(){window.removeEventListener("mousemove",o),window.removeEventListener("touchmove",o),window.removeEventListener("mouseup",i),window.removeEventListener("touchend",i)}function i(){r(),Ut=void 0,en=void 0,tn=void 0}function o(e){e.preventDefault();const t=e.touches?e.touches[0]:e;tn={x:t.clientX,y:t.clientY},(Math.abs(tn.x-en.x)>=3||Math.abs(tn.y-en.y)>=3)&&(r(),function(){an=!0;const e=a.get(Ut);Qt=e,Kt=Ut.parentElement;const t=Kt.getRootNode(),r=t.body||t,{items:i,type:o,centreDraggedOnCursor:s}=n;Yt={...i[e]},Zt=o,Jt={...Yt,isDndShadowItem:!0};const l={...Jt,[ut]:dt};zt=function(e,t){const n=e.getBoundingClientRect(),a=e.cloneNode(!0);Vt(e,a),a.id="dnd-action-dragged-el",a.style.position="fixed";let r=n.top,i=n.left;if(a.style.top=`${r}px`,a.style.left=`${i}px`,t){const e=wt(n);r-=e.y-t.y,i-=e.x-t.x,window.setTimeout((()=>{a.style.top=`${r}px`,a.style.left=`${i}px`}),0)}return a.style.margin="0",a.style.boxSizing="border-box",a.style.height=`${n.height}px`,a.style.width=`${n.width}px`,a.style.transition=`${jt("top")}, ${jt("left")}, ${jt("background-color")}, ${jt("opacity")}, ${jt("color")} `,window.setTimeout((()=>a.style.transition+=`, ${jt("width")}, ${jt("height")}`),0),a.style.zIndex="9999",a.style.cursor="grabbing",a}(Ut,s&&tn),window.requestAnimationFrame((function e(){var t;zt.parentElement?window.requestAnimationFrame(e):(r.appendChild(zt),zt.focus(),un(),(t=Ut).style.display="none",t.style.position="fixed",t.style.zIndex="-5",r.appendChild(Ut))})),Gt(Array.from(sn.get(n.type)).filter((e=>e===Kt||!ln.get(e).dropFromOthersDisabled)),(e=>ln.get(e).dropTargetStyle),(e=>ln.get(e).dropTargetClasses)),i.splice(e,1,l),nn=function(e){const t=e.style.minHeight;e.style.minHeight=window.getComputedStyle(e).getPropertyValue("height");const n=e.style.minWidth;return e.style.minWidth=window.getComputedStyle(e).getPropertyValue("width"),function(){e.style.minHeight=t,e.style.minWidth=n}}(Kt),ze(Kt,i,{trigger:at,id:Yt.id,source:st}),window.addEventListener("mousemove",gn,{passive:!1}),window.addEventListener("touchmove",gn,{passive:!1,capture:!1}),window.addEventListener("mouseup",yn,{passive:!1}),window.addEventListener("touchend",yn,{passive:!1})}())}function s(e){if(e.target!==e.currentTarget&&(void 0!==e.target.value||e.target.isContentEditable))return;if(e.button)return;if(an)return;e.stopPropagation();const t=e.touches?e.touches[0]:e;en={x:t.clientX,y:t.clientY},tn={...en},Ut=e.currentTarget,window.addEventListener("mousemove",o,{passive:!1}),window.addEventListener("touchmove",o,{passive:!1,capture:!1}),window.addEventListener("mouseup",i,{passive:!1}),window.addEventListener("touchend",i,{passive:!1})}function l({items:t,flipDurationMs:r=0,type:i="--any--",dragDisabled:o=!1,morphDisabled:l=!1,dropFromOthersDisabled:c=!1,dropTargetStyle:d=Wt,dropTargetClasses:u=[],transformDraggedElement:h=(()=>{}),centreDraggedOnCursor:f=!1}){var p,m;function g(e,t){return ln.get(e)?ln.get(e)[t]:n[t]}n.dropAnimationDurationMs=r,n.type&&i!==n.type&&dn(e,n.type),n.type=i,p=e,m=i,sn.has(m)||sn.set(m,new Set),sn.get(m).has(p)||(sn.get(m).add(p),ft()),n.items=[...t],n.dragDisabled=o,n.morphDisabled=l,n.transformDraggedElement=h,n.centreDraggedOnCursor=f,!an||rn||function(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!{}.hasOwnProperty.call(t,n)||t[n]!==e[n])return!1;return!0}(d,n.dropTargetStyle)&&function(e,t){if(e.length!==t.length)return!1;for(let n=0;nn.dropTargetStyle),(()=>u)),Gt([e],(()=>d),(()=>u))),n.dropTargetStyle=d,n.dropTargetClasses=[...u],an&&n.dropFromOthersDisabled!==c&&(c?Ht([e],(e=>g(e,"dropTargetStyle")),(e=>g(e,"dropTargetClasses"))):Gt([e],(e=>g(e,"dropTargetStyle")),(e=>g(e,"dropTargetClasses")))),n.dropFromOthersDisabled=c,ln.set(e,n);const y=hn(n.items);for(let t=0;tn.transformDraggedElement(zt,Yt,t))),(v=r).style.visibility="hidden",v.setAttribute(ct,"true"))}var v}return l(t),{update:e=>{l(e)},destroy:()=>{dn(e,n.type),ln.delete(e)}}}(e,t),a=function(e,t){const n={items:void 0,type:void 0,dragDisabled:!1,zoneTabIndex:0,dropFromOthersDisabled:!1,dropTargetStyle:kn,dropTargetClasses:[],autoAriaDisabled:!1};function a(e,t,n){e.length<=1||e.splice(n,1,e.splice(t,1,e[n])[0])}function r(t){switch(t.key){case"Enter":case" ":if((void 0!==t.target.disabled||t.target.href||t.target.isContentEditable)&&!qn.has(t.target))return;t.preventDefault(),t.stopPropagation(),Sn?Gn():i(t);break;case"ArrowDown":case"ArrowRight":{if(!Sn)return;t.preventDefault(),t.stopPropagation();const{items:r}=On.get(e),i=Array.from(e.children),o=i.indexOf(t.currentTarget);o0&&(n.autoAriaDisabled||Dn(`Moved item ${Mn} to position ${i} in the list ${$n}`),a(r,i,i-1),Ue(e,r,{trigger:rt,id:Tn,source:lt}));break}}}function i(t){(function(t){const{items:n}=On.get(e),a=Array.from(e.children),r=a.indexOf(t);An=t,An.tabIndex=0,Tn=n[r].id,Mn=a[r].getAttribute("aria-label")||""})(t.currentTarget),Cn=e,En=n.type,Sn=!0;const a=Array.from(Bn.get(n.type)).filter((e=>e===Cn||!On.get(e).dropFromOthersDisabled));if(Gt(a,(e=>On.get(e).dropTargetStyle),(e=>On.get(e).dropTargetClasses)),!n.autoAriaDisabled){let e=`Started dragging item ${Mn}. Use the arrow keys to move it within its list ${$n}`;a.length>1&&(e+=", or tab to another list in order to move the item into it"),Dn(e)}ze(e,On.get(e).items,{trigger:at,id:Tn,source:lt}),Pn()}function o(e){Sn&&e.currentTarget!==An&&(e.stopPropagation(),Gn(!1),i(e))}function s({items:t=[],type:a="--any--",dragDisabled:i=!1,zoneTabIndex:s=0,dropFromOthersDisabled:l=!1,dropTargetStyle:c=kn,dropTargetClasses:d=[],autoAriaDisabled:u=!1}){var h,f;n.items=[...t],n.dragDisabled=i,n.dropFromOthersDisabled=l,n.zoneTabIndex=s,n.dropTargetStyle=c,n.dropTargetClasses=d,n.autoAriaDisabled=u,u||(e.setAttribute("aria-disabled",i),e.setAttribute("role","list"),e.setAttribute("aria-describedby",i?Ln.DND_ZONE_DRAG_DISABLED:Ln.DND_ZONE_ACTIVE)),n.type&&a!==n.type&&Rn(e,n.type),n.type=a,h=e,f=a,0===Bn.size&&(window.addEventListener("keydown",jn),window.addEventListener("click",_n)),Bn.has(f)||Bn.set(f,new Set),Bn.get(f).has(h)||(Bn.get(f).add(h),ft()),On.set(e,n),e.tabIndex=Sn?e===Cn||An.contains(e)||n.dropFromOthersDisabled||Cn&&n.type!==On.get(Cn).type?-1:0:n.zoneTabIndex,e.addEventListener("focus",Vn);for(let t=0;t{s(e)},destroy:()=>{Rn(e,n.type),On.delete(e),Nn.delete(e)}};return Nn.set(e,l),l}(e,t);return{update:e=>{Wn(e),n.update(e),a.update(e)},destroy:()=>{n.destroy(),a.destroy()}}}function Wn(e){const{items:t,flipDurationMs:n,type:a,dragDisabled:r,morphDisabled:i,dropFromOthersDisabled:o,zoneTabIndex:s,dropTargetStyle:l,dropTargetClasses:c,transformDraggedElement:d,autoAriaDisabled:u,centreDraggedOnCursor:h,...f}=e;if(Object.keys(f).length>0&&console.warn("dndzone will ignore unknown options",f),!t)throw new Error("no 'items' key provided to dndzone");const p=t.find((e=>!{}.hasOwnProperty.call(e,ut)));if(p)throw new Error(`missing 'id' property for item ${Tt(p)}`);if(c&&!Array.isArray(c))throw new Error(`dropTargetClasses should be an array but instead it is a ${typeof c}, ${Tt(c)}`);if(s&&(m=s,isNaN(m)||(0|(g=parseFloat(m)))!==g))throw new Error(`zoneTabIndex should be a number but instead it is a ${typeof s}, ${Tt(s)}`);var m,g}function Un(e){R(e,"svelte-lbt0gy",".add-new.svelte-lbt0gy{padding-top:0.75rem;padding-bottom:0.75rem;display:flex;width:100%}")}const zn=e=>({}),Yn=e=>({});function Zn(e){let t,n,a,r,i,o,s,l,c,d,u,h,f;const p=e[6]["pre-add"],m=E(p,e,e[5],Yn),g=e[6].default,y=E(g,e,e[5],null);return{c(){t=H("details"),n=H("summary"),a=H("h4"),r=U(e[0]),i=z(),m&&m.c(),o=z(),s=H("div"),c=z(),d=H("div"),y&&y.c(),K(s,"class","add-new svelte-lbt0gy"),K(d,"class","fantasy-calendar-container"),t.open=e[1]},m(p,g){V(p,t,g),L(t,n),L(n,a),L(a,r),L(t,i),m&&m.m(t,null),L(t,o),L(t,s),L(t,c),L(t,d),y&&y.m(d,null),u=!0,h||(f=M(l=e[2].call(null,s)),h=!0)},p(e,[n]){(!u||1&n)&&J(r,e[0]),m&&m.p&&(!u||32&n)&&T(m,p,e,e[5],u?A(p,e[5],n,zn):S(e[5]),Yn),y&&y.p&&(!u||32&n)&&T(y,g,e,e[5],u?A(g,e[5],n,null):S(e[5]),null),(!u||2&n)&&(t.open=e[1])},i(e){u||(Ne(m,e),Ne(y,e),u=!0)},o(e){Oe(m,e),Oe(y,e),u=!1},d(e){e&&P(t),m&&m.d(e),y&&y.d(e),h=!1,f()}}}function Kn(n,a,r){let{$$slots:i={},$$scope:o}=a;const s=he();let l,{label:c}=a,{open:d=!1}=a,{disabled:u=!1}=a;return n.$$set=e=>{"label"in e&&r(0,c=e.label),"open"in e&&r(1,d=e.open),"disabled"in e&&r(3,u=e.disabled),"$$scope"in e&&r(5,o=e.$$scope)},n.$$.update=()=>{24&n.$$.dirty&&l&&l.setDisabled(u)},[c,d,n=>{r(4,l=new t.ButtonComponent(n).setTooltip("Add New").setButtonText("+").setDisabled(u).onClick((()=>e(void 0,void 0,void 0,(function*(){s("new-item")}))))),r(4,l.buttonEl.style.width="100%",l)},u,l,o,i]}const Qn=class extends Ge{constructor(e){super(),Pe(this,e,Kn,Zn,D,{label:0,open:1,disabled:3},Un)}};function Jn(e){R(e,"svelte-1xaj2n2",".overflow.svelte-1xaj2n2.svelte-1xaj2n2{padding-top:0.75rem}.weekday.svelte-1xaj2n2.svelte-1xaj2n2{display:grid;grid-template-columns:auto 1fr auto;align-items:center;justify-content:space-between;gap:1rem}.weekday.svelte-1xaj2n2 .icon.svelte-1xaj2n2{align-items:center}.weekday.svelte-1xaj2n2.svelte-1xaj2n2{margin-top:0.5rem}")}function Xn(e,t,n){const a=e.slice();return a[17]=t[n],a}function ea(e,t,n){const a=e.slice();return a[14]=t[n],a[16]=n,a}function ta(e){let t,n,a,r,i=[],o=new Map,s=e[2];const l=e=>e[17].id;for(let t=0;tCreate a new weekday to see it here.",K(t,"class","existing-items")},m(e,n){V(e,t,n)},p:g,d(e){e&&P(t)}}}function aa(e,t){let n,a,r,i,o,s,l,c,d,u,h,f,p,m=g;return{key:e,first:null,c(){n=H("div"),a=H("div"),i=z(),o=H("div"),l=z(),c=H("div"),u=z(),K(a,"class","icon svelte-1xaj2n2"),K(c,"class","icon svelte-1xaj2n2"),K(n,"class","weekday svelte-1xaj2n2"),this.first=n},m(e,h){V(e,n,h),L(n,a),L(n,i),L(n,o),L(n,l),L(n,c),L(n,u),f||(p=[M(r=t[5].call(null,a)),Z(a,"mousedown",t[9]),Z(a,"touchstart",t[9]),M(s=t[7].call(null,o,t[17])),M(d=t[6].call(null,c,t[17]))],f=!0)},p(e,n){t=e,s&&x(s.update)&&4&n&&s.update.call(null,t[17]),d&&x(d.update)&&4&n&&d.update.call(null,t[17])},r(){h=n.getBoundingClientRect()},f(){le(n),m()},a(){m(),m=se(n,h,We,{duration:ca})},d(e){e&&P(n),f=!1,w(p)}}}function ra(e){let t;function n(e,t){return e[2].length?ta:na}let a=n(e),r=a(e);return{c(){r.c(),t=Y()},m(e,n){r.m(e,n),V(e,t,n)},p(e,i){a===(a=n(e))&&r?r.p(e,i):(r.d(1),r=a(e),r&&(r.c(),r.m(t.parentNode,t)))},d(e){r.d(e),e&&P(t)}}}function ia(e){let t,n,a,r,i,o,s,l,c,d=e[2],u=[];for(let t=0;tFirst Day \n
This only effects which day of the week the first\n year starts on.
',r=z(),i=H("div"),o=H("select");for(let e=0;ee[12].call(o))),K(i,"class","setting-item-control"),K(n,"class","setting-item"),K(t,"class","first-weekday")},m(s,d){V(s,t,d),L(t,n),L(n,a),L(n,r),L(n,i),L(i,o);for(let e=0;e{"firstWeekday"in e&&a(0,r=e.firstWeekday),"overflow"in e&&a(1,i=e.overflow),"weekdays"in e&&a(2,l=e.weekdays)},e.$$.update=()=>{4&e.$$.dirty&&s("weekday-update",l),1&e.$$.dirty&&s("first-weekday-update",r),2&e.$$.dirty&&s("overflow-update",i)},[r,i,l,o,()=>{a(2,l=[...l,{type:"day",name:null,id:c()}])},e=>{(0,t.setIcon)(e,"fantasy-calendar-grip")},(e,n)=>{new t.ExtraButtonComponent(e).setIcon("trash").onClick((()=>a(2,l=l.filter((e=>e.id!==n.id)))))},(e,n)=>{new t.TextComponent(e).setValue(n.name).setPlaceholder("Name").onChange((e=>{n.name=e,s("weekday-update",l),a(2,l)})).inputEl.setAttr("style","width: 100%;")},e=>{new t.Setting(e).setName("Overflow Weeks").setDesc("Turn this off to make each month start on the first of the week.").addToggle((e=>{e.setValue(i).onChange((e=>{a(1,i=e)}))}))},function(e){e.preventDefault(),a(3,o=!1)},function(e){const{items:t,info:{source:n,trigger:r}}=e.detail;a(2,l=t),n===lt&&r===ot&&a(3,o=!0)},function(e){const{items:t,info:{source:n}}=e.detail;a(2,l=t),n===st&&a(3,o=!0)},function(){r=ne(this),a(0,r)}]}const ua=class extends Ge{constructor(e){super(),Pe(this,e,da,la,D,{firstWeekday:0,overflow:1,weekdays:2},Jn)}};function ha(e){R(e,"svelte-1nt6wkb",".month.svelte-1nt6wkb.svelte-1nt6wkb{display:grid;grid-template-columns:1fr 1fr auto auto;align-items:center;justify-content:space-between;gap:1rem}.month.svelte-1nt6wkb .icon.svelte-1nt6wkb{align-items:center}")}function fa(e){let t,n,a,r,i,o,s,l,c,d,u,h,f;return{c(){t=H("div"),n=H("input"),a=z(),r=H("input"),i=z(),o=H("select"),s=H("option"),s.textContent="Month",l=H("option"),l.textContent="Intercalary",c=z(),d=H("div"),K(n,"type","text"),K(n,"spellcheck","false"),K(n,"placeholder","Name"),ee(n,"width","100%"),K(r,"type","number"),K(r,"spellcheck","false"),K(r,"placeholder","Length"),ee(r,"width","100%"),K(r,"min","0"),s.__value="month",s.value=s.__value,l.__value="intercalary",l.value=l.__value,K(o,"class","dropdown"),void 0===e[0]&&Ee((()=>e[8].call(o))),K(d,"class","icon svelte-1nt6wkb"),K(t,"class","month svelte-1nt6wkb")},m(p,m){V(p,t,m),L(t,n),X(n,e[1]),L(t,a),L(t,r),X(r,e[2]),L(t,i),L(t,o),L(o,s),L(o,l),te(o,e[0]),L(t,c),L(t,d),h||(f=[Z(n,"input",e[6]),Z(n,"input",e[4]),Z(r,"input",e[7]),Z(r,"input",e[4]),Z(o,"change",e[8]),Z(o,"input",e[4]),M(u=e[3].call(null,d))],h=!0)},p(e,[t]){2&t&&n.value!==e[1]&&X(n,e[1]),4&t&&Q(r.value)!==e[2]&&X(r,e[2]),1&t&&te(o,e[0])},i:g,o:g,d(e){e&&P(t),h=!1,w(f)}}}function pa(e,n,a){const r=he();let{month:i}=n,o=i.name,s=i.type,l=i.length;const c=(0,t.debounce)((()=>{a(5,i.name=o,i),a(5,i.type=s,i),a(5,i.length=l,i),r("month-update")}),300,!0);return e.$$set=e=>{"month"in e&&a(5,i=e.month)},e.$$.update=()=>{1&e.$$.dirty&&a(5,i.type=s,i)},[s,o,l,e=>{new t.ExtraButtonComponent(e).setIcon("trash").onClick((()=>{r("month-delete")}))},c,i,function(){o=this.value,a(1,o)},function(){l=Q(this.value),a(2,l)},function(){s=ne(this),a(0,s)}]}const ma=class extends Ge{constructor(e){super(),Pe(this,e,pa,fa,D,{month:5},ha)}};function ga(e){R(e,"svelte-xv4vbj",".month.svelte-xv4vbj{display:flex;align-items:center;margin-top:0.5rem;gap:1rem}")}function ya(e,t,n){const a=e.slice();return a[12]=t[n],a}function va(e){let t,n,a,r,i,o=[],s=new Map,l=e[0];const c=e=>e[12].id;for(let t=0;tCreate a new month to see it here.",K(t,"class","existing-items")},m(e,n){V(e,t,n)},p:g,i:g,o:g,d(e){e&&P(t)}}}function wa(e,t){let n,a,r,i,o,s,l,c,d,u,h=g;return o=new ma({props:{month:t[12]}}),o.$on("mousedown",t[5]),o.$on("month-delete",(function(){return t[9](t[12])})),o.$on("month-update",t[10]),{key:e,first:null,c(){n=H("div"),a=H("div"),i=z(),je(o.$$.fragment),s=z(),K(a,"class","icon"),K(n,"class","month svelte-xv4vbj"),this.first=n},m(e,l){V(e,n,l),L(n,a),L(n,i),_e(o,n,null),L(n,s),c=!0,d||(u=[M(r=t[4].call(null,a)),Z(a,"mousedown",t[5]),Z(a,"touchstart",t[5])],d=!0)},p(e,n){t=e;const a={};1&n&&(a.month=t[12]),o.$set(a)},r(){l=n.getBoundingClientRect()},f(){le(n),h()},a(){h(),h=se(n,l,We,{duration:ka})},i(e){c||(Ne(o.$$.fragment,e),c=!0)},o(e){Oe(o.$$.fragment,e),c=!1},d(e){e&&P(n),Ve(o),d=!1,w(u)}}}function xa(e){let t,n,a,r;const i=[ba,va],o=[];function s(e,t){return e[0].length?1:0}return t=s(e),n=o[t]=i[t](e),{c(){n.c(),a=Y()},m(e,n){o[t].m(e,n),V(e,a,n),r=!0},p(e,r){let l=t;t=s(e),t===l?o[t].p(e,r):(Ie(),Oe(o[l],1,1,(()=>{o[l]=null})),Fe(),n=o[t],n?n.p(e,r):(n=o[t]=i[t](e),n.c()),Ne(n,1),n.m(a.parentNode,a))},i(e){r||(Ne(n),r=!0)},o(e){Oe(n),r=!1},d(e){o[t].d(e),e&&P(a)}}}function Da(e){let t,n;return t=new Qn({props:{label:"Months",$$slots:{default:[xa]},$$scope:{ctx:e}}}),t.$on("new-item",e[2]),{c(){je(t.$$.fragment)},m(e,a){_e(t,e,a),n=!0},p(e,[n]){const a={};32771&n&&(a.$$scope={dirty:n,ctx:e}),t.$set(a)},i(e){n||(Ne(t.$$.fragment,e),n=!0)},o(e){Oe(t.$$.fragment,e),n=!1},d(e){Ve(t,e)}}}const ka=300;function Ea(e,n,a){const r=e=>{a(0,s=s.filter((t=>t.id!=e.id))),o("month-update",s)};let i=!1;const o=he();let{months:s=[]}=n;return e.$$set=e=>{"months"in e&&a(0,s=e.months)},[s,i,()=>{a(0,s=[...s,{type:"month",name:null,length:null,id:c()}]),o("month-update",s)},r,e=>{(0,t.setIcon)(e,"fantasy-calendar-grip")},function(e){e.preventDefault(),a(1,i=!1)},function(e){const{items:t,info:{source:n,trigger:r}}=e.detail;a(0,s=t),n===lt&&r===ot&&a(1,i=!0)},function(e){const{items:t,info:{source:n}}=e.detail;a(0,s=t),o("month-update",s),n===st&&a(1,i=!0)},o,e=>r(e),()=>o("month-update",s)]}const Ca=class extends Ge{constructor(e){super(),Pe(this,e,Ea,Da,D,{months:0},ga)}};function Aa(e){R(e,"svelte-1ldxqlp",".dot.svelte-1ldxqlp{display:inline-block;height:0.875em;width:0.875em;margin:0 1px}")}function Ta(e){let t,n;return{c(){t=W("svg"),n=W("circle"),K(n,"stroke",e[0]),K(n,"fill",e[0]),K(n,"cx","3"),K(n,"cy","3"),K(n,"r","2"),K(t,"class","dot svelte-1ldxqlp"),K(t,"viewBox","0 0 6 6"),K(t,"xmlns","http://www.w3.org/2000/svg"),K(t,"aria-label",e[1])},m(e,a){V(e,t,a),L(t,n)},p(e,[a]){1&a&&K(n,"stroke",e[0]),1&a&&K(n,"fill",e[0]),2&a&&K(t,"aria-label",e[1])},i:g,o:g,d(e){e&&P(t)}}}function Sa(e,t,n){let{color:a}=t,{label:r}=t;return e.$$set=e=>{"color"in e&&n(0,a=e.color),"label"in e&&n(1,r=e.label)},[a,r]}const $a=class extends Ge{constructor(e){super(),Pe(this,e,Sa,Ta,D,{color:0,label:1},Aa)}};function Ma(e){R(e,"svelte-3snb0d",".event.svelte-3snb0d.svelte-3snb0d{display:grid;grid-template-columns:1fr auto;align-items:center;justify-content:space-between;gap:1rem;margin-top:0.5rem}.event-info.svelte-3snb0d.svelte-3snb0d{width:100%}.icons.svelte-3snb0d.svelte-3snb0d{display:flex;align-self:flex-start;justify-self:flex-end;align-items:center}.event.svelte-3snb0d .icon.svelte-3snb0d{align-items:center}.date.svelte-3snb0d.svelte-3snb0d{display:flex;justify-content:flex-start;gap:0.25rem}.clamp.svelte-3snb0d.svelte-3snb0d{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;word-break:keep-all;overflow:hidden;width:calc(var(--event-max-width) * 0.75)}")}function qa(e){let t,n;return t=new $a({props:{color:e[1].color,label:e[1].name}}),{c(){je(t.$$.fragment)},m(e,a){_e(t,e,a),n=!0},p(e,n){const a={};2&n&&(a.color=e[1].color),2&n&&(a.label=e[1].name),t.$set(a)},i(e){n||(Ne(t.$$.fragment,e),n=!0)},o(e){Oe(t.$$.fragment,e),n=!1},d(e){Ve(t,e)}}}function Ia(e){let t,n,a,r,i,o,s,l,c,d,u,h,f,p,m,g,y,v,b,x,D,k,E=e[0].name+"",C=(e[0].description??"")+"",A=null!=e[1]&&qa(e);return{c(){t=H("div"),n=H("div"),a=H("span"),A&&A.c(),r=z(),i=U(E),o=z(),s=H("div"),l=H("div"),c=U(e[2]),d=z(),u=H("span"),h=U(C),f=z(),p=H("div"),m=H("div"),y=z(),v=H("div"),K(a,"class","setting-item-name"),K(l,"class","date svelte-3snb0d"),K(u,"class","clamp svelte-3snb0d"),K(s,"class","setting-item-description"),K(n,"class","event-info svelte-3snb0d"),K(m,"class","icon svelte-3snb0d"),K(v,"class","icon svelte-3snb0d"),K(p,"class","icons svelte-3snb0d"),K(t,"class","event svelte-3snb0d")},m(w,E){V(w,t,E),L(t,n),L(n,a),A&&A.m(a,null),L(a,r),L(a,i),L(n,o),L(n,s),L(s,l),L(l,c),L(s,d),L(s,u),L(u,h),L(t,f),L(t,p),L(p,m),L(p,y),L(p,v),x=!0,D||(k=[M(g=e[5].call(null,m)),Z(m,"click",e[6]),M(b=e[4].call(null,v)),Z(v,"click",e[7])],D=!0)},p(e,[t]){null!=e[1]?A?(A.p(e,t),2&t&&Ne(A,1)):(A=qa(e),A.c(),Ne(A,1),A.m(a,r)):A&&(Ie(),Oe(A,1,1,(()=>{A=null})),Fe()),(!x||1&t)&&E!==(E=e[0].name+"")&&J(i,E),(!x||4&t)&&J(c,e[2]),(!x||1&t)&&C!==(C=(e[0].description??"")+"")&&J(h,C)},i(e){x||(Ne(A),x=!0)},o(e){Oe(A),x=!1},d(e){e&&P(t),A&&A.d(),D=!1,w(k)}}}function Fa(e,n,a){const r=he();let{event:i}=n,{category:o}=n,{date:s}=n;return e.$$set=e=>{"event"in e&&a(0,i=e.event),"category"in e&&a(1,o=e.category),"date"in e&&a(2,s=e.date)},[i,o,s,r,e=>{new t.ExtraButtonComponent(e).setIcon("trash").setTooltip("Delete").extraSettingsEl.setAttr("style","margin-left: 0;")},e=>{new t.ExtraButtonComponent(e).setIcon("pencil").setTooltip("Edit")},()=>r("edit"),()=>r("delete")]}const Na=class extends Ge{constructor(e){super(),Pe(this,e,Fa,Ia,D,{event:0,category:1,date:2},Ma)}};function Oa(e,t,n){const a=e.slice();return a[10]=t[n],a}function Ba(e){let t,n,a=e[0],r=[];for(let t=0;tOe(r[e],1,1,(()=>{r[e]=null}));return{c(){t=H("div");for(let e=0;eCreate a new event to see it here.",K(t,"class","existing-items")},m(e,n){V(e,t,n)},p:g,i:g,o:g,d(e){e&&P(t)}}}function Ra(e){let t,n;return t=new Na({props:{event:e[10],category:e[4](e[10].category),date:h(e[10].date,e[1],e[10].end)}}),t.$on("edit",(function(){return e[6](e[10])})),t.$on("delete",(function(){return e[7](e[10])})),{c(){je(t.$$.fragment)},m(e,a){_e(t,e,a),n=!0},p(n,a){e=n;const r={};1&a&&(r.event=e[10]),1&a&&(r.category=e[4](e[10].category)),3&a&&(r.date=h(e[10].date,e[1],e[10].end)),t.$set(r)},i(e){n||(Ne(t.$$.fragment,e),n=!0)},o(e){Oe(t.$$.fragment,e),n=!1},d(e){Ve(t,e)}}}function ja(e){let t,n,a,r;const i=[La,Ba],o=[];function s(e,t){return e[0].length?1:0}return t=s(e),n=o[t]=i[t](e),{c(){n.c(),a=Y()},m(e,n){o[t].m(e,n),V(e,a,n),r=!0},p(e,r){let l=t;t=s(e),t===l?o[t].p(e,r):(Ie(),Oe(o[l],1,1,(()=>{o[l]=null})),Fe(),n=o[t],n?n.p(e,r):(n=o[t]=i[t](e),n.c()),Ne(n,1),n.m(a.parentNode,a))},i(e){r||(Ne(n),r=!0)},o(e){Oe(n),r=!1},d(e){o[t].d(e),e&&P(a)}}}function _a(e){let t,n;return t=new Qn({props:{label:"Event",$$slots:{default:[ja]},$$scope:{ctx:e}}}),t.$on("new-item",e[8]),{c(){je(t.$$.fragment)},m(e,a){_e(t,e,a),n=!0},p(e,[n]){const a={};8195&n&&(a.$$scope={dirty:n,ctx:e}),t.$set(a)},i(e){n||(Ne(t.$$.fragment,e),n=!0)},o(e){Oe(t.$$.fragment,e),n=!1},d(e){Ve(t,e)}}}function Va(e,t,n){let{categories:a=[]}=t,{events:r=[]}=t,{months:i=[]}=t;const o=he(),s=e=>{o("new-item",e)},l=e=>{n(0,r=r.filter((t=>t.id!==e.id))),o("edit-events",r)};return e.$$set=e=>{"categories"in e&&n(5,a=e.categories),"events"in e&&n(0,r=e.events),"months"in e&&n(1,i=e.months)},e.$$.update=()=>{1&e.$$.dirty&&r.sort(((e,t)=>e.date.year!=t.date.year?e.date.year-t.date.year:e.date.month!=t.date.month?e.date.month-t.date.month:e.date.day-t.date.day))},[r,i,s,l,e=>a.find((({id:t})=>t==e)),a,e=>s(e),e=>l(e),function(t){me.call(this,e,t)}]}const Pa=class extends Ge{constructor(e){super(),Pe(this,e,Va,_a,D,{categories:5,events:0,months:1})}},Ga="#808080",Ha=["M6.5,16a9.5,9.5 0 1,0 19,0a9.5,9.5 0 1,0 -19,0","M19.79,6C22.25,7.2,25,9.92,25,16s-2.75,8.8-5.21,10a10.59,10.59,0,0,1-3.79.71A10.72,10.72,0,0,1,16,5.28,10.59,10.59,0,0,1,19.79,6Z","M19.43,5.86C21.79,7,24.5,9.7,24.5,16s-2.71,9-5.07,10.14a10.55,10.55,0,0,1-3.43.58A10.72,10.72,0,0,1,16,5.28,10.55,10.55,0,0,1,19.43,5.86Z","M17.87,5.46C20.23,6.34,24,8.88,24,16.17c0,6.85-3.33,9.36-5.69,10.29a11,11,0,0,1-2.31.26A10.72,10.72,0,0,1,16,5.28,10.49,10.49,0,0,1,17.87,5.46Z","M17.79,5.45C20,6.3,23.5,8.77,23.5,15.88c0,7.37-3.75,9.87-5.95,10.71a9.92,9.92,0,0,1-1.55.13A10.72,10.72,0,0,1,16,5.28,10.54,10.54,0,0,1,17.79,5.45Z","M17.35,5.38c1.9.79,5.15,3.25,5.15,10.72,0,7.25-3.06,9.68-5,10.5a10.87,10.87,0,0,1-1.52.12A10.72,10.72,0,0,1,16,5.28,10.1,10.1,0,0,1,17.35,5.38Z","M17.05,5.34c1.6.75,4.45,3.17,4.45,10.79,0,7.39-2.68,9.76-4.3,10.52a11.9,11.9,0,0,1-1.2.07A10.72,10.72,0,0,1,16,5.28,9,9,0,0,1,17.05,5.34Z","M16.85,5.33c1.3.74,3.65,3.12,3.65,10.67s-2.35,9.93-3.65,10.67c-.28,0-.56,0-.85,0A10.72,10.72,0,0,1,16,5.28,7.92,7.92,0,0,1,16.85,5.33Z","M16.46,5.31c.95.78,3,3.34,3,10.69s-2.09,9.91-3,10.69l-.46,0A10.72,10.72,0,0,1,16,5.28Z","M16.29,5.3c.65.8,2.21,3.48,2.21,10.78S17,25.91,16.3,26.7l-.3,0A10.72,10.72,0,0,1,16,5.28Z","M16.13,5.29c.37.89,1.37,3.92,1.37,10.79s-1,9.76-1.36,10.63H16A10.72,10.72,0,0,1,16,5.28Z","M16,5.29A85.5,85.5,0,0,1,16.5,16,85.5,85.5,0,0,1,16,26.71h0A10.72,10.72,0,0,1,16,5.28Z","M16,26.72A10.72,10.72,0,0,1,16,5.28Z","M15.5,16A85.59,85.59,0,0,0,16,26.72,10.72,10.72,0,0,1,16,5.28,85.59,85.59,0,0,0,15.5,16Z","M14.5,16.08c0,6.84,1,9.77,1.36,10.63a10.71,10.71,0,0,1,0-21.42C15.5,6.17,14.5,9.2,14.5,16.08Z","M15.7,26.7a10.7,10.7,0,0,1,0-21.4c-.65.8-2.21,3.47-2.21,10.78S15,25.92,15.7,26.7Z","M15.55,26.7a10.71,10.71,0,0,1,0-21.4c-1,.78-3.05,3.34-3.05,10.7S14.6,25.92,15.55,26.7Z","M15.16,26.68a10.71,10.71,0,0,1,0-21.36C13.85,6.06,11.5,8.43,11.5,16S13.85,25.94,15.16,26.68Z","M14.81,26.65A10.72,10.72,0,0,1,15,5.33c-1.59.76-4.45,3.17-4.45,10.8C10.5,23.53,13.19,25.9,14.81,26.65Z","M14.49,26.6a10.71,10.71,0,0,1,.17-21.23c-1.9.8-5.16,3.24-5.16,10.73C9.5,23.37,12.57,25.79,14.49,26.6Z","M14.46,26.6a10.71,10.71,0,0,1-.24-21.16C12,6.29,8.5,8.76,8.5,15.88,8.5,23.26,12.27,25.76,14.46,26.6Z","M13.72,26.47a10.71,10.71,0,0,1,.43-21C11.78,6.33,8,8.87,8,16.17,8,23,11.35,25.55,13.72,26.47Z","M12.6,26.19a10.73,10.73,0,0,1,0-20.35C10.23,7,7.5,9.67,7.5,16s2.73,9,5.1,10.16Z","M12.23,26a10.7,10.7,0,0,1,0-20C9.77,7.19,7,9.9,7,16S9.77,24.81,12.23,26Z",null,"M19.77,26C22.23,24.81,25,22.1,25,16S22.23,7.19,19.77,6a10.7,10.7,0,0,1,0,20Z","M19.4,26.16C21.77,25,24.5,22.33,24.5,16S21.77,7,19.4,5.84a10.71,10.71,0,0,1,0,20.32Z","M18.28,26.47C20.65,25.55,24,23,24,16.17c0-7.3-3.78-9.84-6.15-10.72a10.71,10.71,0,0,1,.43,21Z","M17.54,26.6c2.19-.84,6-3.34,6-10.72,0-7.12-3.5-9.59-5.72-10.44a10.71,10.71,0,0,1-.24,21.16Z","M17.51,26.6c1.92-.81,5-3.23,5-10.5,0-7.49-3.26-9.93-5.16-10.73a10.71,10.71,0,0,1,.17,21.23Z","M17.19,26.65c1.62-.75,4.31-3.12,4.31-10.52,0-7.63-2.86-10-4.45-10.8a10.72,10.72,0,0,1,.14,21.32Z","M16.84,26.68c1.31-.74,3.66-3.11,3.66-10.68S18.15,6.06,16.84,5.32a10.71,10.71,0,0,1,0,21.36Z","M16.45,26.7c.95-.78,3.05-3.34,3.05-10.7S17.4,6.08,16.45,5.3a10.71,10.71,0,0,1,0,21.4Z","M16.3,26.7c.67-.78,2.2-3.37,2.2-10.62S16.94,6.1,16.29,5.3a10.7,10.7,0,0,1,0,21.4Z","M16.14,26.71c.37-.86,1.36-3.79,1.36-10.63s-1-9.91-1.37-10.79a10.71,10.71,0,0,1,0,21.42Z","M16,26.72A85.59,85.59,0,0,0,16.5,16,85.59,85.59,0,0,0,16,5.28a10.72,10.72,0,0,1,0,21.44Z","M16,26.72V5.28a10.72,10.72,0,0,1,0,21.44Z","M16,26.72h0A85.59,85.59,0,0,1,15.5,16,85.59,85.59,0,0,1,16,5.28h0a10.72,10.72,0,0,1,0,21.44Z","M16,26.72h-.14c-.37-.86-1.36-3.79-1.36-10.63s1-9.91,1.37-10.79H16a10.72,10.72,0,0,1,0,21.44Z","M16,26.72l-.3,0c-.67-.78-2.2-3.37-2.2-10.62s1.56-10,2.21-10.78l.29,0a10.72,10.72,0,0,1,0,21.44Z","M16,26.72l-.45,0c-1-.78-3.05-3.34-3.05-10.7s2.1-9.92,3.05-10.7l.45,0a10.72,10.72,0,0,1,0,21.44Z","M16,26.72c-.28,0-.56,0-.84,0C13.85,25.94,11.5,23.57,11.5,16s2.35-9.94,3.66-10.68c.28,0,.56,0,.84,0a10.72,10.72,0,0,1,0,21.44Z","M16,26.72a11.7,11.7,0,0,1-1.19-.07c-1.62-.75-4.31-3.12-4.31-10.52,0-7.63,2.86-10,4.45-10.8.35,0,.7,0,1.05,0a10.72,10.72,0,0,1,0,21.44Z","M16,26.72a10.85,10.85,0,0,1-1.51-.12c-1.92-.81-5-3.23-5-10.5,0-7.49,3.26-9.93,5.16-10.73A11.9,11.9,0,0,1,16,5.28a10.72,10.72,0,0,1,0,21.44Z","M16,26.72a11.16,11.16,0,0,1-1.54-.12c-2.19-.84-6-3.34-6-10.72,0-7.12,3.5-9.59,5.72-10.44A10.43,10.43,0,0,1,16,5.28a10.72,10.72,0,0,1,0,21.44Z","M16,26.72a10.69,10.69,0,0,1-2.28-.25C11.35,25.55,8,23,8,16.17c0-7.3,3.78-9.84,6.15-10.72A11.26,11.26,0,0,1,16,5.28a10.72,10.72,0,0,1,0,21.44Z","M16,26.72a10.63,10.63,0,0,1-3.4-.56C10.23,25,7.5,22.33,7.5,16s2.73-9,5.1-10.16A10.72,10.72,0,1,1,16,26.72Z","M16,26.72a10.52,10.52,0,0,1-3.77-.7C9.77,24.81,7,22.1,7,16S9.77,7.19,12.23,6A10.52,10.52,0,0,1,16,5.28a10.72,10.72,0,0,1,0,21.44Z"],Wa={"New Moon":Ha[0],"New Moon Fading":Ha[1],"New Moon Faded":Ha[2],"Waxing Crescent Rising":Ha[3],"Waxing Crescent Risen":Ha[4],"Waxing Crescent":Ha[6],"Waxing Crescent Fading":Ha[7],"Waxing Crescent Faded":Ha[8],"First Quarter Rising":Ha[9],"First Quarter Risen":Ha[10],"First Quarter":Ha[12],"First Quarter Fading":Ha[13],"First Quarter Faded":Ha[14],"Waxing Gibbous Rising":Ha[15],"Waxing Gibbous Risen":Ha[16],"Waxing Gibbous":Ha[18],"Waxing Gibbous Fading":Ha[19],"Waxing Gibbous Faded":Ha[20],"Full Moon Rising":Ha[21],"Full Moon Risen":Ha[22],"Full Moon":Ha[24],"Full Moon Fading":Ha[25],"Full Moon Faded":Ha[26],"Waning Gibbous Rising":Ha[27],"Waning Gibbous Risen":Ha[28],"Waning Gibbous":Ha[30],"Waning Gibbous Fading":Ha[31],"Waning Gibbous Faded":Ha[32],"Last Quarter Rising":Ha[33],"Last Quarter Risen":Ha[34],"Last Quarter":Ha[36],"Last Quarter Fading":Ha[37],"Last Quarter Faded":Ha[38],"Waning Crescent Rising":Ha[39],"Waning Crescent Risen":Ha[40],"Waning Crescent":Ha[42],"Waning Crescent Fading":Ha[43],"Waning Crescent Faded":Ha[44],"New Moon Rising":Ha[45],"New Moon Risen":Ha[46]},Ua={4:["New Moon","First Quarter","Full Moon","Last Quarter"],8:["New Moon","Waxing Crescent","First Quarter","Waxing Gibbous","Full Moon","Waning Gibbous","Last Quarter","Waning Crescent"],16:["New Moon","New Moon Fading","Waxing Crescent","Waxing Crescent Fading","First Quarter","First Quarter Fading","Waxing Gibbous","Waxing Gibbous Fading","Full Moon","Full Moon Fading","Waning Gibbous","Waning Gibbous Fading","Last Quarter","Last Quarter Fading","Waning Crescent","Waning Crescent Fading"],24:["New Moon","New Moon Fading","Waxing Crescent Rising","Waxing Crescent","Waxing Crescent Fading","First Quarter Rising","First Quarter","First Quarter Fading","Waxing Gibbous Rising","Waxing Gibbous","Waxing Gibbous Fading","Full Moon Rising","Full Moon","Full Moon Fading","Waning Gibbous Rising","Waning Gibbous","Waning Gibbous Fading","Last Quarter Rising","Last Quarter","Last Quarter Fading","Waning Crescent Rising","Waning Crescent","Waning Crescent Fading","New Moon Rising"],40:["New Moon","New Moon Fading","New Moon Faded","Waxing Crescent Rising","Waxing Crescent Risen","Waxing Crescent","Waxing Crescent Fading","Waxing Crescent Faded","First Quarter Rising","First Quarter Risen","First Quarter","First Quarter Fading","First Quarter Faded","Waxing Gibbous Rising","Waxing Gibbous Risen","Waxing Gibbous","Waxing Gibbous Fading","Waxing Gibbous Faded","Full Moon Rising","Full Moon Risen","Full Moon","Full Moon Fading","Full Moon Faded","Waning Gibbous Rising","Waning Gibbous Risen","Waning Gibbous","Waning Gibbous Fading","Waning Gibbous Faded","Last Quarter Rising","Last Quarter Risen","Last Quarter","Last Quarter Fading","Last Quarter Faded","Waning Crescent Rising","Waning Crescent Risen","Waning Crescent","Waning Crescent Fading","Waning Crescent Faded","New Moon Rising","New Moon Risen"]};function za(e){R(e,"svelte-1ok7o99",".category.svelte-1ok7o99{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:0.5rem;padding-top:0.75rem}")}function Ya(e,t,n){const a=e.slice();return a[7]=t[n],a}function Za(e){let t,n=e[0],a=[];for(let t=0;tCreate a new category to see it here.",K(t,"class","existing-items")},m(e,n){V(e,t,n)},p:g,d(e){e&&P(t)}}}function Qa(e){let t,n,a,r,i,o,s,l,c,d,u,h,f;function p(...t){return e[5](e[7],...t)}return{c(){t=H("div"),n=H("div"),r=z(),i=H("div"),o=H("input"),l=z(),c=H("div"),u=z(),K(o,"type","color"),o.value=s=e[7].color,K(i,"class","color"),K(t,"class","category svelte-1ok7o99")},m(s,m){V(s,t,m),L(t,n),L(t,r),L(t,i),L(i,o),L(t,l),L(t,c),L(t,u),h||(f=[M(a=e[1].call(null,n,e[7])),Z(o,"change",p),M(d=e[2].call(null,c,e[7]))],h=!0)},p(t,n){e=t,a&&x(a.update)&&1&n&&a.update.call(null,e[7]),1&n&&s!==(s=e[7].color)&&(o.value=s),d&&x(d.update)&&1&n&&d.update.call(null,e[7])},d(e){e&&P(t),h=!1,w(f)}}}function Ja(e){let t;function n(e,t){return e[0].length?Za:Ka}let a=n(e),r=a(e);return{c(){r.c(),t=Y()},m(e,n){r.m(e,n),V(e,t,n)},p(e,i){a===(a=n(e))&&r?r.p(e,i):(r.d(1),r=a(e),r&&(r.c(),r.m(t.parentNode,t)))},d(e){r.d(e),e&&P(t)}}}function Xa(e){let t,n;return t=new Qn({props:{label:"Event Categories",$$slots:{default:[Ja]},$$scope:{ctx:e}}}),t.$on("new-item",e[4]),{c(){je(t.$$.fragment)},m(e,a){_e(t,e,a),n=!0},p(e,[n]){const a={};1025&n&&(a.$$scope={dirty:n,ctx:e}),t.$set(a)},i(e){n||(Ne(t.$$.fragment,e),n=!0)},o(e){Oe(t.$$.fragment,e),n=!1},d(e){Ve(t,e)}}}function er(e,n,a){const r=he();let{categories:i=[]}=n;const o=(e,t)=>{const{target:n}=e;n instanceof HTMLInputElement&&(t.color=n.value,r("update",t))};return e.$$set=e=>{"categories"in e&&a(0,i=e.categories)},[i,(e,n)=>{new t.TextComponent(e).setValue(n.name).setPlaceholder("Name").onChange((e=>{n.name=e,r("update",n)})).inputEl.setAttr("style","width: 100%;")},(e,n)=>{new t.ExtraButtonComponent(e).setIcon("trash").onClick((()=>{a(0,i=i.filter((e=>e.id!==n.id))),r("delete",n)}))},o,()=>{const e={id:c(),color:Ga,name:"Category"};a(0,i),r("new",e)},(e,t)=>o(t,e)]}const tr=class extends Ge{constructor(e){super(),Pe(this,e,er,Xa,D,{categories:0},za)}};function nr(t,n,a={cta:"Yes",secondary:"No"}){return e(this,void 0,void 0,(function*(){return new Promise(((e,r)=>{const i=new ar(t,n,a);i.onClose=()=>{e(i.confirmed)},i.open()}))}))}class ar extends t.Modal{constructor(e,t,n){super(e),this.text=t,this.buttons=n,this.confirmed=!1}display(){return e(this,void 0,void 0,(function*(){new Promise((e=>{this.contentEl.empty(),this.contentEl.addClass("confirm-modal"),this.contentEl.createEl("p",{text:this.text});const n=this.contentEl.createDiv("fantasy-calendar-confirm-buttons");new t.ButtonComponent(n).setButtonText(this.buttons.cta).setCta().onClick((()=>{this.confirmed=!0,this.close()})),new t.ButtonComponent(n).setButtonText(this.buttons.secondary).onClick((()=>{this.close()}))}))}))}onOpen(){this.display()}}function rr(e){R(e,"svelte-1f06yhl",".use-custom.svelte-1f06yhl.svelte-1f06yhl{padding-top:0.75rem}.weekday.svelte-1f06yhl.svelte-1f06yhl{display:grid;grid-template-columns:auto 1fr auto;align-items:center;justify-content:space-between;gap:1rem}.weekday.svelte-1f06yhl .icon.svelte-1f06yhl{align-items:center}.weekday.svelte-1f06yhl.svelte-1f06yhl{margin-top:0.5rem}")}function ir(e,t,n){const a=e.slice();return a[13]=t[n],a}function or(e){let t,n,a,r,i=[],o=new Map,s=e[1];const l=e=>e[13].id;for(let t=0;tCreate a new year to see it here.",K(t,"class","existing-items")},m(e,n){V(e,t,n)},p:g,d(e){e&&P(t)}}}function lr(e,t){let n,a,r,i,o,s,l,c,d,u,h,f,p,m=g;return{key:e,first:null,c(){n=H("div"),a=H("div"),i=z(),o=H("div"),l=z(),c=H("div"),u=z(),K(a,"class","icon svelte-1f06yhl"),K(c,"class","icon svelte-1f06yhl"),K(n,"class","weekday svelte-1f06yhl"),this.first=n},m(e,h){V(e,n,h),L(n,a),L(n,i),L(n,o),L(n,l),L(n,c),L(n,u),f||(p=[M(r=t[4].call(null,a)),Z(a,"mousedown",t[8]),Z(a,"touchstart",t[8]),M(s=t[6].call(null,o,t[13])),M(d=t[5].call(null,c,t[13]))],f=!0)},p(e,n){t=e,s&&x(s.update)&&2&n&&s.update.call(null,t[13]),d&&x(d.update)&&2&n&&d.update.call(null,t[13])},r(){h=n.getBoundingClientRect()},f(){le(n),m()},a(){m(),m=se(n,h,We,{duration:hr})},d(e){e&&P(n),f=!1,w(p)}}}function cr(e){let t;function n(e,t){return e[1]&&e[1].length?or:sr}let a=n(e),r=a(e);return{c(){r.c(),t=Y()},m(e,n){r.m(e,n),V(e,t,n)},p(e,i){a===(a=n(e))&&r?r.p(e,i):(r.d(1),r=a(e),r&&(r.c(),r.m(t.parentNode,t)))},d(e){r.d(e),e&&P(t)}}}function dr(e){let t,n,a,r;return{c(){t=H("div"),K(t,"class","use-custom svelte-1f06yhl")},m(i,o){V(i,t,o),a||(r=M(n=e[7].call(null,t)),a=!0)},d(e){e&&P(t),a=!1,r()}}}function ur(e){let t,n;return t=new Qn({props:{label:"Years",disabled:!e[0],$$slots:{"pre-add":[dr],default:[cr]},$$scope:{ctx:e}}}),t.$on("new-item",e[3]),{c(){je(t.$$.fragment)},m(e,a){_e(t,e,a),n=!0},p(e,[n]){const a={};1&n&&(a.disabled=!e[0]),65542&n&&(a.$$scope={dirty:n,ctx:e}),t.$set(a)},i(e){n||(Ne(t.$$.fragment,e),n=!0)},o(e){Oe(t.$$.fragment,e),n=!1},d(e){Ve(t,e)}}}const hr=300;function fr(n,a,r){let{useCustomYears:i}=a,{years:o}=a,{app:s}=a,l=!1;const d=he();return n.$$set=e=>{"useCustomYears"in e&&r(0,i=e.useCustomYears),"years"in e&&r(1,o=e.years),"app"in e&&r(11,s=e.app)},n.$$.update=()=>{2&n.$$.dirty&&d("years-update",o),1&n.$$.dirty&&d("use-custom-update",i)},[i,o,l,()=>{o||r(1,o=[]),r(1,o=[...o,{name:null,id:c(),type:"year"}])},e=>{(0,t.setIcon)(e,"fantasy-calendar-grip")},(e,n)=>{new t.ExtraButtonComponent(e).setIcon("trash").onClick((()=>r(1,o=o.filter((e=>e.id!==n.id)))))},(e,n)=>{new t.TextComponent(e).setValue(n.name).setPlaceholder("Name").onChange((e=>{n.name=e,d("years-update",o),r(1,o)})).inputEl.setAttr("style","width: 100%;")},n=>{new t.Setting(n).setName("Use Custom Years").setDesc(createFragment((e=>(e.createSpan({text:"Create custom years to display instead of incrementing from 1."}),e.createEl("br"),e.createSpan({text:"If on, "}),e.createEl("strong",{text:"only the years added below will be displayed."}),e)))).addToggle((t=>{let n=!1;t.setValue(i).onChange((a=>e(void 0,void 0,void 0,(function*(){!n&&i&&(null==o?void 0:o.length)?((yield nr(s,"The custom years you have created will be removed. Proceed?"))&&(r(1,o=[]),r(0,i=a),n=!1),n=!0,t.setValue(i)):(n=!1,r(0,i=a))}))))}))},function(e){e.preventDefault(),r(2,l=!1)},function(e){const{items:t,info:{source:n,trigger:a}}=e.detail;r(1,o=t),n===lt&&a===ot&&r(2,l=!0)},function(e){const{items:t,info:{source:n}}=e.detail;r(1,o=t),n===st&&r(2,l=!0)},s]}const pr=class extends Ge{constructor(e){super(),Pe(this,e,fr,ur,D,{useCustomYears:0,years:1,app:11},rr)}};function mr(e,t){void 0===t&&(t=!1);var n=e.getBoundingClientRect();return{width:n.width/1,height:n.height/1,top:n.top/1,right:n.right/1,bottom:n.bottom/1,left:n.left/1,x:n.left/1,y:n.top/1}}function gr(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function yr(e){var t=gr(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function vr(e){return e instanceof gr(e).Element||e instanceof Element}function br(e){return e instanceof gr(e).HTMLElement||e instanceof HTMLElement}function wr(e){return"undefined"!=typeof ShadowRoot&&(e instanceof gr(e).ShadowRoot||e instanceof ShadowRoot)}function xr(e){return e?(e.nodeName||"").toLowerCase():null}function Dr(e){return((vr(e)?e.ownerDocument:e.document)||window.document).documentElement}function kr(e){return mr(Dr(e)).left+yr(e).scrollLeft}function Er(e){return gr(e).getComputedStyle(e)}function Cr(e){var t=Er(e),n=t.overflow,a=t.overflowX,r=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+r+a)}function Ar(e,t,n){void 0===n&&(n=!1);var a,r,i=br(t),o=br(t)&&function(e){var t=e.getBoundingClientRect(),n=t.width/e.offsetWidth||1,a=t.height/e.offsetHeight||1;return 1!==n||1!==a}(t),s=Dr(t),l=mr(e,o),c={scrollLeft:0,scrollTop:0},d={x:0,y:0};return(i||!i&&!n)&&(("body"!==xr(t)||Cr(s))&&(c=(a=t)!==gr(a)&&br(a)?{scrollLeft:(r=a).scrollLeft,scrollTop:r.scrollTop}:yr(a)),br(t)?((d=mr(t,!0)).x+=t.clientLeft,d.y+=t.clientTop):s&&(d.x=kr(s))),{x:l.left+c.scrollLeft-d.x,y:l.top+c.scrollTop-d.y,width:l.width,height:l.height}}function Tr(e){var t=mr(e),n=e.offsetWidth,a=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-a)<=1&&(a=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:a}}function Sr(e){return"html"===xr(e)?e:e.assignedSlot||e.parentNode||(wr(e)?e.host:null)||Dr(e)}function $r(e){return["html","body","#document"].indexOf(xr(e))>=0?e.ownerDocument.body:br(e)&&Cr(e)?e:$r(Sr(e))}function Mr(e,t){var n;void 0===t&&(t=[]);var a=$r(e),r=a===(null==(n=e.ownerDocument)?void 0:n.body),i=gr(a),o=r?[i].concat(i.visualViewport||[],Cr(a)?a:[]):a,s=t.concat(o);return r?s:s.concat(Mr(Sr(o)))}function qr(e){return["table","td","th"].indexOf(xr(e))>=0}function Ir(e){return br(e)&&"fixed"!==Er(e).position?e.offsetParent:null}function Fr(e){for(var t=gr(e),n=Ir(e);n&&qr(n)&&"static"===Er(n).position;)n=Ir(n);return n&&("html"===xr(n)||"body"===xr(n)&&"static"===Er(n).position)?t:n||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&br(e)&&"fixed"===Er(e).position)return null;for(var n=Sr(e);br(n)&&["html","body"].indexOf(xr(n))<0;){var a=Er(n);if("none"!==a.transform||"none"!==a.perspective||"paint"===a.contain||-1!==["transform","perspective"].indexOf(a.willChange)||t&&"filter"===a.willChange||t&&a.filter&&"none"!==a.filter)return n;n=n.parentNode}return null}(e)||t}var Nr="top",Or="bottom",Br="right",Lr="left",Rr="auto",jr=[Nr,Or,Br,Lr],_r="start",Vr="end",Pr="viewport",Gr="popper",Hr=jr.reduce((function(e,t){return e.concat([t+"-"+_r,t+"-"+Vr])}),[]),Wr=[].concat(jr,[Rr]).reduce((function(e,t){return e.concat([t,t+"-"+_r,t+"-"+Vr])}),[]),Ur=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function zr(e){var t=new Map,n=new Set,a=[];function r(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var a=t.get(e);a&&r(a)}})),a.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||r(e)})),a}var Yr={placement:"bottom",modifiers:[],strategy:"absolute"};function Zr(){for(var e=arguments.length,t=new Array(e),n=0;n=0?"x":"y"}function ni(e){var t,n=e.reference,a=e.element,r=e.placement,i=r?Xr(r):null,o=r?ei(r):null,s=n.x+n.width/2-a.width/2,l=n.y+n.height/2-a.height/2;switch(i){case Nr:t={x:s,y:n.y-a.height};break;case Or:t={x:s,y:n.y+n.height};break;case Br:t={x:n.x+n.width,y:l};break;case Lr:t={x:n.x-a.width,y:l};break;default:t={x:n.x,y:n.y}}var c=i?ti(i):null;if(null!=c){var d="y"===c?"height":"width";switch(o){case _r:t[c]=t[c]-(n[d]/2-a[d]/2);break;case Vr:t[c]=t[c]+(n[d]/2-a[d]/2)}}return t}const ai={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=ni({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}};var ri=Math.max,ii=Math.min,oi=Math.round,si={top:"auto",right:"auto",bottom:"auto",left:"auto"};function li(e){var t,n=e.popper,a=e.popperRect,r=e.placement,i=e.variation,o=e.offsets,s=e.position,l=e.gpuAcceleration,c=e.adaptive,d=e.roundOffsets,u=!0===d?function(e){var t=e.x,n=e.y,a=window.devicePixelRatio||1;return{x:oi(oi(t*a)/a)||0,y:oi(oi(n*a)/a)||0}}(o):"function"==typeof d?d(o):o,h=u.x,f=void 0===h?0:h,p=u.y,m=void 0===p?0:p,g=o.hasOwnProperty("x"),y=o.hasOwnProperty("y"),v=Lr,b=Nr,w=window;if(c){var x=Fr(n),D="clientHeight",k="clientWidth";x===gr(n)&&"static"!==Er(x=Dr(n)).position&&"absolute"===s&&(D="scrollHeight",k="scrollWidth"),x=x,r!==Nr&&(r!==Lr&&r!==Br||i!==Vr)||(b=Or,m-=x[D]-a.height,m*=l?1:-1),r!==Lr&&(r!==Nr&&r!==Or||i!==Vr)||(v=Br,f-=x[k]-a.width,f*=l?1:-1)}var E,C=Object.assign({position:s},c&&si);return l?Object.assign({},C,((E={})[b]=y?"0":"",E[v]=g?"0":"",E.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",E)):Object.assign({},C,((t={})[b]=y?m+"px":"",t[v]=g?f+"px":"",t.transform="",t))}var ci={left:"right",right:"left",bottom:"top",top:"bottom"};function di(e){return e.replace(/left|right|bottom|top/g,(function(e){return ci[e]}))}var ui={start:"end",end:"start"};function hi(e){return e.replace(/start|end/g,(function(e){return ui[e]}))}function fi(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&wr(n)){var a=t;do{if(a&&e.isSameNode(a))return!0;a=a.parentNode||a.host}while(a)}return!1}function pi(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function mi(e,t){return t===Pr?pi(function(e){var t=gr(e),n=Dr(e),a=t.visualViewport,r=n.clientWidth,i=n.clientHeight,o=0,s=0;return a&&(r=a.width,i=a.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(o=a.offsetLeft,s=a.offsetTop)),{width:r,height:i,x:o+kr(e),y:s}}(e)):br(t)?function(e){var t=mr(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(t):pi(function(e){var t,n=Dr(e),a=yr(e),r=null==(t=e.ownerDocument)?void 0:t.body,i=ri(n.scrollWidth,n.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),o=ri(n.scrollHeight,n.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),s=-a.scrollLeft+kr(e),l=-a.scrollTop;return"rtl"===Er(r||n).direction&&(s+=ri(n.clientWidth,r?r.clientWidth:0)-i),{width:i,height:o,x:s,y:l}}(Dr(e)))}function gi(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function yi(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function vi(e,t){void 0===t&&(t={});var n=t,a=n.placement,r=void 0===a?e.placement:a,i=n.boundary,o=void 0===i?"clippingParents":i,s=n.rootBoundary,l=void 0===s?Pr:s,c=n.elementContext,d=void 0===c?Gr:c,u=n.altBoundary,h=void 0!==u&&u,f=n.padding,p=void 0===f?0:f,m=gi("number"!=typeof p?p:yi(p,jr)),g=d===Gr?"reference":Gr,y=e.rects.popper,v=e.elements[h?g:d],b=function(e,t,n){var a="clippingParents"===t?function(e){var t=Mr(Sr(e)),n=["absolute","fixed"].indexOf(Er(e).position)>=0&&br(e)?Fr(e):e;return vr(n)?t.filter((function(e){return vr(e)&&fi(e,n)&&"body"!==xr(e)})):[]}(e):[].concat(t),r=[].concat(a,[n]),i=r[0],o=r.reduce((function(t,n){var a=mi(e,n);return t.top=ri(a.top,t.top),t.right=ii(a.right,t.right),t.bottom=ii(a.bottom,t.bottom),t.left=ri(a.left,t.left),t}),mi(e,i));return o.width=o.right-o.left,o.height=o.bottom-o.top,o.x=o.left,o.y=o.top,o}(vr(v)?v:v.contextElement||Dr(e.elements.popper),o,l),w=mr(e.elements.reference),x=ni({reference:w,element:y,strategy:"absolute",placement:r}),D=pi(Object.assign({},y,x)),k=d===Gr?D:w,E={top:b.top-k.top+m.top,bottom:k.bottom-b.bottom+m.bottom,left:b.left-k.left+m.left,right:k.right-b.right+m.right},C=e.modifiersData.offset;if(d===Gr&&C){var A=C[r];Object.keys(E).forEach((function(e){var t=[Br,Or].indexOf(e)>=0?1:-1,n=[Nr,Or].indexOf(e)>=0?"y":"x";E[e]+=A[n]*t}))}return E}const bi={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,a=e.name;if(!t.modifiersData[a]._skip){for(var r=n.mainAxis,i=void 0===r||r,o=n.altAxis,s=void 0===o||o,l=n.fallbackPlacements,c=n.padding,d=n.boundary,u=n.rootBoundary,h=n.altBoundary,f=n.flipVariations,p=void 0===f||f,m=n.allowedAutoPlacements,g=t.options.placement,y=Xr(g),v=l||(y!==g&&p?function(e){if(Xr(e)===Rr)return[];var t=di(e);return[hi(e),t,hi(t)]}(g):[di(g)]),b=[g].concat(v).reduce((function(e,n){return e.concat(Xr(n)===Rr?function(e,t){void 0===t&&(t={});var n=t,a=n.placement,r=n.boundary,i=n.rootBoundary,o=n.padding,s=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?Wr:l,d=ei(a),u=d?s?Hr:Hr.filter((function(e){return ei(e)===d})):jr,h=u.filter((function(e){return c.indexOf(e)>=0}));0===h.length&&(h=u);var f=h.reduce((function(t,n){return t[n]=vi(e,{placement:n,boundary:r,rootBoundary:i,padding:o})[Xr(n)],t}),{});return Object.keys(f).sort((function(e,t){return f[e]-f[t]}))}(t,{placement:n,boundary:d,rootBoundary:u,padding:c,flipVariations:p,allowedAutoPlacements:m}):n)}),[]),w=t.rects.reference,x=t.rects.popper,D=new Map,k=!0,E=b[0],C=0;C=0,M=$?"width":"height",q=vi(t,{placement:A,boundary:d,rootBoundary:u,altBoundary:h,padding:c}),I=$?S?Br:Lr:S?Or:Nr;w[M]>x[M]&&(I=di(I));var F=di(I),N=[];if(i&&N.push(q[T]<=0),s&&N.push(q[I]<=0,q[F]<=0),N.every((function(e){return e}))){E=A,k=!1;break}D.set(A,N)}if(k)for(var O=function(e){var t=b.find((function(t){var n=D.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return E=t,"break"},B=p?3:1;B>0&&"break"!==O(B);B--);t.placement!==E&&(t.modifiersData[a]._skip=!0,t.placement=E,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function wi(e,t,n){return ri(e,ii(t,n))}function xi(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function Di(e){return[Nr,Br,Or,Lr].some((function(t){return e[t]>=0}))}var ki=Kr({defaultModifiers:[Jr,ai,{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,a=n.gpuAcceleration,r=void 0===a||a,i=n.adaptive,o=void 0===i||i,s=n.roundOffsets,l=void 0===s||s,c={placement:Xr(t.placement),variation:ei(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,li(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:o,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,li(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},{name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},a=t.attributes[e]||{},r=t.elements[e];br(r)&&xr(r)&&(Object.assign(r.style,n),Object.keys(a).forEach((function(e){var t=a[e];!1===t?r.removeAttribute(e):r.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var a=t.elements[e],r=t.attributes[e]||{},i=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});br(a)&&xr(a)&&(Object.assign(a.style,i),Object.keys(r).forEach((function(e){a.removeAttribute(e)})))}))}},requires:["computeStyles"]},{name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,a=e.name,r=n.offset,i=void 0===r?[0,0]:r,o=Wr.reduce((function(e,n){return e[n]=function(e,t,n){var a=Xr(e),r=[Lr,Nr].indexOf(a)>=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,o=i[0],s=i[1];return o=o||0,s=(s||0)*r,[Lr,Br].indexOf(a)>=0?{x:s,y:o}:{x:o,y:s}}(n,t.rects,i),e}),{}),s=o[t.placement],l=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[a]=o}},bi,{name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,a=e.name,r=n.mainAxis,i=void 0===r||r,o=n.altAxis,s=void 0!==o&&o,l=n.boundary,c=n.rootBoundary,d=n.altBoundary,u=n.padding,h=n.tether,f=void 0===h||h,p=n.tetherOffset,m=void 0===p?0:p,g=vi(t,{boundary:l,rootBoundary:c,padding:u,altBoundary:d}),y=Xr(t.placement),v=ei(t.placement),b=!v,w=ti(y),x="x"===w?"y":"x",D=t.modifiersData.popperOffsets,k=t.rects.reference,E=t.rects.popper,C="function"==typeof m?m(Object.assign({},t.rects,{placement:t.placement})):m,A={x:0,y:0};if(D){if(i||s){var T="y"===w?Nr:Lr,S="y"===w?Or:Br,$="y"===w?"height":"width",M=D[w],q=D[w]+g[T],I=D[w]-g[S],F=f?-E[$]/2:0,N=v===_r?k[$]:E[$],O=v===_r?-E[$]:-k[$],B=t.elements.arrow,L=f&&B?Tr(B):{width:0,height:0},R=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},j=R[T],_=R[S],V=wi(0,k[$],L[$]),P=b?k[$]/2-F-V-j-C:N-V-j-C,G=b?-k[$]/2+F+V+_+C:O+V+_+C,H=t.elements.arrow&&Fr(t.elements.arrow),W=H?"y"===w?H.clientTop||0:H.clientLeft||0:0,U=t.modifiersData.offset?t.modifiersData.offset[t.placement][w]:0,z=D[w]+P-U-W,Y=D[w]+G-U;if(i){var Z=wi(f?ii(q,z):q,M,f?ri(I,Y):I);D[w]=Z,A[w]=Z-M}if(s){var K="x"===w?Nr:Lr,Q="x"===w?Or:Br,J=D[x],X=J+g[K],ee=J-g[Q],te=wi(f?ii(X,z):X,J,f?ri(ee,Y):ee);D[x]=te,A[x]=te-J}}t.modifiersData[a]=A}},requiresIfExists:["offset"]},{name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,a=e.name,r=e.options,i=n.elements.arrow,o=n.modifiersData.popperOffsets,s=Xr(n.placement),l=ti(s),c=[Lr,Br].indexOf(s)>=0?"height":"width";if(i&&o){var d=function(e,t){return gi("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:yi(e,jr))}(r.padding,n),u=Tr(i),h="y"===l?Nr:Lr,f="y"===l?Or:Br,p=n.rects.reference[c]+n.rects.reference[l]-o[l]-n.rects.popper[c],m=o[l]-n.rects.reference[l],g=Fr(i),y=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,v=p/2-m/2,b=d[h],w=y-u[c]-d[f],x=y/2-u[c]/2+v,D=wi(b,x,w),k=l;n.modifiersData[a]=((t={})[k]=D,t.centerOffset=D-x,t)}},effect:function(e){var t=e.state,n=e.options.element,a=void 0===n?"[data-popper-arrow]":n;null!=a&&("string"!=typeof a||(a=t.elements.popper.querySelector(a)))&&fi(t.elements.popper,a)&&(t.elements.arrow=a)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,a=t.rects.reference,r=t.rects.popper,i=t.modifiersData.preventOverflow,o=vi(t,{elementContext:"reference"}),s=vi(t,{altBoundary:!0}),l=xi(o,a),c=xi(s,r,i),d=Di(l),u=Di(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:d,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":d,"data-popper-escaped":u})}}]});class Ei{constructor(e,t,n){this.containerEl=t,this.owner=e,t.on("click",".suggestion-item",this.onSuggestionClick.bind(this)),t.on("mousemove",".suggestion-item",this.onSuggestionMouseover.bind(this)),n.register([],"ArrowUp",(()=>(this.setSelectedItem(this.selectedItem-1,!0),!1))),n.register([],"ArrowDown",(()=>(this.setSelectedItem(this.selectedItem+1,!0),!1))),n.register([],"Enter",(e=>(this.useSelectedItem(e),!1))),n.register([],"Tab",(e=>(this.chooseSuggestion(e),!1)))}chooseSuggestion(e){if(!this.items||!this.items.length)return;const t=this.items[this.selectedItem];t&&this.owner.onChooseSuggestion(t,e)}onSuggestionClick(e,t){if(e.preventDefault(),!this.suggestions||!this.suggestions.length)return;const n=this.suggestions.indexOf(t);this.setSelectedItem(n,!1),this.useSelectedItem(e)}onSuggestionMouseover(e,t){if(!this.suggestions||!this.suggestions.length)return;const n=this.suggestions.indexOf(t);this.setSelectedItem(n,!1)}empty(){this.containerEl.empty()}setSuggestions(e){this.containerEl.empty();const t=[];e.forEach((e=>{const n=this.containerEl.createDiv("suggestion-item");this.owner.renderSuggestion(e,n),t.push(n)})),this.items=e,this.suggestions=t,this.setSelectedItem(0,!1)}useSelectedItem(e){if(!this.items||!this.items.length)return;const t=this.items[this.selectedItem];t&&this.owner.selectSuggestion(t,e)}wrap(e,t){return(e%t+t)%t}setSelectedItem(e,t){const n=this.wrap(e,this.suggestions.length),a=this.suggestions[this.selectedItem],r=this.suggestions[n];a&&a.removeClass("is-selected"),r&&r.addClass("is-selected"),this.selectedItem=n,t&&r.scrollIntoView(!1)}}class Ci extends t.FuzzySuggestModal{constructor(e,n,a){super(e),this.items=[],this.scope=new t.Scope,this.emptyStateText="No match found",this.limit=100,this.inputEl=n,this.items=a,this.suggestEl=createDiv("suggestion-container"),this.contentEl=this.suggestEl.createDiv("suggestion"),this.suggester=new Ei(this,this.contentEl,this.scope),this.scope.register([],"Escape",this.onEscape.bind(this)),this.inputEl.addEventListener("input",this.onInputChanged.bind(this)),this.inputEl.addEventListener("focus",this.onFocus.bind(this)),this.inputEl.addEventListener("blur",this.close.bind(this)),this.suggestEl.on("mousedown",".suggestion-container",(e=>{e.preventDefault()}))}empty(){this.suggester.empty()}onInputChanged(){if(this.shouldNotOpen)return;const e=this.modifyInput(this.inputEl.value),t=this.getSuggestions(e);t.length>0?this.suggester.setSuggestions(t.slice(0,this.limit)):this.onNoSuggestion(),this.open()}onFocus(){this.shouldNotOpen=!1,this.onInputChanged()}modifyInput(e){return e}onNoSuggestion(){this.empty(),this.renderSuggestion(null,this.contentEl.createDiv("suggestion-item"))}open(){this.app.keymap.pushScope(this.scope),document.body.appendChild(this.suggestEl),this.popper=ki(this.inputEl,this.suggestEl,{placement:"bottom-start",modifiers:[{name:"offset",options:{offset:[0,10]}},{name:"flip",options:{fallbackPlacements:["top"]}}]})}onEscape(){this.close(),this.shouldNotOpen=!0}close(){this.app.keymap.popScope(this.scope),this.suggester.setSuggestions([]),this.popper&&this.popper.destroy(),this.suggestEl.detach()}createPrompt(e){this.promptEl||(this.promptEl=this.suggestEl.createDiv("prompt-instructions"));let t=this.promptEl.createDiv("prompt-instruction");for(let n of e)t.appendChild(n)}}class Ai extends Ci{constructor(e,t,n){super(e,t.inputEl,n),this.files=[...n],this.text=t,this.createPrompts(),this.inputEl.addEventListener("input",this.getFile.bind(this))}createPrompts(){this.createPrompt([createSpan({cls:"prompt-instruction-command",text:"Type #"}),createSpan({text:"to link heading"})]),this.createPrompt([createSpan({cls:"prompt-instruction-command",text:"Type ^"}),createSpan({text:"to link blocks"})]),this.createPrompt([createSpan({cls:"prompt-instruction-command",text:"Note: "}),createSpan({text:"Blocks must have been created already"})])}getFile(){const e=this.inputEl.value,t=this.app.metadataCache.getFirstLinkpathDest(e.split(/[\^#]/).shift()||"","");t!=this.file&&(this.file=t,this.file&&(this.cache=this.app.metadataCache.getFileCache(this.file)),this.onInputChanged())}getItemText(e){return e instanceof t.TFile?e.path:Object.prototype.hasOwnProperty.call(e,"heading")?e.heading:Object.prototype.hasOwnProperty.call(e,"id")?e.id:void 0}onChooseItem(e){e instanceof t.TFile?(this.text.setValue(e.basename),this.file=e,this.cache=this.app.metadataCache.getFileCache(this.file)):Object.prototype.hasOwnProperty.call(e,"heading")?this.text.setValue(this.file.basename+"#"+e.heading):Object.prototype.hasOwnProperty.call(e,"id")&&this.text.setValue(this.file.basename+"^"+e.id)}selectSuggestion({item:e}){let n;e instanceof t.TFile?(this.file=e,n=e.basename):Object.prototype.hasOwnProperty.call(e,"heading")?n=this.file.basename+"#"+e.heading:Object.prototype.hasOwnProperty.call(e,"id")&&(n=this.file.basename+"^"+e.id),this.text.setValue(n),this.close(),this.onClose()}renderSuggestion(e,n){let{item:a,match:r}=e||{},i=n.createDiv({cls:"suggestion-content"});if(!a)return i.setText(this.emptyStateText),void i.parentElement.addClass("is-selected");if(a instanceof t.TFile){let e=a.path.length-a.name.length;const t=r.matches.map((e=>createSpan("suggestion-highlight")));for(let n=e;ne[0]===n));if(e){let o=t[r.matches.indexOf(e)];i.appendChild(o),o.appendText(a.path.substring(e[0],e[1])),n+=e[1]-e[0]-1}else i.appendText(a.path[n])}n.createDiv({cls:"suggestion-note",text:a.path})}else Object.prototype.hasOwnProperty.call(a,"heading")?(i.setText(a.heading),i.prepend(createSpan({cls:"suggestion-flair",text:`H${a.level}`}))):Object.prototype.hasOwnProperty.call(a,"id")&&i.setText(a.id)}get headings(){return this.file?(this.cache||(this.cache=this.app.metadataCache.getFileCache(this.file)),this.cache.headings||[]):[]}get blocks(){return this.file?(this.cache||(this.cache=this.app.metadataCache.getFileCache(this.file)),Object.values(this.cache.blocks||{})||[]):[]}getItems(){const e=this.inputEl.value;return/#/.test(e)?(this.modifyInput=e=>e.split(/#/).pop(),this.headings):/\^/.test(e)?(this.modifyInput=e=>e.split(/\^/).pop(),this.blocks):this.files}}class Ti extends t.Modal{constructor(e,t,n,a){super(e),this.calendar=t,this.saved=!1,this.event={name:null,description:null,date:{month:null,day:null,year:null},id:c(),note:null,category:null},n&&(this.event=Object.assign({},n),this.editing=!0),a&&(this.event.date=Object.assign({},a)),this.containerEl.addClass("fantasy-calendar-create-event")}display(){return e(this,void 0,void 0,(function*(){this.contentEl.empty(),this.contentEl.createEl("h3",{text:this.editing?"Edit Event":"New Event"}),this.infoEl=this.contentEl.createDiv("event-info"),this.buildInfo(),this.dateEl=this.contentEl.createDiv("event-date"),this.buildDate(),new t.Setting(this.contentEl).addButton((e=>{e.setButtonText("Save").setCta().onClick((()=>{var e,n,a,r,i,o;if(null===(e=this.event.name)||void 0===e?void 0:e.length){if(this.event.end){this.event.end={year:null!==(n=this.event.end.year)&&void 0!==n?n:this.event.date.year,month:null!==(a=this.event.end.month)&&void 0!==a?a:this.event.date.month,day:null!==(r=this.event.end.day)&&void 0!==r?r:this.event.date.day};const e=this.event.date,t=this.event.end,s=Math.max(...this.calendar.static.months.map((e=>e.length))),l=s*this.calendar.static.months.length;if((e.year-1)*l+(null!==(i=e.month)&&void 0!==i?i:-1)*s+e.day>(t.year-1)*l+(null!==(o=t.month)&&void 0!==o?o:-1)*s+t.day){const e=Object.assign({},this.event.end);this.event.end=Object.assign({},this.event.date),this.event.date=Object.assign({},e)}}this.saved=!0,this.close()}else new t.Notice("The event must have a name.")}))})).addExtraButton((e=>{e.setIcon("cross").setTooltip("Cancel").onClick((()=>this.close()))}))}))}buildDate(){this.dateEl.empty(),this.buildStartDate(),this.endEl=this.dateEl.createDiv(),this.event.end?this.buildEndDate():new t.Setting(this.endEl).setName("Add End Date").addToggle((e=>{e.setValue(!1).onChange((e=>this.buildEndDate()))})),this.stringEl=this.dateEl.createDiv("event-date-string setting-item-description"),this.buildDateString()}buildStartDate(){this.startEl=this.dateEl.createDiv("fantasy-calendar-event-date"),this.startEl.createSpan({text:"Start:"}),this.startDateEl=this.startEl.createDiv("fantasy-calendar-date-fields"),this.buildDateFields(this.startDateEl,this.event.date)}buildEndDate(){var e;this.event.end=null!==(e=this.event.end)&&void 0!==e?e:Object.assign({},this.event.date),this.endEl.empty(),this.endEl.addClass("fantasy-calendar-event-date"),this.endEl.createSpan({text:"End:"}),this.endDateEl=this.endEl.createDiv("fantasy-calendar-date-fields"),this.buildDateFields(this.endDateEl,this.event.end)}buildDateString(){this.stringEl.empty(),this.stringEl.createSpan({text:h(this.event.date,this.calendar.static.months,this.event.end)})}buildDateFields(e,n=this.event.date){e.empty();const a=e.createDiv("fantasy-calendar-date-field");a.createEl("label",{text:"Day"}),new t.TextComponent(a).setPlaceholder("Day").setValue(`${n.day}`).onChange((e=>{n.day=Number(e),this.buildDateString()})).inputEl.setAttr("type","number");const r=e.createDiv("fantasy-calendar-date-field");r.createEl("label",{text:"Month"}),new t.DropdownComponent(r).addOptions(Object.fromEntries([["select","Select Month"],...this.calendar.static.months.map((e=>[e.name,e.name]))])).setValue(null!=n.month?this.calendar.static.months[n.month].name:"select").onChange((e=>{"select"===e&&(n.month=null);const t=this.calendar.static.months.find((t=>t.name==e));n.month=this.calendar.static.months.indexOf(t),this.buildDateString()}));const i=e.createDiv("fantasy-calendar-date-field");i.createEl("label",{text:"Year"}),new t.TextComponent(i).setPlaceholder("Year").setValue(`${n.year}`).onChange((e=>{n.year=e&&null!=e?Number(e):void 0,this.buildDateString()})).inputEl.setAttr("type","number")}buildInfo(){this.infoEl.empty(),new t.Setting(this.infoEl).setName("Note").setDesc("Link the event to a note.").addText((n=>{let a=this.app.vault.getFiles();if(n.setPlaceholder("Path"),this.event.note){const e=this.app.vault.getAbstractFileByPath(this.event.note);e&&e instanceof t.TFile&&n.setValue(e.basename)}const r=new Ai(this.app,n,[...a]);r.onClose=()=>e(this,void 0,void 0,(function*(){n.inputEl.blur(),this.event.note=r.file.path,this.tryParse(r.file)}))})),new t.Setting(this.infoEl).setName("Event Name").addText((e=>e.setPlaceholder("Event Name").setValue(this.event.name).onChange((e=>{this.event.name=e}))));const n=this.infoEl.createDiv("event-description");n.createEl("label",{text:"Event Description"}),new t.TextAreaComponent(n).setPlaceholder("Event Description").setValue(this.event.description).onChange((e=>{this.event.description=e})),new t.Setting(this.infoEl).setName("Event Category").addDropdown((e=>{const t=Object.fromEntries(this.calendar.categories.map((e=>[e.id,e.name])));e.addOptions(t).setValue(this.event.category).onChange((e=>this.event.category=e))}))}tryParse(t){var n,a,r,i,o;return e(this,void 0,void 0,(function*(){this.event.name=t.basename;const e=this.app.metadataCache.getFileCache(t),{frontmatter:s}=e;if(s){if("fc-date"in s){const{day:e,month:t,year:o}=s["fc-date"];if(e&&(this.event.date.day=e),t){if("string"==typeof t){const e=null!==(a=null===(n=this.calendar.static.months)||void 0===n?void 0:n.find((e=>e.name==t)))&&void 0!==a?a:null===(r=this.calendar.static.months)||void 0===r?void 0:r[0];this.event.date.month=null===(i=this.calendar.static.months)||void 0===i?void 0:i.indexOf(e)}"number"==typeof t&&(this.event.date.month=t-1)}o&&(this.event.date.year=o)}"fc-category"in s&&(this.calendar.categories.find((e=>e.name===s["fc-category"]))||this.calendar.categories.push({name:s["fantasy-category"],color:"#808080",id:c()}),this.event.category=null===(o=this.calendar.categories.find((e=>e.name===s["fc-category"])))||void 0===o?void 0:o.id)}yield this.display()}))}onOpen(){return e(this,void 0,void 0,(function*(){yield this.display()}))}}function Si(e){let t,n,a,r,i,o,s,l;return{c(){t=W("svg"),n=W("circle"),r=W("path"),o=W("circle"),K(n,"cx","16"),K(n,"cy","16"),K(n,"r","10"),K(n,"fill",a=e[0].faceColor),K(r,"class","shadow"),K(r,"fill",i=e[0].shadowColor),K(r,"d",e[4]),K(o,"cx","16"),K(o,"cy","16"),K(o,"r","10"),K(o,"fill","none"),K(o,"stroke","#000"),K(o,"stroke-width","2px"),K(t,"class","moon"),K(t,"id",s=e[0].id),K(t,"preserveAspectRatio","xMidYMid"),K(t,"aria-label",l=e[1]?`${e[0].name}\n${e[3]}`:null),K(t,"width",e[2]),K(t,"height",e[2]),K(t,"viewBox","0 0 32 32")},m(e,a){V(e,t,a),L(t,n),L(t,r),L(t,o)},p(e,[o]){1&o&&a!==(a=e[0].faceColor)&&K(n,"fill",a),1&o&&i!==(i=e[0].shadowColor)&&K(r,"fill",i),16&o&&K(r,"d",e[4]),1&o&&s!==(s=e[0].id)&&K(t,"id",s),11&o&&l!==(l=e[1]?`${e[0].name}\n${e[3]}`:null)&&K(t,"aria-label",l),4&o&&K(t,"width",e[2]),4&o&&K(t,"height",e[2])},i:g,o:g,d(e){e&&P(t)}}}function $i(e,t,n){let a,{moon:r}=t,{label:i=!0}=t,{size:o=28}=t,{phase:s}=t;return e.$$set=e=>{"moon"in e&&n(0,r=e.moon),"label"in e&&n(1,i=e.label),"size"in e&&n(2,o=e.size),"phase"in e&&n(3,s=e.phase)},e.$$.update=()=>{8&e.$$.dirty&&n(4,a=Wa[s])},[r,i,o,s,a]}const Mi=class extends Ge{constructor(e){super(),Pe(this,e,$i,Si,D,{moon:0,label:1,size:2,phase:3})}};function qi(e){R(e,"svelte-v24qmo",".moon.svelte-v24qmo{display:grid;grid-template-columns:1fr auto;align-items:center;justify-content:space-between;gap:1rem;margin-top:0.5rem}.setting-item-name.svelte-v24qmo{display:flex;align-items:center}.icons.svelte-v24qmo{display:flex;align-self:flex-start;justify-self:flex-end;align-items:center}.icon.svelte-v24qmo{align-items:center}")}function Ii(e,t,n){const a=e.slice();return a[10]=t[n],a}function Fi(e){let t,n,a=e[0],r=[];for(let t=0;tOe(r[e],1,1,(()=>{r[e]=null}));return{c(){t=H("div");for(let e=0;eCreate a new moon to see it here.",K(t,"class","existing-items")},m(e,n){V(e,t,n)},p:g,i:g,o:g,d(e){e&&P(t)}}}function Oi(e){let t,n,a,r,i,o,s,l,c,d,u,h,f,p,m,g,y,v,b,x,D,k,E,C=e[10].name+"",A=e[10].cycle+"";function T(){return e[7](e[10])}function S(){return e[8](e[10])}return r=new Mi({props:{moon:e[10],phase:"First Quarter",label:!1,size:20}}),{c(){t=H("div"),n=H("div"),a=H("span"),je(r.$$.fragment),i=z(),o=U(C),s=z(),l=H("div"),c=H("div"),d=U("Cycle: "),u=U(A),h=U(" days"),f=z(),p=H("div"),m=H("div"),y=z(),v=H("div"),x=z(),K(a,"class","setting-item-name svelte-v24qmo"),K(c,"class","date"),K(l,"class","setting-item-description"),K(n,"class","moon-info"),K(m,"class","icon svelte-v24qmo"),K(v,"class","icon svelte-v24qmo"),K(p,"class","icons svelte-v24qmo"),K(t,"class","moon svelte-v24qmo")},m(w,C){V(w,t,C),L(t,n),L(n,a),_e(r,a,null),L(a,i),L(a,o),L(n,s),L(n,l),L(l,c),L(c,d),L(c,u),L(c,h),L(t,f),L(t,p),L(p,m),L(p,y),L(p,v),L(t,x),D=!0,k||(E=[M(g=e[4].call(null,m)),Z(m,"click",T),M(b=e[3].call(null,v)),Z(v,"click",S)],k=!0)},p(t,n){e=t;const a={};1&n&&(a.moon=e[10]),r.$set(a),(!D||1&n)&&C!==(C=e[10].name+"")&&J(o,C),(!D||1&n)&&A!==(A=e[10].cycle+"")&&J(u,A)},i(e){D||(Ne(r.$$.fragment,e),D=!0)},o(e){Oe(r.$$.fragment,e),D=!1},d(e){e&&P(t),Ve(r),k=!1,w(E)}}}function Bi(e){let t,n,a,r;const i=[Ni,Fi],o=[];function s(e,t){return e[0].length?1:0}return t=s(e),n=o[t]=i[t](e),{c(){n.c(),a=Y()},m(e,n){o[t].m(e,n),V(e,a,n),r=!0},p(e,r){let l=t;t=s(e),t===l?o[t].p(e,r):(Ie(),Oe(o[l],1,1,(()=>{o[l]=null})),Fe(),n=o[t],n?n.p(e,r):(n=o[t]=i[t](e),n.c()),Ne(n,1),n.m(a.parentNode,a))},i(e){r||(Ne(n),r=!0)},o(e){Oe(n),r=!1},d(e){o[t].d(e),e&&P(a)}}}function Li(e){let t,n,a,r;return{c(){t=H("div")},m(i,o){V(i,t,o),a||(r=M(n=e[2].call(null,t)),a=!0)},d(e){e&&P(t),a=!1,r()}}}function Ri(e){let t,n;return t=new Qn({props:{label:"Moons",$$slots:{"pre-add":[Li],default:[Bi]},$$scope:{ctx:e}}}),t.$on("new-item",e[9]),{c(){je(t.$$.fragment)},m(e,a){_e(t,e,a),n=!0},p(e,[n]){const a={};8193&n&&(a.$$scope={dirty:n,ctx:e}),t.$set(a)},i(e){n||(Ne(t.$$.fragment,e),n=!0)},o(e){Oe(t.$$.fragment,e),n=!1},d(e){Ve(t,e)}}}function ji(e,n,a){let{moons:r=[]}=n,{displayMoons:i=!0}=n;const o=he(),s=e=>{a(0,r=r.filter((t=>t.id!==e.id))),o("edit-moons",r)};return e.$$set=e=>{"moons"in e&&a(0,r=e.moons),"displayMoons"in e&&a(6,i=e.displayMoons)},[r,o,e=>{new t.Setting(e).setName("Display Moons").setDesc("Display moons by default when viewing this calendar.").addToggle((e=>{e.setValue(i).onChange((e=>o("display-toggle",e)))}))},e=>{new t.ExtraButtonComponent(e).setIcon("trash").setTooltip("Delete").extraSettingsEl.setAttr("style","margin-left: 0;")},e=>{new t.ExtraButtonComponent(e).setIcon("pencil").setTooltip("Edit")},s,i,e=>o("new-item",e),e=>s(e),function(t){me.call(this,e,t)}]}const _i=class extends Ge{constructor(e){super(),Pe(this,e,ji,Ri,D,{moons:0,displayMoons:6},qi)}};function Vi(e){R(e,"svelte-1rh93fc",".leapday.svelte-1rh93fc.svelte-1rh93fc{display:grid;grid-template-columns:1fr auto;align-items:center;justify-content:space-between;gap:1rem;margin-top:0.5rem}.leapday-info.svelte-1rh93fc.svelte-1rh93fc{width:100%}.icons.svelte-1rh93fc.svelte-1rh93fc{display:flex;align-self:center;justify-self:flex-end;align-items:center}.leapday.svelte-1rh93fc .icon.svelte-1rh93fc{align-items:center}")}function Pi(e){let t,n,a,r,i,o,s,l,c,d,u,h,f,p,m,y,v=e[0].name+"";return{c(){t=H("div"),n=H("div"),a=H("span"),r=U(v),i=z(),o=H("div"),s=U(e[1]),l=z(),c=H("div"),d=H("div"),h=z(),f=H("div"),K(a,"class","setting-item-name"),K(o,"class","setting-item-description"),K(n,"class","leapday-info svelte-1rh93fc"),K(d,"class","icon svelte-1rh93fc"),K(f,"class","icon svelte-1rh93fc"),K(c,"class","icons svelte-1rh93fc"),K(t,"class","leapday svelte-1rh93fc")},m(g,v){V(g,t,v),L(t,n),L(n,a),L(a,r),L(n,i),L(n,o),L(o,s),L(t,l),L(t,c),L(c,d),L(c,h),L(c,f),m||(y=[M(u=e[4].call(null,d)),Z(d,"click",e[5]),M(p=e[3].call(null,f)),Z(f,"click",e[6])],m=!0)},p(e,[t]){1&t&&v!==(v=e[0].name+"")&&J(r,v),2&t&&J(s,e[1])},i:g,o:g,d(e){e&&P(t),m=!1,w(y)}}}function Gi(e,n,a){let r;const i=he();let{leapday:o}=n;return e.$$set=e=>{"leapday"in e&&a(0,o=e.leapday)},e.$$.update=()=>{1&e.$$.dirty&&a(1,r=d(o))},[o,r,i,e=>{new t.ExtraButtonComponent(e).setIcon("trash").setTooltip("Delete").extraSettingsEl.setAttr("style","margin-left: 0;")},e=>{new t.ExtraButtonComponent(e).setIcon("pencil").setTooltip("Edit")},()=>i("edit"),()=>i("delete")]}const Hi=class extends Ge{constructor(e){super(),Pe(this,e,Gi,Pi,D,{leapday:0},Vi)}};function Wi(e,t,n){const a=e.slice();return a[7]=t[n],a}function Ui(e){let t,n,a=e[0],r=[];for(let t=0;tOe(r[e],1,1,(()=>{r[e]=null}));return{c(){t=H("div");for(let e=0;eCreate a new leap day to see it here.",K(t,"class","existing-items")},m(e,n){V(e,t,n)},p:g,i:g,o:g,d(e){e&&P(t)}}}function Yi(e){let t,n;return t=new Hi({props:{leapday:e[7]}}),t.$on("edit",(function(){return e[3](e[7])})),t.$on("delete",(function(){return e[4](e[7])})),{c(){je(t.$$.fragment)},m(e,a){_e(t,e,a),n=!0},p(n,a){e=n;const r={};1&a&&(r.leapday=e[7]),t.$set(r)},i(e){n||(Ne(t.$$.fragment,e),n=!0)},o(e){Oe(t.$$.fragment,e),n=!1},d(e){Ve(t,e)}}}function Zi(e){let t,n,a,r;const i=[zi,Ui],o=[];function s(e,t){return e[0].length?1:0}return t=s(e),n=o[t]=i[t](e),{c(){n.c(),a=Y()},m(e,n){o[t].m(e,n),V(e,a,n),r=!0},p(e,r){let l=t;t=s(e),t===l?o[t].p(e,r):(Ie(),Oe(o[l],1,1,(()=>{o[l]=null})),Fe(),n=o[t],n?n.p(e,r):(n=o[t]=i[t](e),n.c()),Ne(n,1),n.m(a.parentNode,a))},i(e){r||(Ne(n),r=!0)},o(e){Oe(n),r=!1},d(e){o[t].d(e),e&&P(a)}}}function Ki(e){let t,n;return t=new Qn({props:{label:"Leap Days",$$slots:{default:[Zi]},$$scope:{ctx:e}}}),t.$on("new-item",e[5]),{c(){je(t.$$.fragment)},m(e,a){_e(t,e,a),n=!0},p(e,[n]){const a={};1025&n&&(a.$$scope={dirty:n,ctx:e}),t.$set(a)},i(e){n||(Ne(t.$$.fragment,e),n=!0)},o(e){Oe(t.$$.fragment,e),n=!1},d(e){Ve(t,e)}}}function Qi(e,t,n){let{leapdays:a=[]}=t;const r=he(),i=e=>{r("new-item",e)},o=e=>{n(0,a=a.filter((t=>t.id!==e.id))),r("edit-leapdays",a)};return e.$$set=e=>{"leapdays"in e&&n(0,a=e.leapdays)},[a,i,o,e=>i(e),e=>o(e),function(t){me.call(this,e,t)}]}const Ji=class extends Ge{constructor(e){super(),Pe(this,e,Qi,Ki,D,{leapdays:0})}};class Xi extends t.Modal{constructor(e,t,n){super(e),this.calendar=t,this.saved=!1,this.moon={name:null,cycle:null,offset:null,faceColor:"#fff",shadowColor:"#000",id:c()},n&&(this.moon=Object.assign({},n),this.editing=!0),this.containerEl.addClass("fantasy-calendar-create-moon")}display(){return e(this,void 0,void 0,(function*(){this.contentEl.empty(),this.contentEl.createEl("h3",{text:this.editing?"Edit Moon":"New Moon"}),this.infoEl=this.contentEl.createDiv("moon-info"),this.buildInfo(),new t.Setting(this.contentEl).addButton((e=>{e.setButtonText("Save").setCta().onClick((()=>{var e;(null===(e=this.moon.name)||void 0===e?void 0:e.length)?this.moon.cycle?(this.saved=!0,this.close()):new t.Notice("The moon must have a positive cycle."):new t.Notice("The moon must have a name.")}))})).addExtraButton((e=>{e.setIcon("cross").setTooltip("Cancel").onClick((()=>this.close()))}))}))}buildInfo(){this.infoEl.empty(),new t.Setting(this.infoEl).setName("Name").addText((e=>{e.setValue(this.moon.name).onChange((e=>{this.moon.name=e}))})),new t.Setting(this.infoEl).setName("Cycle").setDesc("How many days it takes for the moon to complete a full cycle.").addText((e=>{e.inputEl.setAttr("type","number"),e.setValue(`${this.moon.cycle}`).onChange((e=>{isNaN(Number(e))||(this.moon.cycle=Number(e))}))})),new t.Setting(this.infoEl).setName("Offset").setDesc("Shift the starting moon phase by a number of days.").addText((e=>{e.inputEl.setAttr("type","number"),e.setValue(`${this.moon.offset}`).onChange((e=>{isNaN(Number(e))||(this.moon.offset=Number(e))}))})),new t.Setting(this.infoEl).setName("Face Color").addText((e=>{e.inputEl.setAttr("type","color"),e.setValue(this.moon.faceColor).onChange((e=>{this.moon.faceColor=e}))})),new t.Setting(this.infoEl).setName("Shadow Color").addText((e=>{e.inputEl.setAttr("type","color"),e.setValue(this.moon.shadowColor).onChange((e=>{this.moon.shadowColor=e}))}))}onOpen(){return e(this,void 0,void 0,(function*(){yield this.display()}))}}class eo extends t.Modal{constructor(e,t,n){super(e),this.calendar=t,this.saved=!1,this.leapday={id:c(),name:"Leap Day",interval:[],intercalary:!1,timespan:null,offset:0,type:"leapday"},n&&(this.leapday=Object.assign({},n),this.editing=!0),this.containerEl.addClass("fantasy-calendar-create-leapday")}display(){return e(this,void 0,void 0,(function*(){this.contentEl.empty(),this.contentEl.createEl("h3",{text:this.editing?"Edit Leap Day":"New Leap Day"}),this.infoEl=this.contentEl.createDiv("leapday-info"),this.buildInfo(),new t.Setting(this.contentEl).addButton((e=>{e.setButtonText("Save").setCta().onClick((()=>{this.leapday.interval.length?null!=this.leapday.timespan?(this.saved=!0,this.close()):new t.Notice("The leap day must be attached to a Month."):new t.Notice("The leap day must have an interval.")}))})).addExtraButton((e=>{e.setIcon("cross").setTooltip("Cancel").onClick((()=>this.close()))}))}))}buildInfo(){this.infoEl.empty(),new t.Setting(this.infoEl).setName("Name").addText((e=>{e.setValue(this.leapday.name).onChange((e=>{this.leapday.name=e}))})),new t.Setting(this.infoEl).setName("Month").setDesc("The leap day will be added to this month.").addDropdown((e=>{for(let t of this.calendar.static.months){const n=this.calendar.static.months.indexOf(t);e.addOption(`${n}`,t.name)}e.setValue(`${this.leapday.timespan}`).onChange((e=>this.leapday.timespan=Number(e)))})),new t.Setting(this.infoEl).setName("Offset").setDesc("Shift the years the leap day is applied to.").addText((e=>{e.inputEl.setAttr("type","number"),e.setValue(`${this.leapday.offset}`).onChange((e=>{isNaN(Number(e))||(this.leapday.offset=Number(e))}))})),this.conditionsEl=this.infoEl.createDiv(),this.buildConditions()}buildConditions(){this.conditionsEl.empty(),new t.ButtonComponent(this.conditionsEl).setTooltip("Add New").setButtonText("+").onClick((()=>e(this,void 0,void 0,(function*(){const e=new to(this.app,this.intervals.length>0);e.onClose=()=>{e.saved&&(this.leapday.interval.push(e.condition),this.buildConditions())},e.open()})))).buttonEl.style.width="100%",this.conditionsEl.createSpan({text:d(this.leapday),cls:"fantasy-leap-day-interval-description setting-item"});for(let e of this.intervals)new t.Setting(this.conditionsEl).setName(this.getIntervalName(e)).addExtraButton((t=>{t.setIcon("pencil").setTooltip("Edit").onClick((()=>{const t=new to(this.app,0!=this.intervals.indexOf(e),e);t.onClose=()=>{t.saved&&(this.leapday.interval.splice(this.leapday.interval.indexOf(e),1,t.condition),this.buildConditions())},t.open()}))})).addExtraButton((t=>{t.setIcon("trash").setTooltip("Delete").onClick((()=>{this.leapday.interval.splice(this.leapday.interval.indexOf(e),1),this.intervals.length&&this.intervals[0].exclusive&&(this.intervals[0].exclusive=!1),this.buildConditions()}))}))}get intervals(){return this.leapday.interval.sort(((e,t)=>e.interval-t.interval))}getIntervalName(e){const t=[`${e.interval}`];return e.exclusive&&t.push("(Exclusive)"),e.ignore&&t.push(" - Ignoring Offset"),t.join(" ")}onOpen(){return e(this,void 0,void 0,(function*(){yield this.display()}))}}class to extends t.Modal{constructor(e,t,n){super(e),this.app=e,this.canBeExclusive=t,this.saved=!1,this.editing=!1,this.condition={interval:null,exclusive:!1,ignore:!1},n&&(this.condition=Object.assign({},n),this.editing=!0)}onOpen(){this.contentEl.empty(),this.contentEl.createEl("h3",{text:"Leap Day Condition"}),new t.Setting(this.contentEl).setName("Interval").setDesc("How often the condition applies.").addText((e=>{e.inputEl.setAttr("type","number"),e.setValue(`${this.condition.interval}`).onChange((e=>{isNaN(Number(e))||(this.condition.interval=Number(e))}))})),new t.Setting(this.contentEl).setName("Exclusive").setDesc("If true, the leap day will not apply when the year meets the condition.\n\nRequires the leap day to have at least one non-exclusive condition.").addToggle((e=>e.setDisabled(!this.canBeExclusive).setValue(this.condition.exclusive).onChange((e=>this.condition.exclusive=e)))),new t.Setting(this.contentEl).setName("Ignore Offset").setDesc("The condition will ignore the leap day's offset when checking to apply.").addToggle((e=>e.setValue(this.condition.ignore).onChange((e=>this.condition.ignore=e)))),this.buttonsEl=this.contentEl.createDiv("fantasy-context-buttons"),new t.ButtonComponent(this.buttonsEl).setCta().setButtonText(this.editing?"Save":"Create").onClick((()=>{this.condition.interval?(this.saved=!0,this.close()):new t.Notice("The condition requires an interval.")})),new t.ExtraButtonComponent(this.buttonsEl).setTooltip("Cancel").setIcon("cross").onClick((()=>this.close()))}}class no extends Ci{constructor(e,t,n){super(e,t.inputEl,n),this.folders=[...n],this.text=t,this.inputEl.addEventListener("input",(()=>this.getFolder()))}getFolder(){const e=this.inputEl.value,n=this.app.vault.getAbstractFileByPath(e);n!=this.folder&&n instanceof t.TFolder&&(this.folder=n,this.onInputChanged())}getItemText(e){return e.path}onChooseItem(e){this.text.setValue(e.path),this.folder=e}selectSuggestion({item:e}){let t=e.path;this.text.setValue(t),this.onClose(),this.close()}renderSuggestion(e,t){let{item:n,match:a}=e||{},r=t.createDiv({cls:"suggestion-content"});if(!n)return r.setText(this.emptyStateText),void r.parentElement.addClass("is-selected");let i=n.path.length-n.name.length;const o=a.matches.map((e=>createSpan("suggestion-highlight")));for(let e=i;et[0]===e));if(t){let i=o[a.matches.indexOf(t)];r.appendChild(i),i.appendText(n.path.substring(t[0],t[1])),e+=t[1]-t[0]-1}else r.appendText(n.path[e])}t.createDiv({cls:"suggestion-note",text:n.path})}getItems(){return this.folders}}var ao;!function(e){e.none="None",e.monthly="Monthly",e.yearly="Yearly"}(ao||(ao={})),(0,t.addIcon)("fantasy-calendar-grip",''),(0,t.addIcon)("fantasy-calendar-warning",'');class ro extends t.PluginSettingTab{constructor(e){super(e.app,e),this.plugin=e}get data(){return this.plugin.data}display(){return e(this,void 0,void 0,(function*(){this.containerEl.empty(),this.containerEl.createEl("h2",{text:"Fantasy Calendars"}),this.containerEl.addClass("fantasy-calendar-settings"),this.infoEl=this.containerEl.createDiv(),this.buildInfo();const n=new t.Setting(this.containerEl).setName("Import Calendar").setDesc("Import calendar from ");n.descEl.createEl("a",{href:"https://app.fantasy-calendar.com",text:"Fantasy Calendar",cls:"external-link"});const a=createEl("input",{attr:{type:"file",name:"merge",accept:".json",multiple:!0,style:"display: none;"}});a.onchange=()=>e(this,void 0,void 0,(function*(){const{files:e}=a;if(e.length){try{const t=[];for(let n of Array.from(e))t.push(JSON.parse(yield n.text()));const n=class{static import(e){var t,n,a,r,i,s,l,d,u,h,m,g,y,v,b,w,x,D,k,E,C,A,T,S,$,M,q,I;const F=[];for(let N of e){const e=null!==(t=N.name)&&void 0!==t?t:"Imported Calendar",O=N.static_data;if(!O)continue;const B=O.year_data;if(!B)continue;const L=null!==(n=B.first_day-1)&&void 0!==n?n:0,R=null===(a=B.overflow)||void 0===a||a,j=B.global_week;if(!j)continue;const _=j.map((e=>({type:"day",name:e,id:c()}))),V=B.timespans;if(!V)continue;const P=V.map((e=>({name:(0,f.decode)(e.name),type:e.type,length:e.length,id:c()}))),G=P.reduce(((e,t)=>"month"==t.type?e+t.length:e),0),H=[];if("leap_days"in B)for(let e of B.leap_days){const t=(null!==(r=e.interval.split(","))&&void 0!==r?r:["1"]).map((e=>{const t=/\+/.test(e),n=/\!/.test(e),a=e.match(/(\d+)/).first();return{ignore:t,exclusive:n,interval:Number(a)}}));H.push({name:null!==(i=e.name)&&void 0!==i?i:`Leap Day ${H.length+1}`,type:"leapday",interval:t,timespan:null!==(s=e.timespan)&&void 0!==s?s:0,intercalary:null!==(l=e.intercalary)&&void 0!==l&&l,offset:null!==(d=e.offset)&&void 0!==d?d:0,id:c()})}const W=[];if("moons"in O)for(let e of O.moons)W.push({name:null!==(u=e.name)&&void 0!==u?u:`Moon ${W.length+1}`,cycle:null!==(h=Number(e.cycle))&&void 0!==h?h:G,offset:null!==(m=e.shift)&&void 0!==m?m:0,faceColor:null!==(g=e.color)&&void 0!==g?g:"#ffffff",shadowColor:null!==(y=e.shadow_color)&&void 0!==y?y:"#000000",id:c()});const U=[];if("eras"in O)for(let e of O.eras)U.push({name:null!==(v=e.name)&&void 0!==v?v:`Era ${U.length+1}`,description:e.description,format:null!==(b=e.formatting)&&void 0!==b?b:"Year {{year}} - {{era_name}}",start:{year:null!==(x=null===(w=e.date)||void 0===w?void 0:w.year)&&void 0!==x?x:1,month:null!==(k=null===(D=e.date)||void 0===D?void 0:D.timespan)&&void 0!==k?k:0,day:null!==(C=null===(E=e.date)||void 0===E?void 0:E.day)&&void 0!==C?C:0}});const z={firstWeekDay:L,overflow:R,weekdays:_,months:P,moons:W,leapDays:H,eras:U,displayMoons:!0,incrementDay:!1},Y={year:1,day:1,month:0};N.dynamic_data&&(Y.year=null!==(A=N.dynamic_data.year)&&void 0!==A?A:Y.year,Y.day=null!==(T=N.dynamic_data.day)&&void 0!==T?T:Y.day,Y.month=null!==(S=N.dynamic_data.month)&&void 0!==S?S:Y.month);const Z=[],K=new Map;if("categories"in N)for(let e of N.categories){const t=e.name,n=null!==($=null==t?void 0:t.split(" ").join("-").toLowerCase())&&void 0!==$?$:c();let a=e.event_settings.color;if(a in p)a=p[a];else{a=a.split("-").join("");const e=createEl("canvas"),t=e.getContext("2d");t.fillStyle=a,a=t.fillStyle,e.detach()}K.set(n,{name:t,id:n,color:a})}if(N.events&&Array.isArray(N.events)&&N.events.length)for(let e of N.events){const t={day:null,year:null,month:null};if(e.data&&e.data.date&&Array.isArray(null===(M=e.data)||void 0===M?void 0:M.date)&&e.data.date.length)t.day=e.data.date[2],t.month=e.data.date[1],t.year=e.data.date[0];else if(e.data&&e.data.conditions&&Array.isArray(e.data.conditions)){const n=e.data.conditions;try{const e=n.find((e=>"Year"===e[0])),a=n.find((e=>"Month"===e[0])),r=n.find((e=>"Day"===e[0]));e&&(t.year=Number(e[2][0])),a&&(t.month=Number(a[2][0])),r&&(t.day=Number(r[2][0]))}catch(e){}}let n;if(e.description){const t=createDiv();t.innerHTML=e.description,n=t.textContent}Z.push({name:e.name,description:n,id:e.id,note:null,date:t,category:null!==(I=null===(q=K.get(e.event_category_id))||void 0===q?void 0:q.id)&&void 0!==I?I:null})}const Q=(0,o.Z)({count:K.size});for(let e of K.keys()){const t=K.get(e);t.color||(t.color=Q.shift().hex(),K.set(e,t))}const J={name:e,description:null,static:z,current:Y,events:Z,id:c(),categories:Array.from(K.values())};F.push(J)}return F}}.import(t);this.plugin.data.calendars.push(...n),yield this.plugin.saveCalendar(),this.buildCalendarUI()}catch(n){new t.Notice(`There was an error while importing the calendar${1==e.length?"":"s"}.`),console.error(n)}a.value=null}})),n.addButton((e=>{e.setButtonText("Choose Files"),e.buttonEl.addClass("calendar-file-upload"),e.buttonEl.appendChild(a),e.onClick((()=>a.click()))})),this.calendarUI=this.containerEl.createDiv("fantasy-calendars"),this.buildCalendarUI()}))}buildInfo(){this.infoEl.empty(),new t.Setting(this.infoEl).setName("Default Calendar to Open").setDesc("Views will open to this calendar by default.").addDropdown((e=>{e.addOption("none","None");for(let t of this.data.calendars)e.addOption(t.id,t.name);e.setValue(this.plugin.data.defaultCalendar),e.onChange((e=>{if("none"===e)return this.plugin.data.defaultCalendar=null,void this.plugin.saveSettings();this.plugin.data.defaultCalendar=e,this.plugin.saveSettings()}))})),new t.Setting(this.infoEl).setName("Display Event Previews").setDesc("Use the core Note Preview plugin to display event notes when hovered.").addToggle((e=>{e.setValue(this.data.eventPreview).onChange((e=>{this.data.eventPreview=e,this.plugin.saveSettings()}))})),new t.Setting(this.infoEl).setName("Folder to Watch").setDesc("The plugin will only watch for changes in this folder.").addText((n=>{var a;let r=this.app.vault.getAllLoadedFiles().filter((e=>e instanceof t.TFolder));n.setPlaceholder(null!==(a=this.plugin.data.path)&&void 0!==a?a:"/"),new no(this.app,n,[...r]).onClose=()=>e(this,void 0,void 0,(function*(){var e;const a=(null===(e=n.inputEl.value)||void 0===e?void 0:e.trim())?n.inputEl.value.trim():"/";this.plugin.data.path=(0,t.normalizePath)(a)})),n.inputEl.onblur=()=>e(this,void 0,void 0,(function*(){var e;const a=(null===(e=n.inputEl.value)||void 0===e?void 0:e.trim())?n.inputEl.value.trim():"/";this.plugin.data.path=(0,t.normalizePath)(a)}))})),new t.Setting(this.infoEl).setClass("fantasy-calendar-config").setName(createFragment((e=>{(0,t.setIcon)(e.createSpan(),"fantasy-calendar-warning"),e.createSpan({text:"Default Config Directory"})}))).setDesc(createFragment((e=>{var t;e.createSpan({text:"Please back up your data before changing this setting. Hidden directories must be manually entered."}),e.createEl("br"),e.createSpan({text:"Current directory: "});const n=null!==(t=this.data.configDirectory)&&void 0!==t?t:this.app.vault.configDir;e.createEl("code",{text:n})}))).addText((n=>e(this,void 0,void 0,(function*(){var a;let r=this.app.vault.getAllLoadedFiles().filter((e=>e instanceof t.TFolder));n.setPlaceholder(null!==(a=this.data.configDirectory)&&void 0!==a?a:this.app.vault.configDir),new no(this.app,n,[...r]).onClose=()=>e(this,void 0,void 0,(function*(){n.inputEl.value?(yield this.app.vault.adapter.exists(n.inputEl.value))||(this.data.configDirectory=n.inputEl.value,yield this.plugin.saveSettings()):this.data.configDirectory=null})),n.inputEl.onblur=()=>e(this,void 0,void 0,(function*(){n.inputEl.value&&(yield this.app.vault.adapter.exists(n.inputEl.value),this.data.configDirectory=n.inputEl.value,yield this.plugin.saveSettings(),this.display())}))})))).addExtraButton((t=>{t.setTooltip("Reset to Default").setIcon("undo-glyph").onClick((()=>e(this,void 0,void 0,(function*(){this.data.configDirectory=null,yield this.plugin.saveSettings(),this.display()}))))}))}buildCalendarUI(){this.calendarUI.empty(),new t.Setting(this.calendarUI).setHeading().setName("Add New Calendar").addButton((t=>t.setTooltip("Add Calendar").setButtonText("+").onClick((()=>{const t=new io(this.plugin);t.onClose=()=>e(this,void 0,void 0,(function*(){if(!t.saved)return;const e=i()(t.calendar);e.current.year||(e.current.year=1),yield this.plugin.addNewCalendar(e),this.showCalendars(n)})),t.open()}))));const n=this.calendarUI.createDiv("existing-calendars");this.showCalendars(n)}showCalendars(n){var a;if(n.empty(),this.data.calendars.length)for(let r of this.data.calendars)new t.Setting(n).setName(r.name).setDesc(null!==(a=r.description)&&void 0!==a?a:"").addExtraButton((t=>{t.setIcon("pencil").onClick((()=>{const t=new io(this.plugin,r);t.onClose=()=>e(this,void 0,void 0,(function*(){t.saved?(this.data.calendars.splice(this.data.calendars.indexOf(r),1,i()(t.calendar)),yield this.plugin.saveCalendar(),this.showCalendars(n)):this.showCalendars(n)})),t.open()}))})).addExtraButton((t=>{t.setIcon("trash").onClick((()=>e(this,void 0,void 0,(function*(){(yield nr(this.app,"Are you sure you want to delete this calendar?",{cta:"Delete",secondary:"Cancel"}))&&(this.plugin.data.calendars=this.plugin.data.calendars.filter((e=>e.id!=r.id)),yield this.plugin.saveCalendar(),this.buildInfo(),this.showCalendars(n))}))))}));else n.createSpan({text:"No calendars created! Create a calendar to see it here."})}}class io extends t.Modal{constructor(e,t){super(e.app),this.plugin=e,this.calendar=Object.assign({},il),this.saved=!1,this.editing=!1,this.canSave=!1,this.tempCurrentDays=this.calendar.current.day,this.calendar.id=c(),t&&(this.editing=!0,this.calendar=i()(t)),this.containerEl.addClass("fantasy-calendar-create-calendar")}get static(){return this.calendar.static}get week(){return this.static.weekdays}get months(){return this.static.months}get events(){return this.calendar.events}display(){return e(this,void 0,void 0,(function*(){this.contentEl.empty(),this.contentEl.createEl("h3",{text:this.editing?"Edit Calendar":"New Calendar"});const e=this.contentEl.createDiv("fantasy-calendar-apply-preset");new t.Setting(e).setName("Apply Preset").setDesc("Apply a common fantasy calendar as a preset.").addButton((e=>{e.setCta().setButtonText("Choose Preset").onClick((()=>{const e=new oo(this.app);e.onClose=()=>{var t;if(e.saved){if("Gregorian Calendar"==(null===(t=e.preset)||void 0===t?void 0:t.name)){const t=new Date;e.preset.current={year:t.getFullYear(),month:t.getMonth(),day:t.getDate()}}this.calendar=Object.assign(Object.assign({},e.preset),{id:this.calendar.id}),this.display()}},e.open()}))})),this.uiEl=this.contentEl.createDiv("fantasy-calendar-ui"),this.buttonsEl=this.contentEl.createDiv("fantasy-context-buttons"),this.buildButtons(),this.infoEl=this.uiEl.createDiv("calendar-info"),this.buildInfo(),this.weekdayEl=this.uiEl.createDiv(),this.buildWeekdays(),this.monthEl=this.uiEl.createDiv("fantasy-calendar-element"),this.buildMonths(),this.yearEl=this.uiEl.createDiv("fantasy-calendar-element"),this.buildYear(),this.leapdayEl=this.uiEl.createDiv("fantasy-calendar-element"),this.buildLeapDays(),this.eventEl=this.uiEl.createDiv("fantasy-calendar-element"),this.buildEvents(),this.categoryEl=this.uiEl.createDiv("fantasy-calendar-element"),this.buildCategories(),this.moonEl=this.uiEl.createDiv("fantasy-calendar-element"),this.buildMoons()}))}buildInfo(){this.infoEl.empty(),this.infoDetailEl=this.infoEl.createEl("details",{attr:{open:!0}}),this.infoDetailEl.createEl("summary").createEl("h4",{text:"Basic Info"}),new t.Setting(this.infoDetailEl).setName("Calendar Name").addText((e=>{e.setValue(this.calendar.name).onChange((e=>this.calendar.name=e))}));const e=this.infoDetailEl.createDiv("calendar-description");e.createEl("label",{text:"Calendar Description"}),new t.TextAreaComponent(e).setPlaceholder("Calendar Description").setValue(this.calendar.description).onChange((e=>{this.calendar.description=e})),new t.Setting(this.infoDetailEl).setName("Auto Increment Day").setDesc("Automatically increment the calendar day every real day.").addToggle((e=>{e.setValue(this.static.incrementDay).onChange((e=>{this.static.incrementDay=e}))})),this.dateFieldEl=this.infoDetailEl.createDiv("fantasy-calendar-date-fields"),this.buildDateFields()}buildDateFields(){var e,n,a,r,i,o;this.dateFieldEl.empty(),null==this.tempCurrentDays&&this.calendar.current.day&&(this.tempCurrentDays=this.calendar.current.day),null!=this.tempCurrentDays&&null!=this.calendar.current.month&&this.tempCurrentDays>(null===(e=this.calendar.static.months[this.calendar.current.month])||void 0===e?void 0:e.length)&&(this.tempCurrentDays=null===(n=this.calendar.static.months[this.calendar.current.month])||void 0===n?void 0:n.length);const s=this.dateFieldEl.createDiv("fantasy-calendar-date-field");s.createEl("label",{text:"Day"});const l=new t.TextComponent(s).setPlaceholder("Day").setValue(`${this.tempCurrentDays}`).setDisabled(null==this.calendar.current.month).onChange((e=>{var n,a;if(Number(e)<1||(null!==(a=Number(e)>(null===(n=this.calendar.static.months[this.calendar.current.month])||void 0===n?void 0:n.length))&&void 0!==a?a:1/0))return new t.Notice(`The current day must be between 1 and ${this.calendar.static.months[this.calendar.current.month].length}`),this.tempCurrentDays=this.calendar.current.day,void this.buildDateFields();this.tempCurrentDays=Number(e)}));l.inputEl.setAttr("type","number");const c=this.dateFieldEl.createDiv("fantasy-calendar-date-field");c.createEl("label",{text:"Month"}),new t.DropdownComponent(c).addOptions(Object.fromEntries([["select","Select Month"],...this.calendar.static.months.map((e=>[e.name,e.name]))])).setValue(null!=this.calendar.current.month?this.calendar.static.months[this.calendar.current.month].name:"select").onChange((e=>{"select"===e&&(this.calendar.current.month=null);const t=this.calendar.static.months.find((t=>t.name==e));this.calendar.current.month=this.calendar.static.months.indexOf(t),this.buildDateFields()}));const d=this.dateFieldEl.createDiv("fantasy-calendar-date-field");if(d.createEl("label",{text:"Year"}),this.calendar.static.useCustomYears){const e=new t.DropdownComponent(d);(null!==(a=this.calendar.static.years)&&void 0!==a?a:[]).forEach((t=>{e.addOption(t.id,t.name)})),this.calendar.current.year>(null===(r=this.calendar.static.years)||void 0===r?void 0:r.length)&&(this.calendar.current.year=this.calendar.static.years?this.calendar.static.years.length:null),e.setValue(null===(o=null===(i=this.calendar.static.years)||void 0===i?void 0:i[this.calendar.current.year-1])||void 0===o?void 0:o.id).onChange((e=>{this.calendar.current.year=this.calendar.static.years.findIndex((t=>t.id==e))+1}))}else new t.TextComponent(d).setPlaceholder("Year").setValue(`${this.calendar.current.year}`).onChange((e=>{this.calendar.current.year=Number(e)})).inputEl.setAttr("type","number")}buildWeekdays(){this.weekdayEl.empty();const e=new ua({target:this.weekdayEl,props:{weekdays:this.week,firstWeekday:this.calendar.static.firstWeekDay,overflow:this.calendar.static.overflow}});e.$on("weekday-update",(t=>{this.calendar.static.weekdays=t.detail,!this.calendar.static.firstWeekDay&&this.calendar.static.weekdays.length&&(this.calendar.static.firstWeekDay=0,e.$set({firstWeekday:this.calendar.static.firstWeekDay})),this.checkCanSave()})),e.$on("first-weekday-update",(e=>{this.calendar.static.firstWeekDay=e.detail})),e.$on("overflow-update",(t=>{this.calendar.static.overflow=t.detail,this.calendar.static.overflow||(this.calendar.static.firstWeekDay=0),e.$set({firstWeekday:this.calendar.static.firstWeekDay})}))}buildMonths(){this.monthEl.empty(),new Ca({target:this.monthEl,props:{months:this.months}}).$on("month-update",(e=>{this.calendar.static.months=e.detail,this.buildDateFields(),this.checkCanSave()}))}buildYear(){this.yearEl.empty();const e=new pr({target:this.yearEl,props:{useCustomYears:this.static.useCustomYears,years:this.static.years,app:this.app}});e.$on("years-update",(e=>{this.calendar.static.years=e.detail,this.buildDateFields(),this.buildEvents()})),e.$on("use-custom-update",(e=>{this.calendar.static.useCustomYears=e.detail,this.buildDateFields(),this.buildEvents()}))}buildLeapDays(){this.leapdayEl.empty();const t=new Ji({target:this.leapdayEl,props:{leapdays:this.static.leapDays}});t.$on("new-item",(n=>e(this,void 0,void 0,(function*(){const e=new eo(this.app,this.calendar,n.detail);e.onClose=()=>{if(e.saved){if(e.editing){const t=this.calendar.static.moons.indexOf(this.calendar.static.moons.find((t=>t.id===e.leapday.id)));this.calendar.static.leapDays.splice(t,1,Object.assign({},e.leapday))}else this.calendar.static.leapDays.push(Object.assign({},e.leapday));t.$set({leapdays:this.calendar.static.leapDays}),this.plugin.saveCalendar()}},e.open()})))),t.$on("edit-leapdays",(e=>{this.calendar.static.leapDays=e.detail}))}buildEvents(){this.eventEl.empty(),this.eventsUI=new Pa({target:this.eventEl,props:{events:this.events,months:this.calendar.static.months,categories:this.calendar.categories}}),this.eventsUI.$on("new-item",(t=>e(this,void 0,void 0,(function*(){const e=new Ti(this.app,this.calendar,t.detail);e.onClose=()=>{if(e.saved){if(e.editing){const t=this.calendar.events.indexOf(this.calendar.events.find((t=>t.id===e.event.id)));this.calendar.events.splice(t,1,Object.assign({},e.event))}else this.calendar.events.push(Object.assign({},e.event));this.eventsUI.$set({events:this.events}),this.plugin.saveCalendar()}},e.open()})))),this.eventsUI.$on("edit-events",(e=>{this.calendar.events=e.detail})),this.eventEl.setAttr("style",`--event-max-width: ${this.eventEl.getBoundingClientRect().width}px;`)}buildCategories(){this.categoryEl.empty();const e=new tr({target:this.categoryEl,props:{categories:this.calendar.categories}});e.$on("new",(e=>{this.calendar.categories.push(e.detail),this.eventsUI.$set({categories:this.calendar.categories})})),e.$on("update",(e=>{const t=this.calendar.categories.find((t=>t.id==e.detail.id));this.calendar.categories.splice(this.calendar.categories.indexOf(t),1,e.detail),this.eventsUI.$set({categories:this.calendar.categories,events:this.events})})),e.$on("delete",(e=>{this.calendar.categories.splice(this.calendar.categories.indexOf(e.detail),1),this.eventsUI.$set({categories:this.calendar.categories,events:this.events})}))}buildMoons(){var t;this.moonEl.empty(),this.static.displayMoons=null===(t=this.static.displayMoons)||void 0===t||t;const n=new _i({target:this.moonEl,props:{moons:this.static.moons,displayMoons:this.static.displayMoons}});n.$on("display-toggle",(e=>{this.static.displayMoons=e.detail,n.$set({displayMoons:this.static.displayMoons})})),n.$on("new-item",(t=>e(this,void 0,void 0,(function*(){const e=new Xi(this.app,this.calendar,t.detail);e.onClose=()=>{if(e.saved){if(e.editing){const t=this.calendar.static.moons.indexOf(this.calendar.static.moons.find((t=>t.id===e.moon.id)));this.calendar.static.moons.splice(t,1,Object.assign({},e.moon))}else this.calendar.static.moons.push(Object.assign({},e.moon));n.$set({moons:this.calendar.static.moons}),this.plugin.saveCalendar()}},e.open()})))),n.$on("edit-moons",(e=>{this.calendar.static.moons=e.detail}))}checkCanSave(){var e,t,n,a,r,i,o,s,l;(null===(e=this.months)||void 0===e?void 0:e.length)&&(null===(t=this.months)||void 0===t?void 0:t.every((e=>{var t;return null===(t=e.name)||void 0===t?void 0:t.length})))&&(null===(n=this.months)||void 0===n?void 0:n.every((e=>e.length>0)))&&(null===(a=this.week)||void 0===a?void 0:a.length)&&(null===(r=this.week)||void 0===r?void 0:r.every((e=>{var t;return null===(t=e.name)||void 0===t?void 0:t.length})))&&(null===(i=this.calendar.name)||void 0===i?void 0:i.length)&&this.calendar.static.firstWeekDay<(null!==(s=null===(o=this.week)||void 0===o?void 0:o.length)&&void 0!==s?s:1/0)&&(!this.calendar.static.useCustomYears||this.calendar.static.useCustomYears&&(null===(l=this.calendar.static.years)||void 0===l?void 0:l.length)&&this.calendar.static.years.every((e=>{var t;return null===(t=e.name)||void 0===t?void 0:t.length})))&&(this.canSave=!0)}buildButtons(){this.buttonsEl.empty(),new t.ButtonComponent(this.buttonsEl).setCta().setButtonText(this.editing?"Save":"Create").onClick((()=>{var e,n;this.canSave||this.checkCanSave(),this.canSave?(this.calendar.current.day=this.tempCurrentDays,this.saved=!0,this.close()):(null===(e=this.calendar.name)||void 0===e?void 0:e.length)?this.week.length?this.week.every((e=>{var t;return null===(t=e.name)||void 0===t?void 0:t.length}))?this.months.length?this.months.every((e=>{var t;return null===(t=e.name)||void 0===t?void 0:t.length}))?this.months.every((e=>e.length))?this.calendar.static.useCustomYears&&!(null===(n=this.calendar.static.years)||void 0===n?void 0:n.length)?new t.Notice("Custom years must be defined."):this.calendar.static.useCustomYears&&!this.calendar.static.years.every((e=>{var t;return null===(t=e.name)||void 0===t?void 0:t.length}))?new t.Notice("Each custom year must be named."):this.calendar.static.firstWeekDay>=this.week.length&&new t.Notice("The first day of the week must be a valid weekday."):new t.Notice("Every month must have a length."):new t.Notice("Every month must have a name."):new t.Notice("At least one month is required."):new t.Notice("Every weekday must have a name."):new t.Notice("At least one weekday is required."):new t.Notice("The calendar name is required!")})),new t.ExtraButtonComponent(this.buttonsEl).setTooltip("Cancel").setIcon("cross").onClick((()=>this.close()))}onOpen(){this.display()}}class oo extends t.Modal{onOpen(){return e(this,void 0,void 0,(function*(){yield this.display()}))}display(){return e(this,void 0,void 0,(function*(){this.containerEl.addClass("fantasy-calendar-choose-preset"),this.contentEl.empty(),this.contentEl.createEl("h3",{text:"Choose a Preset Calendar"});const e=this.contentEl.createDiv("fantasy-calendar-preset-container");for(const n of m){const a=new t.ButtonComponent(e).onClick((()=>{this.preset=n,this.display()}));this.preset==n&&a.setCta(),a.buttonEl.createDiv({cls:"setting-item-name",text:n.name}),a.buttonEl.createDiv({cls:"setting-item-description",text:n.description})}const n=this.contentEl.createDiv("fantasy-calendar-confirm-buttons");new t.ButtonComponent(n).setButtonText("Apply").onClick((()=>{this.saved=!0,this.close()})).setCta(),new t.ExtraButtonComponent(n).setIcon("cross").onClick((()=>{this.close()}))}))}}class so{constructor(e,t,n,a){this.data=e,this.number=t,this.year=n,this.calendar=a,this.days=[],this.leapDays=[],this.leapDays=this.calendar.leapDaysForMonth(this,n),this.days=[...new Array(e.length+this.leapDays.length).keys()].map((e=>new lo(this,e+1)))}get id(){return this.data.id}get index(){return this.calendar.data.months.indexOf(this.data)}get name(){return this.data.name}get length(){return this.days.length}get daysBefore(){return this.calendar.daysBeforeMonth(this)}get firstWeekday(){return this.calendar.data.overflow?this.days[0].weekday:0}get lastWeekday(){return this.days[this.days.length-1].weekday}get type(){return this.data.type}}class lo{constructor(e,t){this.month=e,this.number=t}get calendar(){return this.month.calendar}get date(){return{day:this.number,month:this.month.number,year:this.year}}get events(){return this.calendar.getEventsOnDate(this.date)}get longDate(){return{day:this.number,month:this.month.name,year:this.year}}get daysBefore(){return this.month.daysBefore+this.number-1}get year(){return this.month.year}get weekday(){const e=this.calendar.firstDayOfYear(this.year);return l(this.daysBefore%this.calendar.weekdays.length+e,this.calendar.weekdays.length)}get isCurrentDay(){return this.number==this.calendar.current.day&&this.month.number==this.calendar.current.month&&this.month.year==this.calendar.current.year}get isDisplaying(){return this.number==this.calendar.viewing.day&&this.calendar.displayed.year==this.calendar.viewing.year&&this.calendar.displayed.month==this.calendar.viewing.month}get moons(){return this.calendar.getMoonsForDate(this.date)}}class co extends t.Events{constructor(e,t){super(),this.object=e,this.plugin=t,this.displayed={year:null,month:null,day:null},this.viewing={year:null,month:null,day:null},this.displayed=Object.assign({},this.current),this.update(this.object)}getNameForYear(e){var t;return this.data.useCustomYears?this.data.useCustomYears&&e-1>=0&&e<=(null===(t=this.data.years)||void 0===t?void 0:t.length)?this.data.years[e-1].name:void 0:`${e}`}get displayWeeks(){return this.object.displayWeeks}getMonthsForYear(e){return this.data.months.map(((t,n)=>new so(t,n,e,this)))}update(e){this.object=null!=e?e:this.object,this.maxDays=Math.max(...this.data.months.map((e=>e.length))),this.trigger("month-update"),this.trigger("day-update")}get data(){return this.object.static}get current(){return this.object.current}get leapdays(){return this.data.leapDays}getEventsOnDate(e){const t=this.object.events.filter((t=>{if(!t.date.day)return!1;t.end||(t.end=Object.assign({},t.date));const n=Object.assign({},t.date),a=Object.assign({},t.end);if(null==n.month&&(a.month=n.month=e.month),null==n.year&&(a.year=n.year=e.year),n.year!=e.year&&a.year!=e.year)return!1;const r=this.daysBeforeDate(n),i=this.daysBeforeDate(e);if(a.year>e.year)return i>=r;const o=this.daysBeforeDate(a);return i>=r&&o>=i}));return t.sort(((e,t)=>e.end?t.end?this.areDatesEqual(e.date,t.date)?this.daysBeforeDate(t.end)-this.daysBeforeDate(e.end):this.daysBeforeDate(e.date)-this.daysBeforeDate(t.date):-1:0)),t}get currentDate(){return h(this.current,this.data.months)}get displayedDate(){return h(this.displayed,this.data.months)}get viewedDate(){return h(this.viewing,this.data.months)}reset(){this.displayed=Object.assign({},this.current),this.viewing=Object.assign({},this.current),this.trigger("month-update"),this.trigger("day-update")}setCurrentMonth(e){this.displayed.month=e,this.trigger("month-update")}goToNextDay(){this.viewing.day+=1;const e=this.getMonth(this.displayed.month,this.displayed.year);this.viewing.day>e.days.length&&(this.goToNext(),this.viewing.month=this.displayed.month,this.viewing.year=this.displayed.year,this.viewing.day=1),this.trigger("day-update")}goToNextCurrentDay(){this.current.day+=1;const e=this.getMonth(this.current.month,this.current.year);this.current.day>=e.days.length&&(this.current.day=1,this.current.month+=1,this.current.month>=this.data.months.length&&(this.current.month=0,this.current.year+=1)),this.trigger("day-update")}get nextMonthIndex(){return l(this.displayed.month+1,this.data.months.length)}get nextMonth(){return this.getMonth(this.displayed.month+1,this.displayed.year)}canGoToNextYear(e=this.displayed.year){return!this.data.useCustomYears||ethis.displayed.month){if(1==this.displayed.year)return void new t.Notice("This is the earliest year.");this.goToPreviousYear()}this.setCurrentMonth(this.prevMonthIndex)}goToPreviousDay(){this.viewing.day-=1,this.viewing.day<1&&(this.goToPrevious(),this.viewing.month=this.displayed.month,this.viewing.year=this.displayed.year,this.viewing.day=this.currentMonth.days.length),this.trigger("day-update")}goToPreviousYear(){this.displayed.year-=1,this.trigger("year-update")}get weekdays(){return this.data.weekdays}get currentMonth(){return this.getMonth(this.displayed.month,this.displayed.year)}leapDaysForYear(e){return this.leapdays.filter((t=>t.interval.sort(((e,t)=>e.interval-t.interval)).some((({interval:t,exclusive:n},a,r)=>n&&0==a?e%t!=0:n?void 0:r[a+1]&&r[a+1].exclusive?e%t==0&&e%r[a+1].interval!=0:e%t==0))))}leapDaysForMonth(e,t=this.displayed.year){return this.leapdays.filter((t=>t.timespan==e.number)).filter((e=>e.interval.sort(((e,t)=>e.interval-t.interval)).some((({interval:e,exclusive:n},a,r)=>n&&0==a?t%e!=0:n?void 0:r[a+1]&&r[a+1].exclusive?t%e==0&&t%r[a+1].interval!=0:t%e==0))))}getMonth(e,t,n=0){const a=this.data.months;let r=l(e,a.length);return e<0&&(t-=1),0==t?null:(e>=a.length&&(t+=1),"intercalary"==a[r].type&&0!=n?this.getMonth(e+n,t,n):new so(a[r],r,t,this))}getPaddedDaysForMonth(e){let t=e.days,n=[];const a=this.getMonth(e.index-1,this.displayed.year,-1);e.firstWeekday>0&&"month"==e.type&&(n=null!=a?a.days.slice(-e.firstWeekday):Array(e.firstWeekday).fill(null));let r=[];const i=this.getMonth(e.index+1,this.displayed.year,1);return e.lastWeekday"month"===e.type)).reduce(((e,t)=>e+t.length),0)}daysBeforeMonth(e,t=!1){if(0==e.number)return 0;const n=this.getMonthsForYear(e.year),a=t?n:n.filter((e=>"month"==e.type)),r=a.find((t=>t.data.id==e.data.id));return a.slice(0,a.indexOf(r)).reduce(((e,t)=>e+t.length),0)}areDatesEqual(e,t){return!(e.day!=t.day||e.month!=t.month&&null!=e.month&&null!=t.month||e.year!=t.year&&null!=e.year&&null!=t.year)}daysBeforeDate(e){return this.daysBeforeYear(e.year)+this.daysBeforeMonth(this.getMonth(e.month,e.year),!0)+e.day}get firstWeekday(){return this.data.firstWeekDay}get leapDaysBefore(){return 1==this.displayed.year?0:[...Array(this.displayed.year-1).keys()].map((e=>this.leapDaysForYear(e+1))).reduce(((e,t)=>e+t.length),0)}leapDaysBeforeYear(e){return 1==e?0:[...Array(e-1).keys()].map((e=>this.leapDaysForYear(e+1))).reduce(((e,t)=>e+t.length),0)}get daysBefore(){return this.daysBeforeYear(this.displayed.year)}get totalDaysBefore(){return this.daysBefore+this.leapDaysBefore}daysBeforeYear(e){return e<1?0:Math.abs(e-1)*this.daysPerYear}totalDaysBeforeYear(e){return e<1?0:Math.abs(e-1)*this.data.months.filter((e=>"month"==e.type)).reduce(((e,t)=>e+t.length),0)+this.leapDaysBeforeYear(e)}firstDayOfYear(e=this.displayed.year){var t;return this.data.overflow?1==e?this.firstWeekday:l(this.totalDaysBeforeYear(e)%this.data.weekdays.length+this.firstWeekday+(null!==(t=this.data.offset)&&void 0!==t?t:0),this.data.weekdays.length):0}get moons(){return this.data.moons}getMoonsForDate(e){const t=[],n=this.getMonth(e.month,e.year),a=n.days[e.day-1],r=this.totalDaysBeforeYear(e.year)+this.daysBeforeMonth(n,!0)+a.number-1;for(let e of this.moons){const{offset:n,cycle:a}=e,i=24;let o=(r-n)/a;const s=(o-Math.floor(o))*i%i,c=Ua[i];t.push([e,c[l(Math.round(s),c.length)]])}return t}}const uo=[];function ho(e,t=g){let n;const a=new Set;function r(t){if(D(e,t)&&(e=t,n)){const t=!uo.length;for(const t of a)t[1](),uo.push(t,e);if(t){for(let e=0;e{a.delete(s),0===a.size&&(n(),n=null)}}}}function fo(e){R(e,"svelte-1e1nyi2",".flag.svelte-1e1nyi2.svelte-1e1nyi2{cursor:pointer;position:relative;padding-left:0.125rem;text-align:left;width:100%;background-color:var(--hex-alpha);border-left:2px solid var(--color)}.flag-content.svelte-1e1nyi2.svelte-1e1nyi2{display:flex;gap:0.25rem;align-items:flex-start;justify-content:space-between}.day-view.svelte-1e1nyi2 .flag-content.svelte-1e1nyi2{justify-content:space-between}.clamp.svelte-1e1nyi2.svelte-1e1nyi2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:keep-all;overflow:hidden;text-overflow:ellipsis}.note.svelte-1e1nyi2.svelte-1e1nyi2{display:flex;align-self:center}.multi.svelte-1e1nyi2.svelte-1e1nyi2{flex-shrink:0;overflow:visible;width:unset}.multi.svelte-1e1nyi2 .clamp.svelte-1e1nyi2{-webkit-line-clamp:1;overflow:visible}.multi.start.svelte-1e1nyi2.svelte-1e1nyi2{margin-left:0}.multi.end.svelte-1e1nyi2.svelte-1e1nyi2{margin-right:0}.multi.first.svelte-1e1nyi2.svelte-1e1nyi2{overflow:visible;white-space:nowrap}.multi.svelte-1e1nyi2.svelte-1e1nyi2:not(.first){color:transparent;overflow:hidden}.multi.svelte-1e1nyi2.svelte-1e1nyi2:not(.start){border:0;margin-left:-6px}.multi.svelte-1e1nyi2.svelte-1e1nyi2:not(.end){margin-right:-6px}.start.svelte-1e1nyi2>.flag-content.svelte-1e1nyi2{justify-content:flex-start;gap:1em}")}function po(e){let t,n,a,r;return{c(){t=H("div"),K(t,"class","note svelte-1e1nyi2")},m(i,o){V(i,t,o),a||(r=M(n=e[9].call(null,t)),a=!0)},d(e){e&&P(t),a=!1,r()}}}function mo(e){let t,n,a,r,i,o,s,l,c=e[0].name+"",d=e[0].note&&po(e);return{c(){t=H("div"),n=H("div"),a=H("span"),r=U(c),i=z(),d&&d.c(),K(a,"class","svelte-1e1nyi2"),ae(a,"clamp",!e[1]),ae(a,"day-view",e[1]),K(n,"class","flag-content svelte-1e1nyi2"),K(t,"class","flag svelte-1e1nyi2"),K(t,"aria-label",o=e[1]?null:e[0].name),ee(t,"--hex-alpha",e[6]+"40"),ee(t,"--color",e[6]),ae(t,"multi",e[4]),ae(t,"start",e[2]),ae(t,"end",e[3]),ae(t,"first",e[5]),ae(t,"day-view",e[1])},m(o,c){V(o,t,c),L(t,n),L(n,a),L(a,r),L(n,i),d&&d.m(n,null),s||(l=[Z(t,"click",e[14]),Z(t,"mouseover",e[15]),Z(t,"focus",go),Z(t,"contextmenu",e[16])],s=!0)},p(e,[i]){1&i&&c!==(c=e[0].name+"")&&J(r,c),2&i&&ae(a,"clamp",!e[1]),2&i&&ae(a,"day-view",e[1]),e[0].note?d||(d=po(e),d.c(),d.m(n,null)):d&&(d.d(1),d=null),3&i&&o!==(o=e[1]?null:e[0].name)&&K(t,"aria-label",o),64&i&&ee(t,"--hex-alpha",e[6]+"40"),64&i&&ee(t,"--color",e[6]),16&i&&ae(t,"multi",e[4]),4&i&&ae(t,"start",e[2]),8&i&&ae(t,"end",e[3]),32&i&&ae(t,"first",e[5]),2&i&&ae(t,"day-view",e[1])},i:g,o:g,d(e){e&&P(t),d&&d.d(),s=!1,w(l)}}}const go=()=>{};function yo(e,n,a){var r,i,o,s;const l=he();let{event:c}=n,{date:d}=n,{dayView:u=!1}=n,h=!1,f=!1,p=!1,m=!1,{categories:g}=n,y=null!==(i=null===(r=g.find((e=>e.id==c.category)))||void 0===r?void 0:r.color)&&void 0!==i?i:Ga;const v=t.Platform.isMacOS?"Meta":"Control";return e.$$set=e=>{"event"in e&&a(0,c=e.event),"date"in e&&a(10,d=e.date),"dayView"in e&&a(1,u=e.dayView),"categories"in e&&a(11,g=e.categories)},e.$$.update=()=>{1039&e.$$.dirty&&(null==c.end||u||(a(4,h=!0),a(2,f=!(d.day!==c.date.day||null!=c.date.month&&d.month!=c.date.month||null!=c.date.year&&d.year!==c.date.year)),a(5,m=f||1==d.day),a(3,p=!(d.day!==c.end.day||null!=c.end.month&&d.month!=c.end.month||null!=c.end.year&&d.year!==c.end.year)),f&&p&&(a(4,h=!1),a(2,f=!1),a(3,p=!1)))),14337&e.$$.dirty&&a(6,y=null!==a(13,s=null===a(12,o=g.find((e=>e.id==c.category)))||void 0===o?void 0:o.color)&&void 0!==s?s:Ga)},[c,u,f,p,h,m,y,l,v,e=>{(0,t.setIcon)(e,"note-glyph")},d,g,o,s,e=>{e.stopPropagation(),l("event-click",{event:c,modifier:e.getModifierState(v)})},e=>l("event-mouseover",{target:e.target,event:c}),e=>{e.stopPropagation(),l("event-context",{evt:e,event:c})}]}const vo=class extends Ge{constructor(e){super(),Pe(this,e,yo,mo,D,{event:0,date:10,dayView:1,categories:11},fo)}};function bo(e){R(e,"svelte-qnut28",".flags-container.svelte-qnut28{height:100%}.flag-container.svelte-qnut28{display:flex;flex-flow:column nowrap;gap:0.25rem}.overflow.svelte-qnut28{color:var(--text-muted);display:flex;justify-content:flex-end;width:100%}")}function wo(e){let t,n,a;return{c(){t=H("span"),n=U("+"),a=U(e[2])},m(e,r){V(e,t,r),L(t,n),L(t,a)},p(e,t){4&t&&J(a,e[2])},d(e){e&&P(t)}}}function xo(e){let t,n,a,r,i=e[2]>0&&wo(e);return{c(){t=H("div"),n=H("div"),a=z(),r=H("div"),i&&i.c(),K(n,"class","flag-container svelte-qnut28"),K(r,"class","overflow svelte-qnut28"),K(t,"class","flags-container svelte-qnut28")},m(o,s){V(o,t,s),L(t,n),e[8](n),L(t,a),L(t,r),i&&i.m(r,null),e[9](t)},p(e,[t]){e[2]>0?i?i.p(e,t):(i=wo(e),i.c(),i.m(r,null)):i&&(i.d(1),i=null)},i:g,o:g,d(n){n&&P(t),e[8](null),i&&i.d(),e[9](null)}}}function Do(t,n,a){let r,i,{events:o=[]}=n,{categories:s}=n,{dayView:l=!1}=n,{date:c}=n,{calendar:d}=n,u=0;const h=he(),f=()=>e(void 0,void 0,void 0,(function*(){if(a(2,u=0),o.length&&r&&i){i.empty();const e=r.getBoundingClientRect().height;let t=e;for(const n of o){const r=new vo({target:i,props:{event:n,categories:s,dayView:l,date:c}});if(r.$on("event-click",(e=>h("event-click",e.detail))),r.$on("event-mouseover",(e=>h("event-mouseover",e.detail))),r.$on("event-context",(e=>h("event-context",e.detail))),t=e-i.getBoundingClientRect().height,!l){if(t<0){i.lastElementChild.detach(),a(2,u=o.length-o.indexOf(n));break}if(0==t){a(2,u=o.length-o.indexOf(n)-1);break}}}}}));return d.on("view-resized",(()=>{l||f()})),ue(f),t.$$set=e=>{"events"in e&&a(3,o=e.events),"categories"in e&&a(4,s=e.categories),"dayView"in e&&a(5,l=e.dayView),"date"in e&&a(6,c=e.date),"calendar"in e&&a(7,d=e.calendar)},t.$$.update=()=>{8&t.$$.dirty&&a(3,o),11&t.$$.dirty&&o&&r&&i&&f()},[r,i,u,o,s,l,c,d,function(e){ye[e?"unshift":"push"]((()=>{i=e,a(1,i)}))},function(e){ye[e?"unshift":"push"]((()=>{r=e,a(0,r)}))}]}const ko=class extends Ge{constructor(e){super(),Pe(this,e,Do,xo,D,{events:3,categories:4,dayView:5,date:6,calendar:7},bo)}};function Eo(e){R(e,"svelte-5je88v",".day-view.svelte-5je88v{padding:5px 15px;display:flex;flex-flow:column nowrap;gap:0.5rem}.nav.svelte-5je88v,.date.svelte-5je88v{display:flex;justify-content:space-between;align-items:center}.left-nav.svelte-5je88v{display:flex}.left-nav.svelte-5je88v .clickable-icon{margin-right:0}.calendar-clickable.svelte-5je88v{align-items:center;cursor:pointer;display:flex;justify-content:center}h3.svelte-5je88v{margin:0}.day-view.svelte-5je88v .flag-container > .flag{padding-left:0.5rem}")}function Co(e,t,n){const a=e.slice();return a[22]=t[n][0],a[23]=t[n][1],a}function Ao(e){let t,n,a=e[3],r=[];for(let t=0;tOe(r[e],1,1,(()=>{r[e]=null}));return{c(){t=H("div");for(let e=0;e{I=null})),Fe());const a={};16&n&&(a.events=e[4]),64&n&&(a.categories=e[6]),4&n&&(a.date=e[2]),1&n&&(a.calendar=e[0]),T.$set(a)},i(e){S||(Ne(I),Ne(T.$$.fragment,e),S=!0)},o(e){Oe(I),Oe(T.$$.fragment,e),S=!1},d(e){e&&P(t),I&&I.d(),Ve(T),$=!1,w(q)}}}function $o(e,n,a){let r,i,o,s,l,c,d;pe("calendar").subscribe((e=>{a(0,c=e)})),pe("displayMoons").subscribe((e=>a(1,d=e))),c.on("day-update",(()=>{a(2,i=c.viewing),a(5,r=c.viewedDate),a(4,o=c.getEventsOnDate(c.viewing)),a(3,s=c.getMoonsForDate(c.viewing))}));const u=he();return e.$$.update=()=>{1&e.$$.dirty&&a(5,r=c.viewedDate),1&e.$$.dirty&&a(2,i=c.viewing),1&e.$$.dirty&&a(4,o=c.getEventsOnDate(c.viewing)),1&e.$$.dirty&&a(3,s=c.getMoonsForDate(c.viewing)),1&e.$$.dirty&&a(6,l=c.object.categories)},[c,d,i,s,o,r,l,u,e=>{new t.ExtraButtonComponent(e).setIcon("cross").setTooltip("Close")},e=>{new t.ExtraButtonComponent(e).setIcon("fantasy-calendar-reveal").setTooltip("Show on Calendar").onClick((()=>{a(0,c.displayed.year=c.viewing.year,c),c.setCurrentMonth(c.viewing.month)}))},e=>{new t.ExtraButtonComponent(e).setIcon("plus-with-circle").setTooltip("New Event").onClick((()=>u("event",i)))},e=>{new t.ExtraButtonComponent(e).setIcon("left-arrow")},e=>{new t.ExtraButtonComponent(e).setIcon("right-arrow")},()=>u("reveal"),()=>u("close"),()=>c.goToPreviousDay(),()=>c.goToNextDay(),function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)}]}const Mo=class extends Ge{constructor(e){super(),Pe(this,e,$o,So,D,{},Eo)}};function qo(e){R(e,"svelte-1gou5hh",".dot.svelte-1gou5hh{display:inline-block;min-height:6px;min-width:6px;height:6px;width:6px;margin:0 2px}.active.svelte-1gou5hh{color:var(--text-on-accent)}")}function Io(e){let t,n,a,r;return{c(){t=W("svg"),n=W("circle"),K(n,"stroke",a=e[2]??"currentColor"),K(n,"fill",r=e[2]??"currentColor"),K(n,"cx","3"),K(n,"cy","3"),K(n,"r","2"),K(t,"class","dot svelte-1gou5hh"),K(t,"viewBox","0 0 6 6"),K(t,"xmlns","http://www.w3.org/2000/svg"),ae(t,"filled",e[0]),ae(t,"active",e[1])},m(e,a){V(e,t,a),L(t,n)},p(e,[i]){4&i&&a!==(a=e[2]??"currentColor")&&K(n,"stroke",a),4&i&&r!==(r=e[2]??"currentColor")&&K(n,"fill",r),1&i&&ae(t,"filled",e[0]),2&i&&ae(t,"active",e[1])},i:g,o:g,d(e){e&&P(t)}}}function Fo(e,t,n){let{isFilled:a=!0}=t,{isActive:r=!1}=t,{color:i}=t;return e.$$set=e=>{"isFilled"in e&&n(0,a=e.isFilled),"isActive"in e&&n(1,r=e.isActive),"color"in e&&n(2,i=e.color)},[a,r,i]}const No=class extends Ge{constructor(e){super(),Pe(this,e,Fo,Io,D,{isFilled:0,isActive:1,color:2},qo)}};function Oo(e){R(e,"svelte-2o3rj3",".dots-container.svelte-2o3rj3{width:100%}.dot-container.svelte-2o3rj3{display:flex;flex-flow:row nowrap;width:fit-content;margin:auto;line-height:6px;min-height:6px}.centered.svelte-2o3rj3{justify-content:center;align-items:center}.overflow.svelte-2o3rj3{color:var(--text-muted);font-size:xx-small;display:flex;justify-content:flex-end;width:100%}")}function Bo(e){let t,n,a;return{c(){t=H("span"),n=U("+"),a=U(e[2])},m(e,r){V(e,t,r),L(t,n),L(t,a)},p(e,t){4&t&&J(a,e[2])},d(e){e&&P(t)}}}function Lo(e){let t,n,a,r,i=e[2]>0&&Bo(e);return{c(){t=H("div"),n=H("div"),a=z(),r=H("div"),i&&i.c(),K(n,"class","dot-container centered svelte-2o3rj3"),K(r,"class","overflow svelte-2o3rj3"),K(t,"class","dots-container svelte-2o3rj3")},m(o,s){V(o,t,s),L(t,n),e[6](n),L(t,a),L(t,r),i&&i.m(r,null),e[7](t)},p(e,[t]){e[2]>0?i?i.p(e,t):(i=Bo(e),i.c(),i.m(r,null)):i&&(i.d(1),i=null)},i:g,o:g,d(n){n&&P(t),e[6](null),i&&i.d(),e[7](null)}}}function Ro(t,n,a){let r,i,{events:o=[]}=n,{categories:s}=n,{calendar:l}=n,c=0;he();const d=()=>e(void 0,void 0,void 0,(function*(){if(a(2,c=0),o.length){i.empty();const e=r.getBoundingClientRect().width;let t=e;for(const n of o){if(new No({target:i,props:{color:u(n)}}),t=e-i.getBoundingClientRect().width,t<0){i.lastElementChild.detach(),a(2,c=o.length-o.indexOf(n));break}if(0==t){a(2,c=o.length-o.indexOf(n)-1);break}}}}));l.on("view-resized",(()=>{r&&i&&d()})),ue(d);const u=e=>{var t;return null===(t=s.find((t=>t.id==e.category)))||void 0===t?void 0:t.color};return t.$$set=e=>{"events"in e&&a(3,o=e.events),"categories"in e&&a(4,s=e.categories),"calendar"in e&&a(5,l=e.calendar)},t.$$.update=()=>{11&t.$$.dirty&&o&&r&&i&&d()},[r,i,c,o,s,l,function(e){ye[e?"unshift":"push"]((()=>{i=e,a(1,i)}))},function(e){ye[e?"unshift":"push"]((()=>{r=e,a(0,r)}))}]}const jo=class extends Ge{constructor(e){super(),Pe(this,e,Ro,Lo,D,{events:3,categories:4,calendar:5},Oo)}};function _o(e){R(e,"svelte-3pptg2",".day.svelte-3pptg2{background-color:transparent;border:2px solid transparent;border-radius:4px;color:var(--color-text-day);cursor:pointer;font-size:0.8em;height:100%;padding:2px;position:relative;text-align:center;vertical-align:baseline;overflow:visible;display:flex;flex-flow:column nowrap}.active.svelte-3pptg2{background-color:var(--background-secondary)}.viewing.svelte-3pptg2{border:2px solid var(--background-modifier-border)}.adjacent-month.svelte-3pptg2{opacity:0.25}")}function Vo(e,t,n){const a=e.slice();return a[20]=t[n][0],a[21]=t[n][1],a}function Po(e){let t,n;return t=new jo({props:{events:e[4],categories:e[9],calendar:e[0].calendar}}),{c(){je(t.$$.fragment)},m(e,a){_e(t,e,a),n=!0},p(e,n){const a={};16&n&&(a.events=e[4]),512&n&&(a.categories=e[9]),1&n&&(a.calendar=e[0].calendar),t.$set(a)},i(e){n||(Ne(t.$$.fragment,e),n=!0)},o(e){Oe(t.$$.fragment,e),n=!1},d(e){Ve(t,e)}}}function Go(e){let t,n,a,r=e[5]&&e[10]&&e[10].length&&Ho(e);return n=new ko({props:{events:e[4],categories:e[9],date:e[8],calendar:e[0].calendar}}),n.$on("event-click",e[12]),n.$on("event-mouseover",e[13]),n.$on("event-context",e[14]),{c(){r&&r.c(),t=z(),je(n.$$.fragment)},m(e,i){r&&r.m(e,i),V(e,t,i),_e(n,e,i),a=!0},p(e,a){e[5]&&e[10]&&e[10].length?r?(r.p(e,a),1056&a&&Ne(r,1)):(r=Ho(e),r.c(),Ne(r,1),r.m(t.parentNode,t)):r&&(Ie(),Oe(r,1,1,(()=>{r=null})),Fe());const i={};16&a&&(i.events=e[4]),512&a&&(i.categories=e[9]),256&a&&(i.date=e[8]),1&a&&(i.calendar=e[0].calendar),n.$set(i)},i(e){a||(Ne(r),Ne(n.$$.fragment,e),a=!0)},o(e){Oe(r),Oe(n.$$.fragment,e),a=!1},d(e){r&&r.d(e),e&&P(t),Ve(n,e)}}}function Ho(e){let t,n,a=e[10],r=[];for(let t=0;tOe(r[e],1,1,(()=>{r[e]=null}));return{c(){t=H("div");for(let e=0;e{p[r]=null})),Fe(),o=p[i],o?o.p(e,n):(o=p[i]=f[i](e),o.c()),Ne(o,1),o.m(t,null)),(!c||2&n&&s!==(s=$(e[1]?"adjacent-month fantasy-adjacent-month":"")+" svelte-3pptg2"))&&K(t,"class",s),(!c||5&n&&l!==(l=!e[2]&&e[0].events.length?`${e[0].events.length} event${1==e[0].events.length?"":"s"}`:void 0))&&K(t,"aria-label",l),2&n&&ae(t,"day",!0),2&n&&ae(t,"fantasy-day",!0),130&n&&ae(t,"active",e[7]&&!e[1]),74&n&&ae(t,"viewing",e[3]&&e[6]&&!e[1])},i(e){c||(Ne(o),c=!0)},o(e){Oe(o),c=!1},d(e){e&&P(t),p[i].d(),d=!1,w(u)}}}function zo(e,t,n){let a,r,i,o,s;const l=he();let c,d,{day:u}=t,{adjacent:h}=t,{fullView:f}=t,p=[];return pe("dayView").subscribe((e=>n(3,c=e))),pe("displayMoons").subscribe((e=>n(5,d=e))),u.calendar.on("month-update",(()=>{n(7,o=u.isCurrentDay),n(6,s=u.isDisplaying)})),u.calendar.on("day-update",(()=>{n(7,o=u.isCurrentDay),n(6,s=u.isDisplaying)})),e.$$set=e=>{"day"in e&&n(0,u=e.day),"adjacent"in e&&n(1,h=e.adjacent),"fullView"in e&&n(2,f=e.fullView)},e.$$.update=()=>{3&e.$$.dirty&&(h||n(4,p=u.events)),1&e.$$.dirty&&n(10,a=u.moons),1&e.$$.dirty&&n(9,r=u.calendar.object.categories),1&e.$$.dirty&&n(8,i=u.date),1&e.$$.dirty&&n(7,o=u.isCurrentDay),1&e.$$.dirty&&n(6,s=u.isDisplaying),8&e.$$.dirty&&n(3,c)},[u,h,f,c,p,d,s,o,i,r,a,l,function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},()=>l("day-click",u),()=>l("day-doubleclick",u),e=>l("day-context-menu",{day:u,evt:e})]}const Yo=class extends Ge{constructor(e){super(),Pe(this,e,zo,Uo,D,{day:0,adjacent:1,fullView:2},_o)}};function Zo(e){R(e,"svelte-1xujcmn",".fantasy-month.svelte-1xujcmn{display:grid;grid-template-columns:repeat(\n var(--calendar-columns),\n var(--column-widths)\n );grid-auto-rows:var(--calendar-rows)}.full-view.svelte-1xujcmn{height:100%;margin-bottom:0.5rem}.month.svelte-1xujcmn{border-radius:1rem;padding:0.25rem}.month-name.svelte-1xujcmn{margin:0}.month.svelte-1xujcmn .fantasy-day.day{padding:0px}")}function Ko(e,t,n){const a=e.slice();return a[16]=t[n],a}function Qo(e,t,n){const a=e.slice();return a[16]=t[n],a}function Jo(e,t,n){const a=e.slice();return a[16]=t[n],a}function Xo(e){let t,n,a=e[1].name+"";return{c(){t=H("h3"),n=U(a),K(t,"class","month-name svelte-1xujcmn")},m(e,a){V(e,t,a),L(t,n)},p(e,t){2&t&&a!==(a=e[1].name+"")&&J(n,a)},d(e){e&&P(t)}}}function es(e){let t;return{c(){t=H("div")},m(e,n){V(e,t,n)},p:g,i:g,o:g,d(e){e&&P(t)}}}function ts(e){let t,n;return t=new Yo({props:{day:e[16],adjacent:!0,fullView:e[3]}}),{c(){je(t.$$.fragment)},m(e,a){_e(t,e,a),n=!0},p(e,n){const a={};256&n&&(a.day=e[16]),8&n&&(a.fullView=e[3]),t.$set(a)},i(e){n||(Ne(t.$$.fragment,e),n=!0)},o(e){Oe(t.$$.fragment,e),n=!1},d(e){Ve(t,e)}}}function ns(e){let t,n,a,r;const i=[ts,es],o=[];function s(e,t){return e[5]&&null!=e[16]?0:1}return t=s(e),n=o[t]=i[t](e),{c(){n.c(),a=Y()},m(e,n){o[t].m(e,n),V(e,a,n),r=!0},p(e,r){let l=t;t=s(e),t===l?o[t].p(e,r):(Ie(),Oe(o[l],1,1,(()=>{o[l]=null})),Fe(),n=o[t],n?n.p(e,r):(n=o[t]=i[t](e),n.c()),Ne(n,1),n.m(a.parentNode,a))},i(e){r||(Ne(n),r=!0)},o(e){Oe(n),r=!1},d(e){o[t].d(e),e&&P(a)}}}function as(e){let t,n;return t=new Yo({props:{day:e[16],adjacent:!1,fullView:e[3]}}),t.$on("day-click",e[10]),t.$on("day-doubleclick",e[11]),t.$on("day-context-menu",e[12]),t.$on("event-click",e[13]),t.$on("event-mouseover",e[14]),t.$on("event-context",e[15]),{c(){je(t.$$.fragment)},m(e,a){_e(t,e,a),n=!0},p(e,n){const a={};128&n&&(a.day=e[16]),8&n&&(a.fullView=e[3]),t.$set(a)},i(e){n||(Ne(t.$$.fragment,e),n=!0)},o(e){Oe(t.$$.fragment,e),n=!1},d(e){Ve(t,e)}}}function rs(e){let t;return{c(){t=H("div")},m(e,n){V(e,t,n)},p:g,i:g,o:g,d(e){e&&P(t)}}}function is(e){let t,n;return t=new Yo({props:{day:e[16],adjacent:!0,fullView:e[3]}}),{c(){je(t.$$.fragment)},m(e,a){_e(t,e,a),n=!0},p(e,n){const a={};64&n&&(a.day=e[16]),8&n&&(a.fullView=e[3]),t.$set(a)},i(e){n||(Ne(t.$$.fragment,e),n=!0)},o(e){Oe(t.$$.fragment,e),n=!1},d(e){Ve(t,e)}}}function os(e){let t,n,a,r;const i=[is,rs],o=[];function s(e,t){return e[5]?0:1}return t=s(e),n=o[t]=i[t](e),{c(){n.c(),a=Y()},m(e,n){o[t].m(e,n),V(e,a,n),r=!0},p(e,r){let l=t;t=s(e),t===l?o[t].p(e,r):(Ie(),Oe(o[l],1,1,(()=>{o[l]=null})),Fe(),n=o[t],n?n.p(e,r):(n=o[t]=i[t](e),n.c()),Ne(n,1),n.m(a.parentNode,a))},i(e){r||(Ne(n),r=!0)},o(e){Oe(n),r=!1},d(e){o[t].d(e),e&&P(a)}}}function ss(e){let t,n,a,r,i=e[8],o=[];for(let t=0;tOe(o[e],1,1,(()=>{o[e]=null}));let l=e[7],c=[];for(let t=0;tOe(c[e],1,1,(()=>{c[e]=null}));let u=e[6],h=[];for(let t=0;tOe(h[e],1,1,(()=>{h[e]=null}));return{c(){t=H("div");for(let e=0;e{"yearView"in e&&n(0,s=e.yearView),"month"in e&&n(1,l=e.month),"columns"in e&&n(2,c=e.columns),"fullView"in e&&n(3,d=e.fullView),"weeks"in e&&n(4,u=e.weeks),"showPad"in e&&n(5,h=e.showPad)},e.$$.update=()=>{2&e.$$.dirty&&n(9,a=l.calendar.getPaddedDaysForMonth(l)),512&e.$$.dirty&&n(8,r=a.previous),2&e.$$.dirty&&n(7,i=l.days),512&e.$$.dirty&&n(6,o=a.next)},[s,l,c,d,u,h,o,i,r,a,function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)}]}const ds=class extends Ge{constructor(e){super(),Pe(this,e,cs,ls,D,{yearView:0,month:1,columns:2,fullView:3,weeks:4,showPad:5},Zo)}};function us(e){R(e,"svelte-1kua7ca",".fantasy-nav.nav.nav.svelte-1kua7ca{padding:10px 0px;margin:0;display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:stretch}.container.svelte-1kua7ca{display:flex;align-items:center}.fantasy-title.svelte-1kua7ca{margin:0;line-height:1.25}.fantasy-right-nav.svelte-1kua7ca{display:flex;justify-content:center;align-items:flex-start}.calendar-clickable.svelte-1kua7ca{align-items:center;cursor:pointer;display:flex;justify-content:center}")}function hs(e){let t,n,a,r,i,o,s,l,c,d,u,h,f,p,m,y,v,b,x,D,k,E,C,A;return{c(){t=H("div"),n=H("h3"),a=H("span"),r=U(e[0]),i=z(),o=H("span"),s=U(e[1]),l=z(),c=H("div"),d=H("div"),u=H("div"),f=z(),p=H("div"),m=H("span"),m.textContent="Today",v=z(),b=H("div"),D=z(),k=H("div"),K(a,"class","fantasy-month month"),K(o,"class","fantasy-year year"),K(n,"class","fantasy-title title svelte-1kua7ca"),K(u,"class","arrow calendar-clickable svelte-1kua7ca"),K(u,"aria-label","Previous Month"),K(p,"class","reset-button calendar-clickable svelte-1kua7ca"),K(p,"aria-label",y="Today is "+e[2]),K(b,"class","arrow right calendar-clickable svelte-1kua7ca"),K(b,"aria-label","Next Month"),K(k,"class","calendar-clickable svelte-1kua7ca"),K(k,"aria-label","Calendar Settings"),K(d,"class","container svelte-1kua7ca"),K(c,"class","right-nav fantasy-right-nav svelte-1kua7ca"),K(t,"class","fantasy-nav nav svelte-1kua7ca")},m(g,y){V(g,t,y),L(t,n),L(n,a),L(a,r),L(n,i),L(n,o),L(o,s),L(t,l),L(t,c),L(c,d),L(d,u),L(d,f),L(d,p),L(p,m),L(d,v),L(d,b),L(d,D),L(d,k),C||(A=[M(h=e[4].call(null,u)),Z(u,"click",e[7]),Z(p,"click",e[8]),M(x=e[5].call(null,b)),Z(b,"click",e[9]),M(E=e[6].call(null,k)),Z(k,"click",e[10])],C=!0)},p(e,[t]){1&t&&J(r,e[0]),2&t&&J(s,e[1]),4&t&&y!==(y="Today is "+e[2])&&K(p,"aria-label",y)},i:g,o:g,d(e){e&&P(t),C=!1,w(A)}}}function fs(e,n,a){const r=he();let{month:i}=n,{year:o}=n,{current:s}=n;return e.$$set=e=>{"month"in e&&a(0,i=e.month),"year"in e&&a(1,o=e.year),"current"in e&&a(2,s=e.current)},[i,o,s,r,e=>{new t.ExtraButtonComponent(e).setIcon("left-arrow")},e=>{new t.ExtraButtonComponent(e).setIcon("right-arrow")},e=>{new t.ExtraButtonComponent(e).setIcon("gear")},()=>r("previous"),()=>r("reset"),e=>r("next"),e=>r("settings",e)]}const ps=class extends Ge{constructor(e){super(),Pe(this,e,fs,hs,D,{month:0,year:1,current:2},us)}};function ms(e){R(e,"svelte-i3pajt","#calendar-container .fantasy-nav.nav.nav.svelte-i3pajt{padding:0;margin:0;display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;position:sticky;top:0;z-index:2}.fantasy-year-nav.svelte-i3pajt{display:flex;align-items:center;margin-right:auto}.container.svelte-i3pajt{display:flex;align-items:center}.fantasy-title.svelte-i3pajt{margin:0}.fantasy-right-nav.svelte-i3pajt{display:flex;justify-content:center;align-items:flex-start}.calendar-clickable.svelte-i3pajt{align-items:center;cursor:pointer;display:flex;justify-content:center}")}function gs(e){let t,n,a,r;return{c(){t=H("div"),K(t,"class","arrow calendar-clickable svelte-i3pajt"),K(t,"aria-label","Previous Year")},m(i,o){V(i,t,o),a||(r=[M(n=e[4].call(null,t)),Z(t,"click",e[7])],a=!0)},p:g,d(e){e&&P(t),a=!1,w(r)}}}function ys(e){let t,n,a,r;return{c(){t=H("div"),K(t,"class","arrow right calendar-clickable svelte-i3pajt"),K(t,"aria-label","Next Year")},m(i,o){V(i,t,o),a||(r=[M(n=e[5].call(null,t)),Z(t,"click",e[9])],a=!0)},p:g,d(e){e&&P(t),a=!1,w(r)}}}function vs(e){let t,n,a,r,i,o,s,l,c,d,u,h,f,p,m,y,v,b,x=e[1]&&gs(e),D=e[1]&&ys(e);return{c(){t=H("div"),n=H("div"),a=H("h2"),r=H("span"),i=U(e[0]),o=z(),s=H("div"),l=H("div"),x&&x.c(),c=z(),d=H("div"),u=H("span"),u.textContent="Today",f=z(),D&&D.c(),p=z(),m=H("div"),K(r,"class","fantasy-year"),K(a,"class","fantasy-title svelte-i3pajt"),K(n,"class","fantasy-year-nav svelte-i3pajt"),K(d,"class","reset-button calendar-clickable svelte-i3pajt"),K(d,"aria-label",h="Today is "+e[2]),K(m,"class","calendar-clickable svelte-i3pajt"),K(m,"aria-label","Calendar Settings"),K(l,"class","container svelte-i3pajt"),K(s,"class","right-nav fantasy-right-nav svelte-i3pajt"),K(t,"class","fantasy-nav nav svelte-i3pajt")},m(h,g){V(h,t,g),L(t,n),L(n,a),L(a,r),L(r,i),L(t,o),L(t,s),L(s,l),x&&x.m(l,null),L(l,c),L(l,d),L(d,u),L(l,f),D&&D.m(l,null),L(l,p),L(l,m),v||(b=[Z(d,"click",e[8]),M(y=e[6].call(null,m)),Z(m,"click",e[10])],v=!0)},p(e,[t]){1&t&&J(i,e[0]),e[1]?x?x.p(e,t):(x=gs(e),x.c(),x.m(l,c)):x&&(x.d(1),x=null),4&t&&h!==(h="Today is "+e[2])&&K(d,"aria-label",h),e[1]?D?D.p(e,t):(D=ys(e),D.c(),D.m(l,p)):D&&(D.d(1),D=null)},i:g,o:g,d(e){e&&P(t),x&&x.d(),D&&D.d(),v=!1,w(b)}}}function bs(e,n,a){const r=he();let{year:i}=n,{arrows:o=!1}=n,{current:s}=n;return e.$$set=e=>{"year"in e&&a(0,i=e.year),"arrows"in e&&a(1,o=e.arrows),"current"in e&&a(2,s=e.current)},[i,o,s,r,e=>{new t.ExtraButtonComponent(e).setIcon("left-arrow")},e=>{new t.ExtraButtonComponent(e).setIcon("right-arrow")},e=>{new t.ExtraButtonComponent(e).setIcon("gear")},()=>r("previous"),()=>r("reset"),e=>r("next"),e=>r("settings",e)]}const ws=class extends Ge{constructor(e){super(),Pe(this,e,bs,vs,D,{year:0,arrows:1,current:2},ms)}};function xs(e){R(e,"svelte-15hvixf",".year-view.svelte-15hvixf{height:100%;position:relative;display:flex;flex-direction:column}.year.svelte-15hvixf{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1rem;overflow:auto;flex:1}.year.svelte-15hvixf:not(.full-view){grid-template-columns:1fr}")}function Ds(e){let t,n,a,r,i,o,s;return n=new ws({props:{year:e[3],current:e[0]}}),n.$on("next",e[9]),n.$on("previous",e[10]),n.$on("reset",e[11]),n.$on("settings",e[12]),{c(){t=H("div"),je(n.$$.fragment),a=z(),r=H("div"),K(r,"class","year svelte-15hvixf"),ae(r,"full-view",e[1]),K(t,"class","year-view svelte-15hvixf")},m(l,c){V(l,t,c),_e(n,t,null),L(t,a),L(t,r),e[13](r),i=!0,o||(s=Z(r,"scroll",e[5],{once:!0}),o=!0)},p(e,[t]){const a={};8&t&&(a.year=e[3]),1&t&&(a.current=e[0]),n.$set(a),2&t&&ae(r,"full-view",e[1])},i(e){i||(Ne(n.$$.fragment,e),i=!0)},o(e){Oe(n.$$.fragment,e),i=!1},d(a){a&&P(t),Ve(n),e[13](null),o=!1,s()}}}function ks(t,n,a){let r;const i=he();let o,s,l,c,{current:d}=n,{year:u}=n,{columns:h}=n,{fullView:f}=n;pe("calendar").subscribe((e=>{a(8,c=e)}));const p=[],m=pe("dayView"),g=pe("displayMoons"),y=new IntersectionObserver(((e,t)=>{t===y&&e.length&&e[0].isIntersecting&&(y.disconnect(),(c.canGoToNextYear(l.year)||l.number!==c.data.months.length-1)&&(w(),A(p.shift()),v()))}),{root:o,rootMargin:"0px",threshold:.25}),v=()=>{const e=o.children[o.children.length-2];e&&y.observe(e)},b=new IntersectionObserver(((e,t)=>{if(t!==b)return;if(!e&&!e.length)return;if(e[0].isIntersecting)return;const n=o.getBoundingClientRect();e[0].boundingClientRect.top{var t,n;if(c.canGoToNextYear(l.year)||l.number!==c.data.months.length-1){if(l=c.getMonth(l.number+1,l.year),0===l.number&&!(o.lastElementChild instanceof HTMLHeadingElement)){const e=o.createEl("h2",{text:c.getNameForYear(l.year),cls:"fantasy-title"});p.push(e),b.disconnect(),b.observe(e)}p.push(C(l,!1)),e&&(s=c.getMonth((null!==(t=null==s?void 0:s.number)&&void 0!==t?t:0)+1,null!==(n=null==s?void 0:s.year)&&void 0!==n?n:1)),D()}},x=new IntersectionObserver(((e,t)=>{t===x&&e.length&&e[0].isIntersecting&&(x.disconnect(),s&&(E(),A(p.pop()),D()))}),{root:o,rootMargin:"0px",threshold:.25}),D=()=>{const e=o.children[1];e&&x.observe(e)},k=new IntersectionObserver(((e,t)=>{t===k&&(e||e.length)&&e[0].isIntersecting&&(a(6,u-=1),b.observe(e[0].target),k.disconnect())}),{root:o,rootMargin:"0px",threshold:0}),E=(e=!0)=>{if(s=c.getMonth(s.number-1,s.year),s){if(p.unshift(C(s,!0)),0===s.number&&!(o.firstElementChild instanceof HTMLHeadingElement)){const e=createEl("h2",{text:c.getNameForYear(s.year),cls:"fantasy-title"});o.prepend(e),p.unshift(e),k.disconnect(),k.observe(e)}e&&(l=c.getMonth(l.number-1,l.year)),v()}},C=(e,t)=>{const n=new ds({target:o,anchor:t?o.children[0]:null,props:{month:e,fullView:!1,yearView:!0,columns:h,weeks:c.weekdays.length,showPad:!1},context:new Map([["dayView",m],["displayMoons",g]])});return n.$on("day-click",(e=>i("day-click",e.detail))),n.$on("day-doubleclick",(e=>i("day-doubleclick",e.detail))),n.$on("day-context-menu",(e=>i("day-context-menu",e.detail))),n.$on("event-mouseover",(e=>i("event-mouseover",e.detail))),n.$on("event-mouseover",(e=>i("event-mouseover",e.detail))),n},A=e=>{e instanceof HTMLHeadingElement?e.detach():e.$destroy()},T=(t=!1)=>e(void 0,void 0,void 0,(function*(){for(let e of p)A(e);p.splice(0,p.length),o.empty(),yield ke(),a(6,u=c.current.year),s=c.getMonth(c.displayed.month-1,c.displayed.year),l=s;for(let e=0;e{x.disconnect(),y.disconnect(),k.disconnect(),b.disconnect()},de().$$.on_destroy.push(S),ue(T);const $=()=>e(void 0,void 0,void 0,(function*(){yield ke(),x.observe(o.children[1]),y.observe(o.children[o.children.length-2])}));return t.$$set=e=>{"current"in e&&a(0,d=e.current),"year"in e&&a(6,u=e.year),"columns"in e&&a(7,h=e.columns),"fullView"in e&&a(1,f=e.fullView)},t.$$.update=()=>{320&t.$$.dirty&&a(3,r=c.getNameForYear(u))},[d,f,o,r,T,$,u,h,c,function(e){me.call(this,t,e)},function(e){me.call(this,t,e)},()=>T(!0),function(e){me.call(this,t,e)},function(e){ye[e?"unshift":"push"]((()=>{o=e,a(2,o)}))}]}const Es=class extends Ge{constructor(e){super(),Pe(this,e,ks,Ds,D,{current:0,year:6,columns:7,fullView:1},xs)}};function Cs(e){R(e,"svelte-ztrrn8",".year.svelte-ztrrn8{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1rem;overflow:auto;flex:1}.year.svelte-ztrrn8:not(.full-view){grid-template-columns:1fr}")}function As(e,t,n){const a=e.slice();return a[8]=t[n],a}function Ts(e){let t,n;return t=new ds({props:{month:e[8],fullView:!1,yearView:!0,columns:e[2],weeks:e[8].calendar.weekdays.length,showPad:!1}}),t.$on("day-click",e[3]),t.$on("day-doubleclick",e[4]),t.$on("day-context-menu",e[5]),t.$on("event-click",e[6]),t.$on("event-mouseover",e[7]),{c(){je(t.$$.fragment)},m(e,a){_e(t,e,a),n=!0},p(e,n){const a={};2&n&&(a.month=e[8]),4&n&&(a.columns=e[2]),2&n&&(a.weeks=e[8].calendar.weekdays.length),t.$set(a)},i(e){n||(Ne(t.$$.fragment,e),n=!0)},o(e){Oe(t.$$.fragment,e),n=!1},d(e){Ve(t,e)}}}function Ss(e){let t,n,a=e[1],r=[];for(let t=0;tOe(r[e],1,1,(()=>{r[e]=null}));return{c(){t=H("div");for(let e=0;e{"fullView"in e&&n(0,a=e.fullView),"months"in e&&n(1,r=e.months),"columns"in e&&n(2,i=e.columns)},[a,r,i,function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)}]}const Ms=class extends Ge{constructor(e){super(),Pe(this,e,$s,Ss,D,{fullView:0,months:1,columns:2},Cs)}};function qs(e){R(e,"svelte-1xpvbi",".year-view.svelte-1xpvbi{height:100%;position:relative;display:flex;flex-direction:column}.year-container.svelte-1xpvbi{flex:1;overflow:auto}")}function Is(e){let t,n,a,r,i;return n=new ws({props:{year:e[2],current:e[0],arrows:!0}}),n.$on("next",e[9]),n.$on("previous",e[10]),n.$on("reset",e[11]),n.$on("settings",e[12]),{c(){t=H("div"),je(n.$$.fragment),a=z(),r=H("div"),K(r,"class","year-container svelte-1xpvbi"),K(t,"class","year-view svelte-1xpvbi")},m(o,s){V(o,t,s),_e(n,t,null),L(t,a),L(t,r),e[13](r),i=!0},p(e,[t]){const a={};4&t&&(a.year=e[2]),1&t&&(a.current=e[0]),n.$set(a)},i(e){i||(Ne(n.$$.fragment,e),i=!0)},o(e){Oe(n.$$.fragment,e),i=!1},d(a){a&&P(t),Ve(n),e[13](null)}}}function Fs(n,a,r){let i;const o=he(),s=pe("calendar"),l=pe("dayView"),c=pe("displayMoons");let d;s.subscribe((e=>{r(8,d=e)}));let u,{year:h}=a,{current:f}=a,{columns:p}=a;const m=(e,t=!1)=>{const n=d.getMonthsForYear(e),a=new Ms({target:u,anchor:t?u.children[0]:null,props:{months:n,fullView:!0,columns:p},context:new Map([["dayView",l],["displayMoons",c]])});return a.$on("day-click",(e=>o("day-click",e.detail))),a.$on("day-doubleclick",(e=>o("day-doubleclick",e.detail))),a.$on("day-context-menu",(e=>o("day-context-menu",e.detail))),a.$on("event-mouseover",(e=>o("event-mouseover",e.detail))),a.$on("event-mouseover",(e=>o("event-mouseover",e.detail))),a},g=[],y=()=>{d.canGoToNextYear(h)?(r(6,h+=1),w(h)):new t.Notice("This is the last year. Additional years can be created in settings.")},v=()=>{1!==h?(r(6,h-=1),w(h)):new t.Notice("This is the earliest year.")},b=()=>{r(6,h=d.current.year),w(h)},w=t=>e(void 0,void 0,void 0,(function*(){g.forEach((e=>{var t;(t=e)instanceof HTMLHeadingElement?t.detach():t.$destroy()})),u.empty(),yield ke(),t=t,g.push(m(t))}));return ue((()=>g.push(m(h)))),n.$$set=e=>{"year"in e&&r(6,h=e.year),"current"in e&&r(0,f=e.current),"columns"in e&&r(7,p=e.columns)},n.$$.update=()=>{320&n.$$.dirty&&r(2,i=d.getNameForYear(h))},[f,u,i,y,v,b,h,p,d,()=>y(),()=>v(),()=>b(),function(e){me.call(this,n,e)},function(e){ye[e?"unshift":"push"]((()=>{u=e,r(1,u)}))}]}const Ns=class extends Ge{constructor(e){super(),Pe(this,e,Fs,Is,D,{year:6,current:0,columns:7},qs)}};function Os(e){R(e,"svelte-1kty1w6","#calendar-container.year-view.svelte-1kty1w6.svelte-1kty1w6{height:100%}#calendar-container.fantasy-calendar.full-view.svelte-1kty1w6.svelte-1kty1w6{width:100%;padding:0 0.5rem 0.5rem;height:100%;display:flex;flex-flow:column}.fantasy-calendar.full-view.svelte-1kty1w6 .month-container.svelte-1kty1w6{height:100%}.month-container.svelte-1kty1w6.svelte-1kty1w6{display:flex}.month-view.svelte-1kty1w6.svelte-1kty1w6{flex-grow:2}.weeks.svelte-1kty1w6.svelte-1kty1w6{display:grid;grid-template-rows:auto 1fr}.week-num-container.svelte-1kty1w6.svelte-1kty1w6{display:grid;grid-template-rows:repeat(var(--calendar-rows), auto);padding:0.25rem 0}.week-num.svelte-1kty1w6.svelte-1kty1w6{background-color:transparent;border:2px solid transparent;border-radius:4px;color:var(--color-text-day);cursor:pointer;font-size:0.8em;height:100%;padding:2px;position:relative;text-align:center;vertical-align:baseline;overflow:visible}.weekdays.svelte-1kty1w6.svelte-1kty1w6{display:grid;grid-template-columns:repeat(var(--calendar-columns), 1fr);grid-template-rows:auto;padding:0 0.25rem;gap:2px}.weekday.svelte-1kty1w6.svelte-1kty1w6{background-color:var(--color-background-heading);color:var(--color-text-heading);font-size:0.6em;letter-spacing:1px;padding:4px;text-transform:uppercase;text-align:center;border:2px solid transparent}hr.svelte-1kty1w6.svelte-1kty1w6{margin:1rem 0}.moon-container{display:flex;flex-flow:row wrap;align-items:center;justify-content:center}")}function Bs(e,t,n){const a=e.slice();return a[48]=t[n],a}function Ls(e,t,n){const a=e.slice();return a[51]=t[n],a}function Rs(e){let t,n,a,r,i,o,s,l,c,d;t=new ps({props:{month:e[5].name,year:e[8],current:e[3].displayedDate}}),t.$on("next",e[30]),t.$on("previous",e[31]),t.$on("reset",e[32]),t.$on("settings",e[33]);let u=e[4]&&Vs(e),h=e[10],f=[];for(let t=0;t{l[u]=null})),Fe(),a=l[n],a?a.p(e,r):(a=l[n]=s[n](e),a.c()),Ne(a,1),a.m(t,null)),(!o||8&r[0])&&ee(t,"--calendar-columns",e[3].weekdays.length),(!o||8&r[0])&&ee(t,"--column-widths",1/e[3].weekdays.length*100+"%"),(!o||8&r[0])&&ee(t,"--calendar-rows",e[3].weeksPerCurrentMonth),2&r[0]&&ae(t,"full-view",e[1]),4&r[0]&&ae(t,"year-view",e[2]),e[0]&&!e[1]?d?(d.p(e,r),3&r[0]&&Ne(d,1)):(d=Hs(e),d.c(),Ne(d,1),d.m(i.parentNode,i)):d&&(Ie(),Oe(d,1,1,(()=>{d=null})),Fe())},i(e){o||(Ne(a),Ne(d),o=!0)},o(e){Oe(a),Oe(d),o=!1},d(e){e&&P(t),l[n].d(),e&&P(r),d&&d.d(e),e&&P(i)}}}function Us(e,t,n){let a,r,i,o,s,l,{fullView:c=!1}=t,{dayView:d=!1}=t,{yearView:u=!1}=t,{calendar:h}=t,{moons:f}=t,{displayWeeks:p}=t;const m=ho(d),g=ho(f),y=ho(h);return fe("dayView",m),fe("displayMoons",g),fe("calendar",y),h.on("month-update",(()=>{n(9,r=h.displayed.year),n(8,i=h.getNameForYear(h.displayed.year)),n(5,o=h.currentMonth),n(6,l=h.weeksOfMonth(o)),n(7,s=h.weekNumbersOfMonth(o))})),e.$$set=e=>{"fullView"in e&&n(1,c=e.fullView),"dayView"in e&&n(0,d=e.dayView),"yearView"in e&&n(2,u=e.yearView),"calendar"in e&&n(3,h=e.calendar),"moons"in e&&n(11,f=e.moons),"displayWeeks"in e&&n(4,p=e.displayWeeks)},e.$$.update=()=>{4&e.$$.dirty[0]&&u&&n(0,d=!1),1&e.$$.dirty[0]&&m.set(d),2048&e.$$.dirty[0]&&g.set(f),8&e.$$.dirty[0]&&y.set(h),8&e.$$.dirty[0]&&n(10,a=h.weekdays),8&e.$$.dirty[0]&&n(9,r=h.displayed.year),8&e.$$.dirty[0]&&n(8,i=h.getNameForYear(h.displayed.year)),8&e.$$.dirty[0]&&n(5,o=h.currentMonth),40&e.$$.dirty[0]&&n(7,s=h.weekNumbersOfMonth(o)),40&e.$$.dirty[0]&&n(6,l=h.weeksOfMonth(o))},[d,c,u,h,p,o,l,s,i,r,a,f,()=>h.goToNextYear(),()=>h.goToPreviousYear(),function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},()=>h.goToNextYear(),()=>h.goToPreviousYear(),function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},()=>h.goToNext(),()=>h.goToPrevious(),function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},()=>n(0,d=!1),function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)},function(t){me.call(this,e,t)}]}const zs=class extends Ge{constructor(e){super(),Pe(this,e,Us,Ws,D,{fullView:1,dayView:0,yearView:2,calendar:3,moons:11,displayWeeks:4},Os,[-1,-1])}},Ys="FANTASY_CALENDAR",Zs="FANTASY_CALENDAR_FULL_VIEW";(0,t.addIcon)(Ys,''),(0,t.addIcon)("fantasy-calendar-reveal",'');class Ks extends t.ItemView{constructor(e,t,n={}){super(t),this.plugin=e,this.leaf=t,this.options=n,this.updateMe=!0,this.yearView=!1,this.moons=!0,this.registerEvent(this.plugin.app.workspace.on("fantasy-calendars-updated",(()=>{this.updateCalendars()}))),this.registerEvent(this.plugin.app.workspace.on("layout-change",(()=>{this._app&&this._app.$set(Object.assign({fullView:this.full},this.full?{dayView:!1}:{}))})))}get root(){return this.leaf.getRoot()}get full(){return!("collapse"in this.root)}updateCalendars(){var e,t,n;if(!this.updateMe)return void(this.updateMe=!0);if(!this.plugin.data.calendars.length)return null===(e=this._app)||void 0===e||e.$destroy(),this.contentEl.empty(),this.noCalendarEl=this.contentEl.createDiv("fantasy-no-calendar"),void this.noCalendarEl.createSpan({text:"No calendars created! Create a calendar to see it here."});const a=null!==(n=null!==(t=this.plugin.data.calendars.find((e=>{var t;return e.id==(null===(t=this.calendar)||void 0===t?void 0:t.id)})))&&void 0!==t?t:this.plugin.defaultCalendar)&&void 0!==n?n:this.plugin.data.calendars[0];this.helper&&this.helper.object.id==a.id?this.update(a):this.setCurrentCalendar(a)}update(e){this.calendar=e,this.helper.update(this.calendar),this.registerCalendarInterval(),this._app?this._app.$set({calendar:this.helper}):this.build()}registerCalendarInterval(){if(this.interval&&(clearInterval(this.interval),this.interval=null),this.calendar.static.incrementDay){let e=new Date;this.calendar.date||(this.calendar.date=e.valueOf());const t=s(new Date(this.calendar.date),e);if(t>=1){for(let e=0;e{s(new Date,e)>=1&&(this.helper.goToNextCurrentDay(),this.helper.current,e=new Date,this.calendar.date=e.valueOf(),this.plugin.saveSettings())}),6e4),this.registerInterval(this.interval)}}setCurrentCalendar(e){var t;null===(t=this.noCalendarEl)||void 0===t||t.detach(),this.calendar=e,this.moons=this.calendar.static.displayMoons,this.helper=new co(this.calendar,this.plugin),this.registerCalendarInterval(),this.build()}createEventForDay(e){const t=new Ti(this.app,this.calendar,null,e);t.onClose=()=>{t.saved&&(this.calendar.events.push(t.event),this.plugin.saveSettings(),this._app.$set({calendar:this.helper}),this.triggerHelperEvent("day-update"))},t.open()}onOpen(){return e(this,void 0,void 0,(function*(){this.updateCalendars()}))}build(){this.contentEl.empty(),this._app=new zs({target:this.contentEl,props:{calendar:this.helper,fullView:this.full,yearView:this.yearView,moons:this.moons,displayWeeks:this.helper.displayWeeks}}),this._app.$on("day-click",(e=>{const t=e.detail;t.events.length||this.createEventForDay(t.date)})),this._app.$on("day-doubleclick",(e=>{const t=e.detail;t.events.length&&(this.helper.viewing.day=t.number,this.helper.viewing.month=this.helper.displayed.month,this.helper.viewing.year=this.helper.displayed.year,this.yearView=!1,this._app.$set({yearView:!1}),this._app.$set({dayView:!0}),this.triggerHelperEvent("day-update",!1))})),this._app.$on("day-context-menu",(e=>{const{day:n,evt:a}=e.detail,r=new t.Menu(this.app);r.setNoIcon(),this.full||r.addItem((e=>{e.setTitle("Open Day").onClick((()=>{this.helper.viewing.day=n.number,this.helper.viewing.month=this.helper.displayed.month,this.helper.viewing.year=this.helper.displayed.year,this.yearView=!1,this._app.$set({yearView:!1}),this._app.$set({dayView:!0}),this.triggerHelperEvent("day-update",!1)}))})),r.addItem((e=>{e.setTitle("Set as Today").onClick((()=>{this.calendar.current=n.date,this.helper.current.day=n.number,this.triggerHelperEvent("day-update"),this.plugin.saveSettings()}))})),r.addItem((e=>e.setTitle("New Event").onClick((()=>{this.createEventForDay(n.date)})))),r.showAtMouseEvent(a)})),this._app.$on("settings",(e=>{const n=e.detail,a=new t.Menu(this.app);a.setNoIcon(),a.addItem((e=>{e.setTitle((this.calendar.displayWeeks?"Hide":"Show")+" Weeks").onClick((()=>{this.calendar.displayWeeks=!this.calendar.displayWeeks,this.helper.update(this.calendar),this._app.$set({displayWeeks:this.calendar.displayWeeks}),this.plugin.saveSettings()}))})),a.addItem((e=>{e.setTitle("Open "+(this.yearView?"Month":"Year")).onClick((()=>{this.yearView=!this.yearView,this._app.$set({yearView:this.yearView})}))})),a.addItem((e=>{e.setTitle(this.moons?"Hide Moons":"Display Moons").onClick((()=>{this.toggleMoons()}))})),a.addItem((e=>{e.setTitle("View Day"),e.onClick((()=>{const e=new Js(this.plugin,this.calendar);e.onClose=()=>{e.confirmed&&(e.setCurrent?(this.calendar.current=Object.assign({},e.date),this.setCurrentCalendar(this.calendar)):(this.helper.displayed=Object.assign({},e.date),this.helper.update(),this._app.$set({calendar:this.helper})),this.plugin.saveSettings())},e.open()}))})),a.addItem((e=>{e.setTitle("Switch Calendars"),e.setDisabled(this.plugin.data.calendars.length<=1),e.onClick((()=>{const e=new Qs(this.plugin,this.calendar);e.onClose=()=>{e.confirmed&&this.setCurrentCalendar(e.calendar)},e.open()}))})),a.showAtMouseEvent(n)})),this._app.$on("event-click",(e=>{const{event:n,modifier:a}=e.detail;if(n.note){let e=[];this.app.workspace.iterateAllLeaves((a=>{a.view instanceof t.MarkdownView&&a.view.file.basename===n.note&&e.push(a)})),e.length?this.app.workspace.setActiveLeaf(e[0]):this.app.workspace.openLinkText(n.note,"",this.full||a)}else new Xs(n,this.plugin).open()})),this._app.$on("event-mouseover",(e=>{if(!this.plugin.data.eventPreview)return;const{target:t,event:n}=e.detail;n.note&&this.app.workspace.trigger("link-hover",this,t,n.note,"")})),this._app.$on("event-context",(n=>{const{evt:a,event:r}=n.detail,i=new t.Menu(this.app);i.setNoIcon(),r.note||i.addItem((n=>{n.setTitle("Create Note").onClick((()=>e(this,void 0,void 0,(function*(){var e,n,a,i;const o=null===(e=this.app.workspace.getActiveFile())||void 0===e?void 0:e.path,s=o&&null!==(a=null===(n=this.app.fileManager.getNewFileParent(o))||void 0===n?void 0:n.parent)&&void 0!==a?a:"/",l=`${r.date.year}-${r.date.month+1}-${r.date.day}`;let c;r.end&&(c=`${r.end.year}-${r.end.month+1}-${r.end.day}`);const d=Object.assign(Object.assign({"fc-calendar":this.calendar.name,"fc-date":l},r.end?{"fc-end":c}:{}),r.category?{"fc-category":null===(i=this.calendar.categories.find((e=>e.id==r.category)))||void 0===i?void 0:i.name}:{});r.note=(0,t.normalizePath)(`${s}/${r.name}.md`);let u=this.app.vault.getAbstractFileByPath(r.note);if(u||(u=yield this.app.vault.create(r.note,`---\n${(0,t.stringifyYaml)(d)}\n---`)),this.plugin.saveCalendar(),u instanceof t.TFile){const e=this.app.workspace.getLeavesOfType("markdown").find((e=>{e.view instanceof t.FileView&&(e.view.file.path,r.note)}));e?this.app.workspace.setActiveLeaf(e):yield this.app.workspace.getUnpinnedLeaf().openFile(u,{active:!0})}}))))})),i.addItem((e=>{e.setTitle("Edit Event").onClick((()=>{const e=new Ti(this.app,this.calendar,r);e.onClose=()=>{if(!e.saved)return;const t=this.calendar.events.find((e=>e.id==r.id));this.calendar.events.splice(this.calendar.events.indexOf(t),1,e.event),this.plugin.saveSettings(),this._app.$set({calendar:this.helper}),this.triggerHelperEvent("day-update")},e.open()}))})),i.addItem((t=>{t.setTitle("Delete Event").onClick((()=>e(this,void 0,void 0,(function*(){if(yield nr(this.app,"Are you sure you wish to delete this event?",{cta:"Delete",secondary:"Cancel"})){const e=this.calendar.events.find((e=>e.id==r.id));this.calendar.events.splice(this.calendar.events.indexOf(e),1),this.plugin.saveSettings(),this._app.$set({calendar:this.helper}),this.triggerHelperEvent("day-update")}}))))})),i.showAtMouseEvent(a)})),this._app.$on("event",(e=>{const t=e.detail;this.createEventForDay(t)})),this._app.$on("reset",(()=>{this.helper.reset(),this.yearView=!1,this._app.$set({yearView:!1}),this._app.$set({dayView:!0}),this.triggerHelperEvent("day-update",!1)}))}toggleMoons(){this.moons=!this.moons,this._app.$set({moons:this.moons})}onClose(){return e(this,void 0,void 0,(function*(){}))}onResize(){this.triggerHelperEvent("view-resized",!1)}getViewType(){return Ys}getDisplayText(){return"Fantasy Calendar"}getIcon(){return Ys}triggerHelperEvent(e,t=!0){this.helper&&(this.helper.trigger(e),t&&(this.updateMe=!1,this.plugin.app.workspace.trigger("fantasy-calendars-updated")))}onunload(){return e(this,void 0,void 0,(function*(){}))}}class Qs extends t.Modal{constructor(e,t){super(e.app),this.plugin=e,this.calendar=t,this.confirmed=!1}display(){return e(this,void 0,void 0,(function*(){this.contentEl.empty(),this.contentEl.createEl("h4",{text:"Switch Calendars"});const e=this.contentEl.createDiv("fantasy-calendar-dropdown");e.createEl("label",{text:"Choose a Calendar"}),new t.DropdownComponent(e).onChange((e=>{this.calendar=this.plugin.data.calendars.find((t=>t.id==e))})).addOptions(Object.fromEntries(this.plugin.data.calendars.map((e=>[e.id,e.name])))).setValue(this.calendar?this.calendar.id:null);const n=this.contentEl.createDiv("fantasy-calendar-confirm-buttons");new t.ButtonComponent(n).setButtonText("Switch").setCta().onClick((()=>{this.confirmed=!0,this.close()})),new t.ButtonComponent(n).setButtonText("Cancel").onClick((()=>{this.close()}))}))}onOpen(){this.display()}}class Js extends t.Modal{constructor(e,t){super(e.app),this.plugin=e,this.calendar=t,this.confirmed=!1,this.setCurrent=!1,this.date=Object.assign({},this.calendar.current),this.tempCurrentDays=this.date.day}display(){return e(this,void 0,void 0,(function*(){this.contentEl.empty(),this.contentEl.createEl("h4",{text:"View Day"}),this.dateFieldEl=this.contentEl.createDiv("fantasy-calendar-date-fields"),this.buildDateFields(),new t.Setting(this.contentEl).setName("Set as Current Date").setDesc("Also set this date to today's date.").addToggle((e=>e.setValue(this.setCurrent).onChange((e=>{this.setCurrent=e}))));const e=this.contentEl.createDiv("fantasy-calendar-confirm-buttons");new t.ButtonComponent(e).setButtonText("Switch").setCta().onClick((()=>{this.confirmed=!0,this.date.day=this.tempCurrentDays,this.close()})),new t.ButtonComponent(e).setButtonText("Cancel").onClick((()=>{this.close()}))}))}buildDateFields(){var e,n,a,r,i,o;this.dateFieldEl.empty(),null!=this.tempCurrentDays&&null!=this.date.month&&this.tempCurrentDays>(null===(e=this.calendar.static.months[this.date.month])||void 0===e?void 0:e.length)&&(this.tempCurrentDays=null===(n=this.calendar.static.months[this.date.month])||void 0===n?void 0:n.length);const s=this.dateFieldEl.createDiv("fantasy-calendar-date-field");s.createEl("label",{text:"Day"});const l=new t.TextComponent(s).setPlaceholder("Day").setValue(`${this.tempCurrentDays}`).setDisabled(null==this.date.month).onChange((e=>{var n,a;if(Number(e)<1||(null!==(a=Number(e)>(null===(n=this.calendar.static.months[this.date.month])||void 0===n?void 0:n.length))&&void 0!==a?a:1/0))return new t.Notice(`The current day must be between 1 and ${this.calendar.static.months[this.date.month].length}`),this.tempCurrentDays=this.date.day,void this.buildDateFields();this.tempCurrentDays=Number(e)}));l.inputEl.setAttr("type","number");const c=this.dateFieldEl.createDiv("fantasy-calendar-date-field");c.createEl("label",{text:"Month"}),new t.DropdownComponent(c).addOptions(Object.fromEntries([["select","Select Month"],...this.calendar.static.months.map((e=>[e.name,e.name]))])).setValue(null!=this.date.month?this.calendar.static.months[this.date.month].name:"select").onChange((e=>{"select"===e&&(this.date.month=null);const t=this.calendar.static.months.find((t=>t.name==e));this.date.month=this.calendar.static.months.indexOf(t),this.buildDateFields()}));const d=this.dateFieldEl.createDiv("fantasy-calendar-date-field");if(d.createEl("label",{text:"Year"}),this.calendar.static.useCustomYears){const e=new t.DropdownComponent(d);(null!==(a=this.calendar.static.years)&&void 0!==a?a:[]).forEach((t=>{e.addOption(t.id,t.name)})),this.date.year>(null===(r=this.calendar.static.years)||void 0===r?void 0:r.length)&&(this.date.year=this.calendar.static.years?this.calendar.static.years.length:null),e.setValue(null===(o=null===(i=this.calendar.static.years)||void 0===i?void 0:i[this.date.year-1])||void 0===o?void 0:o.id).onChange((e=>{this.date.year=this.calendar.static.years.findIndex((t=>t.id==e))+1}))}else new t.TextComponent(d).setPlaceholder("Year").setValue(`${this.date.year}`).onChange((e=>{this.date.year=Number(e)})).inputEl.setAttr("type","number")}onOpen(){this.display()}}class Xs extends t.Modal{constructor(e,t){super(t.app),this.event=e,this.plugin=t,this.containerEl.addClass("fantasy-calendar-view-event")}display(){return e(this,void 0,void 0,(function*(){this.contentEl.empty(),this.contentEl.createEl("h4",{text:this.event.name}),yield t.MarkdownRenderer.renderMarkdown(this.event.description,this.contentEl,this.event.note,null)}))}onOpen(){return e(this,void 0,void 0,(function*(){yield this.display()}))}}var el=n(477),tl=n.n(el);function nl(){return tl()('(()=>{"use strict";function n(n,t,e,l){return new(e||(e=Promise))((function(o,i){function a(n){try{s(l.next(n))}catch(n){i(n)}}function d(n){try{s(l.throw(n))}catch(n){i(n)}}function s(n){var t;n.done?o(n.value):(t=n.value,t instanceof e?t:new e((function(n){n(t)}))).then(a,d)}s((l=l.apply(n,t||[])).next())}))}function t(n,t){return(n%t+t)%t}Object.create,Object.create;const e=self;e.addEventListener("message",(o=>n(void 0,void 0,void 0,(function*(){var n,i,a,d,s,r,u;if("parse"===o.data.type){const{file:c,cache:f,sourceCalendars:v}=o.data,{frontmatter:m}=null!=f?f:{};if(!m)return;if(!("fc-calendar"in m)&&!("fc-date"in m)&&!("fc-start"in m))return;let h=m["fc-calendar"];Array.isArray(h)||(h=[h]);const{start:y,end:p}=l(m),g=v.filter((n=>h.includes(n.name))),x=m["fc-category"];for(let l of g){let o=h.indexOf(l.name);o>=y.length&&(o=y.length-1);let f=null!==(n=y[o])&&void 0!==n?n:{day:null,month:null,year:null},v=p.length?null!==(i=p[o])&&void 0!==i?i:p[p.length-1]:null;if((null==f?void 0:f.month)&&"string"==typeof(null==f?void 0:f.month)){let n=l.static.months.find((n=>n.name==f.month));f.month=n?l.static.months.indexOf(n):null}else(null==f?void 0:f.month)&&"number"==typeof(null==f?void 0:f.month)&&(f.month=t(f.month-1,l.static.months.length));if((null==v?void 0:v.month)&&"string"==typeof(null==v?void 0:v.month)){let n=l.static.months.find((n=>n.name==v.month));v.month=n?l.static.months.indexOf(n):null}else(null==v?void 0:v.month)&&"number"==typeof(null==v?void 0:v.month)&&(v.month=t(v.month-1,l.static.months.length));const m=l.categories.find((n=>(null==n?void 0:n.name)==x)),g=l.events.find((n=>n.note==c.path));(null==g?void 0:g.date.day)==f.day&&(null==g?void 0:g.date.month)==f.month&&(null==g?void 0:g.date.year)==f.year&&(null===(a=null==g?void 0:g.end)||void 0===a?void 0:a.day)==(null==v?void 0:v.day)&&(null===(d=null==g?void 0:g.end)||void 0===d?void 0:d.month)==(null==v?void 0:v.month)&&(null===(s=null==g?void 0:g.end)||void 0===s?void 0:s.year)==(null==v?void 0:v.year)&&(null==g?void 0:g.category)==(null==m?void 0:m.id)||e.postMessage({type:"update",id:l.id,index:l.events.indexOf(g),event:Object.assign(Object.assign({id:null!==(r=null==g?void 0:g.id)&&void 0!==r?r:"ID_xyxyxyxyxyxy".replace(/[xy]/g,(function(n){var t=16*Math.random()|0;return("x"==n?t:3&t|8).toString(16)})),name:null!==(u=null==g?void 0:g.name)&&void 0!==u?u:c.basename,note:c.path,date:f},v?{end:v}:{}),{category:null==m?void 0:m.id,description:null==g?void 0:g.description})})}e.postMessage({type:"save",id:null,index:null,event:null})}})))),e.addEventListener("message",(t=>n(void 0,void 0,void 0,(function*(){if("rename"===t.data.type){const{sourceCalendars:n,file:l}=t.data,o=l.oldPath.split("/").pop().split(".").shift();for(let t of n){const n=t.events.filter((n=>n.note==l.oldPath||n.note===o));for(let o of n)e.postMessage({type:"update",id:t.id,index:t.events.indexOf(o),event:Object.assign(Object.assign({},o),{note:l.path,name:l.basename})})}e.postMessage({type:"save",id:null,index:null,event:null})}}))));const l=n=>({start:[n["fc-date"in n?"fc-date":"fc-start"]].flat(2).map((n=>o(n))),end:["fc-end"in n?n["fc-end"]:[]].flat(2).map((n=>o(n)))}),o=n=>{if("string"!=typeof n)return n;try{const t=n.split(/[\\-\\/]/).map((n=>Number(n)));return{year:t[0],month:t[1],day:t[2]}}catch(n){return}}})();',"Worker",{name:"Fantasy Calendar Watcher",esModule:!1},void 0)}class al extends t.Component{constructor(e){super(),this.plugin=e,this.worker=new nl,this.files=new Map}get calendars(){return this.plugin.data.calendars}get vault(){return this.plugin.app.vault}get metadataCache(){return this.plugin.app.metadataCache}onload(){this.recurseFiles(),this.registerEvent(this.metadataCache.on("changed",(e=>{this.parseFileForEvents(e)}))),this.registerEvent(this.vault.on("rename",((e,n)=>{e instanceof t.TFile&&this.worker.postMessage({type:"rename",file:{path:e.path,basename:e.basename,oldPath:n},sourceCalendars:this.calendars})}))),this.registerEvent(this.vault.on("delete",(e=>{if(e instanceof t.TFile){for(let t of this.calendars)for(let n of t.events)n.note&&n.note===e.path&&(n.note=null);this.plugin.saveCalendar()}}))),this.worker.onmessage=t=>e(this,void 0,void 0,(function*(){if("save"===t.data.type)return void this.plugin.saveCalendar();const{id:e,index:n,event:a}=t.data;this.calendars.find((t=>t.id==e)).events.splice(n,n>=0?1:0,a)}))}recurseFiles(){const e=this.vault.getAbstractFileByPath(this.plugin.data.path);e&&e instanceof t.TFolder&&(this.recurseFolder(e),this.plugin.saveCalendar())}registerCalendar(e){console.log("[Fantasy Calendar] Parsing files for events.");const n=this.vault.getAbstractFileByPath(this.plugin.data.path);n&&n instanceof t.TFolder&&(this.recurseFolder(n,e),console.log("[Fantasy Calendar] Parsing complete."))}recurseFolder(e,n){t.Vault.recurseChildren(e,(e=>{e&&e instanceof t.TFile&&this.parseFileForEvents(e,n)}))}testPath(e){return null!=`/${e}`.match(new RegExp(`^${this.plugin.data.path}`))}parseFileForEvents(e,t){if(!this.testPath(e.path))return;const n=this.metadataCache.getFileCache(e);n&&this.worker.postMessage({type:"parse",file:{path:e.path,basename:e.basename},cache:n,sourceCalendars:t?[t]:this.calendars})}onunload(){this.worker.terminate(),this.worker=null}}const rl=t.Platform.isMacOS?"Meta":"Control",il={name:null,description:null,id:null,static:{incrementDay:!1,firstWeekDay:null,overflow:!0,weekdays:[],months:[],moons:[],displayMoons:!0,leapDays:[],eras:[]},current:{year:1,month:null,day:null},events:[],categories:[]},ol={calendars:[],currentCalendar:null,defaultCalendar:null,eventPreview:!1,configDirectory:null,path:"/"};class sl extends t.Plugin{constructor(){super(...arguments),this.watcher=new al(this)}addNewCalendar(t){return e(this,void 0,void 0,(function*(){this.data.calendars.push(Object.assign({},t)),this.data.defaultCalendar||(this.data.defaultCalendar=t.id),yield this.saveCalendar(),this.watcher.registerCalendar(t)}))}get currentCalendar(){return this.data.calendars.find((e=>e.id==this.data.currentCalendar))}get defaultCalendar(){var e;return null!==(e=this.data.calendars.find((e=>e.id==this.data.defaultCalendar)))&&void 0!==e?e:this.data.calendars[0]}get view(){const e=this.app.workspace.getLeavesOfType(Ys),t=e.length?e[0]:null;if(t&&t.view&&t.view instanceof Ks)return t.view}get full(){const e=this.app.workspace.getLeavesOfType(Zs),t=e.length?e[0]:null;if(t&&t.view&&t.view instanceof Ks)return t.view}onload(){return e(this,void 0,void 0,(function*(){console.log("Loading Fantasy Calendars v"+this.manifest.version),yield this.loadSettings(),this.watcher.load(),this.addSettingTab(new ro(this)),this.registerView(Ys,(e=>new Ks(this,e))),this.app.workspace.onLayoutReady((()=>this.addCalendarView(!0))),this.addRibbonIcon(Ys,"Open Large Fantasy Calendar",(e=>{this.app.workspace.getLeaf(e.getModifierState(rl)).setViewState({type:Zs})})),this.registerView(Zs,(e=>new Ks(this,e,{full:!0}))),this.addCommand({id:"open-fantasy-calendar",name:"Open Fantasy Calendar",callback:()=>{this.addCalendarView()}}),this.addCommand({id:"open-big-fantasy-calendar",name:"Open Large Fantasy Calendar",callback:()=>{this.addFullCalendarView()}}),this.addCommand({id:"toggle-moons",name:"Toggle Moons",checkCallback:e=>{const t=this.app.workspace.getActiveViewOfType(Ks);if(t)return e||t.toggleMoons(),!0}})}))}onunload(){return e(this,void 0,void 0,(function*(){console.log("Unloading Fantasy Calendars v"+this.manifest.version),this.app.workspace.getLeavesOfType(Ys).forEach((e=>e.detach())),this.app.workspace.getLeavesOfType(Zs).forEach((e=>e.detach())),this.watcher.unload()}))}addCalendarView(t=!1){return e(this,void 0,void 0,(function*(){t&&this.app.workspace.getLeavesOfType(Ys).length||(yield this.app.workspace.getRightLeaf(!1).setViewState({type:Ys}),this.view&&this.app.workspace.revealLeaf(this.view.leaf))}))}addFullCalendarView(t=!1){return e(this,void 0,void 0,(function*(){t&&this.app.workspace.getLeavesOfType(Zs).length||(this.app.workspace.getLeaf(!1).setViewState({type:Zs}),this.full&&this.app.workspace.revealLeaf(this.full.leaf))}))}loadSettings(){return e(this,void 0,void 0,(function*(){this.data=Object.assign(Object.assign({},ol),yield this.loadData()),this.configDirectory&&(yield this.app.vault.adapter.exists(this.configFilePath))&&(this.data=Object.assign({},this.data,JSON.parse(yield this.app.vault.adapter.read(this.configFilePath)))),!this.data.defaultCalendar&&this.data.calendars.length&&(this.data.defaultCalendar=this.data.calendars[0].id)}))}saveCalendar(){return e(this,void 0,void 0,(function*(){yield this.saveSettings(),this.app.workspace.trigger("fantasy-calendars-updated")}))}get configDirectory(){if(this.data&&this.data.configDirectory)return`${this.data.configDirectory}/plugins/fantasy-calendar`}get configFilePath(){if(this.data.configDirectory)return`${this.configDirectory}/data.json`}saveSettings(){return e(this,void 0,void 0,(function*(){this.saveData(this.data)}))}saveData(n){const a=Object.create(null,{saveData:{get:()=>super.saveData}});return e(this,void 0,void 0,(function*(){if(this.configDirectory)try{(yield this.app.vault.adapter.exists(this.configDirectory))||(yield this.app.vault.adapter.mkdir(this.configDirectory)),yield this.app.vault.adapter.write(this.configFilePath,JSON.stringify(n))}catch(e){console.error(e),new t.Notice("There was an error saving into the configured directory.")}yield a.saveData.call(this,n)}))}}})();var r=exports;for(var i in a)r[i]=a[i];a.__esModule&&Object.defineProperty(r,"__esModule",{value:!0})})(); \ No newline at end of file diff --git a/.obsidian/plugins/fantasy-calendar/manifest.json b/.obsidian/plugins/fantasy-calendar/manifest.json new file mode 100644 index 00000000..a362036d --- /dev/null +++ b/.obsidian/plugins/fantasy-calendar/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "fantasy-calendar", + "name": "Fantasy Calendar", + "version": "1.9.0", + "minAppVersion": "0.12.10", + "author": "Jeremy Valentine", + "description": "Fantasy calendars in Obsidian!", + "authorUrl": "https://github.com/valentine195/obsidian-fantasy-calendar", + "isDesktopOnly": false +} diff --git a/.obsidian/plugins/fantasy-calendar/styles.css b/.obsidian/plugins/fantasy-calendar/styles.css new file mode 100644 index 00000000..860570a6 --- /dev/null +++ b/.obsidian/plugins/fantasy-calendar/styles.css @@ -0,0 +1,211 @@ +.fantasy-calendar-confirm-buttons { + display: flex; + justify-content: flex-end; + align-items: center; + gap: 0.5rem; +} + +.fantasy-calendar-settings .fantasy-calendars { + border-bottom: 1px solid var(--background-modifier-border); + border-top: 1px solid var(--background-modifier-border); + padding: 18px 0 0 0; +} + +.fantasy-calendar-create-calendar input[disabled] { + cursor: not-allowed; +} + +.fantasy-calendar-settings .fantasy-calendars .existing-calendars > span { + display: block; + text-align: center; + margin-bottom: 18px; + color: var(--text-muted); +} + +.fantasy-calendar-settings + .fantasy-calendars + > .setting-item:not(.setting-item-heading) { + border: 0px; +} + +.fantasy-calendar-settings .fantasy-calendar-config .setting-item-name { + display: flex; + gap: 0.25rem; + align-items: center; +} + +/** Create Calendar Modal */ +.modal-container.fantasy-calendar-create-calendar > .modal { + transition: width 0.5s ease-in-out, height 0.5s ease-in-out; +} + +.fantasy-calendar-create-calendar .modal-content { + display: flex; + flex-flow: column nowrap; + gap: 0.5rem; +} + +.fantasy-calendar-create-calendar .calendar-info .calendar-description { + display: flex; + flex-flow: column nowrap; +} + +.fantasy-calendar-create-calendar .calendar-info textarea { + resize: vertical; +} + +.fantasy-calendar-create-calendar details { + padding: 0.5rem; +} +.fantasy-calendar-create-calendar details[open] { + border: 1px solid var(--background-modifier-border); + border-radius: 0.5rem; +} + +.fantasy-calendar-create-calendar .fantasy-calendar-container .existing-items { + overflow: auto; + max-height: 500px; +} + +.fantasy-calendar-create-calendar + .fantasy-calendar-container + .existing-items + > span { + display: block; + text-align: center; + color: var(--text-muted); +} + +.fantasy-calendar-create-calendar details .setting-item { + border: 0px; +} + +.fantasy-calendar-create-calendar summary * { + display: inline; + margin: 0; +} +.fantasy-context-buttons { + display: flex; + justify-content: flex-end; + align-items: center; + gap: 0.25rem; +} + +.fantasy-calendar-create-calendar button[disabled] { + cursor: not-allowed; +} + +.fantasy-calendar-create-event .event-info { + display: flex; + flex-flow: column nowrap; + width: 100%; + justify-content: flex-start; + align-items: flex-start; + gap: 0.5rem; +} + +.fantasy-calendar-create-event .event-info > *, +.fantasy-calendar-create-event .setting-item { + width: 100%; + padding-top: 0; + padding-bottom: 0.75rem; + border: 0; +} +.fantasy-calendar-create-event .event-info > .event-description { + display: flex; + flex-flow: column nowrap; +} + +.fantasy-calendar-create-event .event-info textarea { + resize: vertical; +} + +/** Preset Calendar Modal */ +.fantasy-calendar-choose-preset .fantasy-calendar-preset-container { + display: grid; + grid-template-columns: 1fr 1fr 1fr; + grid-auto-rows: 1fr; + gap: 1rem; + align-items: center; + justify-content: flex-start; +} +.fantasy-calendar-choose-preset .fantasy-calendar-preset-container button { + height: 100%; + width: 100%; + white-space: pre-line; + max-width: 250px; +} +.fantasy-calendar-choose-preset + .fantasy-calendar-preset-container + button.mod-cta { + box-shadow: 0px 0px 5px var(--background-modifier-box-shadow); +} + +/** Leap Day Editor */ +.fantasy-leap-day-interval-description { + color: var(--text-muted); + border: 0; +} + +.fantasy-calendar-event-date { + display: grid; + grid-template-columns: 1fr auto; + align-items: center; + gap: 0.5rem; +} + +.fantasy-calendar-picker { + padding: 5px 15px; + display: flex; + flex-flow: column nowrap; + justify-content: flex-start; +} +.fantasy-calendar-full.view-content { + display: flex; + flex-flow: column; + width: 100%; +} + +.fantasy-calendar-dropdown { + display: flex; + flex-flow: column; + width: 100%; + padding-bottom: 0.75rem; +} + +.fantasy-calendar-view-event .modal-content { + max-width: 75vw; +} + +.fantasy-no-calendar { + color: var(--text-muted); + display: flex; + justify-content: center; + text-align: center; + padding: 0.5rem; +} + +.fantasy-title { + margin: 0; +} + +.full-view .fantasy-title { + grid-column: span 3; +} + +.fantasy-calendar-create-calendar .fantasy-calendar-date-fields { + padding-top: 0.75rem; +} +.fantasy-calendar-date-fields { + display: flex; + justify-content: space-between; + align-items: flex-start; + gap: 0.5rem; + padding-bottom: 0.75rem; +} + +.fantasy-calendar-date-fields .fantasy-calendar-date-field { + display: flex; + flex-flow: column nowrap; +} + diff --git a/.obsidian/plugins/ledger-obsidian/main.js b/.obsidian/plugins/ledger-obsidian/main.js index 5b72d431..dfad1bfb 100644 --- a/.obsidian/plugins/ledger-obsidian/main.js +++ b/.obsidian/plugins/ledger-obsidian/main.js @@ -9861,2131 +9861,848 @@ const paypal = ` `; -function ascending(a,b){return ab?1:a>=b?0:NaN;} - -function bisector(f){let delta=f;let compare=f;if(f.length===1){delta=(d,x)=>f(d)-x;compare=ascendingComparator(f);}function left(a,x,lo,hi){if(lo==null)lo=0;if(hi==null)hi=a.length;while(lo>>1;if(compare(a[mid],x)<0)lo=mid+1;else hi=mid;}return lo;}function right(a,x,lo,hi){if(lo==null)lo=0;if(hi==null)hi=a.length;while(lo>>1;if(compare(a[mid],x)>0)hi=mid;else lo=mid+1;}return lo;}function center(a,x,lo,hi){if(lo==null)lo=0;if(hi==null)hi=a.length;const i=left(a,x,lo,hi-1);return i>lo&&delta(a[i-1],x)>-delta(a[i],x)?i-1:i;}return {left,center,right};}function ascendingComparator(f){return (d,x)=>ascending(f(d),x);} - -function number$1(x){return x===null?NaN:+x;} - -const ascendingBisect=bisector(ascending);const bisectRight=ascendingBisect.right;const bisectCenter=bisector(number$1).center; - -var e10=Math.sqrt(50),e5=Math.sqrt(10),e2=Math.sqrt(2);function ticks(start,stop,count){var reverse,i=-1,n,ticks,step;stop=+stop,start=+start,count=+count;if(start===stop&&count>0)return [start];if(reverse=stop0){let r0=Math.round(start/step),r1=Math.round(stop/step);if(r0*stepstop)--r1;ticks=new Array(n=r1-r0+1);while(++istop)--r1;ticks=new Array(n=r1-r0+1);while(++i=0?(error>=e10?10:error>=e5?5:error>=e2?2:1)*Math.pow(10,power):-Math.pow(10,-power)/(error>=e10?10:error>=e5?5:error>=e2?2:1);}function tickStep(start,stop,count){var step0=Math.abs(stop-start)/Math.max(0,count),step1=Math.pow(10,Math.floor(Math.log(step0)/Math.LN10)),error=step0/step1;if(error>=e10)step1*=10;else if(error>=e5)step1*=5;else if(error>=e2)step1*=2;return stop{}};function dispatch(){for(var i=0,n=arguments.length,_={},t;i=0)name=t.slice(i+1),t=t.slice(0,i);if(t&&!types.hasOwnProperty(t))throw new Error("unknown type: "+t);return {type:t,name:name};});}Dispatch.prototype=dispatch.prototype={constructor:Dispatch,on:function(typename,callback){var _=this._,T=parseTypenames(typename+"",_),t,i=-1,n=T.length;// If no callback was specified, return the callback of the given type and name. -if(arguments.length<2){while(++i0)for(var args=new Array(n),i=0,n,t;i=0&&(prefix=name.slice(0,i))!=="xmlns")name=name.slice(i+1);return namespaces.hasOwnProperty(prefix)?{space:namespaces[prefix],local:name}:name;// eslint-disable-line no-prototype-builtins -} - -function creatorInherit(name){return function(){var document=this.ownerDocument,uri=this.namespaceURI;return uri===xhtml&&document.documentElement.namespaceURI===xhtml?document.createElement(name):document.createElementNS(uri,name);};}function creatorFixed(fullname){return function(){return this.ownerDocument.createElementNS(fullname.space,fullname.local);};}function creator(name){var fullname=namespace(name);return (fullname.local?creatorFixed:creatorInherit)(fullname);} - -function none(){}function selector(selector){return selector==null?none:function(){return this.querySelector(selector);};} - -function selection_select(select){if(typeof select!=="function")select=selector(select);for(var groups=this._groups,m=groups.length,subgroups=new Array(m),j=0;j=i1)i1=i0+1;while(!(next=updateGroup[i1])&&++i1=0;){if(node=group[i]){if(next&&node.compareDocumentPosition(next)^4)next.parentNode.insertBefore(node,next);next=node;}}}return this;} - -function selection_sort(compare){if(!compare)compare=ascending$1;function compareNode(a,b){return a&&b?compare(a.__data__,b.__data__):!a-!b;}for(var groups=this._groups,m=groups.length,sortgroups=new Array(m),j=0;jb?1:a>=b?0:NaN;} - -function selection_call(){var callback=arguments[0];arguments[0]=this;callback.apply(null,arguments);return this;} - -function selection_nodes(){return Array.from(this);} - -function selection_node(){for(var groups=this._groups,j=0,m=groups.length;j1?this.each((value==null?styleRemove:typeof value==="function"?styleFunction:styleConstant)(name,value,priority==null?"":priority)):styleValue(this.node(),name);}function styleValue(node,name){return node.style.getPropertyValue(name)||defaultView(node).getComputedStyle(node,null).getPropertyValue(name);} - -function propertyRemove(name){return function(){delete this[name];};}function propertyConstant(name,value){return function(){this[name]=value;};}function propertyFunction(name,value){return function(){var v=value.apply(this,arguments);if(v==null)delete this[name];else this[name]=v;};}function selection_property(name,value){return arguments.length>1?this.each((value==null?propertyRemove:typeof value==="function"?propertyFunction:propertyConstant)(name,value)):this.node()[name];} - -function classArray(string){return string.trim().split(/^|\s+/);}function classList(node){return node.classList||new ClassList(node);}function ClassList(node){this._node=node;this._names=classArray(node.getAttribute("class")||"");}ClassList.prototype={add:function(name){var i=this._names.indexOf(name);if(i<0){this._names.push(name);this._node.setAttribute("class",this._names.join(" "));}},remove:function(name){var i=this._names.indexOf(name);if(i>=0){this._names.splice(i,1);this._node.setAttribute("class",this._names.join(" "));}},contains:function(name){return this._names.indexOf(name)>=0;}};function classedAdd(node,names){var list=classList(node),i=-1,n=names.length;while(++i=0)name=t.slice(i+1),t=t.slice(0,i);return {type:t,name:name};});}function onRemove(typename){return function(){var on=this.__on;if(!on)return;for(var j=0,i=-1,m=on.length,o;j>8&0xf|m>>4&0xf0,m>>4&0xf|m&0xf0,(m&0xf)<<4|m&0xf,1)// #f00 -:l===8?rgba(m>>24&0xff,m>>16&0xff,m>>8&0xff,(m&0xff)/0xff)// #ff000000 -:l===4?rgba(m>>12&0xf|m>>8&0xf0,m>>8&0xf|m>>4&0xf0,m>>4&0xf|m&0xf0,((m&0xf)<<4|m&0xf)/0xff)// #f000 -:null// invalid hex -):(m=reRgbInteger.exec(format))?new Rgb(m[1],m[2],m[3],1)// rgb(255, 0, 0) -:(m=reRgbPercent.exec(format))?new Rgb(m[1]*255/100,m[2]*255/100,m[3]*255/100,1)// rgb(100%, 0%, 0%) -:(m=reRgbaInteger.exec(format))?rgba(m[1],m[2],m[3],m[4])// rgba(255, 0, 0, 1) -:(m=reRgbaPercent.exec(format))?rgba(m[1]*255/100,m[2]*255/100,m[3]*255/100,m[4])// rgb(100%, 0%, 0%, 1) -:(m=reHslPercent.exec(format))?hsla(m[1],m[2]/100,m[3]/100,1)// hsl(120, 50%, 50%) -:(m=reHslaPercent.exec(format))?hsla(m[1],m[2]/100,m[3]/100,m[4])// hsla(120, 50%, 50%, 1) -:named.hasOwnProperty(format)?rgbn(named[format])// eslint-disable-line no-prototype-builtins -:format==="transparent"?new Rgb(NaN,NaN,NaN,0):null;}function rgbn(n){return new Rgb(n>>16&0xff,n>>8&0xff,n&0xff,1);}function rgba(r,g,b,a){if(a<=0)r=g=b=NaN;return new Rgb(r,g,b,a);}function rgbConvert(o){if(!(o instanceof Color))o=color(o);if(!o)return new Rgb();o=o.rgb();return new Rgb(o.r,o.g,o.b,o.opacity);}function rgb(r,g,b,opacity){return arguments.length===1?rgbConvert(r):new Rgb(r,g,b,opacity==null?1:opacity);}function Rgb(r,g,b,opacity){this.r=+r;this.g=+g;this.b=+b;this.opacity=+opacity;}define(Rgb,rgb,extend(Color,{brighter:function(k){k=k==null?brighter:Math.pow(brighter,k);return new Rgb(this.r*k,this.g*k,this.b*k,this.opacity);},darker:function(k){k=k==null?darker:Math.pow(darker,k);return new Rgb(this.r*k,this.g*k,this.b*k,this.opacity);},rgb:function(){return this;},displayable:function(){return -0.5<=this.r&&this.r<255.5&&-0.5<=this.g&&this.g<255.5&&-0.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1;},hex:rgb_formatHex,// Deprecated! Use color.formatHex. -formatHex:rgb_formatHex,formatRgb:rgb_formatRgb,toString:rgb_formatRgb}));function rgb_formatHex(){return "#"+hex(this.r)+hex(this.g)+hex(this.b);}function rgb_formatRgb(){var a=this.opacity;a=isNaN(a)?1:Math.max(0,Math.min(1,a));return (a===1?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(a===1?")":", "+a+")");}function hex(value){value=Math.max(0,Math.min(255,Math.round(value)||0));return (value<16?"0":"")+value.toString(16);}function hsla(h,s,l,a){if(a<=0)h=s=l=NaN;else if(l<=0||l>=1)h=s=NaN;else if(s<=0)h=NaN;return new Hsl(h,s,l,a);}function hslConvert(o){if(o instanceof Hsl)return new Hsl(o.h,o.s,o.l,o.opacity);if(!(o instanceof Color))o=color(o);if(!o)return new Hsl();if(o instanceof Hsl)return o;o=o.rgb();var r=o.r/255,g=o.g/255,b=o.b/255,min=Math.min(r,g,b),max=Math.max(r,g,b),h=NaN,s=max-min,l=(max+min)/2;if(s){if(r===max)h=(g-b)/s+(g0&&l<1?0:h;}return new Hsl(h,s,l,o.opacity);}function hsl(h,s,l,opacity){return arguments.length===1?hslConvert(h):new Hsl(h,s,l,opacity==null?1:opacity);}function Hsl(h,s,l,opacity){this.h=+h;this.s=+s;this.l=+l;this.opacity=+opacity;}define(Hsl,hsl,extend(Color,{brighter:function(k){k=k==null?brighter:Math.pow(brighter,k);return new Hsl(this.h,this.s,this.l*k,this.opacity);},darker:function(k){k=k==null?darker:Math.pow(darker,k);return new Hsl(this.h,this.s,this.l*k,this.opacity);},rgb:function(){var h=this.h%360+(this.h<0)*360,s=isNaN(h)||isNaN(this.s)?0:this.s,l=this.l,m2=l+(l<0.5?l:1-l)*s,m1=2*l-m2;return new Rgb(hsl2rgb(h>=240?h-240:h+120,m1,m2),hsl2rgb(h,m1,m2),hsl2rgb(h<120?h+240:h-120,m1,m2),this.opacity);},displayable:function(){return (0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1;},formatHsl:function(){var a=this.opacity;a=isNaN(a)?1:Math.max(0,Math.min(1,a));return (a===1?"hsl(":"hsla(")+(this.h||0)+", "+(this.s||0)*100+"%, "+(this.l||0)*100+"%"+(a===1?")":", "+a+")");}}));/* From FvD 13.37, CSS Color Module Level 3 */function hsl2rgb(h,m1,m2){return (h<60?m1+(m2-m1)*h/60:h<180?m2:h<240?m1+(m2-m1)*(240-h)/60:m1)*255;} - -var constant$1 = (x=>()=>x); - -function linear(a,d){return function(t){return a+t*d;};}function exponential(a,b,y){return a=Math.pow(a,y),b=Math.pow(b,y)-a,y=1/y,function(t){return Math.pow(a+t*b,y);};}function gamma(y){return (y=+y)===1?nogamma:function(a,b){return b-a?exponential(a,b,y):constant$1(isNaN(a)?b:a);};}function nogamma(a,b){var d=b-a;return d?linear(a,d):constant$1(isNaN(a)?b:a);} - -var interpolateRgb = (function rgbGamma(y){var color=gamma(y);function rgb$1(start,end){var r=color((start=rgb(start)).r,(end=rgb(end)).r),g=color(start.g,end.g),b=color(start.b,end.b),opacity=nogamma(start.opacity,end.opacity);return function(t){start.r=r(t);start.g=g(t);start.b=b(t);start.opacity=opacity(t);return start+"";};}rgb$1.gamma=rgbGamma;return rgb$1;})(1); - -function numberArray(a,b){if(!b)b=[];var n=a?Math.min(b.length,a.length):0,c=b.slice(),i;return function(t){for(i=0;ibi){// a string precedes the next number in b -bs=b.slice(bi,bs);if(s[i])s[i]+=bs;// coalesce with previous string -else s[++i]=bs;}if((am=am[0])===(bm=bm[0])){// numbers in a & b match -if(s[i])s[i]+=bm;// coalesce with previous string -else s[++i]=bm;}else {// interpolate non-matching numbers -s[++i]=null;q.push({i:i,x:interpolateNumber(am,bm)});}bi=reB.lastIndex;}// Add remains of b. -if(bi180)b+=360;else if(b-a>180)a+=360;// shortest path -q.push({i:s.push(pop(s)+"rotate(",null,degParen)-2,x:interpolateNumber(a,b)});}else if(b){s.push(pop(s)+"rotate("+b+degParen);}}function skewX(a,b,s,q){if(a!==b){q.push({i:s.push(pop(s)+"skewX(",null,degParen)-2,x:interpolateNumber(a,b)});}else if(b){s.push(pop(s)+"skewX("+b+degParen);}}function scale(xa,ya,xb,yb,s,q){if(xa!==xb||ya!==yb){var i=s.push(pop(s)+"scale(",null,",",null,")");q.push({i:i-4,x:interpolateNumber(xa,xb)},{i:i-2,x:interpolateNumber(ya,yb)});}else if(xb!==1||yb!==1){s.push(pop(s)+"scale("+xb+","+yb+")");}}return function(a,b){var s=[],// string constants and placeholders -q=[];// number interpolators -a=parse(a),b=parse(b);translate(a.translateX,a.translateY,b.translateX,b.translateY,s,q);rotate(a.rotate,b.rotate,s,q);skewX(a.skewX,b.skewX,s,q);scale(a.scaleX,a.scaleY,b.scaleX,b.scaleY,s,q);a=b=null;// gc -return function(t){var i=-1,n=q.length,o;while(++i=0)t._call.call(null,e);t=t._next;}--frame;}function wake(){clockNow=(clockLast=clock.now())+clockSkew;frame=timeout=0;try{timerFlush();}finally{frame=0;nap();clockNow=0;}}function poke(){var now=clock.now(),delay=now-clockLast;if(delay>pokeDelay)clockSkew-=delay,clockLast=now;}function nap(){var t0,t1=taskHead,t2,time=Infinity;while(t1){if(t1._call){if(time>t1._time)time=t1._time;t0=t1,t1=t1._next;}else {t2=t1._next,t1._next=null;t1=t0?t0._next=t2:taskHead=t2;}}taskTail=t0;sleep(time);}function sleep(time){if(frame)return;// Soonest alarm already set, or will be. -if(timeout)timeout=clearTimeout(timeout);var delay=time-clockNow;// Strictly less than if we recomputed clockNow. -if(delay>24){if(time{t.stop();callback(elapsed+delay);},delay,time);return t;} +/** @license React v17.0.2 + * react.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ -var emptyOn=dispatch("start","end","cancel","interrupt");var emptyTween=[];var CREATED=0;var SCHEDULED=1;var STARTING=2;var STARTED=3;var RUNNING=4;var ENDING=5;var ENDED=6;function schedule(node,name,id,index,group,timing){var schedules=node.__transition;if(!schedules)node.__transition={};else if(id in schedules)return;create$1(node,id,{name:name,index:index,// For context during callback. -group:group,// For context during callback. -on:emptyOn,tween:emptyTween,time:timing.time,delay:timing.delay,duration:timing.duration,ease:timing.ease,timer:null,state:CREATED});}function init(node,id){var schedule=get$1(node,id);if(schedule.state>CREATED)throw new Error("too late; already scheduled");return schedule;}function set$1(node,id){var schedule=get$1(node,id);if(schedule.state>STARTED)throw new Error("too late; already running");return schedule;}function get$1(node,id){var schedule=node.__transition;if(!schedule||!(schedule=schedule[id]))throw new Error("transition not found");return schedule;}function create$1(node,id,self){var schedules=node.__transition,tween;// Initialize the self timer when the transition is created. -// Note the actual delay is not known until the first callback! -schedules[id]=self;self.timer=timer(schedule,0,self.time);function schedule(elapsed){self.state=SCHEDULED;self.timer.restart(start,self.delay,self.time);// If the elapsed delay is less than our first sleep, start immediately. -if(self.delay<=elapsed)start(elapsed-self.delay);}function start(elapsed){var i,j,n,o;// If the state is not SCHEDULED, then we previously errored on start. -if(self.state!==SCHEDULED)return stop();for(i in schedules){o=schedules[i];if(o.name!==self.name)continue;// While this element already has a starting transition during this frame, -// defer starting an interrupting transition until that transition has a -// chance to tick (and possibly end); see d3/d3-transition#54! -if(o.state===STARTED)return timeout$1(start);// Interrupt the active transition, if any. -if(o.state===RUNNING){o.state=ENDED;o.timer.stop();o.on.call("interrupt",node,node.__data__,o.index,o.group);delete schedules[i];}// Cancel any pre-empted transitions. -else if(+iSTARTING&&schedule.state=0)t=t.slice(0,i);return !t||t==="start";});}function onFunction(id,name,listener){var on0,on1,sit=start(name)?init:set$1;return function(){var schedule=sit(this,id),on=schedule.on;// If this node shared a dispatch with the previous node, -// just assign the updated shared dispatch and weโ€™re done! -// Otherwise, copy-on-write. -if(on!==on0)(on1=(on0=on).copy()).on(name,listener);schedule.on=on1;};}function transition_on(name,listener){var id=this._id;return arguments.length<2?get$1(this.node(),id).on.on(name):this.each(onFunction(id,name,listener));} - -function removeFunction(id){return function(){var parent=this.parentNode;for(var i in this.__transition)if(+i!==id)return;if(parent)parent.removeChild(this);};}function transition_remove(){return this.on("end.remove",removeFunction(this._id));} - -function transition_select(select){var name=this._name,id=this._id;if(typeof select!=="function")select=selector(select);for(var groups=this._groups,m=groups.length,subgroups=new Array(m),j=0;j=1e21?x.toLocaleString("en").replace(/,/g,""):x.toString(10);}// Computes the decimal coefficient and exponent of the specified number x with -// significant digits p, where x is positive and p is in [1, 21] or undefined. -// For example, formatDecimalParts(1.23) returns ["123", 0]. -function formatDecimalParts(x,p){if((i=(x=p?x.toExponential(p-1):x.toExponential()).indexOf("e"))<0)return null;// NaN, ยฑInfinity -var i,coefficient=x.slice(0,i);// The string returned by toExponential either has the form \d\.\d+e[-+]\d+ -// (e.g., 1.2e+3) or the form \de[-+]\d+ (e.g., 1e+3). -return [coefficient.length>1?coefficient[0]+coefficient.slice(2):coefficient,+x.slice(i+1)];} - -function exponent(x){return x=formatDecimalParts(Math.abs(x)),x?x[1]:NaN;} - -function formatGroup(grouping,thousands){return function(value,width){var i=value.length,t=[],j=0,g=grouping[0],length=0;while(i>0&&g>0){if(length+g+1>width)g=Math.max(1,width-length);t.push(value.substring(i-=g,i+g));if((length+=g+1)>width)break;g=grouping[j=(j+1)%grouping.length];}return t.reverse().join(thousands);};} - -function formatNumerals(numerals){return function(value){return value.replace(/[0-9]/g,function(i){return numerals[+i];});};} - -// [[fill]align][sign][symbol][0][width][,][.precision][~][type] -var re=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function formatSpecifier(specifier){if(!(match=re.exec(specifier)))throw new Error("invalid format: "+specifier);var match;return new FormatSpecifier({fill:match[1],align:match[2],sign:match[3],symbol:match[4],zero:match[5],width:match[6],comma:match[7],precision:match[8]&&match[8].slice(1),trim:match[9],type:match[10]});}formatSpecifier.prototype=FormatSpecifier.prototype;// instanceof -function FormatSpecifier(specifier){this.fill=specifier.fill===undefined?" ":specifier.fill+"";this.align=specifier.align===undefined?">":specifier.align+"";this.sign=specifier.sign===undefined?"-":specifier.sign+"";this.symbol=specifier.symbol===undefined?"":specifier.symbol+"";this.zero=!!specifier.zero;this.width=specifier.width===undefined?undefined:+specifier.width;this.comma=!!specifier.comma;this.precision=specifier.precision===undefined?undefined:+specifier.precision;this.trim=!!specifier.trim;this.type=specifier.type===undefined?"":specifier.type+"";}FormatSpecifier.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===undefined?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===undefined?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type;}; - -// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k. -function formatTrim(s){out:for(var n=s.length,i=1,i0=-1,i1;i0)i0=0;break;}}return i0>0?s.slice(0,i0)+s.slice(i1+1):s;} - -var prefixExponent;function formatPrefixAuto(x,p){var d=formatDecimalParts(x,p);if(!d)return x+"";var coefficient=d[0],exponent=d[1],i=exponent-(prefixExponent=Math.max(-8,Math.min(8,Math.floor(exponent/3)))*3)+1,n=coefficient.length;return i===n?coefficient:i>n?coefficient+new Array(i-n+1).join("0"):i>0?coefficient.slice(0,i)+"."+coefficient.slice(i):"0."+new Array(1-i).join("0")+formatDecimalParts(x,Math.max(0,p+i-1))[0];// less than 1y! -} - -function formatRounded(x,p){var d=formatDecimalParts(x,p);if(!d)return x+"";var coefficient=d[0],exponent=d[1];return exponent<0?"0."+new Array(-exponent).join("0")+coefficient:coefficient.length>exponent+1?coefficient.slice(0,exponent+1)+"."+coefficient.slice(exponent+1):coefficient+new Array(exponent-coefficient.length+2).join("0");} - -var formatTypes = {"%":(x,p)=>(x*100).toFixed(p),"b":x=>Math.round(x).toString(2),"c":x=>x+"","d":formatDecimal,"e":(x,p)=>x.toExponential(p),"f":(x,p)=>x.toFixed(p),"g":(x,p)=>x.toPrecision(p),"o":x=>Math.round(x).toString(8),"p":(x,p)=>formatRounded(x*100,p),"r":formatRounded,"s":formatPrefixAuto,"X":x=>Math.round(x).toString(16).toUpperCase(),"x":x=>Math.round(x).toString(16)}; - -function identity$1(x){return x;} - -var map=Array.prototype.map,prefixes=["y","z","a","f","p","n","ยต","m","","k","M","G","T","P","E","Z","Y"];function formatLocale(locale){var group=locale.grouping===undefined||locale.thousands===undefined?identity$1:formatGroup(map.call(locale.grouping,Number),locale.thousands+""),currencyPrefix=locale.currency===undefined?"":locale.currency[0]+"",currencySuffix=locale.currency===undefined?"":locale.currency[1]+"",decimal=locale.decimal===undefined?".":locale.decimal+"",numerals=locale.numerals===undefined?identity$1:formatNumerals(map.call(locale.numerals,String)),percent=locale.percent===undefined?"%":locale.percent+"",minus=locale.minus===undefined?"โˆ’":locale.minus+"",nan=locale.nan===undefined?"NaN":locale.nan+"";function newFormat(specifier){specifier=formatSpecifier(specifier);var fill=specifier.fill,align=specifier.align,sign=specifier.sign,symbol=specifier.symbol,zero=specifier.zero,width=specifier.width,comma=specifier.comma,precision=specifier.precision,trim=specifier.trim,type=specifier.type;// The "n" type is an alias for ",g". -if(type==="n")comma=true,type="g";// The "" type, and any invalid type, is an alias for ".12~g". -else if(!formatTypes[type])precision===undefined&&(precision=12),trim=true,type="g";// If zero fill is specified, padding goes after sign and before digits. -if(zero||fill==="0"&&align==="=")zero=true,fill="0",align="=";// Compute the prefix and suffix. -// For SI-prefix, the suffix is lazily computed. -var prefix=symbol==="$"?currencyPrefix:symbol==="#"&&/[boxX]/.test(type)?"0"+type.toLowerCase():"",suffix=symbol==="$"?currencySuffix:/[%p]/.test(type)?percent:"";// What format function should we use? -// Is this an integer type? -// Can this type generate exponential notation? -var formatType=formatTypes[type],maybeSuffix=/[defgprs%]/.test(type);// Set the default precision if not specified, -// or clamp the specified precision to the supported range. -// For significant precision, it must be in [1, 21]. -// For fixed precision, it must be in [0, 20]. -precision=precision===undefined?6:/[gprs]/.test(type)?Math.max(1,Math.min(21,precision)):Math.max(0,Math.min(20,precision));function format(value){var valuePrefix=prefix,valueSuffix=suffix,i,n,c;if(type==="c"){valueSuffix=formatType(value)+valueSuffix;value="";}else {value=+value;// Determine the sign. -0 is not less than 0, but 1 / -0 is! -var valueNegative=value<0||1/value<0;// Perform the initial formatting. -value=isNaN(value)?nan:formatType(Math.abs(value),precision);// Trim insignificant zeros. -if(trim)value=formatTrim(value);// If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign. -if(valueNegative&&+value===0&&sign!=="+")valueNegative=false;// Compute the prefix and suffix. -valuePrefix=(valueNegative?sign==="("?sign:minus:sign==="-"||sign==="("?"":sign)+valuePrefix;valueSuffix=(type==="s"?prefixes[8+prefixExponent/3]:"")+valueSuffix+(valueNegative&&sign==="("?")":"");// Break the formatted value into the integer โ€œvalueโ€ part that can be -// grouped, and fractional or exponential โ€œsuffixโ€ part that is not. -if(maybeSuffix){i=-1,n=value.length;while(++ic||c>57){valueSuffix=(c===46?decimal+value.slice(i+1):value.slice(i))+valueSuffix;value=value.slice(0,i);break;}}}}// If the fill character is not "0", grouping is applied before padding. -if(comma&&!zero)value=group(value,Infinity);// Compute the padding. -var length=valuePrefix.length+value.length+valueSuffix.length,padding=length>1)+valuePrefix+value+valueSuffix+padding.slice(length);break;default:value=padding+valuePrefix+value+valueSuffix;break;}return numerals(value);}format.toString=function(){return specifier+"";};return format;}function formatPrefix(specifier,value){var f=newFormat((specifier=formatSpecifier(specifier),specifier.type="f",specifier)),e=Math.max(-8,Math.min(8,Math.floor(exponent(value)/3)))*3,k=Math.pow(10,-e),prefix=prefixes[8+e/3];return function(value){return f(k*value)+prefix;};}return {format:newFormat,formatPrefix:formatPrefix};} - -var locale;var format;var formatPrefix;defaultLocale({thousands:",",grouping:[3],currency:["$",""]});function defaultLocale(definition){locale=formatLocale(definition);format=locale.format;formatPrefix=locale.formatPrefix;return locale;} - -function precisionFixed(step){return Math.max(0,-exponent(Math.abs(step)));} - -function precisionPrefix(step,value){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(exponent(value)/3)))*3-exponent(Math.abs(step)));} - -function precisionRound(step,max){step=Math.abs(step),max=Math.abs(max)-step;return Math.max(0,exponent(max)-exponent(step))+1;} - -function initRange(domain,range){switch(arguments.length){case 0:break;case 1:this.range(domain);break;default:this.range(range).domain(domain);break;}return this;} - -function constants(x){return function(){return x;};} - -function number$2(x){return +x;} - -var unit=[0,1];function identity$2(x){return x;}function normalize(a,b){return (b-=a=+a)?function(x){return (x-a)/b;}:constants(isNaN(b)?NaN:0.5);}function clamper(a,b){var t;if(a>b)t=a,a=b,b=t;return function(x){return Math.max(a,Math.min(b,x));};}// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1]. -// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b]. -function bimap(domain,range,interpolate){var d0=domain[0],d1=domain[1],r0=range[0],r1=range[1];if(d12?polymap:bimap;output=input=null;return scale;}function scale(x){return x==null||isNaN(x=+x)?unknown:(output||(output=piecewise(domain.map(transform),range,interpolate$1)))(transform(clamp(x)));}scale.invert=function(y){return clamp(untransform((input||(input=piecewise(range,domain.map(transform),interpolateNumber)))(y)));};scale.domain=function(_){return arguments.length?(domain=Array.from(_,number$2),rescale()):domain.slice();};scale.range=function(_){return arguments.length?(range=Array.from(_),rescale()):range.slice();};scale.rangeRound=function(_){return range=Array.from(_),interpolate$1=interpolateRound,rescale();};scale.clamp=function(_){return arguments.length?(clamp=_?true:identity$2,rescale()):clamp!==identity$2;};scale.interpolate=function(_){return arguments.length?(interpolate$1=_,rescale()):interpolate$1;};scale.unknown=function(_){return arguments.length?(unknown=_,scale):unknown;};return function(t,u){transform=t,untransform=u;return rescale();};}function continuous(){return transformer()(identity$2,identity$2);} - -function tickFormat(start,stop,count,specifier){var step=tickStep(start,stop,count),precision;specifier=formatSpecifier(specifier==null?",f":specifier);switch(specifier.type){case"s":{var value=Math.max(Math.abs(start),Math.abs(stop));if(specifier.precision==null&&!isNaN(precision=precisionPrefix(step,value)))specifier.precision=precision;return formatPrefix(specifier,value);}case"":case"e":case"g":case"p":case"r":{if(specifier.precision==null&&!isNaN(precision=precisionRound(step,Math.max(Math.abs(start),Math.abs(stop)))))specifier.precision=precision-(specifier.type==="e");break;}case"f":case"%":{if(specifier.precision==null&&!isNaN(precision=precisionFixed(step)))specifier.precision=precision-(specifier.type==="%")*2;break;}}return format(specifier);} - -function linearish(scale){var domain=scale.domain;scale.ticks=function(count){var d=domain();return ticks(d[0],d[d.length-1],count==null?10:count);};scale.tickFormat=function(count,specifier){var d=domain();return tickFormat(d[0],d[d.length-1],count==null?10:count,specifier);};scale.nice=function(count){if(count==null)count=10;var d=domain();var i0=0;var i1=d.length-1;var start=d[i0];var stop=d[i1];var prestep;var step;var maxIter=10;if(stop0){step=tickIncrement(start,stop,count);if(step===prestep){d[i0]=start;d[i1]=stop;return domain(d);}else if(step>0){start=Math.floor(start/step)*step;stop=Math.ceil(stop/step)*step;}else if(step<0){start=Math.ceil(start*step)/step;stop=Math.floor(stop*step)/step;}else {break;}prestep=step;}return scale;};return scale;}function linear$1(){var scale=continuous();scale.copy=function(){return copy(scale,linear$1());};initRange.apply(scale,arguments);return linearish(scale);} - -const LedgerViewType = 'ledger'; -class LedgerView extends obsidian.ItemView { - constructor(leaf, plugin) { - super(leaf); - this.redraw = () => { - const contentEl = this.containerEl.children[1]; - console.debug('ledger: Rendering preview for ledger file'); - contentEl.empty(); - const p = contentEl.createEl('p'); - p.setText('Hello world 2'); - const div = contentEl.createDiv(); - div.appendChild(this.makeSimpleBarD3()); - }; - this.makeSimpleBarD3 = () => { - // https://www.essycode.com/posts/create-sparkline-charts-d3/ - const WIDTH = 160; - const HEIGHT = 30; - const DATA_COUNT = 40; - const BAR_WIDTH = (WIDTH - DATA_COUNT) / DATA_COUNT; - const data = range(DATA_COUNT).map((d) => Math.random()); - const x = linear$1().domain([0, DATA_COUNT]).range([0, WIDTH]); - const y = linear$1().domain([0, 1]).range([HEIGHT, 0]); - const svg = create('svg').attr('width', WIDTH).attr('height', HEIGHT); - const g = svg.append('g'); - g.selectAll('.bar') - .data(data) - .enter() - .append('rect') - .attr('class', 'bar') - .attr('x', (d, i) => x(i)) - .attr('y', (d) => HEIGHT - y(d)) - .attr('width', BAR_WIDTH) - .attr('height', (d) => y(d)) - .attr('fill', 'MediumSeaGreen'); - return svg.node(); - }; - this.reloadData = () => { - throw new Error('Not Implemented'); - }; - this.plugin = plugin; - this.registerEvent(this.app.vault.on('modify', (file) => { - if (file.path === this.plugin.settings.ledgerFile) { - this.reloadData(); - } - })); - this.reloadData(); - this.redraw(); - } - getViewType() { - return LedgerViewType; - } - getDisplayText() { - return 'Ledger'; - } - getIcon() { - return 'ledger'; - } -} - -const defaultSettings = { - currencySymbol: '$', - ledgerFile: 'Ledger.md', - includeFinalLineAmount: false, - enableLedgerVis: false, - assetAccountsPrefix: 'Assets', - expenseAccountsPrefix: 'Expenses', - incomeAccountsPrefix: 'Income', - liabilityAccountsPrefix: 'Liabilities', -}; -const settingsWithDefaults = (settings) => ({ - ...defaultSettings, - ...settings, -}); -class SettingsTab extends obsidian.PluginSettingTab { - constructor(plugin) { - super(plugin.app, plugin); - this.plugin = plugin; - } - display() { - const { containerEl } = this; - containerEl.empty(); - containerEl.createEl('h2', { text: 'Ledger Plugin - Settings' }); - new obsidian.Setting(containerEl) - .setName('Currency Symbol') - .setDesc('Prefixes all transaction amounts') - .addText((text) => { - text.setPlaceholder('$').setValue(this.plugin.settings.currencySymbol); - text.inputEl.onblur = (e) => { - this.plugin.settings.currencySymbol = e.target.value; - this.plugin.saveData(this.plugin.settings); - }; - }); - new obsidian.Setting(containerEl) - .setName('Ledger File') - .setDesc('Path in the Vault to your Ledger file. Must be a .md file.') - .addText((text) => { - text - .setValue(this.plugin.settings.ledgerFile) - .setPlaceholder('Ledger.md'); - text.inputEl.onblur = (e) => { - this.plugin.settings.ledgerFile = e.target.value; - this.plugin.saveData(this.plugin.settings); - }; - }); - new obsidian.Setting(containerEl) - .setName('Include final line amount') - .setDesc('Include the dollar amount on the final line of a transaction. This value is optional, and is alway equal to the sum of the previous lines * -1.') - .addToggle((toggle) => { - toggle - .setValue(this.plugin.settings.includeFinalLineAmount) - .onChange((value) => { - this.plugin.settings.includeFinalLineAmount = value; - this.plugin.saveData(this.plugin.settings); - }); - }); - containerEl.createEl('h3', 'Transaction Category Prefixes'); - containerEl.createEl('p', { - text: "Ledger uses categories to group exense types. Categories are grouped into a hierarchy by separating with a colon. For example 'expenses:food:grocery' and 'expenses:food:restaurants", - }); - new obsidian.Setting(containerEl) - .setName('Asset Category Prefix') - .setDesc('The category prefix used for grouping asset accounts. If you use aliases in your Ledger file, this must be the **unaliased** category prefix. e.g. "Assets" instead of "a"') - .addText((text) => { - text.setValue(this.plugin.settings.assetAccountsPrefix); - text.inputEl.onblur = (e) => { - this.plugin.settings.assetAccountsPrefix = e.target.value; - this.plugin.saveData(this.plugin.settings); - }; - }); - new obsidian.Setting(containerEl) - .setName('Expense Category Prefix') - .setDesc('The category prefix used for grouping expense accounts. If you use aliases in your Ledger file, this must be the **unaliased** category prefix. e.g. "Expenses" instead of "e"') - .addText((text) => { - text.setValue(this.plugin.settings.expenseAccountsPrefix); - text.inputEl.onblur = (e) => { - this.plugin.settings.expenseAccountsPrefix = e.target.value; - this.plugin.saveData(this.plugin.settings); - }; - }); - new obsidian.Setting(containerEl) - .setName('Income Category Prefix') - .setDesc('The category prefix used for grouping income accounts. If you use aliases in your Ledger file, this must be the **unaliased** category prefix. e.g. "Income" instead of "i"') - .addText((text) => { - text.setValue(this.plugin.settings.incomeAccountsPrefix); - text.inputEl.onblur = (e) => { - this.plugin.settings.incomeAccountsPrefix = e.target.value; - this.plugin.saveData(this.plugin.settings); - }; - }); - new obsidian.Setting(containerEl) - .setName('Liability Category Prefix') - .setDesc('The category prefix used for grouping liability accounts. If you use aliases in your Ledger file, this must be the **unaliased** category prefix. e.g. "Liabilities" instead of "l"') - .addText((text) => { - text.setValue(this.plugin.settings.liabilityAccountsPrefix); - text.inputEl.onblur = (e) => { - this.plugin.settings.liabilityAccountsPrefix = e.target.value; - this.plugin.saveData(this.plugin.settings); - }; - }); - const div = containerEl.createEl('div', { - cls: 'ledger-donation', - }); - const donateText = document.createElement('p'); - donateText.appendText('If this plugin adds value for you and you would like to help support ' + - 'continued development, please use the buttons below:'); - div.appendChild(donateText); - const parser = new DOMParser(); - div.appendChild(createDonateButton('https://paypal.me/tgrosinger', parser.parseFromString(paypal, 'text/xml').documentElement)); - div.appendChild(createDonateButton('https://www.buymeacoffee.com/tgrosinger', parser.parseFromString(buyMeACoffee, 'text/xml').documentElement)); - } -} -const createDonateButton = (link, img) => { - const a = document.createElement('a'); - a.setAttribute('href', link); - a.addClass('ledger-donate-button'); - a.appendChild(img); - return a; -}; - -/** @license React v16.13.1 - * react-is.development.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -var reactIs_development = createCommonjsModule(function (module, exports) { -{(function(){// nor polyfill, then a plain number is used for performance. -var hasSymbol=typeof Symbol==='function'&&Symbol.for;var REACT_ELEMENT_TYPE=hasSymbol?Symbol.for('react.element'):0xeac7;var REACT_PORTAL_TYPE=hasSymbol?Symbol.for('react.portal'):0xeaca;var REACT_FRAGMENT_TYPE=hasSymbol?Symbol.for('react.fragment'):0xeacb;var REACT_STRICT_MODE_TYPE=hasSymbol?Symbol.for('react.strict_mode'):0xeacc;var REACT_PROFILER_TYPE=hasSymbol?Symbol.for('react.profiler'):0xead2;var REACT_PROVIDER_TYPE=hasSymbol?Symbol.for('react.provider'):0xeacd;var REACT_CONTEXT_TYPE=hasSymbol?Symbol.for('react.context'):0xeace;// TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary -// (unstable) APIs that have been removed. Can we remove the symbols? -var REACT_ASYNC_MODE_TYPE=hasSymbol?Symbol.for('react.async_mode'):0xeacf;var REACT_CONCURRENT_MODE_TYPE=hasSymbol?Symbol.for('react.concurrent_mode'):0xeacf;var REACT_FORWARD_REF_TYPE=hasSymbol?Symbol.for('react.forward_ref'):0xead0;var REACT_SUSPENSE_TYPE=hasSymbol?Symbol.for('react.suspense'):0xead1;var REACT_SUSPENSE_LIST_TYPE=hasSymbol?Symbol.for('react.suspense_list'):0xead8;var REACT_MEMO_TYPE=hasSymbol?Symbol.for('react.memo'):0xead3;var REACT_LAZY_TYPE=hasSymbol?Symbol.for('react.lazy'):0xead4;var REACT_BLOCK_TYPE=hasSymbol?Symbol.for('react.block'):0xead9;var REACT_FUNDAMENTAL_TYPE=hasSymbol?Symbol.for('react.fundamental'):0xead5;var REACT_RESPONDER_TYPE=hasSymbol?Symbol.for('react.responder'):0xead6;var REACT_SCOPE_TYPE=hasSymbol?Symbol.for('react.scope'):0xead7;function isValidElementType(type){return typeof type==='string'||typeof type==='function'||// Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. -type===REACT_FRAGMENT_TYPE||type===REACT_CONCURRENT_MODE_TYPE||type===REACT_PROFILER_TYPE||type===REACT_STRICT_MODE_TYPE||type===REACT_SUSPENSE_TYPE||type===REACT_SUSPENSE_LIST_TYPE||typeof type==='object'&&type!==null&&(type.$$typeof===REACT_LAZY_TYPE||type.$$typeof===REACT_MEMO_TYPE||type.$$typeof===REACT_PROVIDER_TYPE||type.$$typeof===REACT_CONTEXT_TYPE||type.$$typeof===REACT_FORWARD_REF_TYPE||type.$$typeof===REACT_FUNDAMENTAL_TYPE||type.$$typeof===REACT_RESPONDER_TYPE||type.$$typeof===REACT_SCOPE_TYPE||type.$$typeof===REACT_BLOCK_TYPE);}function typeOf(object){if(typeof object==='object'&&object!==null){var $$typeof=object.$$typeof;switch($$typeof){case REACT_ELEMENT_TYPE:var type=object.type;switch(type){case REACT_ASYNC_MODE_TYPE:case REACT_CONCURRENT_MODE_TYPE:case REACT_FRAGMENT_TYPE:case REACT_PROFILER_TYPE:case REACT_STRICT_MODE_TYPE:case REACT_SUSPENSE_TYPE:return type;default:var $$typeofType=type&&type.$$typeof;switch($$typeofType){case REACT_CONTEXT_TYPE:case REACT_FORWARD_REF_TYPE:case REACT_LAZY_TYPE:case REACT_MEMO_TYPE:case REACT_PROVIDER_TYPE:return $$typeofType;default:return $$typeof;}}case REACT_PORTAL_TYPE:return $$typeof;}}return undefined;}// AsyncMode is deprecated along with isAsyncMode -var AsyncMode=REACT_ASYNC_MODE_TYPE;var ConcurrentMode=REACT_CONCURRENT_MODE_TYPE;var ContextConsumer=REACT_CONTEXT_TYPE;var ContextProvider=REACT_PROVIDER_TYPE;var Element=REACT_ELEMENT_TYPE;var ForwardRef=REACT_FORWARD_REF_TYPE;var Fragment=REACT_FRAGMENT_TYPE;var Lazy=REACT_LAZY_TYPE;var Memo=REACT_MEMO_TYPE;var Portal=REACT_PORTAL_TYPE;var Profiler=REACT_PROFILER_TYPE;var StrictMode=REACT_STRICT_MODE_TYPE;var Suspense=REACT_SUSPENSE_TYPE;var hasWarnedAboutDeprecatedIsAsyncMode=false;// AsyncMode should be deprecated -function isAsyncMode(object){{if(!hasWarnedAboutDeprecatedIsAsyncMode){hasWarnedAboutDeprecatedIsAsyncMode=true;// Using console['warn'] to evade Babel and ESLint -console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, '+'and will be removed in React 17+. Update your code to use '+'ReactIs.isConcurrentMode() instead. It has the exact same API.');}}return isConcurrentMode(object)||typeOf(object)===REACT_ASYNC_MODE_TYPE;}function isConcurrentMode(object){return typeOf(object)===REACT_CONCURRENT_MODE_TYPE;}function isContextConsumer(object){return typeOf(object)===REACT_CONTEXT_TYPE;}function isContextProvider(object){return typeOf(object)===REACT_PROVIDER_TYPE;}function isElement(object){return typeof object==='object'&&object!==null&&object.$$typeof===REACT_ELEMENT_TYPE;}function isForwardRef(object){return typeOf(object)===REACT_FORWARD_REF_TYPE;}function isFragment(object){return typeOf(object)===REACT_FRAGMENT_TYPE;}function isLazy(object){return typeOf(object)===REACT_LAZY_TYPE;}function isMemo(object){return typeOf(object)===REACT_MEMO_TYPE;}function isPortal(object){return typeOf(object)===REACT_PORTAL_TYPE;}function isProfiler(object){return typeOf(object)===REACT_PROFILER_TYPE;}function isStrictMode(object){return typeOf(object)===REACT_STRICT_MODE_TYPE;}function isSuspense(object){return typeOf(object)===REACT_SUSPENSE_TYPE;}exports.AsyncMode=AsyncMode;exports.ConcurrentMode=ConcurrentMode;exports.ContextConsumer=ContextConsumer;exports.ContextProvider=ContextProvider;exports.Element=Element;exports.ForwardRef=ForwardRef;exports.Fragment=Fragment;exports.Lazy=Lazy;exports.Memo=Memo;exports.Portal=Portal;exports.Profiler=Profiler;exports.StrictMode=StrictMode;exports.Suspense=Suspense;exports.isAsyncMode=isAsyncMode;exports.isConcurrentMode=isConcurrentMode;exports.isContextConsumer=isContextConsumer;exports.isContextProvider=isContextProvider;exports.isElement=isElement;exports.isForwardRef=isForwardRef;exports.isFragment=isFragment;exports.isLazy=isLazy;exports.isMemo=isMemo;exports.isPortal=isPortal;exports.isProfiler=isProfiler;exports.isStrictMode=isStrictMode;exports.isSuspense=isSuspense;exports.isValidElementType=isValidElementType;exports.typeOf=typeOf;})();} -}); - -var reactIs = createCommonjsModule(function (module) { -{module.exports=reactIs_development;} -}); - -/* -object-assign -(c) Sindre Sorhus -@license MIT -*/ -/* eslint-disable no-unused-vars */var getOwnPropertySymbols=Object.getOwnPropertySymbols;var hasOwnProperty=Object.prototype.hasOwnProperty;var propIsEnumerable=Object.prototype.propertyIsEnumerable;function toObject(val){if(val===null||val===undefined){throw new TypeError('Object.assign cannot be called with null or undefined');}return Object(val);}function shouldUseNative(){try{if(!Object.assign){return false;}// Detect buggy property enumeration order in older V8 versions. -// https://bugs.chromium.org/p/v8/issues/detail?id=4118 -var test1=new String('abc');// eslint-disable-line no-new-wrappers -test1[5]='de';if(Object.getOwnPropertyNames(test1)[0]==='5'){return false;}// https://bugs.chromium.org/p/v8/issues/detail?id=3056 -var test2={};for(var i=0;i<10;i++){test2['_'+String.fromCharCode(i)]=i;}var order2=Object.getOwnPropertyNames(test2).map(function(n){return test2[n];});if(order2.join('')!=='0123456789'){return false;}// https://bugs.chromium.org/p/v8/issues/detail?id=3056 -var test3={};'abcdefghijklmnopqrst'.split('').forEach(function(letter){test3[letter]=letter;});if(Object.keys(Object.assign({},test3)).join('')!=='abcdefghijklmnopqrst'){return false;}return true;}catch(err){// We don't expect any of the above to throw, but better to be safe. -return false;}}var objectAssign=shouldUseNative()?Object.assign:function(target,source){var from;var to=toObject(target);var symbols;for(var s=1;s1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key];}printWarning('warn',format,args);}}function error(format){{for(var _len2=arguments.length,args=new Array(_len2>1?_len2-1:0),_key2=1;_key2<_len2;_key2++){args[_key2-1]=arguments[_key2];}printWarning('error',format,args);}}function printWarning(level,format,args){// When changing this logic, you might want to also -// update consoleWithStackDev.www.js as well. -{var ReactDebugCurrentFrame=ReactSharedInternals.ReactDebugCurrentFrame;var stack=ReactDebugCurrentFrame.getStackAddendum();if(stack!==''){format+='%s';args=args.concat([stack]);}var argsWithFormat=args.map(function(item){return ''+item;});// Careful: RN currently depends on this prefix -argsWithFormat.unshift('Warning: '+format);// We intentionally don't use spread (or .apply) directly because it -// breaks IE9: https://github.com/facebook/react/issues/13610 -// eslint-disable-next-line react-internal/no-production-logging -Function.prototype.apply.call(console[level],console,argsWithFormat);}}var didWarnStateUpdateForUnmountedComponent={};function warnNoop(publicInstance,callerName){{var _constructor=publicInstance.constructor;var componentName=_constructor&&(_constructor.displayName||_constructor.name)||'ReactClass';var warningKey=componentName+"."+callerName;if(didWarnStateUpdateForUnmountedComponent[warningKey]){return;}error("Can't call %s on a component that is not yet mounted. "+'This is a no-op, but it might indicate a bug in your application. '+'Instead, assign to `this.state` directly or define a `state = {};` '+'class property with the desired state in the %s component.',callerName,componentName);didWarnStateUpdateForUnmountedComponent[warningKey]=true;}}/** - * This is the abstract API for an update queue. - */var ReactNoopUpdateQueue={/** - * Checks whether or not this composite component is mounted. - * @param {ReactClass} publicInstance The instance we want to test. - * @return {boolean} True if mounted, false otherwise. - * @protected - * @final - */isMounted:function(publicInstance){return false;},/** - * Forces an update. This should only be invoked when it is known with - * certainty that we are **not** in a DOM transaction. - * - * You may want to call this when you know that some deeper aspect of the - * component's state has changed but `setState` was not called. - * - * This will not invoke `shouldComponentUpdate`, but it will invoke - * `componentWillUpdate` and `componentDidUpdate`. - * - * @param {ReactClass} publicInstance The instance that should rerender. - * @param {?function} callback Called after component is updated. - * @param {?string} callerName name of the calling function in the public API. - * @internal - */enqueueForceUpdate:function(publicInstance,callback,callerName){warnNoop(publicInstance,'forceUpdate');},/** - * Replaces all of the state. Always use this or `setState` to mutate state. - * You should treat `this.state` as immutable. - * - * There is no guarantee that `this.state` will be immediately updated, so - * accessing `this.state` after calling this method may return the old value. - * - * @param {ReactClass} publicInstance The instance that should rerender. - * @param {object} completeState Next state. - * @param {?function} callback Called after component is updated. - * @param {?string} callerName name of the calling function in the public API. - * @internal - */enqueueReplaceState:function(publicInstance,completeState,callback,callerName){warnNoop(publicInstance,'replaceState');},/** - * Sets a subset of the state. This only exists because _pendingState is - * internal. This provides a merging strategy that is not available to deep - * properties which is confusing. TODO: Expose pendingState or don't use it - * during the merge. - * - * @param {ReactClass} publicInstance The instance that should rerender. - * @param {object} partialState Next partial state to be merged with state. - * @param {?function} callback Called after component is updated. - * @param {?string} Name of the calling function in the public API. - * @internal - */enqueueSetState:function(publicInstance,partialState,callback,callerName){warnNoop(publicInstance,'setState');}};var emptyObject={};{Object.freeze(emptyObject);}/** - * Base class helpers for the updating state of a component. - */function Component(props,context,updater){this.props=props;this.context=context;// If a component has string refs, we will assign a different object later. -this.refs=emptyObject;// We initialize the default updater but the real one gets injected by the -// renderer. -this.updater=updater||ReactNoopUpdateQueue;}Component.prototype.isReactComponent={};/** - * Sets a subset of the state. Always use this to mutate - * state. You should treat `this.state` as immutable. - * - * There is no guarantee that `this.state` will be immediately updated, so - * accessing `this.state` after calling this method may return the old value. - * - * There is no guarantee that calls to `setState` will run synchronously, - * as they may eventually be batched together. You can provide an optional - * callback that will be executed when the call to setState is actually - * completed. - * - * When a function is provided to setState, it will be called at some point in - * the future (not synchronously). It will be called with the up to date - * component arguments (state, props, context). These values can be different - * from this.* because your function may be called after receiveProps but before - * shouldComponentUpdate, and this new state, props, and context will not yet be - * assigned to this. - * - * @param {object|function} partialState Next partial state or function to - * produce next partial state to be merged with current state. - * @param {?function} callback Called after state is updated. - * @final - * @protected - */Component.prototype.setState=function(partialState,callback){if(!(typeof partialState==='object'||typeof partialState==='function'||partialState==null)){{throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");}}this.updater.enqueueSetState(this,partialState,callback,'setState');};/** - * Forces an update. This should only be invoked when it is known with - * certainty that we are **not** in a DOM transaction. - * - * You may want to call this when you know that some deeper aspect of the - * component's state has changed but `setState` was not called. - * - * This will not invoke `shouldComponentUpdate`, but it will invoke - * `componentWillUpdate` and `componentDidUpdate`. - * - * @param {?function} callback Called after update is complete. - * @final - * @protected - */Component.prototype.forceUpdate=function(callback){this.updater.enqueueForceUpdate(this,callback,'forceUpdate');};/** - * Deprecated APIs. These APIs used to exist on classic React classes but since - * we would like to deprecate them, we're not going to move them over to this - * modern base class. Instead, we define a getter that warns if it's accessed. - */{var deprecatedAPIs={isMounted:['isMounted','Instead, make sure to clean up subscriptions and pending requests in '+'componentWillUnmount to prevent memory leaks.'],replaceState:['replaceState','Refactor your code to use setState instead (see '+'https://github.com/facebook/react/issues/3236).']};var defineDeprecationWarning=function(methodName,info){Object.defineProperty(Component.prototype,methodName,{get:function(){warn('%s(...) is deprecated in plain JavaScript React classes. %s',info[0],info[1]);return undefined;}});};for(var fnName in deprecatedAPIs){if(deprecatedAPIs.hasOwnProperty(fnName)){defineDeprecationWarning(fnName,deprecatedAPIs[fnName]);}}}function ComponentDummy(){}ComponentDummy.prototype=Component.prototype;/** - * Convenience component with default shallow equality check for sCU. - */function PureComponent(props,context,updater){this.props=props;this.context=context;// If a component has string refs, we will assign a different object later. -this.refs=emptyObject;this.updater=updater||ReactNoopUpdateQueue;}var pureComponentPrototype=PureComponent.prototype=new ComponentDummy();pureComponentPrototype.constructor=PureComponent;// Avoid an extra prototype jump for these methods. -_assign(pureComponentPrototype,Component.prototype);pureComponentPrototype.isPureReactComponent=true;// an immutable object with a single mutable value -function createRef(){var refObject={current:null};{Object.seal(refObject);}return refObject;}function getWrappedName(outerType,innerType,wrapperName){var functionName=innerType.displayName||innerType.name||'';return outerType.displayName||(functionName!==''?wrapperName+"("+functionName+")":wrapperName);}function getContextName(type){return type.displayName||'Context';}function getComponentName(type){if(type==null){// Host root, text node or just invalid type. -return null;}{if(typeof type.tag==='number'){error('Received an unexpected object in getComponentName(). '+'This is likely a bug in React. Please file an issue.');}}if(typeof type==='function'){return type.displayName||type.name||null;}if(typeof type==='string'){return type;}switch(type){case exports.Fragment:return 'Fragment';case REACT_PORTAL_TYPE:return 'Portal';case exports.Profiler:return 'Profiler';case exports.StrictMode:return 'StrictMode';case exports.Suspense:return 'Suspense';case REACT_SUSPENSE_LIST_TYPE:return 'SuspenseList';}if(typeof type==='object'){switch(type.$$typeof){case REACT_CONTEXT_TYPE:var context=type;return getContextName(context)+'.Consumer';case REACT_PROVIDER_TYPE:var provider=type;return getContextName(provider._context)+'.Provider';case REACT_FORWARD_REF_TYPE:return getWrappedName(type,type.render,'ForwardRef');case REACT_MEMO_TYPE:return getComponentName(type.type);case REACT_BLOCK_TYPE:return getComponentName(type._render);case REACT_LAZY_TYPE:{var lazyComponent=type;var payload=lazyComponent._payload;var init=lazyComponent._init;try{return getComponentName(init(payload));}catch(x){return null;}}}}return null;}var hasOwnProperty=Object.prototype.hasOwnProperty;var RESERVED_PROPS={key:true,ref:true,__self:true,__source:true};var specialPropKeyWarningShown,specialPropRefWarningShown,didWarnAboutStringRefs;{didWarnAboutStringRefs={};}function hasValidRef(config){{if(hasOwnProperty.call(config,'ref')){var getter=Object.getOwnPropertyDescriptor(config,'ref').get;if(getter&&getter.isReactWarning){return false;}}}return config.ref!==undefined;}function hasValidKey(config){{if(hasOwnProperty.call(config,'key')){var getter=Object.getOwnPropertyDescriptor(config,'key').get;if(getter&&getter.isReactWarning){return false;}}}return config.key!==undefined;}function defineKeyPropWarningGetter(props,displayName){var warnAboutAccessingKey=function(){{if(!specialPropKeyWarningShown){specialPropKeyWarningShown=true;error('%s: `key` is not a prop. Trying to access it will result '+'in `undefined` being returned. If you need to access the same '+'value within the child component, you should pass it as a different '+'prop. (https://reactjs.org/link/special-props)',displayName);}}};warnAboutAccessingKey.isReactWarning=true;Object.defineProperty(props,'key',{get:warnAboutAccessingKey,configurable:true});}function defineRefPropWarningGetter(props,displayName){var warnAboutAccessingRef=function(){{if(!specialPropRefWarningShown){specialPropRefWarningShown=true;error('%s: `ref` is not a prop. Trying to access it will result '+'in `undefined` being returned. If you need to access the same '+'value within the child component, you should pass it as a different '+'prop. (https://reactjs.org/link/special-props)',displayName);}}};warnAboutAccessingRef.isReactWarning=true;Object.defineProperty(props,'ref',{get:warnAboutAccessingRef,configurable:true});}function warnIfStringRefCannotBeAutoConverted(config){{if(typeof config.ref==='string'&&ReactCurrentOwner.current&&config.__self&&ReactCurrentOwner.current.stateNode!==config.__self){var componentName=getComponentName(ReactCurrentOwner.current.type);if(!didWarnAboutStringRefs[componentName]){error('Component "%s" contains the string ref "%s". '+'Support for string refs will be removed in a future major release. '+'This case cannot be automatically converted to an arrow function. '+'We ask you to manually fix this case by using useRef() or createRef() instead. '+'Learn more about using refs safely here: '+'https://reactjs.org/link/strict-mode-string-ref',componentName,config.ref);didWarnAboutStringRefs[componentName]=true;}}}}/** - * Factory method to create a new React element. This no longer adheres to - * the class pattern, so do not use new to call it. Also, instanceof check - * will not work. Instead test $$typeof field against Symbol.for('react.element') to check - * if something is a React Element. - * - * @param {*} type - * @param {*} props - * @param {*} key - * @param {string|object} ref - * @param {*} owner - * @param {*} self A *temporary* helper to detect places where `this` is - * different from the `owner` when React.createElement is called, so that we - * can warn. We want to get rid of owner and replace string `ref`s with arrow - * functions, and as long as `this` and owner are the same, there will be no - * change in behavior. - * @param {*} source An annotation object (added by a transpiler or otherwise) - * indicating filename, line number, and/or other information. - * @internal - */var ReactElement=function(type,key,ref,self,source,owner,props){var element={// This tag allows us to uniquely identify this as a React Element -$$typeof:REACT_ELEMENT_TYPE,// Built-in properties that belong on the element -type:type,key:key,ref:ref,props:props,// Record the component responsible for creating this element. -_owner:owner};{// The validation flag is currently mutative. We put it on -// an external backing store so that we can freeze the whole object. -// This can be replaced with a WeakMap once they are implemented in -// commonly used development environments. -element._store={};// To make comparing ReactElements easier for testing purposes, we make -// the validation flag non-enumerable (where possible, which should -// include every environment we run tests in), so the test framework -// ignores it. -Object.defineProperty(element._store,'validated',{configurable:false,enumerable:false,writable:true,value:false});// self and source are DEV only properties. -Object.defineProperty(element,'_self',{configurable:false,enumerable:false,writable:false,value:self});// Two elements created in two different places should be considered -// equal for testing purposes and therefore we hide it from enumeration. -Object.defineProperty(element,'_source',{configurable:false,enumerable:false,writable:false,value:source});if(Object.freeze){Object.freeze(element.props);Object.freeze(element);}}return element;};/** - * Create and return a new ReactElement of the given type. - * See https://reactjs.org/docs/react-api.html#createelement - */function createElement(type,config,children){var propName;// Reserved names are extracted -var props={};var key=null;var ref=null;var self=null;var source=null;if(config!=null){if(hasValidRef(config)){ref=config.ref;{warnIfStringRefCannotBeAutoConverted(config);}}if(hasValidKey(config)){key=''+config.key;}self=config.__self===undefined?null:config.__self;source=config.__source===undefined?null:config.__source;// Remaining properties are added to a new props object -for(propName in config){if(hasOwnProperty.call(config,propName)&&!RESERVED_PROPS.hasOwnProperty(propName)){props[propName]=config[propName];}}}// Children can be more than one argument, and those are transferred onto -// the newly allocated props object. -var childrenLength=arguments.length-2;if(childrenLength===1){props.children=children;}else if(childrenLength>1){var childArray=Array(childrenLength);for(var i=0;i1){var childArray=Array(childrenLength);for(var i=0;i is not supported and will be removed in '+'a future major release. Did you mean to render instead?');}return context.Provider;},set:function(_Provider){context.Provider=_Provider;}},_currentValue:{get:function(){return context._currentValue;},set:function(_currentValue){context._currentValue=_currentValue;}},_currentValue2:{get:function(){return context._currentValue2;},set:function(_currentValue2){context._currentValue2=_currentValue2;}},_threadCount:{get:function(){return context._threadCount;},set:function(_threadCount){context._threadCount=_threadCount;}},Consumer:{get:function(){if(!hasWarnedAboutUsingNestedContextConsumers){hasWarnedAboutUsingNestedContextConsumers=true;error('Rendering is not supported and will be removed in '+'a future major release. Did you mean to render instead?');}return context.Consumer;}},displayName:{get:function(){return context.displayName;},set:function(displayName){if(!hasWarnedAboutDisplayNameOnConsumer){warn('Setting `displayName` on Context.Consumer has no effect. '+"You should set it directly on the context with Context.displayName = '%s'.",displayName);hasWarnedAboutDisplayNameOnConsumer=true;}}}});// $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty -context.Consumer=Consumer;}{context._currentRenderer=null;context._currentRenderer2=null;}return context;}var Uninitialized=-1;var Pending=0;var Resolved=1;var Rejected=2;function lazyInitializer(payload){if(payload._status===Uninitialized){var ctor=payload._result;var thenable=ctor();// Transition to the next state. -var pending=payload;pending._status=Pending;pending._result=thenable;thenable.then(function(moduleObject){if(payload._status===Pending){var defaultExport=moduleObject.default;{if(defaultExport===undefined){error('lazy: Expected the result of a dynamic import() call. '+'Instead received: %s\n\nYour code should look like: \n '+// Break up imports to avoid accidentally parsing them as dependencies. -'const MyComponent = lazy(() => imp'+"ort('./MyComponent'))",moduleObject);}}// Transition to the next state. -var resolved=payload;resolved._status=Resolved;resolved._result=defaultExport;}},function(error){if(payload._status===Pending){// Transition to the next state. -var rejected=payload;rejected._status=Rejected;rejected._result=error;}});}if(payload._status===Resolved){return payload._result;}else {throw payload._result;}}function lazy(ctor){var payload={// We use these fields to store the result. -_status:-1,_result:ctor};var lazyType={$$typeof:REACT_LAZY_TYPE,_payload:payload,_init:lazyInitializer};{// In production, this would just set it on the object. -var defaultProps;var propTypes;// $FlowFixMe -Object.defineProperties(lazyType,{defaultProps:{configurable:true,get:function(){return defaultProps;},set:function(newDefaultProps){error('React.lazy(...): It is not supported to assign `defaultProps` to '+'a lazy component import. Either specify them where the component '+'is defined, or create a wrapping component around it.');defaultProps=newDefaultProps;// Match production behavior more closely: -// $FlowFixMe -Object.defineProperty(lazyType,'defaultProps',{enumerable:true});}},propTypes:{configurable:true,get:function(){return propTypes;},set:function(newPropTypes){error('React.lazy(...): It is not supported to assign `propTypes` to '+'a lazy component import. Either specify them where the component '+'is defined, or create a wrapping component around it.');propTypes=newPropTypes;// Match production behavior more closely: -// $FlowFixMe -Object.defineProperty(lazyType,'propTypes',{enumerable:true});}}});}return lazyType;}function forwardRef(render){{if(render!=null&&render.$$typeof===REACT_MEMO_TYPE){error('forwardRef requires a render function but received a `memo` '+'component. Instead of forwardRef(memo(...)), use '+'memo(forwardRef(...)).');}else if(typeof render!=='function'){error('forwardRef requires a render function but was given %s.',render===null?'null':typeof render);}else {if(render.length!==0&&render.length!==2){error('forwardRef render functions accept exactly two parameters: props and ref. %s',render.length===1?'Did you forget to use the ref parameter?':'Any additional parameter will be undefined.');}}if(render!=null){if(render.defaultProps!=null||render.propTypes!=null){error('forwardRef render functions do not support propTypes or defaultProps. '+'Did you accidentally pass a React component?');}}}var elementType={$$typeof:REACT_FORWARD_REF_TYPE,render:render};{var ownName;Object.defineProperty(elementType,'displayName',{enumerable:false,configurable:true,get:function(){return ownName;},set:function(name){ownName=name;if(render.displayName==null){render.displayName=name;}}});}return elementType;}// Filter certain DOM attributes (e.g. src, href) if their values are empty strings. -var enableScopeAPI=false;// Experimental Create Event Handle API. -function isValidElementType(type){if(typeof type==='string'||typeof type==='function'){return true;}// Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill). -if(type===exports.Fragment||type===exports.Profiler||type===REACT_DEBUG_TRACING_MODE_TYPE||type===exports.StrictMode||type===exports.Suspense||type===REACT_SUSPENSE_LIST_TYPE||type===REACT_LEGACY_HIDDEN_TYPE||enableScopeAPI){return true;}if(typeof type==='object'&&type!==null){if(type.$$typeof===REACT_LAZY_TYPE||type.$$typeof===REACT_MEMO_TYPE||type.$$typeof===REACT_PROVIDER_TYPE||type.$$typeof===REACT_CONTEXT_TYPE||type.$$typeof===REACT_FORWARD_REF_TYPE||type.$$typeof===REACT_FUNDAMENTAL_TYPE||type.$$typeof===REACT_BLOCK_TYPE||type[0]===REACT_SERVER_BLOCK_TYPE){return true;}}return false;}function memo(type,compare){{if(!isValidElementType(type)){error('memo: The first argument must be a component. Instead '+'received: %s',type===null?'null':typeof type);}}var elementType={$$typeof:REACT_MEMO_TYPE,type:type,compare:compare===undefined?null:compare};{var ownName;Object.defineProperty(elementType,'displayName',{enumerable:false,configurable:true,get:function(){return ownName;},set:function(name){ownName=name;if(type.displayName==null){type.displayName=name;}}});}return elementType;}function resolveDispatcher(){var dispatcher=ReactCurrentDispatcher.current;if(!(dispatcher!==null)){{throw Error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.");}}return dispatcher;}function useContext(Context,unstable_observedBits){var dispatcher=resolveDispatcher();{if(unstable_observedBits!==undefined){error('useContext() second argument is reserved for future '+'use in React. Passing it is not supported. '+'You passed: %s.%s',unstable_observedBits,typeof unstable_observedBits==='number'&&Array.isArray(arguments[2])?'\n\nDid you call array.map(useContext)? '+'Calling Hooks inside a loop is not supported. '+'Learn more at https://reactjs.org/link/rules-of-hooks':'');}// TODO: add a more generic warning for invalid values. -if(Context._context!==undefined){var realContext=Context._context;// Don't deduplicate because this legitimately causes bugs -// and nobody should be using this in existing code. -if(realContext.Consumer===Context){error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be '+'removed in a future major release. Did you mean to call useContext(Context) instead?');}else if(realContext.Provider===Context){error('Calling useContext(Context.Provider) is not supported. '+'Did you mean to call useContext(Context) instead?');}}}return dispatcher.useContext(Context,unstable_observedBits);}function useState(initialState){var dispatcher=resolveDispatcher();return dispatcher.useState(initialState);}function useReducer(reducer,initialArg,init){var dispatcher=resolveDispatcher();return dispatcher.useReducer(reducer,initialArg,init);}function useRef(initialValue){var dispatcher=resolveDispatcher();return dispatcher.useRef(initialValue);}function useEffect(create,deps){var dispatcher=resolveDispatcher();return dispatcher.useEffect(create,deps);}function useLayoutEffect(create,deps){var dispatcher=resolveDispatcher();return dispatcher.useLayoutEffect(create,deps);}function useCallback(callback,deps){var dispatcher=resolveDispatcher();return dispatcher.useCallback(callback,deps);}function useMemo(create,deps){var dispatcher=resolveDispatcher();return dispatcher.useMemo(create,deps);}function useImperativeHandle(ref,create,deps){var dispatcher=resolveDispatcher();return dispatcher.useImperativeHandle(ref,create,deps);}function useDebugValue(value,formatterFn){{var dispatcher=resolveDispatcher();return dispatcher.useDebugValue(value,formatterFn);}}// Helpers to patch console.logs to avoid logging during side-effect free -// replaying on render function. This currently only patches the object -// lazily which won't cover if the log function was extracted eagerly. -// We could also eagerly patch the method. -var disabledDepth=0;var prevLog;var prevInfo;var prevWarn;var prevError;var prevGroup;var prevGroupCollapsed;var prevGroupEnd;function disabledLog(){}disabledLog.__reactDisabledLog=true;function disableLogs(){{if(disabledDepth===0){/* eslint-disable react-internal/no-production-logging */prevLog=console.log;prevInfo=console.info;prevWarn=console.warn;prevError=console.error;prevGroup=console.group;prevGroupCollapsed=console.groupCollapsed;prevGroupEnd=console.groupEnd;// https://github.com/facebook/react/issues/19099 -var props={configurable:true,enumerable:true,value:disabledLog,writable:true};// $FlowFixMe Flow thinks console is immutable. -Object.defineProperties(console,{info:props,log:props,warn:props,error:props,group:props,groupCollapsed:props,groupEnd:props});/* eslint-enable react-internal/no-production-logging */}disabledDepth++;}}function reenableLogs(){{disabledDepth--;if(disabledDepth===0){/* eslint-disable react-internal/no-production-logging */var props={configurable:true,enumerable:true,writable:true};// $FlowFixMe Flow thinks console is immutable. -Object.defineProperties(console,{log:_assign({},props,{value:prevLog}),info:_assign({},props,{value:prevInfo}),warn:_assign({},props,{value:prevWarn}),error:_assign({},props,{value:prevError}),group:_assign({},props,{value:prevGroup}),groupCollapsed:_assign({},props,{value:prevGroupCollapsed}),groupEnd:_assign({},props,{value:prevGroupEnd})});/* eslint-enable react-internal/no-production-logging */}if(disabledDepth<0){error('disabledDepth fell below zero. '+'This is a bug in React. Please file an issue.');}}}var ReactCurrentDispatcher$1=ReactSharedInternals.ReactCurrentDispatcher;var prefix;function describeBuiltInComponentFrame(name,source,ownerFn){{if(prefix===undefined){// Extract the VM specific prefix used by each line. -try{throw Error();}catch(x){var match=x.stack.trim().match(/\n( *(at )?)/);prefix=match&&match[1]||'';}}// We use the prefix to ensure our stacks line up with native stack frames. -return '\n'+prefix+name;}}var reentry=false;var componentFrameCache;{var PossiblyWeakMap=typeof WeakMap==='function'?WeakMap:Map;componentFrameCache=new PossiblyWeakMap();}function describeNativeComponentFrame(fn,construct){// If something asked for a stack inside a fake render, it should get ignored. -if(!fn||reentry){return '';}{var frame=componentFrameCache.get(fn);if(frame!==undefined){return frame;}}var control;reentry=true;var previousPrepareStackTrace=Error.prepareStackTrace;// $FlowFixMe It does accept undefined. -Error.prepareStackTrace=undefined;var previousDispatcher;{previousDispatcher=ReactCurrentDispatcher$1.current;// Set the dispatcher in DEV because this might be call in the render function -// for warnings. -ReactCurrentDispatcher$1.current=null;disableLogs();}try{// This should throw. -if(construct){// Something should be setting the props in the constructor. -var Fake=function(){throw Error();};// $FlowFixMe -Object.defineProperty(Fake.prototype,'props',{set:function(){// We use a throwing setter instead of frozen or non-writable props -// because that won't throw in a non-strict mode function. -throw Error();}});if(typeof Reflect==='object'&&Reflect.construct){// We construct a different control for this case to include any extra -// frames added by the construct call. -try{Reflect.construct(Fake,[]);}catch(x){control=x;}Reflect.construct(fn,[],Fake);}else {try{Fake.call();}catch(x){control=x;}fn.call(Fake.prototype);}}else {try{throw Error();}catch(x){control=x;}fn();}}catch(sample){// This is inlined manually because closure doesn't do it for us. -if(sample&&control&&typeof sample.stack==='string'){// This extracts the first frame from the sample that isn't also in the control. -// Skipping one frame that we assume is the frame that calls the two. -var sampleLines=sample.stack.split('\n');var controlLines=control.stack.split('\n');var s=sampleLines.length-1;var c=controlLines.length-1;while(s>=1&&c>=0&&sampleLines[s]!==controlLines[c]){// We expect at least one stack frame to be shared. -// Typically this will be the root most one. However, stack frames may be -// cut off due to maximum stack limits. In this case, one maybe cut off -// earlier than the other. We assume that the sample is longer or the same -// and there for cut off earlier. So we should find the root most frame in -// the sample somewhere in the control. -c--;}for(;s>=1&&c>=0;s--,c--){// Next we find the first one that isn't the same which should be the -// frame that called our sample function and the control. -if(sampleLines[s]!==controlLines[c]){// In V8, the first line is describing the message but other VMs don't. -// If we're about to return the first line, and the control is also on the same -// line, that's a pretty good indicator that our sample threw at same line as -// the control. I.e. before we entered the sample frame. So we ignore this result. -// This can happen if you passed a class to function component, or non-function. -if(s!==1||c!==1){do{s--;c--;// We may still have similar intermediate frames from the construct call. -// The next one that isn't the same should be our match though. -if(c<0||sampleLines[s]!==controlLines[c]){// V8 adds a "new" prefix for native classes. Let's remove it to make it prettier. -var _frame='\n'+sampleLines[s].replace(' at new ',' at ');{if(typeof fn==='function'){componentFrameCache.set(fn,_frame);}}// Return the line we found. -return _frame;}}while(s>=1&&c>=0);}break;}}}}finally{reentry=false;{ReactCurrentDispatcher$1.current=previousDispatcher;reenableLogs();}Error.prepareStackTrace=previousPrepareStackTrace;}// Fallback to just using the name if we couldn't make it throw. -var name=fn?fn.displayName||fn.name:'';var syntheticFrame=name?describeBuiltInComponentFrame(name):'';{if(typeof fn==='function'){componentFrameCache.set(fn,syntheticFrame);}}return syntheticFrame;}function describeFunctionComponentFrame(fn,source,ownerFn){{return describeNativeComponentFrame(fn,false);}}function shouldConstruct(Component){var prototype=Component.prototype;return !!(prototype&&prototype.isReactComponent);}function describeUnknownElementTypeFrameInDEV(type,source,ownerFn){if(type==null){return '';}if(typeof type==='function'){{return describeNativeComponentFrame(type,shouldConstruct(type));}}if(typeof type==='string'){return describeBuiltInComponentFrame(type);}switch(type){case exports.Suspense:return describeBuiltInComponentFrame('Suspense');case REACT_SUSPENSE_LIST_TYPE:return describeBuiltInComponentFrame('SuspenseList');}if(typeof type==='object'){switch(type.$$typeof){case REACT_FORWARD_REF_TYPE:return describeFunctionComponentFrame(type.render);case REACT_MEMO_TYPE:// Memo may contain any component type so we recursively resolve it. -return describeUnknownElementTypeFrameInDEV(type.type,source,ownerFn);case REACT_BLOCK_TYPE:return describeFunctionComponentFrame(type._render);case REACT_LAZY_TYPE:{var lazyComponent=type;var payload=lazyComponent._payload;var init=lazyComponent._init;try{// Lazy may contain any component type so we recursively resolve it. -return describeUnknownElementTypeFrameInDEV(init(payload),source,ownerFn);}catch(x){}}}}return '';}var loggedTypeFailures={};var ReactDebugCurrentFrame$1=ReactSharedInternals.ReactDebugCurrentFrame;function setCurrentlyValidatingElement(element){{if(element){var owner=element._owner;var stack=describeUnknownElementTypeFrameInDEV(element.type,element._source,owner?owner.type:null);ReactDebugCurrentFrame$1.setExtraStackFrame(stack);}else {ReactDebugCurrentFrame$1.setExtraStackFrame(null);}}}function checkPropTypes(typeSpecs,values,location,componentName,element){{// $FlowFixMe This is okay but Flow doesn't know it. -var has=Function.call.bind(Object.prototype.hasOwnProperty);for(var typeSpecName in typeSpecs){if(has(typeSpecs,typeSpecName)){var error$1=void 0;// Prop type validation may throw. In case they do, we don't want to -// fail the render phase where it didn't fail before. So we log it. -// After these have been cleaned up, we'll let them throw. -try{// This is intentionally an invariant that gets caught. It's the same -// behavior as without this statement except with a better message. -if(typeof typeSpecs[typeSpecName]!=='function'){var err=Error((componentName||'React class')+': '+location+' type `'+typeSpecName+'` is invalid; '+'it must be a function, usually from the `prop-types` package, but received `'+typeof typeSpecs[typeSpecName]+'`.'+'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');err.name='Invariant Violation';throw err;}error$1=typeSpecs[typeSpecName](values,typeSpecName,componentName,location,null,'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');}catch(ex){error$1=ex;}if(error$1&&!(error$1 instanceof Error)){setCurrentlyValidatingElement(element);error('%s: type specification of %s'+' `%s` is invalid; the type checker '+'function must return `null` or an `Error` but returned a %s. '+'You may have forgotten to pass an argument to the type checker '+'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and '+'shape all require an argument).',componentName||'React class',location,typeSpecName,typeof error$1);setCurrentlyValidatingElement(null);}if(error$1 instanceof Error&&!(error$1.message in loggedTypeFailures)){// Only monitor this failure once because there tends to be a lot of the -// same error. -loggedTypeFailures[error$1.message]=true;setCurrentlyValidatingElement(element);error('Failed %s type: %s',location,error$1.message);setCurrentlyValidatingElement(null);}}}}}function setCurrentlyValidatingElement$1(element){{if(element){var owner=element._owner;var stack=describeUnknownElementTypeFrameInDEV(element.type,element._source,owner?owner.type:null);setExtraStackFrame(stack);}else {setExtraStackFrame(null);}}}var propTypesMisspellWarningShown;{propTypesMisspellWarningShown=false;}function getDeclarationErrorAddendum(){if(ReactCurrentOwner.current){var name=getComponentName(ReactCurrentOwner.current.type);if(name){return '\n\nCheck the render method of `'+name+'`.';}}return '';}function getSourceInfoErrorAddendum(source){if(source!==undefined){var fileName=source.fileName.replace(/^.*[\\\/]/,'');var lineNumber=source.lineNumber;return '\n\nCheck your code at '+fileName+':'+lineNumber+'.';}return '';}function getSourceInfoErrorAddendumForProps(elementProps){if(elementProps!==null&&elementProps!==undefined){return getSourceInfoErrorAddendum(elementProps.__source);}return '';}/** - * Warn if there's no key explicitly set on dynamic arrays of children or - * object keys are not valid. This allows us to keep track of children between - * updates. - */var ownerHasKeyUseWarning={};function getCurrentComponentErrorInfo(parentType){var info=getDeclarationErrorAddendum();if(!info){var parentName=typeof parentType==='string'?parentType:parentType.displayName||parentType.name;if(parentName){info="\n\nCheck the top-level render call using <"+parentName+">.";}}return info;}/** - * Warn if the element doesn't have an explicit key assigned to it. - * This element is in an array. The array could grow and shrink or be - * reordered. All children that haven't already been validated are required to - * have a "key" property assigned to it. Error statuses are cached so a warning - * will only be shown once. - * - * @internal - * @param {ReactElement} element Element that requires a key. - * @param {*} parentType element's parent's type. - */function validateExplicitKey(element,parentType){if(!element._store||element._store.validated||element.key!=null){return;}element._store.validated=true;var currentComponentErrorInfo=getCurrentComponentErrorInfo(parentType);if(ownerHasKeyUseWarning[currentComponentErrorInfo]){return;}ownerHasKeyUseWarning[currentComponentErrorInfo]=true;// Usually the current owner is the offender, but if it accepts children as a -// property, it may be the creator of the child that's responsible for -// assigning it a key. -var childOwner='';if(element&&element._owner&&element._owner!==ReactCurrentOwner.current){// Give the component that originally created this child. -childOwner=" It was passed a child from "+getComponentName(element._owner.type)+".";}{setCurrentlyValidatingElement$1(element);error('Each child in a list should have a unique "key" prop.'+'%s%s See https://reactjs.org/link/warning-keys for more information.',currentComponentErrorInfo,childOwner);setCurrentlyValidatingElement$1(null);}}/** - * Ensure that every element either is passed in a static location, in an - * array with an explicit keys property defined, or in an object literal - * with valid key property. - * - * @internal - * @param {ReactNode} node Statically passed child of any type. - * @param {*} parentType node's parent's type. - */function validateChildKeys(node,parentType){if(typeof node!=='object'){return;}if(Array.isArray(node)){for(var i=0;i";info=' Did you accidentally export a JSX literal instead of a component?';}else {typeString=typeof type;}{error('React.createElement: type is invalid -- expected a string (for '+'built-in components) or a class/function (for composite '+'components) but got: %s.%s',typeString,info);}}var element=createElement.apply(this,arguments);// The result can be nullish if a mock or a custom function is used. -// TODO: Drop this when these are no longer allowed as the type argument. -if(element==null){return element;}// Skip key warning if the type isn't valid since our key validation logic -// doesn't expect a non-string/function type and can throw confusing errors. -// We don't want exception behavior to differ between dev and prod. -// (Rendering will throw with a helpful message and as soon as the type is -// fixed, the key warnings will appear.) -if(validType){for(var i=2;iq)&&(t=(f=f.replace(' ',':')).length),0h&&(h=(c=c.trim()).charCodeAt(0));switch(h){case 38:return c.replace(F,'$1'+d.trim());case 58:return d.trim()+c.replace(F,'$1'+d.trim());default:if(0<1*e&&0b.charCodeAt(8))break;case 115:a=a.replace(b,'-webkit-'+b)+';'+a;break;case 207:case 102:a=a.replace(b,'-webkit-'+(102e.charCodeAt(0)&&(e=e.trim());V=e;e=[V];if(0 ({})}\n```\n\n',8:'ThemeProvider: Please make your "theme" prop an object.\n\n',9:"Missing document ``\n\n",10:"Cannot find a StyleSheet instance. Usually this happens if there are multiple copies of styled-components loaded at once. Check out this issue for how to troubleshoot and fix the common cases where this situation can happen: https://github.com/styled-components/styled-components/issues/1941#issuecomment-417862021\n\n",11:"_This error was replaced with a dev-time warning, it will be deleted for v4 final._ [createGlobalStyle] received children which will not be rendered. Please use the component without passing children elements.\n\n",12:"It seems you are interpolating a keyframe declaration (%s) into an untagged string. This was supported in styled-components v3, but is not longer supported in v4 as keyframes are now injected on-demand. Please wrap your string in the css\\`\\` helper which ensures the styles are injected correctly. See https://www.styled-components.com/docs/api#css\n\n",13:"%s is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\n\n",14:'ThemeProvider: "theme" prop is required.\n\n',15:"A stylis plugin has been supplied that is not named. We need a name for each plugin to be able to prevent styling collisions between different stylis configurations within the same app. Before you pass your plugin to ``, please make sure each plugin is uniquely-named, e.g.\n\n```js\nObject.defineProperty(importedPlugin, 'name', { value: 'some-unique-name' });\n```\n\n",16:"Reached the limit of how many styled components may be created at group %s.\nYou may only create up to 1,073,741,824 components. If you're creating components dynamically,\nas for instance in your render method then you may be running into this limitation.\n\n",17:"CSSStyleSheet could not be found on HTMLStyleElement.\nHas styled-components' style tag been unmounted or altered by another script?\n"};function D(){for(var e=arguments.length<=0?void 0:arguments[0],t=[],n=1,r=arguments.length;n1?t-1:0),r=1;r=this.groupSizes.length){for(var n=this.groupSizes,r=n.length,o=r;e>=o;)(o<<=1)<0&&j(16,""+e);this.groupSizes=new Uint32Array(o),this.groupSizes.set(n),this.length=o;for(var s=r;s=this.length||0===this.groupSizes[e])return t;for(var n=this.groupSizes[e],r=this.indexOfGroup(e),o=r+n,s=r;s1<<30)&&j(16,""+t),x.set(e,t),k.set(t,e),t;},z=function(e){return k.get(e);},M=function(e,t){t>=V&&(V=t+1),x.set(e,t),k.set(t,e);},G="style["+A+'][data-styled-version="5.3.3"]',L=new RegExp("^"+A+'\\.g(\\d+)\\[id="([\\w\\d-]+)"\\].*?"([^"]*)'),F=function(e,t,n){for(var r,o=n.split(","),s=0,i=o.length;s=0;n--){var r=t[n];if(r&&1===r.nodeType&&r.hasAttribute(A))return r;}}(n),s=void 0!==o?o.nextSibling:null;r.setAttribute(A,"active"),r.setAttribute("data-styled-version","5.3.3");var i=q();return i&&r.setAttribute("nonce",i),n.insertBefore(r,s),r;},$=function(){function e(e){var t=this.element=H(e);t.appendChild(document.createTextNode("")),this.sheet=function(e){if(e.sheet)return e.sheet;for(var t=document.styleSheets,n=0,r=t.length;n=0){var n=document.createTextNode(t),r=this.nodes[e];return this.element.insertBefore(n,r||null),this.length++,!0;}return !1;},t.deleteRule=function(e){this.element.removeChild(this.nodes[e]),this.length--;},t.getRule=function(e){return e0&&(u+=e+",");}),r+=""+a+c+'{content:"'+u+'"}/*!sc*/\n';}}}return r;}(this);},e;}(),K=/(a)(d)/gi,Q=function(e){return String.fromCharCode(e+(e>25?39:97));};function ee(e){var t,n="";for(t=Math.abs(e);t>52;t=t/52|0)n=Q(t%52)+n;return (Q(t%52)+n).replace(K,"$1-$2");}var te=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e;},ne=function(e){return te(5381,e);};var oe=ne("5.3.3"),se=function(){function e(e,t,n){this.rules=e,this.staticRulesId="",this.isStatic="production"===undefined,this.componentId=t,this.baseHash=te(oe,t),this.baseStyle=n,Z.registerId(t);}return e.prototype.generateAndInjectStyles=function(e,t,n){var r=this.componentId,o=[];if(this.baseStyle&&o.push(this.baseStyle.generateAndInjectStyles(e,t,n)),this.isStatic&&!n.hash){if(this.staticRulesId&&t.hasNameForId(r,this.staticRulesId))o.push(this.staticRulesId);else {var s=Ne(this.rules,e,t,n).join(""),i=ee(te(this.baseHash,s)>>>0);if(!t.hasNameForId(r,i)){var a=n(s,"."+i,void 0,r);t.insertRules(r,i,a);}o.push(i),this.staticRulesId=i;}}else {for(var c=this.rules.length,u=te(this.baseHash,n.hash),l="",d=0;d>>0);if(!t.hasNameForId(r,m)){var y=n(l,"."+m,void 0,r);t.insertRules(r,m,y);}o.push(m);}}return o.join(" ");},e;}(),ie=/^\s*\/\/.*$/gm,ae=[":","[",".","#"];function ce(e){var t,n,r,o,s=void 0===e?E:e,i=s.options,a=void 0===i?E:i,c=s.plugins,u=void 0===c?w:c,l=new stylis_min(a),d=[],h=function(e){function t(t){if(t)try{e(t+"}");}catch(e){}}return function(n,r,o,s,i,a,c,u,l,d){switch(n){case 1:if(0===l&&64===r.charCodeAt(0))return e(r+";"),"";break;case 2:if(0===u)return r+"/*|*/";break;case 3:switch(u){case 102:case 112:return e(o[0]+r),"";default:return r+(0===d?"/*|*/":"");}case-2:r.split("/*|*/}").forEach(t);}};}(function(e){d.push(e);}),f=function(e,r,s){return 0===r&&-1!==ae.indexOf(s[n.length])||s.match(o)?e:"."+t;};function m(e,s,i,a){void 0===a&&(a="&");var c=e.replace(ie,""),u=s&&i?i+" "+s+" { "+c+" }":c;return t=a,n=s,r=new RegExp("\\"+n+"\\b","g"),o=new RegExp("(\\"+n+"\\b){2,}"),l(i||!s?"":s,u);}return l.use([].concat(u,[function(e,t,o){2===e&&o.length&&o[0].lastIndexOf(n)>0&&(o[0]=o[0].replace(r,f));},h,function(e){if(-2===e){var t=d;return d=[],t;}}])),m.hash=u.length?u.reduce(function(e,t){return t.name||j(15),te(e,t.name);},5381).toString():"",m;}var ue=/*#__PURE__*/react.createContext(),le=ue.Consumer,de=/*#__PURE__*/react.createContext(),he=(de.Consumer,new Z()),pe=ce();function fe(){return react.useContext(ue)||he;}function me(){return react.useContext(de)||pe;}var ve=function(){function e(e,t){var n=this;this.inject=function(e,t){void 0===t&&(t=pe);var r=n.name+t.hash;e.hasNameForId(n.id,r)||e.insertRules(n.id,r,t(n.rules,r,"@keyframes"));},this.toString=function(){return j(12,String(n.name));},this.name=e,this.id="sc-keyframes-"+e,this.rules=t;}return e.prototype.getName=function(e){return void 0===e&&(e=pe),this.name+e.hash;},e;}(),ge=/([A-Z])/,Se=/([A-Z])/g,we=/^ms-/,Ee=function(e){return "-"+e.toLowerCase();};function be(e){return ge.test(e)?e.replace(Se,Ee).replace(we,"-ms-"):e;}var _e=function(e){return null==e||!1===e||""===e;};function Ne(e,n,r,o){if(Array.isArray(e)){for(var s,i=[],a=0,c=e.length;a1?t-1:0),r=1;r1?t-1:0),i=1;i?@[\\\]^`{|}~-]+/g,je=/(^-|-$)/g;function Te(e){return e.replace(De,"-").replace(je,"");}var xe=function(e){return ee(ne(e)>>>0);};function ke(e){return "string"==typeof e&&(e.charAt(0)===e.charAt(0).toLowerCase());}var Ve=function(e){return "function"==typeof e||"object"==typeof e&&null!==e&&!Array.isArray(e);},Be=function(e){return "__proto__"!==e&&"constructor"!==e&&"prototype"!==e;};function ze(e,t,n){var r=e[n];Ve(t)&&Ve(r)?Me(r,t):e[n]=t;}function Me(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r=0||(o[n]=e[n]);return o;}(t,["componentId"]),s=r&&r+"-"+(ke(e)?e:Te(_(e)));return qe(e,v({},o,{attrs:S,componentId:s}),n);},Object.defineProperty(C,"defaultProps",{get:function(){return this._foldedDefaultProps;},set:function(t){this._foldedDefaultProps=o?Me({},e.defaultProps,t):t;}}),(Oe(f,g),C.warnTooManyClasses=function(e,t){var n={},r=!1;return function(o){if(!r&&(n[o]=!0,Object.keys(n).length>=200)){var s=t?' with the id of "'+t+'"':"";console.warn("Over 200 classes were generated for component "+e+s+".\nConsider using the attrs method, together with a style object for frequently changed styles.\nExample:\n const Component = styled.div.attrs(props => ({\n style: {\n background: props.background,\n },\n }))`width: 100%;`\n\n "),r=!0,n={};}};}(f,g)),C.toString=function(){return "."+C.styledComponentId;},i&&hoistNonReactStatics_cjs(C,e,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,shouldForwardProp:!0,styledComponentId:!0,target:!0,withComponent:!0}),C;}var He=function(e){return function e(t,r,o){if(void 0===o&&(o=E),!reactIs.isValidElementType(r))return j(1,String(r));var s=function(){return t(r,o,Ce.apply(void 0,arguments));};return s.withConfig=function(n){return e(t,r,v({},o,{},n));},s.attrs=function(n){return e(t,r,v({},o,{attrs:Array.prototype.concat(o.attrs,n).filter(Boolean)}));},s;}(qe,e);};["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","marker","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","textPath","tspan"].forEach(function(e){He[e]=He(e);});"undefined"!=typeof navigator&&"ReactNative"===navigator.product&&console.warn("It looks like you've imported 'styled-components' on React Native.\nPerhaps you're looking to import 'styled-components/native'?\nRead more about this at https://www.styled-components.com/docs/basics#react-native"),"undefined"!=typeof window&&(window["__styled-components-init__"]=window["__styled-components-init__"]||0,1===window["__styled-components-init__"]&&console.warn("It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\n\nSee https://s-c.sh/2BAXzed for more info."),window["__styled-components-init__"]+=1); - -const WideInput = He.input ` - width: 100%; -`; -const WideSelect = He.select ` - width: 100%; -`; - -const InputWithIconWrapper = He.div ` - position: relative; -`; -const InputWithIcon = He(WideInput) ` - /* important required to override mobile stylesheet */ - padding-left: 25px !important; -`; -const InputIcon = He.i ` - position: absolute; - display: block; - transform: translate(0, -50%); - top: 50%; - pointer-events: none; - width: 25px; - text-align: center; - font-style: normal; -`; -const CurrencyInput = ({ currencySymbol, amount, setAmount }) => (react.createElement(InputWithIconWrapper, null, - react.createElement(InputWithIcon, { placeholder: "Amount", type: "number", value: amount, onChange: (e) => setAmount(e.target.value), onBlur: () => setAmount(parseFloat(amount).toFixed(2)) }), - react.createElement(InputIcon, null, currencySymbol))); - -/** - * Fuse.js v6.4.6 - Lightweight fuzzy-search (http://fusejs.io) - * - * Copyright (c) 2021 Kiro Risk (http://kiro.me) - * All Rights Reserved. Apache Software License 2.0 - * - * http://www.apache.org/licenses/LICENSE-2.0 - */function isArray(value){return !Array.isArray?getTag(value)==='[object Array]':Array.isArray(value);}// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/baseToString.js -const INFINITY=1/0;function baseToString(value){// Exit early for strings to avoid a performance hit in some environments. -if(typeof value=='string'){return value;}let result=value+'';return result=='0'&&1/value==-INFINITY?'-0':result;}function toString(value){return value==null?'':baseToString(value);}function isString(value){return typeof value==='string';}function isNumber(value){return typeof value==='number';}// Adapted from: https://github.com/lodash/lodash/blob/master/isBoolean.js -function isBoolean(value){return value===true||value===false||isObjectLike(value)&&getTag(value)=='[object Boolean]';}function isObject(value){return typeof value==='object';}// Checks if `value` is object-like. -function isObjectLike(value){return isObject(value)&&value!==null;}function isDefined(value){return value!==undefined&&value!==null;}function isBlank(value){return !value.trim().length;}// Gets the `toStringTag` of `value`. -// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/getTag.js -function getTag(value){return value==null?value===undefined?'[object Undefined]':'[object Null]':Object.prototype.toString.call(value);}const EXTENDED_SEARCH_UNAVAILABLE='Extended search is not available';const INCORRECT_INDEX_TYPE="Incorrect 'index' type";const LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY=key=>`Invalid value for key ${key}`;const PATTERN_LENGTH_TOO_LARGE=max=>`Pattern length exceeds max of ${max}.`;const MISSING_KEY_PROPERTY=name=>`Missing ${name} property in key`;const INVALID_KEY_WEIGHT_VALUE=key=>`Property 'weight' in key '${key}' must be a positive integer`;const hasOwn=Object.prototype.hasOwnProperty;class KeyStore{constructor(keys){this._keys=[];this._keyMap={};let totalWeight=0;keys.forEach(key=>{let obj=createKey(key);totalWeight+=obj.weight;this._keys.push(obj);this._keyMap[obj.id]=obj;totalWeight+=obj.weight;});// Normalize weights so that their sum is equal to 1 -this._keys.forEach(key=>{key.weight/=totalWeight;});}get(keyId){return this._keyMap[keyId];}keys(){return this._keys;}toJSON(){return JSON.stringify(this._keys);}}function createKey(key){let path=null;let id=null;let src=null;let weight=1;if(isString(key)||isArray(key)){src=key;path=createKeyPath(key);id=createKeyId(key);}else {if(!hasOwn.call(key,'name')){throw new Error(MISSING_KEY_PROPERTY('name'));}const name=key.name;src=name;if(hasOwn.call(key,'weight')){weight=key.weight;if(weight<=0){throw new Error(INVALID_KEY_WEIGHT_VALUE(name));}}path=createKeyPath(name);id=createKeyId(name);}return {path,id,weight,src};}function createKeyPath(key){return isArray(key)?key:key.split('.');}function createKeyId(key){return isArray(key)?key.join('.'):key;}function get$2(obj,path){let list=[];let arr=false;const deepGet=(obj,path,index)=>{if(!isDefined(obj)){return;}if(!path[index]){// If there's no path left, we've arrived at the object we care about. -list.push(obj);}else {let key=path[index];const value=obj[key];if(!isDefined(value)){return;}// If we're at the last value in the path, and if it's a string/number/bool, -// add it to the list -if(index===path.length-1&&(isString(value)||isNumber(value)||isBoolean(value))){list.push(toString(value));}else if(isArray(value)){arr=true;// Search each item in the array. -for(let i=0,len=value.length;ia.score===b.score?a.idx{this._keysMap[key.id]=idx;});}create(){if(this.isCreated||!this.docs.length){return;}this.isCreated=true;// List is Array -if(isString(this.docs[0])){this.docs.forEach((doc,docIndex)=>{this._addString(doc,docIndex);});}else {// List is Array -this.docs.forEach((doc,docIndex)=>{this._addObject(doc,docIndex);});}this.norm.clear();}// Adds a doc to the end of the index -add(doc){const idx=this.size();if(isString(doc)){this._addString(doc,idx);}else {this._addObject(doc,idx);}}// Removes the doc at the specified index of the index -removeAt(idx){this.records.splice(idx,1);// Change ref index of every subsquent doc -for(let i=idx,len=this.size();i{// console.log(key) -let value=this.getFn(doc,key.path);if(!isDefined(value)){return;}if(isArray(value)){let subRecords=[];const stack=[{nestedArrIndex:-1,value}];while(stack.length){const{nestedArrIndex,value}=stack.pop();if(!isDefined(value)){continue;}if(isString(value)&&!isBlank(value)){let subRecord={v:value,i:nestedArrIndex,n:this.norm.get(value)};subRecords.push(subRecord);}else if(isArray(value)){value.forEach((item,k)=>{stack.push({nestedArrIndex:k,value:item});});}}record.$[keyIndex]=subRecords;}else if(!isBlank(value)){let subRecord={v:value,n:this.norm.get(value)};record.$[keyIndex]=subRecord;}});this.records.push(record);}toJSON(){return {keys:this.keys,records:this.records};}}function createIndex(keys,docs,{getFn=Config.getFn}={}){const myIndex=new FuseIndex({getFn});myIndex.setKeys(keys.map(createKey));myIndex.setSources(docs);myIndex.create();return myIndex;}function parseIndex(data,{getFn=Config.getFn}={}){const{keys,records}=data;const myIndex=new FuseIndex({getFn});myIndex.setKeys(keys);myIndex.setIndexRecords(records);return myIndex;}function computeScore(pattern,{errors=0,currentLocation=0,expectedLocation=0,distance=Config.distance,ignoreLocation=Config.ignoreLocation}={}){const accuracy=errors/pattern.length;if(ignoreLocation){return accuracy;}const proximity=Math.abs(expectedLocation-currentLocation);if(!distance){// Dodge divide by zero error. -return proximity?1.0:accuracy;}return accuracy+proximity/distance;}function convertMaskToIndices(matchmask=[],minMatchCharLength=Config.minMatchCharLength){let indices=[];let start=-1;let end=-1;let i=0;for(let len=matchmask.length;i=minMatchCharLength){indices.push([start,end]);}start=-1;}}// (i-1 - start) + 1 => i - start -if(matchmask[i-1]&&i-start>=minMatchCharLength){indices.push([start,i-1]);}return indices;}// Machine word size -const MAX_BITS=32;function search(text,pattern,patternAlphabet,{location=Config.location,distance=Config.distance,threshold=Config.threshold,findAllMatches=Config.findAllMatches,minMatchCharLength=Config.minMatchCharLength,includeMatches=Config.includeMatches,ignoreLocation=Config.ignoreLocation}={}){if(pattern.length>MAX_BITS){throw new Error(PATTERN_LENGTH_TOO_LARGE(MAX_BITS));}const patternLen=pattern.length;// Set starting location at beginning text and initialize the alphabet. -const textLen=text.length;// Handle the case when location > text.length -const expectedLocation=Math.max(0,Math.min(location,textLen));// Highest score beyond which we give up. -let currentThreshold=threshold;// Is there a nearby exact match? (speedup) -let bestLocation=expectedLocation;// Performance: only computer matches when the minMatchCharLength > 1 -// OR if `includeMatches` is true. -const computeMatches=minMatchCharLength>1||includeMatches;// A mask of the matches, used for building the indices -const matchMask=computeMatches?Array(textLen):[];let index;// Get all exact matches, here for speed up -while((index=text.indexOf(pattern,bestLocation))>-1){let score=computeScore(pattern,{currentLocation:index,expectedLocation,distance,ignoreLocation});currentThreshold=Math.min(score,currentThreshold);bestLocation=index+patternLen;if(computeMatches){let i=0;while(i=start;j-=1){let currentLocation=j-1;let charMatch=patternAlphabet[text.charAt(currentLocation)];if(computeMatches){// Speed up: quick bool to int conversion (i.e, `charMatch ? 1 : 0`) -matchMask[currentLocation]=+!!charMatch;}// First pass: exact match -bitArr[j]=(bitArr[j+1]<<1|1)&charMatch;// Subsequent passes: fuzzy match -if(i){bitArr[j]|=(lastBitArr[j+1]|lastBitArr[j])<<1|1|lastBitArr[j+1];}if(bitArr[j]&mask){finalScore=computeScore(pattern,{errors:i,currentLocation,expectedLocation,distance,ignoreLocation});// This match will almost certainly be better than any existing match. -// But check anyway. -if(finalScore<=currentThreshold){// Indeed it is -currentThreshold=finalScore;bestLocation=currentLocation;// Already passed `loc`, downhill from here on in. -if(bestLocation<=expectedLocation){break;}// When passing `bestLocation`, don't exceed our current distance from `expectedLocation`. -start=Math.max(1,2*expectedLocation-bestLocation);}}}// No hope for a (better) match at greater error levels. -const score=computeScore(pattern,{errors:i+1,currentLocation:expectedLocation,expectedLocation,distance,ignoreLocation});if(score>currentThreshold){break;}lastBitArr=bitArr;}const result={isMatch:bestLocation>=0,// Count exact matches (those with a score of 0) to be "almost" exact -score:Math.max(0.001,finalScore)};if(computeMatches){const indices=convertMaskToIndices(matchMask,minMatchCharLength);if(!indices.length){result.isMatch=false;}else if(includeMatches){result.indices=indices;}}return result;}function createPatternAlphabet(pattern){let mask={};for(let i=0,len=pattern.length;i{this.chunks.push({pattern,alphabet:createPatternAlphabet(pattern),startIndex});};const len=this.pattern.length;if(len>MAX_BITS){let i=0;const remainder=len%MAX_BITS;const end=len-remainder;while(i{const{isMatch,score,indices}=search(text,pattern,alphabet,{location:location+startIndex,distance,threshold,findAllMatches,minMatchCharLength,includeMatches,ignoreLocation});if(isMatch){hasMatches=true;}totalScore+=score;if(isMatch&&indices){allIndices=[...allIndices,...indices];}});let result={isMatch:hasMatches,score:hasMatches?totalScore/this.chunks.length:1};if(hasMatches&&includeMatches){result.indices=allIndices;}return result;}}class BaseMatch{constructor(pattern){this.pattern=pattern;}static isMultiMatch(pattern){return getMatch(pattern,this.multiRegex);}static isSingleMatch(pattern){return getMatch(pattern,this.singleRegex);}search(){}}function getMatch(pattern,exp){const matches=pattern.match(exp);return matches?matches[1]:null;}// Token: 'file -class ExactMatch extends BaseMatch{constructor(pattern){super(pattern);}static get type(){return 'exact';}static get multiRegex(){return /^="(.*)"$/;}static get singleRegex(){return /^=(.*)$/;}search(text){const isMatch=text===this.pattern;return {isMatch,score:isMatch?0:1,indices:[0,this.pattern.length-1]};}}// Token: !fire -class InverseExactMatch extends BaseMatch{constructor(pattern){super(pattern);}static get type(){return 'inverse-exact';}static get multiRegex(){return /^!"(.*)"$/;}static get singleRegex(){return /^!(.*)$/;}search(text){const index=text.indexOf(this.pattern);const isMatch=index===-1;return {isMatch,score:isMatch?0:1,indices:[0,text.length-1]};}}// Token: ^file -class PrefixExactMatch extends BaseMatch{constructor(pattern){super(pattern);}static get type(){return 'prefix-exact';}static get multiRegex(){return /^\^"(.*)"$/;}static get singleRegex(){return /^\^(.*)$/;}search(text){const isMatch=text.startsWith(this.pattern);return {isMatch,score:isMatch?0:1,indices:[0,this.pattern.length-1]};}}// Token: !^fire -class InversePrefixExactMatch extends BaseMatch{constructor(pattern){super(pattern);}static get type(){return 'inverse-prefix-exact';}static get multiRegex(){return /^!\^"(.*)"$/;}static get singleRegex(){return /^!\^(.*)$/;}search(text){const isMatch=!text.startsWith(this.pattern);return {isMatch,score:isMatch?0:1,indices:[0,text.length-1]};}}// Token: .file$ -class SuffixExactMatch extends BaseMatch{constructor(pattern){super(pattern);}static get type(){return 'suffix-exact';}static get multiRegex(){return /^"(.*)"\$$/;}static get singleRegex(){return /^(.*)\$$/;}search(text){const isMatch=text.endsWith(this.pattern);return {isMatch,score:isMatch?0:1,indices:[text.length-this.pattern.length,text.length-1]};}}// Token: !.file$ -class InverseSuffixExactMatch extends BaseMatch{constructor(pattern){super(pattern);}static get type(){return 'inverse-suffix-exact';}static get multiRegex(){return /^!"(.*)"\$$/;}static get singleRegex(){return /^!(.*)\$$/;}search(text){const isMatch=!text.endsWith(this.pattern);return {isMatch,score:isMatch?0:1,indices:[0,text.length-1]};}}class FuzzyMatch extends BaseMatch{constructor(pattern,{location=Config.location,threshold=Config.threshold,distance=Config.distance,includeMatches=Config.includeMatches,findAllMatches=Config.findAllMatches,minMatchCharLength=Config.minMatchCharLength,isCaseSensitive=Config.isCaseSensitive,ignoreLocation=Config.ignoreLocation}={}){super(pattern);this._bitapSearch=new BitapSearch(pattern,{location,threshold,distance,includeMatches,findAllMatches,minMatchCharLength,isCaseSensitive,ignoreLocation});}static get type(){return 'fuzzy';}static get multiRegex(){return /^"(.*)"$/;}static get singleRegex(){return /^(.*)$/;}search(text){return this._bitapSearch.searchIn(text);}}// Token: 'file -class IncludeMatch extends BaseMatch{constructor(pattern){super(pattern);}static get type(){return 'include';}static get multiRegex(){return /^'"(.*)"$/;}static get singleRegex(){return /^'(.*)$/;}search(text){let location=0;let index;const indices=[];const patternLen=this.pattern.length;// Get all exact matches -while((index=text.indexOf(this.pattern,location))>-1){location=index+patternLen;indices.push([index,location-1]);}const isMatch=!!indices.length;return {isMatch,score:isMatch?0:1,indices};}}// โ—Order is important. DO NOT CHANGE. -const searchers=[ExactMatch,IncludeMatch,PrefixExactMatch,InversePrefixExactMatch,InverseSuffixExactMatch,SuffixExactMatch,InverseExactMatch,FuzzyMatch];const searchersLen=searchers.length;// Regex to split by spaces, but keep anything in quotes together -const SPACE_RE=/ +(?=([^\"]*\"[^\"]*\")*[^\"]*$)/;const OR_TOKEN='|';// Return a 2D array representation of the query, for simpler parsing. -// Example: -// "^core go$ | rb$ | py$ xy$" => [["^core", "go$"], ["rb$"], ["py$", "xy$"]] -function parseQuery(pattern,options={}){return pattern.split(OR_TOKEN).map(item=>{let query=item.trim().split(SPACE_RE).filter(item=>item&&!!item.trim());let results=[];for(let i=0,len=query.length;i!!(query[LogicalOperator.AND]||query[LogicalOperator.OR]);const isPath=query=>!!query[KeyType.PATH];const isLeaf=query=>!isArray(query)&&isObject(query)&&!isExpression(query);const convertToExplicit=query=>({[LogicalOperator.AND]:Object.keys(query).map(key=>({[key]:query[key]}))});// When `auto` is `true`, the parse function will infer and initialize and add -// the appropriate `Searcher` instance -function parse$1(query,options,{auto=true}={}){const next=query=>{let keys=Object.keys(query);const isQueryPath=isPath(query);if(!isQueryPath&&keys.length>1&&!isExpression(query)){return next(convertToExplicit(query));}if(isLeaf(query)){const key=isQueryPath?query[KeyType.PATH]:keys[0];const pattern=isQueryPath?query[KeyType.PATTERN]:query[key];if(!isString(pattern)){throw new Error(LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY(key));}const obj={keyId:createKeyId(key),pattern};if(auto){obj.searcher=createSearcher(pattern,options);}return obj;}let node={children:[],operator:keys[0]};keys.forEach(key=>{const value=query[key];if(isArray(value)){value.forEach(item=>{node.children.push(next(item));});}});return node;};if(!isExpression(query)){query=convertToExplicit(query);}return next(query);}// Practical scoring function -function computeScore$1(results,{ignoreFieldNorm=Config.ignoreFieldNorm}){results.forEach(result=>{let totalScore=1;result.matches.forEach(({key,norm,score})=>{const weight=key?key.weight:null;totalScore*=Math.pow(score===0&&weight?Number.EPSILON:score,(weight||1)*(ignoreFieldNorm?1:norm));});result.score=totalScore;});}function transformMatches(result,data){const matches=result.matches;data.matches=[];if(!isDefined(matches)){return;}matches.forEach(match=>{if(!isDefined(match.indices)||!match.indices.length){return;}const{indices,value}=match;let obj={indices,value};if(match.key){obj.key=match.key.src;}if(match.idx>-1){obj.refIndex=match.idx;}data.matches.push(obj);});}function transformScore(result,data){data.score=result.score;}function format$1(results,docs,{includeMatches=Config.includeMatches,includeScore=Config.includeScore}={}){const transformers=[];if(includeMatches)transformers.push(transformMatches);if(includeScore)transformers.push(transformScore);return results.map(result=>{const{idx}=result;const data={item:docs[idx],refIndex:idx};if(transformers.length){transformers.forEach(transformer=>{transformer(result,data);});}return data;});}class Fuse{constructor(docs,options={},index){this.options={...Config,...options};if(this.options.useExtendedSearch&&!true){throw new Error(EXTENDED_SEARCH_UNAVAILABLE);}this._keyStore=new KeyStore(this.options.keys);this.setCollection(docs,index);}setCollection(docs,index){this._docs=docs;if(index&&!(index instanceof FuseIndex)){throw new Error(INCORRECT_INDEX_TYPE);}this._myIndex=index||createIndex(this.options.keys,this._docs,{getFn:this.options.getFn});}add(doc){if(!isDefined(doc)){return;}this._docs.push(doc);this._myIndex.add(doc);}remove(predicate=()=>false){const results=[];for(let i=0,len=this._docs.length;i-1){results=results.slice(0,limit);}return format$1(results,this._docs,{includeMatches,includeScore});}_searchStringList(query){const searcher=createSearcher(query,this.options);const{records}=this._myIndex;const results=[];// Iterate over every string in the index -records.forEach(({v:text,i:idx,n:norm})=>{if(!isDefined(text)){return;}const{isMatch,score,indices}=searcher.searchIn(text);if(isMatch){results.push({item:text,idx,matches:[{score,value:text,norm,indices}]});}});return results;}_searchLogical(query){const expression=parse$1(query,this.options);const evaluate=(node,item,idx)=>{if(!node.children){const{keyId,searcher}=node;const matches=this._findMatches({key:this._keyStore.get(keyId),value:this._myIndex.getValueForItemAtKeyId(item,keyId),searcher});if(matches&&matches.length){return [{idx,item,matches}];}return [];}/*eslint indent: [2, 2, {"SwitchCase": 1}]*/switch(node.operator){case LogicalOperator.AND:{const res=[];for(let i=0,len=node.children.length;i{if(isDefined(item)){let expResults=evaluate(expression,item,idx);if(expResults.length){// Dedupe when adding -if(!resultMap[idx]){resultMap[idx]={idx,item,matches:[]};results.push(resultMap[idx]);}expResults.forEach(({matches})=>{resultMap[idx].matches.push(...matches);});}}});return results;}_searchObjectList(query){const searcher=createSearcher(query,this.options);const{keys,records}=this._myIndex;const results=[];// List is Array -records.forEach(({$:item,i:idx})=>{if(!isDefined(item)){return;}let matches=[];// Iterate over every key (i.e, path), and fetch the value at that key -keys.forEach((key,keyIndex)=>{matches.push(...this._findMatches({key,value:item[keyIndex],searcher}));});if(matches.length){results.push({idx,item,matches});}});return results;}_findMatches({key,value,searcher}){if(!isDefined(value)){return [];}let matches=[];if(isArray(value)){value.forEach(({v:text,i:idx,n:norm})=>{if(!isDefined(text)){return;}const{isMatch,score,indices}=searcher.searchIn(text);if(isMatch){matches.push({score,key,value:text,idx,norm,indices});}});}else {const{v:text,n:norm}=value;const{isMatch,score,indices}=searcher.searchIn(text);if(isMatch){matches.push({score,key,value:text,norm,indices});}}return matches;}}Fuse.version='6.4.6';Fuse.createIndex=createIndex;Fuse.parseIndex=parseIndex;Fuse.config=Config;{Fuse.parseQuery=parse$1;}{register(ExtendedSearch);} - -/** - * Simple ponyfill for Object.fromEntries - */var fromEntries=function fromEntries(entries){return entries.reduce(function(acc,_ref){var key=_ref[0],value=_ref[1];acc[key]=value;return acc;},{});};/** - * Small wrapper around `useLayoutEffect` to get rid of the warning on SSR envs - */var useIsomorphicLayoutEffect=typeof window!=='undefined'&&window.document&&window.document.createElement?react.useLayoutEffect:react.useEffect; - -var top='top';var bottom='bottom';var right='right';var left='left';var auto='auto';var basePlacements=[top,bottom,right,left];var start$1='start';var end='end';var clippingParents='clippingParents';var viewport='viewport';var popper='popper';var reference='reference';var variationPlacements=/*#__PURE__*/basePlacements.reduce(function(acc,placement){return acc.concat([placement+"-"+start$1,placement+"-"+end]);},[]);var placements=/*#__PURE__*/[].concat(basePlacements,[auto]).reduce(function(acc,placement){return acc.concat([placement,placement+"-"+start$1,placement+"-"+end]);},[]);// modifiers that need to read the DOM -var beforeRead='beforeRead';var read='read';var afterRead='afterRead';// pure-logic modifiers -var beforeMain='beforeMain';var main='main';var afterMain='afterMain';// modifier with the purpose to write to the DOM (or write into a framework state) -var beforeWrite='beforeWrite';var write='write';var afterWrite='afterWrite';var modifierPhases=[beforeRead,read,afterRead,beforeMain,main,afterMain,beforeWrite,write,afterWrite]; - -function getNodeName(element){return element?(element.nodeName||'').toLowerCase():null;} - -function getWindow(node){if(node==null){return window;}if(node.toString()!=='[object Window]'){var ownerDocument=node.ownerDocument;return ownerDocument?ownerDocument.defaultView||window:window;}return node;} - -function isElement(node){var OwnElement=getWindow(node).Element;return node instanceof OwnElement||node instanceof Element;}function isHTMLElement(node){var OwnElement=getWindow(node).HTMLElement;return node instanceof OwnElement||node instanceof HTMLElement;}function isShadowRoot(node){// IE 11 has no ShadowRoot -if(typeof ShadowRoot==='undefined'){return false;}var OwnElement=getWindow(node).ShadowRoot;return node instanceof OwnElement||node instanceof ShadowRoot;} - -// and applies them to the HTMLElements such as popper and arrow -function applyStyles(_ref){var state=_ref.state;Object.keys(state.elements).forEach(function(name){var style=state.styles[name]||{};var attributes=state.attributes[name]||{};var element=state.elements[name];// arrow is optional + virtual elements -if(!isHTMLElement(element)||!getNodeName(element)){return;}// Flow doesn't support to extend this property, but it's the most -// effective way to apply styles to an HTMLElement -// $FlowFixMe[cannot-write] -Object.assign(element.style,style);Object.keys(attributes).forEach(function(name){var value=attributes[name];if(value===false){element.removeAttribute(name);}else {element.setAttribute(name,value===true?'':value);}});});}function effect(_ref2){var state=_ref2.state;var initialStyles={popper:{position:state.options.strategy,left:'0',top:'0',margin:'0'},arrow:{position:'absolute'},reference:{}};Object.assign(state.elements.popper.style,initialStyles.popper);state.styles=initialStyles;if(state.elements.arrow){Object.assign(state.elements.arrow.style,initialStyles.arrow);}return function(){Object.keys(state.elements).forEach(function(name){var element=state.elements[name];var attributes=state.attributes[name]||{};var styleProperties=Object.keys(state.styles.hasOwnProperty(name)?state.styles[name]:initialStyles[name]);// Set all values to an empty string to unset them -var style=styleProperties.reduce(function(style,property){style[property]='';return style;},{});// arrow is optional + virtual elements -if(!isHTMLElement(element)||!getNodeName(element)){return;}Object.assign(element.style,style);Object.keys(attributes).forEach(function(attribute){element.removeAttribute(attribute);});});};}// eslint-disable-next-line import/no-unused-modules -var applyStyles$1 = {name:'applyStyles',enabled:true,phase:'write',fn:applyStyles,effect:effect,requires:['computeStyles']}; - -function getBasePlacement(placement){return placement.split('-')[0];} - -function getBoundingClientRect(element){var rect=element.getBoundingClientRect();return {width:rect.width,height:rect.height,top:rect.top,right:rect.right,bottom:rect.bottom,left:rect.left,x:rect.left,y:rect.top};} - -// means it doesn't take into account transforms. -function getLayoutRect(element){var clientRect=getBoundingClientRect(element);// Use the clientRect sizes if it's not been transformed. -// Fixes https://github.com/popperjs/popper-core/issues/1223 -var width=element.offsetWidth;var height=element.offsetHeight;if(Math.abs(clientRect.width-width)<=1){width=clientRect.width;}if(Math.abs(clientRect.height-height)<=1){height=clientRect.height;}return {x:element.offsetLeft,y:element.offsetTop,width:width,height:height};} - -function contains(parent,child){var rootNode=child.getRootNode&&child.getRootNode();// First, attempt with faster native method -if(parent.contains(child)){return true;}// then fallback to custom implementation with Shadow DOM support -else if(rootNode&&isShadowRoot(rootNode)){var next=child;do{if(next&&parent.isSameNode(next)){return true;}// $FlowFixMe[prop-missing]: need a better way to handle this... -next=next.parentNode||next.host;}while(next);}// Give up, the result is false -return false;} - -function getComputedStyle(element){return getWindow(element).getComputedStyle(element);} - -function isTableElement(element){return ['table','td','th'].indexOf(getNodeName(element))>=0;} - -function getDocumentElement(element){// $FlowFixMe[incompatible-return]: assume body is always available -return ((isElement(element)?element.ownerDocument:// $FlowFixMe[prop-missing] -element.document)||window.document).documentElement;} - -function getParentNode(element){if(getNodeName(element)==='html'){return element;}return(// this is a quicker (but less type safe) way to save quite some bytes from the bundle -// $FlowFixMe[incompatible-return] -// $FlowFixMe[prop-missing] -element.assignedSlot||// step into the shadow DOM of the parent of a slotted node -element.parentNode||(// DOM Element detected -isShadowRoot(element)?element.host:null)||// ShadowRoot detected -// $FlowFixMe[incompatible-call]: HTMLElement is a Node -getDocumentElement(element)// fallback -);} - -function getTrueOffsetParent(element){if(!isHTMLElement(element)||// https://github.com/popperjs/popper-core/issues/837 -getComputedStyle(element).position==='fixed'){return null;}return element.offsetParent;}// `.offsetParent` reports `null` for fixed elements, while absolute elements -// return the containing block -function getContainingBlock(element){var isFirefox=navigator.userAgent.toLowerCase().indexOf('firefox')!==-1;var isIE=navigator.userAgent.indexOf('Trident')!==-1;if(isIE&&isHTMLElement(element)){// In IE 9, 10 and 11 fixed elements containing block is always established by the viewport -var elementCss=getComputedStyle(element);if(elementCss.position==='fixed'){return null;}}var currentNode=getParentNode(element);while(isHTMLElement(currentNode)&&['html','body'].indexOf(getNodeName(currentNode))<0){var css=getComputedStyle(currentNode);// This is non-exhaustive but covers the most common CSS properties that -// create a containing block. -// https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block -if(css.transform!=='none'||css.perspective!=='none'||css.contain==='paint'||['transform','perspective'].indexOf(css.willChange)!==-1||isFirefox&&css.willChange==='filter'||isFirefox&&css.filter&&css.filter!=='none'){return currentNode;}else {currentNode=currentNode.parentNode;}}return null;}// Gets the closest ancestor positioned element. Handles some edge cases, -// such as table ancestors and cross browser bugs. -function getOffsetParent(element){var window=getWindow(element);var offsetParent=getTrueOffsetParent(element);while(offsetParent&&isTableElement(offsetParent)&&getComputedStyle(offsetParent).position==='static'){offsetParent=getTrueOffsetParent(offsetParent);}if(offsetParent&&(getNodeName(offsetParent)==='html'||getNodeName(offsetParent)==='body'&&getComputedStyle(offsetParent).position==='static')){return window;}return offsetParent||getContainingBlock(element)||window;} - -function getMainAxisFromPlacement(placement){return ['top','bottom'].indexOf(placement)>=0?'x':'y';} - -var max=Math.max;var min=Math.min;var round=Math.round; - -function within(min$1,value,max$1){return max(min$1,min(value,max$1));} - -function getFreshSideObject(){return {top:0,right:0,bottom:0,left:0};} - -function mergePaddingObject(paddingObject){return Object.assign({},getFreshSideObject(),paddingObject);} - -function expandToHashMap(value,keys){return keys.reduce(function(hashMap,key){hashMap[key]=value;return hashMap;},{});} - -var toPaddingObject=function toPaddingObject(padding,state){padding=typeof padding==='function'?padding(Object.assign({},state.rects,{placement:state.placement})):padding;return mergePaddingObject(typeof padding!=='number'?padding:expandToHashMap(padding,basePlacements));};function arrow(_ref){var _state$modifiersData$;var state=_ref.state,name=_ref.name,options=_ref.options;var arrowElement=state.elements.arrow;var popperOffsets=state.modifiersData.popperOffsets;var basePlacement=getBasePlacement(state.placement);var axis=getMainAxisFromPlacement(basePlacement);var isVertical=[left,right].indexOf(basePlacement)>=0;var len=isVertical?'height':'width';if(!arrowElement||!popperOffsets){return;}var paddingObject=toPaddingObject(options.padding,state);var arrowRect=getLayoutRect(arrowElement);var minProp=axis==='y'?top:left;var maxProp=axis==='y'?bottom:right;var endDiff=state.rects.reference[len]+state.rects.reference[axis]-popperOffsets[axis]-state.rects.popper[len];var startDiff=popperOffsets[axis]-state.rects.reference[axis];var arrowOffsetParent=getOffsetParent(arrowElement);var clientSize=arrowOffsetParent?axis==='y'?arrowOffsetParent.clientHeight||0:arrowOffsetParent.clientWidth||0:0;var centerToReference=endDiff/2-startDiff/2;// Make sure the arrow doesn't overflow the popper if the center point is -// outside of the popper bounds -var min=paddingObject[minProp];var max=clientSize-arrowRect[len]-paddingObject[maxProp];var center=clientSize/2-arrowRect[len]/2+centerToReference;var offset=within(min,center,max);// Prevents breaking syntax highlighting... -var axisProp=axis;state.modifiersData[name]=(_state$modifiersData$={},_state$modifiersData$[axisProp]=offset,_state$modifiersData$.centerOffset=offset-center,_state$modifiersData$);}function effect$1(_ref2){var state=_ref2.state,options=_ref2.options;var _options$element=options.element,arrowElement=_options$element===void 0?'[data-popper-arrow]':_options$element;if(arrowElement==null){return;}// CSS selector -if(typeof arrowElement==='string'){arrowElement=state.elements.popper.querySelector(arrowElement);if(!arrowElement){return;}}{if(!isHTMLElement(arrowElement)){console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).','To use an SVG arrow, wrap it in an HTMLElement that will be used as','the arrow.'].join(' '));}}if(!contains(state.elements.popper,arrowElement)){{console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper','element.'].join(' '));}return;}state.elements.arrow=arrowElement;}// eslint-disable-next-line import/no-unused-modules -var arrow$1 = {name:'arrow',enabled:true,phase:'main',fn:arrow,effect:effect$1,requires:['popperOffsets'],requiresIfExists:['preventOverflow']}; - -var unsetSides={top:'auto',right:'auto',bottom:'auto',left:'auto'};// Round the offsets to the nearest suitable subpixel based on the DPR. -// Zooming can change the DPR, but it seems to report a value that will -// cleanly divide the values into the appropriate subpixels. -function roundOffsetsByDPR(_ref){var x=_ref.x,y=_ref.y;var win=window;var dpr=win.devicePixelRatio||1;return {x:round(round(x*dpr)/dpr)||0,y:round(round(y*dpr)/dpr)||0};}function mapToStyles(_ref2){var _Object$assign2;var popper=_ref2.popper,popperRect=_ref2.popperRect,placement=_ref2.placement,offsets=_ref2.offsets,position=_ref2.position,gpuAcceleration=_ref2.gpuAcceleration,adaptive=_ref2.adaptive,roundOffsets=_ref2.roundOffsets;var _ref3=roundOffsets===true?roundOffsetsByDPR(offsets):typeof roundOffsets==='function'?roundOffsets(offsets):offsets,_ref3$x=_ref3.x,x=_ref3$x===void 0?0:_ref3$x,_ref3$y=_ref3.y,y=_ref3$y===void 0?0:_ref3$y;var hasX=offsets.hasOwnProperty('x');var hasY=offsets.hasOwnProperty('y');var sideX=left;var sideY=top;var win=window;if(adaptive){var offsetParent=getOffsetParent(popper);var heightProp='clientHeight';var widthProp='clientWidth';if(offsetParent===getWindow(popper)){offsetParent=getDocumentElement(popper);if(getComputedStyle(offsetParent).position!=='static'){heightProp='scrollHeight';widthProp='scrollWidth';}}// $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it -offsetParent=offsetParent;if(placement===top){sideY=bottom;// $FlowFixMe[prop-missing] -y-=offsetParent[heightProp]-popperRect.height;y*=gpuAcceleration?1:-1;}if(placement===left){sideX=right;// $FlowFixMe[prop-missing] -x-=offsetParent[widthProp]-popperRect.width;x*=gpuAcceleration?1:-1;}}var commonStyles=Object.assign({position:position},adaptive&&unsetSides);if(gpuAcceleration){var _Object$assign;return Object.assign({},commonStyles,(_Object$assign={},_Object$assign[sideY]=hasY?'0':'',_Object$assign[sideX]=hasX?'0':'',_Object$assign.transform=(win.devicePixelRatio||1)<2?"translate("+x+"px, "+y+"px)":"translate3d("+x+"px, "+y+"px, 0)",_Object$assign));}return Object.assign({},commonStyles,(_Object$assign2={},_Object$assign2[sideY]=hasY?y+"px":'',_Object$assign2[sideX]=hasX?x+"px":'',_Object$assign2.transform='',_Object$assign2));}function computeStyles(_ref4){var state=_ref4.state,options=_ref4.options;var _options$gpuAccelerat=options.gpuAcceleration,gpuAcceleration=_options$gpuAccelerat===void 0?true:_options$gpuAccelerat,_options$adaptive=options.adaptive,adaptive=_options$adaptive===void 0?true:_options$adaptive,_options$roundOffsets=options.roundOffsets,roundOffsets=_options$roundOffsets===void 0?true:_options$roundOffsets;{var transitionProperty=getComputedStyle(state.elements.popper).transitionProperty||'';if(adaptive&&['transform','top','right','bottom','left'].some(function(property){return transitionProperty.indexOf(property)>=0;})){console.warn(['Popper: Detected CSS transitions on at least one of the following','CSS properties: "transform", "top", "right", "bottom", "left".','\n\n','Disable the "computeStyles" modifier\'s `adaptive` option to allow','for smooth transitions, or remove these properties from the CSS','transition declaration on the popper element if only transitioning','opacity or background-color for example.','\n\n','We recommend using the popper element as a wrapper around an inner','element that can have any CSS property transitioned for animations.'].join(' '));}}var commonStyles={placement:getBasePlacement(state.placement),popper:state.elements.popper,popperRect:state.rects.popper,gpuAcceleration:gpuAcceleration};if(state.modifiersData.popperOffsets!=null){state.styles.popper=Object.assign({},state.styles.popper,mapToStyles(Object.assign({},commonStyles,{offsets:state.modifiersData.popperOffsets,position:state.options.strategy,adaptive:adaptive,roundOffsets:roundOffsets})));}if(state.modifiersData.arrow!=null){state.styles.arrow=Object.assign({},state.styles.arrow,mapToStyles(Object.assign({},commonStyles,{offsets:state.modifiersData.arrow,position:'absolute',adaptive:false,roundOffsets:roundOffsets})));}state.attributes.popper=Object.assign({},state.attributes.popper,{'data-popper-placement':state.placement});}// eslint-disable-next-line import/no-unused-modules -var computeStyles$1 = {name:'computeStyles',enabled:true,phase:'beforeWrite',fn:computeStyles,data:{}}; - -var passive={passive:true};function effect$2(_ref){var state=_ref.state,instance=_ref.instance,options=_ref.options;var _options$scroll=options.scroll,scroll=_options$scroll===void 0?true:_options$scroll,_options$resize=options.resize,resize=_options$resize===void 0?true:_options$resize;var window=getWindow(state.elements.popper);var scrollParents=[].concat(state.scrollParents.reference,state.scrollParents.popper);if(scroll){scrollParents.forEach(function(scrollParent){scrollParent.addEventListener('scroll',instance.update,passive);});}if(resize){window.addEventListener('resize',instance.update,passive);}return function(){if(scroll){scrollParents.forEach(function(scrollParent){scrollParent.removeEventListener('scroll',instance.update,passive);});}if(resize){window.removeEventListener('resize',instance.update,passive);}};}// eslint-disable-next-line import/no-unused-modules -var eventListeners = {name:'eventListeners',enabled:true,phase:'write',fn:function fn(){},effect:effect$2,data:{}}; - -var hash={left:'right',right:'left',bottom:'top',top:'bottom'};function getOppositePlacement(placement){return placement.replace(/left|right|bottom|top/g,function(matched){return hash[matched];});} - -var hash$1={start:'end',end:'start'};function getOppositeVariationPlacement(placement){return placement.replace(/start|end/g,function(matched){return hash$1[matched];});} - -function getWindowScroll(node){var win=getWindow(node);var scrollLeft=win.pageXOffset;var scrollTop=win.pageYOffset;return {scrollLeft:scrollLeft,scrollTop:scrollTop};} - -function getWindowScrollBarX(element){// If has a CSS width greater than the viewport, then this will be -// incorrect for RTL. -// Popper 1 is broken in this case and never had a bug report so let's assume -// it's not an issue. I don't think anyone ever specifies width on -// anyway. -// Browsers where the left scrollbar doesn't cause an issue report `0` for -// this (e.g. Edge 2019, IE11, Safari) -return getBoundingClientRect(getDocumentElement(element)).left+getWindowScroll(element).scrollLeft;} - -function getViewportRect(element){var win=getWindow(element);var html=getDocumentElement(element);var visualViewport=win.visualViewport;var width=html.clientWidth;var height=html.clientHeight;var x=0;var y=0;// NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper -// can be obscured underneath it. -// Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even -// if it isn't open, so if this isn't available, the popper will be detected -// to overflow the bottom of the screen too early. -if(visualViewport){width=visualViewport.width;height=visualViewport.height;// Uses Layout Viewport (like Chrome; Safari does not currently) -// In Chrome, it returns a value very close to 0 (+/-) but contains rounding -// errors due to floating point numbers, so we need to check precision. -// Safari returns a number <= 0, usually < -1 when pinch-zoomed -// Feature detection fails in mobile emulation mode in Chrome. -// Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) < -// 0.001 -// Fallback here: "Not Safari" userAgent -if(!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)){x=visualViewport.offsetLeft;y=visualViewport.offsetTop;}}return {width:width,height:height,x:x+getWindowScrollBarX(element),y:y};} - -// of the `` and `` rect bounds if horizontally scrollable -function getDocumentRect(element){var _element$ownerDocumen;var html=getDocumentElement(element);var winScroll=getWindowScroll(element);var body=(_element$ownerDocumen=element.ownerDocument)==null?void 0:_element$ownerDocumen.body;var width=max(html.scrollWidth,html.clientWidth,body?body.scrollWidth:0,body?body.clientWidth:0);var height=max(html.scrollHeight,html.clientHeight,body?body.scrollHeight:0,body?body.clientHeight:0);var x=-winScroll.scrollLeft+getWindowScrollBarX(element);var y=-winScroll.scrollTop;if(getComputedStyle(body||html).direction==='rtl'){x+=max(html.clientWidth,body?body.clientWidth:0)-width;}return {width:width,height:height,x:x,y:y};} - -function isScrollParent(element){// Firefox wants us to check `-x` and `-y` variations as well -var _getComputedStyle=getComputedStyle(element),overflow=_getComputedStyle.overflow,overflowX=_getComputedStyle.overflowX,overflowY=_getComputedStyle.overflowY;return /auto|scroll|overlay|hidden/.test(overflow+overflowY+overflowX);} - -function getScrollParent(node){if(['html','body','#document'].indexOf(getNodeName(node))>=0){// $FlowFixMe[incompatible-return]: assume body is always available -return node.ownerDocument.body;}if(isHTMLElement(node)&&isScrollParent(node)){return node;}return getScrollParent(getParentNode(node));} - -/* -given a DOM element, return the list of all scroll parents, up the list of ancesors -until we get to the top window object. This list is what we attach scroll listeners -to, because if any of these parent elements scroll, we'll need to re-calculate the -reference element's position. -*/function listScrollParents(element,list){var _element$ownerDocumen;if(list===void 0){list=[];}var scrollParent=getScrollParent(element);var isBody=scrollParent===((_element$ownerDocumen=element.ownerDocument)==null?void 0:_element$ownerDocumen.body);var win=getWindow(scrollParent);var target=isBody?[win].concat(win.visualViewport||[],isScrollParent(scrollParent)?scrollParent:[]):scrollParent;var updatedList=list.concat(target);return isBody?updatedList:// $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here -updatedList.concat(listScrollParents(getParentNode(target)));} - -function rectToClientRect(rect){return Object.assign({},rect,{left:rect.x,top:rect.y,right:rect.x+rect.width,bottom:rect.y+rect.height});} - -function getInnerBoundingClientRect(element){var rect=getBoundingClientRect(element);rect.top=rect.top+element.clientTop;rect.left=rect.left+element.clientLeft;rect.bottom=rect.top+element.clientHeight;rect.right=rect.left+element.clientWidth;rect.width=element.clientWidth;rect.height=element.clientHeight;rect.x=rect.left;rect.y=rect.top;return rect;}function getClientRectFromMixedType(element,clippingParent){return clippingParent===viewport?rectToClientRect(getViewportRect(element)):isHTMLElement(clippingParent)?getInnerBoundingClientRect(clippingParent):rectToClientRect(getDocumentRect(getDocumentElement(element)));}// A "clipping parent" is an overflowable container with the characteristic of -// clipping (or hiding) overflowing elements with a position different from -// `initial` -function getClippingParents(element){var clippingParents=listScrollParents(getParentNode(element));var canEscapeClipping=['absolute','fixed'].indexOf(getComputedStyle(element).position)>=0;var clipperElement=canEscapeClipping&&isHTMLElement(element)?getOffsetParent(element):element;if(!isElement(clipperElement)){return [];}// $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414 -return clippingParents.filter(function(clippingParent){return isElement(clippingParent)&&contains(clippingParent,clipperElement)&&getNodeName(clippingParent)!=='body';});}// Gets the maximum area that the element is visible in due to any number of -// clipping parents -function getClippingRect(element,boundary,rootBoundary){var mainClippingParents=boundary==='clippingParents'?getClippingParents(element):[].concat(boundary);var clippingParents=[].concat(mainClippingParents,[rootBoundary]);var firstClippingParent=clippingParents[0];var clippingRect=clippingParents.reduce(function(accRect,clippingParent){var rect=getClientRectFromMixedType(element,clippingParent);accRect.top=max(rect.top,accRect.top);accRect.right=min(rect.right,accRect.right);accRect.bottom=min(rect.bottom,accRect.bottom);accRect.left=max(rect.left,accRect.left);return accRect;},getClientRectFromMixedType(element,firstClippingParent));clippingRect.width=clippingRect.right-clippingRect.left;clippingRect.height=clippingRect.bottom-clippingRect.top;clippingRect.x=clippingRect.left;clippingRect.y=clippingRect.top;return clippingRect;} - -function getVariation(placement){return placement.split('-')[1];} - -function computeOffsets(_ref){var reference=_ref.reference,element=_ref.element,placement=_ref.placement;var basePlacement=placement?getBasePlacement(placement):null;var variation=placement?getVariation(placement):null;var commonX=reference.x+reference.width/2-element.width/2;var commonY=reference.y+reference.height/2-element.height/2;var offsets;switch(basePlacement){case top:offsets={x:commonX,y:reference.y-element.height};break;case bottom:offsets={x:commonX,y:reference.y+reference.height};break;case right:offsets={x:reference.x+reference.width,y:commonY};break;case left:offsets={x:reference.x-element.width,y:commonY};break;default:offsets={x:reference.x,y:reference.y};}var mainAxis=basePlacement?getMainAxisFromPlacement(basePlacement):null;if(mainAxis!=null){var len=mainAxis==='y'?'height':'width';switch(variation){case start$1:offsets[mainAxis]=offsets[mainAxis]-(reference[len]/2-element[len]/2);break;case end:offsets[mainAxis]=offsets[mainAxis]+(reference[len]/2-element[len]/2);break;}}return offsets;} - -function detectOverflow(state,options){if(options===void 0){options={};}var _options=options,_options$placement=_options.placement,placement=_options$placement===void 0?state.placement:_options$placement,_options$boundary=_options.boundary,boundary=_options$boundary===void 0?clippingParents:_options$boundary,_options$rootBoundary=_options.rootBoundary,rootBoundary=_options$rootBoundary===void 0?viewport:_options$rootBoundary,_options$elementConte=_options.elementContext,elementContext=_options$elementConte===void 0?popper:_options$elementConte,_options$altBoundary=_options.altBoundary,altBoundary=_options$altBoundary===void 0?false:_options$altBoundary,_options$padding=_options.padding,padding=_options$padding===void 0?0:_options$padding;var paddingObject=mergePaddingObject(typeof padding!=='number'?padding:expandToHashMap(padding,basePlacements));var altContext=elementContext===popper?reference:popper;var referenceElement=state.elements.reference;var popperRect=state.rects.popper;var element=state.elements[altBoundary?altContext:elementContext];var clippingClientRect=getClippingRect(isElement(element)?element:element.contextElement||getDocumentElement(state.elements.popper),boundary,rootBoundary);var referenceClientRect=getBoundingClientRect(referenceElement);var popperOffsets=computeOffsets({reference:referenceClientRect,element:popperRect,strategy:'absolute',placement:placement});var popperClientRect=rectToClientRect(Object.assign({},popperRect,popperOffsets));var elementClientRect=elementContext===popper?popperClientRect:referenceClientRect;// positive = overflowing the clipping rect -// 0 or negative = within the clipping rect -var overflowOffsets={top:clippingClientRect.top-elementClientRect.top+paddingObject.top,bottom:elementClientRect.bottom-clippingClientRect.bottom+paddingObject.bottom,left:clippingClientRect.left-elementClientRect.left+paddingObject.left,right:elementClientRect.right-clippingClientRect.right+paddingObject.right};var offsetData=state.modifiersData.offset;// Offsets can be applied only to the popper element -if(elementContext===popper&&offsetData){var offset=offsetData[placement];Object.keys(overflowOffsets).forEach(function(key){var multiply=[right,bottom].indexOf(key)>=0?1:-1;var axis=[top,bottom].indexOf(key)>=0?'y':'x';overflowOffsets[key]+=offset[axis]*multiply;});}return overflowOffsets;} - -function computeAutoPlacement(state,options){if(options===void 0){options={};}var _options=options,placement=_options.placement,boundary=_options.boundary,rootBoundary=_options.rootBoundary,padding=_options.padding,flipVariations=_options.flipVariations,_options$allowedAutoP=_options.allowedAutoPlacements,allowedAutoPlacements=_options$allowedAutoP===void 0?placements:_options$allowedAutoP;var variation=getVariation(placement);var placements$1=variation?flipVariations?variationPlacements:variationPlacements.filter(function(placement){return getVariation(placement)===variation;}):basePlacements;var allowedPlacements=placements$1.filter(function(placement){return allowedAutoPlacements.indexOf(placement)>=0;});if(allowedPlacements.length===0){allowedPlacements=placements$1;{console.error(['Popper: The `allowedAutoPlacements` option did not allow any','placements. Ensure the `placement` option matches the variation','of the allowed placements.','For example, "auto" cannot be used to allow "bottom-start".','Use "auto-start" instead.'].join(' '));}}// $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions... -var overflows=allowedPlacements.reduce(function(acc,placement){acc[placement]=detectOverflow(state,{placement:placement,boundary:boundary,rootBoundary:rootBoundary,padding:padding})[getBasePlacement(placement)];return acc;},{});return Object.keys(overflows).sort(function(a,b){return overflows[a]-overflows[b];});} - -function getExpandedFallbackPlacements(placement){if(getBasePlacement(placement)===auto){return [];}var oppositePlacement=getOppositePlacement(placement);return [getOppositeVariationPlacement(placement),oppositePlacement,getOppositeVariationPlacement(oppositePlacement)];}function flip(_ref){var state=_ref.state,options=_ref.options,name=_ref.name;if(state.modifiersData[name]._skip){return;}var _options$mainAxis=options.mainAxis,checkMainAxis=_options$mainAxis===void 0?true:_options$mainAxis,_options$altAxis=options.altAxis,checkAltAxis=_options$altAxis===void 0?true:_options$altAxis,specifiedFallbackPlacements=options.fallbackPlacements,padding=options.padding,boundary=options.boundary,rootBoundary=options.rootBoundary,altBoundary=options.altBoundary,_options$flipVariatio=options.flipVariations,flipVariations=_options$flipVariatio===void 0?true:_options$flipVariatio,allowedAutoPlacements=options.allowedAutoPlacements;var preferredPlacement=state.options.placement;var basePlacement=getBasePlacement(preferredPlacement);var isBasePlacement=basePlacement===preferredPlacement;var fallbackPlacements=specifiedFallbackPlacements||(isBasePlacement||!flipVariations?[getOppositePlacement(preferredPlacement)]:getExpandedFallbackPlacements(preferredPlacement));var placements=[preferredPlacement].concat(fallbackPlacements).reduce(function(acc,placement){return acc.concat(getBasePlacement(placement)===auto?computeAutoPlacement(state,{placement:placement,boundary:boundary,rootBoundary:rootBoundary,padding:padding,flipVariations:flipVariations,allowedAutoPlacements:allowedAutoPlacements}):placement);},[]);var referenceRect=state.rects.reference;var popperRect=state.rects.popper;var checksMap=new Map();var makeFallbackChecks=true;var firstFittingPlacement=placements[0];for(var i=0;i=0;var len=isVertical?'width':'height';var overflow=detectOverflow(state,{placement:placement,boundary:boundary,rootBoundary:rootBoundary,altBoundary:altBoundary,padding:padding});var mainVariationSide=isVertical?isStartVariation?right:left:isStartVariation?bottom:top;if(referenceRect[len]>popperRect[len]){mainVariationSide=getOppositePlacement(mainVariationSide);}var altVariationSide=getOppositePlacement(mainVariationSide);var checks=[];if(checkMainAxis){checks.push(overflow[_basePlacement]<=0);}if(checkAltAxis){checks.push(overflow[mainVariationSide]<=0,overflow[altVariationSide]<=0);}if(checks.every(function(check){return check;})){firstFittingPlacement=placement;makeFallbackChecks=false;break;}checksMap.set(placement,checks);}if(makeFallbackChecks){// `2` may be desired in some cases โ€“ research later -var numberOfChecks=flipVariations?3:1;var _loop=function _loop(_i){var fittingPlacement=placements.find(function(placement){var checks=checksMap.get(placement);if(checks){return checks.slice(0,_i).every(function(check){return check;});}});if(fittingPlacement){firstFittingPlacement=fittingPlacement;return "break";}};for(var _i=numberOfChecks;_i>0;_i--){var _ret=_loop(_i);if(_ret==="break")break;}}if(state.placement!==firstFittingPlacement){state.modifiersData[name]._skip=true;state.placement=firstFittingPlacement;state.reset=true;}}// eslint-disable-next-line import/no-unused-modules -var flip$1 = {name:'flip',enabled:true,phase:'main',fn:flip,requiresIfExists:['offset'],data:{_skip:false}}; - -function getSideOffsets(overflow,rect,preventedOffsets){if(preventedOffsets===void 0){preventedOffsets={x:0,y:0};}return {top:overflow.top-rect.height-preventedOffsets.y,right:overflow.right-rect.width+preventedOffsets.x,bottom:overflow.bottom-rect.height+preventedOffsets.y,left:overflow.left-rect.width-preventedOffsets.x};}function isAnySideFullyClipped(overflow){return [top,right,bottom,left].some(function(side){return overflow[side]>=0;});}function hide(_ref){var state=_ref.state,name=_ref.name;var referenceRect=state.rects.reference;var popperRect=state.rects.popper;var preventedOffsets=state.modifiersData.preventOverflow;var referenceOverflow=detectOverflow(state,{elementContext:'reference'});var popperAltOverflow=detectOverflow(state,{altBoundary:true});var referenceClippingOffsets=getSideOffsets(referenceOverflow,referenceRect);var popperEscapeOffsets=getSideOffsets(popperAltOverflow,popperRect,preventedOffsets);var isReferenceHidden=isAnySideFullyClipped(referenceClippingOffsets);var hasPopperEscaped=isAnySideFullyClipped(popperEscapeOffsets);state.modifiersData[name]={referenceClippingOffsets:referenceClippingOffsets,popperEscapeOffsets:popperEscapeOffsets,isReferenceHidden:isReferenceHidden,hasPopperEscaped:hasPopperEscaped};state.attributes.popper=Object.assign({},state.attributes.popper,{'data-popper-reference-hidden':isReferenceHidden,'data-popper-escaped':hasPopperEscaped});}// eslint-disable-next-line import/no-unused-modules -var hide$1 = {name:'hide',enabled:true,phase:'main',requiresIfExists:['preventOverflow'],fn:hide}; - -function distanceAndSkiddingToXY(placement,rects,offset){var basePlacement=getBasePlacement(placement);var invertDistance=[left,top].indexOf(basePlacement)>=0?-1:1;var _ref=typeof offset==='function'?offset(Object.assign({},rects,{placement:placement})):offset,skidding=_ref[0],distance=_ref[1];skidding=skidding||0;distance=(distance||0)*invertDistance;return [left,right].indexOf(basePlacement)>=0?{x:distance,y:skidding}:{x:skidding,y:distance};}function offset(_ref2){var state=_ref2.state,options=_ref2.options,name=_ref2.name;var _options$offset=options.offset,offset=_options$offset===void 0?[0,0]:_options$offset;var data=placements.reduce(function(acc,placement){acc[placement]=distanceAndSkiddingToXY(placement,state.rects,offset);return acc;},{});var _data$state$placement=data[state.placement],x=_data$state$placement.x,y=_data$state$placement.y;if(state.modifiersData.popperOffsets!=null){state.modifiersData.popperOffsets.x+=x;state.modifiersData.popperOffsets.y+=y;}state.modifiersData[name]=data;}// eslint-disable-next-line import/no-unused-modules -var offset$1 = {name:'offset',enabled:true,phase:'main',requires:['popperOffsets'],fn:offset}; - -function popperOffsets(_ref){var state=_ref.state,name=_ref.name;// Offsets are the actual position the popper needs to have to be -// properly positioned near its reference element -// This is the most basic placement, and will be adjusted by -// the modifiers in the next step -state.modifiersData[name]=computeOffsets({reference:state.rects.reference,element:state.rects.popper,strategy:'absolute',placement:state.placement});}// eslint-disable-next-line import/no-unused-modules -var popperOffsets$1 = {name:'popperOffsets',enabled:true,phase:'read',fn:popperOffsets,data:{}}; - -function getAltAxis(axis){return axis==='x'?'y':'x';} - -function preventOverflow(_ref){var state=_ref.state,options=_ref.options,name=_ref.name;var _options$mainAxis=options.mainAxis,checkMainAxis=_options$mainAxis===void 0?true:_options$mainAxis,_options$altAxis=options.altAxis,checkAltAxis=_options$altAxis===void 0?false:_options$altAxis,boundary=options.boundary,rootBoundary=options.rootBoundary,altBoundary=options.altBoundary,padding=options.padding,_options$tether=options.tether,tether=_options$tether===void 0?true:_options$tether,_options$tetherOffset=options.tetherOffset,tetherOffset=_options$tetherOffset===void 0?0:_options$tetherOffset;var overflow=detectOverflow(state,{boundary:boundary,rootBoundary:rootBoundary,padding:padding,altBoundary:altBoundary});var basePlacement=getBasePlacement(state.placement);var variation=getVariation(state.placement);var isBasePlacement=!variation;var mainAxis=getMainAxisFromPlacement(basePlacement);var altAxis=getAltAxis(mainAxis);var popperOffsets=state.modifiersData.popperOffsets;var referenceRect=state.rects.reference;var popperRect=state.rects.popper;var tetherOffsetValue=typeof tetherOffset==='function'?tetherOffset(Object.assign({},state.rects,{placement:state.placement})):tetherOffset;var data={x:0,y:0};if(!popperOffsets){return;}if(checkMainAxis||checkAltAxis){var mainSide=mainAxis==='y'?top:left;var altSide=mainAxis==='y'?bottom:right;var len=mainAxis==='y'?'height':'width';var offset=popperOffsets[mainAxis];var min$1=popperOffsets[mainAxis]+overflow[mainSide];var max$1=popperOffsets[mainAxis]-overflow[altSide];var additive=tether?-popperRect[len]/2:0;var minLen=variation===start$1?referenceRect[len]:popperRect[len];var maxLen=variation===start$1?-popperRect[len]:-referenceRect[len];// We need to include the arrow in the calculation so the arrow doesn't go -// outside the reference bounds -var arrowElement=state.elements.arrow;var arrowRect=tether&&arrowElement?getLayoutRect(arrowElement):{width:0,height:0};var arrowPaddingObject=state.modifiersData['arrow#persistent']?state.modifiersData['arrow#persistent'].padding:getFreshSideObject();var arrowPaddingMin=arrowPaddingObject[mainSide];var arrowPaddingMax=arrowPaddingObject[altSide];// If the reference length is smaller than the arrow length, we don't want -// to include its full size in the calculation. If the reference is small -// and near the edge of a boundary, the popper can overflow even if the -// reference is not overflowing as well (e.g. virtual elements with no -// width or height) -var arrowLen=within(0,referenceRect[len],arrowRect[len]);var minOffset=isBasePlacement?referenceRect[len]/2-additive-arrowLen-arrowPaddingMin-tetherOffsetValue:minLen-arrowLen-arrowPaddingMin-tetherOffsetValue;var maxOffset=isBasePlacement?-referenceRect[len]/2+additive+arrowLen+arrowPaddingMax+tetherOffsetValue:maxLen+arrowLen+arrowPaddingMax+tetherOffsetValue;var arrowOffsetParent=state.elements.arrow&&getOffsetParent(state.elements.arrow);var clientOffset=arrowOffsetParent?mainAxis==='y'?arrowOffsetParent.clientTop||0:arrowOffsetParent.clientLeft||0:0;var offsetModifierValue=state.modifiersData.offset?state.modifiersData.offset[state.placement][mainAxis]:0;var tetherMin=popperOffsets[mainAxis]+minOffset-offsetModifierValue-clientOffset;var tetherMax=popperOffsets[mainAxis]+maxOffset-offsetModifierValue;if(checkMainAxis){var preventedOffset=within(tether?min(min$1,tetherMin):min$1,offset,tether?max(max$1,tetherMax):max$1);popperOffsets[mainAxis]=preventedOffset;data[mainAxis]=preventedOffset-offset;}if(checkAltAxis){var _mainSide=mainAxis==='x'?top:left;var _altSide=mainAxis==='x'?bottom:right;var _offset=popperOffsets[altAxis];var _min=_offset+overflow[_mainSide];var _max=_offset-overflow[_altSide];var _preventedOffset=within(tether?min(_min,tetherMin):_min,_offset,tether?max(_max,tetherMax):_max);popperOffsets[altAxis]=_preventedOffset;data[altAxis]=_preventedOffset-_offset;}}state.modifiersData[name]=data;}// eslint-disable-next-line import/no-unused-modules -var preventOverflow$1 = {name:'preventOverflow',enabled:true,phase:'main',fn:preventOverflow,requiresIfExists:['offset']}; - -function getHTMLElementScroll(element){return {scrollLeft:element.scrollLeft,scrollTop:element.scrollTop};} - -function getNodeScroll(node){if(node===getWindow(node)||!isHTMLElement(node)){return getWindowScroll(node);}else {return getHTMLElementScroll(node);}} - -// Composite means it takes into account transforms as well as layout. -function getCompositeRect(elementOrVirtualElement,offsetParent,isFixed){if(isFixed===void 0){isFixed=false;}var documentElement=getDocumentElement(offsetParent);var rect=getBoundingClientRect(elementOrVirtualElement);var isOffsetParentAnElement=isHTMLElement(offsetParent);var scroll={scrollLeft:0,scrollTop:0};var offsets={x:0,y:0};if(isOffsetParentAnElement||!isOffsetParentAnElement&&!isFixed){if(getNodeName(offsetParent)!=='body'||// https://github.com/popperjs/popper-core/issues/1078 -isScrollParent(documentElement)){scroll=getNodeScroll(offsetParent);}if(isHTMLElement(offsetParent)){offsets=getBoundingClientRect(offsetParent);offsets.x+=offsetParent.clientLeft;offsets.y+=offsetParent.clientTop;}else if(documentElement){offsets.x=getWindowScrollBarX(documentElement);}}return {x:rect.left+scroll.scrollLeft-offsets.x,y:rect.top+scroll.scrollTop-offsets.y,width:rect.width,height:rect.height};} - -function order(modifiers){var map=new Map();var visited=new Set();var result=[];modifiers.forEach(function(modifier){map.set(modifier.name,modifier);});// On visiting object, check for its dependencies and visit them recursively -function sort(modifier){visited.add(modifier.name);var requires=[].concat(modifier.requires||[],modifier.requiresIfExists||[]);requires.forEach(function(dep){if(!visited.has(dep)){var depModifier=map.get(dep);if(depModifier){sort(depModifier);}}});result.push(modifier);}modifiers.forEach(function(modifier){if(!visited.has(modifier.name)){// check for visited object -sort(modifier);}});return result;}function orderModifiers(modifiers){// order based on dependencies -var orderedModifiers=order(modifiers);// order based on phase -return modifierPhases.reduce(function(acc,phase){return acc.concat(orderedModifiers.filter(function(modifier){return modifier.phase===phase;}));},[]);} - -function debounce(fn){var pending;return function(){if(!pending){pending=new Promise(function(resolve){Promise.resolve().then(function(){pending=undefined;resolve(fn());});});}return pending;};} - -function format$2(str){for(var _len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key];}return [].concat(args).reduce(function(p,c){return p.replace(/%s/,c);},str);} - -var INVALID_MODIFIER_ERROR='Popper: modifier "%s" provided an invalid %s property, expected %s but got %s';var MISSING_DEPENDENCY_ERROR='Popper: modifier "%s" requires "%s", but "%s" modifier is not available';var VALID_PROPERTIES=['name','enabled','phase','fn','effect','requires','options'];function validateModifiers(modifiers){modifiers.forEach(function(modifier){Object.keys(modifier).forEach(function(key){switch(key){case'name':if(typeof modifier.name!=='string'){console.error(format$2(INVALID_MODIFIER_ERROR,String(modifier.name),'"name"','"string"',"\""+String(modifier.name)+"\""));}break;case'enabled':if(typeof modifier.enabled!=='boolean'){console.error(format$2(INVALID_MODIFIER_ERROR,modifier.name,'"enabled"','"boolean"',"\""+String(modifier.enabled)+"\""));}case'phase':if(modifierPhases.indexOf(modifier.phase)<0){console.error(format$2(INVALID_MODIFIER_ERROR,modifier.name,'"phase"',"either "+modifierPhases.join(', '),"\""+String(modifier.phase)+"\""));}break;case'fn':if(typeof modifier.fn!=='function'){console.error(format$2(INVALID_MODIFIER_ERROR,modifier.name,'"fn"','"function"',"\""+String(modifier.fn)+"\""));}break;case'effect':if(typeof modifier.effect!=='function'){console.error(format$2(INVALID_MODIFIER_ERROR,modifier.name,'"effect"','"function"',"\""+String(modifier.fn)+"\""));}break;case'requires':if(!Array.isArray(modifier.requires)){console.error(format$2(INVALID_MODIFIER_ERROR,modifier.name,'"requires"','"array"',"\""+String(modifier.requires)+"\""));}break;case'requiresIfExists':if(!Array.isArray(modifier.requiresIfExists)){console.error(format$2(INVALID_MODIFIER_ERROR,modifier.name,'"requiresIfExists"','"array"',"\""+String(modifier.requiresIfExists)+"\""));}break;case'options':case'data':break;default:console.error("PopperJS: an invalid property has been provided to the \""+modifier.name+"\" modifier, valid properties are "+VALID_PROPERTIES.map(function(s){return "\""+s+"\"";}).join(', ')+"; but \""+key+"\" was provided.");}modifier.requires&&modifier.requires.forEach(function(requirement){if(modifiers.find(function(mod){return mod.name===requirement;})==null){console.error(format$2(MISSING_DEPENDENCY_ERROR,String(modifier.name),requirement,requirement));}});});});} - -function uniqueBy(arr,fn){var identifiers=new Set();return arr.filter(function(item){var identifier=fn(item);if(!identifiers.has(identifier)){identifiers.add(identifier);return true;}});} - -function mergeByName(modifiers){var merged=modifiers.reduce(function(merged,current){var existing=merged[current.name];merged[current.name]=existing?Object.assign({},existing,current,{options:Object.assign({},existing.options,current.options),data:Object.assign({},existing.data,current.data)}):current;return merged;},{});// IE11 does not support Object.values -return Object.keys(merged).map(function(key){return merged[key];});} - -var INVALID_ELEMENT_ERROR='Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';var INFINITE_LOOP_ERROR='Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';var DEFAULT_OPTIONS={placement:'bottom',modifiers:[],strategy:'absolute'};function areValidElements(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}return !args.some(function(element){return !(element&&typeof element.getBoundingClientRect==='function');});}function popperGenerator(generatorOptions){if(generatorOptions===void 0){generatorOptions={};}var _generatorOptions=generatorOptions,_generatorOptions$def=_generatorOptions.defaultModifiers,defaultModifiers=_generatorOptions$def===void 0?[]:_generatorOptions$def,_generatorOptions$def2=_generatorOptions.defaultOptions,defaultOptions=_generatorOptions$def2===void 0?DEFAULT_OPTIONS:_generatorOptions$def2;return function createPopper(reference,popper,options){if(options===void 0){options=defaultOptions;}var state={placement:'bottom',orderedModifiers:[],options:Object.assign({},DEFAULT_OPTIONS,defaultOptions),modifiersData:{},elements:{reference:reference,popper:popper},attributes:{},styles:{}};var effectCleanupFns=[];var isDestroyed=false;var instance={state:state,setOptions:function setOptions(options){cleanupModifierEffects();state.options=Object.assign({},defaultOptions,state.options,options);state.scrollParents={reference:isElement(reference)?listScrollParents(reference):reference.contextElement?listScrollParents(reference.contextElement):[],popper:listScrollParents(popper)};// Orders the modifiers based on their dependencies and `phase` -// properties -var orderedModifiers=orderModifiers(mergeByName([].concat(defaultModifiers,state.options.modifiers)));// Strip out disabled modifiers -state.orderedModifiers=orderedModifiers.filter(function(m){return m.enabled;});// Validate the provided modifiers so that the consumer will get warned -// if one of the modifiers is invalid for any reason -{var modifiers=uniqueBy([].concat(orderedModifiers,state.options.modifiers),function(_ref){var name=_ref.name;return name;});validateModifiers(modifiers);if(getBasePlacement(state.options.placement)===auto){var flipModifier=state.orderedModifiers.find(function(_ref2){var name=_ref2.name;return name==='flip';});if(!flipModifier){console.error(['Popper: "auto" placements require the "flip" modifier be','present and enabled to work.'].join(' '));}}var _getComputedStyle=getComputedStyle(popper),marginTop=_getComputedStyle.marginTop,marginRight=_getComputedStyle.marginRight,marginBottom=_getComputedStyle.marginBottom,marginLeft=_getComputedStyle.marginLeft;// We no longer take into account `margins` on the popper, and it can -// cause bugs with positioning, so we'll warn the consumer -if([marginTop,marginRight,marginBottom,marginLeft].some(function(margin){return parseFloat(margin);})){console.warn(['Popper: CSS "margin" styles cannot be used to apply padding','between the popper and its reference element or boundary.','To replicate margin, use the `offset` modifier, as well as','the `padding` option in the `preventOverflow` and `flip`','modifiers.'].join(' '));}}runModifierEffects();return instance.update();},// Sync update โ€“ it will always be executed, even if not necessary. This -// is useful for low frequency updates where sync behavior simplifies the -// logic. -// For high frequency updates (e.g. `resize` and `scroll` events), always -// prefer the async Popper#update method -forceUpdate:function forceUpdate(){if(isDestroyed){return;}var _state$elements=state.elements,reference=_state$elements.reference,popper=_state$elements.popper;// Don't proceed if `reference` or `popper` are not valid elements -// anymore -if(!areValidElements(reference,popper)){{console.error(INVALID_ELEMENT_ERROR);}return;}// Store the reference and popper rects to be read by modifiers -state.rects={reference:getCompositeRect(reference,getOffsetParent(popper),state.options.strategy==='fixed'),popper:getLayoutRect(popper)};// Modifiers have the ability to reset the current update cycle. The -// most common use case for this is the `flip` modifier changing the -// placement, which then needs to re-run all the modifiers, because the -// logic was previously ran for the previous placement and is therefore -// stale/incorrect -state.reset=false;state.placement=state.options.placement;// On each update cycle, the `modifiersData` property for each modifier -// is filled with the initial data specified by the modifier. This means -// it doesn't persist and is fresh on each update. -// To ensure persistent data, use `${name}#persistent` -state.orderedModifiers.forEach(function(modifier){return state.modifiersData[modifier.name]=Object.assign({},modifier.data);});var __debug_loops__=0;for(var index=0;index100){console.error(INFINITE_LOOP_ERROR);break;}}if(state.reset===true){state.reset=false;index=-1;continue;}var _state$orderedModifie=state.orderedModifiers[index],fn=_state$orderedModifie.fn,_state$orderedModifie2=_state$orderedModifie.options,_options=_state$orderedModifie2===void 0?{}:_state$orderedModifie2,name=_state$orderedModifie.name;if(typeof fn==='function'){state=fn({state:state,options:_options,name:name,instance:instance})||state;}}},// Async and optimistically optimized update โ€“ it will not be executed if -// not necessary (debounced to run at most once-per-tick) -update:debounce(function(){return new Promise(function(resolve){instance.forceUpdate();resolve(state);});}),destroy:function destroy(){cleanupModifierEffects();isDestroyed=true;}};if(!areValidElements(reference,popper)){{console.error(INVALID_ELEMENT_ERROR);}return instance;}instance.setOptions(options).then(function(state){if(!isDestroyed&&options.onFirstUpdate){options.onFirstUpdate(state);}});// Modifiers have the ability to execute arbitrary code before the first -// update cycle runs. They will be executed in the same order as the update -// cycle. This is useful when a modifier adds some persistent data that -// other modifiers need to use, but the modifier is run after the dependent -// one. -function runModifierEffects(){state.orderedModifiers.forEach(function(_ref3){var name=_ref3.name,_ref3$options=_ref3.options,options=_ref3$options===void 0?{}:_ref3$options,effect=_ref3.effect;if(typeof effect==='function'){var cleanupFn=effect({state:state,name:name,instance:instance,options:options});var noopFn=function noopFn(){};effectCleanupFns.push(cleanupFn||noopFn);}});}function cleanupModifierEffects(){effectCleanupFns.forEach(function(fn){return fn();});effectCleanupFns=[];}return instance;};} - -var defaultModifiers=[eventListeners,popperOffsets$1,computeStyles$1,applyStyles$1,offset$1,flip$1,preventOverflow$1,arrow$1,hide$1];var createPopper=/*#__PURE__*/popperGenerator({defaultModifiers:defaultModifiers});// eslint-disable-next-line import/no-unused-modules - -/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */ -var hasElementType=typeof Element!=='undefined';var hasMap=typeof Map==='function';var hasSet=typeof Set==='function';var hasArrayBuffer=typeof ArrayBuffer==='function'&&!!ArrayBuffer.isView;// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js -function equal$1(a,b){// START: fast-deep-equal es6/index.js 3.1.1 -if(a===b)return true;if(a&&b&&typeof a=='object'&&typeof b=='object'){if(a.constructor!==b.constructor)return false;var length,i,keys;if(Array.isArray(a)){length=a.length;if(length!=b.length)return false;for(i=length;i--!==0;)if(!equal$1(a[i],b[i]))return false;return true;}// START: Modifications: -// 1. Extra `has &&` helpers in initial condition allow es6 code -// to co-exist with es5. -// 2. Replace `for of` with es5 compliant iteration using `for`. -// Basically, take: -// -// ```js -// for (i of a.entries()) -// if (!b.has(i[0])) return false; -// ``` -// -// ... and convert to: -// -// ```js -// it = a.entries(); -// while (!(i = it.next()).done) -// if (!b.has(i.value[0])) return false; -// ``` -// -// **Note**: `i` access switches to `i.value`. -var it;if(hasMap&&a instanceof Map&&b instanceof Map){if(a.size!==b.size)return false;it=a.entries();while(!(i=it.next()).done)if(!b.has(i.value[0]))return false;it=a.entries();while(!(i=it.next()).done)if(!equal$1(i.value[1],b.get(i.value[0])))return false;return true;}if(hasSet&&a instanceof Set&&b instanceof Set){if(a.size!==b.size)return false;it=a.entries();while(!(i=it.next()).done)if(!b.has(i.value[0]))return false;return true;}// END: Modifications -if(hasArrayBuffer&&ArrayBuffer.isView(a)&&ArrayBuffer.isView(b)){length=a.length;if(length!=b.length)return false;for(i=length;i--!==0;)if(a[i]!==b[i])return false;return true;}if(a.constructor===RegExp)return a.source===b.source&&a.flags===b.flags;if(a.valueOf!==Object.prototype.valueOf)return a.valueOf()===b.valueOf();if(a.toString!==Object.prototype.toString)return a.toString()===b.toString();keys=Object.keys(a);length=keys.length;if(length!==Object.keys(b).length)return false;for(i=length;i--!==0;)if(!Object.prototype.hasOwnProperty.call(b,keys[i]))return false;// END: fast-deep-equal -// START: react-fast-compare -// custom handling for DOM elements -if(hasElementType&&a instanceof Element)return false;// custom handling for React/Preact -for(i=length;i--!==0;){if((keys[i]==='_owner'||keys[i]==='__v'||keys[i]==='__o')&&a.$$typeof){// React-specific: avoid traversing React elements' _owner -// Preact-specific: avoid traversing Preact elements' __v and __o -// __v = $_original / $_vnode -// __o = $_owner -// These properties contain circular references and are not needed when -// comparing the actual elements (and not their owners) -// .$$typeof and ._store on just reasonable markers of elements -continue;}// all other properties should be traversed as usual -if(!equal$1(a[keys[i]],b[keys[i]]))return false;}// END: react-fast-compare -// START: fast-deep-equal -return true;}return a!==a&&b!==b;}// end fast-deep-equal -var reactFastCompare=function isEqual(a,b){try{return equal$1(a,b);}catch(error){if((error.message||'').match(/stack|recursion/i)){// warn on circular references, don't crash -// browsers give this different errors name and messages: -// chrome/safari: "RangeError", "Maximum call stack size exceeded" -// firefox: "InternalError", too much recursion" -// edge: "Error", "Out of stack space" -console.warn('react-fast-compare cannot handle circular refs');return false;}// some other error. we should definitely know about these -throw error;}}; - -var EMPTY_MODIFIERS=[];var usePopper=function usePopper(referenceElement,popperElement,options){if(options===void 0){options={};}var prevOptions=react.useRef(null);var optionsWithDefaults={onFirstUpdate:options.onFirstUpdate,placement:options.placement||'bottom',strategy:options.strategy||'absolute',modifiers:options.modifiers||EMPTY_MODIFIERS};var _React$useState=react.useState({styles:{popper:{position:optionsWithDefaults.strategy,left:'0',top:'0'},arrow:{position:'absolute'}},attributes:{}}),state=_React$useState[0],setState=_React$useState[1];var updateStateModifier=react.useMemo(function(){return {name:'updateState',enabled:true,phase:'write',fn:function fn(_ref){var state=_ref.state;var elements=Object.keys(state.elements);setState({styles:fromEntries(elements.map(function(element){return [element,state.styles[element]||{}];})),attributes:fromEntries(elements.map(function(element){return [element,state.attributes[element]];}))});},requires:['computeStyles']};},[]);var popperOptions=react.useMemo(function(){var newOptions={onFirstUpdate:optionsWithDefaults.onFirstUpdate,placement:optionsWithDefaults.placement,strategy:optionsWithDefaults.strategy,modifiers:[].concat(optionsWithDefaults.modifiers,[updateStateModifier,{name:'applyStyles',enabled:false}])};if(reactFastCompare(prevOptions.current,newOptions)){return prevOptions.current||newOptions;}else {prevOptions.current=newOptions;return newOptions;}},[optionsWithDefaults.onFirstUpdate,optionsWithDefaults.placement,optionsWithDefaults.strategy,optionsWithDefaults.modifiers,updateStateModifier]);var popperInstanceRef=react.useRef();useIsomorphicLayoutEffect(function(){if(popperInstanceRef.current){popperInstanceRef.current.setOptions(popperOptions);}},[popperOptions]);useIsomorphicLayoutEffect(function(){if(referenceElement==null||popperElement==null){return;}var createPopper$1=options.createPopper||createPopper;var popperInstance=createPopper$1(referenceElement,popperElement,popperOptions);popperInstanceRef.current=popperInstance;return function(){popperInstance.destroy();popperInstanceRef.current=null;};},[referenceElement,popperElement,options.createPopper]);return {state:popperInstanceRef.current?popperInstanceRef.current.state:null,styles:state.styles,attributes:state.attributes,update:popperInstanceRef.current?popperInstanceRef.current.update:null,forceUpdate:popperInstanceRef.current?popperInstanceRef.current.forceUpdate:null};}; - -const TextSuggest = ({ placeholder, displayCount, suggestions, value, setValue, }) => { - const [currentSuggestions, setCurrentSuggestions] = react.useState(lodash.take(suggestions, displayCount)); - const [fuse, setFuse] = react.useState(new Fuse(suggestions, { threshold: 0.5 })); - const [selectedIndex, setSelectedIndex] = react.useState(0); - const [visible, setVisibility] = react.useState(false); - const [referenceElement, setReferenceElement] = react.useState(null); - const [popperElement, setPopperElement] = react.useState(null); - const { styles, attributes } = usePopper(referenceElement, popperElement, { - placement: 'bottom-start', - }); - const updateCurrentSuggestions = (newValue) => { - const newSuggestions = newValue === '' - ? lodash.take(suggestions, displayCount) - : lodash.take(fuse.search(newValue).map((result) => result.item), displayCount); - setCurrentSuggestions(newSuggestions); - setSelectedIndex(Math.min(selectedIndex, newSuggestions.length - 1)); - }; - const updateValue = (newValue) => { - setVisibility(true); - setValue(newValue); - updateCurrentSuggestions(newValue); - }; - // The Fuse object will not be automatically replaced when the suggestions are - // changed so we need to detect and update manually. - react.useEffect(() => { - setFuse(new Fuse(suggestions, { threshold: 0.5 })); - updateCurrentSuggestions(value); - }, [suggestions]); - return (react.createElement("div", null, - react.createElement(WideInput, { ref: setReferenceElement, type: "text", value: value, placeholder: placeholder, onChange: (e) => updateValue(e.target.value), onFocus: () => { - setVisibility(true); - setSelectedIndex(0); - }, onBlur: () => setVisibility(false), onKeyDown: (e) => { - switch (e.key) { - case 'ArrowUp': - setSelectedIndex(Math.clamp(selectedIndex - 1, 0, currentSuggestions.length - 1)); - e.preventDefault(); - return; - case 'ArrowDown': - setSelectedIndex(Math.clamp(selectedIndex + 1, 0, currentSuggestions.length - 1)); - e.preventDefault(); - return; - case 'Enter': - setValue(currentSuggestions[selectedIndex]); - setVisibility(false); - e.preventDefault(); - return; - } - } }), - visible ? (react.createElement("div", Object.assign({ className: "suggestion-container", ref: setPopperElement, style: styles.popper }, attributes.popper), currentSuggestions.map((s, i) => (react.createElement(Suggestion, { value: s, key: s, selected: i === selectedIndex, onClick: () => { - setValue(s); - setVisibility(false); - }, onHover: () => { - setSelectedIndex(i); - } }))))) : null)); -}; -const Suggestion = ({ value, selected, onClick, onHover }) => (react.createElement("div", { className: 'suggestion-item ' + (selected ? 'is-selected' : ''), onMouseDown: onClick, onMouseOver: onHover }, value)); - -var moment = createCommonjsModule(function (module, exports) { -(function(global,factory){module.exports=factory();})(commonjsGlobal,function(){var hookCallback;function hooks(){return hookCallback.apply(null,arguments);}// This is done to register the method called with moment() -// without creating circular dependencies. -function setHookCallback(callback){hookCallback=callback;}function isArray(input){return input instanceof Array||Object.prototype.toString.call(input)==='[object Array]';}function isObject(input){// IE8 will treat undefined and null as object if it wasn't for -// input != null -return input!=null&&Object.prototype.toString.call(input)==='[object Object]';}function hasOwnProp(a,b){return Object.prototype.hasOwnProperty.call(a,b);}function isObjectEmpty(obj){if(Object.getOwnPropertyNames){return Object.getOwnPropertyNames(obj).length===0;}else {var k;for(k in obj){if(hasOwnProp(obj,k)){return false;}}return true;}}function isUndefined(input){return input===void 0;}function isNumber(input){return typeof input==='number'||Object.prototype.toString.call(input)==='[object Number]';}function isDate(input){return input instanceof Date||Object.prototype.toString.call(input)==='[object Date]';}function map(arr,fn){var res=[],i;for(i=0;i>>0,i;for(i=0;i0){for(i=0;i=0;return (sign?forceSign?'+':'':'-')+Math.pow(10,Math.max(0,zerosToFill)).toString().substr(1)+absNumber;}var formattingTokens=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,localFormattingTokens=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,formatFunctions={},formatTokenFunctions={};// token: 'M' -// padded: ['MM', 2] -// ordinal: 'Mo' -// callback: function () { this.month() + 1 } -function addFormatToken(token,padded,ordinal,callback){var func=callback;if(typeof callback==='string'){func=function(){return this[callback]();};}if(token){formatTokenFunctions[token]=func;}if(padded){formatTokenFunctions[padded[0]]=function(){return zeroFill(func.apply(this,arguments),padded[1],padded[2]);};}if(ordinal){formatTokenFunctions[ordinal]=function(){return this.localeData().ordinal(func.apply(this,arguments),token);};}}function removeFormattingTokens(input){if(input.match(/\[[\s\S]/)){return input.replace(/^\[|\]$/g,'');}return input.replace(/\\/g,'');}function makeFormatFunction(format){var array=format.match(formattingTokens),i,length;for(i=0,length=array.length;i=0&&localFormattingTokens.test(format)){format=format.replace(localFormattingTokens,replaceLongDateFormatTokens);localFormattingTokens.lastIndex=0;i-=1;}return format;}var defaultLongDateFormat={LTS:'h:mm:ss A',LT:'h:mm A',L:'MM/DD/YYYY',LL:'MMMM D, YYYY',LLL:'MMMM D, YYYY h:mm A',LLLL:'dddd, MMMM D, YYYY h:mm A'};function longDateFormat(key){var format=this._longDateFormat[key],formatUpper=this._longDateFormat[key.toUpperCase()];if(format||!formatUpper){return format;}this._longDateFormat[key]=formatUpper.match(formattingTokens).map(function(tok){if(tok==='MMMM'||tok==='MM'||tok==='DD'||tok==='dddd'){return tok.slice(1);}return tok;}).join('');return this._longDateFormat[key];}var defaultInvalidDate='Invalid date';function invalidDate(){return this._invalidDate;}var defaultOrdinal='%d',defaultDayOfMonthOrdinalParse=/\d{1,2}/;function ordinal(number){return this._ordinal.replace('%d',number);}var defaultRelativeTime={future:'in %s',past:'%s ago',s:'a few seconds',ss:'%d seconds',m:'a minute',mm:'%d minutes',h:'an hour',hh:'%d hours',d:'a day',dd:'%d days',w:'a week',ww:'%d weeks',M:'a month',MM:'%d months',y:'a year',yy:'%d years'};function relativeTime(number,withoutSuffix,string,isFuture){var output=this._relativeTime[string];return isFunction(output)?output(number,withoutSuffix,string,isFuture):output.replace(/%d/i,number);}function pastFuture(diff,output){var format=this._relativeTime[diff>0?'future':'past'];return isFunction(format)?format(output):format.replace(/%s/i,output);}var aliases={};function addUnitAlias(unit,shorthand){var lowerCase=unit.toLowerCase();aliases[lowerCase]=aliases[lowerCase+'s']=aliases[shorthand]=unit;}function normalizeUnits(units){return typeof units==='string'?aliases[units]||aliases[units.toLowerCase()]:undefined;}function normalizeObjectUnits(inputObject){var normalizedInput={},normalizedProp,prop;for(prop in inputObject){if(hasOwnProp(inputObject,prop)){normalizedProp=normalizeUnits(prop);if(normalizedProp){normalizedInput[normalizedProp]=inputObject[prop];}}}return normalizedInput;}var priorities={};function addUnitPriority(unit,priority){priorities[unit]=priority;}function getPrioritizedUnits(unitsObj){var units=[],u;for(u in unitsObj){if(hasOwnProp(unitsObj,u)){units.push({unit:u,priority:priorities[u]});}}units.sort(function(a,b){return a.priority-b.priority;});return units;}function isLeapYear(year){return year%4===0&&year%100!==0||year%400===0;}function absFloor(number){if(number<0){// -0 -> 0 -return Math.ceil(number)||0;}else {return Math.floor(number);}}function toInt(argumentForCoercion){var coercedNumber=+argumentForCoercion,value=0;if(coercedNumber!==0&&isFinite(coercedNumber)){value=absFloor(coercedNumber);}return value;}function makeGetSet(unit,keepTime){return function(value){if(value!=null){set$1(this,unit,value);hooks.updateOffset(this,keepTime);return this;}else {return get(this,unit);}};}function get(mom,unit){return mom.isValid()?mom._d['get'+(mom._isUTC?'UTC':'')+unit]():NaN;}function set$1(mom,unit,value){if(mom.isValid()&&!isNaN(value)){if(unit==='FullYear'&&isLeapYear(mom.year())&&mom.month()===1&&mom.date()===29){value=toInt(value);mom._d['set'+(mom._isUTC?'UTC':'')+unit](value,mom.month(),daysInMonth(value,mom.month()));}else {mom._d['set'+(mom._isUTC?'UTC':'')+unit](value);}}}// MOMENTS -function stringGet(units){units=normalizeUnits(units);if(isFunction(this[units])){return this[units]();}return this;}function stringSet(units,value){if(typeof units==='object'){units=normalizeObjectUnits(units);var prioritized=getPrioritizedUnits(units),i;for(i=0;i68?1900:2000);};// MOMENTS -var getSetYear=makeGetSet('FullYear',true);function getIsLeapYear(){return isLeapYear(this.year());}function createDate(y,m,d,h,M,s,ms){// can't just apply() to create a date: -// https://stackoverflow.com/q/181348 -var date;// the date constructor remaps years 0-99 to 1900-1999 -if(y<100&&y>=0){// preserve leap years using a full 400 year cycle, then reset -date=new Date(y+400,m,d,h,M,s,ms);if(isFinite(date.getFullYear())){date.setFullYear(y);}}else {date=new Date(y,m,d,h,M,s,ms);}return date;}function createUTCDate(y){var date,args;// the Date.UTC function remaps years 0-99 to 1900-1999 -if(y<100&&y>=0){args=Array.prototype.slice.call(arguments);// preserve leap years using a full 400 year cycle, then reset -args[0]=y+400;date=new Date(Date.UTC.apply(null,args));if(isFinite(date.getUTCFullYear())){date.setUTCFullYear(y);}}else {date=new Date(Date.UTC.apply(null,arguments));}return date;}// start-of-first-week - start-of-year -function firstWeekOffset(year,dow,doy){var// first-week day -- which january is always in the first week (4 for iso, 1 for other) -fwd=7+dow-doy,// first-week day local weekday -- which local weekday is fwd -fwdlw=(7+createUTCDate(year,0,fwd).getUTCDay()-dow)%7;return -fwdlw+fwd-1;}// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday -function dayOfYearFromWeeks(year,week,weekday,dow,doy){var localWeekday=(7+weekday-dow)%7,weekOffset=firstWeekOffset(year,dow,doy),dayOfYear=1+7*(week-1)+localWeekday+weekOffset,resYear,resDayOfYear;if(dayOfYear<=0){resYear=year-1;resDayOfYear=daysInYear(resYear)+dayOfYear;}else if(dayOfYear>daysInYear(year)){resYear=year+1;resDayOfYear=dayOfYear-daysInYear(year);}else {resYear=year;resDayOfYear=dayOfYear;}return {year:resYear,dayOfYear:resDayOfYear};}function weekOfYear(mom,dow,doy){var weekOffset=firstWeekOffset(mom.year(),dow,doy),week=Math.floor((mom.dayOfYear()-weekOffset-1)/7)+1,resWeek,resYear;if(week<1){resYear=mom.year()-1;resWeek=week+weeksInYear(resYear,dow,doy);}else if(week>weeksInYear(mom.year(),dow,doy)){resWeek=week-weeksInYear(mom.year(),dow,doy);resYear=mom.year()+1;}else {resYear=mom.year();resWeek=week;}return {week:resWeek,year:resYear};}function weeksInYear(year,dow,doy){var weekOffset=firstWeekOffset(year,dow,doy),weekOffsetNext=firstWeekOffset(year+1,dow,doy);return (daysInYear(year)-weekOffset+weekOffsetNext)/7;}// FORMATTING -addFormatToken('w',['ww',2],'wo','week');addFormatToken('W',['WW',2],'Wo','isoWeek');// ALIASES -addUnitAlias('week','w');addUnitAlias('isoWeek','W');// PRIORITIES -addUnitPriority('week',5);addUnitPriority('isoWeek',5);// PARSING -addRegexToken('w',match1to2);addRegexToken('ww',match1to2,match2);addRegexToken('W',match1to2);addRegexToken('WW',match1to2,match2);addWeekParseToken(['w','ww','W','WW'],function(input,week,config,token){week[token.substr(0,1)]=toInt(input);});// HELPERS -// LOCALES -function localeWeek(mom){return weekOfYear(mom,this._week.dow,this._week.doy).week;}var defaultLocaleWeek={dow:0,// Sunday is the first day of the week. -doy:6// The week that contains Jan 6th is the first week of the year. -};function localeFirstDayOfWeek(){return this._week.dow;}function localeFirstDayOfYear(){return this._week.doy;}// MOMENTS -function getSetWeek(input){var week=this.localeData().week(this);return input==null?week:this.add((input-week)*7,'d');}function getSetISOWeek(input){var week=weekOfYear(this,1,4).week;return input==null?week:this.add((input-week)*7,'d');}// FORMATTING -addFormatToken('d',0,'do','day');addFormatToken('dd',0,0,function(format){return this.localeData().weekdaysMin(this,format);});addFormatToken('ddd',0,0,function(format){return this.localeData().weekdaysShort(this,format);});addFormatToken('dddd',0,0,function(format){return this.localeData().weekdays(this,format);});addFormatToken('e',0,0,'weekday');addFormatToken('E',0,0,'isoWeekday');// ALIASES -addUnitAlias('day','d');addUnitAlias('weekday','e');addUnitAlias('isoWeekday','E');// PRIORITY -addUnitPriority('day',11);addUnitPriority('weekday',11);addUnitPriority('isoWeekday',11);// PARSING -addRegexToken('d',match1to2);addRegexToken('e',match1to2);addRegexToken('E',match1to2);addRegexToken('dd',function(isStrict,locale){return locale.weekdaysMinRegex(isStrict);});addRegexToken('ddd',function(isStrict,locale){return locale.weekdaysShortRegex(isStrict);});addRegexToken('dddd',function(isStrict,locale){return locale.weekdaysRegex(isStrict);});addWeekParseToken(['dd','ddd','dddd'],function(input,week,config,token){var weekday=config._locale.weekdaysParse(input,token,config._strict);// if we didn't get a weekday name, mark the date as invalid -if(weekday!=null){week.d=weekday;}else {getParsingFlags(config).invalidWeekday=input;}});addWeekParseToken(['d','e','E'],function(input,week,config,token){week[token]=toInt(input);});// HELPERS -function parseWeekday(input,locale){if(typeof input!=='string'){return input;}if(!isNaN(input)){return parseInt(input,10);}input=locale.weekdaysParse(input);if(typeof input==='number'){return input;}return null;}function parseIsoWeekday(input,locale){if(typeof input==='string'){return locale.weekdaysParse(input)%7||7;}return isNaN(input)?null:input;}// LOCALES -function shiftWeekdays(ws,n){return ws.slice(n,7).concat(ws.slice(0,n));}var defaultLocaleWeekdays='Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),defaultLocaleWeekdaysShort='Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),defaultLocaleWeekdaysMin='Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),defaultWeekdaysRegex=matchWord,defaultWeekdaysShortRegex=matchWord,defaultWeekdaysMinRegex=matchWord;function localeWeekdays(m,format){var weekdays=isArray(this._weekdays)?this._weekdays:this._weekdays[m&&m!==true&&this._weekdays.isFormat.test(format)?'format':'standalone'];return m===true?shiftWeekdays(weekdays,this._week.dow):m?weekdays[m.day()]:weekdays;}function localeWeekdaysShort(m){return m===true?shiftWeekdays(this._weekdaysShort,this._week.dow):m?this._weekdaysShort[m.day()]:this._weekdaysShort;}function localeWeekdaysMin(m){return m===true?shiftWeekdays(this._weekdaysMin,this._week.dow):m?this._weekdaysMin[m.day()]:this._weekdaysMin;}function handleStrictParse$1(weekdayName,format,strict){var i,ii,mom,llc=weekdayName.toLocaleLowerCase();if(!this._weekdaysParse){this._weekdaysParse=[];this._shortWeekdaysParse=[];this._minWeekdaysParse=[];for(i=0;i<7;++i){mom=createUTC([2000,1]).day(i);this._minWeekdaysParse[i]=this.weekdaysMin(mom,'').toLocaleLowerCase();this._shortWeekdaysParse[i]=this.weekdaysShort(mom,'').toLocaleLowerCase();this._weekdaysParse[i]=this.weekdays(mom,'').toLocaleLowerCase();}}if(strict){if(format==='dddd'){ii=indexOf.call(this._weekdaysParse,llc);return ii!==-1?ii:null;}else if(format==='ddd'){ii=indexOf.call(this._shortWeekdaysParse,llc);return ii!==-1?ii:null;}else {ii=indexOf.call(this._minWeekdaysParse,llc);return ii!==-1?ii:null;}}else {if(format==='dddd'){ii=indexOf.call(this._weekdaysParse,llc);if(ii!==-1){return ii;}ii=indexOf.call(this._shortWeekdaysParse,llc);if(ii!==-1){return ii;}ii=indexOf.call(this._minWeekdaysParse,llc);return ii!==-1?ii:null;}else if(format==='ddd'){ii=indexOf.call(this._shortWeekdaysParse,llc);if(ii!==-1){return ii;}ii=indexOf.call(this._weekdaysParse,llc);if(ii!==-1){return ii;}ii=indexOf.call(this._minWeekdaysParse,llc);return ii!==-1?ii:null;}else {ii=indexOf.call(this._minWeekdaysParse,llc);if(ii!==-1){return ii;}ii=indexOf.call(this._weekdaysParse,llc);if(ii!==-1){return ii;}ii=indexOf.call(this._shortWeekdaysParse,llc);return ii!==-1?ii:null;}}}function localeWeekdaysParse(weekdayName,format,strict){var i,mom,regex;if(this._weekdaysParseExact){return handleStrictParse$1.call(this,weekdayName,format,strict);}if(!this._weekdaysParse){this._weekdaysParse=[];this._minWeekdaysParse=[];this._shortWeekdaysParse=[];this._fullWeekdaysParse=[];}for(i=0;i<7;i++){// make the regex if we don't have it already -mom=createUTC([2000,1]).day(i);if(strict&&!this._fullWeekdaysParse[i]){this._fullWeekdaysParse[i]=new RegExp('^'+this.weekdays(mom,'').replace('.','\\.?')+'$','i');this._shortWeekdaysParse[i]=new RegExp('^'+this.weekdaysShort(mom,'').replace('.','\\.?')+'$','i');this._minWeekdaysParse[i]=new RegExp('^'+this.weekdaysMin(mom,'').replace('.','\\.?')+'$','i');}if(!this._weekdaysParse[i]){regex='^'+this.weekdays(mom,'')+'|^'+this.weekdaysShort(mom,'')+'|^'+this.weekdaysMin(mom,'');this._weekdaysParse[i]=new RegExp(regex.replace('.',''),'i');}// test the regex -if(strict&&format==='dddd'&&this._fullWeekdaysParse[i].test(weekdayName)){return i;}else if(strict&&format==='ddd'&&this._shortWeekdaysParse[i].test(weekdayName)){return i;}else if(strict&&format==='dd'&&this._minWeekdaysParse[i].test(weekdayName)){return i;}else if(!strict&&this._weekdaysParse[i].test(weekdayName)){return i;}}}// MOMENTS -function getSetDayOfWeek(input){if(!this.isValid()){return input!=null?this:NaN;}var day=this._isUTC?this._d.getUTCDay():this._d.getDay();if(input!=null){input=parseWeekday(input,this.localeData());return this.add(input-day,'d');}else {return day;}}function getSetLocaleDayOfWeek(input){if(!this.isValid()){return input!=null?this:NaN;}var weekday=(this.day()+7-this.localeData()._week.dow)%7;return input==null?weekday:this.add(input-weekday,'d');}function getSetISODayOfWeek(input){if(!this.isValid()){return input!=null?this:NaN;}// behaves the same as moment#day except -// as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) -// as a setter, sunday should belong to the previous week. -if(input!=null){var weekday=parseIsoWeekday(input,this.localeData());return this.day(this.day()%7?weekday:weekday-7);}else {return this.day()||7;}}function weekdaysRegex(isStrict){if(this._weekdaysParseExact){if(!hasOwnProp(this,'_weekdaysRegex')){computeWeekdaysParse.call(this);}if(isStrict){return this._weekdaysStrictRegex;}else {return this._weekdaysRegex;}}else {if(!hasOwnProp(this,'_weekdaysRegex')){this._weekdaysRegex=defaultWeekdaysRegex;}return this._weekdaysStrictRegex&&isStrict?this._weekdaysStrictRegex:this._weekdaysRegex;}}function weekdaysShortRegex(isStrict){if(this._weekdaysParseExact){if(!hasOwnProp(this,'_weekdaysRegex')){computeWeekdaysParse.call(this);}if(isStrict){return this._weekdaysShortStrictRegex;}else {return this._weekdaysShortRegex;}}else {if(!hasOwnProp(this,'_weekdaysShortRegex')){this._weekdaysShortRegex=defaultWeekdaysShortRegex;}return this._weekdaysShortStrictRegex&&isStrict?this._weekdaysShortStrictRegex:this._weekdaysShortRegex;}}function weekdaysMinRegex(isStrict){if(this._weekdaysParseExact){if(!hasOwnProp(this,'_weekdaysRegex')){computeWeekdaysParse.call(this);}if(isStrict){return this._weekdaysMinStrictRegex;}else {return this._weekdaysMinRegex;}}else {if(!hasOwnProp(this,'_weekdaysMinRegex')){this._weekdaysMinRegex=defaultWeekdaysMinRegex;}return this._weekdaysMinStrictRegex&&isStrict?this._weekdaysMinStrictRegex:this._weekdaysMinRegex;}}function computeWeekdaysParse(){function cmpLenRev(a,b){return b.length-a.length;}var minPieces=[],shortPieces=[],longPieces=[],mixedPieces=[],i,mom,minp,shortp,longp;for(i=0;i<7;i++){// make the regex if we don't have it already -mom=createUTC([2000,1]).day(i);minp=regexEscape(this.weekdaysMin(mom,''));shortp=regexEscape(this.weekdaysShort(mom,''));longp=regexEscape(this.weekdays(mom,''));minPieces.push(minp);shortPieces.push(shortp);longPieces.push(longp);mixedPieces.push(minp);mixedPieces.push(shortp);mixedPieces.push(longp);}// Sorting makes sure if one weekday (or abbr) is a prefix of another it -// will match the longer piece. -minPieces.sort(cmpLenRev);shortPieces.sort(cmpLenRev);longPieces.sort(cmpLenRev);mixedPieces.sort(cmpLenRev);this._weekdaysRegex=new RegExp('^('+mixedPieces.join('|')+')','i');this._weekdaysShortRegex=this._weekdaysRegex;this._weekdaysMinRegex=this._weekdaysRegex;this._weekdaysStrictRegex=new RegExp('^('+longPieces.join('|')+')','i');this._weekdaysShortStrictRegex=new RegExp('^('+shortPieces.join('|')+')','i');this._weekdaysMinStrictRegex=new RegExp('^('+minPieces.join('|')+')','i');}// FORMATTING -function hFormat(){return this.hours()%12||12;}function kFormat(){return this.hours()||24;}addFormatToken('H',['HH',2],0,'hour');addFormatToken('h',['hh',2],0,hFormat);addFormatToken('k',['kk',2],0,kFormat);addFormatToken('hmm',0,0,function(){return ''+hFormat.apply(this)+zeroFill(this.minutes(),2);});addFormatToken('hmmss',0,0,function(){return ''+hFormat.apply(this)+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2);});addFormatToken('Hmm',0,0,function(){return ''+this.hours()+zeroFill(this.minutes(),2);});addFormatToken('Hmmss',0,0,function(){return ''+this.hours()+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2);});function meridiem(token,lowercase){addFormatToken(token,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),lowercase);});}meridiem('a',true);meridiem('A',false);// ALIASES -addUnitAlias('hour','h');// PRIORITY -addUnitPriority('hour',13);// PARSING -function matchMeridiem(isStrict,locale){return locale._meridiemParse;}addRegexToken('a',matchMeridiem);addRegexToken('A',matchMeridiem);addRegexToken('H',match1to2);addRegexToken('h',match1to2);addRegexToken('k',match1to2);addRegexToken('HH',match1to2,match2);addRegexToken('hh',match1to2,match2);addRegexToken('kk',match1to2,match2);addRegexToken('hmm',match3to4);addRegexToken('hmmss',match5to6);addRegexToken('Hmm',match3to4);addRegexToken('Hmmss',match5to6);addParseToken(['H','HH'],HOUR);addParseToken(['k','kk'],function(input,array,config){var kInput=toInt(input);array[HOUR]=kInput===24?0:kInput;});addParseToken(['a','A'],function(input,array,config){config._isPm=config._locale.isPM(input);config._meridiem=input;});addParseToken(['h','hh'],function(input,array,config){array[HOUR]=toInt(input);getParsingFlags(config).bigHour=true;});addParseToken('hmm',function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos));array[MINUTE]=toInt(input.substr(pos));getParsingFlags(config).bigHour=true;});addParseToken('hmmss',function(input,array,config){var pos1=input.length-4,pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1));array[MINUTE]=toInt(input.substr(pos1,2));array[SECOND]=toInt(input.substr(pos2));getParsingFlags(config).bigHour=true;});addParseToken('Hmm',function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos));array[MINUTE]=toInt(input.substr(pos));});addParseToken('Hmmss',function(input,array,config){var pos1=input.length-4,pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1));array[MINUTE]=toInt(input.substr(pos1,2));array[SECOND]=toInt(input.substr(pos2));});// LOCALES -function localeIsPM(input){// IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays -// Using charAt should be more compatible. -return (input+'').toLowerCase().charAt(0)==='p';}var defaultLocaleMeridiemParse=/[ap]\.?m?\.?/i,// Setting the hour should keep the time, because the user explicitly -// specified which hour they want. So trying to maintain the same hour (in -// a new timezone) makes sense. Adding/subtracting hours does not follow -// this rule. -getSetHour=makeGetSet('Hours',true);function localeMeridiem(hours,minutes,isLower){if(hours>11){return isLower?'pm':'PM';}else {return isLower?'am':'AM';}}var baseConfig={calendar:defaultCalendar,longDateFormat:defaultLongDateFormat,invalidDate:defaultInvalidDate,ordinal:defaultOrdinal,dayOfMonthOrdinalParse:defaultDayOfMonthOrdinalParse,relativeTime:defaultRelativeTime,months:defaultLocaleMonths,monthsShort:defaultLocaleMonthsShort,week:defaultLocaleWeek,weekdays:defaultLocaleWeekdays,weekdaysMin:defaultLocaleWeekdaysMin,weekdaysShort:defaultLocaleWeekdaysShort,meridiemParse:defaultLocaleMeridiemParse};// internal storage for locale config files -var locales={},localeFamilies={},globalLocale;function commonPrefix(arr1,arr2){var i,minl=Math.min(arr1.length,arr2.length);for(i=0;i0){locale=loadLocale(split.slice(0,j).join('-'));if(locale){return locale;}if(next&&next.length>=j&&commonPrefix(split,next)>=j-1){//the next array item is better than a shallower substring of this one -break;}j--;}i++;}return globalLocale;}function loadLocale(name){var oldLocale=null,aliasedRequire;// TODO: Find a better way to register and load all the locales in Node -if(locales[name]===undefined&&'object'!=='undefined'&&module&&module.exports){try{oldLocale=globalLocale._abbr;aliasedRequire=commonjsRequire;aliasedRequire('./locale/'+name);getSetGlobalLocale(oldLocale);}catch(e){// mark as not found to avoid repeating expensive file require call causing high CPU -// when trying to find en-US, en_US, en-us for every format call -locales[name]=null;// null means not found -}}return locales[name];}// This function will load locale and then set the global locale. If -// no arguments are passed in, it will simply return the current global -// locale key. -function getSetGlobalLocale(key,values){var data;if(key){if(isUndefined(values)){data=getLocale(key);}else {data=defineLocale(key,values);}if(data){// moment.duration._locale = moment._locale = data; -globalLocale=data;}else {if(typeof console!=='undefined'&&console.warn){//warn user if arguments are passed but the locale could not be set -console.warn('Locale '+key+' not found. Did you forget to load it?');}}}return globalLocale._abbr;}function defineLocale(name,config){if(config!==null){var locale,parentConfig=baseConfig;config.abbr=name;if(locales[name]!=null){deprecateSimple('defineLocaleOverride','use moment.updateLocale(localeName, config) to change '+'an existing locale. moment.defineLocale(localeName, '+'config) should only be used for creating a new locale '+'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');parentConfig=locales[name]._config;}else if(config.parentLocale!=null){if(locales[config.parentLocale]!=null){parentConfig=locales[config.parentLocale]._config;}else {locale=loadLocale(config.parentLocale);if(locale!=null){parentConfig=locale._config;}else {if(!localeFamilies[config.parentLocale]){localeFamilies[config.parentLocale]=[];}localeFamilies[config.parentLocale].push({name:name,config:config});return null;}}}locales[name]=new Locale(mergeConfigs(parentConfig,config));if(localeFamilies[name]){localeFamilies[name].forEach(function(x){defineLocale(x.name,x.config);});}// backwards compat for now: also set the locale -// make sure we set the locale AFTER all child locales have been -// created, so we won't end up with the child locale set. -getSetGlobalLocale(name);return locales[name];}else {// useful for testing -delete locales[name];return null;}}function updateLocale(name,config){if(config!=null){var locale,tmpLocale,parentConfig=baseConfig;if(locales[name]!=null&&locales[name].parentLocale!=null){// Update existing child locale in-place to avoid memory-leaks -locales[name].set(mergeConfigs(locales[name]._config,config));}else {// MERGE -tmpLocale=loadLocale(name);if(tmpLocale!=null){parentConfig=tmpLocale._config;}config=mergeConfigs(parentConfig,config);if(tmpLocale==null){// updateLocale is called for creating a new locale -// Set abbr so it will have a name (getters return -// undefined otherwise). -config.abbr=name;}locale=new Locale(config);locale.parentLocale=locales[name];locales[name]=locale;}// backwards compat for now: also set the locale -getSetGlobalLocale(name);}else {// pass null for config to unupdate, useful for tests -if(locales[name]!=null){if(locales[name].parentLocale!=null){locales[name]=locales[name].parentLocale;if(name===getSetGlobalLocale()){getSetGlobalLocale(name);}}else if(locales[name]!=null){delete locales[name];}}}return locales[name];}// returns locale data -function getLocale(key){var locale;if(key&&key._locale&&key._locale._abbr){key=key._locale._abbr;}if(!key){return globalLocale;}if(!isArray(key)){//short-circuit everything else -locale=loadLocale(key);if(locale){return locale;}key=[key];}return chooseLocale(key);}function listLocales(){return keys(locales);}function checkOverflow(m){var overflow,a=m._a;if(a&&getParsingFlags(m).overflow===-2){overflow=a[MONTH]<0||a[MONTH]>11?MONTH:a[DATE]<1||a[DATE]>daysInMonth(a[YEAR],a[MONTH])?DATE:a[HOUR]<0||a[HOUR]>24||a[HOUR]===24&&(a[MINUTE]!==0||a[SECOND]!==0||a[MILLISECOND]!==0)?HOUR:a[MINUTE]<0||a[MINUTE]>59?MINUTE:a[SECOND]<0||a[SECOND]>59?SECOND:a[MILLISECOND]<0||a[MILLISECOND]>999?MILLISECOND:-1;if(getParsingFlags(m)._overflowDayOfYear&&(overflowDATE)){overflow=DATE;}if(getParsingFlags(m)._overflowWeeks&&overflow===-1){overflow=WEEK;}if(getParsingFlags(m)._overflowWeekday&&overflow===-1){overflow=WEEKDAY;}getParsingFlags(m).overflow=overflow;}return m;}// iso 8601 regex -// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) -var extendedIsoRegex=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,basicIsoRegex=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,tzRegex=/Z|[+-]\d\d(?::?\d\d)?/,isoDates=[['YYYYYY-MM-DD',/[+-]\d{6}-\d\d-\d\d/],['YYYY-MM-DD',/\d{4}-\d\d-\d\d/],['GGGG-[W]WW-E',/\d{4}-W\d\d-\d/],['GGGG-[W]WW',/\d{4}-W\d\d/,false],['YYYY-DDD',/\d{4}-\d{3}/],['YYYY-MM',/\d{4}-\d\d/,false],['YYYYYYMMDD',/[+-]\d{10}/],['YYYYMMDD',/\d{8}/],['GGGG[W]WWE',/\d{4}W\d{3}/],['GGGG[W]WW',/\d{4}W\d{2}/,false],['YYYYDDD',/\d{7}/],['YYYYMM',/\d{6}/,false],['YYYY',/\d{4}/,false]],// iso time formats and regexes -isoTimes=[['HH:mm:ss.SSSS',/\d\d:\d\d:\d\d\.\d+/],['HH:mm:ss,SSSS',/\d\d:\d\d:\d\d,\d+/],['HH:mm:ss',/\d\d:\d\d:\d\d/],['HH:mm',/\d\d:\d\d/],['HHmmss.SSSS',/\d\d\d\d\d\d\.\d+/],['HHmmss,SSSS',/\d\d\d\d\d\d,\d+/],['HHmmss',/\d\d\d\d\d\d/],['HHmm',/\d\d\d\d/],['HH',/\d\d/]],aspNetJsonRegex=/^\/?Date\((-?\d+)/i,// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 -rfc2822=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,obsOffsets={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};// date from iso format -function configFromISO(config){var i,l,string=config._i,match=extendedIsoRegex.exec(string)||basicIsoRegex.exec(string),allowTime,dateFormat,timeFormat,tzFormat;if(match){getParsingFlags(config).iso=true;for(i=0,l=isoDates.length;idaysInYear(yearToUse)||config._dayOfYear===0){getParsingFlags(config)._overflowDayOfYear=true;}date=createUTCDate(yearToUse,0,config._dayOfYear);config._a[MONTH]=date.getUTCMonth();config._a[DATE]=date.getUTCDate();}// Default to current date. -// * if no year, month, day of month are given, default to today -// * if day of month is given, default month and year -// * if month is given, default only year -// * if year is given, don't default anything -for(i=0;i<3&&config._a[i]==null;++i){config._a[i]=input[i]=currentDate[i];}// Zero out whatever was not defaulted, including time -for(;i<7;i++){config._a[i]=input[i]=config._a[i]==null?i===2?1:0:config._a[i];}// Check for 24:00:00.000 -if(config._a[HOUR]===24&&config._a[MINUTE]===0&&config._a[SECOND]===0&&config._a[MILLISECOND]===0){config._nextDay=true;config._a[HOUR]=0;}config._d=(config._useUTC?createUTCDate:createDate).apply(null,input);expectedWeekday=config._useUTC?config._d.getUTCDay():config._d.getDay();// Apply timezone offset from input. The actual utcOffset can be changed -// with parseZone. -if(config._tzm!=null){config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm);}if(config._nextDay){config._a[HOUR]=24;}// check for mismatching day of week -if(config._w&&typeof config._w.d!=='undefined'&&config._w.d!==expectedWeekday){getParsingFlags(config).weekdayMismatch=true;}}function dayOfYearFromWeekInfo(config){var w,weekYear,week,weekday,dow,doy,temp,weekdayOverflow,curWeek;w=config._w;if(w.GG!=null||w.W!=null||w.E!=null){dow=1;doy=4;// TODO: We need to take the current isoWeekYear, but that depends on -// how we interpret now (local, utc, fixed offset). So create -// a now version of current config (take local/utc/offset flags, and -// create now). -weekYear=defaults(w.GG,config._a[YEAR],weekOfYear(createLocal(),1,4).year);week=defaults(w.W,1);weekday=defaults(w.E,1);if(weekday<1||weekday>7){weekdayOverflow=true;}}else {dow=config._locale._week.dow;doy=config._locale._week.doy;curWeek=weekOfYear(createLocal(),dow,doy);weekYear=defaults(w.gg,config._a[YEAR],curWeek.year);// Default to current week. -week=defaults(w.w,curWeek.week);if(w.d!=null){// weekday -- low day numbers are considered next week -weekday=w.d;if(weekday<0||weekday>6){weekdayOverflow=true;}}else if(w.e!=null){// local weekday -- counting starts from beginning of week -weekday=w.e+dow;if(w.e<0||w.e>6){weekdayOverflow=true;}}else {// default to beginning of week -weekday=dow;}}if(week<1||week>weeksInYear(weekYear,dow,doy)){getParsingFlags(config)._overflowWeeks=true;}else if(weekdayOverflow!=null){getParsingFlags(config)._overflowWeekday=true;}else {temp=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy);config._a[YEAR]=temp.year;config._dayOfYear=temp.dayOfYear;}}// constant that refers to the ISO standard -hooks.ISO_8601=function(){};// constant that refers to the RFC 2822 form -hooks.RFC_2822=function(){};// date from string and format string -function configFromStringAndFormat(config){// TODO: Move this to another part of the creation flow to prevent circular deps -if(config._f===hooks.ISO_8601){configFromISO(config);return;}if(config._f===hooks.RFC_2822){configFromRFC2822(config);return;}config._a=[];getParsingFlags(config).empty=true;// This array is used to make a Date, either with `new Date` or `Date.UTC` -var string=''+config._i,i,parsedInput,tokens,token,skipped,stringLength=string.length,totalParsedInputLength=0,era;tokens=expandFormat(config._f,config._locale).match(formattingTokens)||[];for(i=0;i0){getParsingFlags(config).unusedInput.push(skipped);}string=string.slice(string.indexOf(parsedInput)+parsedInput.length);totalParsedInputLength+=parsedInput.length;}// don't parse if it's not a known token -if(formatTokenFunctions[token]){if(parsedInput){getParsingFlags(config).empty=false;}else {getParsingFlags(config).unusedTokens.push(token);}addTimeToArrayFromToken(token,parsedInput,config);}else if(config._strict&&!parsedInput){getParsingFlags(config).unusedTokens.push(token);}}// add remaining unparsed input length to the string -getParsingFlags(config).charsLeftOver=stringLength-totalParsedInputLength;if(string.length>0){getParsingFlags(config).unusedInput.push(string);}// clear _12h flag if hour is <= 12 -if(config._a[HOUR]<=12&&getParsingFlags(config).bigHour===true&&config._a[HOUR]>0){getParsingFlags(config).bigHour=undefined;}getParsingFlags(config).parsedDateParts=config._a.slice(0);getParsingFlags(config).meridiem=config._meridiem;// handle meridiem -config._a[HOUR]=meridiemFixWrap(config._locale,config._a[HOUR],config._meridiem);// handle era -era=getParsingFlags(config).era;if(era!==null){config._a[YEAR]=config._locale.erasConvertYear(era,config._a[YEAR]);}configFromArray(config);checkOverflow(config);}function meridiemFixWrap(locale,hour,meridiem){var isPm;if(meridiem==null){// nothing to do -return hour;}if(locale.meridiemHour!=null){return locale.meridiemHour(hour,meridiem);}else if(locale.isPM!=null){// Fallback -isPm=locale.isPM(meridiem);if(isPm&&hour<12){hour+=12;}if(!isPm&&hour===12){hour=0;}return hour;}else {// this is not supposed to happen -return hour;}}// date from string and array of format strings -function configFromStringAndArray(config){var tempConfig,bestMoment,scoreToBeat,i,currentScore,validFormatFound,bestFormatIsValid=false;if(config._f.length===0){getParsingFlags(config).invalidFormat=true;config._d=new Date(NaN);return;}for(i=0;ithis?this:other;}else {return createInvalid();}});// Pick a moment m from moments so that m[fn](other) is true for all -// other. This relies on the function fn to be transitive. -// -// moments should either be an array of moment objects or an array, whose -// first element is an array of moment objects. -function pickBy(fn,moments){var res,i;if(moments.length===1&&isArray(moments[0])){moments=moments[0];}if(!moments.length){return createLocal();}res=moments[0];for(i=1;i ['10', '00'] -// '-1530' > ['-15', '30'] -var chunkOffset=/([\+\-]|\d\d)/gi;function offsetFromString(matcher,string){var matches=(string||'').match(matcher),chunk,parts,minutes;if(matches===null){return null;}chunk=matches[matches.length-1]||[];parts=(chunk+'').match(chunkOffset)||['-',0,0];minutes=+(parts[1]*60)+toInt(parts[2]);return minutes===0?0:parts[0]==='+'?minutes:-minutes;}// Return a moment from input, that is local/utc/zone equivalent to model. -function cloneWithOffset(input,model){var res,diff;if(model._isUTC){res=model.clone();diff=(isMoment(input)||isDate(input)?input.valueOf():createLocal(input).valueOf())-res.valueOf();// Use low-level api, because this fn is low-level api. -res._d.setTime(res._d.valueOf()+diff);hooks.updateOffset(res,false);return res;}else {return createLocal(input).local();}}function getDateOffset(m){// On Firefox.24 Date#getTimezoneOffset returns a floating point. -// https://github.com/moment/moment/pull/1871 -return -Math.round(m._d.getTimezoneOffset());}// HOOKS -// This function will be called whenever a moment is mutated. -// It is intended to keep the offset in sync with the timezone. -hooks.updateOffset=function(){};// MOMENTS -// keepLocalTime = true means only change the timezone, without -// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> -// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset -// +0200, so we adjust the time as needed, to be valid. -// -// Keeping the time actually adds/subtracts (one hour) -// from the actual represented time. That is why we call updateOffset -// a second time. In case it wants us to change the offset again -// _changeInProgress == true case, then we have to adjust, because -// there is no such time in the given timezone. -function getSetOffset(input,keepLocalTime,keepMinutes){var offset=this._offset||0,localAdjust;if(!this.isValid()){return input!=null?this:NaN;}if(input!=null){if(typeof input==='string'){input=offsetFromString(matchShortOffset,input);if(input===null){return this;}}else if(Math.abs(input)<16&&!keepMinutes){input=input*60;}if(!this._isUTC&&keepLocalTime){localAdjust=getDateOffset(this);}this._offset=input;this._isUTC=true;if(localAdjust!=null){this.add(localAdjust,'m');}if(offset!==input){if(!keepLocalTime||this._changeInProgress){addSubtract(this,createDuration(input-offset,'m'),1,false);}else if(!this._changeInProgress){this._changeInProgress=true;hooks.updateOffset(this,true);this._changeInProgress=null;}}return this;}else {return this._isUTC?offset:getDateOffset(this);}}function getSetZone(input,keepLocalTime){if(input!=null){if(typeof input!=='string'){input=-input;}this.utcOffset(input,keepLocalTime);return this;}else {return -this.utcOffset();}}function setOffsetToUTC(keepLocalTime){return this.utcOffset(0,keepLocalTime);}function setOffsetToLocal(keepLocalTime){if(this._isUTC){this.utcOffset(0,keepLocalTime);this._isUTC=false;if(keepLocalTime){this.subtract(getDateOffset(this),'m');}}return this;}function setOffsetToParsedOffset(){if(this._tzm!=null){this.utcOffset(this._tzm,false,true);}else if(typeof this._i==='string'){var tZone=offsetFromString(matchOffset,this._i);if(tZone!=null){this.utcOffset(tZone);}else {this.utcOffset(0,true);}}return this;}function hasAlignedHourOffset(input){if(!this.isValid()){return false;}input=input?createLocal(input).utcOffset():0;return (this.utcOffset()-input)%60===0;}function isDaylightSavingTime(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset();}function isDaylightSavingTimeShifted(){if(!isUndefined(this._isDSTShifted)){return this._isDSTShifted;}var c={},other;copyConfig(c,this);c=prepareConfig(c);if(c._a){other=c._isUTC?createUTC(c._a):createLocal(c._a);this._isDSTShifted=this.isValid()&&compareArrays(c._a,other.toArray())>0;}else {this._isDSTShifted=false;}return this._isDSTShifted;}function isLocal(){return this.isValid()?!this._isUTC:false;}function isUtcOffset(){return this.isValid()?this._isUTC:false;}function isUtc(){return this.isValid()?this._isUTC&&this._offset===0:false;}// ASP.NET json date format regex -var aspNetRegex=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html -// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere -// and further modified to allow for strings containing both week and day -isoRegex=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function createDuration(input,key){var duration=input,// matching against regexp is expensive, do it on demand -match=null,sign,ret,diffRes;if(isDuration(input)){duration={ms:input._milliseconds,d:input._days,M:input._months};}else if(isNumber(input)||!isNaN(+input)){duration={};if(key){duration[key]=+input;}else {duration.milliseconds=+input;}}else if(match=aspNetRegex.exec(input)){sign=match[1]==='-'?-1:1;duration={y:0,d:toInt(match[DATE])*sign,h:toInt(match[HOUR])*sign,m:toInt(match[MINUTE])*sign,s:toInt(match[SECOND])*sign,ms:toInt(absRound(match[MILLISECOND]*1000))*sign// the millisecond decimal point is included in the match -};}else if(match=isoRegex.exec(input)){sign=match[1]==='-'?-1:1;duration={y:parseIso(match[2],sign),M:parseIso(match[3],sign),w:parseIso(match[4],sign),d:parseIso(match[5],sign),h:parseIso(match[6],sign),m:parseIso(match[7],sign),s:parseIso(match[8],sign)};}else if(duration==null){// checks for null or undefined -duration={};}else if(typeof duration==='object'&&('from'in duration||'to'in duration)){diffRes=momentsDifference(createLocal(duration.from),createLocal(duration.to));duration={};duration.ms=diffRes.milliseconds;duration.M=diffRes.months;}ret=new Duration(duration);if(isDuration(input)&&hasOwnProp(input,'_locale')){ret._locale=input._locale;}if(isDuration(input)&&hasOwnProp(input,'_isValid')){ret._isValid=input._isValid;}return ret;}createDuration.fn=Duration.prototype;createDuration.invalid=createInvalid$1;function parseIso(inp,sign){// We'd normally use ~~inp for this, but unfortunately it also -// converts floats to ints. -// inp may be undefined, so careful calling replace on it. -var res=inp&&parseFloat(inp.replace(',','.'));// apply sign while we're at it -return (isNaN(res)?0:res)*sign;}function positiveMomentsDifference(base,other){var res={};res.months=other.month()-base.month()+(other.year()-base.year())*12;if(base.clone().add(res.months,'M').isAfter(other)){--res.months;}res.milliseconds=+other-+base.clone().add(res.months,'M');return res;}function momentsDifference(base,other){var res;if(!(base.isValid()&&other.isValid())){return {milliseconds:0,months:0};}other=cloneWithOffset(other,base);if(base.isBefore(other)){res=positiveMomentsDifference(base,other);}else {res=positiveMomentsDifference(other,base);res.milliseconds=-res.milliseconds;res.months=-res.months;}return res;}// TODO: remove 'name' arg after deprecation is removed -function createAdder(direction,name){return function(val,period){var dur,tmp;//invert the arguments, but complain about it -if(period!==null&&!isNaN(+period)){deprecateSimple(name,'moment().'+name+'(period, number) is deprecated. Please use moment().'+name+'(number, period). '+'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');tmp=val;val=period;period=tmp;}dur=createDuration(val,period);addSubtract(this,dur,direction);return this;};}function addSubtract(mom,duration,isAdding,updateOffset){var milliseconds=duration._milliseconds,days=absRound(duration._days),months=absRound(duration._months);if(!mom.isValid()){// No op -return;}updateOffset=updateOffset==null?true:updateOffset;if(months){setMonth(mom,get(mom,'Month')+months*isAdding);}if(days){set$1(mom,'Date',get(mom,'Date')+days*isAdding);}if(milliseconds){mom._d.setTime(mom._d.valueOf()+milliseconds*isAdding);}if(updateOffset){hooks.updateOffset(mom,days||months);}}var add=createAdder(1,'add'),subtract=createAdder(-1,'subtract');function isString(input){return typeof input==='string'||input instanceof String;}// type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined -function isMomentInput(input){return isMoment(input)||isDate(input)||isString(input)||isNumber(input)||isNumberOrStringArray(input)||isMomentInputObject(input)||input===null||input===undefined;}function isMomentInputObject(input){var objectTest=isObject(input)&&!isObjectEmpty(input),propertyTest=false,properties=['years','year','y','months','month','M','days','day','d','dates','date','D','hours','hour','h','minutes','minute','m','seconds','second','s','milliseconds','millisecond','ms'],i,property;for(i=0;ilocalInput.valueOf();}else {return localInput.valueOf()9999){return formatMoment(m,utc?'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]':'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');}if(isFunction(Date.prototype.toISOString)){// native implementation is ~50x faster, use it when we can -if(utc){return this.toDate().toISOString();}else {return new Date(this.valueOf()+this.utcOffset()*60*1000).toISOString().replace('Z',formatMoment(m,'Z'));}}return formatMoment(m,utc?'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]':'YYYY-MM-DD[T]HH:mm:ss.SSSZ');}/** - * Return a human readable representation of a moment that can - * also be evaluated to get a new moment which is the same - * - * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects - */function inspect(){if(!this.isValid()){return 'moment.invalid(/* '+this._i+' */)';}var func='moment',zone='',prefix,year,datetime,suffix;if(!this.isLocal()){func=this.utcOffset()===0?'moment.utc':'moment.parseZone';zone='Z';}prefix='['+func+'("]';year=0<=this.year()&&this.year()<=9999?'YYYY':'YYYYYY';datetime='-MM-DD[T]HH:mm:ss.SSS';suffix=zone+'[")]';return this.format(prefix+year+datetime+suffix);}function format(inputString){if(!inputString){inputString=this.isUtc()?hooks.defaultFormatUtc:hooks.defaultFormat;}var output=formatMoment(this,inputString);return this.localeData().postformat(output);}function from(time,withoutSuffix){if(this.isValid()&&(isMoment(time)&&time.isValid()||createLocal(time).isValid())){return createDuration({to:this,from:time}).locale(this.locale()).humanize(!withoutSuffix);}else {return this.localeData().invalidDate();}}function fromNow(withoutSuffix){return this.from(createLocal(),withoutSuffix);}function to(time,withoutSuffix){if(this.isValid()&&(isMoment(time)&&time.isValid()||createLocal(time).isValid())){return createDuration({from:this,to:time}).locale(this.locale()).humanize(!withoutSuffix);}else {return this.localeData().invalidDate();}}function toNow(withoutSuffix){return this.to(createLocal(),withoutSuffix);}// If passed a locale key, it will set the locale for this -// instance. Otherwise, it will return the locale configuration -// variables for this instance. -function locale(key){var newLocaleData;if(key===undefined){return this._locale._abbr;}else {newLocaleData=getLocale(key);if(newLocaleData!=null){this._locale=newLocaleData;}return this;}}var lang=deprecate('moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',function(key){if(key===undefined){return this.localeData();}else {return this.locale(key);}});function localeData(){return this._locale;}var MS_PER_SECOND=1000,MS_PER_MINUTE=60*MS_PER_SECOND,MS_PER_HOUR=60*MS_PER_MINUTE,MS_PER_400_YEARS=(365*400+97)*24*MS_PER_HOUR;// actual modulo - handles negative numbers (for dates before 1970): -function mod$1(dividend,divisor){return (dividend%divisor+divisor)%divisor;}function localStartOfDate(y,m,d){// the date constructor remaps years 0-99 to 1900-1999 -if(y<100&&y>=0){// preserve leap years using a full 400 year cycle, then reset -return new Date(y+400,m,d)-MS_PER_400_YEARS;}else {return new Date(y,m,d).valueOf();}}function utcStartOfDate(y,m,d){// Date.UTC remaps years 0-99 to 1900-1999 -if(y<100&&y>=0){// preserve leap years using a full 400 year cycle, then reset -return Date.UTC(y+400,m,d)-MS_PER_400_YEARS;}else {return Date.UTC(y,m,d);}}function startOf(units){var time,startOfDate;units=normalizeUnits(units);if(units===undefined||units==='millisecond'||!this.isValid()){return this;}startOfDate=this._isUTC?utcStartOfDate:localStartOfDate;switch(units){case'year':time=startOfDate(this.year(),0,1);break;case'quarter':time=startOfDate(this.year(),this.month()-this.month()%3,1);break;case'month':time=startOfDate(this.year(),this.month(),1);break;case'week':time=startOfDate(this.year(),this.month(),this.date()-this.weekday());break;case'isoWeek':time=startOfDate(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case'day':case'date':time=startOfDate(this.year(),this.month(),this.date());break;case'hour':time=this._d.valueOf();time-=mod$1(time+(this._isUTC?0:this.utcOffset()*MS_PER_MINUTE),MS_PER_HOUR);break;case'minute':time=this._d.valueOf();time-=mod$1(time,MS_PER_MINUTE);break;case'second':time=this._d.valueOf();time-=mod$1(time,MS_PER_SECOND);break;}this._d.setTime(time);hooks.updateOffset(this,true);return this;}function endOf(units){var time,startOfDate;units=normalizeUnits(units);if(units===undefined||units==='millisecond'||!this.isValid()){return this;}startOfDate=this._isUTC?utcStartOfDate:localStartOfDate;switch(units){case'year':time=startOfDate(this.year()+1,0,1)-1;break;case'quarter':time=startOfDate(this.year(),this.month()-this.month()%3+3,1)-1;break;case'month':time=startOfDate(this.year(),this.month()+1,1)-1;break;case'week':time=startOfDate(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case'isoWeek':time=startOfDate(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case'day':case'date':time=startOfDate(this.year(),this.month(),this.date()+1)-1;break;case'hour':time=this._d.valueOf();time+=MS_PER_HOUR-mod$1(time+(this._isUTC?0:this.utcOffset()*MS_PER_MINUTE),MS_PER_HOUR)-1;break;case'minute':time=this._d.valueOf();time+=MS_PER_MINUTE-mod$1(time,MS_PER_MINUTE)-1;break;case'second':time=this._d.valueOf();time+=MS_PER_SECOND-mod$1(time,MS_PER_SECOND)-1;break;}this._d.setTime(time);hooks.updateOffset(this,true);return this;}function valueOf(){return this._d.valueOf()-(this._offset||0)*60000;}function unix(){return Math.floor(this.valueOf()/1000);}function toDate(){return new Date(this.valueOf());}function toArray(){var m=this;return [m.year(),m.month(),m.date(),m.hour(),m.minute(),m.second(),m.millisecond()];}function toObject(){var m=this;return {years:m.year(),months:m.month(),date:m.date(),hours:m.hours(),minutes:m.minutes(),seconds:m.seconds(),milliseconds:m.milliseconds()};}function toJSON(){// new Date(NaN).toJSON() === null -return this.isValid()?this.toISOString():null;}function isValid$2(){return isValid(this);}function parsingFlags(){return extend({},getParsingFlags(this));}function invalidAt(){return getParsingFlags(this).overflow;}function creationData(){return {input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict};}addFormatToken('N',0,0,'eraAbbr');addFormatToken('NN',0,0,'eraAbbr');addFormatToken('NNN',0,0,'eraAbbr');addFormatToken('NNNN',0,0,'eraName');addFormatToken('NNNNN',0,0,'eraNarrow');addFormatToken('y',['y',1],'yo','eraYear');addFormatToken('y',['yy',2],0,'eraYear');addFormatToken('y',['yyy',3],0,'eraYear');addFormatToken('y',['yyyy',4],0,'eraYear');addRegexToken('N',matchEraAbbr);addRegexToken('NN',matchEraAbbr);addRegexToken('NNN',matchEraAbbr);addRegexToken('NNNN',matchEraName);addRegexToken('NNNNN',matchEraNarrow);addParseToken(['N','NN','NNN','NNNN','NNNNN'],function(input,array,config,token){var era=config._locale.erasParse(input,token,config._strict);if(era){getParsingFlags(config).era=era;}else {getParsingFlags(config).invalidEra=input;}});addRegexToken('y',matchUnsigned);addRegexToken('yy',matchUnsigned);addRegexToken('yyy',matchUnsigned);addRegexToken('yyyy',matchUnsigned);addRegexToken('yo',matchEraYearOrdinal);addParseToken(['y','yy','yyy','yyyy'],YEAR);addParseToken(['yo'],function(input,array,config,token){var match;if(config._locale._eraYearOrdinalRegex){match=input.match(config._locale._eraYearOrdinalRegex);}if(config._locale.eraYearOrdinalParse){array[YEAR]=config._locale.eraYearOrdinalParse(input,match);}else {array[YEAR]=parseInt(input,10);}});function localeEras(m,format){var i,l,date,eras=this._eras||getLocale('en')._eras;for(i=0,l=eras.length;i=0){return eras[i];}}}function localeErasConvertYear(era,year){var dir=era.since<=era.until?+1:-1;if(year===undefined){return hooks(era.since).year();}else {return hooks(era.since).year()+(year-era.offset)*dir;}}function getEraName(){var i,l,val,eras=this.localeData().eras();for(i=0,l=eras.length;iweeksTarget){week=weeksTarget;}return setWeekAll.call(this,input,week,weekday,dow,doy);}}function setWeekAll(weekYear,week,weekday,dow,doy){var dayOfYearData=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy),date=createUTCDate(dayOfYearData.year,0,dayOfYearData.dayOfYear);this.year(date.getUTCFullYear());this.month(date.getUTCMonth());this.date(date.getUTCDate());return this;}// FORMATTING -addFormatToken('Q',0,'Qo','quarter');// ALIASES -addUnitAlias('quarter','Q');// PRIORITY -addUnitPriority('quarter',7);// PARSING -addRegexToken('Q',match1);addParseToken('Q',function(input,array){array[MONTH]=(toInt(input)-1)*3;});// MOMENTS -function getSetQuarter(input){return input==null?Math.ceil((this.month()+1)/3):this.month((input-1)*3+this.month()%3);}// FORMATTING -addFormatToken('D',['DD',2],'Do','date');// ALIASES -addUnitAlias('date','D');// PRIORITY -addUnitPriority('date',9);// PARSING -addRegexToken('D',match1to2);addRegexToken('DD',match1to2,match2);addRegexToken('Do',function(isStrict,locale){// TODO: Remove "ordinalParse" fallback in next major release. -return isStrict?locale._dayOfMonthOrdinalParse||locale._ordinalParse:locale._dayOfMonthOrdinalParseLenient;});addParseToken(['D','DD'],DATE);addParseToken('Do',function(input,array){array[DATE]=toInt(input.match(match1to2)[0]);});// MOMENTS -var getSetDayOfMonth=makeGetSet('Date',true);// FORMATTING -addFormatToken('DDD',['DDDD',3],'DDDo','dayOfYear');// ALIASES -addUnitAlias('dayOfYear','DDD');// PRIORITY -addUnitPriority('dayOfYear',4);// PARSING -addRegexToken('DDD',match1to3);addRegexToken('DDDD',match3);addParseToken(['DDD','DDDD'],function(input,array,config){config._dayOfYear=toInt(input);});// HELPERS -// MOMENTS -function getSetDayOfYear(input){var dayOfYear=Math.round((this.clone().startOf('day')-this.clone().startOf('year'))/864e5)+1;return input==null?dayOfYear:this.add(input-dayOfYear,'d');}// FORMATTING -addFormatToken('m',['mm',2],0,'minute');// ALIASES -addUnitAlias('minute','m');// PRIORITY -addUnitPriority('minute',14);// PARSING -addRegexToken('m',match1to2);addRegexToken('mm',match1to2,match2);addParseToken(['m','mm'],MINUTE);// MOMENTS -var getSetMinute=makeGetSet('Minutes',false);// FORMATTING -addFormatToken('s',['ss',2],0,'second');// ALIASES -addUnitAlias('second','s');// PRIORITY -addUnitPriority('second',15);// PARSING -addRegexToken('s',match1to2);addRegexToken('ss',match1to2,match2);addParseToken(['s','ss'],SECOND);// MOMENTS -var getSetSecond=makeGetSet('Seconds',false);// FORMATTING -addFormatToken('S',0,0,function(){return ~~(this.millisecond()/100);});addFormatToken(0,['SS',2],0,function(){return ~~(this.millisecond()/10);});addFormatToken(0,['SSS',3],0,'millisecond');addFormatToken(0,['SSSS',4],0,function(){return this.millisecond()*10;});addFormatToken(0,['SSSSS',5],0,function(){return this.millisecond()*100;});addFormatToken(0,['SSSSSS',6],0,function(){return this.millisecond()*1000;});addFormatToken(0,['SSSSSSS',7],0,function(){return this.millisecond()*10000;});addFormatToken(0,['SSSSSSSS',8],0,function(){return this.millisecond()*100000;});addFormatToken(0,['SSSSSSSSS',9],0,function(){return this.millisecond()*1000000;});// ALIASES -addUnitAlias('millisecond','ms');// PRIORITY -addUnitPriority('millisecond',16);// PARSING -addRegexToken('S',match1to3,match1);addRegexToken('SS',match1to3,match2);addRegexToken('SSS',match1to3,match3);var token,getSetMillisecond;for(token='SSSS';token.length<=9;token+='S'){addRegexToken(token,matchUnsigned);}function parseMs(input,array){array[MILLISECOND]=toInt(('0.'+input)*1000);}for(token='S';token.length<=9;token+='S'){addParseToken(token,parseMs);}getSetMillisecond=makeGetSet('Milliseconds',false);// FORMATTING -addFormatToken('z',0,0,'zoneAbbr');addFormatToken('zz',0,0,'zoneName');// MOMENTS -function getZoneAbbr(){return this._isUTC?'UTC':'';}function getZoneName(){return this._isUTC?'Coordinated Universal Time':'';}var proto=Moment.prototype;proto.add=add;proto.calendar=calendar$1;proto.clone=clone;proto.diff=diff;proto.endOf=endOf;proto.format=format;proto.from=from;proto.fromNow=fromNow;proto.to=to;proto.toNow=toNow;proto.get=stringGet;proto.invalidAt=invalidAt;proto.isAfter=isAfter;proto.isBefore=isBefore;proto.isBetween=isBetween;proto.isSame=isSame;proto.isSameOrAfter=isSameOrAfter;proto.isSameOrBefore=isSameOrBefore;proto.isValid=isValid$2;proto.lang=lang;proto.locale=locale;proto.localeData=localeData;proto.max=prototypeMax;proto.min=prototypeMin;proto.parsingFlags=parsingFlags;proto.set=stringSet;proto.startOf=startOf;proto.subtract=subtract;proto.toArray=toArray;proto.toObject=toObject;proto.toDate=toDate;proto.toISOString=toISOString;proto.inspect=inspect;if(typeof Symbol!=='undefined'&&Symbol.for!=null){proto[Symbol.for('nodejs.util.inspect.custom')]=function(){return 'Moment<'+this.format()+'>';};}proto.toJSON=toJSON;proto.toString=toString;proto.unix=unix;proto.valueOf=valueOf;proto.creationData=creationData;proto.eraName=getEraName;proto.eraNarrow=getEraNarrow;proto.eraAbbr=getEraAbbr;proto.eraYear=getEraYear;proto.year=getSetYear;proto.isLeapYear=getIsLeapYear;proto.weekYear=getSetWeekYear;proto.isoWeekYear=getSetISOWeekYear;proto.quarter=proto.quarters=getSetQuarter;proto.month=getSetMonth;proto.daysInMonth=getDaysInMonth;proto.week=proto.weeks=getSetWeek;proto.isoWeek=proto.isoWeeks=getSetISOWeek;proto.weeksInYear=getWeeksInYear;proto.weeksInWeekYear=getWeeksInWeekYear;proto.isoWeeksInYear=getISOWeeksInYear;proto.isoWeeksInISOWeekYear=getISOWeeksInISOWeekYear;proto.date=getSetDayOfMonth;proto.day=proto.days=getSetDayOfWeek;proto.weekday=getSetLocaleDayOfWeek;proto.isoWeekday=getSetISODayOfWeek;proto.dayOfYear=getSetDayOfYear;proto.hour=proto.hours=getSetHour;proto.minute=proto.minutes=getSetMinute;proto.second=proto.seconds=getSetSecond;proto.millisecond=proto.milliseconds=getSetMillisecond;proto.utcOffset=getSetOffset;proto.utc=setOffsetToUTC;proto.local=setOffsetToLocal;proto.parseZone=setOffsetToParsedOffset;proto.hasAlignedHourOffset=hasAlignedHourOffset;proto.isDST=isDaylightSavingTime;proto.isLocal=isLocal;proto.isUtcOffset=isUtcOffset;proto.isUtc=isUtc;proto.isUTC=isUtc;proto.zoneAbbr=getZoneAbbr;proto.zoneName=getZoneName;proto.dates=deprecate('dates accessor is deprecated. Use date instead.',getSetDayOfMonth);proto.months=deprecate('months accessor is deprecated. Use month instead',getSetMonth);proto.years=deprecate('years accessor is deprecated. Use year instead',getSetYear);proto.zone=deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',getSetZone);proto.isDSTShifted=deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',isDaylightSavingTimeShifted);function createUnix(input){return createLocal(input*1000);}function createInZone(){return createLocal.apply(null,arguments).parseZone();}function preParsePostFormat(string){return string;}var proto$1=Locale.prototype;proto$1.calendar=calendar;proto$1.longDateFormat=longDateFormat;proto$1.invalidDate=invalidDate;proto$1.ordinal=ordinal;proto$1.preparse=preParsePostFormat;proto$1.postformat=preParsePostFormat;proto$1.relativeTime=relativeTime;proto$1.pastFuture=pastFuture;proto$1.set=set;proto$1.eras=localeEras;proto$1.erasParse=localeErasParse;proto$1.erasConvertYear=localeErasConvertYear;proto$1.erasAbbrRegex=erasAbbrRegex;proto$1.erasNameRegex=erasNameRegex;proto$1.erasNarrowRegex=erasNarrowRegex;proto$1.months=localeMonths;proto$1.monthsShort=localeMonthsShort;proto$1.monthsParse=localeMonthsParse;proto$1.monthsRegex=monthsRegex;proto$1.monthsShortRegex=monthsShortRegex;proto$1.week=localeWeek;proto$1.firstDayOfYear=localeFirstDayOfYear;proto$1.firstDayOfWeek=localeFirstDayOfWeek;proto$1.weekdays=localeWeekdays;proto$1.weekdaysMin=localeWeekdaysMin;proto$1.weekdaysShort=localeWeekdaysShort;proto$1.weekdaysParse=localeWeekdaysParse;proto$1.weekdaysRegex=weekdaysRegex;proto$1.weekdaysShortRegex=weekdaysShortRegex;proto$1.weekdaysMinRegex=weekdaysMinRegex;proto$1.isPM=localeIsPM;proto$1.meridiem=localeMeridiem;function get$1(format,index,field,setter){var locale=getLocale(),utc=createUTC().set(setter,index);return locale[field](utc,format);}function listMonthsImpl(format,index,field){if(isNumber(format)){index=format;format=undefined;}format=format||'';if(index!=null){return get$1(format,index,field,'month');}var i,out=[];for(i=0;i<12;i++){out[i]=get$1(format,i,field,'month');}return out;}// () -// (5) -// (fmt, 5) -// (fmt) -// (true) -// (true, 5) -// (true, fmt, 5) -// (true, fmt) -function listWeekdaysImpl(localeSorted,format,index,field){if(typeof localeSorted==='boolean'){if(isNumber(format)){index=format;format=undefined;}format=format||'';}else {format=localeSorted;index=format;localeSorted=false;if(isNumber(format)){index=format;format=undefined;}format=format||'';}var locale=getLocale(),shift=localeSorted?locale._week.dow:0,i,out=[];if(index!=null){return get$1(format,(index+shift)%7,field,'day');}for(i=0;i<7;i++){out[i]=get$1(format,(i+shift)%7,field,'day');}return out;}function listMonths(format,index){return listMonthsImpl(format,index,'months');}function listMonthsShort(format,index){return listMonthsImpl(format,index,'monthsShort');}function listWeekdays(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,'weekdays');}function listWeekdaysShort(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,'weekdaysShort');}function listWeekdaysMin(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,'weekdaysMin');}getSetGlobalLocale('en',{eras:[{since:'0001-01-01',until:+Infinity,offset:1,name:'Anno Domini',narrow:'AD',abbr:'AD'},{since:'0000-12-31',until:-Infinity,offset:1,name:'Before Christ',narrow:'BC',abbr:'BC'}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(number){var b=number%10,output=toInt(number%100/10)===1?'th':b===1?'st':b===2?'nd':b===3?'rd':'th';return number+output;}});// Side effect imports -hooks.lang=deprecate('moment.lang is deprecated. Use moment.locale instead.',getSetGlobalLocale);hooks.langData=deprecate('moment.langData is deprecated. Use moment.localeData instead.',getLocale);var mathAbs=Math.abs;function abs(){var data=this._data;this._milliseconds=mathAbs(this._milliseconds);this._days=mathAbs(this._days);this._months=mathAbs(this._months);data.milliseconds=mathAbs(data.milliseconds);data.seconds=mathAbs(data.seconds);data.minutes=mathAbs(data.minutes);data.hours=mathAbs(data.hours);data.months=mathAbs(data.months);data.years=mathAbs(data.years);return this;}function addSubtract$1(duration,input,value,direction){var other=createDuration(input,value);duration._milliseconds+=direction*other._milliseconds;duration._days+=direction*other._days;duration._months+=direction*other._months;return duration._bubble();}// supports only 2.0-style add(1, 's') or add(duration) -function add$1(input,value){return addSubtract$1(this,input,value,1);}// supports only 2.0-style subtract(1, 's') or subtract(duration) -function subtract$1(input,value){return addSubtract$1(this,input,value,-1);}function absCeil(number){if(number<0){return Math.floor(number);}else {return Math.ceil(number);}}function bubble(){var milliseconds=this._milliseconds,days=this._days,months=this._months,data=this._data,seconds,minutes,hours,years,monthsFromDays;// if we have a mix of positive and negative values, bubble down first -// check: https://github.com/moment/moment/issues/2166 -if(!(milliseconds>=0&&days>=0&&months>=0||milliseconds<=0&&days<=0&&months<=0)){milliseconds+=absCeil(monthsToDays(months)+days)*864e5;days=0;months=0;}// The following code bubbles up values, see the tests for -// examples of what that means. -data.milliseconds=milliseconds%1000;seconds=absFloor(milliseconds/1000);data.seconds=seconds%60;minutes=absFloor(seconds/60);data.minutes=minutes%60;hours=absFloor(minutes/60);data.hours=hours%24;days+=absFloor(hours/24);// convert days to months -monthsFromDays=absFloor(daysToMonths(days));months+=monthsFromDays;days-=absCeil(monthsToDays(monthsFromDays));// 12 months -> 1 year -years=absFloor(months/12);months%=12;data.days=days;data.months=months;data.years=years;return this;}function daysToMonths(days){// 400 years have 146097 days (taking into account leap year rules) -// 400 years have 12 months === 4800 -return days*4800/146097;}function monthsToDays(months){// the reverse of daysToMonths -return months*146097/4800;}function as(units){if(!this.isValid()){return NaN;}var days,months,milliseconds=this._milliseconds;units=normalizeUnits(units);if(units==='month'||units==='quarter'||units==='year'){days=this._days+milliseconds/864e5;months=this._months+daysToMonths(days);switch(units){case'month':return months;case'quarter':return months/3;case'year':return months/12;}}else {// handle milliseconds separately because of floating point math errors (issue #1867) -days=this._days+Math.round(monthsToDays(this._months));switch(units){case'week':return days/7+milliseconds/6048e5;case'day':return days+milliseconds/864e5;case'hour':return days*24+milliseconds/36e5;case'minute':return days*1440+milliseconds/6e4;case'second':return days*86400+milliseconds/1000;// Math.floor prevents floating point math errors here -case'millisecond':return Math.floor(days*864e5)+milliseconds;default:throw new Error('Unknown unit '+units);}}}// TODO: Use this.as('ms')? -function valueOf$1(){if(!this.isValid()){return NaN;}return this._milliseconds+this._days*864e5+this._months%12*2592e6+toInt(this._months/12)*31536e6;}function makeAs(alias){return function(){return this.as(alias);};}var asMilliseconds=makeAs('ms'),asSeconds=makeAs('s'),asMinutes=makeAs('m'),asHours=makeAs('h'),asDays=makeAs('d'),asWeeks=makeAs('w'),asMonths=makeAs('M'),asQuarters=makeAs('Q'),asYears=makeAs('y');function clone$1(){return createDuration(this);}function get$2(units){units=normalizeUnits(units);return this.isValid()?this[units+'s']():NaN;}function makeGetter(name){return function(){return this.isValid()?this._data[name]:NaN;};}var milliseconds=makeGetter('milliseconds'),seconds=makeGetter('seconds'),minutes=makeGetter('minutes'),hours=makeGetter('hours'),days=makeGetter('days'),months=makeGetter('months'),years=makeGetter('years');function weeks(){return absFloor(this.days()/7);}var round=Math.round,thresholds={ss:44,// a few seconds to seconds -s:45,// seconds to minute -m:45,// minutes to hour -h:22,// hours to day -d:26,// days to month/week -w:null,// weeks to month -M:11// months to year -};// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize -function substituteTimeAgo(string,number,withoutSuffix,isFuture,locale){return locale.relativeTime(number||1,!!withoutSuffix,string,isFuture);}function relativeTime$1(posNegDuration,withoutSuffix,thresholds,locale){var duration=createDuration(posNegDuration).abs(),seconds=round(duration.as('s')),minutes=round(duration.as('m')),hours=round(duration.as('h')),days=round(duration.as('d')),months=round(duration.as('M')),weeks=round(duration.as('w')),years=round(duration.as('y')),a=seconds<=thresholds.ss&&['s',seconds]||seconds0;a[4]=locale;return substituteTimeAgo.apply(null,a);}// This function allows you to set the rounding function for relative time strings -function getSetRelativeTimeRounding(roundingFunction){if(roundingFunction===undefined){return round;}if(typeof roundingFunction==='function'){round=roundingFunction;return true;}return false;}// This function allows you to set a threshold for relative time strings -function getSetRelativeTimeThreshold(threshold,limit){if(thresholds[threshold]===undefined){return false;}if(limit===undefined){return thresholds[threshold];}thresholds[threshold]=limit;if(threshold==='s'){thresholds.ss=limit-1;}return true;}function humanize(argWithSuffix,argThresholds){if(!this.isValid()){return this.localeData().invalidDate();}var withSuffix=false,th=thresholds,locale,output;if(typeof argWithSuffix==='object'){argThresholds=argWithSuffix;argWithSuffix=false;}if(typeof argWithSuffix==='boolean'){withSuffix=argWithSuffix;}if(typeof argThresholds==='object'){th=Object.assign({},thresholds,argThresholds);if(argThresholds.s!=null&&argThresholds.ss==null){th.ss=argThresholds.s-1;}}locale=this.localeData();output=relativeTime$1(this,!withSuffix,th,locale);if(withSuffix){output=locale.pastFuture(+this,output);}return locale.postformat(output);}var abs$1=Math.abs;function sign(x){return (x>0)-(x<0)||+x;}function toISOString$1(){// for ISO strings we do not use the normal bubbling rules: -// * milliseconds bubble up until they become hours -// * days do not bubble at all -// * months bubble up until they become years -// This is because there is no context-free conversion between hours and days -// (think of clock changes) -// and also not between days and months (28-31 days per month) -if(!this.isValid()){return this.localeData().invalidDate();}var seconds=abs$1(this._milliseconds)/1000,days=abs$1(this._days),months=abs$1(this._months),minutes,hours,years,s,total=this.asSeconds(),totalSign,ymSign,daysSign,hmsSign;if(!total){// this is the same as C#'s (Noda) and python (isodate)... -// but not other JS (goog.date) -return 'P0D';}// 3600 seconds -> 60 minutes -> 1 hour -minutes=absFloor(seconds/60);hours=absFloor(minutes/60);seconds%=60;minutes%=60;// 12 months -> 1 year -years=absFloor(months/12);months%=12;// inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js -s=seconds?seconds.toFixed(3).replace(/\.?0+$/,''):'';totalSign=total<0?'-':'';ymSign=sign(this._months)!==sign(total)?'-':'';daysSign=sign(this._days)!==sign(total)?'-':'';hmsSign=sign(this._milliseconds)!==sign(total)?'-':'';return totalSign+'P'+(years?ymSign+years+'Y':'')+(months?ymSign+months+'M':'')+(days?daysSign+days+'D':'')+(hours||minutes||seconds?'T':'')+(hours?hmsSign+hours+'H':'')+(minutes?hmsSign+minutes+'M':'')+(seconds?hmsSign+s+'S':'');}var proto$2=Duration.prototype;proto$2.isValid=isValid$1;proto$2.abs=abs;proto$2.add=add$1;proto$2.subtract=subtract$1;proto$2.as=as;proto$2.asMilliseconds=asMilliseconds;proto$2.asSeconds=asSeconds;proto$2.asMinutes=asMinutes;proto$2.asHours=asHours;proto$2.asDays=asDays;proto$2.asWeeks=asWeeks;proto$2.asMonths=asMonths;proto$2.asQuarters=asQuarters;proto$2.asYears=asYears;proto$2.valueOf=valueOf$1;proto$2._bubble=bubble;proto$2.clone=clone$1;proto$2.get=get$2;proto$2.milliseconds=milliseconds;proto$2.seconds=seconds;proto$2.minutes=minutes;proto$2.hours=hours;proto$2.days=days;proto$2.weeks=weeks;proto$2.months=months;proto$2.years=years;proto$2.humanize=humanize;proto$2.toISOString=toISOString$1;proto$2.toString=toISOString$1;proto$2.toJSON=toISOString$1;proto$2.locale=locale;proto$2.localeData=localeData;proto$2.toIsoString=deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',toISOString$1);proto$2.lang=lang;// FORMATTING -addFormatToken('X',0,0,'unix');addFormatToken('x',0,0,'valueOf');// PARSING -addRegexToken('x',matchSigned);addRegexToken('X',matchTimestamp);addParseToken('X',function(input,array,config){config._d=new Date(parseFloat(input)*1000);});addParseToken('x',function(input,array,config){config._d=new Date(toInt(input));});//! moment.js -hooks.version='2.29.1';setHookCallback(createLocal);hooks.fn=proto;hooks.min=min;hooks.max=max;hooks.now=now;hooks.utc=createUTC;hooks.unix=createUnix;hooks.months=listMonths;hooks.isDate=isDate;hooks.locale=getSetGlobalLocale;hooks.invalid=createInvalid;hooks.duration=createDuration;hooks.isMoment=isMoment;hooks.weekdays=listWeekdays;hooks.parseZone=createInZone;hooks.localeData=getLocale;hooks.isDuration=isDuration;hooks.monthsShort=listMonthsShort;hooks.weekdaysMin=listWeekdaysMin;hooks.defineLocale=defineLocale;hooks.updateLocale=updateLocale;hooks.locales=listLocales;hooks.weekdaysShort=listWeekdaysShort;hooks.normalizeUnits=normalizeUnits;hooks.relativeTimeRounding=getSetRelativeTimeRounding;hooks.relativeTimeThreshold=getSetRelativeTimeThreshold;hooks.calendarFormat=getCalendarFormat;hooks.prototype=proto;// currently HTML5 input type only supports 24-hour formats -hooks.HTML5_FMT={DATETIME_LOCAL:'YYYY-MM-DDTHH:mm',// -DATETIME_LOCAL_SECONDS:'YYYY-MM-DDTHH:mm:ss',// -DATETIME_LOCAL_MS:'YYYY-MM-DDTHH:mm:ss.SSS',// -DATE:'YYYY-MM-DD',// -TIME:'HH:mm',// -TIME_SECONDS:'HH:mm:ss',// -TIME_MS:'HH:mm:ss.SSS',// -WEEK:'GGGG-[W]WW',// -MONTH:'YYYY-MM'// -};return hooks;}); +var react_development = createCommonjsModule(function (module, exports) { +{(function(){var _assign=objectAssign;// TODO: this is special because it gets imported during build. +var ReactVersion='17.0.2';// ATTENTION +// When adding new symbols to this file, +// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols' +// The Symbol used to tag the ReactElement-like types. If there is no native Symbol +// nor polyfill, then a plain number is used for performance. +var REACT_ELEMENT_TYPE=0xeac7;var REACT_PORTAL_TYPE=0xeaca;exports.Fragment=0xeacb;exports.StrictMode=0xeacc;exports.Profiler=0xead2;var REACT_PROVIDER_TYPE=0xeacd;var REACT_CONTEXT_TYPE=0xeace;var REACT_FORWARD_REF_TYPE=0xead0;exports.Suspense=0xead1;var REACT_SUSPENSE_LIST_TYPE=0xead8;var REACT_MEMO_TYPE=0xead3;var REACT_LAZY_TYPE=0xead4;var REACT_BLOCK_TYPE=0xead9;var REACT_SERVER_BLOCK_TYPE=0xeada;var REACT_FUNDAMENTAL_TYPE=0xead5;var REACT_SCOPE_TYPE=0xead7;var REACT_OPAQUE_ID_TYPE=0xeae0;var REACT_DEBUG_TRACING_MODE_TYPE=0xeae1;var REACT_OFFSCREEN_TYPE=0xeae2;var REACT_LEGACY_HIDDEN_TYPE=0xeae3;if(typeof Symbol==='function'&&Symbol.for){var symbolFor=Symbol.for;REACT_ELEMENT_TYPE=symbolFor('react.element');REACT_PORTAL_TYPE=symbolFor('react.portal');exports.Fragment=symbolFor('react.fragment');exports.StrictMode=symbolFor('react.strict_mode');exports.Profiler=symbolFor('react.profiler');REACT_PROVIDER_TYPE=symbolFor('react.provider');REACT_CONTEXT_TYPE=symbolFor('react.context');REACT_FORWARD_REF_TYPE=symbolFor('react.forward_ref');exports.Suspense=symbolFor('react.suspense');REACT_SUSPENSE_LIST_TYPE=symbolFor('react.suspense_list');REACT_MEMO_TYPE=symbolFor('react.memo');REACT_LAZY_TYPE=symbolFor('react.lazy');REACT_BLOCK_TYPE=symbolFor('react.block');REACT_SERVER_BLOCK_TYPE=symbolFor('react.server.block');REACT_FUNDAMENTAL_TYPE=symbolFor('react.fundamental');REACT_SCOPE_TYPE=symbolFor('react.scope');REACT_OPAQUE_ID_TYPE=symbolFor('react.opaque.id');REACT_DEBUG_TRACING_MODE_TYPE=symbolFor('react.debug_trace_mode');REACT_OFFSCREEN_TYPE=symbolFor('react.offscreen');REACT_LEGACY_HIDDEN_TYPE=symbolFor('react.legacy_hidden');}var MAYBE_ITERATOR_SYMBOL=typeof Symbol==='function'&&Symbol.iterator;var FAUX_ITERATOR_SYMBOL='@@iterator';function getIteratorFn(maybeIterable){if(maybeIterable===null||typeof maybeIterable!=='object'){return null;}var maybeIterator=MAYBE_ITERATOR_SYMBOL&&maybeIterable[MAYBE_ITERATOR_SYMBOL]||maybeIterable[FAUX_ITERATOR_SYMBOL];if(typeof maybeIterator==='function'){return maybeIterator;}return null;}/** + * Keeps track of the current dispatcher. + */var ReactCurrentDispatcher={/** + * @internal + * @type {ReactComponent} + */current:null};/** + * Keeps track of the current batch's configuration such as how long an update + * should suspend for if it needs to. + */var ReactCurrentBatchConfig={transition:0};/** + * Keeps track of the current owner. + * + * The current owner is the component who should own any components that are + * currently being constructed. + */var ReactCurrentOwner={/** + * @internal + * @type {ReactComponent} + */current:null};var ReactDebugCurrentFrame={};var currentExtraStackFrame=null;function setExtraStackFrame(stack){{currentExtraStackFrame=stack;}}{ReactDebugCurrentFrame.setExtraStackFrame=function(stack){{currentExtraStackFrame=stack;}};// Stack implementation injected by the current renderer. +ReactDebugCurrentFrame.getCurrentStack=null;ReactDebugCurrentFrame.getStackAddendum=function(){var stack='';// Add an extra top frame while an element is being validated +if(currentExtraStackFrame){stack+=currentExtraStackFrame;}// Delegate to the injected renderer-specific implementation +var impl=ReactDebugCurrentFrame.getCurrentStack;if(impl){stack+=impl()||'';}return stack;};}/** + * Used by act() to track whether you're inside an act() scope. + */var IsSomeRendererActing={current:false};var ReactSharedInternals={ReactCurrentDispatcher:ReactCurrentDispatcher,ReactCurrentBatchConfig:ReactCurrentBatchConfig,ReactCurrentOwner:ReactCurrentOwner,IsSomeRendererActing:IsSomeRendererActing,// Used by renderers to avoid bundling object-assign twice in UMD bundles: +assign:_assign};{ReactSharedInternals.ReactDebugCurrentFrame=ReactDebugCurrentFrame;}// by calls to these methods by a Babel plugin. +// +// In PROD (or in packages without access to React internals), +// they are left as they are instead. +function warn(format){{for(var _len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key];}printWarning('warn',format,args);}}function error(format){{for(var _len2=arguments.length,args=new Array(_len2>1?_len2-1:0),_key2=1;_key2<_len2;_key2++){args[_key2-1]=arguments[_key2];}printWarning('error',format,args);}}function printWarning(level,format,args){// When changing this logic, you might want to also +// update consoleWithStackDev.www.js as well. +{var ReactDebugCurrentFrame=ReactSharedInternals.ReactDebugCurrentFrame;var stack=ReactDebugCurrentFrame.getStackAddendum();if(stack!==''){format+='%s';args=args.concat([stack]);}var argsWithFormat=args.map(function(item){return ''+item;});// Careful: RN currently depends on this prefix +argsWithFormat.unshift('Warning: '+format);// We intentionally don't use spread (or .apply) directly because it +// breaks IE9: https://github.com/facebook/react/issues/13610 +// eslint-disable-next-line react-internal/no-production-logging +Function.prototype.apply.call(console[level],console,argsWithFormat);}}var didWarnStateUpdateForUnmountedComponent={};function warnNoop(publicInstance,callerName){{var _constructor=publicInstance.constructor;var componentName=_constructor&&(_constructor.displayName||_constructor.name)||'ReactClass';var warningKey=componentName+"."+callerName;if(didWarnStateUpdateForUnmountedComponent[warningKey]){return;}error("Can't call %s on a component that is not yet mounted. "+'This is a no-op, but it might indicate a bug in your application. '+'Instead, assign to `this.state` directly or define a `state = {};` '+'class property with the desired state in the %s component.',callerName,componentName);didWarnStateUpdateForUnmountedComponent[warningKey]=true;}}/** + * This is the abstract API for an update queue. + */var ReactNoopUpdateQueue={/** + * Checks whether or not this composite component is mounted. + * @param {ReactClass} publicInstance The instance we want to test. + * @return {boolean} True if mounted, false otherwise. + * @protected + * @final + */isMounted:function(publicInstance){return false;},/** + * Forces an update. This should only be invoked when it is known with + * certainty that we are **not** in a DOM transaction. + * + * You may want to call this when you know that some deeper aspect of the + * component's state has changed but `setState` was not called. + * + * This will not invoke `shouldComponentUpdate`, but it will invoke + * `componentWillUpdate` and `componentDidUpdate`. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {?function} callback Called after component is updated. + * @param {?string} callerName name of the calling function in the public API. + * @internal + */enqueueForceUpdate:function(publicInstance,callback,callerName){warnNoop(publicInstance,'forceUpdate');},/** + * Replaces all of the state. Always use this or `setState` to mutate state. + * You should treat `this.state` as immutable. + * + * There is no guarantee that `this.state` will be immediately updated, so + * accessing `this.state` after calling this method may return the old value. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object} completeState Next state. + * @param {?function} callback Called after component is updated. + * @param {?string} callerName name of the calling function in the public API. + * @internal + */enqueueReplaceState:function(publicInstance,completeState,callback,callerName){warnNoop(publicInstance,'replaceState');},/** + * Sets a subset of the state. This only exists because _pendingState is + * internal. This provides a merging strategy that is not available to deep + * properties which is confusing. TODO: Expose pendingState or don't use it + * during the merge. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object} partialState Next partial state to be merged with state. + * @param {?function} callback Called after component is updated. + * @param {?string} Name of the calling function in the public API. + * @internal + */enqueueSetState:function(publicInstance,partialState,callback,callerName){warnNoop(publicInstance,'setState');}};var emptyObject={};{Object.freeze(emptyObject);}/** + * Base class helpers for the updating state of a component. + */function Component(props,context,updater){this.props=props;this.context=context;// If a component has string refs, we will assign a different object later. +this.refs=emptyObject;// We initialize the default updater but the real one gets injected by the +// renderer. +this.updater=updater||ReactNoopUpdateQueue;}Component.prototype.isReactComponent={};/** + * Sets a subset of the state. Always use this to mutate + * state. You should treat `this.state` as immutable. + * + * There is no guarantee that `this.state` will be immediately updated, so + * accessing `this.state` after calling this method may return the old value. + * + * There is no guarantee that calls to `setState` will run synchronously, + * as they may eventually be batched together. You can provide an optional + * callback that will be executed when the call to setState is actually + * completed. + * + * When a function is provided to setState, it will be called at some point in + * the future (not synchronously). It will be called with the up to date + * component arguments (state, props, context). These values can be different + * from this.* because your function may be called after receiveProps but before + * shouldComponentUpdate, and this new state, props, and context will not yet be + * assigned to this. + * + * @param {object|function} partialState Next partial state or function to + * produce next partial state to be merged with current state. + * @param {?function} callback Called after state is updated. + * @final + * @protected + */Component.prototype.setState=function(partialState,callback){if(!(typeof partialState==='object'||typeof partialState==='function'||partialState==null)){{throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");}}this.updater.enqueueSetState(this,partialState,callback,'setState');};/** + * Forces an update. This should only be invoked when it is known with + * certainty that we are **not** in a DOM transaction. + * + * You may want to call this when you know that some deeper aspect of the + * component's state has changed but `setState` was not called. + * + * This will not invoke `shouldComponentUpdate`, but it will invoke + * `componentWillUpdate` and `componentDidUpdate`. + * + * @param {?function} callback Called after update is complete. + * @final + * @protected + */Component.prototype.forceUpdate=function(callback){this.updater.enqueueForceUpdate(this,callback,'forceUpdate');};/** + * Deprecated APIs. These APIs used to exist on classic React classes but since + * we would like to deprecate them, we're not going to move them over to this + * modern base class. Instead, we define a getter that warns if it's accessed. + */{var deprecatedAPIs={isMounted:['isMounted','Instead, make sure to clean up subscriptions and pending requests in '+'componentWillUnmount to prevent memory leaks.'],replaceState:['replaceState','Refactor your code to use setState instead (see '+'https://github.com/facebook/react/issues/3236).']};var defineDeprecationWarning=function(methodName,info){Object.defineProperty(Component.prototype,methodName,{get:function(){warn('%s(...) is deprecated in plain JavaScript React classes. %s',info[0],info[1]);return undefined;}});};for(var fnName in deprecatedAPIs){if(deprecatedAPIs.hasOwnProperty(fnName)){defineDeprecationWarning(fnName,deprecatedAPIs[fnName]);}}}function ComponentDummy(){}ComponentDummy.prototype=Component.prototype;/** + * Convenience component with default shallow equality check for sCU. + */function PureComponent(props,context,updater){this.props=props;this.context=context;// If a component has string refs, we will assign a different object later. +this.refs=emptyObject;this.updater=updater||ReactNoopUpdateQueue;}var pureComponentPrototype=PureComponent.prototype=new ComponentDummy();pureComponentPrototype.constructor=PureComponent;// Avoid an extra prototype jump for these methods. +_assign(pureComponentPrototype,Component.prototype);pureComponentPrototype.isPureReactComponent=true;// an immutable object with a single mutable value +function createRef(){var refObject={current:null};{Object.seal(refObject);}return refObject;}function getWrappedName(outerType,innerType,wrapperName){var functionName=innerType.displayName||innerType.name||'';return outerType.displayName||(functionName!==''?wrapperName+"("+functionName+")":wrapperName);}function getContextName(type){return type.displayName||'Context';}function getComponentName(type){if(type==null){// Host root, text node or just invalid type. +return null;}{if(typeof type.tag==='number'){error('Received an unexpected object in getComponentName(). '+'This is likely a bug in React. Please file an issue.');}}if(typeof type==='function'){return type.displayName||type.name||null;}if(typeof type==='string'){return type;}switch(type){case exports.Fragment:return 'Fragment';case REACT_PORTAL_TYPE:return 'Portal';case exports.Profiler:return 'Profiler';case exports.StrictMode:return 'StrictMode';case exports.Suspense:return 'Suspense';case REACT_SUSPENSE_LIST_TYPE:return 'SuspenseList';}if(typeof type==='object'){switch(type.$$typeof){case REACT_CONTEXT_TYPE:var context=type;return getContextName(context)+'.Consumer';case REACT_PROVIDER_TYPE:var provider=type;return getContextName(provider._context)+'.Provider';case REACT_FORWARD_REF_TYPE:return getWrappedName(type,type.render,'ForwardRef');case REACT_MEMO_TYPE:return getComponentName(type.type);case REACT_BLOCK_TYPE:return getComponentName(type._render);case REACT_LAZY_TYPE:{var lazyComponent=type;var payload=lazyComponent._payload;var init=lazyComponent._init;try{return getComponentName(init(payload));}catch(x){return null;}}}}return null;}var hasOwnProperty=Object.prototype.hasOwnProperty;var RESERVED_PROPS={key:true,ref:true,__self:true,__source:true};var specialPropKeyWarningShown,specialPropRefWarningShown,didWarnAboutStringRefs;{didWarnAboutStringRefs={};}function hasValidRef(config){{if(hasOwnProperty.call(config,'ref')){var getter=Object.getOwnPropertyDescriptor(config,'ref').get;if(getter&&getter.isReactWarning){return false;}}}return config.ref!==undefined;}function hasValidKey(config){{if(hasOwnProperty.call(config,'key')){var getter=Object.getOwnPropertyDescriptor(config,'key').get;if(getter&&getter.isReactWarning){return false;}}}return config.key!==undefined;}function defineKeyPropWarningGetter(props,displayName){var warnAboutAccessingKey=function(){{if(!specialPropKeyWarningShown){specialPropKeyWarningShown=true;error('%s: `key` is not a prop. Trying to access it will result '+'in `undefined` being returned. If you need to access the same '+'value within the child component, you should pass it as a different '+'prop. (https://reactjs.org/link/special-props)',displayName);}}};warnAboutAccessingKey.isReactWarning=true;Object.defineProperty(props,'key',{get:warnAboutAccessingKey,configurable:true});}function defineRefPropWarningGetter(props,displayName){var warnAboutAccessingRef=function(){{if(!specialPropRefWarningShown){specialPropRefWarningShown=true;error('%s: `ref` is not a prop. Trying to access it will result '+'in `undefined` being returned. If you need to access the same '+'value within the child component, you should pass it as a different '+'prop. (https://reactjs.org/link/special-props)',displayName);}}};warnAboutAccessingRef.isReactWarning=true;Object.defineProperty(props,'ref',{get:warnAboutAccessingRef,configurable:true});}function warnIfStringRefCannotBeAutoConverted(config){{if(typeof config.ref==='string'&&ReactCurrentOwner.current&&config.__self&&ReactCurrentOwner.current.stateNode!==config.__self){var componentName=getComponentName(ReactCurrentOwner.current.type);if(!didWarnAboutStringRefs[componentName]){error('Component "%s" contains the string ref "%s". '+'Support for string refs will be removed in a future major release. '+'This case cannot be automatically converted to an arrow function. '+'We ask you to manually fix this case by using useRef() or createRef() instead. '+'Learn more about using refs safely here: '+'https://reactjs.org/link/strict-mode-string-ref',componentName,config.ref);didWarnAboutStringRefs[componentName]=true;}}}}/** + * Factory method to create a new React element. This no longer adheres to + * the class pattern, so do not use new to call it. Also, instanceof check + * will not work. Instead test $$typeof field against Symbol.for('react.element') to check + * if something is a React Element. + * + * @param {*} type + * @param {*} props + * @param {*} key + * @param {string|object} ref + * @param {*} owner + * @param {*} self A *temporary* helper to detect places where `this` is + * different from the `owner` when React.createElement is called, so that we + * can warn. We want to get rid of owner and replace string `ref`s with arrow + * functions, and as long as `this` and owner are the same, there will be no + * change in behavior. + * @param {*} source An annotation object (added by a transpiler or otherwise) + * indicating filename, line number, and/or other information. + * @internal + */var ReactElement=function(type,key,ref,self,source,owner,props){var element={// This tag allows us to uniquely identify this as a React Element +$$typeof:REACT_ELEMENT_TYPE,// Built-in properties that belong on the element +type:type,key:key,ref:ref,props:props,// Record the component responsible for creating this element. +_owner:owner};{// The validation flag is currently mutative. We put it on +// an external backing store so that we can freeze the whole object. +// This can be replaced with a WeakMap once they are implemented in +// commonly used development environments. +element._store={};// To make comparing ReactElements easier for testing purposes, we make +// the validation flag non-enumerable (where possible, which should +// include every environment we run tests in), so the test framework +// ignores it. +Object.defineProperty(element._store,'validated',{configurable:false,enumerable:false,writable:true,value:false});// self and source are DEV only properties. +Object.defineProperty(element,'_self',{configurable:false,enumerable:false,writable:false,value:self});// Two elements created in two different places should be considered +// equal for testing purposes and therefore we hide it from enumeration. +Object.defineProperty(element,'_source',{configurable:false,enumerable:false,writable:false,value:source});if(Object.freeze){Object.freeze(element.props);Object.freeze(element);}}return element;};/** + * Create and return a new ReactElement of the given type. + * See https://reactjs.org/docs/react-api.html#createelement + */function createElement(type,config,children){var propName;// Reserved names are extracted +var props={};var key=null;var ref=null;var self=null;var source=null;if(config!=null){if(hasValidRef(config)){ref=config.ref;{warnIfStringRefCannotBeAutoConverted(config);}}if(hasValidKey(config)){key=''+config.key;}self=config.__self===undefined?null:config.__self;source=config.__source===undefined?null:config.__source;// Remaining properties are added to a new props object +for(propName in config){if(hasOwnProperty.call(config,propName)&&!RESERVED_PROPS.hasOwnProperty(propName)){props[propName]=config[propName];}}}// Children can be more than one argument, and those are transferred onto +// the newly allocated props object. +var childrenLength=arguments.length-2;if(childrenLength===1){props.children=children;}else if(childrenLength>1){var childArray=Array(childrenLength);for(var i=0;i1){var childArray=Array(childrenLength);for(var i=0;i is not supported and will be removed in '+'a future major release. Did you mean to render instead?');}return context.Provider;},set:function(_Provider){context.Provider=_Provider;}},_currentValue:{get:function(){return context._currentValue;},set:function(_currentValue){context._currentValue=_currentValue;}},_currentValue2:{get:function(){return context._currentValue2;},set:function(_currentValue2){context._currentValue2=_currentValue2;}},_threadCount:{get:function(){return context._threadCount;},set:function(_threadCount){context._threadCount=_threadCount;}},Consumer:{get:function(){if(!hasWarnedAboutUsingNestedContextConsumers){hasWarnedAboutUsingNestedContextConsumers=true;error('Rendering is not supported and will be removed in '+'a future major release. Did you mean to render instead?');}return context.Consumer;}},displayName:{get:function(){return context.displayName;},set:function(displayName){if(!hasWarnedAboutDisplayNameOnConsumer){warn('Setting `displayName` on Context.Consumer has no effect. '+"You should set it directly on the context with Context.displayName = '%s'.",displayName);hasWarnedAboutDisplayNameOnConsumer=true;}}}});// $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty +context.Consumer=Consumer;}{context._currentRenderer=null;context._currentRenderer2=null;}return context;}var Uninitialized=-1;var Pending=0;var Resolved=1;var Rejected=2;function lazyInitializer(payload){if(payload._status===Uninitialized){var ctor=payload._result;var thenable=ctor();// Transition to the next state. +var pending=payload;pending._status=Pending;pending._result=thenable;thenable.then(function(moduleObject){if(payload._status===Pending){var defaultExport=moduleObject.default;{if(defaultExport===undefined){error('lazy: Expected the result of a dynamic import() call. '+'Instead received: %s\n\nYour code should look like: \n '+// Break up imports to avoid accidentally parsing them as dependencies. +'const MyComponent = lazy(() => imp'+"ort('./MyComponent'))",moduleObject);}}// Transition to the next state. +var resolved=payload;resolved._status=Resolved;resolved._result=defaultExport;}},function(error){if(payload._status===Pending){// Transition to the next state. +var rejected=payload;rejected._status=Rejected;rejected._result=error;}});}if(payload._status===Resolved){return payload._result;}else {throw payload._result;}}function lazy(ctor){var payload={// We use these fields to store the result. +_status:-1,_result:ctor};var lazyType={$$typeof:REACT_LAZY_TYPE,_payload:payload,_init:lazyInitializer};{// In production, this would just set it on the object. +var defaultProps;var propTypes;// $FlowFixMe +Object.defineProperties(lazyType,{defaultProps:{configurable:true,get:function(){return defaultProps;},set:function(newDefaultProps){error('React.lazy(...): It is not supported to assign `defaultProps` to '+'a lazy component import. Either specify them where the component '+'is defined, or create a wrapping component around it.');defaultProps=newDefaultProps;// Match production behavior more closely: +// $FlowFixMe +Object.defineProperty(lazyType,'defaultProps',{enumerable:true});}},propTypes:{configurable:true,get:function(){return propTypes;},set:function(newPropTypes){error('React.lazy(...): It is not supported to assign `propTypes` to '+'a lazy component import. Either specify them where the component '+'is defined, or create a wrapping component around it.');propTypes=newPropTypes;// Match production behavior more closely: +// $FlowFixMe +Object.defineProperty(lazyType,'propTypes',{enumerable:true});}}});}return lazyType;}function forwardRef(render){{if(render!=null&&render.$$typeof===REACT_MEMO_TYPE){error('forwardRef requires a render function but received a `memo` '+'component. Instead of forwardRef(memo(...)), use '+'memo(forwardRef(...)).');}else if(typeof render!=='function'){error('forwardRef requires a render function but was given %s.',render===null?'null':typeof render);}else {if(render.length!==0&&render.length!==2){error('forwardRef render functions accept exactly two parameters: props and ref. %s',render.length===1?'Did you forget to use the ref parameter?':'Any additional parameter will be undefined.');}}if(render!=null){if(render.defaultProps!=null||render.propTypes!=null){error('forwardRef render functions do not support propTypes or defaultProps. '+'Did you accidentally pass a React component?');}}}var elementType={$$typeof:REACT_FORWARD_REF_TYPE,render:render};{var ownName;Object.defineProperty(elementType,'displayName',{enumerable:false,configurable:true,get:function(){return ownName;},set:function(name){ownName=name;if(render.displayName==null){render.displayName=name;}}});}return elementType;}// Filter certain DOM attributes (e.g. src, href) if their values are empty strings. +var enableScopeAPI=false;// Experimental Create Event Handle API. +function isValidElementType(type){if(typeof type==='string'||typeof type==='function'){return true;}// Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill). +if(type===exports.Fragment||type===exports.Profiler||type===REACT_DEBUG_TRACING_MODE_TYPE||type===exports.StrictMode||type===exports.Suspense||type===REACT_SUSPENSE_LIST_TYPE||type===REACT_LEGACY_HIDDEN_TYPE||enableScopeAPI){return true;}if(typeof type==='object'&&type!==null){if(type.$$typeof===REACT_LAZY_TYPE||type.$$typeof===REACT_MEMO_TYPE||type.$$typeof===REACT_PROVIDER_TYPE||type.$$typeof===REACT_CONTEXT_TYPE||type.$$typeof===REACT_FORWARD_REF_TYPE||type.$$typeof===REACT_FUNDAMENTAL_TYPE||type.$$typeof===REACT_BLOCK_TYPE||type[0]===REACT_SERVER_BLOCK_TYPE){return true;}}return false;}function memo(type,compare){{if(!isValidElementType(type)){error('memo: The first argument must be a component. Instead '+'received: %s',type===null?'null':typeof type);}}var elementType={$$typeof:REACT_MEMO_TYPE,type:type,compare:compare===undefined?null:compare};{var ownName;Object.defineProperty(elementType,'displayName',{enumerable:false,configurable:true,get:function(){return ownName;},set:function(name){ownName=name;if(type.displayName==null){type.displayName=name;}}});}return elementType;}function resolveDispatcher(){var dispatcher=ReactCurrentDispatcher.current;if(!(dispatcher!==null)){{throw Error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.");}}return dispatcher;}function useContext(Context,unstable_observedBits){var dispatcher=resolveDispatcher();{if(unstable_observedBits!==undefined){error('useContext() second argument is reserved for future '+'use in React. Passing it is not supported. '+'You passed: %s.%s',unstable_observedBits,typeof unstable_observedBits==='number'&&Array.isArray(arguments[2])?'\n\nDid you call array.map(useContext)? '+'Calling Hooks inside a loop is not supported. '+'Learn more at https://reactjs.org/link/rules-of-hooks':'');}// TODO: add a more generic warning for invalid values. +if(Context._context!==undefined){var realContext=Context._context;// Don't deduplicate because this legitimately causes bugs +// and nobody should be using this in existing code. +if(realContext.Consumer===Context){error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be '+'removed in a future major release. Did you mean to call useContext(Context) instead?');}else if(realContext.Provider===Context){error('Calling useContext(Context.Provider) is not supported. '+'Did you mean to call useContext(Context) instead?');}}}return dispatcher.useContext(Context,unstable_observedBits);}function useState(initialState){var dispatcher=resolveDispatcher();return dispatcher.useState(initialState);}function useReducer(reducer,initialArg,init){var dispatcher=resolveDispatcher();return dispatcher.useReducer(reducer,initialArg,init);}function useRef(initialValue){var dispatcher=resolveDispatcher();return dispatcher.useRef(initialValue);}function useEffect(create,deps){var dispatcher=resolveDispatcher();return dispatcher.useEffect(create,deps);}function useLayoutEffect(create,deps){var dispatcher=resolveDispatcher();return dispatcher.useLayoutEffect(create,deps);}function useCallback(callback,deps){var dispatcher=resolveDispatcher();return dispatcher.useCallback(callback,deps);}function useMemo(create,deps){var dispatcher=resolveDispatcher();return dispatcher.useMemo(create,deps);}function useImperativeHandle(ref,create,deps){var dispatcher=resolveDispatcher();return dispatcher.useImperativeHandle(ref,create,deps);}function useDebugValue(value,formatterFn){{var dispatcher=resolveDispatcher();return dispatcher.useDebugValue(value,formatterFn);}}// Helpers to patch console.logs to avoid logging during side-effect free +// replaying on render function. This currently only patches the object +// lazily which won't cover if the log function was extracted eagerly. +// We could also eagerly patch the method. +var disabledDepth=0;var prevLog;var prevInfo;var prevWarn;var prevError;var prevGroup;var prevGroupCollapsed;var prevGroupEnd;function disabledLog(){}disabledLog.__reactDisabledLog=true;function disableLogs(){{if(disabledDepth===0){/* eslint-disable react-internal/no-production-logging */prevLog=console.log;prevInfo=console.info;prevWarn=console.warn;prevError=console.error;prevGroup=console.group;prevGroupCollapsed=console.groupCollapsed;prevGroupEnd=console.groupEnd;// https://github.com/facebook/react/issues/19099 +var props={configurable:true,enumerable:true,value:disabledLog,writable:true};// $FlowFixMe Flow thinks console is immutable. +Object.defineProperties(console,{info:props,log:props,warn:props,error:props,group:props,groupCollapsed:props,groupEnd:props});/* eslint-enable react-internal/no-production-logging */}disabledDepth++;}}function reenableLogs(){{disabledDepth--;if(disabledDepth===0){/* eslint-disable react-internal/no-production-logging */var props={configurable:true,enumerable:true,writable:true};// $FlowFixMe Flow thinks console is immutable. +Object.defineProperties(console,{log:_assign({},props,{value:prevLog}),info:_assign({},props,{value:prevInfo}),warn:_assign({},props,{value:prevWarn}),error:_assign({},props,{value:prevError}),group:_assign({},props,{value:prevGroup}),groupCollapsed:_assign({},props,{value:prevGroupCollapsed}),groupEnd:_assign({},props,{value:prevGroupEnd})});/* eslint-enable react-internal/no-production-logging */}if(disabledDepth<0){error('disabledDepth fell below zero. '+'This is a bug in React. Please file an issue.');}}}var ReactCurrentDispatcher$1=ReactSharedInternals.ReactCurrentDispatcher;var prefix;function describeBuiltInComponentFrame(name,source,ownerFn){{if(prefix===undefined){// Extract the VM specific prefix used by each line. +try{throw Error();}catch(x){var match=x.stack.trim().match(/\n( *(at )?)/);prefix=match&&match[1]||'';}}// We use the prefix to ensure our stacks line up with native stack frames. +return '\n'+prefix+name;}}var reentry=false;var componentFrameCache;{var PossiblyWeakMap=typeof WeakMap==='function'?WeakMap:Map;componentFrameCache=new PossiblyWeakMap();}function describeNativeComponentFrame(fn,construct){// If something asked for a stack inside a fake render, it should get ignored. +if(!fn||reentry){return '';}{var frame=componentFrameCache.get(fn);if(frame!==undefined){return frame;}}var control;reentry=true;var previousPrepareStackTrace=Error.prepareStackTrace;// $FlowFixMe It does accept undefined. +Error.prepareStackTrace=undefined;var previousDispatcher;{previousDispatcher=ReactCurrentDispatcher$1.current;// Set the dispatcher in DEV because this might be call in the render function +// for warnings. +ReactCurrentDispatcher$1.current=null;disableLogs();}try{// This should throw. +if(construct){// Something should be setting the props in the constructor. +var Fake=function(){throw Error();};// $FlowFixMe +Object.defineProperty(Fake.prototype,'props',{set:function(){// We use a throwing setter instead of frozen or non-writable props +// because that won't throw in a non-strict mode function. +throw Error();}});if(typeof Reflect==='object'&&Reflect.construct){// We construct a different control for this case to include any extra +// frames added by the construct call. +try{Reflect.construct(Fake,[]);}catch(x){control=x;}Reflect.construct(fn,[],Fake);}else {try{Fake.call();}catch(x){control=x;}fn.call(Fake.prototype);}}else {try{throw Error();}catch(x){control=x;}fn();}}catch(sample){// This is inlined manually because closure doesn't do it for us. +if(sample&&control&&typeof sample.stack==='string'){// This extracts the first frame from the sample that isn't also in the control. +// Skipping one frame that we assume is the frame that calls the two. +var sampleLines=sample.stack.split('\n');var controlLines=control.stack.split('\n');var s=sampleLines.length-1;var c=controlLines.length-1;while(s>=1&&c>=0&&sampleLines[s]!==controlLines[c]){// We expect at least one stack frame to be shared. +// Typically this will be the root most one. However, stack frames may be +// cut off due to maximum stack limits. In this case, one maybe cut off +// earlier than the other. We assume that the sample is longer or the same +// and there for cut off earlier. So we should find the root most frame in +// the sample somewhere in the control. +c--;}for(;s>=1&&c>=0;s--,c--){// Next we find the first one that isn't the same which should be the +// frame that called our sample function and the control. +if(sampleLines[s]!==controlLines[c]){// In V8, the first line is describing the message but other VMs don't. +// If we're about to return the first line, and the control is also on the same +// line, that's a pretty good indicator that our sample threw at same line as +// the control. I.e. before we entered the sample frame. So we ignore this result. +// This can happen if you passed a class to function component, or non-function. +if(s!==1||c!==1){do{s--;c--;// We may still have similar intermediate frames from the construct call. +// The next one that isn't the same should be our match though. +if(c<0||sampleLines[s]!==controlLines[c]){// V8 adds a "new" prefix for native classes. Let's remove it to make it prettier. +var _frame='\n'+sampleLines[s].replace(' at new ',' at ');{if(typeof fn==='function'){componentFrameCache.set(fn,_frame);}}// Return the line we found. +return _frame;}}while(s>=1&&c>=0);}break;}}}}finally{reentry=false;{ReactCurrentDispatcher$1.current=previousDispatcher;reenableLogs();}Error.prepareStackTrace=previousPrepareStackTrace;}// Fallback to just using the name if we couldn't make it throw. +var name=fn?fn.displayName||fn.name:'';var syntheticFrame=name?describeBuiltInComponentFrame(name):'';{if(typeof fn==='function'){componentFrameCache.set(fn,syntheticFrame);}}return syntheticFrame;}function describeFunctionComponentFrame(fn,source,ownerFn){{return describeNativeComponentFrame(fn,false);}}function shouldConstruct(Component){var prototype=Component.prototype;return !!(prototype&&prototype.isReactComponent);}function describeUnknownElementTypeFrameInDEV(type,source,ownerFn){if(type==null){return '';}if(typeof type==='function'){{return describeNativeComponentFrame(type,shouldConstruct(type));}}if(typeof type==='string'){return describeBuiltInComponentFrame(type);}switch(type){case exports.Suspense:return describeBuiltInComponentFrame('Suspense');case REACT_SUSPENSE_LIST_TYPE:return describeBuiltInComponentFrame('SuspenseList');}if(typeof type==='object'){switch(type.$$typeof){case REACT_FORWARD_REF_TYPE:return describeFunctionComponentFrame(type.render);case REACT_MEMO_TYPE:// Memo may contain any component type so we recursively resolve it. +return describeUnknownElementTypeFrameInDEV(type.type,source,ownerFn);case REACT_BLOCK_TYPE:return describeFunctionComponentFrame(type._render);case REACT_LAZY_TYPE:{var lazyComponent=type;var payload=lazyComponent._payload;var init=lazyComponent._init;try{// Lazy may contain any component type so we recursively resolve it. +return describeUnknownElementTypeFrameInDEV(init(payload),source,ownerFn);}catch(x){}}}}return '';}var loggedTypeFailures={};var ReactDebugCurrentFrame$1=ReactSharedInternals.ReactDebugCurrentFrame;function setCurrentlyValidatingElement(element){{if(element){var owner=element._owner;var stack=describeUnknownElementTypeFrameInDEV(element.type,element._source,owner?owner.type:null);ReactDebugCurrentFrame$1.setExtraStackFrame(stack);}else {ReactDebugCurrentFrame$1.setExtraStackFrame(null);}}}function checkPropTypes(typeSpecs,values,location,componentName,element){{// $FlowFixMe This is okay but Flow doesn't know it. +var has=Function.call.bind(Object.prototype.hasOwnProperty);for(var typeSpecName in typeSpecs){if(has(typeSpecs,typeSpecName)){var error$1=void 0;// Prop type validation may throw. In case they do, we don't want to +// fail the render phase where it didn't fail before. So we log it. +// After these have been cleaned up, we'll let them throw. +try{// This is intentionally an invariant that gets caught. It's the same +// behavior as without this statement except with a better message. +if(typeof typeSpecs[typeSpecName]!=='function'){var err=Error((componentName||'React class')+': '+location+' type `'+typeSpecName+'` is invalid; '+'it must be a function, usually from the `prop-types` package, but received `'+typeof typeSpecs[typeSpecName]+'`.'+'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');err.name='Invariant Violation';throw err;}error$1=typeSpecs[typeSpecName](values,typeSpecName,componentName,location,null,'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');}catch(ex){error$1=ex;}if(error$1&&!(error$1 instanceof Error)){setCurrentlyValidatingElement(element);error('%s: type specification of %s'+' `%s` is invalid; the type checker '+'function must return `null` or an `Error` but returned a %s. '+'You may have forgotten to pass an argument to the type checker '+'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and '+'shape all require an argument).',componentName||'React class',location,typeSpecName,typeof error$1);setCurrentlyValidatingElement(null);}if(error$1 instanceof Error&&!(error$1.message in loggedTypeFailures)){// Only monitor this failure once because there tends to be a lot of the +// same error. +loggedTypeFailures[error$1.message]=true;setCurrentlyValidatingElement(element);error('Failed %s type: %s',location,error$1.message);setCurrentlyValidatingElement(null);}}}}}function setCurrentlyValidatingElement$1(element){{if(element){var owner=element._owner;var stack=describeUnknownElementTypeFrameInDEV(element.type,element._source,owner?owner.type:null);setExtraStackFrame(stack);}else {setExtraStackFrame(null);}}}var propTypesMisspellWarningShown;{propTypesMisspellWarningShown=false;}function getDeclarationErrorAddendum(){if(ReactCurrentOwner.current){var name=getComponentName(ReactCurrentOwner.current.type);if(name){return '\n\nCheck the render method of `'+name+'`.';}}return '';}function getSourceInfoErrorAddendum(source){if(source!==undefined){var fileName=source.fileName.replace(/^.*[\\\/]/,'');var lineNumber=source.lineNumber;return '\n\nCheck your code at '+fileName+':'+lineNumber+'.';}return '';}function getSourceInfoErrorAddendumForProps(elementProps){if(elementProps!==null&&elementProps!==undefined){return getSourceInfoErrorAddendum(elementProps.__source);}return '';}/** + * Warn if there's no key explicitly set on dynamic arrays of children or + * object keys are not valid. This allows us to keep track of children between + * updates. + */var ownerHasKeyUseWarning={};function getCurrentComponentErrorInfo(parentType){var info=getDeclarationErrorAddendum();if(!info){var parentName=typeof parentType==='string'?parentType:parentType.displayName||parentType.name;if(parentName){info="\n\nCheck the top-level render call using <"+parentName+">.";}}return info;}/** + * Warn if the element doesn't have an explicit key assigned to it. + * This element is in an array. The array could grow and shrink or be + * reordered. All children that haven't already been validated are required to + * have a "key" property assigned to it. Error statuses are cached so a warning + * will only be shown once. + * + * @internal + * @param {ReactElement} element Element that requires a key. + * @param {*} parentType element's parent's type. + */function validateExplicitKey(element,parentType){if(!element._store||element._store.validated||element.key!=null){return;}element._store.validated=true;var currentComponentErrorInfo=getCurrentComponentErrorInfo(parentType);if(ownerHasKeyUseWarning[currentComponentErrorInfo]){return;}ownerHasKeyUseWarning[currentComponentErrorInfo]=true;// Usually the current owner is the offender, but if it accepts children as a +// property, it may be the creator of the child that's responsible for +// assigning it a key. +var childOwner='';if(element&&element._owner&&element._owner!==ReactCurrentOwner.current){// Give the component that originally created this child. +childOwner=" It was passed a child from "+getComponentName(element._owner.type)+".";}{setCurrentlyValidatingElement$1(element);error('Each child in a list should have a unique "key" prop.'+'%s%s See https://reactjs.org/link/warning-keys for more information.',currentComponentErrorInfo,childOwner);setCurrentlyValidatingElement$1(null);}}/** + * Ensure that every element either is passed in a static location, in an + * array with an explicit keys property defined, or in an object literal + * with valid key property. + * + * @internal + * @param {ReactNode} node Statically passed child of any type. + * @param {*} parentType node's parent's type. + */function validateChildKeys(node,parentType){if(typeof node!=='object'){return;}if(Array.isArray(node)){for(var i=0;i";info=' Did you accidentally export a JSX literal instead of a component?';}else {typeString=typeof type;}{error('React.createElement: type is invalid -- expected a string (for '+'built-in components) or a class/function (for composite '+'components) but got: %s.%s',typeString,info);}}var element=createElement.apply(this,arguments);// The result can be nullish if a mock or a custom function is used. +// TODO: Drop this when these are no longer allowed as the type argument. +if(element==null){return element;}// Skip key warning if the type isn't valid since our key validation logic +// doesn't expect a non-string/function type and can throw confusing errors. +// We don't want exception behavior to differ between dev and prod. +// (Rendering will throw with a helpful message and as soon as the type is +// fixed, the key warnings will appear.) +if(validType){for(var i=2;i { - const [payee, setPayee] = react.useState(''); - const [txType, setTxType] = react.useState('expense'); - const [total, setTotal] = react.useState(''); - const [date, setDate] = react.useState(moment().format('YYYY-MM-DD')); - const assetsAndLiabilities = lodash.union(txCache.assetCategories, txCache.liabilityCategories); - // TODO: Combine some related state into objects - const [category1, setCategory1] = react.useState(''); - const [category1Suggestions, setCategory1Suggestions] = react.useState(txCache.expenseCategories); - const [category2, setCategory2] = react.useState(''); - const [category2Suggestions, setCategory2Suggestions] = react.useState(assetsAndLiabilities); - const suggestionCount = obsidian.Platform.isMobile ? 5 : 15; - const getCategoryName = (c) => { - switch (txType) { - case 'expense': - return c === 1 ? 'Expense' : 'Asset'; - case 'income': - return c === 1 ? 'Asset' : 'Expense'; - case 'transfer': - return c === 1 ? 'From' : 'To'; - } - }; - const changeTxType = (newTxType) => { - switch (newTxType) { - case 'expense': - setCategory1Suggestions(txCache.expenseCategories); - setCategory2Suggestions(assetsAndLiabilities); - break; - case 'income': - setCategory1Suggestions(assetsAndLiabilities); - setCategory2Suggestions(txCache.incomeCategories); - break; - case 'transfer': - setCategory1Suggestions(assetsAndLiabilities); - setCategory2Suggestions(assetsAndLiabilities); - break; - } - setTxType(newTxType); - }; - const save = async () => { - let localPayee = payee; - if (txType === 'transfer') { - const from = category1.split(':').last(); - const to = category2.split(':').last(); - localPayee = `${from} to ${to}`; - } - if (localPayee === '') { - new obsidian.Notice('Payee must not be empty'); - return; - } - else if (date === '') { - // TODO: Default to today - new obsidian.Notice('Must select a date'); - return; - } - else if (category1 === '') { - new obsidian.Notice(`${getCategoryName(1)} account must not be empty`); - return; - } - else if (category2 === '') { - new obsidian.Notice(`${getCategoryName(2)} account must not be empty`); - return; - } - const formattedDate = date.replace(/-/g, '/'); - const tx = { - type: 'tx', - value: { - date: formattedDate, - payee: localPayee, - expenselines: [ - { - category: category1, - amount: parseFloat(total), - currency: currencySymbol, - }, - { - category: category2, - }, - ], - }, - }; - await saveFn(tx); - close(); - }; - // TODO: Replace txType Select with nice buttons - // TODO: Make this support income or transfers as well - // TODO: Filter categories based on whether entering an expense, income, or transfer - // TODO: Support splitting transactions - return (react.createElement(react.Fragment, null, - react.createElement("h2", null, "Add to Ledger"), - react.createElement(Margin, null, obsidian.Platform.isMobile ? (react.createElement(DatePickerMobile, { type: "date", value: date, onChange: (e) => setDate(e.target.value) })) : (react.createElement(DatePicker, { type: "date", value: date, onChange: (e) => setDate(e.target.value) }))), - react.createElement(Margin, null, - react.createElement(WideSelect, { className: "dropdown", onChange: (e) => { - changeTxType(e.target.value); - } }, - react.createElement("option", { value: "expense" }, "Expense"), - react.createElement("option", { value: "income" }, "Income"), - react.createElement("option", { value: "transfer" }, "Transfer"))), - react.createElement(Margin, null, - react.createElement(CurrencyInput, { currencySymbol: currencySymbol, amount: total, setAmount: setTotal })), - txType !== 'transfer' ? (react.createElement(Margin, null, - react.createElement(TextSuggest, { placeholder: "Payee (e.g. Obsidian.md)", displayCount: suggestionCount, suggestions: txCache.payees, value: payee, setValue: setPayee }))) : null, - react.createElement(Margin, null, - react.createElement(TextSuggest, { placeholder: `${getCategoryName(1)} Account`, displayCount: suggestionCount, suggestions: category1Suggestions, value: category1, setValue: setCategory1 })), - react.createElement(Margin, null, - react.createElement(TextSuggest, { placeholder: `${getCategoryName(2)} Account`, displayCount: suggestionCount, suggestions: category2Suggestions, value: category2, setValue: setCategory2 })), - react.createElement(Margin, null, - react.createElement("button", { onClick: () => { - save(); // async - } }, "Save")))); -}; +const LedgerDashboard = (props) => { + console.log('Creating ledger dashboard'); + react.useEffect(() => { + // TODO: Redraw using the new txCache + }, [props.txCache]); + // TODO: If isMobile, transactions should be rendered differently. Don't use a + // tabular view on mobile where it won't render very well. + return react.createElement("h2", null, "Hello World"); +}; + +function ascending(a,b){return ab?1:a>=b?0:NaN;} + +function bisector(f){let delta=f;let compare=f;if(f.length===1){delta=(d,x)=>f(d)-x;compare=ascendingComparator(f);}function left(a,x,lo,hi){if(lo==null)lo=0;if(hi==null)hi=a.length;while(lo>>1;if(compare(a[mid],x)<0)lo=mid+1;else hi=mid;}return lo;}function right(a,x,lo,hi){if(lo==null)lo=0;if(hi==null)hi=a.length;while(lo>>1;if(compare(a[mid],x)>0)hi=mid;else lo=mid+1;}return lo;}function center(a,x,lo,hi){if(lo==null)lo=0;if(hi==null)hi=a.length;const i=left(a,x,lo,hi-1);return i>lo&&delta(a[i-1],x)>-delta(a[i],x)?i-1:i;}return {left,center,right};}function ascendingComparator(f){return (d,x)=>ascending(f(d),x);} + +function number$1(x){return x===null?NaN:+x;} + +const ascendingBisect=bisector(ascending);const bisectRight=ascendingBisect.right;const bisectCenter=bisector(number$1).center; + +var e10=Math.sqrt(50),e5=Math.sqrt(10),e2=Math.sqrt(2);function ticks(start,stop,count){var reverse,i=-1,n,ticks,step;stop=+stop,start=+start,count=+count;if(start===stop&&count>0)return [start];if(reverse=stop0){let r0=Math.round(start/step),r1=Math.round(stop/step);if(r0*stepstop)--r1;ticks=new Array(n=r1-r0+1);while(++istop)--r1;ticks=new Array(n=r1-r0+1);while(++i=0?(error>=e10?10:error>=e5?5:error>=e2?2:1)*Math.pow(10,power):-Math.pow(10,-power)/(error>=e10?10:error>=e5?5:error>=e2?2:1);}function tickStep(start,stop,count){var step0=Math.abs(stop-start)/Math.max(0,count),step1=Math.pow(10,Math.floor(Math.log(step0)/Math.LN10)),error=step0/step1;if(error>=e10)step1*=10;else if(error>=e5)step1*=5;else if(error>=e2)step1*=2;return stop{}};function dispatch(){for(var i=0,n=arguments.length,_={},t;i=0)name=t.slice(i+1),t=t.slice(0,i);if(t&&!types.hasOwnProperty(t))throw new Error("unknown type: "+t);return {type:t,name:name};});}Dispatch.prototype=dispatch.prototype={constructor:Dispatch,on:function(typename,callback){var _=this._,T=parseTypenames(typename+"",_),t,i=-1,n=T.length;// If no callback was specified, return the callback of the given type and name. +if(arguments.length<2){while(++i0)for(var args=new Array(n),i=0,n,t;i=0&&(prefix=name.slice(0,i))!=="xmlns")name=name.slice(i+1);return namespaces.hasOwnProperty(prefix)?{space:namespaces[prefix],local:name}:name;// eslint-disable-line no-prototype-builtins +} + +function creatorInherit(name){return function(){var document=this.ownerDocument,uri=this.namespaceURI;return uri===xhtml&&document.documentElement.namespaceURI===xhtml?document.createElement(name):document.createElementNS(uri,name);};}function creatorFixed(fullname){return function(){return this.ownerDocument.createElementNS(fullname.space,fullname.local);};}function creator(name){var fullname=namespace(name);return (fullname.local?creatorFixed:creatorInherit)(fullname);} + +function none(){}function selector(selector){return selector==null?none:function(){return this.querySelector(selector);};} + +function selection_select(select){if(typeof select!=="function")select=selector(select);for(var groups=this._groups,m=groups.length,subgroups=new Array(m),j=0;j=i1)i1=i0+1;while(!(next=updateGroup[i1])&&++i1=0;){if(node=group[i]){if(next&&node.compareDocumentPosition(next)^4)next.parentNode.insertBefore(node,next);next=node;}}}return this;} + +function selection_sort(compare){if(!compare)compare=ascending$1;function compareNode(a,b){return a&&b?compare(a.__data__,b.__data__):!a-!b;}for(var groups=this._groups,m=groups.length,sortgroups=new Array(m),j=0;jb?1:a>=b?0:NaN;} + +function selection_call(){var callback=arguments[0];arguments[0]=this;callback.apply(null,arguments);return this;} + +function selection_nodes(){return Array.from(this);} + +function selection_node(){for(var groups=this._groups,j=0,m=groups.length;j1?this.each((value==null?styleRemove:typeof value==="function"?styleFunction:styleConstant)(name,value,priority==null?"":priority)):styleValue(this.node(),name);}function styleValue(node,name){return node.style.getPropertyValue(name)||defaultView(node).getComputedStyle(node,null).getPropertyValue(name);} + +function propertyRemove(name){return function(){delete this[name];};}function propertyConstant(name,value){return function(){this[name]=value;};}function propertyFunction(name,value){return function(){var v=value.apply(this,arguments);if(v==null)delete this[name];else this[name]=v;};}function selection_property(name,value){return arguments.length>1?this.each((value==null?propertyRemove:typeof value==="function"?propertyFunction:propertyConstant)(name,value)):this.node()[name];} + +function classArray(string){return string.trim().split(/^|\s+/);}function classList(node){return node.classList||new ClassList(node);}function ClassList(node){this._node=node;this._names=classArray(node.getAttribute("class")||"");}ClassList.prototype={add:function(name){var i=this._names.indexOf(name);if(i<0){this._names.push(name);this._node.setAttribute("class",this._names.join(" "));}},remove:function(name){var i=this._names.indexOf(name);if(i>=0){this._names.splice(i,1);this._node.setAttribute("class",this._names.join(" "));}},contains:function(name){return this._names.indexOf(name)>=0;}};function classedAdd(node,names){var list=classList(node),i=-1,n=names.length;while(++i=0)name=t.slice(i+1),t=t.slice(0,i);return {type:t,name:name};});}function onRemove(typename){return function(){var on=this.__on;if(!on)return;for(var j=0,i=-1,m=on.length,o;j>8&0xf|m>>4&0xf0,m>>4&0xf|m&0xf0,(m&0xf)<<4|m&0xf,1)// #f00 +:l===8?rgba(m>>24&0xff,m>>16&0xff,m>>8&0xff,(m&0xff)/0xff)// #ff000000 +:l===4?rgba(m>>12&0xf|m>>8&0xf0,m>>8&0xf|m>>4&0xf0,m>>4&0xf|m&0xf0,((m&0xf)<<4|m&0xf)/0xff)// #f000 +:null// invalid hex +):(m=reRgbInteger.exec(format))?new Rgb(m[1],m[2],m[3],1)// rgb(255, 0, 0) +:(m=reRgbPercent.exec(format))?new Rgb(m[1]*255/100,m[2]*255/100,m[3]*255/100,1)// rgb(100%, 0%, 0%) +:(m=reRgbaInteger.exec(format))?rgba(m[1],m[2],m[3],m[4])// rgba(255, 0, 0, 1) +:(m=reRgbaPercent.exec(format))?rgba(m[1]*255/100,m[2]*255/100,m[3]*255/100,m[4])// rgb(100%, 0%, 0%, 1) +:(m=reHslPercent.exec(format))?hsla(m[1],m[2]/100,m[3]/100,1)// hsl(120, 50%, 50%) +:(m=reHslaPercent.exec(format))?hsla(m[1],m[2]/100,m[3]/100,m[4])// hsla(120, 50%, 50%, 1) +:named.hasOwnProperty(format)?rgbn(named[format])// eslint-disable-line no-prototype-builtins +:format==="transparent"?new Rgb(NaN,NaN,NaN,0):null;}function rgbn(n){return new Rgb(n>>16&0xff,n>>8&0xff,n&0xff,1);}function rgba(r,g,b,a){if(a<=0)r=g=b=NaN;return new Rgb(r,g,b,a);}function rgbConvert(o){if(!(o instanceof Color))o=color(o);if(!o)return new Rgb();o=o.rgb();return new Rgb(o.r,o.g,o.b,o.opacity);}function rgb(r,g,b,opacity){return arguments.length===1?rgbConvert(r):new Rgb(r,g,b,opacity==null?1:opacity);}function Rgb(r,g,b,opacity){this.r=+r;this.g=+g;this.b=+b;this.opacity=+opacity;}define(Rgb,rgb,extend(Color,{brighter:function(k){k=k==null?brighter:Math.pow(brighter,k);return new Rgb(this.r*k,this.g*k,this.b*k,this.opacity);},darker:function(k){k=k==null?darker:Math.pow(darker,k);return new Rgb(this.r*k,this.g*k,this.b*k,this.opacity);},rgb:function(){return this;},displayable:function(){return -0.5<=this.r&&this.r<255.5&&-0.5<=this.g&&this.g<255.5&&-0.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1;},hex:rgb_formatHex,// Deprecated! Use color.formatHex. +formatHex:rgb_formatHex,formatRgb:rgb_formatRgb,toString:rgb_formatRgb}));function rgb_formatHex(){return "#"+hex(this.r)+hex(this.g)+hex(this.b);}function rgb_formatRgb(){var a=this.opacity;a=isNaN(a)?1:Math.max(0,Math.min(1,a));return (a===1?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(a===1?")":", "+a+")");}function hex(value){value=Math.max(0,Math.min(255,Math.round(value)||0));return (value<16?"0":"")+value.toString(16);}function hsla(h,s,l,a){if(a<=0)h=s=l=NaN;else if(l<=0||l>=1)h=s=NaN;else if(s<=0)h=NaN;return new Hsl(h,s,l,a);}function hslConvert(o){if(o instanceof Hsl)return new Hsl(o.h,o.s,o.l,o.opacity);if(!(o instanceof Color))o=color(o);if(!o)return new Hsl();if(o instanceof Hsl)return o;o=o.rgb();var r=o.r/255,g=o.g/255,b=o.b/255,min=Math.min(r,g,b),max=Math.max(r,g,b),h=NaN,s=max-min,l=(max+min)/2;if(s){if(r===max)h=(g-b)/s+(g0&&l<1?0:h;}return new Hsl(h,s,l,o.opacity);}function hsl(h,s,l,opacity){return arguments.length===1?hslConvert(h):new Hsl(h,s,l,opacity==null?1:opacity);}function Hsl(h,s,l,opacity){this.h=+h;this.s=+s;this.l=+l;this.opacity=+opacity;}define(Hsl,hsl,extend(Color,{brighter:function(k){k=k==null?brighter:Math.pow(brighter,k);return new Hsl(this.h,this.s,this.l*k,this.opacity);},darker:function(k){k=k==null?darker:Math.pow(darker,k);return new Hsl(this.h,this.s,this.l*k,this.opacity);},rgb:function(){var h=this.h%360+(this.h<0)*360,s=isNaN(h)||isNaN(this.s)?0:this.s,l=this.l,m2=l+(l<0.5?l:1-l)*s,m1=2*l-m2;return new Rgb(hsl2rgb(h>=240?h-240:h+120,m1,m2),hsl2rgb(h,m1,m2),hsl2rgb(h<120?h+240:h-120,m1,m2),this.opacity);},displayable:function(){return (0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1;},formatHsl:function(){var a=this.opacity;a=isNaN(a)?1:Math.max(0,Math.min(1,a));return (a===1?"hsl(":"hsla(")+(this.h||0)+", "+(this.s||0)*100+"%, "+(this.l||0)*100+"%"+(a===1?")":", "+a+")");}}));/* From FvD 13.37, CSS Color Module Level 3 */function hsl2rgb(h,m1,m2){return (h<60?m1+(m2-m1)*h/60:h<180?m2:h<240?m1+(m2-m1)*(240-h)/60:m1)*255;} + +var constant$1 = (x=>()=>x); + +function linear(a,d){return function(t){return a+t*d;};}function exponential(a,b,y){return a=Math.pow(a,y),b=Math.pow(b,y)-a,y=1/y,function(t){return Math.pow(a+t*b,y);};}function gamma(y){return (y=+y)===1?nogamma:function(a,b){return b-a?exponential(a,b,y):constant$1(isNaN(a)?b:a);};}function nogamma(a,b){var d=b-a;return d?linear(a,d):constant$1(isNaN(a)?b:a);} + +var interpolateRgb = (function rgbGamma(y){var color=gamma(y);function rgb$1(start,end){var r=color((start=rgb(start)).r,(end=rgb(end)).r),g=color(start.g,end.g),b=color(start.b,end.b),opacity=nogamma(start.opacity,end.opacity);return function(t){start.r=r(t);start.g=g(t);start.b=b(t);start.opacity=opacity(t);return start+"";};}rgb$1.gamma=rgbGamma;return rgb$1;})(1); + +function numberArray(a,b){if(!b)b=[];var n=a?Math.min(b.length,a.length):0,c=b.slice(),i;return function(t){for(i=0;ibi){// a string precedes the next number in b +bs=b.slice(bi,bs);if(s[i])s[i]+=bs;// coalesce with previous string +else s[++i]=bs;}if((am=am[0])===(bm=bm[0])){// numbers in a & b match +if(s[i])s[i]+=bm;// coalesce with previous string +else s[++i]=bm;}else {// interpolate non-matching numbers +s[++i]=null;q.push({i:i,x:interpolateNumber(am,bm)});}bi=reB.lastIndex;}// Add remains of b. +if(bi180)b+=360;else if(b-a>180)a+=360;// shortest path +q.push({i:s.push(pop(s)+"rotate(",null,degParen)-2,x:interpolateNumber(a,b)});}else if(b){s.push(pop(s)+"rotate("+b+degParen);}}function skewX(a,b,s,q){if(a!==b){q.push({i:s.push(pop(s)+"skewX(",null,degParen)-2,x:interpolateNumber(a,b)});}else if(b){s.push(pop(s)+"skewX("+b+degParen);}}function scale(xa,ya,xb,yb,s,q){if(xa!==xb||ya!==yb){var i=s.push(pop(s)+"scale(",null,",",null,")");q.push({i:i-4,x:interpolateNumber(xa,xb)},{i:i-2,x:interpolateNumber(ya,yb)});}else if(xb!==1||yb!==1){s.push(pop(s)+"scale("+xb+","+yb+")");}}return function(a,b){var s=[],// string constants and placeholders +q=[];// number interpolators +a=parse(a),b=parse(b);translate(a.translateX,a.translateY,b.translateX,b.translateY,s,q);rotate(a.rotate,b.rotate,s,q);skewX(a.skewX,b.skewX,s,q);scale(a.scaleX,a.scaleY,b.scaleX,b.scaleY,s,q);a=b=null;// gc +return function(t){var i=-1,n=q.length,o;while(++i=0)t._call.call(null,e);t=t._next;}--frame;}function wake(){clockNow=(clockLast=clock.now())+clockSkew;frame=timeout=0;try{timerFlush();}finally{frame=0;nap();clockNow=0;}}function poke(){var now=clock.now(),delay=now-clockLast;if(delay>pokeDelay)clockSkew-=delay,clockLast=now;}function nap(){var t0,t1=taskHead,t2,time=Infinity;while(t1){if(t1._call){if(time>t1._time)time=t1._time;t0=t1,t1=t1._next;}else {t2=t1._next,t1._next=null;t1=t0?t0._next=t2:taskHead=t2;}}taskTail=t0;sleep(time);}function sleep(time){if(frame)return;// Soonest alarm already set, or will be. +if(timeout)timeout=clearTimeout(timeout);var delay=time-clockNow;// Strictly less than if we recomputed clockNow. +if(delay>24){if(time{t.stop();callback(elapsed+delay);},delay,time);return t;} + +var emptyOn=dispatch("start","end","cancel","interrupt");var emptyTween=[];var CREATED=0;var SCHEDULED=1;var STARTING=2;var STARTED=3;var RUNNING=4;var ENDING=5;var ENDED=6;function schedule(node,name,id,index,group,timing){var schedules=node.__transition;if(!schedules)node.__transition={};else if(id in schedules)return;create$1(node,id,{name:name,index:index,// For context during callback. +group:group,// For context during callback. +on:emptyOn,tween:emptyTween,time:timing.time,delay:timing.delay,duration:timing.duration,ease:timing.ease,timer:null,state:CREATED});}function init(node,id){var schedule=get$1(node,id);if(schedule.state>CREATED)throw new Error("too late; already scheduled");return schedule;}function set$1(node,id){var schedule=get$1(node,id);if(schedule.state>STARTED)throw new Error("too late; already running");return schedule;}function get$1(node,id){var schedule=node.__transition;if(!schedule||!(schedule=schedule[id]))throw new Error("transition not found");return schedule;}function create$1(node,id,self){var schedules=node.__transition,tween;// Initialize the self timer when the transition is created. +// Note the actual delay is not known until the first callback! +schedules[id]=self;self.timer=timer(schedule,0,self.time);function schedule(elapsed){self.state=SCHEDULED;self.timer.restart(start,self.delay,self.time);// If the elapsed delay is less than our first sleep, start immediately. +if(self.delay<=elapsed)start(elapsed-self.delay);}function start(elapsed){var i,j,n,o;// If the state is not SCHEDULED, then we previously errored on start. +if(self.state!==SCHEDULED)return stop();for(i in schedules){o=schedules[i];if(o.name!==self.name)continue;// While this element already has a starting transition during this frame, +// defer starting an interrupting transition until that transition has a +// chance to tick (and possibly end); see d3/d3-transition#54! +if(o.state===STARTED)return timeout$1(start);// Interrupt the active transition, if any. +if(o.state===RUNNING){o.state=ENDED;o.timer.stop();o.on.call("interrupt",node,node.__data__,o.index,o.group);delete schedules[i];}// Cancel any pre-empted transitions. +else if(+iSTARTING&&schedule.state=0)t=t.slice(0,i);return !t||t==="start";});}function onFunction(id,name,listener){var on0,on1,sit=start(name)?init:set$1;return function(){var schedule=sit(this,id),on=schedule.on;// If this node shared a dispatch with the previous node, +// just assign the updated shared dispatch and weโ€™re done! +// Otherwise, copy-on-write. +if(on!==on0)(on1=(on0=on).copy()).on(name,listener);schedule.on=on1;};}function transition_on(name,listener){var id=this._id;return arguments.length<2?get$1(this.node(),id).on.on(name):this.each(onFunction(id,name,listener));} + +function removeFunction(id){return function(){var parent=this.parentNode;for(var i in this.__transition)if(+i!==id)return;if(parent)parent.removeChild(this);};}function transition_remove(){return this.on("end.remove",removeFunction(this._id));} + +function transition_select(select){var name=this._name,id=this._id;if(typeof select!=="function")select=selector(select);for(var groups=this._groups,m=groups.length,subgroups=new Array(m),j=0;j=1e21?x.toLocaleString("en").replace(/,/g,""):x.toString(10);}// Computes the decimal coefficient and exponent of the specified number x with +// significant digits p, where x is positive and p is in [1, 21] or undefined. +// For example, formatDecimalParts(1.23) returns ["123", 0]. +function formatDecimalParts(x,p){if((i=(x=p?x.toExponential(p-1):x.toExponential()).indexOf("e"))<0)return null;// NaN, ยฑInfinity +var i,coefficient=x.slice(0,i);// The string returned by toExponential either has the form \d\.\d+e[-+]\d+ +// (e.g., 1.2e+3) or the form \de[-+]\d+ (e.g., 1e+3). +return [coefficient.length>1?coefficient[0]+coefficient.slice(2):coefficient,+x.slice(i+1)];} + +function exponent(x){return x=formatDecimalParts(Math.abs(x)),x?x[1]:NaN;} + +function formatGroup(grouping,thousands){return function(value,width){var i=value.length,t=[],j=0,g=grouping[0],length=0;while(i>0&&g>0){if(length+g+1>width)g=Math.max(1,width-length);t.push(value.substring(i-=g,i+g));if((length+=g+1)>width)break;g=grouping[j=(j+1)%grouping.length];}return t.reverse().join(thousands);};} + +function formatNumerals(numerals){return function(value){return value.replace(/[0-9]/g,function(i){return numerals[+i];});};} + +// [[fill]align][sign][symbol][0][width][,][.precision][~][type] +var re=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function formatSpecifier(specifier){if(!(match=re.exec(specifier)))throw new Error("invalid format: "+specifier);var match;return new FormatSpecifier({fill:match[1],align:match[2],sign:match[3],symbol:match[4],zero:match[5],width:match[6],comma:match[7],precision:match[8]&&match[8].slice(1),trim:match[9],type:match[10]});}formatSpecifier.prototype=FormatSpecifier.prototype;// instanceof +function FormatSpecifier(specifier){this.fill=specifier.fill===undefined?" ":specifier.fill+"";this.align=specifier.align===undefined?">":specifier.align+"";this.sign=specifier.sign===undefined?"-":specifier.sign+"";this.symbol=specifier.symbol===undefined?"":specifier.symbol+"";this.zero=!!specifier.zero;this.width=specifier.width===undefined?undefined:+specifier.width;this.comma=!!specifier.comma;this.precision=specifier.precision===undefined?undefined:+specifier.precision;this.trim=!!specifier.trim;this.type=specifier.type===undefined?"":specifier.type+"";}FormatSpecifier.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===undefined?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===undefined?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type;}; + +// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k. +function formatTrim(s){out:for(var n=s.length,i=1,i0=-1,i1;i0)i0=0;break;}}return i0>0?s.slice(0,i0)+s.slice(i1+1):s;} + +var prefixExponent;function formatPrefixAuto(x,p){var d=formatDecimalParts(x,p);if(!d)return x+"";var coefficient=d[0],exponent=d[1],i=exponent-(prefixExponent=Math.max(-8,Math.min(8,Math.floor(exponent/3)))*3)+1,n=coefficient.length;return i===n?coefficient:i>n?coefficient+new Array(i-n+1).join("0"):i>0?coefficient.slice(0,i)+"."+coefficient.slice(i):"0."+new Array(1-i).join("0")+formatDecimalParts(x,Math.max(0,p+i-1))[0];// less than 1y! +} + +function formatRounded(x,p){var d=formatDecimalParts(x,p);if(!d)return x+"";var coefficient=d[0],exponent=d[1];return exponent<0?"0."+new Array(-exponent).join("0")+coefficient:coefficient.length>exponent+1?coefficient.slice(0,exponent+1)+"."+coefficient.slice(exponent+1):coefficient+new Array(exponent-coefficient.length+2).join("0");} + +var formatTypes = {"%":(x,p)=>(x*100).toFixed(p),"b":x=>Math.round(x).toString(2),"c":x=>x+"","d":formatDecimal,"e":(x,p)=>x.toExponential(p),"f":(x,p)=>x.toFixed(p),"g":(x,p)=>x.toPrecision(p),"o":x=>Math.round(x).toString(8),"p":(x,p)=>formatRounded(x*100,p),"r":formatRounded,"s":formatPrefixAuto,"X":x=>Math.round(x).toString(16).toUpperCase(),"x":x=>Math.round(x).toString(16)}; + +function identity$1(x){return x;} + +var map=Array.prototype.map,prefixes=["y","z","a","f","p","n","ยต","m","","k","M","G","T","P","E","Z","Y"];function formatLocale(locale){var group=locale.grouping===undefined||locale.thousands===undefined?identity$1:formatGroup(map.call(locale.grouping,Number),locale.thousands+""),currencyPrefix=locale.currency===undefined?"":locale.currency[0]+"",currencySuffix=locale.currency===undefined?"":locale.currency[1]+"",decimal=locale.decimal===undefined?".":locale.decimal+"",numerals=locale.numerals===undefined?identity$1:formatNumerals(map.call(locale.numerals,String)),percent=locale.percent===undefined?"%":locale.percent+"",minus=locale.minus===undefined?"โˆ’":locale.minus+"",nan=locale.nan===undefined?"NaN":locale.nan+"";function newFormat(specifier){specifier=formatSpecifier(specifier);var fill=specifier.fill,align=specifier.align,sign=specifier.sign,symbol=specifier.symbol,zero=specifier.zero,width=specifier.width,comma=specifier.comma,precision=specifier.precision,trim=specifier.trim,type=specifier.type;// The "n" type is an alias for ",g". +if(type==="n")comma=true,type="g";// The "" type, and any invalid type, is an alias for ".12~g". +else if(!formatTypes[type])precision===undefined&&(precision=12),trim=true,type="g";// If zero fill is specified, padding goes after sign and before digits. +if(zero||fill==="0"&&align==="=")zero=true,fill="0",align="=";// Compute the prefix and suffix. +// For SI-prefix, the suffix is lazily computed. +var prefix=symbol==="$"?currencyPrefix:symbol==="#"&&/[boxX]/.test(type)?"0"+type.toLowerCase():"",suffix=symbol==="$"?currencySuffix:/[%p]/.test(type)?percent:"";// What format function should we use? +// Is this an integer type? +// Can this type generate exponential notation? +var formatType=formatTypes[type],maybeSuffix=/[defgprs%]/.test(type);// Set the default precision if not specified, +// or clamp the specified precision to the supported range. +// For significant precision, it must be in [1, 21]. +// For fixed precision, it must be in [0, 20]. +precision=precision===undefined?6:/[gprs]/.test(type)?Math.max(1,Math.min(21,precision)):Math.max(0,Math.min(20,precision));function format(value){var valuePrefix=prefix,valueSuffix=suffix,i,n,c;if(type==="c"){valueSuffix=formatType(value)+valueSuffix;value="";}else {value=+value;// Determine the sign. -0 is not less than 0, but 1 / -0 is! +var valueNegative=value<0||1/value<0;// Perform the initial formatting. +value=isNaN(value)?nan:formatType(Math.abs(value),precision);// Trim insignificant zeros. +if(trim)value=formatTrim(value);// If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign. +if(valueNegative&&+value===0&&sign!=="+")valueNegative=false;// Compute the prefix and suffix. +valuePrefix=(valueNegative?sign==="("?sign:minus:sign==="-"||sign==="("?"":sign)+valuePrefix;valueSuffix=(type==="s"?prefixes[8+prefixExponent/3]:"")+valueSuffix+(valueNegative&&sign==="("?")":"");// Break the formatted value into the integer โ€œvalueโ€ part that can be +// grouped, and fractional or exponential โ€œsuffixโ€ part that is not. +if(maybeSuffix){i=-1,n=value.length;while(++ic||c>57){valueSuffix=(c===46?decimal+value.slice(i+1):value.slice(i))+valueSuffix;value=value.slice(0,i);break;}}}}// If the fill character is not "0", grouping is applied before padding. +if(comma&&!zero)value=group(value,Infinity);// Compute the padding. +var length=valuePrefix.length+value.length+valueSuffix.length,padding=length>1)+valuePrefix+value+valueSuffix+padding.slice(length);break;default:value=padding+valuePrefix+value+valueSuffix;break;}return numerals(value);}format.toString=function(){return specifier+"";};return format;}function formatPrefix(specifier,value){var f=newFormat((specifier=formatSpecifier(specifier),specifier.type="f",specifier)),e=Math.max(-8,Math.min(8,Math.floor(exponent(value)/3)))*3,k=Math.pow(10,-e),prefix=prefixes[8+e/3];return function(value){return f(k*value)+prefix;};}return {format:newFormat,formatPrefix:formatPrefix};} + +var locale;var format;var formatPrefix;defaultLocale({thousands:",",grouping:[3],currency:["$",""]});function defaultLocale(definition){locale=formatLocale(definition);format=locale.format;formatPrefix=locale.formatPrefix;return locale;} + +function precisionFixed(step){return Math.max(0,-exponent(Math.abs(step)));} + +function precisionPrefix(step,value){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(exponent(value)/3)))*3-exponent(Math.abs(step)));} + +function precisionRound(step,max){step=Math.abs(step),max=Math.abs(max)-step;return Math.max(0,exponent(max)-exponent(step))+1;} + +function initRange(domain,range){switch(arguments.length){case 0:break;case 1:this.range(domain);break;default:this.range(range).domain(domain);break;}return this;} + +function constants(x){return function(){return x;};} + +function number$2(x){return +x;} + +var unit=[0,1];function identity$2(x){return x;}function normalize(a,b){return (b-=a=+a)?function(x){return (x-a)/b;}:constants(isNaN(b)?NaN:0.5);}function clamper(a,b){var t;if(a>b)t=a,a=b,b=t;return function(x){return Math.max(a,Math.min(b,x));};}// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1]. +// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b]. +function bimap(domain,range,interpolate){var d0=domain[0],d1=domain[1],r0=range[0],r1=range[1];if(d12?polymap:bimap;output=input=null;return scale;}function scale(x){return x==null||isNaN(x=+x)?unknown:(output||(output=piecewise(domain.map(transform),range,interpolate$1)))(transform(clamp(x)));}scale.invert=function(y){return clamp(untransform((input||(input=piecewise(range,domain.map(transform),interpolateNumber)))(y)));};scale.domain=function(_){return arguments.length?(domain=Array.from(_,number$2),rescale()):domain.slice();};scale.range=function(_){return arguments.length?(range=Array.from(_),rescale()):range.slice();};scale.rangeRound=function(_){return range=Array.from(_),interpolate$1=interpolateRound,rescale();};scale.clamp=function(_){return arguments.length?(clamp=_?true:identity$2,rescale()):clamp!==identity$2;};scale.interpolate=function(_){return arguments.length?(interpolate$1=_,rescale()):interpolate$1;};scale.unknown=function(_){return arguments.length?(unknown=_,scale):unknown;};return function(t,u){transform=t,untransform=u;return rescale();};}function continuous(){return transformer()(identity$2,identity$2);} + +function tickFormat(start,stop,count,specifier){var step=tickStep(start,stop,count),precision;specifier=formatSpecifier(specifier==null?",f":specifier);switch(specifier.type){case"s":{var value=Math.max(Math.abs(start),Math.abs(stop));if(specifier.precision==null&&!isNaN(precision=precisionPrefix(step,value)))specifier.precision=precision;return formatPrefix(specifier,value);}case"":case"e":case"g":case"p":case"r":{if(specifier.precision==null&&!isNaN(precision=precisionRound(step,Math.max(Math.abs(start),Math.abs(stop)))))specifier.precision=precision-(specifier.type==="e");break;}case"f":case"%":{if(specifier.precision==null&&!isNaN(precision=precisionFixed(step)))specifier.precision=precision-(specifier.type==="%")*2;break;}}return format(specifier);} + +function linearish(scale){var domain=scale.domain;scale.ticks=function(count){var d=domain();return ticks(d[0],d[d.length-1],count==null?10:count);};scale.tickFormat=function(count,specifier){var d=domain();return tickFormat(d[0],d[d.length-1],count==null?10:count,specifier);};scale.nice=function(count){if(count==null)count=10;var d=domain();var i0=0;var i1=d.length-1;var start=d[i0];var stop=d[i1];var prestep;var step;var maxIter=10;if(stop0){step=tickIncrement(start,stop,count);if(step===prestep){d[i0]=start;d[i1]=stop;return domain(d);}else if(step>0){start=Math.floor(start/step)*step;stop=Math.ceil(stop/step)*step;}else if(step<0){start=Math.ceil(start*step)/step;stop=Math.floor(stop*step)/step;}else {break;}prestep=step;}return scale;};return scale;}function linear$1(){var scale=continuous();scale.copy=function(){return copy(scale,linear$1());};initRange.apply(scale,arguments);return linearish(scale);} /** @license React v0.20.2 * scheduler.production.min.js @@ -12088,7 +10805,7 @@ var scheduler = createCommonjsModule(function (module) { * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ -function y(a){for(var b="https://reactjs.org/docs/error-decoder.html?invariant="+a,c=1;c