1
0
Fork 0
obsidian-vault-starter/.obsidian/plugins/obsidian-day-planner/main.js

22597 lines
758 KiB
JavaScript

/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// node_modules/obsidian-daily-notes-interface/dist/main.js
var require_main = __commonJS({
"node_modules/obsidian-daily-notes-interface/dist/main.js"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var obsidian = require("obsidian");
var DEFAULT_DAILY_NOTE_FORMAT2 = "YYYY-MM-DD";
var DEFAULT_WEEKLY_NOTE_FORMAT = "gggg-[W]ww";
var DEFAULT_MONTHLY_NOTE_FORMAT = "YYYY-MM";
var DEFAULT_QUARTERLY_NOTE_FORMAT = "YYYY-[Q]Q";
var DEFAULT_YEARLY_NOTE_FORMAT = "YYYY";
function shouldUsePeriodicNotesSettings(periodicity) {
var _a, _b;
const periodicNotes = window.app.plugins.getPlugin("periodic-notes");
return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a[periodicity]) == null ? void 0 : _b.enabled);
}
function getDailyNoteSettings() {
var _a, _b, _c, _d;
try {
const { internalPlugins, plugins } = window.app;
if (shouldUsePeriodicNotesSettings("daily")) {
const { format: format2, folder: folder2, template: template2 } = ((_b = (_a = plugins.getPlugin("periodic-notes")) == null ? void 0 : _a.settings) == null ? void 0 : _b.daily) || {};
return {
format: format2 || DEFAULT_DAILY_NOTE_FORMAT2,
folder: (folder2 == null ? void 0 : folder2.trim()) || "",
template: (template2 == null ? void 0 : template2.trim()) || ""
};
}
const { folder, format, template } = ((_d = (_c = internalPlugins.getPluginById("daily-notes")) == null ? void 0 : _c.instance) == null ? void 0 : _d.options) || {};
return {
format: format || DEFAULT_DAILY_NOTE_FORMAT2,
folder: (folder == null ? void 0 : folder.trim()) || "",
template: (template == null ? void 0 : template.trim()) || ""
};
} catch (err) {
console.info("No custom daily note settings found!", err);
}
}
function getWeeklyNoteSettings() {
var _a, _b, _c, _d, _e, _f, _g;
try {
const pluginManager = window.app.plugins;
const calendarSettings = (_a = pluginManager.getPlugin("calendar")) == null ? void 0 : _a.options;
const periodicNotesSettings = (_c = (_b = pluginManager.getPlugin("periodic-notes")) == null ? void 0 : _b.settings) == null ? void 0 : _c.weekly;
if (shouldUsePeriodicNotesSettings("weekly")) {
return {
format: periodicNotesSettings.format || DEFAULT_WEEKLY_NOTE_FORMAT,
folder: ((_d = periodicNotesSettings.folder) == null ? void 0 : _d.trim()) || "",
template: ((_e = periodicNotesSettings.template) == null ? void 0 : _e.trim()) || ""
};
}
const settings2 = calendarSettings || {};
return {
format: settings2.weeklyNoteFormat || DEFAULT_WEEKLY_NOTE_FORMAT,
folder: ((_f = settings2.weeklyNoteFolder) == null ? void 0 : _f.trim()) || "",
template: ((_g = settings2.weeklyNoteTemplate) == null ? void 0 : _g.trim()) || ""
};
} catch (err) {
console.info("No custom weekly note settings found!", err);
}
}
function getMonthlyNoteSettings() {
var _a, _b, _c, _d;
const pluginManager = window.app.plugins;
try {
const settings2 = shouldUsePeriodicNotesSettings("monthly") && ((_b = (_a = pluginManager.getPlugin("periodic-notes")) == null ? void 0 : _a.settings) == null ? void 0 : _b.monthly) || {};
return {
format: settings2.format || DEFAULT_MONTHLY_NOTE_FORMAT,
folder: ((_c = settings2.folder) == null ? void 0 : _c.trim()) || "",
template: ((_d = settings2.template) == null ? void 0 : _d.trim()) || ""
};
} catch (err) {
console.info("No custom monthly note settings found!", err);
}
}
function getQuarterlyNoteSettings() {
var _a, _b, _c, _d;
const pluginManager = window.app.plugins;
try {
const settings2 = shouldUsePeriodicNotesSettings("quarterly") && ((_b = (_a = pluginManager.getPlugin("periodic-notes")) == null ? void 0 : _a.settings) == null ? void 0 : _b.quarterly) || {};
return {
format: settings2.format || DEFAULT_QUARTERLY_NOTE_FORMAT,
folder: ((_c = settings2.folder) == null ? void 0 : _c.trim()) || "",
template: ((_d = settings2.template) == null ? void 0 : _d.trim()) || ""
};
} catch (err) {
console.info("No custom quarterly note settings found!", err);
}
}
function getYearlyNoteSettings() {
var _a, _b, _c, _d;
const pluginManager = window.app.plugins;
try {
const settings2 = shouldUsePeriodicNotesSettings("yearly") && ((_b = (_a = pluginManager.getPlugin("periodic-notes")) == null ? void 0 : _a.settings) == null ? void 0 : _b.yearly) || {};
return {
format: settings2.format || DEFAULT_YEARLY_NOTE_FORMAT,
folder: ((_c = settings2.folder) == null ? void 0 : _c.trim()) || "",
template: ((_d = settings2.template) == null ? void 0 : _d.trim()) || ""
};
} catch (err) {
console.info("No custom yearly note settings found!", err);
}
}
function join(...partSegments) {
let parts = [];
for (let i = 0, l = partSegments.length; i < l; i++) {
parts = parts.concat(partSegments[i].split("/"));
}
const newParts = [];
for (let i = 0, l = parts.length; i < l; i++) {
const part = parts[i];
if (!part || part === ".")
continue;
else
newParts.push(part);
}
if (parts[0] === "")
newParts.unshift("");
return newParts.join("/");
}
function basename(fullPath) {
let base = fullPath.substring(fullPath.lastIndexOf("/") + 1);
if (base.lastIndexOf(".") != -1)
base = base.substring(0, base.lastIndexOf("."));
return base;
}
async function ensureFolderExists(path) {
const dirs = path.replace(/\\/g, "/").split("/");
dirs.pop();
if (dirs.length) {
const dir = join(...dirs);
if (!window.app.vault.getAbstractFileByPath(dir)) {
await window.app.vault.createFolder(dir);
}
}
}
async function getNotePath(directory, filename) {
if (!filename.endsWith(".md")) {
filename += ".md";
}
const path = obsidian.normalizePath(join(directory, filename));
await ensureFolderExists(path);
return path;
}
async function getTemplateInfo(template) {
const { metadataCache, vault } = window.app;
const templatePath = obsidian.normalizePath(template);
if (templatePath === "/") {
return Promise.resolve(["", null]);
}
try {
const templateFile = metadataCache.getFirstLinkpathDest(templatePath, "");
const contents = await vault.cachedRead(templateFile);
const IFoldInfo = window.app.foldManager.load(templateFile);
return [contents, IFoldInfo];
} catch (err) {
console.error(`Failed to read the daily note template '${templatePath}'`, err);
new obsidian.Notice("Failed to read the daily note template");
return ["", null];
}
}
function getDateUID(date, granularity = "day") {
const ts = date.clone().startOf(granularity).format();
return `${granularity}-${ts}`;
}
function removeEscapedCharacters(format) {
return format.replace(/\[[^\]]*\]/g, "");
}
function isFormatAmbiguous(format, granularity) {
if (granularity === "week") {
const cleanFormat = removeEscapedCharacters(format);
return /w{1,2}/i.test(cleanFormat) && (/M{1,4}/.test(cleanFormat) || /D{1,4}/.test(cleanFormat));
}
return false;
}
function getDateFromFile3(file, granularity) {
return getDateFromFilename(file.basename, granularity);
}
function getDateFromPath(path, granularity) {
return getDateFromFilename(basename(path), granularity);
}
function getDateFromFilename(filename, granularity) {
const getSettings = {
day: getDailyNoteSettings,
week: getWeeklyNoteSettings,
month: getMonthlyNoteSettings,
quarter: getQuarterlyNoteSettings,
year: getYearlyNoteSettings
};
const format = getSettings[granularity]().format.split("/").pop();
const noteDate = window.moment(filename, format, true);
if (!noteDate.isValid()) {
return null;
}
if (isFormatAmbiguous(format, granularity)) {
if (granularity === "week") {
const cleanFormat = removeEscapedCharacters(format);
if (/w{1,2}/i.test(cleanFormat)) {
return window.moment(
filename,
// If format contains week, remove day & month formatting
format.replace(/M{1,4}/g, "").replace(/D{1,4}/g, ""),
false
);
}
}
}
return noteDate;
}
var DailyNotesFolderMissingError = class extends Error {
};
async function createDailyNote3(date) {
const app = window.app;
const { vault } = app;
const moment2 = window.moment;
const { template, format, folder } = getDailyNoteSettings();
const [templateContents, IFoldInfo] = await getTemplateInfo(template);
const filename = date.format(format);
const normalizedPath = await getNotePath(folder, filename);
try {
const createdFile = await vault.create(normalizedPath, templateContents.replace(/{{\s*date\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, moment2().format("HH:mm")).replace(/{{\s*title\s*}}/gi, filename).replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => {
const now = moment2();
const currentDate = date.clone().set({
hour: now.get("hour"),
minute: now.get("minute"),
second: now.get("second")
});
if (calc) {
currentDate.add(parseInt(timeDelta, 10), unit);
}
if (momentFormat) {
return currentDate.format(momentFormat.substring(1).trim());
}
return currentDate.format(format);
}).replace(/{{\s*yesterday\s*}}/gi, date.clone().subtract(1, "day").format(format)).replace(/{{\s*tomorrow\s*}}/gi, date.clone().add(1, "d").format(format)));
app.foldManager.save(createdFile, IFoldInfo);
return createdFile;
} catch (err) {
console.error(`Failed to create file: '${normalizedPath}'`, err);
new obsidian.Notice("Unable to create new file.");
}
}
function getDailyNote6(date, dailyNotes) {
var _a;
return (_a = dailyNotes[getDateUID(date, "day")]) != null ? _a : null;
}
function getAllDailyNotes6() {
const { vault } = window.app;
const { folder } = getDailyNoteSettings();
const dailyNotesFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder));
if (!dailyNotesFolder) {
throw new DailyNotesFolderMissingError("Failed to find daily notes folder");
}
const dailyNotes = {};
obsidian.Vault.recurseChildren(dailyNotesFolder, (note) => {
if (note instanceof obsidian.TFile) {
const date = getDateFromFile3(note, "day");
if (date) {
const dateString = getDateUID(date, "day");
dailyNotes[dateString] = note;
}
}
});
return dailyNotes;
}
var WeeklyNotesFolderMissingError = class extends Error {
};
function getDaysOfWeek2() {
const { moment: moment2 } = window;
let weekStart = moment2.localeData()._week.dow;
const daysOfWeek = [
"sunday",
"monday",
"tuesday",
"wednesday",
"thursday",
"friday",
"saturday"
];
while (weekStart) {
daysOfWeek.push(daysOfWeek.shift());
weekStart--;
}
return daysOfWeek;
}
function getDayOfWeekNumericalValue(dayOfWeekName) {
return getDaysOfWeek2().indexOf(dayOfWeekName.toLowerCase());
}
async function createWeeklyNote(date) {
const { vault } = window.app;
const { template, format, folder } = getWeeklyNoteSettings();
const [templateContents, IFoldInfo] = await getTemplateInfo(template);
const filename = date.format(format);
const normalizedPath = await getNotePath(folder, filename);
try {
const createdFile = await vault.create(normalizedPath, templateContents.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => {
const now = window.moment();
const currentDate = date.clone().set({
hour: now.get("hour"),
minute: now.get("minute"),
second: now.get("second")
});
if (calc) {
currentDate.add(parseInt(timeDelta, 10), unit);
}
if (momentFormat) {
return currentDate.format(momentFormat.substring(1).trim());
}
return currentDate.format(format);
}).replace(/{{\s*title\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")).replace(/{{\s*(sunday|monday|tuesday|wednesday|thursday|friday|saturday)\s*:(.*?)}}/gi, (_, dayOfWeek, momentFormat) => {
const day = getDayOfWeekNumericalValue(dayOfWeek);
return date.weekday(day).format(momentFormat.trim());
}));
window.app.foldManager.save(createdFile, IFoldInfo);
return createdFile;
} catch (err) {
console.error(`Failed to create file: '${normalizedPath}'`, err);
new obsidian.Notice("Unable to create new file.");
}
}
function getWeeklyNote(date, weeklyNotes) {
var _a;
return (_a = weeklyNotes[getDateUID(date, "week")]) != null ? _a : null;
}
function getAllWeeklyNotes() {
const weeklyNotes = {};
if (!appHasWeeklyNotesPluginLoaded()) {
return weeklyNotes;
}
const { vault } = window.app;
const { folder } = getWeeklyNoteSettings();
const weeklyNotesFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder));
if (!weeklyNotesFolder) {
throw new WeeklyNotesFolderMissingError("Failed to find weekly notes folder");
}
obsidian.Vault.recurseChildren(weeklyNotesFolder, (note) => {
if (note instanceof obsidian.TFile) {
const date = getDateFromFile3(note, "week");
if (date) {
const dateString = getDateUID(date, "week");
weeklyNotes[dateString] = note;
}
}
});
return weeklyNotes;
}
var MonthlyNotesFolderMissingError = class extends Error {
};
async function createMonthlyNote(date) {
const { vault } = window.app;
const { template, format, folder } = getMonthlyNoteSettings();
const [templateContents, IFoldInfo] = await getTemplateInfo(template);
const filename = date.format(format);
const normalizedPath = await getNotePath(folder, filename);
try {
const createdFile = await vault.create(normalizedPath, templateContents.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => {
const now = window.moment();
const currentDate = date.clone().set({
hour: now.get("hour"),
minute: now.get("minute"),
second: now.get("second")
});
if (calc) {
currentDate.add(parseInt(timeDelta, 10), unit);
}
if (momentFormat) {
return currentDate.format(momentFormat.substring(1).trim());
}
return currentDate.format(format);
}).replace(/{{\s*date\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi, filename));
window.app.foldManager.save(createdFile, IFoldInfo);
return createdFile;
} catch (err) {
console.error(`Failed to create file: '${normalizedPath}'`, err);
new obsidian.Notice("Unable to create new file.");
}
}
function getMonthlyNote(date, monthlyNotes) {
var _a;
return (_a = monthlyNotes[getDateUID(date, "month")]) != null ? _a : null;
}
function getAllMonthlyNotes() {
const monthlyNotes = {};
if (!appHasMonthlyNotesPluginLoaded()) {
return monthlyNotes;
}
const { vault } = window.app;
const { folder } = getMonthlyNoteSettings();
const monthlyNotesFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder));
if (!monthlyNotesFolder) {
throw new MonthlyNotesFolderMissingError("Failed to find monthly notes folder");
}
obsidian.Vault.recurseChildren(monthlyNotesFolder, (note) => {
if (note instanceof obsidian.TFile) {
const date = getDateFromFile3(note, "month");
if (date) {
const dateString = getDateUID(date, "month");
monthlyNotes[dateString] = note;
}
}
});
return monthlyNotes;
}
var QuarterlyNotesFolderMissingError = class extends Error {
};
async function createQuarterlyNote(date) {
const { vault } = window.app;
const { template, format, folder } = getQuarterlyNoteSettings();
const [templateContents, IFoldInfo] = await getTemplateInfo(template);
const filename = date.format(format);
const normalizedPath = await getNotePath(folder, filename);
try {
const createdFile = await vault.create(normalizedPath, templateContents.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => {
const now = window.moment();
const currentDate = date.clone().set({
hour: now.get("hour"),
minute: now.get("minute"),
second: now.get("second")
});
if (calc) {
currentDate.add(parseInt(timeDelta, 10), unit);
}
if (momentFormat) {
return currentDate.format(momentFormat.substring(1).trim());
}
return currentDate.format(format);
}).replace(/{{\s*date\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi, filename));
window.app.foldManager.save(createdFile, IFoldInfo);
return createdFile;
} catch (err) {
console.error(`Failed to create file: '${normalizedPath}'`, err);
new obsidian.Notice("Unable to create new file.");
}
}
function getQuarterlyNote(date, quarterly) {
var _a;
return (_a = quarterly[getDateUID(date, "quarter")]) != null ? _a : null;
}
function getAllQuarterlyNotes() {
const quarterly = {};
if (!appHasQuarterlyNotesPluginLoaded()) {
return quarterly;
}
const { vault } = window.app;
const { folder } = getQuarterlyNoteSettings();
const quarterlyFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder));
if (!quarterlyFolder) {
throw new QuarterlyNotesFolderMissingError("Failed to find quarterly notes folder");
}
obsidian.Vault.recurseChildren(quarterlyFolder, (note) => {
if (note instanceof obsidian.TFile) {
const date = getDateFromFile3(note, "quarter");
if (date) {
const dateString = getDateUID(date, "quarter");
quarterly[dateString] = note;
}
}
});
return quarterly;
}
var YearlyNotesFolderMissingError = class extends Error {
};
async function createYearlyNote(date) {
const { vault } = window.app;
const { template, format, folder } = getYearlyNoteSettings();
const [templateContents, IFoldInfo] = await getTemplateInfo(template);
const filename = date.format(format);
const normalizedPath = await getNotePath(folder, filename);
try {
const createdFile = await vault.create(normalizedPath, templateContents.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => {
const now = window.moment();
const currentDate = date.clone().set({
hour: now.get("hour"),
minute: now.get("minute"),
second: now.get("second")
});
if (calc) {
currentDate.add(parseInt(timeDelta, 10), unit);
}
if (momentFormat) {
return currentDate.format(momentFormat.substring(1).trim());
}
return currentDate.format(format);
}).replace(/{{\s*date\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi, filename));
window.app.foldManager.save(createdFile, IFoldInfo);
return createdFile;
} catch (err) {
console.error(`Failed to create file: '${normalizedPath}'`, err);
new obsidian.Notice("Unable to create new file.");
}
}
function getYearlyNote(date, yearlyNotes) {
var _a;
return (_a = yearlyNotes[getDateUID(date, "year")]) != null ? _a : null;
}
function getAllYearlyNotes() {
const yearlyNotes = {};
if (!appHasYearlyNotesPluginLoaded()) {
return yearlyNotes;
}
const { vault } = window.app;
const { folder } = getYearlyNoteSettings();
const yearlyNotesFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder));
if (!yearlyNotesFolder) {
throw new YearlyNotesFolderMissingError("Failed to find yearly notes folder");
}
obsidian.Vault.recurseChildren(yearlyNotesFolder, (note) => {
if (note instanceof obsidian.TFile) {
const date = getDateFromFile3(note, "year");
if (date) {
const dateString = getDateUID(date, "year");
yearlyNotes[dateString] = note;
}
}
});
return yearlyNotes;
}
function appHasDailyNotesPluginLoaded() {
var _a, _b;
const { app } = window;
const dailyNotesPlugin = app.internalPlugins.plugins["daily-notes"];
if (dailyNotesPlugin && dailyNotesPlugin.enabled) {
return true;
}
const periodicNotes = app.plugins.getPlugin("periodic-notes");
return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a.daily) == null ? void 0 : _b.enabled);
}
function appHasWeeklyNotesPluginLoaded() {
var _a, _b;
const { app } = window;
if (app.plugins.getPlugin("calendar")) {
return true;
}
const periodicNotes = app.plugins.getPlugin("periodic-notes");
return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a.weekly) == null ? void 0 : _b.enabled);
}
function appHasMonthlyNotesPluginLoaded() {
var _a, _b;
const { app } = window;
const periodicNotes = app.plugins.getPlugin("periodic-notes");
return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a.monthly) == null ? void 0 : _b.enabled);
}
function appHasQuarterlyNotesPluginLoaded() {
var _a, _b;
const { app } = window;
const periodicNotes = app.plugins.getPlugin("periodic-notes");
return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a.quarterly) == null ? void 0 : _b.enabled);
}
function appHasYearlyNotesPluginLoaded() {
var _a, _b;
const { app } = window;
const periodicNotes = app.plugins.getPlugin("periodic-notes");
return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a.yearly) == null ? void 0 : _b.enabled);
}
function getPeriodicNoteSettings(granularity) {
const getSettings = {
day: getDailyNoteSettings,
week: getWeeklyNoteSettings,
month: getMonthlyNoteSettings,
quarter: getQuarterlyNoteSettings,
year: getYearlyNoteSettings
}[granularity];
return getSettings();
}
function createPeriodicNote(granularity, date) {
const createFn = {
day: createDailyNote3,
month: createMonthlyNote,
week: createWeeklyNote
};
return createFn[granularity](date);
}
exports.DEFAULT_DAILY_NOTE_FORMAT = DEFAULT_DAILY_NOTE_FORMAT2;
exports.DEFAULT_MONTHLY_NOTE_FORMAT = DEFAULT_MONTHLY_NOTE_FORMAT;
exports.DEFAULT_QUARTERLY_NOTE_FORMAT = DEFAULT_QUARTERLY_NOTE_FORMAT;
exports.DEFAULT_WEEKLY_NOTE_FORMAT = DEFAULT_WEEKLY_NOTE_FORMAT;
exports.DEFAULT_YEARLY_NOTE_FORMAT = DEFAULT_YEARLY_NOTE_FORMAT;
exports.appHasDailyNotesPluginLoaded = appHasDailyNotesPluginLoaded;
exports.appHasMonthlyNotesPluginLoaded = appHasMonthlyNotesPluginLoaded;
exports.appHasQuarterlyNotesPluginLoaded = appHasQuarterlyNotesPluginLoaded;
exports.appHasWeeklyNotesPluginLoaded = appHasWeeklyNotesPluginLoaded;
exports.appHasYearlyNotesPluginLoaded = appHasYearlyNotesPluginLoaded;
exports.createDailyNote = createDailyNote3;
exports.createMonthlyNote = createMonthlyNote;
exports.createPeriodicNote = createPeriodicNote;
exports.createQuarterlyNote = createQuarterlyNote;
exports.createWeeklyNote = createWeeklyNote;
exports.createYearlyNote = createYearlyNote;
exports.getAllDailyNotes = getAllDailyNotes6;
exports.getAllMonthlyNotes = getAllMonthlyNotes;
exports.getAllQuarterlyNotes = getAllQuarterlyNotes;
exports.getAllWeeklyNotes = getAllWeeklyNotes;
exports.getAllYearlyNotes = getAllYearlyNotes;
exports.getDailyNote = getDailyNote6;
exports.getDailyNoteSettings = getDailyNoteSettings;
exports.getDateFromFile = getDateFromFile3;
exports.getDateFromPath = getDateFromPath;
exports.getDateUID = getDateUID;
exports.getMonthlyNote = getMonthlyNote;
exports.getMonthlyNoteSettings = getMonthlyNoteSettings;
exports.getPeriodicNoteSettings = getPeriodicNoteSettings;
exports.getQuarterlyNote = getQuarterlyNote;
exports.getQuarterlyNoteSettings = getQuarterlyNoteSettings;
exports.getTemplateInfo = getTemplateInfo;
exports.getWeeklyNote = getWeeklyNote;
exports.getWeeklyNoteSettings = getWeeklyNoteSettings;
exports.getYearlyNote = getYearlyNote;
exports.getYearlyNoteSettings = getYearlyNoteSettings;
}
});
// node_modules/typed-assert/build/index.js
var require_build = __commonJS({
"node_modules/typed-assert/build/index.js"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.check = exports.isPromise = exports.isInstanceOf = exports.isOneOfType = exports.isOneOf = exports.isOptionOfType = exports.isArrayOfType = exports.isRecordOfType = exports.isArray = exports.isRecordWithKeys = exports.isRecord = exports.isDate = exports.isString = exports.isNumber = exports.isBoolean = exports.isExactly = exports.isNotVoid = exports.isNotUndefined = exports.isNotNull = exports.isNever = exports.isUnknown = exports.safeJsonParse = exports.setBaseAssert = exports.assert = exports.defaultAssert = void 0;
var expectedToBe = (type) => `expected to be ${type}`;
var defaultAssert = (condition, message) => {
if (!condition) {
throw new TypeError(message);
}
};
exports.defaultAssert = defaultAssert;
var baseAssert = exports.defaultAssert;
var assert = (condition, message) => baseAssert(condition, message);
exports.assert = assert;
function setBaseAssert(assert2) {
if (assert2) {
baseAssert = assert2;
}
}
exports.setBaseAssert = setBaseAssert;
var safeJsonParse = (json) => JSON.parse(json);
exports.safeJsonParse = safeJsonParse;
function isUnknown(_input) {
return true;
}
exports.isUnknown = isUnknown;
function isNever(_input, message = expectedToBe("unreachable")) {
throw new TypeError(message);
}
exports.isNever = isNever;
function isNotNull(input, message = expectedToBe("not null")) {
(0, exports.assert)(input !== null, message);
}
exports.isNotNull = isNotNull;
function isNotUndefined(input, message = expectedToBe("not undefined")) {
(0, exports.assert)(input !== void 0, message);
}
exports.isNotUndefined = isNotUndefined;
function isNotVoid2(input, message = expectedToBe("neither null nor undefined")) {
(0, exports.assert)(input !== null && input !== void 0, message);
}
exports.isNotVoid = isNotVoid2;
function isExactly(input, value, message = expectedToBe(`exactly ${value}`)) {
(0, exports.assert)(input === value, message);
}
exports.isExactly = isExactly;
function isBoolean(input, message = expectedToBe("a boolean")) {
(0, exports.assert)(typeof input === "boolean", message);
}
exports.isBoolean = isBoolean;
function isNumber(input, message = expectedToBe("a number")) {
(0, exports.assert)(typeof input === "number", message);
}
exports.isNumber = isNumber;
function isString(input, message = expectedToBe("a string")) {
(0, exports.assert)(typeof input === "string", message);
}
exports.isString = isString;
function isDate(input, message = expectedToBe("a Date")) {
(0, exports.assert)(input instanceof Date, message);
}
exports.isDate = isDate;
function isRecord(input, message = expectedToBe("a record")) {
(0, exports.assert)(typeof input === "object", message);
isNotNull(input, message);
for (const key of Object.keys(input)) {
isString(key, message);
}
}
exports.isRecord = isRecord;
function isRecordWithKeys(input, keys, message = expectedToBe(`a record with keys ${keys.join(", ")}`)) {
isRecord(input, message);
for (const key of keys) {
isNotUndefined(input[key]);
}
}
exports.isRecordWithKeys = isRecordWithKeys;
function isArray(input, message = expectedToBe("an array")) {
(0, exports.assert)(Array.isArray(input), message);
}
exports.isArray = isArray;
function isRecordOfType(input, assertT, message = expectedToBe("a record of given type"), itemMessage = expectedToBe("of given type")) {
isRecord(input, message);
for (const item of Object.values(input)) {
assertT(item, itemMessage);
}
}
exports.isRecordOfType = isRecordOfType;
function isArrayOfType(input, assertT, message = expectedToBe("an array of given type"), itemMessage = expectedToBe("of given type")) {
isArray(input, message);
for (const item of input) {
assertT(item, itemMessage);
}
}
exports.isArrayOfType = isArrayOfType;
function isOptionOfType(input, assertT, message = expectedToBe("option of given type")) {
if (input === void 0) {
return;
}
assertT(input, message);
}
exports.isOptionOfType = isOptionOfType;
function isOneOf(input, values, message = expectedToBe(`one of ${values.join(", ")}`)) {
(0, exports.assert)(values.includes(input), message);
}
exports.isOneOf = isOneOf;
function isOneOfType(input, assertT, message = expectedToBe(`one of type`), itemMessage) {
for (const assert2 of assertT) {
try {
assert2(input, itemMessage);
return;
} catch (_) {
}
}
throw new TypeError(message);
}
exports.isOneOfType = isOneOfType;
function isInstanceOf2(input, constructor, message = expectedToBe("an instance of given constructor")) {
(0, exports.assert)(input instanceof constructor, message);
}
exports.isInstanceOf = isInstanceOf2;
function isPromise(input, message = expectedToBe("a promise")) {
isInstanceOf2(input, Promise, message);
}
exports.isPromise = isPromise;
function check(assertT) {
return (input) => {
try {
assertT(input);
return true;
} catch (_) {
return false;
}
};
}
exports.check = check;
}
});
// node_modules/lodash/lodash.min.js
var require_lodash_min = __commonJS({
"node_modules/lodash/lodash.min.js"(exports, module2) {
(function() {
function n(n2, t2, r2) {
switch (r2.length) {
case 0:
return n2.call(t2);
case 1:
return n2.call(t2, r2[0]);
case 2:
return n2.call(t2, r2[0], r2[1]);
case 3:
return n2.call(t2, r2[0], r2[1], r2[2]);
}
return n2.apply(t2, r2);
}
function t(n2, t2, r2, e2) {
for (var u2 = -1, i2 = null == n2 ? 0 : n2.length; ++u2 < i2; ) {
var o2 = n2[u2];
t2(e2, o2, r2(o2), n2);
}
return e2;
}
function r(n2, t2) {
for (var r2 = -1, e2 = null == n2 ? 0 : n2.length; ++r2 < e2 && t2(n2[r2], r2, n2) !== false; )
;
return n2;
}
function e(n2, t2) {
for (var r2 = null == n2 ? 0 : n2.length; r2-- && t2(n2[r2], r2, n2) !== false; )
;
return n2;
}
function u(n2, t2) {
for (var r2 = -1, e2 = null == n2 ? 0 : n2.length; ++r2 < e2; )
if (!t2(n2[r2], r2, n2))
return false;
return true;
}
function i(n2, t2) {
for (var r2 = -1, e2 = null == n2 ? 0 : n2.length, u2 = 0, i2 = []; ++r2 < e2; ) {
var o2 = n2[r2];
t2(o2, r2, n2) && (i2[u2++] = o2);
}
return i2;
}
function o(n2, t2) {
return !!(null == n2 ? 0 : n2.length) && y(n2, t2, 0) > -1;
}
function f(n2, t2, r2) {
for (var e2 = -1, u2 = null == n2 ? 0 : n2.length; ++e2 < u2; )
if (r2(t2, n2[e2]))
return true;
return false;
}
function c(n2, t2) {
for (var r2 = -1, e2 = null == n2 ? 0 : n2.length, u2 = Array(e2); ++r2 < e2; )
u2[r2] = t2(n2[r2], r2, n2);
return u2;
}
function a(n2, t2) {
for (var r2 = -1, e2 = t2.length, u2 = n2.length; ++r2 < e2; )
n2[u2 + r2] = t2[r2];
return n2;
}
function l(n2, t2, r2, e2) {
var u2 = -1, i2 = null == n2 ? 0 : n2.length;
for (e2 && i2 && (r2 = n2[++u2]); ++u2 < i2; )
r2 = t2(r2, n2[u2], u2, n2);
return r2;
}
function s(n2, t2, r2, e2) {
var u2 = null == n2 ? 0 : n2.length;
for (e2 && u2 && (r2 = n2[--u2]); u2--; )
r2 = t2(r2, n2[u2], u2, n2);
return r2;
}
function h(n2, t2) {
for (var r2 = -1, e2 = null == n2 ? 0 : n2.length; ++r2 < e2; )
if (t2(n2[r2], r2, n2))
return true;
return false;
}
function p(n2) {
return n2.split("");
}
function _(n2) {
return n2.match($t) || [];
}
function v(n2, t2, r2) {
var e2;
return r2(n2, function(n3, r3, u2) {
if (t2(n3, r3, u2))
return e2 = r3, false;
}), e2;
}
function g(n2, t2, r2, e2) {
for (var u2 = n2.length, i2 = r2 + (e2 ? 1 : -1); e2 ? i2-- : ++i2 < u2; )
if (t2(n2[i2], i2, n2))
return i2;
return -1;
}
function y(n2, t2, r2) {
return t2 === t2 ? Z(n2, t2, r2) : g(n2, b, r2);
}
function d(n2, t2, r2, e2) {
for (var u2 = r2 - 1, i2 = n2.length; ++u2 < i2; )
if (e2(n2[u2], t2))
return u2;
return -1;
}
function b(n2) {
return n2 !== n2;
}
function w(n2, t2) {
var r2 = null == n2 ? 0 : n2.length;
return r2 ? k(n2, t2) / r2 : Cn;
}
function m(n2) {
return function(t2) {
return null == t2 ? X : t2[n2];
};
}
function x(n2) {
return function(t2) {
return null == n2 ? X : n2[t2];
};
}
function j(n2, t2, r2, e2, u2) {
return u2(n2, function(n3, u3, i2) {
r2 = e2 ? (e2 = false, n3) : t2(r2, n3, u3, i2);
}), r2;
}
function A(n2, t2) {
var r2 = n2.length;
for (n2.sort(t2); r2--; )
n2[r2] = n2[r2].value;
return n2;
}
function k(n2, t2) {
for (var r2, e2 = -1, u2 = n2.length; ++e2 < u2; ) {
var i2 = t2(n2[e2]);
i2 !== X && (r2 = r2 === X ? i2 : r2 + i2);
}
return r2;
}
function O(n2, t2) {
for (var r2 = -1, e2 = Array(n2); ++r2 < n2; )
e2[r2] = t2(r2);
return e2;
}
function I(n2, t2) {
return c(t2, function(t3) {
return [t3, n2[t3]];
});
}
function R(n2) {
return n2 ? n2.slice(0, H(n2) + 1).replace(Lt, "") : n2;
}
function z(n2) {
return function(t2) {
return n2(t2);
};
}
function E(n2, t2) {
return c(t2, function(t3) {
return n2[t3];
});
}
function S(n2, t2) {
return n2.has(t2);
}
function W(n2, t2) {
for (var r2 = -1, e2 = n2.length; ++r2 < e2 && y(t2, n2[r2], 0) > -1; )
;
return r2;
}
function L(n2, t2) {
for (var r2 = n2.length; r2-- && y(t2, n2[r2], 0) > -1; )
;
return r2;
}
function C(n2, t2) {
for (var r2 = n2.length, e2 = 0; r2--; )
n2[r2] === t2 && ++e2;
return e2;
}
function U(n2) {
return "\\" + Yr[n2];
}
function B(n2, t2) {
return null == n2 ? X : n2[t2];
}
function T(n2) {
return Nr.test(n2);
}
function $(n2) {
return Pr.test(n2);
}
function D(n2) {
for (var t2, r2 = []; !(t2 = n2.next()).done; )
r2.push(t2.value);
return r2;
}
function M(n2) {
var t2 = -1, r2 = Array(n2.size);
return n2.forEach(function(n3, e2) {
r2[++t2] = [e2, n3];
}), r2;
}
function F(n2, t2) {
return function(r2) {
return n2(t2(r2));
};
}
function N(n2, t2) {
for (var r2 = -1, e2 = n2.length, u2 = 0, i2 = []; ++r2 < e2; ) {
var o2 = n2[r2];
o2 !== t2 && o2 !== cn || (n2[r2] = cn, i2[u2++] = r2);
}
return i2;
}
function P(n2) {
var t2 = -1, r2 = Array(n2.size);
return n2.forEach(function(n3) {
r2[++t2] = n3;
}), r2;
}
function q(n2) {
var t2 = -1, r2 = Array(n2.size);
return n2.forEach(function(n3) {
r2[++t2] = [n3, n3];
}), r2;
}
function Z(n2, t2, r2) {
for (var e2 = r2 - 1, u2 = n2.length; ++e2 < u2; )
if (n2[e2] === t2)
return e2;
return -1;
}
function K(n2, t2, r2) {
for (var e2 = r2 + 1; e2--; )
if (n2[e2] === t2)
return e2;
return e2;
}
function V(n2) {
return T(n2) ? J(n2) : _e(n2);
}
function G(n2) {
return T(n2) ? Y(n2) : p(n2);
}
function H(n2) {
for (var t2 = n2.length; t2-- && Ct.test(n2.charAt(t2)); )
;
return t2;
}
function J(n2) {
for (var t2 = Mr.lastIndex = 0; Mr.test(n2); )
++t2;
return t2;
}
function Y(n2) {
return n2.match(Mr) || [];
}
function Q(n2) {
return n2.match(Fr) || [];
}
var X, nn = "4.17.21", tn = 200, rn = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", en = "Expected a function", un = "Invalid `variable` option passed into `_.template`", on = "__lodash_hash_undefined__", fn = 500, cn = "__lodash_placeholder__", an = 1, ln = 2, sn = 4, hn = 1, pn = 2, _n = 1, vn = 2, gn = 4, yn = 8, dn = 16, bn = 32, wn = 64, mn = 128, xn = 256, jn = 512, An = 30, kn = "...", On = 800, In = 16, Rn = 1, zn = 2, En = 3, Sn = 1 / 0, Wn = 9007199254740991, Ln = 17976931348623157e292, Cn = NaN, Un = 4294967295, Bn = Un - 1, Tn = Un >>> 1, $n = [["ary", mn], ["bind", _n], ["bindKey", vn], ["curry", yn], ["curryRight", dn], ["flip", jn], ["partial", bn], ["partialRight", wn], ["rearg", xn]], Dn = "[object Arguments]", Mn = "[object Array]", Fn = "[object AsyncFunction]", Nn = "[object Boolean]", Pn = "[object Date]", qn = "[object DOMException]", Zn = "[object Error]", Kn = "[object Function]", Vn = "[object GeneratorFunction]", Gn = "[object Map]", Hn = "[object Number]", Jn = "[object Null]", Yn = "[object Object]", Qn = "[object Promise]", Xn = "[object Proxy]", nt = "[object RegExp]", tt = "[object Set]", rt = "[object String]", et = "[object Symbol]", ut = "[object Undefined]", it = "[object WeakMap]", ot = "[object WeakSet]", ft = "[object ArrayBuffer]", ct = "[object DataView]", at = "[object Float32Array]", lt = "[object Float64Array]", st = "[object Int8Array]", ht = "[object Int16Array]", pt = "[object Int32Array]", _t = "[object Uint8Array]", vt = "[object Uint8ClampedArray]", gt = "[object Uint16Array]", yt = "[object Uint32Array]", dt = /\b__p \+= '';/g, bt = /\b(__p \+=) '' \+/g, wt = /(__e\(.*?\)|\b__t\)) \+\n'';/g, mt = /&(?:amp|lt|gt|quot|#39);/g, xt = /[&<>"']/g, jt = RegExp(mt.source), At = RegExp(xt.source), kt = /<%-([\s\S]+?)%>/g, Ot = /<%([\s\S]+?)%>/g, It = /<%=([\s\S]+?)%>/g, Rt = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, zt = /^\w*$/, Et = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, St = /[\\^$.*+?()[\]{}|]/g, Wt = RegExp(St.source), Lt = /^\s+/, Ct = /\s/, Ut = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, Bt = /\{\n\/\* \[wrapped with (.+)\] \*/, Tt = /,? & /, $t = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g, Dt = /[()=,{}\[\]\/\s]/, Mt = /\\(\\)?/g, Ft = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g, Nt = /\w*$/, Pt = /^[-+]0x[0-9a-f]+$/i, qt = /^0b[01]+$/i, Zt = /^\[object .+?Constructor\]$/, Kt = /^0o[0-7]+$/i, Vt = /^(?:0|[1-9]\d*)$/, Gt = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g, Ht = /($^)/, Jt = /['\n\r\u2028\u2029\\]/g, Yt = "\\ud800-\\udfff", Qt = "\\u0300-\\u036f", Xt = "\\ufe20-\\ufe2f", nr = "\\u20d0-\\u20ff", tr = Qt + Xt + nr, rr = "\\u2700-\\u27bf", er = "a-z\\xdf-\\xf6\\xf8-\\xff", ur = "\\xac\\xb1\\xd7\\xf7", ir = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", or = "\\u2000-\\u206f", fr = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", cr = "A-Z\\xc0-\\xd6\\xd8-\\xde", ar = "\\ufe0e\\ufe0f", lr = ur + ir + or + fr, sr = "['\u2019]", hr = "[" + Yt + "]", pr = "[" + lr + "]", _r = "[" + tr + "]", vr = "\\d+", gr = "[" + rr + "]", yr = "[" + er + "]", dr = "[^" + Yt + lr + vr + rr + er + cr + "]", br = "\\ud83c[\\udffb-\\udfff]", wr = "(?:" + _r + "|" + br + ")", mr = "[^" + Yt + "]", xr = "(?:\\ud83c[\\udde6-\\uddff]){2}", jr = "[\\ud800-\\udbff][\\udc00-\\udfff]", Ar = "[" + cr + "]", kr = "\\u200d", Or = "(?:" + yr + "|" + dr + ")", Ir = "(?:" + Ar + "|" + dr + ")", Rr = "(?:" + sr + "(?:d|ll|m|re|s|t|ve))?", zr = "(?:" + sr + "(?:D|LL|M|RE|S|T|VE))?", Er = wr + "?", Sr = "[" + ar + "]?", Wr = "(?:" + kr + "(?:" + [mr, xr, jr].join("|") + ")" + Sr + Er + ")*", Lr = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", Cr = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", Ur = Sr + Er + Wr, Br = "(?:" + [gr, xr, jr].join("|") + ")" + Ur, Tr = "(?:" + [mr + _r + "?", _r, xr, jr, hr].join("|") + ")", $r = RegExp(sr, "g"), Dr = RegExp(_r, "g"), Mr = RegExp(br + "(?=" + br + ")|" + Tr + Ur, "g"), Fr = RegExp([Ar + "?" + yr + "+" + Rr + "(?=" + [pr, Ar, "$"].join("|") + ")", Ir + "+" + zr + "(?=" + [pr, Ar + Or, "$"].join("|") + ")", Ar + "?" + Or + "+" + Rr, Ar + "+" + zr, Cr, Lr, vr, Br].join("|"), "g"), Nr = RegExp("[" + kr + Yt + tr + ar + "]"), Pr = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/, qr = ["Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol", "TypeError", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout"], Zr = -1, Kr = {};
Kr[at] = Kr[lt] = Kr[st] = Kr[ht] = Kr[pt] = Kr[_t] = Kr[vt] = Kr[gt] = Kr[yt] = true, Kr[Dn] = Kr[Mn] = Kr[ft] = Kr[Nn] = Kr[ct] = Kr[Pn] = Kr[Zn] = Kr[Kn] = Kr[Gn] = Kr[Hn] = Kr[Yn] = Kr[nt] = Kr[tt] = Kr[rt] = Kr[it] = false;
var Vr = {};
Vr[Dn] = Vr[Mn] = Vr[ft] = Vr[ct] = Vr[Nn] = Vr[Pn] = Vr[at] = Vr[lt] = Vr[st] = Vr[ht] = Vr[pt] = Vr[Gn] = Vr[Hn] = Vr[Yn] = Vr[nt] = Vr[tt] = Vr[rt] = Vr[et] = Vr[_t] = Vr[vt] = Vr[gt] = Vr[yt] = true, Vr[Zn] = Vr[Kn] = Vr[it] = false;
var Gr = {
"\xC0": "A",
"\xC1": "A",
"\xC2": "A",
"\xC3": "A",
"\xC4": "A",
"\xC5": "A",
"\xE0": "a",
"\xE1": "a",
"\xE2": "a",
"\xE3": "a",
"\xE4": "a",
"\xE5": "a",
"\xC7": "C",
"\xE7": "c",
"\xD0": "D",
"\xF0": "d",
"\xC8": "E",
"\xC9": "E",
"\xCA": "E",
"\xCB": "E",
"\xE8": "e",
"\xE9": "e",
"\xEA": "e",
"\xEB": "e",
"\xCC": "I",
"\xCD": "I",
"\xCE": "I",
"\xCF": "I",
"\xEC": "i",
"\xED": "i",
"\xEE": "i",
"\xEF": "i",
"\xD1": "N",
"\xF1": "n",
"\xD2": "O",
"\xD3": "O",
"\xD4": "O",
"\xD5": "O",
"\xD6": "O",
"\xD8": "O",
"\xF2": "o",
"\xF3": "o",
"\xF4": "o",
"\xF5": "o",
"\xF6": "o",
"\xF8": "o",
"\xD9": "U",
"\xDA": "U",
"\xDB": "U",
"\xDC": "U",
"\xF9": "u",
"\xFA": "u",
"\xFB": "u",
"\xFC": "u",
"\xDD": "Y",
"\xFD": "y",
"\xFF": "y",
"\xC6": "Ae",
"\xE6": "ae",
"\xDE": "Th",
"\xFE": "th",
"\xDF": "ss",
"\u0100": "A",
"\u0102": "A",
"\u0104": "A",
"\u0101": "a",
"\u0103": "a",
"\u0105": "a",
"\u0106": "C",
"\u0108": "C",
"\u010A": "C",
"\u010C": "C",
"\u0107": "c",
"\u0109": "c",
"\u010B": "c",
"\u010D": "c",
"\u010E": "D",
"\u0110": "D",
"\u010F": "d",
"\u0111": "d",
"\u0112": "E",
"\u0114": "E",
"\u0116": "E",
"\u0118": "E",
"\u011A": "E",
"\u0113": "e",
"\u0115": "e",
"\u0117": "e",
"\u0119": "e",
"\u011B": "e",
"\u011C": "G",
"\u011E": "G",
"\u0120": "G",
"\u0122": "G",
"\u011D": "g",
"\u011F": "g",
"\u0121": "g",
"\u0123": "g",
"\u0124": "H",
"\u0126": "H",
"\u0125": "h",
"\u0127": "h",
"\u0128": "I",
"\u012A": "I",
"\u012C": "I",
"\u012E": "I",
"\u0130": "I",
"\u0129": "i",
"\u012B": "i",
"\u012D": "i",
"\u012F": "i",
"\u0131": "i",
"\u0134": "J",
"\u0135": "j",
"\u0136": "K",
"\u0137": "k",
"\u0138": "k",
"\u0139": "L",
"\u013B": "L",
"\u013D": "L",
"\u013F": "L",
"\u0141": "L",
"\u013A": "l",
"\u013C": "l",
"\u013E": "l",
"\u0140": "l",
"\u0142": "l",
"\u0143": "N",
"\u0145": "N",
"\u0147": "N",
"\u014A": "N",
"\u0144": "n",
"\u0146": "n",
"\u0148": "n",
"\u014B": "n",
"\u014C": "O",
"\u014E": "O",
"\u0150": "O",
"\u014D": "o",
"\u014F": "o",
"\u0151": "o",
"\u0154": "R",
"\u0156": "R",
"\u0158": "R",
"\u0155": "r",
"\u0157": "r",
"\u0159": "r",
"\u015A": "S",
"\u015C": "S",
"\u015E": "S",
"\u0160": "S",
"\u015B": "s",
"\u015D": "s",
"\u015F": "s",
"\u0161": "s",
"\u0162": "T",
"\u0164": "T",
"\u0166": "T",
"\u0163": "t",
"\u0165": "t",
"\u0167": "t",
"\u0168": "U",
"\u016A": "U",
"\u016C": "U",
"\u016E": "U",
"\u0170": "U",
"\u0172": "U",
"\u0169": "u",
"\u016B": "u",
"\u016D": "u",
"\u016F": "u",
"\u0171": "u",
"\u0173": "u",
"\u0174": "W",
"\u0175": "w",
"\u0176": "Y",
"\u0177": "y",
"\u0178": "Y",
"\u0179": "Z",
"\u017B": "Z",
"\u017D": "Z",
"\u017A": "z",
"\u017C": "z",
"\u017E": "z",
"\u0132": "IJ",
"\u0133": "ij",
"\u0152": "Oe",
"\u0153": "oe",
"\u0149": "'n",
"\u017F": "s"
}, Hr = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" }, Jr = { "&amp;": "&", "&lt;": "<", "&gt;": ">", "&quot;": '"', "&#39;": "'" }, Yr = { "\\": "\\", "'": "'", "\n": "n", "\r": "r", "\u2028": "u2028", "\u2029": "u2029" }, Qr = parseFloat, Xr = parseInt, ne = "object" == typeof global && global && global.Object === Object && global, te = "object" == typeof self && self && self.Object === Object && self, re = ne || te || Function("return this")(), ee = "object" == typeof exports && exports && !exports.nodeType && exports, ue = ee && "object" == typeof module2 && module2 && !module2.nodeType && module2, ie = ue && ue.exports === ee, oe = ie && ne.process, fe = function() {
try {
var n2 = ue && ue.require && ue.require("util").types;
return n2 ? n2 : oe && oe.binding && oe.binding("util");
} catch (n3) {
}
}(), ce = fe && fe.isArrayBuffer, ae = fe && fe.isDate, le = fe && fe.isMap, se = fe && fe.isRegExp, he = fe && fe.isSet, pe = fe && fe.isTypedArray, _e = m("length"), ve = x(Gr), ge = x(Hr), ye = x(Jr), de = function p2(x2) {
function Z2(n2) {
if (cc(n2) && !bh(n2) && !(n2 instanceof Ct2)) {
if (n2 instanceof Y2)
return n2;
if (bl.call(n2, "__wrapped__"))
return eo(n2);
}
return new Y2(n2);
}
function J2() {
}
function Y2(n2, t2) {
this.__wrapped__ = n2, this.__actions__ = [], this.__chain__ = !!t2, this.__index__ = 0, this.__values__ = X;
}
function Ct2(n2) {
this.__wrapped__ = n2, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = false, this.__iteratees__ = [], this.__takeCount__ = Un, this.__views__ = [];
}
function $t2() {
var n2 = new Ct2(this.__wrapped__);
return n2.__actions__ = Tu(this.__actions__), n2.__dir__ = this.__dir__, n2.__filtered__ = this.__filtered__, n2.__iteratees__ = Tu(this.__iteratees__), n2.__takeCount__ = this.__takeCount__, n2.__views__ = Tu(this.__views__), n2;
}
function Yt2() {
if (this.__filtered__) {
var n2 = new Ct2(this);
n2.__dir__ = -1, n2.__filtered__ = true;
} else
n2 = this.clone(), n2.__dir__ *= -1;
return n2;
}
function Qt2() {
var n2 = this.__wrapped__.value(), t2 = this.__dir__, r2 = bh(n2), e2 = t2 < 0, u2 = r2 ? n2.length : 0, i2 = Oi(0, u2, this.__views__), o2 = i2.start, f2 = i2.end, c2 = f2 - o2, a2 = e2 ? f2 : o2 - 1, l2 = this.__iteratees__, s2 = l2.length, h2 = 0, p3 = Hl(c2, this.__takeCount__);
if (!r2 || !e2 && u2 == c2 && p3 == c2)
return wu(n2, this.__actions__);
var _2 = [];
n:
for (; c2-- && h2 < p3; ) {
a2 += t2;
for (var v2 = -1, g2 = n2[a2]; ++v2 < s2; ) {
var y2 = l2[v2], d2 = y2.iteratee, b2 = y2.type, w2 = d2(g2);
if (b2 == zn)
g2 = w2;
else if (!w2) {
if (b2 == Rn)
continue n;
break n;
}
}
_2[h2++] = g2;
}
return _2;
}
function Xt2(n2) {
var t2 = -1, r2 = null == n2 ? 0 : n2.length;
for (this.clear(); ++t2 < r2; ) {
var e2 = n2[t2];
this.set(e2[0], e2[1]);
}
}
function nr2() {
this.__data__ = is ? is(null) : {}, this.size = 0;
}
function tr2(n2) {
var t2 = this.has(n2) && delete this.__data__[n2];
return this.size -= t2 ? 1 : 0, t2;
}
function rr2(n2) {
var t2 = this.__data__;
if (is) {
var r2 = t2[n2];
return r2 === on ? X : r2;
}
return bl.call(t2, n2) ? t2[n2] : X;
}
function er2(n2) {
var t2 = this.__data__;
return is ? t2[n2] !== X : bl.call(t2, n2);
}
function ur2(n2, t2) {
var r2 = this.__data__;
return this.size += this.has(n2) ? 0 : 1, r2[n2] = is && t2 === X ? on : t2, this;
}
function ir2(n2) {
var t2 = -1, r2 = null == n2 ? 0 : n2.length;
for (this.clear(); ++t2 < r2; ) {
var e2 = n2[t2];
this.set(e2[0], e2[1]);
}
}
function or2() {
this.__data__ = [], this.size = 0;
}
function fr2(n2) {
var t2 = this.__data__, r2 = Wr2(t2, n2);
return !(r2 < 0) && (r2 == t2.length - 1 ? t2.pop() : Ll.call(t2, r2, 1), --this.size, true);
}
function cr2(n2) {
var t2 = this.__data__, r2 = Wr2(t2, n2);
return r2 < 0 ? X : t2[r2][1];
}
function ar2(n2) {
return Wr2(this.__data__, n2) > -1;
}
function lr2(n2, t2) {
var r2 = this.__data__, e2 = Wr2(r2, n2);
return e2 < 0 ? (++this.size, r2.push([n2, t2])) : r2[e2][1] = t2, this;
}
function sr2(n2) {
var t2 = -1, r2 = null == n2 ? 0 : n2.length;
for (this.clear(); ++t2 < r2; ) {
var e2 = n2[t2];
this.set(e2[0], e2[1]);
}
}
function hr2() {
this.size = 0, this.__data__ = { hash: new Xt2(), map: new (ts || ir2)(), string: new Xt2() };
}
function pr2(n2) {
var t2 = xi(this, n2).delete(n2);
return this.size -= t2 ? 1 : 0, t2;
}
function _r2(n2) {
return xi(this, n2).get(n2);
}
function vr2(n2) {
return xi(this, n2).has(n2);
}
function gr2(n2, t2) {
var r2 = xi(this, n2), e2 = r2.size;
return r2.set(n2, t2), this.size += r2.size == e2 ? 0 : 1, this;
}
function yr2(n2) {
var t2 = -1, r2 = null == n2 ? 0 : n2.length;
for (this.__data__ = new sr2(); ++t2 < r2; )
this.add(n2[t2]);
}
function dr2(n2) {
return this.__data__.set(n2, on), this;
}
function br2(n2) {
return this.__data__.has(n2);
}
function wr2(n2) {
this.size = (this.__data__ = new ir2(n2)).size;
}
function mr2() {
this.__data__ = new ir2(), this.size = 0;
}
function xr2(n2) {
var t2 = this.__data__, r2 = t2.delete(n2);
return this.size = t2.size, r2;
}
function jr2(n2) {
return this.__data__.get(n2);
}
function Ar2(n2) {
return this.__data__.has(n2);
}
function kr2(n2, t2) {
var r2 = this.__data__;
if (r2 instanceof ir2) {
var e2 = r2.__data__;
if (!ts || e2.length < tn - 1)
return e2.push([n2, t2]), this.size = ++r2.size, this;
r2 = this.__data__ = new sr2(e2);
}
return r2.set(n2, t2), this.size = r2.size, this;
}
function Or2(n2, t2) {
var r2 = bh(n2), e2 = !r2 && dh(n2), u2 = !r2 && !e2 && mh(n2), i2 = !r2 && !e2 && !u2 && Oh(n2), o2 = r2 || e2 || u2 || i2, f2 = o2 ? O(n2.length, hl) : [], c2 = f2.length;
for (var a2 in n2)
!t2 && !bl.call(n2, a2) || o2 && ("length" == a2 || u2 && ("offset" == a2 || "parent" == a2) || i2 && ("buffer" == a2 || "byteLength" == a2 || "byteOffset" == a2) || Ci(a2, c2)) || f2.push(a2);
return f2;
}
function Ir2(n2) {
var t2 = n2.length;
return t2 ? n2[tu(0, t2 - 1)] : X;
}
function Rr2(n2, t2) {
return Xi(Tu(n2), Mr2(t2, 0, n2.length));
}
function zr2(n2) {
return Xi(Tu(n2));
}
function Er2(n2, t2, r2) {
(r2 === X || Gf(n2[t2], r2)) && (r2 !== X || t2 in n2) || Br2(n2, t2, r2);
}
function Sr2(n2, t2, r2) {
var e2 = n2[t2];
bl.call(n2, t2) && Gf(e2, r2) && (r2 !== X || t2 in n2) || Br2(n2, t2, r2);
}
function Wr2(n2, t2) {
for (var r2 = n2.length; r2--; )
if (Gf(n2[r2][0], t2))
return r2;
return -1;
}
function Lr2(n2, t2, r2, e2) {
return ys(n2, function(n3, u2, i2) {
t2(e2, n3, r2(n3), i2);
}), e2;
}
function Cr2(n2, t2) {
return n2 && $u(t2, Pc(t2), n2);
}
function Ur2(n2, t2) {
return n2 && $u(t2, qc(t2), n2);
}
function Br2(n2, t2, r2) {
"__proto__" == t2 && Tl ? Tl(n2, t2, { configurable: true, enumerable: true, value: r2, writable: true }) : n2[t2] = r2;
}
function Tr2(n2, t2) {
for (var r2 = -1, e2 = t2.length, u2 = il(e2), i2 = null == n2; ++r2 < e2; )
u2[r2] = i2 ? X : Mc(n2, t2[r2]);
return u2;
}
function Mr2(n2, t2, r2) {
return n2 === n2 && (r2 !== X && (n2 = n2 <= r2 ? n2 : r2), t2 !== X && (n2 = n2 >= t2 ? n2 : t2)), n2;
}
function Fr2(n2, t2, e2, u2, i2, o2) {
var f2, c2 = t2 & an, a2 = t2 & ln, l2 = t2 & sn;
if (e2 && (f2 = i2 ? e2(n2, u2, i2, o2) : e2(n2)), f2 !== X)
return f2;
if (!fc(n2))
return n2;
var s2 = bh(n2);
if (s2) {
if (f2 = zi(n2), !c2)
return Tu(n2, f2);
} else {
var h2 = zs(n2), p3 = h2 == Kn || h2 == Vn;
if (mh(n2))
return Iu(n2, c2);
if (h2 == Yn || h2 == Dn || p3 && !i2) {
if (f2 = a2 || p3 ? {} : Ei(n2), !c2)
return a2 ? Mu(n2, Ur2(f2, n2)) : Du(n2, Cr2(f2, n2));
} else {
if (!Vr[h2])
return i2 ? n2 : {};
f2 = Si(n2, h2, c2);
}
}
o2 || (o2 = new wr2());
var _2 = o2.get(n2);
if (_2)
return _2;
o2.set(n2, f2), kh(n2) ? n2.forEach(function(r2) {
f2.add(Fr2(r2, t2, e2, r2, n2, o2));
}) : jh(n2) && n2.forEach(function(r2, u3) {
f2.set(u3, Fr2(r2, t2, e2, u3, n2, o2));
});
var v2 = l2 ? a2 ? di : yi : a2 ? qc : Pc, g2 = s2 ? X : v2(n2);
return r(g2 || n2, function(r2, u3) {
g2 && (u3 = r2, r2 = n2[u3]), Sr2(f2, u3, Fr2(r2, t2, e2, u3, n2, o2));
}), f2;
}
function Nr2(n2) {
var t2 = Pc(n2);
return function(r2) {
return Pr2(r2, n2, t2);
};
}
function Pr2(n2, t2, r2) {
var e2 = r2.length;
if (null == n2)
return !e2;
for (n2 = ll(n2); e2--; ) {
var u2 = r2[e2], i2 = t2[u2], o2 = n2[u2];
if (o2 === X && !(u2 in n2) || !i2(o2))
return false;
}
return true;
}
function Gr2(n2, t2, r2) {
if ("function" != typeof n2)
throw new pl(en);
return Ws(function() {
n2.apply(X, r2);
}, t2);
}
function Hr2(n2, t2, r2, e2) {
var u2 = -1, i2 = o, a2 = true, l2 = n2.length, s2 = [], h2 = t2.length;
if (!l2)
return s2;
r2 && (t2 = c(t2, z(r2))), e2 ? (i2 = f, a2 = false) : t2.length >= tn && (i2 = S, a2 = false, t2 = new yr2(t2));
n:
for (; ++u2 < l2; ) {
var p3 = n2[u2], _2 = null == r2 ? p3 : r2(p3);
if (p3 = e2 || 0 !== p3 ? p3 : 0, a2 && _2 === _2) {
for (var v2 = h2; v2--; )
if (t2[v2] === _2)
continue n;
s2.push(p3);
} else
i2(t2, _2, e2) || s2.push(p3);
}
return s2;
}
function Jr2(n2, t2) {
var r2 = true;
return ys(n2, function(n3, e2, u2) {
return r2 = !!t2(n3, e2, u2);
}), r2;
}
function Yr2(n2, t2, r2) {
for (var e2 = -1, u2 = n2.length; ++e2 < u2; ) {
var i2 = n2[e2], o2 = t2(i2);
if (null != o2 && (f2 === X ? o2 === o2 && !bc(o2) : r2(o2, f2)))
var f2 = o2, c2 = i2;
}
return c2;
}
function ne2(n2, t2, r2, e2) {
var u2 = n2.length;
for (r2 = kc(r2), r2 < 0 && (r2 = -r2 > u2 ? 0 : u2 + r2), e2 = e2 === X || e2 > u2 ? u2 : kc(e2), e2 < 0 && (e2 += u2), e2 = r2 > e2 ? 0 : Oc(e2); r2 < e2; )
n2[r2++] = t2;
return n2;
}
function te2(n2, t2) {
var r2 = [];
return ys(n2, function(n3, e2, u2) {
t2(n3, e2, u2) && r2.push(n3);
}), r2;
}
function ee2(n2, t2, r2, e2, u2) {
var i2 = -1, o2 = n2.length;
for (r2 || (r2 = Li), u2 || (u2 = []); ++i2 < o2; ) {
var f2 = n2[i2];
t2 > 0 && r2(f2) ? t2 > 1 ? ee2(f2, t2 - 1, r2, e2, u2) : a(u2, f2) : e2 || (u2[u2.length] = f2);
}
return u2;
}
function ue2(n2, t2) {
return n2 && bs(n2, t2, Pc);
}
function oe2(n2, t2) {
return n2 && ws(n2, t2, Pc);
}
function fe2(n2, t2) {
return i(t2, function(t3) {
return uc(n2[t3]);
});
}
function _e2(n2, t2) {
t2 = ku(t2, n2);
for (var r2 = 0, e2 = t2.length; null != n2 && r2 < e2; )
n2 = n2[no(t2[r2++])];
return r2 && r2 == e2 ? n2 : X;
}
function de2(n2, t2, r2) {
var e2 = t2(n2);
return bh(n2) ? e2 : a(e2, r2(n2));
}
function we(n2) {
return null == n2 ? n2 === X ? ut : Jn : Bl && Bl in ll(n2) ? ki(n2) : Ki(n2);
}
function me(n2, t2) {
return n2 > t2;
}
function xe(n2, t2) {
return null != n2 && bl.call(n2, t2);
}
function je(n2, t2) {
return null != n2 && t2 in ll(n2);
}
function Ae(n2, t2, r2) {
return n2 >= Hl(t2, r2) && n2 < Gl(t2, r2);
}
function ke(n2, t2, r2) {
for (var e2 = r2 ? f : o, u2 = n2[0].length, i2 = n2.length, a2 = i2, l2 = il(i2), s2 = 1 / 0, h2 = []; a2--; ) {
var p3 = n2[a2];
a2 && t2 && (p3 = c(p3, z(t2))), s2 = Hl(p3.length, s2), l2[a2] = !r2 && (t2 || u2 >= 120 && p3.length >= 120) ? new yr2(a2 && p3) : X;
}
p3 = n2[0];
var _2 = -1, v2 = l2[0];
n:
for (; ++_2 < u2 && h2.length < s2; ) {
var g2 = p3[_2], y2 = t2 ? t2(g2) : g2;
if (g2 = r2 || 0 !== g2 ? g2 : 0, !(v2 ? S(v2, y2) : e2(h2, y2, r2))) {
for (a2 = i2; --a2; ) {
var d2 = l2[a2];
if (!(d2 ? S(d2, y2) : e2(n2[a2], y2, r2)))
continue n;
}
v2 && v2.push(y2), h2.push(g2);
}
}
return h2;
}
function Oe(n2, t2, r2, e2) {
return ue2(n2, function(n3, u2, i2) {
t2(e2, r2(n3), u2, i2);
}), e2;
}
function Ie(t2, r2, e2) {
r2 = ku(r2, t2), t2 = Gi(t2, r2);
var u2 = null == t2 ? t2 : t2[no(jo(r2))];
return null == u2 ? X : n(u2, t2, e2);
}
function Re(n2) {
return cc(n2) && we(n2) == Dn;
}
function ze(n2) {
return cc(n2) && we(n2) == ft;
}
function Ee(n2) {
return cc(n2) && we(n2) == Pn;
}
function Se(n2, t2, r2, e2, u2) {
return n2 === t2 || (null == n2 || null == t2 || !cc(n2) && !cc(t2) ? n2 !== n2 && t2 !== t2 : We(n2, t2, r2, e2, Se, u2));
}
function We(n2, t2, r2, e2, u2, i2) {
var o2 = bh(n2), f2 = bh(t2), c2 = o2 ? Mn : zs(n2), a2 = f2 ? Mn : zs(t2);
c2 = c2 == Dn ? Yn : c2, a2 = a2 == Dn ? Yn : a2;
var l2 = c2 == Yn, s2 = a2 == Yn, h2 = c2 == a2;
if (h2 && mh(n2)) {
if (!mh(t2))
return false;
o2 = true, l2 = false;
}
if (h2 && !l2)
return i2 || (i2 = new wr2()), o2 || Oh(n2) ? pi(n2, t2, r2, e2, u2, i2) : _i(n2, t2, c2, r2, e2, u2, i2);
if (!(r2 & hn)) {
var p3 = l2 && bl.call(n2, "__wrapped__"), _2 = s2 && bl.call(t2, "__wrapped__");
if (p3 || _2) {
var v2 = p3 ? n2.value() : n2, g2 = _2 ? t2.value() : t2;
return i2 || (i2 = new wr2()), u2(v2, g2, r2, e2, i2);
}
}
return !!h2 && (i2 || (i2 = new wr2()), vi(n2, t2, r2, e2, u2, i2));
}
function Le(n2) {
return cc(n2) && zs(n2) == Gn;
}
function Ce(n2, t2, r2, e2) {
var u2 = r2.length, i2 = u2, o2 = !e2;
if (null == n2)
return !i2;
for (n2 = ll(n2); u2--; ) {
var f2 = r2[u2];
if (o2 && f2[2] ? f2[1] !== n2[f2[0]] : !(f2[0] in n2))
return false;
}
for (; ++u2 < i2; ) {
f2 = r2[u2];
var c2 = f2[0], a2 = n2[c2], l2 = f2[1];
if (o2 && f2[2]) {
if (a2 === X && !(c2 in n2))
return false;
} else {
var s2 = new wr2();
if (e2)
var h2 = e2(a2, l2, c2, n2, t2, s2);
if (!(h2 === X ? Se(l2, a2, hn | pn, e2, s2) : h2))
return false;
}
}
return true;
}
function Ue(n2) {
return !(!fc(n2) || Di(n2)) && (uc(n2) ? kl : Zt).test(to(n2));
}
function Be(n2) {
return cc(n2) && we(n2) == nt;
}
function Te(n2) {
return cc(n2) && zs(n2) == tt;
}
function $e(n2) {
return cc(n2) && oc(n2.length) && !!Kr[we(n2)];
}
function De(n2) {
return "function" == typeof n2 ? n2 : null == n2 ? La : "object" == typeof n2 ? bh(n2) ? Ze(n2[0], n2[1]) : qe(n2) : Fa(n2);
}
function Me(n2) {
if (!Mi(n2))
return Vl(n2);
var t2 = [];
for (var r2 in ll(n2))
bl.call(n2, r2) && "constructor" != r2 && t2.push(r2);
return t2;
}
function Fe(n2) {
if (!fc(n2))
return Zi(n2);
var t2 = Mi(n2), r2 = [];
for (var e2 in n2)
("constructor" != e2 || !t2 && bl.call(n2, e2)) && r2.push(e2);
return r2;
}
function Ne(n2, t2) {
return n2 < t2;
}
function Pe(n2, t2) {
var r2 = -1, e2 = Hf(n2) ? il(n2.length) : [];
return ys(n2, function(n3, u2, i2) {
e2[++r2] = t2(n3, u2, i2);
}), e2;
}
function qe(n2) {
var t2 = ji(n2);
return 1 == t2.length && t2[0][2] ? Ni(t2[0][0], t2[0][1]) : function(r2) {
return r2 === n2 || Ce(r2, n2, t2);
};
}
function Ze(n2, t2) {
return Bi(n2) && Fi(t2) ? Ni(no(n2), t2) : function(r2) {
var e2 = Mc(r2, n2);
return e2 === X && e2 === t2 ? Nc(r2, n2) : Se(t2, e2, hn | pn);
};
}
function Ke(n2, t2, r2, e2, u2) {
n2 !== t2 && bs(t2, function(i2, o2) {
if (u2 || (u2 = new wr2()), fc(i2))
Ve(n2, t2, o2, r2, Ke, e2, u2);
else {
var f2 = e2 ? e2(Ji(n2, o2), i2, o2 + "", n2, t2, u2) : X;
f2 === X && (f2 = i2), Er2(n2, o2, f2);
}
}, qc);
}
function Ve(n2, t2, r2, e2, u2, i2, o2) {
var f2 = Ji(n2, r2), c2 = Ji(t2, r2), a2 = o2.get(c2);
if (a2)
return Er2(n2, r2, a2), X;
var l2 = i2 ? i2(f2, c2, r2 + "", n2, t2, o2) : X, s2 = l2 === X;
if (s2) {
var h2 = bh(c2), p3 = !h2 && mh(c2), _2 = !h2 && !p3 && Oh(c2);
l2 = c2, h2 || p3 || _2 ? bh(f2) ? l2 = f2 : Jf(f2) ? l2 = Tu(f2) : p3 ? (s2 = false, l2 = Iu(c2, true)) : _2 ? (s2 = false, l2 = Wu(c2, true)) : l2 = [] : gc(c2) || dh(c2) ? (l2 = f2, dh(f2) ? l2 = Rc(f2) : fc(f2) && !uc(f2) || (l2 = Ei(c2))) : s2 = false;
}
s2 && (o2.set(c2, l2), u2(l2, c2, e2, i2, o2), o2.delete(c2)), Er2(n2, r2, l2);
}
function Ge(n2, t2) {
var r2 = n2.length;
if (r2)
return t2 += t2 < 0 ? r2 : 0, Ci(t2, r2) ? n2[t2] : X;
}
function He(n2, t2, r2) {
t2 = t2.length ? c(t2, function(n3) {
return bh(n3) ? function(t3) {
return _e2(t3, 1 === n3.length ? n3[0] : n3);
} : n3;
}) : [La];
var e2 = -1;
return t2 = c(t2, z(mi())), A(Pe(n2, function(n3, r3, u2) {
return { criteria: c(t2, function(t3) {
return t3(n3);
}), index: ++e2, value: n3 };
}), function(n3, t3) {
return Cu(n3, t3, r2);
});
}
function Je(n2, t2) {
return Ye(n2, t2, function(t3, r2) {
return Nc(n2, r2);
});
}
function Ye(n2, t2, r2) {
for (var e2 = -1, u2 = t2.length, i2 = {}; ++e2 < u2; ) {
var o2 = t2[e2], f2 = _e2(n2, o2);
r2(f2, o2) && fu(i2, ku(o2, n2), f2);
}
return i2;
}
function Qe(n2) {
return function(t2) {
return _e2(t2, n2);
};
}
function Xe(n2, t2, r2, e2) {
var u2 = e2 ? d : y, i2 = -1, o2 = t2.length, f2 = n2;
for (n2 === t2 && (t2 = Tu(t2)), r2 && (f2 = c(n2, z(r2))); ++i2 < o2; )
for (var a2 = 0, l2 = t2[i2], s2 = r2 ? r2(l2) : l2; (a2 = u2(f2, s2, a2, e2)) > -1; )
f2 !== n2 && Ll.call(f2, a2, 1), Ll.call(n2, a2, 1);
return n2;
}
function nu(n2, t2) {
for (var r2 = n2 ? t2.length : 0, e2 = r2 - 1; r2--; ) {
var u2 = t2[r2];
if (r2 == e2 || u2 !== i2) {
var i2 = u2;
Ci(u2) ? Ll.call(n2, u2, 1) : yu(n2, u2);
}
}
return n2;
}
function tu(n2, t2) {
return n2 + Nl(Ql() * (t2 - n2 + 1));
}
function ru(n2, t2, r2, e2) {
for (var u2 = -1, i2 = Gl(Fl((t2 - n2) / (r2 || 1)), 0), o2 = il(i2); i2--; )
o2[e2 ? i2 : ++u2] = n2, n2 += r2;
return o2;
}
function eu(n2, t2) {
var r2 = "";
if (!n2 || t2 < 1 || t2 > Wn)
return r2;
do
t2 % 2 && (r2 += n2), t2 = Nl(t2 / 2), t2 && (n2 += n2);
while (t2);
return r2;
}
function uu(n2, t2) {
return Ls(Vi(n2, t2, La), n2 + "");
}
function iu(n2) {
return Ir2(ra(n2));
}
function ou(n2, t2) {
var r2 = ra(n2);
return Xi(r2, Mr2(t2, 0, r2.length));
}
function fu(n2, t2, r2, e2) {
if (!fc(n2))
return n2;
t2 = ku(t2, n2);
for (var u2 = -1, i2 = t2.length, o2 = i2 - 1, f2 = n2; null != f2 && ++u2 < i2; ) {
var c2 = no(t2[u2]), a2 = r2;
if ("__proto__" === c2 || "constructor" === c2 || "prototype" === c2)
return n2;
if (u2 != o2) {
var l2 = f2[c2];
a2 = e2 ? e2(l2, c2, f2) : X, a2 === X && (a2 = fc(l2) ? l2 : Ci(t2[u2 + 1]) ? [] : {});
}
Sr2(f2, c2, a2), f2 = f2[c2];
}
return n2;
}
function cu(n2) {
return Xi(ra(n2));
}
function au(n2, t2, r2) {
var e2 = -1, u2 = n2.length;
t2 < 0 && (t2 = -t2 > u2 ? 0 : u2 + t2), r2 = r2 > u2 ? u2 : r2, r2 < 0 && (r2 += u2), u2 = t2 > r2 ? 0 : r2 - t2 >>> 0, t2 >>>= 0;
for (var i2 = il(u2); ++e2 < u2; )
i2[e2] = n2[e2 + t2];
return i2;
}
function lu(n2, t2) {
var r2;
return ys(n2, function(n3, e2, u2) {
return r2 = t2(n3, e2, u2), !r2;
}), !!r2;
}
function su(n2, t2, r2) {
var e2 = 0, u2 = null == n2 ? e2 : n2.length;
if ("number" == typeof t2 && t2 === t2 && u2 <= Tn) {
for (; e2 < u2; ) {
var i2 = e2 + u2 >>> 1, o2 = n2[i2];
null !== o2 && !bc(o2) && (r2 ? o2 <= t2 : o2 < t2) ? e2 = i2 + 1 : u2 = i2;
}
return u2;
}
return hu(n2, t2, La, r2);
}
function hu(n2, t2, r2, e2) {
var u2 = 0, i2 = null == n2 ? 0 : n2.length;
if (0 === i2)
return 0;
t2 = r2(t2);
for (var o2 = t2 !== t2, f2 = null === t2, c2 = bc(t2), a2 = t2 === X; u2 < i2; ) {
var l2 = Nl((u2 + i2) / 2), s2 = r2(n2[l2]), h2 = s2 !== X, p3 = null === s2, _2 = s2 === s2, v2 = bc(s2);
if (o2)
var g2 = e2 || _2;
else
g2 = a2 ? _2 && (e2 || h2) : f2 ? _2 && h2 && (e2 || !p3) : c2 ? _2 && h2 && !p3 && (e2 || !v2) : !p3 && !v2 && (e2 ? s2 <= t2 : s2 < t2);
g2 ? u2 = l2 + 1 : i2 = l2;
}
return Hl(i2, Bn);
}
function pu(n2, t2) {
for (var r2 = -1, e2 = n2.length, u2 = 0, i2 = []; ++r2 < e2; ) {
var o2 = n2[r2], f2 = t2 ? t2(o2) : o2;
if (!r2 || !Gf(f2, c2)) {
var c2 = f2;
i2[u2++] = 0 === o2 ? 0 : o2;
}
}
return i2;
}
function _u(n2) {
return "number" == typeof n2 ? n2 : bc(n2) ? Cn : +n2;
}
function vu(n2) {
if ("string" == typeof n2)
return n2;
if (bh(n2))
return c(n2, vu) + "";
if (bc(n2))
return vs ? vs.call(n2) : "";
var t2 = n2 + "";
return "0" == t2 && 1 / n2 == -Sn ? "-0" : t2;
}
function gu(n2, t2, r2) {
var e2 = -1, u2 = o, i2 = n2.length, c2 = true, a2 = [], l2 = a2;
if (r2)
c2 = false, u2 = f;
else if (i2 >= tn) {
var s2 = t2 ? null : ks(n2);
if (s2)
return P(s2);
c2 = false, u2 = S, l2 = new yr2();
} else
l2 = t2 ? [] : a2;
n:
for (; ++e2 < i2; ) {
var h2 = n2[e2], p3 = t2 ? t2(h2) : h2;
if (h2 = r2 || 0 !== h2 ? h2 : 0, c2 && p3 === p3) {
for (var _2 = l2.length; _2--; )
if (l2[_2] === p3)
continue n;
t2 && l2.push(p3), a2.push(h2);
} else
u2(l2, p3, r2) || (l2 !== a2 && l2.push(p3), a2.push(h2));
}
return a2;
}
function yu(n2, t2) {
return t2 = ku(t2, n2), n2 = Gi(n2, t2), null == n2 || delete n2[no(jo(t2))];
}
function du(n2, t2, r2, e2) {
return fu(n2, t2, r2(_e2(n2, t2)), e2);
}
function bu(n2, t2, r2, e2) {
for (var u2 = n2.length, i2 = e2 ? u2 : -1; (e2 ? i2-- : ++i2 < u2) && t2(n2[i2], i2, n2); )
;
return r2 ? au(n2, e2 ? 0 : i2, e2 ? i2 + 1 : u2) : au(n2, e2 ? i2 + 1 : 0, e2 ? u2 : i2);
}
function wu(n2, t2) {
var r2 = n2;
return r2 instanceof Ct2 && (r2 = r2.value()), l(t2, function(n3, t3) {
return t3.func.apply(t3.thisArg, a([n3], t3.args));
}, r2);
}
function mu(n2, t2, r2) {
var e2 = n2.length;
if (e2 < 2)
return e2 ? gu(n2[0]) : [];
for (var u2 = -1, i2 = il(e2); ++u2 < e2; )
for (var o2 = n2[u2], f2 = -1; ++f2 < e2; )
f2 != u2 && (i2[u2] = Hr2(i2[u2] || o2, n2[f2], t2, r2));
return gu(ee2(i2, 1), t2, r2);
}
function xu(n2, t2, r2) {
for (var e2 = -1, u2 = n2.length, i2 = t2.length, o2 = {}; ++e2 < u2; ) {
r2(o2, n2[e2], e2 < i2 ? t2[e2] : X);
}
return o2;
}
function ju(n2) {
return Jf(n2) ? n2 : [];
}
function Au(n2) {
return "function" == typeof n2 ? n2 : La;
}
function ku(n2, t2) {
return bh(n2) ? n2 : Bi(n2, t2) ? [n2] : Cs(Ec(n2));
}
function Ou(n2, t2, r2) {
var e2 = n2.length;
return r2 = r2 === X ? e2 : r2, !t2 && r2 >= e2 ? n2 : au(n2, t2, r2);
}
function Iu(n2, t2) {
if (t2)
return n2.slice();
var r2 = n2.length, e2 = zl ? zl(r2) : new n2.constructor(r2);
return n2.copy(e2), e2;
}
function Ru(n2) {
var t2 = new n2.constructor(n2.byteLength);
return new Rl(t2).set(new Rl(n2)), t2;
}
function zu(n2, t2) {
return new n2.constructor(t2 ? Ru(n2.buffer) : n2.buffer, n2.byteOffset, n2.byteLength);
}
function Eu(n2) {
var t2 = new n2.constructor(n2.source, Nt.exec(n2));
return t2.lastIndex = n2.lastIndex, t2;
}
function Su(n2) {
return _s ? ll(_s.call(n2)) : {};
}
function Wu(n2, t2) {
return new n2.constructor(t2 ? Ru(n2.buffer) : n2.buffer, n2.byteOffset, n2.length);
}
function Lu(n2, t2) {
if (n2 !== t2) {
var r2 = n2 !== X, e2 = null === n2, u2 = n2 === n2, i2 = bc(n2), o2 = t2 !== X, f2 = null === t2, c2 = t2 === t2, a2 = bc(t2);
if (!f2 && !a2 && !i2 && n2 > t2 || i2 && o2 && c2 && !f2 && !a2 || e2 && o2 && c2 || !r2 && c2 || !u2)
return 1;
if (!e2 && !i2 && !a2 && n2 < t2 || a2 && r2 && u2 && !e2 && !i2 || f2 && r2 && u2 || !o2 && u2 || !c2)
return -1;
}
return 0;
}
function Cu(n2, t2, r2) {
for (var e2 = -1, u2 = n2.criteria, i2 = t2.criteria, o2 = u2.length, f2 = r2.length; ++e2 < o2; ) {
var c2 = Lu(u2[e2], i2[e2]);
if (c2) {
if (e2 >= f2)
return c2;
return c2 * ("desc" == r2[e2] ? -1 : 1);
}
}
return n2.index - t2.index;
}
function Uu(n2, t2, r2, e2) {
for (var u2 = -1, i2 = n2.length, o2 = r2.length, f2 = -1, c2 = t2.length, a2 = Gl(i2 - o2, 0), l2 = il(c2 + a2), s2 = !e2; ++f2 < c2; )
l2[f2] = t2[f2];
for (; ++u2 < o2; )
(s2 || u2 < i2) && (l2[r2[u2]] = n2[u2]);
for (; a2--; )
l2[f2++] = n2[u2++];
return l2;
}
function Bu(n2, t2, r2, e2) {
for (var u2 = -1, i2 = n2.length, o2 = -1, f2 = r2.length, c2 = -1, a2 = t2.length, l2 = Gl(i2 - f2, 0), s2 = il(l2 + a2), h2 = !e2; ++u2 < l2; )
s2[u2] = n2[u2];
for (var p3 = u2; ++c2 < a2; )
s2[p3 + c2] = t2[c2];
for (; ++o2 < f2; )
(h2 || u2 < i2) && (s2[p3 + r2[o2]] = n2[u2++]);
return s2;
}
function Tu(n2, t2) {
var r2 = -1, e2 = n2.length;
for (t2 || (t2 = il(e2)); ++r2 < e2; )
t2[r2] = n2[r2];
return t2;
}
function $u(n2, t2, r2, e2) {
var u2 = !r2;
r2 || (r2 = {});
for (var i2 = -1, o2 = t2.length; ++i2 < o2; ) {
var f2 = t2[i2], c2 = e2 ? e2(r2[f2], n2[f2], f2, r2, n2) : X;
c2 === X && (c2 = n2[f2]), u2 ? Br2(r2, f2, c2) : Sr2(r2, f2, c2);
}
return r2;
}
function Du(n2, t2) {
return $u(n2, Is(n2), t2);
}
function Mu(n2, t2) {
return $u(n2, Rs(n2), t2);
}
function Fu(n2, r2) {
return function(e2, u2) {
var i2 = bh(e2) ? t : Lr2, o2 = r2 ? r2() : {};
return i2(e2, n2, mi(u2, 2), o2);
};
}
function Nu(n2) {
return uu(function(t2, r2) {
var e2 = -1, u2 = r2.length, i2 = u2 > 1 ? r2[u2 - 1] : X, o2 = u2 > 2 ? r2[2] : X;
for (i2 = n2.length > 3 && "function" == typeof i2 ? (u2--, i2) : X, o2 && Ui(r2[0], r2[1], o2) && (i2 = u2 < 3 ? X : i2, u2 = 1), t2 = ll(t2); ++e2 < u2; ) {
var f2 = r2[e2];
f2 && n2(t2, f2, e2, i2);
}
return t2;
});
}
function Pu(n2, t2) {
return function(r2, e2) {
if (null == r2)
return r2;
if (!Hf(r2))
return n2(r2, e2);
for (var u2 = r2.length, i2 = t2 ? u2 : -1, o2 = ll(r2); (t2 ? i2-- : ++i2 < u2) && e2(o2[i2], i2, o2) !== false; )
;
return r2;
};
}
function qu(n2) {
return function(t2, r2, e2) {
for (var u2 = -1, i2 = ll(t2), o2 = e2(t2), f2 = o2.length; f2--; ) {
var c2 = o2[n2 ? f2 : ++u2];
if (r2(i2[c2], c2, i2) === false)
break;
}
return t2;
};
}
function Zu(n2, t2, r2) {
function e2() {
return (this && this !== re && this instanceof e2 ? i2 : n2).apply(u2 ? r2 : this, arguments);
}
var u2 = t2 & _n, i2 = Gu(n2);
return e2;
}
function Ku(n2) {
return function(t2) {
t2 = Ec(t2);
var r2 = T(t2) ? G(t2) : X, e2 = r2 ? r2[0] : t2.charAt(0), u2 = r2 ? Ou(r2, 1).join("") : t2.slice(1);
return e2[n2]() + u2;
};
}
function Vu(n2) {
return function(t2) {
return l(Ra(ca(t2).replace($r, "")), n2, "");
};
}
function Gu(n2) {
return function() {
var t2 = arguments;
switch (t2.length) {
case 0:
return new n2();
case 1:
return new n2(t2[0]);
case 2:
return new n2(t2[0], t2[1]);
case 3:
return new n2(t2[0], t2[1], t2[2]);
case 4:
return new n2(t2[0], t2[1], t2[2], t2[3]);
case 5:
return new n2(t2[0], t2[1], t2[2], t2[3], t2[4]);
case 6:
return new n2(t2[0], t2[1], t2[2], t2[3], t2[4], t2[5]);
case 7:
return new n2(t2[0], t2[1], t2[2], t2[3], t2[4], t2[5], t2[6]);
}
var r2 = gs(n2.prototype), e2 = n2.apply(r2, t2);
return fc(e2) ? e2 : r2;
};
}
function Hu(t2, r2, e2) {
function u2() {
for (var o2 = arguments.length, f2 = il(o2), c2 = o2, a2 = wi(u2); c2--; )
f2[c2] = arguments[c2];
var l2 = o2 < 3 && f2[0] !== a2 && f2[o2 - 1] !== a2 ? [] : N(f2, a2);
return o2 -= l2.length, o2 < e2 ? oi(t2, r2, Qu, u2.placeholder, X, f2, l2, X, X, e2 - o2) : n(this && this !== re && this instanceof u2 ? i2 : t2, this, f2);
}
var i2 = Gu(t2);
return u2;
}
function Ju(n2) {
return function(t2, r2, e2) {
var u2 = ll(t2);
if (!Hf(t2)) {
var i2 = mi(r2, 3);
t2 = Pc(t2), r2 = function(n3) {
return i2(u2[n3], n3, u2);
};
}
var o2 = n2(t2, r2, e2);
return o2 > -1 ? u2[i2 ? t2[o2] : o2] : X;
};
}
function Yu(n2) {
return gi(function(t2) {
var r2 = t2.length, e2 = r2, u2 = Y2.prototype.thru;
for (n2 && t2.reverse(); e2--; ) {
var i2 = t2[e2];
if ("function" != typeof i2)
throw new pl(en);
if (u2 && !o2 && "wrapper" == bi(i2))
var o2 = new Y2([], true);
}
for (e2 = o2 ? e2 : r2; ++e2 < r2; ) {
i2 = t2[e2];
var f2 = bi(i2), c2 = "wrapper" == f2 ? Os(i2) : X;
o2 = c2 && $i(c2[0]) && c2[1] == (mn | yn | bn | xn) && !c2[4].length && 1 == c2[9] ? o2[bi(c2[0])].apply(o2, c2[3]) : 1 == i2.length && $i(i2) ? o2[f2]() : o2.thru(i2);
}
return function() {
var n3 = arguments, e3 = n3[0];
if (o2 && 1 == n3.length && bh(e3))
return o2.plant(e3).value();
for (var u3 = 0, i3 = r2 ? t2[u3].apply(this, n3) : e3; ++u3 < r2; )
i3 = t2[u3].call(this, i3);
return i3;
};
});
}
function Qu(n2, t2, r2, e2, u2, i2, o2, f2, c2, a2) {
function l2() {
for (var y2 = arguments.length, d2 = il(y2), b2 = y2; b2--; )
d2[b2] = arguments[b2];
if (_2)
var w2 = wi(l2), m2 = C(d2, w2);
if (e2 && (d2 = Uu(d2, e2, u2, _2)), i2 && (d2 = Bu(d2, i2, o2, _2)), y2 -= m2, _2 && y2 < a2) {
return oi(n2, t2, Qu, l2.placeholder, r2, d2, N(d2, w2), f2, c2, a2 - y2);
}
var x3 = h2 ? r2 : this, j2 = p3 ? x3[n2] : n2;
return y2 = d2.length, f2 ? d2 = Hi(d2, f2) : v2 && y2 > 1 && d2.reverse(), s2 && c2 < y2 && (d2.length = c2), this && this !== re && this instanceof l2 && (j2 = g2 || Gu(j2)), j2.apply(x3, d2);
}
var s2 = t2 & mn, h2 = t2 & _n, p3 = t2 & vn, _2 = t2 & (yn | dn), v2 = t2 & jn, g2 = p3 ? X : Gu(n2);
return l2;
}
function Xu(n2, t2) {
return function(r2, e2) {
return Oe(r2, n2, t2(e2), {});
};
}
function ni(n2, t2) {
return function(r2, e2) {
var u2;
if (r2 === X && e2 === X)
return t2;
if (r2 !== X && (u2 = r2), e2 !== X) {
if (u2 === X)
return e2;
"string" == typeof r2 || "string" == typeof e2 ? (r2 = vu(r2), e2 = vu(e2)) : (r2 = _u(r2), e2 = _u(e2)), u2 = n2(r2, e2);
}
return u2;
};
}
function ti(t2) {
return gi(function(r2) {
return r2 = c(r2, z(mi())), uu(function(e2) {
var u2 = this;
return t2(r2, function(t3) {
return n(t3, u2, e2);
});
});
});
}
function ri(n2, t2) {
t2 = t2 === X ? " " : vu(t2);
var r2 = t2.length;
if (r2 < 2)
return r2 ? eu(t2, n2) : t2;
var e2 = eu(t2, Fl(n2 / V(t2)));
return T(t2) ? Ou(G(e2), 0, n2).join("") : e2.slice(0, n2);
}
function ei(t2, r2, e2, u2) {
function i2() {
for (var r3 = -1, c2 = arguments.length, a2 = -1, l2 = u2.length, s2 = il(l2 + c2), h2 = this && this !== re && this instanceof i2 ? f2 : t2; ++a2 < l2; )
s2[a2] = u2[a2];
for (; c2--; )
s2[a2++] = arguments[++r3];
return n(h2, o2 ? e2 : this, s2);
}
var o2 = r2 & _n, f2 = Gu(t2);
return i2;
}
function ui(n2) {
return function(t2, r2, e2) {
return e2 && "number" != typeof e2 && Ui(t2, r2, e2) && (r2 = e2 = X), t2 = Ac(t2), r2 === X ? (r2 = t2, t2 = 0) : r2 = Ac(r2), e2 = e2 === X ? t2 < r2 ? 1 : -1 : Ac(e2), ru(t2, r2, e2, n2);
};
}
function ii(n2) {
return function(t2, r2) {
return "string" == typeof t2 && "string" == typeof r2 || (t2 = Ic(t2), r2 = Ic(r2)), n2(t2, r2);
};
}
function oi(n2, t2, r2, e2, u2, i2, o2, f2, c2, a2) {
var l2 = t2 & yn, s2 = l2 ? o2 : X, h2 = l2 ? X : o2, p3 = l2 ? i2 : X, _2 = l2 ? X : i2;
t2 |= l2 ? bn : wn, t2 &= ~(l2 ? wn : bn), t2 & gn || (t2 &= ~(_n | vn));
var v2 = [n2, t2, u2, p3, s2, _2, h2, f2, c2, a2], g2 = r2.apply(X, v2);
return $i(n2) && Ss(g2, v2), g2.placeholder = e2, Yi(g2, n2, t2);
}
function fi(n2) {
var t2 = al[n2];
return function(n3, r2) {
if (n3 = Ic(n3), r2 = null == r2 ? 0 : Hl(kc(r2), 292), r2 && Zl(n3)) {
var e2 = (Ec(n3) + "e").split("e");
return e2 = (Ec(t2(e2[0] + "e" + (+e2[1] + r2))) + "e").split("e"), +(e2[0] + "e" + (+e2[1] - r2));
}
return t2(n3);
};
}
function ci(n2) {
return function(t2) {
var r2 = zs(t2);
return r2 == Gn ? M(t2) : r2 == tt ? q(t2) : I(t2, n2(t2));
};
}
function ai(n2, t2, r2, e2, u2, i2, o2, f2) {
var c2 = t2 & vn;
if (!c2 && "function" != typeof n2)
throw new pl(en);
var a2 = e2 ? e2.length : 0;
if (a2 || (t2 &= ~(bn | wn), e2 = u2 = X), o2 = o2 === X ? o2 : Gl(kc(o2), 0), f2 = f2 === X ? f2 : kc(f2), a2 -= u2 ? u2.length : 0, t2 & wn) {
var l2 = e2, s2 = u2;
e2 = u2 = X;
}
var h2 = c2 ? X : Os(n2), p3 = [n2, t2, r2, e2, u2, l2, s2, i2, o2, f2];
if (h2 && qi(p3, h2), n2 = p3[0], t2 = p3[1], r2 = p3[2], e2 = p3[3], u2 = p3[4], f2 = p3[9] = p3[9] === X ? c2 ? 0 : n2.length : Gl(p3[9] - a2, 0), !f2 && t2 & (yn | dn) && (t2 &= ~(yn | dn)), t2 && t2 != _n)
_2 = t2 == yn || t2 == dn ? Hu(n2, t2, f2) : t2 != bn && t2 != (_n | bn) || u2.length ? Qu.apply(X, p3) : ei(n2, t2, r2, e2);
else
var _2 = Zu(n2, t2, r2);
return Yi((h2 ? ms : Ss)(_2, p3), n2, t2);
}
function li(n2, t2, r2, e2) {
return n2 === X || Gf(n2, gl[r2]) && !bl.call(e2, r2) ? t2 : n2;
}
function si(n2, t2, r2, e2, u2, i2) {
return fc(n2) && fc(t2) && (i2.set(t2, n2), Ke(n2, t2, X, si, i2), i2.delete(t2)), n2;
}
function hi(n2) {
return gc(n2) ? X : n2;
}
function pi(n2, t2, r2, e2, u2, i2) {
var o2 = r2 & hn, f2 = n2.length, c2 = t2.length;
if (f2 != c2 && !(o2 && c2 > f2))
return false;
var a2 = i2.get(n2), l2 = i2.get(t2);
if (a2 && l2)
return a2 == t2 && l2 == n2;
var s2 = -1, p3 = true, _2 = r2 & pn ? new yr2() : X;
for (i2.set(n2, t2), i2.set(t2, n2); ++s2 < f2; ) {
var v2 = n2[s2], g2 = t2[s2];
if (e2)
var y2 = o2 ? e2(g2, v2, s2, t2, n2, i2) : e2(v2, g2, s2, n2, t2, i2);
if (y2 !== X) {
if (y2)
continue;
p3 = false;
break;
}
if (_2) {
if (!h(t2, function(n3, t3) {
if (!S(_2, t3) && (v2 === n3 || u2(v2, n3, r2, e2, i2)))
return _2.push(t3);
})) {
p3 = false;
break;
}
} else if (v2 !== g2 && !u2(v2, g2, r2, e2, i2)) {
p3 = false;
break;
}
}
return i2.delete(n2), i2.delete(t2), p3;
}
function _i(n2, t2, r2, e2, u2, i2, o2) {
switch (r2) {
case ct:
if (n2.byteLength != t2.byteLength || n2.byteOffset != t2.byteOffset)
return false;
n2 = n2.buffer, t2 = t2.buffer;
case ft:
return !(n2.byteLength != t2.byteLength || !i2(new Rl(n2), new Rl(t2)));
case Nn:
case Pn:
case Hn:
return Gf(+n2, +t2);
case Zn:
return n2.name == t2.name && n2.message == t2.message;
case nt:
case rt:
return n2 == t2 + "";
case Gn:
var f2 = M;
case tt:
var c2 = e2 & hn;
if (f2 || (f2 = P), n2.size != t2.size && !c2)
return false;
var a2 = o2.get(n2);
if (a2)
return a2 == t2;
e2 |= pn, o2.set(n2, t2);
var l2 = pi(f2(n2), f2(t2), e2, u2, i2, o2);
return o2.delete(n2), l2;
case et:
if (_s)
return _s.call(n2) == _s.call(t2);
}
return false;
}
function vi(n2, t2, r2, e2, u2, i2) {
var o2 = r2 & hn, f2 = yi(n2), c2 = f2.length;
if (c2 != yi(t2).length && !o2)
return false;
for (var a2 = c2; a2--; ) {
var l2 = f2[a2];
if (!(o2 ? l2 in t2 : bl.call(t2, l2)))
return false;
}
var s2 = i2.get(n2), h2 = i2.get(t2);
if (s2 && h2)
return s2 == t2 && h2 == n2;
var p3 = true;
i2.set(n2, t2), i2.set(t2, n2);
for (var _2 = o2; ++a2 < c2; ) {
l2 = f2[a2];
var v2 = n2[l2], g2 = t2[l2];
if (e2)
var y2 = o2 ? e2(g2, v2, l2, t2, n2, i2) : e2(v2, g2, l2, n2, t2, i2);
if (!(y2 === X ? v2 === g2 || u2(v2, g2, r2, e2, i2) : y2)) {
p3 = false;
break;
}
_2 || (_2 = "constructor" == l2);
}
if (p3 && !_2) {
var d2 = n2.constructor, b2 = t2.constructor;
d2 != b2 && "constructor" in n2 && "constructor" in t2 && !("function" == typeof d2 && d2 instanceof d2 && "function" == typeof b2 && b2 instanceof b2) && (p3 = false);
}
return i2.delete(n2), i2.delete(t2), p3;
}
function gi(n2) {
return Ls(Vi(n2, X, _o), n2 + "");
}
function yi(n2) {
return de2(n2, Pc, Is);
}
function di(n2) {
return de2(n2, qc, Rs);
}
function bi(n2) {
for (var t2 = n2.name + "", r2 = fs[t2], e2 = bl.call(fs, t2) ? r2.length : 0; e2--; ) {
var u2 = r2[e2], i2 = u2.func;
if (null == i2 || i2 == n2)
return u2.name;
}
return t2;
}
function wi(n2) {
return (bl.call(Z2, "placeholder") ? Z2 : n2).placeholder;
}
function mi() {
var n2 = Z2.iteratee || Ca;
return n2 = n2 === Ca ? De : n2, arguments.length ? n2(arguments[0], arguments[1]) : n2;
}
function xi(n2, t2) {
var r2 = n2.__data__;
return Ti(t2) ? r2["string" == typeof t2 ? "string" : "hash"] : r2.map;
}
function ji(n2) {
for (var t2 = Pc(n2), r2 = t2.length; r2--; ) {
var e2 = t2[r2], u2 = n2[e2];
t2[r2] = [e2, u2, Fi(u2)];
}
return t2;
}
function Ai(n2, t2) {
var r2 = B(n2, t2);
return Ue(r2) ? r2 : X;
}
function ki(n2) {
var t2 = bl.call(n2, Bl), r2 = n2[Bl];
try {
n2[Bl] = X;
var e2 = true;
} catch (n3) {
}
var u2 = xl.call(n2);
return e2 && (t2 ? n2[Bl] = r2 : delete n2[Bl]), u2;
}
function Oi(n2, t2, r2) {
for (var e2 = -1, u2 = r2.length; ++e2 < u2; ) {
var i2 = r2[e2], o2 = i2.size;
switch (i2.type) {
case "drop":
n2 += o2;
break;
case "dropRight":
t2 -= o2;
break;
case "take":
t2 = Hl(t2, n2 + o2);
break;
case "takeRight":
n2 = Gl(n2, t2 - o2);
}
}
return { start: n2, end: t2 };
}
function Ii(n2) {
var t2 = n2.match(Bt);
return t2 ? t2[1].split(Tt) : [];
}
function Ri(n2, t2, r2) {
t2 = ku(t2, n2);
for (var e2 = -1, u2 = t2.length, i2 = false; ++e2 < u2; ) {
var o2 = no(t2[e2]);
if (!(i2 = null != n2 && r2(n2, o2)))
break;
n2 = n2[o2];
}
return i2 || ++e2 != u2 ? i2 : (u2 = null == n2 ? 0 : n2.length, !!u2 && oc(u2) && Ci(o2, u2) && (bh(n2) || dh(n2)));
}
function zi(n2) {
var t2 = n2.length, r2 = new n2.constructor(t2);
return t2 && "string" == typeof n2[0] && bl.call(n2, "index") && (r2.index = n2.index, r2.input = n2.input), r2;
}
function Ei(n2) {
return "function" != typeof n2.constructor || Mi(n2) ? {} : gs(El(n2));
}
function Si(n2, t2, r2) {
var e2 = n2.constructor;
switch (t2) {
case ft:
return Ru(n2);
case Nn:
case Pn:
return new e2(+n2);
case ct:
return zu(n2, r2);
case at:
case lt:
case st:
case ht:
case pt:
case _t:
case vt:
case gt:
case yt:
return Wu(n2, r2);
case Gn:
return new e2();
case Hn:
case rt:
return new e2(n2);
case nt:
return Eu(n2);
case tt:
return new e2();
case et:
return Su(n2);
}
}
function Wi(n2, t2) {
var r2 = t2.length;
if (!r2)
return n2;
var e2 = r2 - 1;
return t2[e2] = (r2 > 1 ? "& " : "") + t2[e2], t2 = t2.join(r2 > 2 ? ", " : " "), n2.replace(Ut, "{\n/* [wrapped with " + t2 + "] */\n");
}
function Li(n2) {
return bh(n2) || dh(n2) || !!(Cl && n2 && n2[Cl]);
}
function Ci(n2, t2) {
var r2 = typeof n2;
return t2 = null == t2 ? Wn : t2, !!t2 && ("number" == r2 || "symbol" != r2 && Vt.test(n2)) && n2 > -1 && n2 % 1 == 0 && n2 < t2;
}
function Ui(n2, t2, r2) {
if (!fc(r2))
return false;
var e2 = typeof t2;
return !!("number" == e2 ? Hf(r2) && Ci(t2, r2.length) : "string" == e2 && t2 in r2) && Gf(r2[t2], n2);
}
function Bi(n2, t2) {
if (bh(n2))
return false;
var r2 = typeof n2;
return !("number" != r2 && "symbol" != r2 && "boolean" != r2 && null != n2 && !bc(n2)) || (zt.test(n2) || !Rt.test(n2) || null != t2 && n2 in ll(t2));
}
function Ti(n2) {
var t2 = typeof n2;
return "string" == t2 || "number" == t2 || "symbol" == t2 || "boolean" == t2 ? "__proto__" !== n2 : null === n2;
}
function $i(n2) {
var t2 = bi(n2), r2 = Z2[t2];
if ("function" != typeof r2 || !(t2 in Ct2.prototype))
return false;
if (n2 === r2)
return true;
var e2 = Os(r2);
return !!e2 && n2 === e2[0];
}
function Di(n2) {
return !!ml && ml in n2;
}
function Mi(n2) {
var t2 = n2 && n2.constructor;
return n2 === ("function" == typeof t2 && t2.prototype || gl);
}
function Fi(n2) {
return n2 === n2 && !fc(n2);
}
function Ni(n2, t2) {
return function(r2) {
return null != r2 && (r2[n2] === t2 && (t2 !== X || n2 in ll(r2)));
};
}
function Pi(n2) {
var t2 = Cf(n2, function(n3) {
return r2.size === fn && r2.clear(), n3;
}), r2 = t2.cache;
return t2;
}
function qi(n2, t2) {
var r2 = n2[1], e2 = t2[1], u2 = r2 | e2, i2 = u2 < (_n | vn | mn), o2 = e2 == mn && r2 == yn || e2 == mn && r2 == xn && n2[7].length <= t2[8] || e2 == (mn | xn) && t2[7].length <= t2[8] && r2 == yn;
if (!i2 && !o2)
return n2;
e2 & _n && (n2[2] = t2[2], u2 |= r2 & _n ? 0 : gn);
var f2 = t2[3];
if (f2) {
var c2 = n2[3];
n2[3] = c2 ? Uu(c2, f2, t2[4]) : f2, n2[4] = c2 ? N(n2[3], cn) : t2[4];
}
return f2 = t2[5], f2 && (c2 = n2[5], n2[5] = c2 ? Bu(c2, f2, t2[6]) : f2, n2[6] = c2 ? N(n2[5], cn) : t2[6]), f2 = t2[7], f2 && (n2[7] = f2), e2 & mn && (n2[8] = null == n2[8] ? t2[8] : Hl(n2[8], t2[8])), null == n2[9] && (n2[9] = t2[9]), n2[0] = t2[0], n2[1] = u2, n2;
}
function Zi(n2) {
var t2 = [];
if (null != n2)
for (var r2 in ll(n2))
t2.push(r2);
return t2;
}
function Ki(n2) {
return xl.call(n2);
}
function Vi(t2, r2, e2) {
return r2 = Gl(r2 === X ? t2.length - 1 : r2, 0), function() {
for (var u2 = arguments, i2 = -1, o2 = Gl(u2.length - r2, 0), f2 = il(o2); ++i2 < o2; )
f2[i2] = u2[r2 + i2];
i2 = -1;
for (var c2 = il(r2 + 1); ++i2 < r2; )
c2[i2] = u2[i2];
return c2[r2] = e2(f2), n(t2, this, c2);
};
}
function Gi(n2, t2) {
return t2.length < 2 ? n2 : _e2(n2, au(t2, 0, -1));
}
function Hi(n2, t2) {
for (var r2 = n2.length, e2 = Hl(t2.length, r2), u2 = Tu(n2); e2--; ) {
var i2 = t2[e2];
n2[e2] = Ci(i2, r2) ? u2[i2] : X;
}
return n2;
}
function Ji(n2, t2) {
if (("constructor" !== t2 || "function" != typeof n2[t2]) && "__proto__" != t2)
return n2[t2];
}
function Yi(n2, t2, r2) {
var e2 = t2 + "";
return Ls(n2, Wi(e2, ro(Ii(e2), r2)));
}
function Qi(n2) {
var t2 = 0, r2 = 0;
return function() {
var e2 = Jl(), u2 = In - (e2 - r2);
if (r2 = e2, u2 > 0) {
if (++t2 >= On)
return arguments[0];
} else
t2 = 0;
return n2.apply(X, arguments);
};
}
function Xi(n2, t2) {
var r2 = -1, e2 = n2.length, u2 = e2 - 1;
for (t2 = t2 === X ? e2 : t2; ++r2 < t2; ) {
var i2 = tu(r2, u2), o2 = n2[i2];
n2[i2] = n2[r2], n2[r2] = o2;
}
return n2.length = t2, n2;
}
function no(n2) {
if ("string" == typeof n2 || bc(n2))
return n2;
var t2 = n2 + "";
return "0" == t2 && 1 / n2 == -Sn ? "-0" : t2;
}
function to(n2) {
if (null != n2) {
try {
return dl.call(n2);
} catch (n3) {
}
try {
return n2 + "";
} catch (n3) {
}
}
return "";
}
function ro(n2, t2) {
return r($n, function(r2) {
var e2 = "_." + r2[0];
t2 & r2[1] && !o(n2, e2) && n2.push(e2);
}), n2.sort();
}
function eo(n2) {
if (n2 instanceof Ct2)
return n2.clone();
var t2 = new Y2(n2.__wrapped__, n2.__chain__);
return t2.__actions__ = Tu(n2.__actions__), t2.__index__ = n2.__index__, t2.__values__ = n2.__values__, t2;
}
function uo(n2, t2, r2) {
t2 = (r2 ? Ui(n2, t2, r2) : t2 === X) ? 1 : Gl(kc(t2), 0);
var e2 = null == n2 ? 0 : n2.length;
if (!e2 || t2 < 1)
return [];
for (var u2 = 0, i2 = 0, o2 = il(Fl(e2 / t2)); u2 < e2; )
o2[i2++] = au(n2, u2, u2 += t2);
return o2;
}
function io(n2) {
for (var t2 = -1, r2 = null == n2 ? 0 : n2.length, e2 = 0, u2 = []; ++t2 < r2; ) {
var i2 = n2[t2];
i2 && (u2[e2++] = i2);
}
return u2;
}
function oo() {
var n2 = arguments.length;
if (!n2)
return [];
for (var t2 = il(n2 - 1), r2 = arguments[0], e2 = n2; e2--; )
t2[e2 - 1] = arguments[e2];
return a(bh(r2) ? Tu(r2) : [r2], ee2(t2, 1));
}
function fo(n2, t2, r2) {
var e2 = null == n2 ? 0 : n2.length;
return e2 ? (t2 = r2 || t2 === X ? 1 : kc(t2), au(n2, t2 < 0 ? 0 : t2, e2)) : [];
}
function co(n2, t2, r2) {
var e2 = null == n2 ? 0 : n2.length;
return e2 ? (t2 = r2 || t2 === X ? 1 : kc(t2), t2 = e2 - t2, au(n2, 0, t2 < 0 ? 0 : t2)) : [];
}
function ao(n2, t2) {
return n2 && n2.length ? bu(n2, mi(t2, 3), true, true) : [];
}
function lo(n2, t2) {
return n2 && n2.length ? bu(n2, mi(t2, 3), true) : [];
}
function so(n2, t2, r2, e2) {
var u2 = null == n2 ? 0 : n2.length;
return u2 ? (r2 && "number" != typeof r2 && Ui(n2, t2, r2) && (r2 = 0, e2 = u2), ne2(n2, t2, r2, e2)) : [];
}
function ho(n2, t2, r2) {
var e2 = null == n2 ? 0 : n2.length;
if (!e2)
return -1;
var u2 = null == r2 ? 0 : kc(r2);
return u2 < 0 && (u2 = Gl(e2 + u2, 0)), g(n2, mi(t2, 3), u2);
}
function po(n2, t2, r2) {
var e2 = null == n2 ? 0 : n2.length;
if (!e2)
return -1;
var u2 = e2 - 1;
return r2 !== X && (u2 = kc(r2), u2 = r2 < 0 ? Gl(e2 + u2, 0) : Hl(u2, e2 - 1)), g(n2, mi(t2, 3), u2, true);
}
function _o(n2) {
return (null == n2 ? 0 : n2.length) ? ee2(n2, 1) : [];
}
function vo(n2) {
return (null == n2 ? 0 : n2.length) ? ee2(n2, Sn) : [];
}
function go(n2, t2) {
return (null == n2 ? 0 : n2.length) ? (t2 = t2 === X ? 1 : kc(t2), ee2(n2, t2)) : [];
}
function yo(n2) {
for (var t2 = -1, r2 = null == n2 ? 0 : n2.length, e2 = {}; ++t2 < r2; ) {
var u2 = n2[t2];
e2[u2[0]] = u2[1];
}
return e2;
}
function bo(n2) {
return n2 && n2.length ? n2[0] : X;
}
function wo(n2, t2, r2) {
var e2 = null == n2 ? 0 : n2.length;
if (!e2)
return -1;
var u2 = null == r2 ? 0 : kc(r2);
return u2 < 0 && (u2 = Gl(e2 + u2, 0)), y(n2, t2, u2);
}
function mo(n2) {
return (null == n2 ? 0 : n2.length) ? au(n2, 0, -1) : [];
}
function xo(n2, t2) {
return null == n2 ? "" : Kl.call(n2, t2);
}
function jo(n2) {
var t2 = null == n2 ? 0 : n2.length;
return t2 ? n2[t2 - 1] : X;
}
function Ao(n2, t2, r2) {
var e2 = null == n2 ? 0 : n2.length;
if (!e2)
return -1;
var u2 = e2;
return r2 !== X && (u2 = kc(r2), u2 = u2 < 0 ? Gl(e2 + u2, 0) : Hl(u2, e2 - 1)), t2 === t2 ? K(n2, t2, u2) : g(n2, b, u2, true);
}
function ko(n2, t2) {
return n2 && n2.length ? Ge(n2, kc(t2)) : X;
}
function Oo(n2, t2) {
return n2 && n2.length && t2 && t2.length ? Xe(n2, t2) : n2;
}
function Io(n2, t2, r2) {
return n2 && n2.length && t2 && t2.length ? Xe(n2, t2, mi(r2, 2)) : n2;
}
function Ro(n2, t2, r2) {
return n2 && n2.length && t2 && t2.length ? Xe(n2, t2, X, r2) : n2;
}
function zo(n2, t2) {
var r2 = [];
if (!n2 || !n2.length)
return r2;
var e2 = -1, u2 = [], i2 = n2.length;
for (t2 = mi(t2, 3); ++e2 < i2; ) {
var o2 = n2[e2];
t2(o2, e2, n2) && (r2.push(o2), u2.push(e2));
}
return nu(n2, u2), r2;
}
function Eo(n2) {
return null == n2 ? n2 : Xl.call(n2);
}
function So(n2, t2, r2) {
var e2 = null == n2 ? 0 : n2.length;
return e2 ? (r2 && "number" != typeof r2 && Ui(n2, t2, r2) ? (t2 = 0, r2 = e2) : (t2 = null == t2 ? 0 : kc(t2), r2 = r2 === X ? e2 : kc(r2)), au(n2, t2, r2)) : [];
}
function Wo(n2, t2) {
return su(n2, t2);
}
function Lo(n2, t2, r2) {
return hu(n2, t2, mi(r2, 2));
}
function Co(n2, t2) {
var r2 = null == n2 ? 0 : n2.length;
if (r2) {
var e2 = su(n2, t2);
if (e2 < r2 && Gf(n2[e2], t2))
return e2;
}
return -1;
}
function Uo(n2, t2) {
return su(n2, t2, true);
}
function Bo(n2, t2, r2) {
return hu(n2, t2, mi(r2, 2), true);
}
function To(n2, t2) {
if (null == n2 ? 0 : n2.length) {
var r2 = su(n2, t2, true) - 1;
if (Gf(n2[r2], t2))
return r2;
}
return -1;
}
function $o(n2) {
return n2 && n2.length ? pu(n2) : [];
}
function Do(n2, t2) {
return n2 && n2.length ? pu(n2, mi(t2, 2)) : [];
}
function Mo(n2) {
var t2 = null == n2 ? 0 : n2.length;
return t2 ? au(n2, 1, t2) : [];
}
function Fo(n2, t2, r2) {
return n2 && n2.length ? (t2 = r2 || t2 === X ? 1 : kc(t2), au(n2, 0, t2 < 0 ? 0 : t2)) : [];
}
function No(n2, t2, r2) {
var e2 = null == n2 ? 0 : n2.length;
return e2 ? (t2 = r2 || t2 === X ? 1 : kc(t2), t2 = e2 - t2, au(n2, t2 < 0 ? 0 : t2, e2)) : [];
}
function Po(n2, t2) {
return n2 && n2.length ? bu(n2, mi(t2, 3), false, true) : [];
}
function qo(n2, t2) {
return n2 && n2.length ? bu(n2, mi(t2, 3)) : [];
}
function Zo(n2) {
return n2 && n2.length ? gu(n2) : [];
}
function Ko(n2, t2) {
return n2 && n2.length ? gu(n2, mi(t2, 2)) : [];
}
function Vo(n2, t2) {
return t2 = "function" == typeof t2 ? t2 : X, n2 && n2.length ? gu(n2, X, t2) : [];
}
function Go(n2) {
if (!n2 || !n2.length)
return [];
var t2 = 0;
return n2 = i(n2, function(n3) {
if (Jf(n3))
return t2 = Gl(n3.length, t2), true;
}), O(t2, function(t3) {
return c(n2, m(t3));
});
}
function Ho(t2, r2) {
if (!t2 || !t2.length)
return [];
var e2 = Go(t2);
return null == r2 ? e2 : c(e2, function(t3) {
return n(r2, X, t3);
});
}
function Jo(n2, t2) {
return xu(n2 || [], t2 || [], Sr2);
}
function Yo(n2, t2) {
return xu(n2 || [], t2 || [], fu);
}
function Qo(n2) {
var t2 = Z2(n2);
return t2.__chain__ = true, t2;
}
function Xo(n2, t2) {
return t2(n2), n2;
}
function nf(n2, t2) {
return t2(n2);
}
function tf() {
return Qo(this);
}
function rf() {
return new Y2(this.value(), this.__chain__);
}
function ef() {
this.__values__ === X && (this.__values__ = jc(this.value()));
var n2 = this.__index__ >= this.__values__.length;
return { done: n2, value: n2 ? X : this.__values__[this.__index__++] };
}
function uf() {
return this;
}
function of(n2) {
for (var t2, r2 = this; r2 instanceof J2; ) {
var e2 = eo(r2);
e2.__index__ = 0, e2.__values__ = X, t2 ? u2.__wrapped__ = e2 : t2 = e2;
var u2 = e2;
r2 = r2.__wrapped__;
}
return u2.__wrapped__ = n2, t2;
}
function ff() {
var n2 = this.__wrapped__;
if (n2 instanceof Ct2) {
var t2 = n2;
return this.__actions__.length && (t2 = new Ct2(this)), t2 = t2.reverse(), t2.__actions__.push({ func: nf, args: [Eo], thisArg: X }), new Y2(t2, this.__chain__);
}
return this.thru(Eo);
}
function cf() {
return wu(this.__wrapped__, this.__actions__);
}
function af(n2, t2, r2) {
var e2 = bh(n2) ? u : Jr2;
return r2 && Ui(n2, t2, r2) && (t2 = X), e2(n2, mi(t2, 3));
}
function lf(n2, t2) {
return (bh(n2) ? i : te2)(n2, mi(t2, 3));
}
function sf(n2, t2) {
return ee2(yf(n2, t2), 1);
}
function hf(n2, t2) {
return ee2(yf(n2, t2), Sn);
}
function pf(n2, t2, r2) {
return r2 = r2 === X ? 1 : kc(r2), ee2(yf(n2, t2), r2);
}
function _f(n2, t2) {
return (bh(n2) ? r : ys)(n2, mi(t2, 3));
}
function vf(n2, t2) {
return (bh(n2) ? e : ds)(n2, mi(t2, 3));
}
function gf(n2, t2, r2, e2) {
n2 = Hf(n2) ? n2 : ra(n2), r2 = r2 && !e2 ? kc(r2) : 0;
var u2 = n2.length;
return r2 < 0 && (r2 = Gl(u2 + r2, 0)), dc(n2) ? r2 <= u2 && n2.indexOf(t2, r2) > -1 : !!u2 && y(n2, t2, r2) > -1;
}
function yf(n2, t2) {
return (bh(n2) ? c : Pe)(n2, mi(t2, 3));
}
function df(n2, t2, r2, e2) {
return null == n2 ? [] : (bh(t2) || (t2 = null == t2 ? [] : [t2]), r2 = e2 ? X : r2, bh(r2) || (r2 = null == r2 ? [] : [r2]), He(n2, t2, r2));
}
function bf(n2, t2, r2) {
var e2 = bh(n2) ? l : j, u2 = arguments.length < 3;
return e2(n2, mi(t2, 4), r2, u2, ys);
}
function wf(n2, t2, r2) {
var e2 = bh(n2) ? s : j, u2 = arguments.length < 3;
return e2(n2, mi(t2, 4), r2, u2, ds);
}
function mf(n2, t2) {
return (bh(n2) ? i : te2)(n2, Uf(mi(t2, 3)));
}
function xf(n2) {
return (bh(n2) ? Ir2 : iu)(n2);
}
function jf(n2, t2, r2) {
return t2 = (r2 ? Ui(n2, t2, r2) : t2 === X) ? 1 : kc(t2), (bh(n2) ? Rr2 : ou)(n2, t2);
}
function Af(n2) {
return (bh(n2) ? zr2 : cu)(n2);
}
function kf(n2) {
if (null == n2)
return 0;
if (Hf(n2))
return dc(n2) ? V(n2) : n2.length;
var t2 = zs(n2);
return t2 == Gn || t2 == tt ? n2.size : Me(n2).length;
}
function Of(n2, t2, r2) {
var e2 = bh(n2) ? h : lu;
return r2 && Ui(n2, t2, r2) && (t2 = X), e2(n2, mi(t2, 3));
}
function If(n2, t2) {
if ("function" != typeof t2)
throw new pl(en);
return n2 = kc(n2), function() {
if (--n2 < 1)
return t2.apply(this, arguments);
};
}
function Rf(n2, t2, r2) {
return t2 = r2 ? X : t2, t2 = n2 && null == t2 ? n2.length : t2, ai(n2, mn, X, X, X, X, t2);
}
function zf(n2, t2) {
var r2;
if ("function" != typeof t2)
throw new pl(en);
return n2 = kc(n2), function() {
return --n2 > 0 && (r2 = t2.apply(this, arguments)), n2 <= 1 && (t2 = X), r2;
};
}
function Ef(n2, t2, r2) {
t2 = r2 ? X : t2;
var e2 = ai(n2, yn, X, X, X, X, X, t2);
return e2.placeholder = Ef.placeholder, e2;
}
function Sf(n2, t2, r2) {
t2 = r2 ? X : t2;
var e2 = ai(n2, dn, X, X, X, X, X, t2);
return e2.placeholder = Sf.placeholder, e2;
}
function Wf(n2, t2, r2) {
function e2(t3) {
var r3 = h2, e3 = p3;
return h2 = p3 = X, d2 = t3, v2 = n2.apply(e3, r3);
}
function u2(n3) {
return d2 = n3, g2 = Ws(f2, t2), b2 ? e2(n3) : v2;
}
function i2(n3) {
var r3 = n3 - y2, e3 = n3 - d2, u3 = t2 - r3;
return w2 ? Hl(u3, _2 - e3) : u3;
}
function o2(n3) {
var r3 = n3 - y2, e3 = n3 - d2;
return y2 === X || r3 >= t2 || r3 < 0 || w2 && e3 >= _2;
}
function f2() {
var n3 = fh();
return o2(n3) ? c2(n3) : (g2 = Ws(f2, i2(n3)), X);
}
function c2(n3) {
return g2 = X, m2 && h2 ? e2(n3) : (h2 = p3 = X, v2);
}
function a2() {
g2 !== X && As(g2), d2 = 0, h2 = y2 = p3 = g2 = X;
}
function l2() {
return g2 === X ? v2 : c2(fh());
}
function s2() {
var n3 = fh(), r3 = o2(n3);
if (h2 = arguments, p3 = this, y2 = n3, r3) {
if (g2 === X)
return u2(y2);
if (w2)
return As(g2), g2 = Ws(f2, t2), e2(y2);
}
return g2 === X && (g2 = Ws(f2, t2)), v2;
}
var h2, p3, _2, v2, g2, y2, d2 = 0, b2 = false, w2 = false, m2 = true;
if ("function" != typeof n2)
throw new pl(en);
return t2 = Ic(t2) || 0, fc(r2) && (b2 = !!r2.leading, w2 = "maxWait" in r2, _2 = w2 ? Gl(Ic(r2.maxWait) || 0, t2) : _2, m2 = "trailing" in r2 ? !!r2.trailing : m2), s2.cancel = a2, s2.flush = l2, s2;
}
function Lf(n2) {
return ai(n2, jn);
}
function Cf(n2, t2) {
if ("function" != typeof n2 || null != t2 && "function" != typeof t2)
throw new pl(en);
var r2 = function() {
var e2 = arguments, u2 = t2 ? t2.apply(this, e2) : e2[0], i2 = r2.cache;
if (i2.has(u2))
return i2.get(u2);
var o2 = n2.apply(this, e2);
return r2.cache = i2.set(u2, o2) || i2, o2;
};
return r2.cache = new (Cf.Cache || sr2)(), r2;
}
function Uf(n2) {
if ("function" != typeof n2)
throw new pl(en);
return function() {
var t2 = arguments;
switch (t2.length) {
case 0:
return !n2.call(this);
case 1:
return !n2.call(this, t2[0]);
case 2:
return !n2.call(this, t2[0], t2[1]);
case 3:
return !n2.call(this, t2[0], t2[1], t2[2]);
}
return !n2.apply(this, t2);
};
}
function Bf(n2) {
return zf(2, n2);
}
function Tf(n2, t2) {
if ("function" != typeof n2)
throw new pl(en);
return t2 = t2 === X ? t2 : kc(t2), uu(n2, t2);
}
function $f(t2, r2) {
if ("function" != typeof t2)
throw new pl(en);
return r2 = null == r2 ? 0 : Gl(kc(r2), 0), uu(function(e2) {
var u2 = e2[r2], i2 = Ou(e2, 0, r2);
return u2 && a(i2, u2), n(t2, this, i2);
});
}
function Df(n2, t2, r2) {
var e2 = true, u2 = true;
if ("function" != typeof n2)
throw new pl(en);
return fc(r2) && (e2 = "leading" in r2 ? !!r2.leading : e2, u2 = "trailing" in r2 ? !!r2.trailing : u2), Wf(n2, t2, { leading: e2, maxWait: t2, trailing: u2 });
}
function Mf(n2) {
return Rf(n2, 1);
}
function Ff(n2, t2) {
return ph(Au(t2), n2);
}
function Nf() {
if (!arguments.length)
return [];
var n2 = arguments[0];
return bh(n2) ? n2 : [n2];
}
function Pf(n2) {
return Fr2(n2, sn);
}
function qf(n2, t2) {
return t2 = "function" == typeof t2 ? t2 : X, Fr2(n2, sn, t2);
}
function Zf(n2) {
return Fr2(n2, an | sn);
}
function Kf(n2, t2) {
return t2 = "function" == typeof t2 ? t2 : X, Fr2(n2, an | sn, t2);
}
function Vf(n2, t2) {
return null == t2 || Pr2(n2, t2, Pc(t2));
}
function Gf(n2, t2) {
return n2 === t2 || n2 !== n2 && t2 !== t2;
}
function Hf(n2) {
return null != n2 && oc(n2.length) && !uc(n2);
}
function Jf(n2) {
return cc(n2) && Hf(n2);
}
function Yf(n2) {
return n2 === true || n2 === false || cc(n2) && we(n2) == Nn;
}
function Qf(n2) {
return cc(n2) && 1 === n2.nodeType && !gc(n2);
}
function Xf(n2) {
if (null == n2)
return true;
if (Hf(n2) && (bh(n2) || "string" == typeof n2 || "function" == typeof n2.splice || mh(n2) || Oh(n2) || dh(n2)))
return !n2.length;
var t2 = zs(n2);
if (t2 == Gn || t2 == tt)
return !n2.size;
if (Mi(n2))
return !Me(n2).length;
for (var r2 in n2)
if (bl.call(n2, r2))
return false;
return true;
}
function nc(n2, t2) {
return Se(n2, t2);
}
function tc(n2, t2, r2) {
r2 = "function" == typeof r2 ? r2 : X;
var e2 = r2 ? r2(n2, t2) : X;
return e2 === X ? Se(n2, t2, X, r2) : !!e2;
}
function rc(n2) {
if (!cc(n2))
return false;
var t2 = we(n2);
return t2 == Zn || t2 == qn || "string" == typeof n2.message && "string" == typeof n2.name && !gc(n2);
}
function ec(n2) {
return "number" == typeof n2 && Zl(n2);
}
function uc(n2) {
if (!fc(n2))
return false;
var t2 = we(n2);
return t2 == Kn || t2 == Vn || t2 == Fn || t2 == Xn;
}
function ic(n2) {
return "number" == typeof n2 && n2 == kc(n2);
}
function oc(n2) {
return "number" == typeof n2 && n2 > -1 && n2 % 1 == 0 && n2 <= Wn;
}
function fc(n2) {
var t2 = typeof n2;
return null != n2 && ("object" == t2 || "function" == t2);
}
function cc(n2) {
return null != n2 && "object" == typeof n2;
}
function ac(n2, t2) {
return n2 === t2 || Ce(n2, t2, ji(t2));
}
function lc(n2, t2, r2) {
return r2 = "function" == typeof r2 ? r2 : X, Ce(n2, t2, ji(t2), r2);
}
function sc(n2) {
return vc(n2) && n2 != +n2;
}
function hc(n2) {
if (Es(n2))
throw new fl(rn);
return Ue(n2);
}
function pc(n2) {
return null === n2;
}
function _c(n2) {
return null == n2;
}
function vc(n2) {
return "number" == typeof n2 || cc(n2) && we(n2) == Hn;
}
function gc(n2) {
if (!cc(n2) || we(n2) != Yn)
return false;
var t2 = El(n2);
if (null === t2)
return true;
var r2 = bl.call(t2, "constructor") && t2.constructor;
return "function" == typeof r2 && r2 instanceof r2 && dl.call(r2) == jl;
}
function yc(n2) {
return ic(n2) && n2 >= -Wn && n2 <= Wn;
}
function dc(n2) {
return "string" == typeof n2 || !bh(n2) && cc(n2) && we(n2) == rt;
}
function bc(n2) {
return "symbol" == typeof n2 || cc(n2) && we(n2) == et;
}
function wc(n2) {
return n2 === X;
}
function mc(n2) {
return cc(n2) && zs(n2) == it;
}
function xc(n2) {
return cc(n2) && we(n2) == ot;
}
function jc(n2) {
if (!n2)
return [];
if (Hf(n2))
return dc(n2) ? G(n2) : Tu(n2);
if (Ul && n2[Ul])
return D(n2[Ul]());
var t2 = zs(n2);
return (t2 == Gn ? M : t2 == tt ? P : ra)(n2);
}
function Ac(n2) {
if (!n2)
return 0 === n2 ? n2 : 0;
if (n2 = Ic(n2), n2 === Sn || n2 === -Sn) {
return (n2 < 0 ? -1 : 1) * Ln;
}
return n2 === n2 ? n2 : 0;
}
function kc(n2) {
var t2 = Ac(n2), r2 = t2 % 1;
return t2 === t2 ? r2 ? t2 - r2 : t2 : 0;
}
function Oc(n2) {
return n2 ? Mr2(kc(n2), 0, Un) : 0;
}
function Ic(n2) {
if ("number" == typeof n2)
return n2;
if (bc(n2))
return Cn;
if (fc(n2)) {
var t2 = "function" == typeof n2.valueOf ? n2.valueOf() : n2;
n2 = fc(t2) ? t2 + "" : t2;
}
if ("string" != typeof n2)
return 0 === n2 ? n2 : +n2;
n2 = R(n2);
var r2 = qt.test(n2);
return r2 || Kt.test(n2) ? Xr(n2.slice(2), r2 ? 2 : 8) : Pt.test(n2) ? Cn : +n2;
}
function Rc(n2) {
return $u(n2, qc(n2));
}
function zc(n2) {
return n2 ? Mr2(kc(n2), -Wn, Wn) : 0 === n2 ? n2 : 0;
}
function Ec(n2) {
return null == n2 ? "" : vu(n2);
}
function Sc(n2, t2) {
var r2 = gs(n2);
return null == t2 ? r2 : Cr2(r2, t2);
}
function Wc(n2, t2) {
return v(n2, mi(t2, 3), ue2);
}
function Lc(n2, t2) {
return v(n2, mi(t2, 3), oe2);
}
function Cc(n2, t2) {
return null == n2 ? n2 : bs(n2, mi(t2, 3), qc);
}
function Uc(n2, t2) {
return null == n2 ? n2 : ws(n2, mi(t2, 3), qc);
}
function Bc(n2, t2) {
return n2 && ue2(n2, mi(t2, 3));
}
function Tc(n2, t2) {
return n2 && oe2(n2, mi(t2, 3));
}
function $c(n2) {
return null == n2 ? [] : fe2(n2, Pc(n2));
}
function Dc(n2) {
return null == n2 ? [] : fe2(n2, qc(n2));
}
function Mc(n2, t2, r2) {
var e2 = null == n2 ? X : _e2(n2, t2);
return e2 === X ? r2 : e2;
}
function Fc(n2, t2) {
return null != n2 && Ri(n2, t2, xe);
}
function Nc(n2, t2) {
return null != n2 && Ri(n2, t2, je);
}
function Pc(n2) {
return Hf(n2) ? Or2(n2) : Me(n2);
}
function qc(n2) {
return Hf(n2) ? Or2(n2, true) : Fe(n2);
}
function Zc(n2, t2) {
var r2 = {};
return t2 = mi(t2, 3), ue2(n2, function(n3, e2, u2) {
Br2(r2, t2(n3, e2, u2), n3);
}), r2;
}
function Kc(n2, t2) {
var r2 = {};
return t2 = mi(t2, 3), ue2(n2, function(n3, e2, u2) {
Br2(r2, e2, t2(n3, e2, u2));
}), r2;
}
function Vc(n2, t2) {
return Gc(n2, Uf(mi(t2)));
}
function Gc(n2, t2) {
if (null == n2)
return {};
var r2 = c(di(n2), function(n3) {
return [n3];
});
return t2 = mi(t2), Ye(n2, r2, function(n3, r3) {
return t2(n3, r3[0]);
});
}
function Hc(n2, t2, r2) {
t2 = ku(t2, n2);
var e2 = -1, u2 = t2.length;
for (u2 || (u2 = 1, n2 = X); ++e2 < u2; ) {
var i2 = null == n2 ? X : n2[no(t2[e2])];
i2 === X && (e2 = u2, i2 = r2), n2 = uc(i2) ? i2.call(n2) : i2;
}
return n2;
}
function Jc(n2, t2, r2) {
return null == n2 ? n2 : fu(n2, t2, r2);
}
function Yc(n2, t2, r2, e2) {
return e2 = "function" == typeof e2 ? e2 : X, null == n2 ? n2 : fu(n2, t2, r2, e2);
}
function Qc(n2, t2, e2) {
var u2 = bh(n2), i2 = u2 || mh(n2) || Oh(n2);
if (t2 = mi(t2, 4), null == e2) {
var o2 = n2 && n2.constructor;
e2 = i2 ? u2 ? new o2() : [] : fc(n2) && uc(o2) ? gs(El(n2)) : {};
}
return (i2 ? r : ue2)(n2, function(n3, r2, u3) {
return t2(e2, n3, r2, u3);
}), e2;
}
function Xc(n2, t2) {
return null == n2 || yu(n2, t2);
}
function na(n2, t2, r2) {
return null == n2 ? n2 : du(n2, t2, Au(r2));
}
function ta(n2, t2, r2, e2) {
return e2 = "function" == typeof e2 ? e2 : X, null == n2 ? n2 : du(n2, t2, Au(r2), e2);
}
function ra(n2) {
return null == n2 ? [] : E(n2, Pc(n2));
}
function ea(n2) {
return null == n2 ? [] : E(n2, qc(n2));
}
function ua(n2, t2, r2) {
return r2 === X && (r2 = t2, t2 = X), r2 !== X && (r2 = Ic(r2), r2 = r2 === r2 ? r2 : 0), t2 !== X && (t2 = Ic(t2), t2 = t2 === t2 ? t2 : 0), Mr2(Ic(n2), t2, r2);
}
function ia(n2, t2, r2) {
return t2 = Ac(t2), r2 === X ? (r2 = t2, t2 = 0) : r2 = Ac(r2), n2 = Ic(n2), Ae(n2, t2, r2);
}
function oa(n2, t2, r2) {
if (r2 && "boolean" != typeof r2 && Ui(n2, t2, r2) && (t2 = r2 = X), r2 === X && ("boolean" == typeof t2 ? (r2 = t2, t2 = X) : "boolean" == typeof n2 && (r2 = n2, n2 = X)), n2 === X && t2 === X ? (n2 = 0, t2 = 1) : (n2 = Ac(n2), t2 === X ? (t2 = n2, n2 = 0) : t2 = Ac(t2)), n2 > t2) {
var e2 = n2;
n2 = t2, t2 = e2;
}
if (r2 || n2 % 1 || t2 % 1) {
var u2 = Ql();
return Hl(n2 + u2 * (t2 - n2 + Qr("1e-" + ((u2 + "").length - 1))), t2);
}
return tu(n2, t2);
}
function fa(n2) {
return Qh(Ec(n2).toLowerCase());
}
function ca(n2) {
return n2 = Ec(n2), n2 && n2.replace(Gt, ve).replace(Dr, "");
}
function aa(n2, t2, r2) {
n2 = Ec(n2), t2 = vu(t2);
var e2 = n2.length;
r2 = r2 === X ? e2 : Mr2(kc(r2), 0, e2);
var u2 = r2;
return r2 -= t2.length, r2 >= 0 && n2.slice(r2, u2) == t2;
}
function la(n2) {
return n2 = Ec(n2), n2 && At.test(n2) ? n2.replace(xt, ge) : n2;
}
function sa(n2) {
return n2 = Ec(n2), n2 && Wt.test(n2) ? n2.replace(St, "\\$&") : n2;
}
function ha(n2, t2, r2) {
n2 = Ec(n2), t2 = kc(t2);
var e2 = t2 ? V(n2) : 0;
if (!t2 || e2 >= t2)
return n2;
var u2 = (t2 - e2) / 2;
return ri(Nl(u2), r2) + n2 + ri(Fl(u2), r2);
}
function pa(n2, t2, r2) {
n2 = Ec(n2), t2 = kc(t2);
var e2 = t2 ? V(n2) : 0;
return t2 && e2 < t2 ? n2 + ri(t2 - e2, r2) : n2;
}
function _a(n2, t2, r2) {
n2 = Ec(n2), t2 = kc(t2);
var e2 = t2 ? V(n2) : 0;
return t2 && e2 < t2 ? ri(t2 - e2, r2) + n2 : n2;
}
function va(n2, t2, r2) {
return r2 || null == t2 ? t2 = 0 : t2 && (t2 = +t2), Yl(Ec(n2).replace(Lt, ""), t2 || 0);
}
function ga(n2, t2, r2) {
return t2 = (r2 ? Ui(n2, t2, r2) : t2 === X) ? 1 : kc(t2), eu(Ec(n2), t2);
}
function ya() {
var n2 = arguments, t2 = Ec(n2[0]);
return n2.length < 3 ? t2 : t2.replace(n2[1], n2[2]);
}
function da(n2, t2, r2) {
return r2 && "number" != typeof r2 && Ui(n2, t2, r2) && (t2 = r2 = X), (r2 = r2 === X ? Un : r2 >>> 0) ? (n2 = Ec(n2), n2 && ("string" == typeof t2 || null != t2 && !Ah(t2)) && (t2 = vu(t2), !t2 && T(n2)) ? Ou(G(n2), 0, r2) : n2.split(t2, r2)) : [];
}
function ba(n2, t2, r2) {
return n2 = Ec(n2), r2 = null == r2 ? 0 : Mr2(kc(r2), 0, n2.length), t2 = vu(t2), n2.slice(r2, r2 + t2.length) == t2;
}
function wa(n2, t2, r2) {
var e2 = Z2.templateSettings;
r2 && Ui(n2, t2, r2) && (t2 = X), n2 = Ec(n2), t2 = Sh({}, t2, e2, li);
var u2, i2, o2 = Sh({}, t2.imports, e2.imports, li), f2 = Pc(o2), c2 = E(o2, f2), a2 = 0, l2 = t2.interpolate || Ht, s2 = "__p += '", h2 = sl((t2.escape || Ht).source + "|" + l2.source + "|" + (l2 === It ? Ft : Ht).source + "|" + (t2.evaluate || Ht).source + "|$", "g"), p3 = "//# sourceURL=" + (bl.call(t2, "sourceURL") ? (t2.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++Zr + "]") + "\n";
n2.replace(h2, function(t3, r3, e3, o3, f3, c3) {
return e3 || (e3 = o3), s2 += n2.slice(a2, c3).replace(Jt, U), r3 && (u2 = true, s2 += "' +\n__e(" + r3 + ") +\n'"), f3 && (i2 = true, s2 += "';\n" + f3 + ";\n__p += '"), e3 && (s2 += "' +\n((__t = (" + e3 + ")) == null ? '' : __t) +\n'"), a2 = c3 + t3.length, t3;
}), s2 += "';\n";
var _2 = bl.call(t2, "variable") && t2.variable;
if (_2) {
if (Dt.test(_2))
throw new fl(un);
} else
s2 = "with (obj) {\n" + s2 + "\n}\n";
s2 = (i2 ? s2.replace(dt, "") : s2).replace(bt, "$1").replace(wt, "$1;"), s2 = "function(" + (_2 || "obj") + ") {\n" + (_2 ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (u2 ? ", __e = _.escape" : "") + (i2 ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + s2 + "return __p\n}";
var v2 = Xh(function() {
return cl(f2, p3 + "return " + s2).apply(X, c2);
});
if (v2.source = s2, rc(v2))
throw v2;
return v2;
}
function ma(n2) {
return Ec(n2).toLowerCase();
}
function xa(n2) {
return Ec(n2).toUpperCase();
}
function ja(n2, t2, r2) {
if (n2 = Ec(n2), n2 && (r2 || t2 === X))
return R(n2);
if (!n2 || !(t2 = vu(t2)))
return n2;
var e2 = G(n2), u2 = G(t2);
return Ou(e2, W(e2, u2), L(e2, u2) + 1).join("");
}
function Aa(n2, t2, r2) {
if (n2 = Ec(n2), n2 && (r2 || t2 === X))
return n2.slice(0, H(n2) + 1);
if (!n2 || !(t2 = vu(t2)))
return n2;
var e2 = G(n2);
return Ou(e2, 0, L(e2, G(t2)) + 1).join("");
}
function ka(n2, t2, r2) {
if (n2 = Ec(n2), n2 && (r2 || t2 === X))
return n2.replace(Lt, "");
if (!n2 || !(t2 = vu(t2)))
return n2;
var e2 = G(n2);
return Ou(e2, W(e2, G(t2))).join("");
}
function Oa(n2, t2) {
var r2 = An, e2 = kn;
if (fc(t2)) {
var u2 = "separator" in t2 ? t2.separator : u2;
r2 = "length" in t2 ? kc(t2.length) : r2, e2 = "omission" in t2 ? vu(t2.omission) : e2;
}
n2 = Ec(n2);
var i2 = n2.length;
if (T(n2)) {
var o2 = G(n2);
i2 = o2.length;
}
if (r2 >= i2)
return n2;
var f2 = r2 - V(e2);
if (f2 < 1)
return e2;
var c2 = o2 ? Ou(o2, 0, f2).join("") : n2.slice(0, f2);
if (u2 === X)
return c2 + e2;
if (o2 && (f2 += c2.length - f2), Ah(u2)) {
if (n2.slice(f2).search(u2)) {
var a2, l2 = c2;
for (u2.global || (u2 = sl(u2.source, Ec(Nt.exec(u2)) + "g")), u2.lastIndex = 0; a2 = u2.exec(l2); )
var s2 = a2.index;
c2 = c2.slice(0, s2 === X ? f2 : s2);
}
} else if (n2.indexOf(vu(u2), f2) != f2) {
var h2 = c2.lastIndexOf(u2);
h2 > -1 && (c2 = c2.slice(0, h2));
}
return c2 + e2;
}
function Ia(n2) {
return n2 = Ec(n2), n2 && jt.test(n2) ? n2.replace(mt, ye) : n2;
}
function Ra(n2, t2, r2) {
return n2 = Ec(n2), t2 = r2 ? X : t2, t2 === X ? $(n2) ? Q(n2) : _(n2) : n2.match(t2) || [];
}
function za(t2) {
var r2 = null == t2 ? 0 : t2.length, e2 = mi();
return t2 = r2 ? c(t2, function(n2) {
if ("function" != typeof n2[1])
throw new pl(en);
return [e2(n2[0]), n2[1]];
}) : [], uu(function(e3) {
for (var u2 = -1; ++u2 < r2; ) {
var i2 = t2[u2];
if (n(i2[0], this, e3))
return n(i2[1], this, e3);
}
});
}
function Ea(n2) {
return Nr2(Fr2(n2, an));
}
function Sa(n2) {
return function() {
return n2;
};
}
function Wa(n2, t2) {
return null == n2 || n2 !== n2 ? t2 : n2;
}
function La(n2) {
return n2;
}
function Ca(n2) {
return De("function" == typeof n2 ? n2 : Fr2(n2, an));
}
function Ua(n2) {
return qe(Fr2(n2, an));
}
function Ba(n2, t2) {
return Ze(n2, Fr2(t2, an));
}
function Ta(n2, t2, e2) {
var u2 = Pc(t2), i2 = fe2(t2, u2);
null != e2 || fc(t2) && (i2.length || !u2.length) || (e2 = t2, t2 = n2, n2 = this, i2 = fe2(t2, Pc(t2)));
var o2 = !(fc(e2) && "chain" in e2 && !e2.chain), f2 = uc(n2);
return r(i2, function(r2) {
var e3 = t2[r2];
n2[r2] = e3, f2 && (n2.prototype[r2] = function() {
var t3 = this.__chain__;
if (o2 || t3) {
var r3 = n2(this.__wrapped__);
return (r3.__actions__ = Tu(this.__actions__)).push({ func: e3, args: arguments, thisArg: n2 }), r3.__chain__ = t3, r3;
}
return e3.apply(n2, a([this.value()], arguments));
});
}), n2;
}
function $a() {
return re._ === this && (re._ = Al), this;
}
function Da() {
}
function Ma(n2) {
return n2 = kc(n2), uu(function(t2) {
return Ge(t2, n2);
});
}
function Fa(n2) {
return Bi(n2) ? m(no(n2)) : Qe(n2);
}
function Na(n2) {
return function(t2) {
return null == n2 ? X : _e2(n2, t2);
};
}
function Pa() {
return [];
}
function qa() {
return false;
}
function Za() {
return {};
}
function Ka() {
return "";
}
function Va() {
return true;
}
function Ga(n2, t2) {
if (n2 = kc(n2), n2 < 1 || n2 > Wn)
return [];
var r2 = Un, e2 = Hl(n2, Un);
t2 = mi(t2), n2 -= Un;
for (var u2 = O(e2, t2); ++r2 < n2; )
t2(r2);
return u2;
}
function Ha(n2) {
return bh(n2) ? c(n2, no) : bc(n2) ? [n2] : Tu(Cs(Ec(n2)));
}
function Ja(n2) {
var t2 = ++wl;
return Ec(n2) + t2;
}
function Ya(n2) {
return n2 && n2.length ? Yr2(n2, La, me) : X;
}
function Qa(n2, t2) {
return n2 && n2.length ? Yr2(n2, mi(t2, 2), me) : X;
}
function Xa(n2) {
return w(n2, La);
}
function nl(n2, t2) {
return w(n2, mi(t2, 2));
}
function tl(n2) {
return n2 && n2.length ? Yr2(n2, La, Ne) : X;
}
function rl(n2, t2) {
return n2 && n2.length ? Yr2(n2, mi(t2, 2), Ne) : X;
}
function el(n2) {
return n2 && n2.length ? k(n2, La) : 0;
}
function ul(n2, t2) {
return n2 && n2.length ? k(n2, mi(t2, 2)) : 0;
}
x2 = null == x2 ? re : be.defaults(re.Object(), x2, be.pick(re, qr));
var il = x2.Array, ol = x2.Date, fl = x2.Error, cl = x2.Function, al = x2.Math, ll = x2.Object, sl = x2.RegExp, hl = x2.String, pl = x2.TypeError, _l = il.prototype, vl = cl.prototype, gl = ll.prototype, yl = x2["__core-js_shared__"], dl = vl.toString, bl = gl.hasOwnProperty, wl = 0, ml = function() {
var n2 = /[^.]+$/.exec(yl && yl.keys && yl.keys.IE_PROTO || "");
return n2 ? "Symbol(src)_1." + n2 : "";
}(), xl = gl.toString, jl = dl.call(ll), Al = re._, kl = sl("^" + dl.call(bl).replace(St, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"), Ol = ie ? x2.Buffer : X, Il = x2.Symbol, Rl = x2.Uint8Array, zl = Ol ? Ol.allocUnsafe : X, El = F(ll.getPrototypeOf, ll), Sl = ll.create, Wl = gl.propertyIsEnumerable, Ll = _l.splice, Cl = Il ? Il.isConcatSpreadable : X, Ul = Il ? Il.iterator : X, Bl = Il ? Il.toStringTag : X, Tl = function() {
try {
var n2 = Ai(ll, "defineProperty");
return n2({}, "", {}), n2;
} catch (n3) {
}
}(), $l = x2.clearTimeout !== re.clearTimeout && x2.clearTimeout, Dl = ol && ol.now !== re.Date.now && ol.now, Ml = x2.setTimeout !== re.setTimeout && x2.setTimeout, Fl = al.ceil, Nl = al.floor, Pl = ll.getOwnPropertySymbols, ql = Ol ? Ol.isBuffer : X, Zl = x2.isFinite, Kl = _l.join, Vl = F(ll.keys, ll), Gl = al.max, Hl = al.min, Jl = ol.now, Yl = x2.parseInt, Ql = al.random, Xl = _l.reverse, ns = Ai(x2, "DataView"), ts = Ai(x2, "Map"), rs = Ai(x2, "Promise"), es = Ai(x2, "Set"), us = Ai(x2, "WeakMap"), is = Ai(ll, "create"), os = us && new us(), fs = {}, cs = to(ns), as = to(ts), ls = to(rs), ss = to(es), hs = to(us), ps = Il ? Il.prototype : X, _s = ps ? ps.valueOf : X, vs = ps ? ps.toString : X, gs = function() {
function n2() {
}
return function(t2) {
if (!fc(t2))
return {};
if (Sl)
return Sl(t2);
n2.prototype = t2;
var r2 = new n2();
return n2.prototype = X, r2;
};
}();
Z2.templateSettings = { escape: kt, evaluate: Ot, interpolate: It, variable: "", imports: { _: Z2 } }, Z2.prototype = J2.prototype, Z2.prototype.constructor = Z2, Y2.prototype = gs(J2.prototype), Y2.prototype.constructor = Y2, Ct2.prototype = gs(J2.prototype), Ct2.prototype.constructor = Ct2, Xt2.prototype.clear = nr2, Xt2.prototype.delete = tr2, Xt2.prototype.get = rr2, Xt2.prototype.has = er2, Xt2.prototype.set = ur2, ir2.prototype.clear = or2, ir2.prototype.delete = fr2, ir2.prototype.get = cr2, ir2.prototype.has = ar2, ir2.prototype.set = lr2, sr2.prototype.clear = hr2, sr2.prototype.delete = pr2, sr2.prototype.get = _r2, sr2.prototype.has = vr2, sr2.prototype.set = gr2, yr2.prototype.add = yr2.prototype.push = dr2, yr2.prototype.has = br2, wr2.prototype.clear = mr2, wr2.prototype.delete = xr2, wr2.prototype.get = jr2, wr2.prototype.has = Ar2, wr2.prototype.set = kr2;
var ys = Pu(ue2), ds = Pu(oe2, true), bs = qu(), ws = qu(true), ms = os ? function(n2, t2) {
return os.set(n2, t2), n2;
} : La, xs = Tl ? function(n2, t2) {
return Tl(n2, "toString", {
configurable: true,
enumerable: false,
value: Sa(t2),
writable: true
});
} : La, js = uu, As = $l || function(n2) {
return re.clearTimeout(n2);
}, ks = es && 1 / P(new es([, -0]))[1] == Sn ? function(n2) {
return new es(n2);
} : Da, Os = os ? function(n2) {
return os.get(n2);
} : Da, Is = Pl ? function(n2) {
return null == n2 ? [] : (n2 = ll(n2), i(Pl(n2), function(t2) {
return Wl.call(n2, t2);
}));
} : Pa, Rs = Pl ? function(n2) {
for (var t2 = []; n2; )
a(t2, Is(n2)), n2 = El(n2);
return t2;
} : Pa, zs = we;
(ns && zs(new ns(new ArrayBuffer(1))) != ct || ts && zs(new ts()) != Gn || rs && zs(rs.resolve()) != Qn || es && zs(new es()) != tt || us && zs(new us()) != it) && (zs = function(n2) {
var t2 = we(n2), r2 = t2 == Yn ? n2.constructor : X, e2 = r2 ? to(r2) : "";
if (e2)
switch (e2) {
case cs:
return ct;
case as:
return Gn;
case ls:
return Qn;
case ss:
return tt;
case hs:
return it;
}
return t2;
});
var Es = yl ? uc : qa, Ss = Qi(ms), Ws = Ml || function(n2, t2) {
return re.setTimeout(n2, t2);
}, Ls = Qi(xs), Cs = Pi(function(n2) {
var t2 = [];
return 46 === n2.charCodeAt(0) && t2.push(""), n2.replace(Et, function(n3, r2, e2, u2) {
t2.push(e2 ? u2.replace(Mt, "$1") : r2 || n3);
}), t2;
}), Us = uu(function(n2, t2) {
return Jf(n2) ? Hr2(n2, ee2(t2, 1, Jf, true)) : [];
}), Bs = uu(function(n2, t2) {
var r2 = jo(t2);
return Jf(r2) && (r2 = X), Jf(n2) ? Hr2(n2, ee2(t2, 1, Jf, true), mi(r2, 2)) : [];
}), Ts = uu(function(n2, t2) {
var r2 = jo(t2);
return Jf(r2) && (r2 = X), Jf(n2) ? Hr2(n2, ee2(t2, 1, Jf, true), X, r2) : [];
}), $s = uu(function(n2) {
var t2 = c(n2, ju);
return t2.length && t2[0] === n2[0] ? ke(t2) : [];
}), Ds = uu(function(n2) {
var t2 = jo(n2), r2 = c(n2, ju);
return t2 === jo(r2) ? t2 = X : r2.pop(), r2.length && r2[0] === n2[0] ? ke(r2, mi(t2, 2)) : [];
}), Ms = uu(function(n2) {
var t2 = jo(n2), r2 = c(n2, ju);
return t2 = "function" == typeof t2 ? t2 : X, t2 && r2.pop(), r2.length && r2[0] === n2[0] ? ke(r2, X, t2) : [];
}), Fs = uu(Oo), Ns = gi(function(n2, t2) {
var r2 = null == n2 ? 0 : n2.length, e2 = Tr2(n2, t2);
return nu(n2, c(t2, function(n3) {
return Ci(n3, r2) ? +n3 : n3;
}).sort(Lu)), e2;
}), Ps = uu(function(n2) {
return gu(ee2(n2, 1, Jf, true));
}), qs = uu(function(n2) {
var t2 = jo(n2);
return Jf(t2) && (t2 = X), gu(ee2(n2, 1, Jf, true), mi(t2, 2));
}), Zs = uu(function(n2) {
var t2 = jo(n2);
return t2 = "function" == typeof t2 ? t2 : X, gu(ee2(n2, 1, Jf, true), X, t2);
}), Ks = uu(function(n2, t2) {
return Jf(n2) ? Hr2(n2, t2) : [];
}), Vs = uu(function(n2) {
return mu(i(n2, Jf));
}), Gs = uu(function(n2) {
var t2 = jo(n2);
return Jf(t2) && (t2 = X), mu(i(n2, Jf), mi(t2, 2));
}), Hs = uu(function(n2) {
var t2 = jo(n2);
return t2 = "function" == typeof t2 ? t2 : X, mu(i(n2, Jf), X, t2);
}), Js = uu(Go), Ys = uu(function(n2) {
var t2 = n2.length, r2 = t2 > 1 ? n2[t2 - 1] : X;
return r2 = "function" == typeof r2 ? (n2.pop(), r2) : X, Ho(n2, r2);
}), Qs = gi(function(n2) {
var t2 = n2.length, r2 = t2 ? n2[0] : 0, e2 = this.__wrapped__, u2 = function(t3) {
return Tr2(t3, n2);
};
return !(t2 > 1 || this.__actions__.length) && e2 instanceof Ct2 && Ci(r2) ? (e2 = e2.slice(r2, +r2 + (t2 ? 1 : 0)), e2.__actions__.push({ func: nf, args: [u2], thisArg: X }), new Y2(e2, this.__chain__).thru(function(n3) {
return t2 && !n3.length && n3.push(X), n3;
})) : this.thru(u2);
}), Xs = Fu(function(n2, t2, r2) {
bl.call(n2, r2) ? ++n2[r2] : Br2(n2, r2, 1);
}), nh = Ju(ho), th = Ju(po), rh = Fu(function(n2, t2, r2) {
bl.call(n2, r2) ? n2[r2].push(t2) : Br2(n2, r2, [t2]);
}), eh = uu(function(t2, r2, e2) {
var u2 = -1, i2 = "function" == typeof r2, o2 = Hf(t2) ? il(t2.length) : [];
return ys(t2, function(t3) {
o2[++u2] = i2 ? n(r2, t3, e2) : Ie(t3, r2, e2);
}), o2;
}), uh = Fu(function(n2, t2, r2) {
Br2(n2, r2, t2);
}), ih = Fu(function(n2, t2, r2) {
n2[r2 ? 0 : 1].push(t2);
}, function() {
return [[], []];
}), oh = uu(function(n2, t2) {
if (null == n2)
return [];
var r2 = t2.length;
return r2 > 1 && Ui(n2, t2[0], t2[1]) ? t2 = [] : r2 > 2 && Ui(t2[0], t2[1], t2[2]) && (t2 = [t2[0]]), He(n2, ee2(t2, 1), []);
}), fh = Dl || function() {
return re.Date.now();
}, ch = uu(function(n2, t2, r2) {
var e2 = _n;
if (r2.length) {
var u2 = N(r2, wi(ch));
e2 |= bn;
}
return ai(n2, e2, t2, r2, u2);
}), ah = uu(function(n2, t2, r2) {
var e2 = _n | vn;
if (r2.length) {
var u2 = N(r2, wi(ah));
e2 |= bn;
}
return ai(t2, e2, n2, r2, u2);
}), lh = uu(function(n2, t2) {
return Gr2(n2, 1, t2);
}), sh = uu(function(n2, t2, r2) {
return Gr2(n2, Ic(t2) || 0, r2);
});
Cf.Cache = sr2;
var hh = js(function(t2, r2) {
r2 = 1 == r2.length && bh(r2[0]) ? c(r2[0], z(mi())) : c(ee2(r2, 1), z(mi()));
var e2 = r2.length;
return uu(function(u2) {
for (var i2 = -1, o2 = Hl(u2.length, e2); ++i2 < o2; )
u2[i2] = r2[i2].call(this, u2[i2]);
return n(t2, this, u2);
});
}), ph = uu(function(n2, t2) {
return ai(n2, bn, X, t2, N(t2, wi(ph)));
}), _h = uu(function(n2, t2) {
return ai(n2, wn, X, t2, N(t2, wi(_h)));
}), vh = gi(function(n2, t2) {
return ai(n2, xn, X, X, X, t2);
}), gh = ii(me), yh = ii(function(n2, t2) {
return n2 >= t2;
}), dh = Re(function() {
return arguments;
}()) ? Re : function(n2) {
return cc(n2) && bl.call(n2, "callee") && !Wl.call(n2, "callee");
}, bh = il.isArray, wh = ce ? z(ce) : ze, mh = ql || qa, xh = ae ? z(ae) : Ee, jh = le ? z(le) : Le, Ah = se ? z(se) : Be, kh = he ? z(he) : Te, Oh = pe ? z(pe) : $e, Ih = ii(Ne), Rh = ii(function(n2, t2) {
return n2 <= t2;
}), zh = Nu(function(n2, t2) {
if (Mi(t2) || Hf(t2))
return $u(t2, Pc(t2), n2), X;
for (var r2 in t2)
bl.call(t2, r2) && Sr2(n2, r2, t2[r2]);
}), Eh = Nu(function(n2, t2) {
$u(t2, qc(t2), n2);
}), Sh = Nu(function(n2, t2, r2, e2) {
$u(t2, qc(t2), n2, e2);
}), Wh = Nu(function(n2, t2, r2, e2) {
$u(t2, Pc(t2), n2, e2);
}), Lh = gi(Tr2), Ch = uu(function(n2, t2) {
n2 = ll(n2);
var r2 = -1, e2 = t2.length, u2 = e2 > 2 ? t2[2] : X;
for (u2 && Ui(t2[0], t2[1], u2) && (e2 = 1); ++r2 < e2; )
for (var i2 = t2[r2], o2 = qc(i2), f2 = -1, c2 = o2.length; ++f2 < c2; ) {
var a2 = o2[f2], l2 = n2[a2];
(l2 === X || Gf(l2, gl[a2]) && !bl.call(n2, a2)) && (n2[a2] = i2[a2]);
}
return n2;
}), Uh = uu(function(t2) {
return t2.push(X, si), n(Mh, X, t2);
}), Bh = Xu(function(n2, t2, r2) {
null != t2 && "function" != typeof t2.toString && (t2 = xl.call(t2)), n2[t2] = r2;
}, Sa(La)), Th = Xu(function(n2, t2, r2) {
null != t2 && "function" != typeof t2.toString && (t2 = xl.call(t2)), bl.call(n2, t2) ? n2[t2].push(r2) : n2[t2] = [r2];
}, mi), $h = uu(Ie), Dh = Nu(function(n2, t2, r2) {
Ke(n2, t2, r2);
}), Mh = Nu(function(n2, t2, r2, e2) {
Ke(n2, t2, r2, e2);
}), Fh = gi(function(n2, t2) {
var r2 = {};
if (null == n2)
return r2;
var e2 = false;
t2 = c(t2, function(t3) {
return t3 = ku(t3, n2), e2 || (e2 = t3.length > 1), t3;
}), $u(n2, di(n2), r2), e2 && (r2 = Fr2(r2, an | ln | sn, hi));
for (var u2 = t2.length; u2--; )
yu(r2, t2[u2]);
return r2;
}), Nh = gi(function(n2, t2) {
return null == n2 ? {} : Je(n2, t2);
}), Ph = ci(Pc), qh = ci(qc), Zh = Vu(function(n2, t2, r2) {
return t2 = t2.toLowerCase(), n2 + (r2 ? fa(t2) : t2);
}), Kh = Vu(function(n2, t2, r2) {
return n2 + (r2 ? "-" : "") + t2.toLowerCase();
}), Vh = Vu(function(n2, t2, r2) {
return n2 + (r2 ? " " : "") + t2.toLowerCase();
}), Gh = Ku("toLowerCase"), Hh = Vu(function(n2, t2, r2) {
return n2 + (r2 ? "_" : "") + t2.toLowerCase();
}), Jh = Vu(function(n2, t2, r2) {
return n2 + (r2 ? " " : "") + Qh(t2);
}), Yh = Vu(function(n2, t2, r2) {
return n2 + (r2 ? " " : "") + t2.toUpperCase();
}), Qh = Ku("toUpperCase"), Xh = uu(function(t2, r2) {
try {
return n(t2, X, r2);
} catch (n2) {
return rc(n2) ? n2 : new fl(n2);
}
}), np = gi(function(n2, t2) {
return r(t2, function(t3) {
t3 = no(t3), Br2(n2, t3, ch(n2[t3], n2));
}), n2;
}), tp = Yu(), rp = Yu(true), ep = uu(function(n2, t2) {
return function(r2) {
return Ie(r2, n2, t2);
};
}), up = uu(function(n2, t2) {
return function(r2) {
return Ie(n2, r2, t2);
};
}), ip = ti(c), op = ti(u), fp = ti(h), cp = ui(), ap = ui(true), lp = ni(function(n2, t2) {
return n2 + t2;
}, 0), sp = fi("ceil"), hp = ni(function(n2, t2) {
return n2 / t2;
}, 1), pp = fi("floor"), _p = ni(function(n2, t2) {
return n2 * t2;
}, 1), vp = fi("round"), gp = ni(function(n2, t2) {
return n2 - t2;
}, 0);
return Z2.after = If, Z2.ary = Rf, Z2.assign = zh, Z2.assignIn = Eh, Z2.assignInWith = Sh, Z2.assignWith = Wh, Z2.at = Lh, Z2.before = zf, Z2.bind = ch, Z2.bindAll = np, Z2.bindKey = ah, Z2.castArray = Nf, Z2.chain = Qo, Z2.chunk = uo, Z2.compact = io, Z2.concat = oo, Z2.cond = za, Z2.conforms = Ea, Z2.constant = Sa, Z2.countBy = Xs, Z2.create = Sc, Z2.curry = Ef, Z2.curryRight = Sf, Z2.debounce = Wf, Z2.defaults = Ch, Z2.defaultsDeep = Uh, Z2.defer = lh, Z2.delay = sh, Z2.difference = Us, Z2.differenceBy = Bs, Z2.differenceWith = Ts, Z2.drop = fo, Z2.dropRight = co, Z2.dropRightWhile = ao, Z2.dropWhile = lo, Z2.fill = so, Z2.filter = lf, Z2.flatMap = sf, Z2.flatMapDeep = hf, Z2.flatMapDepth = pf, Z2.flatten = _o, Z2.flattenDeep = vo, Z2.flattenDepth = go, Z2.flip = Lf, Z2.flow = tp, Z2.flowRight = rp, Z2.fromPairs = yo, Z2.functions = $c, Z2.functionsIn = Dc, Z2.groupBy = rh, Z2.initial = mo, Z2.intersection = $s, Z2.intersectionBy = Ds, Z2.intersectionWith = Ms, Z2.invert = Bh, Z2.invertBy = Th, Z2.invokeMap = eh, Z2.iteratee = Ca, Z2.keyBy = uh, Z2.keys = Pc, Z2.keysIn = qc, Z2.map = yf, Z2.mapKeys = Zc, Z2.mapValues = Kc, Z2.matches = Ua, Z2.matchesProperty = Ba, Z2.memoize = Cf, Z2.merge = Dh, Z2.mergeWith = Mh, Z2.method = ep, Z2.methodOf = up, Z2.mixin = Ta, Z2.negate = Uf, Z2.nthArg = Ma, Z2.omit = Fh, Z2.omitBy = Vc, Z2.once = Bf, Z2.orderBy = df, Z2.over = ip, Z2.overArgs = hh, Z2.overEvery = op, Z2.overSome = fp, Z2.partial = ph, Z2.partialRight = _h, Z2.partition = ih, Z2.pick = Nh, Z2.pickBy = Gc, Z2.property = Fa, Z2.propertyOf = Na, Z2.pull = Fs, Z2.pullAll = Oo, Z2.pullAllBy = Io, Z2.pullAllWith = Ro, Z2.pullAt = Ns, Z2.range = cp, Z2.rangeRight = ap, Z2.rearg = vh, Z2.reject = mf, Z2.remove = zo, Z2.rest = Tf, Z2.reverse = Eo, Z2.sampleSize = jf, Z2.set = Jc, Z2.setWith = Yc, Z2.shuffle = Af, Z2.slice = So, Z2.sortBy = oh, Z2.sortedUniq = $o, Z2.sortedUniqBy = Do, Z2.split = da, Z2.spread = $f, Z2.tail = Mo, Z2.take = Fo, Z2.takeRight = No, Z2.takeRightWhile = Po, Z2.takeWhile = qo, Z2.tap = Xo, Z2.throttle = Df, Z2.thru = nf, Z2.toArray = jc, Z2.toPairs = Ph, Z2.toPairsIn = qh, Z2.toPath = Ha, Z2.toPlainObject = Rc, Z2.transform = Qc, Z2.unary = Mf, Z2.union = Ps, Z2.unionBy = qs, Z2.unionWith = Zs, Z2.uniq = Zo, Z2.uniqBy = Ko, Z2.uniqWith = Vo, Z2.unset = Xc, Z2.unzip = Go, Z2.unzipWith = Ho, Z2.update = na, Z2.updateWith = ta, Z2.values = ra, Z2.valuesIn = ea, Z2.without = Ks, Z2.words = Ra, Z2.wrap = Ff, Z2.xor = Vs, Z2.xorBy = Gs, Z2.xorWith = Hs, Z2.zip = Js, Z2.zipObject = Jo, Z2.zipObjectDeep = Yo, Z2.zipWith = Ys, Z2.entries = Ph, Z2.entriesIn = qh, Z2.extend = Eh, Z2.extendWith = Sh, Ta(Z2, Z2), Z2.add = lp, Z2.attempt = Xh, Z2.camelCase = Zh, Z2.capitalize = fa, Z2.ceil = sp, Z2.clamp = ua, Z2.clone = Pf, Z2.cloneDeep = Zf, Z2.cloneDeepWith = Kf, Z2.cloneWith = qf, Z2.conformsTo = Vf, Z2.deburr = ca, Z2.defaultTo = Wa, Z2.divide = hp, Z2.endsWith = aa, Z2.eq = Gf, Z2.escape = la, Z2.escapeRegExp = sa, Z2.every = af, Z2.find = nh, Z2.findIndex = ho, Z2.findKey = Wc, Z2.findLast = th, Z2.findLastIndex = po, Z2.findLastKey = Lc, Z2.floor = pp, Z2.forEach = _f, Z2.forEachRight = vf, Z2.forIn = Cc, Z2.forInRight = Uc, Z2.forOwn = Bc, Z2.forOwnRight = Tc, Z2.get = Mc, Z2.gt = gh, Z2.gte = yh, Z2.has = Fc, Z2.hasIn = Nc, Z2.head = bo, Z2.identity = La, Z2.includes = gf, Z2.indexOf = wo, Z2.inRange = ia, Z2.invoke = $h, Z2.isArguments = dh, Z2.isArray = bh, Z2.isArrayBuffer = wh, Z2.isArrayLike = Hf, Z2.isArrayLikeObject = Jf, Z2.isBoolean = Yf, Z2.isBuffer = mh, Z2.isDate = xh, Z2.isElement = Qf, Z2.isEmpty = Xf, Z2.isEqual = nc, Z2.isEqualWith = tc, Z2.isError = rc, Z2.isFinite = ec, Z2.isFunction = uc, Z2.isInteger = ic, Z2.isLength = oc, Z2.isMap = jh, Z2.isMatch = ac, Z2.isMatchWith = lc, Z2.isNaN = sc, Z2.isNative = hc, Z2.isNil = _c, Z2.isNull = pc, Z2.isNumber = vc, Z2.isObject = fc, Z2.isObjectLike = cc, Z2.isPlainObject = gc, Z2.isRegExp = Ah, Z2.isSafeInteger = yc, Z2.isSet = kh, Z2.isString = dc, Z2.isSymbol = bc, Z2.isTypedArray = Oh, Z2.isUndefined = wc, Z2.isWeakMap = mc, Z2.isWeakSet = xc, Z2.join = xo, Z2.kebabCase = Kh, Z2.last = jo, Z2.lastIndexOf = Ao, Z2.lowerCase = Vh, Z2.lowerFirst = Gh, Z2.lt = Ih, Z2.lte = Rh, Z2.max = Ya, Z2.maxBy = Qa, Z2.mean = Xa, Z2.meanBy = nl, Z2.min = tl, Z2.minBy = rl, Z2.stubArray = Pa, Z2.stubFalse = qa, Z2.stubObject = Za, Z2.stubString = Ka, Z2.stubTrue = Va, Z2.multiply = _p, Z2.nth = ko, Z2.noConflict = $a, Z2.noop = Da, Z2.now = fh, Z2.pad = ha, Z2.padEnd = pa, Z2.padStart = _a, Z2.parseInt = va, Z2.random = oa, Z2.reduce = bf, Z2.reduceRight = wf, Z2.repeat = ga, Z2.replace = ya, Z2.result = Hc, Z2.round = vp, Z2.runInContext = p2, Z2.sample = xf, Z2.size = kf, Z2.snakeCase = Hh, Z2.some = Of, Z2.sortedIndex = Wo, Z2.sortedIndexBy = Lo, Z2.sortedIndexOf = Co, Z2.sortedLastIndex = Uo, Z2.sortedLastIndexBy = Bo, Z2.sortedLastIndexOf = To, Z2.startCase = Jh, Z2.startsWith = ba, Z2.subtract = gp, Z2.sum = el, Z2.sumBy = ul, Z2.template = wa, Z2.times = Ga, Z2.toFinite = Ac, Z2.toInteger = kc, Z2.toLength = Oc, Z2.toLower = ma, Z2.toNumber = Ic, Z2.toSafeInteger = zc, Z2.toString = Ec, Z2.toUpper = xa, Z2.trim = ja, Z2.trimEnd = Aa, Z2.trimStart = ka, Z2.truncate = Oa, Z2.unescape = Ia, Z2.uniqueId = Ja, Z2.upperCase = Yh, Z2.upperFirst = Qh, Z2.each = _f, Z2.eachRight = vf, Z2.first = bo, Ta(Z2, function() {
var n2 = {};
return ue2(Z2, function(t2, r2) {
bl.call(Z2.prototype, r2) || (n2[r2] = t2);
}), n2;
}(), { chain: false }), Z2.VERSION = nn, r(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(n2) {
Z2[n2].placeholder = Z2;
}), r(["drop", "take"], function(n2, t2) {
Ct2.prototype[n2] = function(r2) {
r2 = r2 === X ? 1 : Gl(kc(r2), 0);
var e2 = this.__filtered__ && !t2 ? new Ct2(this) : this.clone();
return e2.__filtered__ ? e2.__takeCount__ = Hl(r2, e2.__takeCount__) : e2.__views__.push({ size: Hl(r2, Un), type: n2 + (e2.__dir__ < 0 ? "Right" : "") }), e2;
}, Ct2.prototype[n2 + "Right"] = function(t3) {
return this.reverse()[n2](t3).reverse();
};
}), r(["filter", "map", "takeWhile"], function(n2, t2) {
var r2 = t2 + 1, e2 = r2 == Rn || r2 == En;
Ct2.prototype[n2] = function(n3) {
var t3 = this.clone();
return t3.__iteratees__.push({ iteratee: mi(n3, 3), type: r2 }), t3.__filtered__ = t3.__filtered__ || e2, t3;
};
}), r(["head", "last"], function(n2, t2) {
var r2 = "take" + (t2 ? "Right" : "");
Ct2.prototype[n2] = function() {
return this[r2](1).value()[0];
};
}), r(["initial", "tail"], function(n2, t2) {
var r2 = "drop" + (t2 ? "" : "Right");
Ct2.prototype[n2] = function() {
return this.__filtered__ ? new Ct2(this) : this[r2](1);
};
}), Ct2.prototype.compact = function() {
return this.filter(La);
}, Ct2.prototype.find = function(n2) {
return this.filter(n2).head();
}, Ct2.prototype.findLast = function(n2) {
return this.reverse().find(n2);
}, Ct2.prototype.invokeMap = uu(function(n2, t2) {
return "function" == typeof n2 ? new Ct2(this) : this.map(function(r2) {
return Ie(r2, n2, t2);
});
}), Ct2.prototype.reject = function(n2) {
return this.filter(Uf(mi(n2)));
}, Ct2.prototype.slice = function(n2, t2) {
n2 = kc(n2);
var r2 = this;
return r2.__filtered__ && (n2 > 0 || t2 < 0) ? new Ct2(r2) : (n2 < 0 ? r2 = r2.takeRight(-n2) : n2 && (r2 = r2.drop(n2)), t2 !== X && (t2 = kc(t2), r2 = t2 < 0 ? r2.dropRight(-t2) : r2.take(t2 - n2)), r2);
}, Ct2.prototype.takeRightWhile = function(n2) {
return this.reverse().takeWhile(n2).reverse();
}, Ct2.prototype.toArray = function() {
return this.take(Un);
}, ue2(Ct2.prototype, function(n2, t2) {
var r2 = /^(?:filter|find|map|reject)|While$/.test(t2), e2 = /^(?:head|last)$/.test(t2), u2 = Z2[e2 ? "take" + ("last" == t2 ? "Right" : "") : t2], i2 = e2 || /^find/.test(t2);
u2 && (Z2.prototype[t2] = function() {
var t3 = this.__wrapped__, o2 = e2 ? [1] : arguments, f2 = t3 instanceof Ct2, c2 = o2[0], l2 = f2 || bh(t3), s2 = function(n3) {
var t4 = u2.apply(Z2, a([n3], o2));
return e2 && h2 ? t4[0] : t4;
};
l2 && r2 && "function" == typeof c2 && 1 != c2.length && (f2 = l2 = false);
var h2 = this.__chain__, p3 = !!this.__actions__.length, _2 = i2 && !h2, v2 = f2 && !p3;
if (!i2 && l2) {
t3 = v2 ? t3 : new Ct2(this);
var g2 = n2.apply(t3, o2);
return g2.__actions__.push({ func: nf, args: [s2], thisArg: X }), new Y2(g2, h2);
}
return _2 && v2 ? n2.apply(this, o2) : (g2 = this.thru(s2), _2 ? e2 ? g2.value()[0] : g2.value() : g2);
});
}), r(["pop", "push", "shift", "sort", "splice", "unshift"], function(n2) {
var t2 = _l[n2], r2 = /^(?:push|sort|unshift)$/.test(n2) ? "tap" : "thru", e2 = /^(?:pop|shift)$/.test(n2);
Z2.prototype[n2] = function() {
var n3 = arguments;
if (e2 && !this.__chain__) {
var u2 = this.value();
return t2.apply(bh(u2) ? u2 : [], n3);
}
return this[r2](function(r3) {
return t2.apply(bh(r3) ? r3 : [], n3);
});
};
}), ue2(Ct2.prototype, function(n2, t2) {
var r2 = Z2[t2];
if (r2) {
var e2 = r2.name + "";
bl.call(fs, e2) || (fs[e2] = []), fs[e2].push({ name: t2, func: r2 });
}
}), fs[Qu(X, vn).name] = [{ name: "wrapper", func: X }], Ct2.prototype.clone = $t2, Ct2.prototype.reverse = Yt2, Ct2.prototype.value = Qt2, Z2.prototype.at = Qs, Z2.prototype.chain = tf, Z2.prototype.commit = rf, Z2.prototype.next = ef, Z2.prototype.plant = of, Z2.prototype.reverse = ff, Z2.prototype.toJSON = Z2.prototype.valueOf = Z2.prototype.value = cf, Z2.prototype.first = Z2.prototype.head, Ul && (Z2.prototype[Ul] = uf), Z2;
}, be = de();
"function" == typeof define && "object" == typeof define.amd && define.amd ? (re._ = be, define(function() {
return be;
})) : ue ? ((ue.exports = be)._ = be, ee._ = be) : re._ = be;
}).call(exports);
}
});
// node_modules/lodash/fp/_mapping.js
var require_mapping = __commonJS({
"node_modules/lodash/fp/_mapping.js"(exports) {
exports.aliasToReal = {
// Lodash aliases.
"each": "forEach",
"eachRight": "forEachRight",
"entries": "toPairs",
"entriesIn": "toPairsIn",
"extend": "assignIn",
"extendAll": "assignInAll",
"extendAllWith": "assignInAllWith",
"extendWith": "assignInWith",
"first": "head",
// Methods that are curried variants of others.
"conforms": "conformsTo",
"matches": "isMatch",
"property": "get",
// Ramda aliases.
"__": "placeholder",
"F": "stubFalse",
"T": "stubTrue",
"all": "every",
"allPass": "overEvery",
"always": "constant",
"any": "some",
"anyPass": "overSome",
"apply": "spread",
"assoc": "set",
"assocPath": "set",
"complement": "negate",
"compose": "flowRight",
"contains": "includes",
"dissoc": "unset",
"dissocPath": "unset",
"dropLast": "dropRight",
"dropLastWhile": "dropRightWhile",
"equals": "isEqual",
"identical": "eq",
"indexBy": "keyBy",
"init": "initial",
"invertObj": "invert",
"juxt": "over",
"omitAll": "omit",
"nAry": "ary",
"path": "get",
"pathEq": "matchesProperty",
"pathOr": "getOr",
"paths": "at",
"pickAll": "pick",
"pipe": "flow",
"pluck": "map",
"prop": "get",
"propEq": "matchesProperty",
"propOr": "getOr",
"props": "at",
"symmetricDifference": "xor",
"symmetricDifferenceBy": "xorBy",
"symmetricDifferenceWith": "xorWith",
"takeLast": "takeRight",
"takeLastWhile": "takeRightWhile",
"unapply": "rest",
"unnest": "flatten",
"useWith": "overArgs",
"where": "conformsTo",
"whereEq": "isMatch",
"zipObj": "zipObject"
};
exports.aryMethod = {
"1": [
"assignAll",
"assignInAll",
"attempt",
"castArray",
"ceil",
"create",
"curry",
"curryRight",
"defaultsAll",
"defaultsDeepAll",
"floor",
"flow",
"flowRight",
"fromPairs",
"invert",
"iteratee",
"memoize",
"method",
"mergeAll",
"methodOf",
"mixin",
"nthArg",
"over",
"overEvery",
"overSome",
"rest",
"reverse",
"round",
"runInContext",
"spread",
"template",
"trim",
"trimEnd",
"trimStart",
"uniqueId",
"words",
"zipAll"
],
"2": [
"add",
"after",
"ary",
"assign",
"assignAllWith",
"assignIn",
"assignInAllWith",
"at",
"before",
"bind",
"bindAll",
"bindKey",
"chunk",
"cloneDeepWith",
"cloneWith",
"concat",
"conformsTo",
"countBy",
"curryN",
"curryRightN",
"debounce",
"defaults",
"defaultsDeep",
"defaultTo",
"delay",
"difference",
"divide",
"drop",
"dropRight",
"dropRightWhile",
"dropWhile",
"endsWith",
"eq",
"every",
"filter",
"find",
"findIndex",
"findKey",
"findLast",
"findLastIndex",
"findLastKey",
"flatMap",
"flatMapDeep",
"flattenDepth",
"forEach",
"forEachRight",
"forIn",
"forInRight",
"forOwn",
"forOwnRight",
"get",
"groupBy",
"gt",
"gte",
"has",
"hasIn",
"includes",
"indexOf",
"intersection",
"invertBy",
"invoke",
"invokeMap",
"isEqual",
"isMatch",
"join",
"keyBy",
"lastIndexOf",
"lt",
"lte",
"map",
"mapKeys",
"mapValues",
"matchesProperty",
"maxBy",
"meanBy",
"merge",
"mergeAllWith",
"minBy",
"multiply",
"nth",
"omit",
"omitBy",
"overArgs",
"pad",
"padEnd",
"padStart",
"parseInt",
"partial",
"partialRight",
"partition",
"pick",
"pickBy",
"propertyOf",
"pull",
"pullAll",
"pullAt",
"random",
"range",
"rangeRight",
"rearg",
"reject",
"remove",
"repeat",
"restFrom",
"result",
"sampleSize",
"some",
"sortBy",
"sortedIndex",
"sortedIndexOf",
"sortedLastIndex",
"sortedLastIndexOf",
"sortedUniqBy",
"split",
"spreadFrom",
"startsWith",
"subtract",
"sumBy",
"take",
"takeRight",
"takeRightWhile",
"takeWhile",
"tap",
"throttle",
"thru",
"times",
"trimChars",
"trimCharsEnd",
"trimCharsStart",
"truncate",
"union",
"uniqBy",
"uniqWith",
"unset",
"unzipWith",
"without",
"wrap",
"xor",
"zip",
"zipObject",
"zipObjectDeep"
],
"3": [
"assignInWith",
"assignWith",
"clamp",
"differenceBy",
"differenceWith",
"findFrom",
"findIndexFrom",
"findLastFrom",
"findLastIndexFrom",
"getOr",
"includesFrom",
"indexOfFrom",
"inRange",
"intersectionBy",
"intersectionWith",
"invokeArgs",
"invokeArgsMap",
"isEqualWith",
"isMatchWith",
"flatMapDepth",
"lastIndexOfFrom",
"mergeWith",
"orderBy",
"padChars",
"padCharsEnd",
"padCharsStart",
"pullAllBy",
"pullAllWith",
"rangeStep",
"rangeStepRight",
"reduce",
"reduceRight",
"replace",
"set",
"slice",
"sortedIndexBy",
"sortedLastIndexBy",
"transform",
"unionBy",
"unionWith",
"update",
"xorBy",
"xorWith",
"zipWith"
],
"4": [
"fill",
"setWith",
"updateWith"
]
};
exports.aryRearg = {
"2": [1, 0],
"3": [2, 0, 1],
"4": [3, 2, 0, 1]
};
exports.iterateeAry = {
"dropRightWhile": 1,
"dropWhile": 1,
"every": 1,
"filter": 1,
"find": 1,
"findFrom": 1,
"findIndex": 1,
"findIndexFrom": 1,
"findKey": 1,
"findLast": 1,
"findLastFrom": 1,
"findLastIndex": 1,
"findLastIndexFrom": 1,
"findLastKey": 1,
"flatMap": 1,
"flatMapDeep": 1,
"flatMapDepth": 1,
"forEach": 1,
"forEachRight": 1,
"forIn": 1,
"forInRight": 1,
"forOwn": 1,
"forOwnRight": 1,
"map": 1,
"mapKeys": 1,
"mapValues": 1,
"partition": 1,
"reduce": 2,
"reduceRight": 2,
"reject": 1,
"remove": 1,
"some": 1,
"takeRightWhile": 1,
"takeWhile": 1,
"times": 1,
"transform": 2
};
exports.iterateeRearg = {
"mapKeys": [1],
"reduceRight": [1, 0]
};
exports.methodRearg = {
"assignInAllWith": [1, 0],
"assignInWith": [1, 2, 0],
"assignAllWith": [1, 0],
"assignWith": [1, 2, 0],
"differenceBy": [1, 2, 0],
"differenceWith": [1, 2, 0],
"getOr": [2, 1, 0],
"intersectionBy": [1, 2, 0],
"intersectionWith": [1, 2, 0],
"isEqualWith": [1, 2, 0],
"isMatchWith": [2, 1, 0],
"mergeAllWith": [1, 0],
"mergeWith": [1, 2, 0],
"padChars": [2, 1, 0],
"padCharsEnd": [2, 1, 0],
"padCharsStart": [2, 1, 0],
"pullAllBy": [2, 1, 0],
"pullAllWith": [2, 1, 0],
"rangeStep": [1, 2, 0],
"rangeStepRight": [1, 2, 0],
"setWith": [3, 1, 2, 0],
"sortedIndexBy": [2, 1, 0],
"sortedLastIndexBy": [2, 1, 0],
"unionBy": [1, 2, 0],
"unionWith": [1, 2, 0],
"updateWith": [3, 1, 2, 0],
"xorBy": [1, 2, 0],
"xorWith": [1, 2, 0],
"zipWith": [1, 2, 0]
};
exports.methodSpread = {
"assignAll": { "start": 0 },
"assignAllWith": { "start": 0 },
"assignInAll": { "start": 0 },
"assignInAllWith": { "start": 0 },
"defaultsAll": { "start": 0 },
"defaultsDeepAll": { "start": 0 },
"invokeArgs": { "start": 2 },
"invokeArgsMap": { "start": 2 },
"mergeAll": { "start": 0 },
"mergeAllWith": { "start": 0 },
"partial": { "start": 1 },
"partialRight": { "start": 1 },
"without": { "start": 1 },
"zipAll": { "start": 0 }
};
exports.mutate = {
"array": {
"fill": true,
"pull": true,
"pullAll": true,
"pullAllBy": true,
"pullAllWith": true,
"pullAt": true,
"remove": true,
"reverse": true
},
"object": {
"assign": true,
"assignAll": true,
"assignAllWith": true,
"assignIn": true,
"assignInAll": true,
"assignInAllWith": true,
"assignInWith": true,
"assignWith": true,
"defaults": true,
"defaultsAll": true,
"defaultsDeep": true,
"defaultsDeepAll": true,
"merge": true,
"mergeAll": true,
"mergeAllWith": true,
"mergeWith": true
},
"set": {
"set": true,
"setWith": true,
"unset": true,
"update": true,
"updateWith": true
}
};
exports.realToAlias = function() {
var hasOwnProperty = Object.prototype.hasOwnProperty, object = exports.aliasToReal, result = {};
for (var key in object) {
var value = object[key];
if (hasOwnProperty.call(result, value)) {
result[value].push(key);
} else {
result[value] = [key];
}
}
return result;
}();
exports.remap = {
"assignAll": "assign",
"assignAllWith": "assignWith",
"assignInAll": "assignIn",
"assignInAllWith": "assignInWith",
"curryN": "curry",
"curryRightN": "curryRight",
"defaultsAll": "defaults",
"defaultsDeepAll": "defaultsDeep",
"findFrom": "find",
"findIndexFrom": "findIndex",
"findLastFrom": "findLast",
"findLastIndexFrom": "findLastIndex",
"getOr": "get",
"includesFrom": "includes",
"indexOfFrom": "indexOf",
"invokeArgs": "invoke",
"invokeArgsMap": "invokeMap",
"lastIndexOfFrom": "lastIndexOf",
"mergeAll": "merge",
"mergeAllWith": "mergeWith",
"padChars": "pad",
"padCharsEnd": "padEnd",
"padCharsStart": "padStart",
"propertyOf": "get",
"rangeStep": "range",
"rangeStepRight": "rangeRight",
"restFrom": "rest",
"spreadFrom": "spread",
"trimChars": "trim",
"trimCharsEnd": "trimEnd",
"trimCharsStart": "trimStart",
"zipAll": "zip"
};
exports.skipFixed = {
"castArray": true,
"flow": true,
"flowRight": true,
"iteratee": true,
"mixin": true,
"rearg": true,
"runInContext": true
};
exports.skipRearg = {
"add": true,
"assign": true,
"assignIn": true,
"bind": true,
"bindKey": true,
"concat": true,
"difference": true,
"divide": true,
"eq": true,
"gt": true,
"gte": true,
"isEqual": true,
"lt": true,
"lte": true,
"matchesProperty": true,
"merge": true,
"multiply": true,
"overArgs": true,
"partial": true,
"partialRight": true,
"propertyOf": true,
"random": true,
"range": true,
"rangeRight": true,
"subtract": true,
"zip": true,
"zipObject": true,
"zipObjectDeep": true
};
}
});
// node_modules/lodash/fp/placeholder.js
var require_placeholder = __commonJS({
"node_modules/lodash/fp/placeholder.js"(exports, module2) {
module2.exports = {};
}
});
// node_modules/lodash/fp/_baseConvert.js
var require_baseConvert = __commonJS({
"node_modules/lodash/fp/_baseConvert.js"(exports, module2) {
var mapping = require_mapping();
var fallbackHolder = require_placeholder();
var push = Array.prototype.push;
function baseArity(func, n) {
return n == 2 ? function(a, b) {
return func.apply(void 0, arguments);
} : function(a) {
return func.apply(void 0, arguments);
};
}
function baseAry(func, n) {
return n == 2 ? function(a, b) {
return func(a, b);
} : function(a) {
return func(a);
};
}
function cloneArray(array) {
var length = array ? array.length : 0, result = Array(length);
while (length--) {
result[length] = array[length];
}
return result;
}
function createCloner(func) {
return function(object) {
return func({}, object);
};
}
function flatSpread(func, start) {
return function() {
var length = arguments.length, lastIndex = length - 1, args = Array(length);
while (length--) {
args[length] = arguments[length];
}
var array = args[start], otherArgs = args.slice(0, start);
if (array) {
push.apply(otherArgs, array);
}
if (start != lastIndex) {
push.apply(otherArgs, args.slice(start + 1));
}
return func.apply(this, otherArgs);
};
}
function wrapImmutable(func, cloner) {
return function() {
var length = arguments.length;
if (!length) {
return;
}
var args = Array(length);
while (length--) {
args[length] = arguments[length];
}
var result = args[0] = cloner.apply(void 0, args);
func.apply(void 0, args);
return result;
};
}
function baseConvert(util, name, func, options) {
var isLib = typeof name == "function", isObj = name === Object(name);
if (isObj) {
options = func;
func = name;
name = void 0;
}
if (func == null) {
throw new TypeError();
}
options || (options = {});
var config = {
"cap": "cap" in options ? options.cap : true,
"curry": "curry" in options ? options.curry : true,
"fixed": "fixed" in options ? options.fixed : true,
"immutable": "immutable" in options ? options.immutable : true,
"rearg": "rearg" in options ? options.rearg : true
};
var defaultHolder = isLib ? func : fallbackHolder, forceCurry = "curry" in options && options.curry, forceFixed = "fixed" in options && options.fixed, forceRearg = "rearg" in options && options.rearg, pristine = isLib ? func.runInContext() : void 0;
var helpers = isLib ? func : {
"ary": util.ary,
"assign": util.assign,
"clone": util.clone,
"curry": util.curry,
"forEach": util.forEach,
"isArray": util.isArray,
"isError": util.isError,
"isFunction": util.isFunction,
"isWeakMap": util.isWeakMap,
"iteratee": util.iteratee,
"keys": util.keys,
"rearg": util.rearg,
"toInteger": util.toInteger,
"toPath": util.toPath
};
var ary = helpers.ary, assign2 = helpers.assign, clone = helpers.clone, curry = helpers.curry, each = helpers.forEach, isArray = helpers.isArray, isError = helpers.isError, isFunction = helpers.isFunction, isWeakMap = helpers.isWeakMap, keys = helpers.keys, rearg = helpers.rearg, toInteger = helpers.toInteger, toPath = helpers.toPath;
var aryMethodKeys = keys(mapping.aryMethod);
var wrappers = {
"castArray": function(castArray) {
return function() {
var value = arguments[0];
return isArray(value) ? castArray(cloneArray(value)) : castArray.apply(void 0, arguments);
};
},
"iteratee": function(iteratee) {
return function() {
var func2 = arguments[0], arity = arguments[1], result = iteratee(func2, arity), length = result.length;
if (config.cap && typeof arity == "number") {
arity = arity > 2 ? arity - 2 : 1;
return length && length <= arity ? result : baseAry(result, arity);
}
return result;
};
},
"mixin": function(mixin) {
return function(source) {
var func2 = this;
if (!isFunction(func2)) {
return mixin(func2, Object(source));
}
var pairs2 = [];
each(keys(source), function(key) {
if (isFunction(source[key])) {
pairs2.push([key, func2.prototype[key]]);
}
});
mixin(func2, Object(source));
each(pairs2, function(pair) {
var value = pair[1];
if (isFunction(value)) {
func2.prototype[pair[0]] = value;
} else {
delete func2.prototype[pair[0]];
}
});
return func2;
};
},
"nthArg": function(nthArg) {
return function(n) {
var arity = n < 0 ? 1 : toInteger(n) + 1;
return curry(nthArg(n), arity);
};
},
"rearg": function(rearg2) {
return function(func2, indexes) {
var arity = indexes ? indexes.length : 0;
return curry(rearg2(func2, indexes), arity);
};
},
"runInContext": function(runInContext) {
return function(context) {
return baseConvert(util, runInContext(context), options);
};
}
};
function castCap(name2, func2) {
if (config.cap) {
var indexes = mapping.iterateeRearg[name2];
if (indexes) {
return iterateeRearg(func2, indexes);
}
var n = !isLib && mapping.iterateeAry[name2];
if (n) {
return iterateeAry(func2, n);
}
}
return func2;
}
function castCurry(name2, func2, n) {
return forceCurry || config.curry && n > 1 ? curry(func2, n) : func2;
}
function castFixed(name2, func2, n) {
if (config.fixed && (forceFixed || !mapping.skipFixed[name2])) {
var data = mapping.methodSpread[name2], start = data && data.start;
return start === void 0 ? ary(func2, n) : flatSpread(func2, start);
}
return func2;
}
function castRearg(name2, func2, n) {
return config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name2]) ? rearg(func2, mapping.methodRearg[name2] || mapping.aryRearg[n]) : func2;
}
function cloneByPath(object, path) {
path = toPath(path);
var index = -1, length = path.length, lastIndex = length - 1, result = clone(Object(object)), nested = result;
while (nested != null && ++index < length) {
var key = path[index], value = nested[key];
if (value != null && !(isFunction(value) || isError(value) || isWeakMap(value))) {
nested[key] = clone(index == lastIndex ? value : Object(value));
}
nested = nested[key];
}
return result;
}
function convertLib(options2) {
return _.runInContext.convert(options2)(void 0);
}
function createConverter(name2, func2) {
var realName = mapping.aliasToReal[name2] || name2, methodName = mapping.remap[realName] || realName, oldOptions = options;
return function(options2) {
var newUtil = isLib ? pristine : helpers, newFunc = isLib ? pristine[methodName] : func2, newOptions = assign2(assign2({}, oldOptions), options2);
return baseConvert(newUtil, realName, newFunc, newOptions);
};
}
function iterateeAry(func2, n) {
return overArg(func2, function(func3) {
return typeof func3 == "function" ? baseAry(func3, n) : func3;
});
}
function iterateeRearg(func2, indexes) {
return overArg(func2, function(func3) {
var n = indexes.length;
return baseArity(rearg(baseAry(func3, n), indexes), n);
});
}
function overArg(func2, transform2) {
return function() {
var length = arguments.length;
if (!length) {
return func2();
}
var args = Array(length);
while (length--) {
args[length] = arguments[length];
}
var index = config.rearg ? 0 : length - 1;
args[index] = transform2(args[index]);
return func2.apply(void 0, args);
};
}
function wrap(name2, func2, placeholder) {
var result, realName = mapping.aliasToReal[name2] || name2, wrapped = func2, wrapper = wrappers[realName];
if (wrapper) {
wrapped = wrapper(func2);
} else if (config.immutable) {
if (mapping.mutate.array[realName]) {
wrapped = wrapImmutable(func2, cloneArray);
} else if (mapping.mutate.object[realName]) {
wrapped = wrapImmutable(func2, createCloner(func2));
} else if (mapping.mutate.set[realName]) {
wrapped = wrapImmutable(func2, cloneByPath);
}
}
each(aryMethodKeys, function(aryKey) {
each(mapping.aryMethod[aryKey], function(otherName) {
if (realName == otherName) {
var data = mapping.methodSpread[realName], afterRearg = data && data.afterRearg;
result = afterRearg ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey) : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);
result = castCap(realName, result);
result = castCurry(realName, result, aryKey);
return false;
}
});
return !result;
});
result || (result = wrapped);
if (result == func2) {
result = forceCurry ? curry(result, 1) : function() {
return func2.apply(this, arguments);
};
}
result.convert = createConverter(realName, func2);
result.placeholder = func2.placeholder = placeholder;
return result;
}
if (!isObj) {
return wrap(name, func, defaultHolder);
}
var _ = func;
var pairs = [];
each(aryMethodKeys, function(aryKey) {
each(mapping.aryMethod[aryKey], function(key) {
var func2 = _[mapping.remap[key] || key];
if (func2) {
pairs.push([key, wrap(key, func2, _)]);
}
});
});
each(keys(_), function(key) {
var func2 = _[key];
if (typeof func2 == "function") {
var length = pairs.length;
while (length--) {
if (pairs[length][0] == key) {
return;
}
}
func2.convert = createConverter(key, func2);
pairs.push([key, func2]);
}
});
each(pairs, function(pair) {
_[pair[0]] = pair[1];
});
_.convert = convertLib;
_.placeholder = _;
each(keys(_), function(key) {
each(mapping.realToAlias[key] || [], function(alias) {
_[alias] = _[key];
});
});
return _;
}
module2.exports = baseConvert;
}
});
// node_modules/lodash/fp.js
var require_fp = __commonJS({
"node_modules/lodash/fp.js"(exports, module2) {
var _ = require_lodash_min().runInContext();
module2.exports = require_baseConvert()(_, _);
}
});
// node_modules/fraction.js/fraction.js
var require_fraction = __commonJS({
"node_modules/fraction.js/fraction.js"(exports, module2) {
(function(root) {
"use strict";
var MAX_CYCLE_LEN = 2e3;
var P = {
"s": 1,
"n": 0,
"d": 1
};
function createError(name) {
function errorConstructor() {
var temp = Error.apply(this, arguments);
temp["name"] = this["name"] = name;
this["stack"] = temp["stack"];
this["message"] = temp["message"];
}
function IntermediateInheritor() {
}
IntermediateInheritor.prototype = Error.prototype;
errorConstructor.prototype = new IntermediateInheritor();
return errorConstructor;
}
var DivisionByZero = Fraction2["DivisionByZero"] = createError("DivisionByZero");
var InvalidParameter = Fraction2["InvalidParameter"] = createError("InvalidParameter");
function assign2(n, s) {
if (isNaN(n = parseInt(n, 10))) {
throwInvalidParam();
}
return n * s;
}
function throwInvalidParam() {
throw new InvalidParameter();
}
function factorize(num) {
var factors = {};
var n = num;
var i = 2;
var s = 4;
while (s <= n) {
while (n % i === 0) {
n /= i;
factors[i] = (factors[i] || 0) + 1;
}
s += 1 + 2 * i++;
}
if (n !== num) {
if (n > 1)
factors[n] = (factors[n] || 0) + 1;
} else {
factors[num] = (factors[num] || 0) + 1;
}
return factors;
}
var parse = function(p1, p2) {
var n = 0, d = 1, s = 1;
var v = 0, w = 0, x = 0, y = 1, z = 1;
var A = 0, B = 1;
var C = 1, D = 1;
var N = 1e7;
var M;
if (p1 === void 0 || p1 === null) {
} else if (p2 !== void 0) {
n = p1;
d = p2;
s = n * d;
} else
switch (typeof p1) {
case "object": {
if ("d" in p1 && "n" in p1) {
n = p1["n"];
d = p1["d"];
if ("s" in p1)
n *= p1["s"];
} else if (0 in p1) {
n = p1[0];
if (1 in p1)
d = p1[1];
} else {
throwInvalidParam();
}
s = n * d;
break;
}
case "number": {
if (p1 < 0) {
s = p1;
p1 = -p1;
}
if (p1 % 1 === 0) {
n = p1;
} else if (p1 > 0) {
if (p1 >= 1) {
z = Math.pow(10, Math.floor(1 + Math.log(p1) / Math.LN10));
p1 /= z;
}
while (B <= N && D <= N) {
M = (A + C) / (B + D);
if (p1 === M) {
if (B + D <= N) {
n = A + C;
d = B + D;
} else if (D > B) {
n = C;
d = D;
} else {
n = A;
d = B;
}
break;
} else {
if (p1 > M) {
A += C;
B += D;
} else {
C += A;
D += B;
}
if (B > N) {
n = C;
d = D;
} else {
n = A;
d = B;
}
}
}
n *= z;
} else if (isNaN(p1) || isNaN(p2)) {
d = n = NaN;
}
break;
}
case "string": {
B = p1.match(/\d+|./g);
if (B === null)
throwInvalidParam();
if (B[A] === "-") {
s = -1;
A++;
} else if (B[A] === "+") {
A++;
}
if (B.length === A + 1) {
w = assign2(B[A++], s);
} else if (B[A + 1] === "." || B[A] === ".") {
if (B[A] !== ".") {
v = assign2(B[A++], s);
}
A++;
if (A + 1 === B.length || B[A + 1] === "(" && B[A + 3] === ")" || B[A + 1] === "'" && B[A + 3] === "'") {
w = assign2(B[A], s);
y = Math.pow(10, B[A].length);
A++;
}
if (B[A] === "(" && B[A + 2] === ")" || B[A] === "'" && B[A + 2] === "'") {
x = assign2(B[A + 1], s);
z = Math.pow(10, B[A + 1].length) - 1;
A += 3;
}
} else if (B[A + 1] === "/" || B[A + 1] === ":") {
w = assign2(B[A], s);
y = assign2(B[A + 2], 1);
A += 3;
} else if (B[A + 3] === "/" && B[A + 1] === " ") {
v = assign2(B[A], s);
w = assign2(B[A + 2], s);
y = assign2(B[A + 4], 1);
A += 5;
}
if (B.length <= A) {
d = y * z;
s = /* void */
n = x + d * v + z * w;
break;
}
}
default:
throwInvalidParam();
}
if (d === 0) {
throw new DivisionByZero();
}
P["s"] = s < 0 ? -1 : 1;
P["n"] = Math.abs(n);
P["d"] = Math.abs(d);
};
function modpow(b, e, m) {
var r = 1;
for (; e > 0; b = b * b % m, e >>= 1) {
if (e & 1) {
r = r * b % m;
}
}
return r;
}
function cycleLen(n, d) {
for (; d % 2 === 0; d /= 2) {
}
for (; d % 5 === 0; d /= 5) {
}
if (d === 1)
return 0;
var rem = 10 % d;
var t = 1;
for (; rem !== 1; t++) {
rem = rem * 10 % d;
if (t > MAX_CYCLE_LEN)
return 0;
}
return t;
}
function cycleStart(n, d, len) {
var rem1 = 1;
var rem2 = modpow(10, len, d);
for (var t = 0; t < 300; t++) {
if (rem1 === rem2)
return t;
rem1 = rem1 * 10 % d;
rem2 = rem2 * 10 % d;
}
return 0;
}
function gcd(a, b) {
if (!a)
return b;
if (!b)
return a;
while (1) {
a %= b;
if (!a)
return b;
b %= a;
if (!b)
return a;
}
}
;
function Fraction2(a, b) {
if (!(this instanceof Fraction2)) {
return new Fraction2(a, b);
}
parse(a, b);
if (Fraction2["REDUCE"]) {
a = gcd(P["d"], P["n"]);
} else {
a = 1;
}
this["s"] = P["s"];
this["n"] = P["n"] / a;
this["d"] = P["d"] / a;
}
Fraction2["REDUCE"] = 1;
Fraction2.prototype = {
"s": 1,
"n": 0,
"d": 1,
/**
* Calculates the absolute value
*
* Ex: new Fraction(-4).abs() => 4
**/
"abs": function() {
return new Fraction2(this["n"], this["d"]);
},
/**
* Inverts the sign of the current fraction
*
* Ex: new Fraction(-4).neg() => 4
**/
"neg": function() {
return new Fraction2(-this["s"] * this["n"], this["d"]);
},
/**
* Adds two rational numbers
*
* Ex: new Fraction({n: 2, d: 3}).add("14.9") => 467 / 30
**/
"add": function(a, b) {
parse(a, b);
return new Fraction2(
this["s"] * this["n"] * P["d"] + P["s"] * this["d"] * P["n"],
this["d"] * P["d"]
);
},
/**
* Subtracts two rational numbers
*
* Ex: new Fraction({n: 2, d: 3}).add("14.9") => -427 / 30
**/
"sub": function(a, b) {
parse(a, b);
return new Fraction2(
this["s"] * this["n"] * P["d"] - P["s"] * this["d"] * P["n"],
this["d"] * P["d"]
);
},
/**
* Multiplies two rational numbers
*
* Ex: new Fraction("-17.(345)").mul(3) => 5776 / 111
**/
"mul": function(a, b) {
parse(a, b);
return new Fraction2(
this["s"] * P["s"] * this["n"] * P["n"],
this["d"] * P["d"]
);
},
/**
* Divides two rational numbers
*
* Ex: new Fraction("-17.(345)").inverse().div(3)
**/
"div": function(a, b) {
parse(a, b);
return new Fraction2(
this["s"] * P["s"] * this["n"] * P["d"],
this["d"] * P["n"]
);
},
/**
* Clones the actual object
*
* Ex: new Fraction("-17.(345)").clone()
**/
"clone": function() {
return new Fraction2(this);
},
/**
* Calculates the modulo of two rational numbers - a more precise fmod
*
* Ex: new Fraction('4.(3)').mod([7, 8]) => (13/3) % (7/8) = (5/6)
**/
"mod": function(a, b) {
if (isNaN(this["n"]) || isNaN(this["d"])) {
return new Fraction2(NaN);
}
if (a === void 0) {
return new Fraction2(this["s"] * this["n"] % this["d"], 1);
}
parse(a, b);
if (0 === P["n"] && 0 === this["d"]) {
Fraction2(0, 0);
}
return new Fraction2(
this["s"] * (P["d"] * this["n"]) % (P["n"] * this["d"]),
P["d"] * this["d"]
);
},
/**
* Calculates the fractional gcd of two rational numbers
*
* Ex: new Fraction(5,8).gcd(3,7) => 1/56
*/
"gcd": function(a, b) {
parse(a, b);
return new Fraction2(gcd(P["n"], this["n"]) * gcd(P["d"], this["d"]), P["d"] * this["d"]);
},
/**
* Calculates the fractional lcm of two rational numbers
*
* Ex: new Fraction(5,8).lcm(3,7) => 15
*/
"lcm": function(a, b) {
parse(a, b);
if (P["n"] === 0 && this["n"] === 0) {
return new Fraction2();
}
return new Fraction2(P["n"] * this["n"], gcd(P["n"], this["n"]) * gcd(P["d"], this["d"]));
},
/**
* Calculates the ceil of a rational number
*
* Ex: new Fraction('4.(3)').ceil() => (5 / 1)
**/
"ceil": function(places) {
places = Math.pow(10, places || 0);
if (isNaN(this["n"]) || isNaN(this["d"])) {
return new Fraction2(NaN);
}
return new Fraction2(Math.ceil(places * this["s"] * this["n"] / this["d"]), places);
},
/**
* Calculates the floor of a rational number
*
* Ex: new Fraction('4.(3)').floor() => (4 / 1)
**/
"floor": function(places) {
places = Math.pow(10, places || 0);
if (isNaN(this["n"]) || isNaN(this["d"])) {
return new Fraction2(NaN);
}
return new Fraction2(Math.floor(places * this["s"] * this["n"] / this["d"]), places);
},
/**
* Rounds a rational numbers
*
* Ex: new Fraction('4.(3)').round() => (4 / 1)
**/
"round": function(places) {
places = Math.pow(10, places || 0);
if (isNaN(this["n"]) || isNaN(this["d"])) {
return new Fraction2(NaN);
}
return new Fraction2(Math.round(places * this["s"] * this["n"] / this["d"]), places);
},
/**
* Gets the inverse of the fraction, means numerator and denominator are exchanged
*
* Ex: new Fraction([-3, 4]).inverse() => -4 / 3
**/
"inverse": function() {
return new Fraction2(this["s"] * this["d"], this["n"]);
},
/**
* Calculates the fraction to some rational exponent, if possible
*
* Ex: new Fraction(-1,2).pow(-3) => -8
*/
"pow": function(a, b) {
parse(a, b);
if (P["d"] === 1) {
if (P["s"] < 0) {
return new Fraction2(Math.pow(this["s"] * this["d"], P["n"]), Math.pow(this["n"], P["n"]));
} else {
return new Fraction2(Math.pow(this["s"] * this["n"], P["n"]), Math.pow(this["d"], P["n"]));
}
}
if (this["s"] < 0)
return null;
var N = factorize(this["n"]);
var D = factorize(this["d"]);
var n = 1;
var d = 1;
for (var k in N) {
if (k === "1")
continue;
if (k === "0") {
n = 0;
break;
}
N[k] *= P["n"];
if (N[k] % P["d"] === 0) {
N[k] /= P["d"];
} else
return null;
n *= Math.pow(k, N[k]);
}
for (var k in D) {
if (k === "1")
continue;
D[k] *= P["n"];
if (D[k] % P["d"] === 0) {
D[k] /= P["d"];
} else
return null;
d *= Math.pow(k, D[k]);
}
if (P["s"] < 0) {
return new Fraction2(d, n);
}
return new Fraction2(n, d);
},
/**
* Check if two rational numbers are the same
*
* Ex: new Fraction(19.6).equals([98, 5]);
**/
"equals": function(a, b) {
parse(a, b);
return this["s"] * this["n"] * P["d"] === P["s"] * P["n"] * this["d"];
},
/**
* Check if two rational numbers are the same
*
* Ex: new Fraction(19.6).equals([98, 5]);
**/
"compare": function(a, b) {
parse(a, b);
var t = this["s"] * this["n"] * P["d"] - P["s"] * P["n"] * this["d"];
return (0 < t) - (t < 0);
},
"simplify": function(eps) {
if (isNaN(this["n"]) || isNaN(this["d"])) {
return this;
}
var cont = this["abs"]()["toContinued"]();
eps = eps || 1e-3;
function rec(a) {
if (a.length === 1)
return new Fraction2(a[0]);
return rec(a.slice(1))["inverse"]()["add"](a[0]);
}
for (var i = 0; i < cont.length; i++) {
var tmp = rec(cont.slice(0, i + 1));
if (tmp["sub"](this["abs"]())["abs"]().valueOf() < eps) {
return tmp["mul"](this["s"]);
}
}
return this;
},
/**
* Check if two rational numbers are divisible
*
* Ex: new Fraction(19.6).divisible(1.5);
*/
"divisible": function(a, b) {
parse(a, b);
return !(!(P["n"] * this["d"]) || this["n"] * P["d"] % (P["n"] * this["d"]));
},
/**
* Returns a decimal representation of the fraction
*
* Ex: new Fraction("100.'91823'").valueOf() => 100.91823918239183
**/
"valueOf": function() {
return this["s"] * this["n"] / this["d"];
},
/**
* Returns a string-fraction representation of a Fraction object
*
* Ex: new Fraction("1.'3'").toFraction() => "4 1/3"
**/
"toFraction": function(excludeWhole) {
var whole, str = "";
var n = this["n"];
var d = this["d"];
if (this["s"] < 0) {
str += "-";
}
if (d === 1) {
str += n;
} else {
if (excludeWhole && (whole = Math.floor(n / d)) > 0) {
str += whole;
str += " ";
n %= d;
}
str += n;
str += "/";
str += d;
}
return str;
},
/**
* Returns a latex representation of a Fraction object
*
* Ex: new Fraction("1.'3'").toLatex() => "\frac{4}{3}"
**/
"toLatex": function(excludeWhole) {
var whole, str = "";
var n = this["n"];
var d = this["d"];
if (this["s"] < 0) {
str += "-";
}
if (d === 1) {
str += n;
} else {
if (excludeWhole && (whole = Math.floor(n / d)) > 0) {
str += whole;
n %= d;
}
str += "\\frac{";
str += n;
str += "}{";
str += d;
str += "}";
}
return str;
},
/**
* Returns an array of continued fraction elements
*
* Ex: new Fraction("7/8").toContinued() => [0,1,7]
*/
"toContinued": function() {
var t;
var a = this["n"];
var b = this["d"];
var res = [];
if (isNaN(a) || isNaN(b)) {
return res;
}
do {
res.push(Math.floor(a / b));
t = a % b;
a = b;
b = t;
} while (a !== 1);
return res;
},
/**
* Creates a string representation of a fraction with all digits
*
* Ex: new Fraction("100.'91823'").toString() => "100.(91823)"
**/
"toString": function(dec) {
var g;
var N = this["n"];
var D = this["d"];
if (isNaN(N) || isNaN(D)) {
return "NaN";
}
if (!Fraction2["REDUCE"]) {
g = gcd(N, D);
N /= g;
D /= g;
}
dec = dec || 15;
var cycLen = cycleLen(N, D);
var cycOff = cycleStart(N, D, cycLen);
var str = this["s"] === -1 ? "-" : "";
str += N / D | 0;
N %= D;
N *= 10;
if (N)
str += ".";
if (cycLen) {
for (var i = cycOff; i--; ) {
str += N / D | 0;
N %= D;
N *= 10;
}
str += "(";
for (var i = cycLen; i--; ) {
str += N / D | 0;
N %= D;
N *= 10;
}
str += ")";
} else {
for (var i = dec; N && i--; ) {
str += N / D | 0;
N %= D;
N *= 10;
}
}
return str;
}
};
if (typeof define === "function" && define["amd"]) {
define([], function() {
return Fraction2;
});
} else if (typeof exports === "object") {
Object.defineProperty(Fraction2, "__esModule", { "value": true });
Fraction2["default"] = Fraction2;
Fraction2["Fraction"] = Fraction2;
module2["exports"] = Fraction2;
} else {
root["Fraction"] = Fraction2;
}
})(exports);
}
});
// node_modules/lodash/lodash.js
var require_lodash = __commonJS({
"node_modules/lodash/lodash.js"(exports, module2) {
(function() {
var undefined2;
var VERSION = "4.17.21";
var LARGE_ARRAY_SIZE = 200;
var CORE_ERROR_TEXT = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", FUNC_ERROR_TEXT = "Expected a function", INVALID_TEMPL_VAR_ERROR_TEXT = "Invalid `variable` option passed into `_.template`";
var HASH_UNDEFINED = "__lodash_hash_undefined__";
var MAX_MEMOIZE_SIZE = 500;
var PLACEHOLDER = "__lodash_placeholder__";
var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4;
var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2;
var WRAP_BIND_FLAG = 1, WRAP_BIND_KEY_FLAG = 2, WRAP_CURRY_BOUND_FLAG = 4, WRAP_CURRY_FLAG = 8, WRAP_CURRY_RIGHT_FLAG = 16, WRAP_PARTIAL_FLAG = 32, WRAP_PARTIAL_RIGHT_FLAG = 64, WRAP_ARY_FLAG = 128, WRAP_REARG_FLAG = 256, WRAP_FLIP_FLAG = 512;
var DEFAULT_TRUNC_LENGTH = 30, DEFAULT_TRUNC_OMISSION = "...";
var HOT_COUNT = 800, HOT_SPAN = 16;
var LAZY_FILTER_FLAG = 1, LAZY_MAP_FLAG = 2, LAZY_WHILE_FLAG = 3;
var INFINITY = 1 / 0, MAX_SAFE_INTEGER = 9007199254740991, MAX_INTEGER = 17976931348623157e292, NAN = 0 / 0;
var MAX_ARRAY_LENGTH = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
var wrapFlags = [
["ary", WRAP_ARY_FLAG],
["bind", WRAP_BIND_FLAG],
["bindKey", WRAP_BIND_KEY_FLAG],
["curry", WRAP_CURRY_FLAG],
["curryRight", WRAP_CURRY_RIGHT_FLAG],
["flip", WRAP_FLIP_FLAG],
["partial", WRAP_PARTIAL_FLAG],
["partialRight", WRAP_PARTIAL_RIGHT_FLAG],
["rearg", WRAP_REARG_FLAG]
];
var argsTag = "[object Arguments]", arrayTag = "[object Array]", asyncTag = "[object AsyncFunction]", boolTag = "[object Boolean]", dateTag = "[object Date]", domExcTag = "[object DOMException]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", nullTag = "[object Null]", objectTag = "[object Object]", promiseTag = "[object Promise]", proxyTag = "[object Proxy]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", undefinedTag = "[object Undefined]", weakMapTag = "[object WeakMap]", weakSetTag = "[object WeakSet]";
var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
var reEmptyStringLeading = /\b__p \+= '';/g, reEmptyStringMiddle = /\b(__p \+=) '' \+/g, reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, reUnescapedHtml = /[&<>"']/g, reHasEscapedHtml = RegExp(reEscapedHtml.source), reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
var reEscape = /<%-([\s\S]+?)%>/g, reEvaluate = /<%([\s\S]+?)%>/g, reInterpolate = /<%=([\s\S]+?)%>/g;
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source);
var reTrimStart = /^\s+/;
var reWhitespace = /\s/;
var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, reSplitDetails = /,? & /;
var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/;
var reEscapeChar = /\\(\\)?/g;
var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
var reFlags = /\w*$/;
var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
var reIsBinary = /^0b[01]+$/i;
var reIsHostCtor = /^\[object .+?Constructor\]$/;
var reIsOctal = /^0o[0-7]+$/i;
var reIsUint = /^(?:0|[1-9]\d*)$/;
var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
var reNoMatch = /($^)/;
var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsDingbatRange = "\\u2700-\\u27bf", rsLowerRange = "a-z\\xdf-\\xf6\\xf8-\\xff", rsMathOpRange = "\\xac\\xb1\\xd7\\xf7", rsNonCharRange = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", rsPunctuationRange = "\\u2000-\\u206f", rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", rsUpperRange = "A-Z\\xc0-\\xd6\\xd8-\\xde", rsVarRange = "\\ufe0e\\ufe0f", rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
var rsApos = "['\u2019]", rsAstral = "[" + rsAstralRange + "]", rsBreak = "[" + rsBreakRange + "]", rsCombo = "[" + rsComboRange + "]", rsDigits = "\\d+", rsDingbat = "[" + rsDingbatRange + "]", rsLower = "[" + rsLowerRange + "]", rsMisc = "[^" + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsUpper = "[" + rsUpperRange + "]", rsZWJ = "\\u200d";
var rsMiscLower = "(?:" + rsLower + "|" + rsMisc + ")", rsMiscUpper = "(?:" + rsUpper + "|" + rsMisc + ")", rsOptContrLower = "(?:" + rsApos + "(?:d|ll|m|re|s|t|ve))?", rsOptContrUpper = "(?:" + rsApos + "(?:D|LL|M|RE|S|T|VE))?", reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*", rsOrdLower = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", rsOrdUpper = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsEmoji = "(?:" + [rsDingbat, rsRegional, rsSurrPair].join("|") + ")" + rsSeq, rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")";
var reApos = RegExp(rsApos, "g");
var reComboMark = RegExp(rsCombo, "g");
var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g");
var reUnicodeWord = RegExp([
rsUpper + "?" + rsLower + "+" + rsOptContrLower + "(?=" + [rsBreak, rsUpper, "$"].join("|") + ")",
rsMiscUpper + "+" + rsOptContrUpper + "(?=" + [rsBreak, rsUpper + rsMiscLower, "$"].join("|") + ")",
rsUpper + "?" + rsMiscLower + "+" + rsOptContrLower,
rsUpper + "+" + rsOptContrUpper,
rsOrdUpper,
rsOrdLower,
rsDigits,
rsEmoji
].join("|"), "g");
var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + "]");
var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
var contextProps = [
"Array",
"Buffer",
"DataView",
"Date",
"Error",
"Float32Array",
"Float64Array",
"Function",
"Int8Array",
"Int16Array",
"Int32Array",
"Map",
"Math",
"Object",
"Promise",
"RegExp",
"Set",
"String",
"Symbol",
"TypeError",
"Uint8Array",
"Uint8ClampedArray",
"Uint16Array",
"Uint32Array",
"WeakMap",
"_",
"clearTimeout",
"isFinite",
"parseInt",
"setTimeout"
];
var templateCounter = -1;
var typedArrayTags = {};
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
var cloneableTags = {};
cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;
var deburredLetters = {
// Latin-1 Supplement block.
"\xC0": "A",
"\xC1": "A",
"\xC2": "A",
"\xC3": "A",
"\xC4": "A",
"\xC5": "A",
"\xE0": "a",
"\xE1": "a",
"\xE2": "a",
"\xE3": "a",
"\xE4": "a",
"\xE5": "a",
"\xC7": "C",
"\xE7": "c",
"\xD0": "D",
"\xF0": "d",
"\xC8": "E",
"\xC9": "E",
"\xCA": "E",
"\xCB": "E",
"\xE8": "e",
"\xE9": "e",
"\xEA": "e",
"\xEB": "e",
"\xCC": "I",
"\xCD": "I",
"\xCE": "I",
"\xCF": "I",
"\xEC": "i",
"\xED": "i",
"\xEE": "i",
"\xEF": "i",
"\xD1": "N",
"\xF1": "n",
"\xD2": "O",
"\xD3": "O",
"\xD4": "O",
"\xD5": "O",
"\xD6": "O",
"\xD8": "O",
"\xF2": "o",
"\xF3": "o",
"\xF4": "o",
"\xF5": "o",
"\xF6": "o",
"\xF8": "o",
"\xD9": "U",
"\xDA": "U",
"\xDB": "U",
"\xDC": "U",
"\xF9": "u",
"\xFA": "u",
"\xFB": "u",
"\xFC": "u",
"\xDD": "Y",
"\xFD": "y",
"\xFF": "y",
"\xC6": "Ae",
"\xE6": "ae",
"\xDE": "Th",
"\xFE": "th",
"\xDF": "ss",
// Latin Extended-A block.
"\u0100": "A",
"\u0102": "A",
"\u0104": "A",
"\u0101": "a",
"\u0103": "a",
"\u0105": "a",
"\u0106": "C",
"\u0108": "C",
"\u010A": "C",
"\u010C": "C",
"\u0107": "c",
"\u0109": "c",
"\u010B": "c",
"\u010D": "c",
"\u010E": "D",
"\u0110": "D",
"\u010F": "d",
"\u0111": "d",
"\u0112": "E",
"\u0114": "E",
"\u0116": "E",
"\u0118": "E",
"\u011A": "E",
"\u0113": "e",
"\u0115": "e",
"\u0117": "e",
"\u0119": "e",
"\u011B": "e",
"\u011C": "G",
"\u011E": "G",
"\u0120": "G",
"\u0122": "G",
"\u011D": "g",
"\u011F": "g",
"\u0121": "g",
"\u0123": "g",
"\u0124": "H",
"\u0126": "H",
"\u0125": "h",
"\u0127": "h",
"\u0128": "I",
"\u012A": "I",
"\u012C": "I",
"\u012E": "I",
"\u0130": "I",
"\u0129": "i",
"\u012B": "i",
"\u012D": "i",
"\u012F": "i",
"\u0131": "i",
"\u0134": "J",
"\u0135": "j",
"\u0136": "K",
"\u0137": "k",
"\u0138": "k",
"\u0139": "L",
"\u013B": "L",
"\u013D": "L",
"\u013F": "L",
"\u0141": "L",
"\u013A": "l",
"\u013C": "l",
"\u013E": "l",
"\u0140": "l",
"\u0142": "l",
"\u0143": "N",
"\u0145": "N",
"\u0147": "N",
"\u014A": "N",
"\u0144": "n",
"\u0146": "n",
"\u0148": "n",
"\u014B": "n",
"\u014C": "O",
"\u014E": "O",
"\u0150": "O",
"\u014D": "o",
"\u014F": "o",
"\u0151": "o",
"\u0154": "R",
"\u0156": "R",
"\u0158": "R",
"\u0155": "r",
"\u0157": "r",
"\u0159": "r",
"\u015A": "S",
"\u015C": "S",
"\u015E": "S",
"\u0160": "S",
"\u015B": "s",
"\u015D": "s",
"\u015F": "s",
"\u0161": "s",
"\u0162": "T",
"\u0164": "T",
"\u0166": "T",
"\u0163": "t",
"\u0165": "t",
"\u0167": "t",
"\u0168": "U",
"\u016A": "U",
"\u016C": "U",
"\u016E": "U",
"\u0170": "U",
"\u0172": "U",
"\u0169": "u",
"\u016B": "u",
"\u016D": "u",
"\u016F": "u",
"\u0171": "u",
"\u0173": "u",
"\u0174": "W",
"\u0175": "w",
"\u0176": "Y",
"\u0177": "y",
"\u0178": "Y",
"\u0179": "Z",
"\u017B": "Z",
"\u017D": "Z",
"\u017A": "z",
"\u017C": "z",
"\u017E": "z",
"\u0132": "IJ",
"\u0133": "ij",
"\u0152": "Oe",
"\u0153": "oe",
"\u0149": "'n",
"\u017F": "s"
};
var htmlEscapes = {
"&": "&amp;",
"<": "&lt;",
">": "&gt;",
'"': "&quot;",
"'": "&#39;"
};
var htmlUnescapes = {
"&amp;": "&",
"&lt;": "<",
"&gt;": ">",
"&quot;": '"',
"&#39;": "'"
};
var stringEscapes = {
"\\": "\\",
"'": "'",
"\n": "n",
"\r": "r",
"\u2028": "u2028",
"\u2029": "u2029"
};
var freeParseFloat = parseFloat, freeParseInt = parseInt;
var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
var freeSelf = typeof self == "object" && self && self.Object === Object && self;
var root = freeGlobal || freeSelf || Function("return this")();
var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
var freeModule = freeExports && typeof module2 == "object" && module2 && !module2.nodeType && module2;
var moduleExports = freeModule && freeModule.exports === freeExports;
var freeProcess = moduleExports && freeGlobal.process;
var nodeUtil = function() {
try {
var types = freeModule && freeModule.require && freeModule.require("util").types;
if (types) {
return types;
}
return freeProcess && freeProcess.binding && freeProcess.binding("util");
} catch (e) {
}
}();
var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, nodeIsDate = nodeUtil && nodeUtil.isDate, nodeIsMap = nodeUtil && nodeUtil.isMap, nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, nodeIsSet = nodeUtil && nodeUtil.isSet, nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
function apply(func, thisArg, args) {
switch (args.length) {
case 0:
return func.call(thisArg);
case 1:
return func.call(thisArg, args[0]);
case 2:
return func.call(thisArg, args[0], args[1]);
case 3:
return func.call(thisArg, args[0], args[1], args[2]);
}
return func.apply(thisArg, args);
}
function arrayAggregator(array, setter, iteratee, accumulator) {
var index = -1, length = array == null ? 0 : array.length;
while (++index < length) {
var value = array[index];
setter(accumulator, value, iteratee(value), array);
}
return accumulator;
}
function arrayEach(array, iteratee) {
var index = -1, length = array == null ? 0 : array.length;
while (++index < length) {
if (iteratee(array[index], index, array) === false) {
break;
}
}
return array;
}
function arrayEachRight(array, iteratee) {
var length = array == null ? 0 : array.length;
while (length--) {
if (iteratee(array[length], length, array) === false) {
break;
}
}
return array;
}
function arrayEvery(array, predicate) {
var index = -1, length = array == null ? 0 : array.length;
while (++index < length) {
if (!predicate(array[index], index, array)) {
return false;
}
}
return true;
}
function arrayFilter(array, predicate) {
var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];
while (++index < length) {
var value = array[index];
if (predicate(value, index, array)) {
result[resIndex++] = value;
}
}
return result;
}
function arrayIncludes(array, value) {
var length = array == null ? 0 : array.length;
return !!length && baseIndexOf(array, value, 0) > -1;
}
function arrayIncludesWith(array, value, comparator) {
var index = -1, length = array == null ? 0 : array.length;
while (++index < length) {
if (comparator(value, array[index])) {
return true;
}
}
return false;
}
function arrayMap(array, iteratee) {
var index = -1, length = array == null ? 0 : array.length, result = Array(length);
while (++index < length) {
result[index] = iteratee(array[index], index, array);
}
return result;
}
function arrayPush(array, values) {
var index = -1, length = values.length, offset = array.length;
while (++index < length) {
array[offset + index] = values[index];
}
return array;
}
function arrayReduce(array, iteratee, accumulator, initAccum) {
var index = -1, length = array == null ? 0 : array.length;
if (initAccum && length) {
accumulator = array[++index];
}
while (++index < length) {
accumulator = iteratee(accumulator, array[index], index, array);
}
return accumulator;
}
function arrayReduceRight(array, iteratee, accumulator, initAccum) {
var length = array == null ? 0 : array.length;
if (initAccum && length) {
accumulator = array[--length];
}
while (length--) {
accumulator = iteratee(accumulator, array[length], length, array);
}
return accumulator;
}
function arraySome(array, predicate) {
var index = -1, length = array == null ? 0 : array.length;
while (++index < length) {
if (predicate(array[index], index, array)) {
return true;
}
}
return false;
}
var asciiSize = baseProperty("length");
function asciiToArray(string) {
return string.split("");
}
function asciiWords(string) {
return string.match(reAsciiWord) || [];
}
function baseFindKey(collection, predicate, eachFunc) {
var result;
eachFunc(collection, function(value, key, collection2) {
if (predicate(value, key, collection2)) {
result = key;
return false;
}
});
return result;
}
function baseFindIndex(array, predicate, fromIndex, fromRight) {
var length = array.length, index = fromIndex + (fromRight ? 1 : -1);
while (fromRight ? index-- : ++index < length) {
if (predicate(array[index], index, array)) {
return index;
}
}
return -1;
}
function baseIndexOf(array, value, fromIndex) {
return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);
}
function baseIndexOfWith(array, value, fromIndex, comparator) {
var index = fromIndex - 1, length = array.length;
while (++index < length) {
if (comparator(array[index], value)) {
return index;
}
}
return -1;
}
function baseIsNaN(value) {
return value !== value;
}
function baseMean(array, iteratee) {
var length = array == null ? 0 : array.length;
return length ? baseSum(array, iteratee) / length : NAN;
}
function baseProperty(key) {
return function(object) {
return object == null ? undefined2 : object[key];
};
}
function basePropertyOf(object) {
return function(key) {
return object == null ? undefined2 : object[key];
};
}
function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
eachFunc(collection, function(value, index, collection2) {
accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index, collection2);
});
return accumulator;
}
function baseSortBy(array, comparer) {
var length = array.length;
array.sort(comparer);
while (length--) {
array[length] = array[length].value;
}
return array;
}
function baseSum(array, iteratee) {
var result, index = -1, length = array.length;
while (++index < length) {
var current = iteratee(array[index]);
if (current !== undefined2) {
result = result === undefined2 ? current : result + current;
}
}
return result;
}
function baseTimes(n, iteratee) {
var index = -1, result = Array(n);
while (++index < n) {
result[index] = iteratee(index);
}
return result;
}
function baseToPairs(object, props) {
return arrayMap(props, function(key) {
return [key, object[key]];
});
}
function baseTrim(string) {
return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, "") : string;
}
function baseUnary(func) {
return function(value) {
return func(value);
};
}
function baseValues(object, props) {
return arrayMap(props, function(key) {
return object[key];
});
}
function cacheHas(cache, key) {
return cache.has(key);
}
function charsStartIndex(strSymbols, chrSymbols) {
var index = -1, length = strSymbols.length;
while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {
}
return index;
}
function charsEndIndex(strSymbols, chrSymbols) {
var index = strSymbols.length;
while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {
}
return index;
}
function countHolders(array, placeholder) {
var length = array.length, result = 0;
while (length--) {
if (array[length] === placeholder) {
++result;
}
}
return result;
}
var deburrLetter = basePropertyOf(deburredLetters);
var escapeHtmlChar = basePropertyOf(htmlEscapes);
function escapeStringChar(chr) {
return "\\" + stringEscapes[chr];
}
function getValue(object, key) {
return object == null ? undefined2 : object[key];
}
function hasUnicode(string) {
return reHasUnicode.test(string);
}
function hasUnicodeWord(string) {
return reHasUnicodeWord.test(string);
}
function iteratorToArray(iterator) {
var data, result = [];
while (!(data = iterator.next()).done) {
result.push(data.value);
}
return result;
}
function mapToArray(map) {
var index = -1, result = Array(map.size);
map.forEach(function(value, key) {
result[++index] = [key, value];
});
return result;
}
function overArg(func, transform2) {
return function(arg) {
return func(transform2(arg));
};
}
function replaceHolders(array, placeholder) {
var index = -1, length = array.length, resIndex = 0, result = [];
while (++index < length) {
var value = array[index];
if (value === placeholder || value === PLACEHOLDER) {
array[index] = PLACEHOLDER;
result[resIndex++] = index;
}
}
return result;
}
function setToArray(set) {
var index = -1, result = Array(set.size);
set.forEach(function(value) {
result[++index] = value;
});
return result;
}
function setToPairs(set) {
var index = -1, result = Array(set.size);
set.forEach(function(value) {
result[++index] = [value, value];
});
return result;
}
function strictIndexOf(array, value, fromIndex) {
var index = fromIndex - 1, length = array.length;
while (++index < length) {
if (array[index] === value) {
return index;
}
}
return -1;
}
function strictLastIndexOf(array, value, fromIndex) {
var index = fromIndex + 1;
while (index--) {
if (array[index] === value) {
return index;
}
}
return index;
}
function stringSize(string) {
return hasUnicode(string) ? unicodeSize(string) : asciiSize(string);
}
function stringToArray(string) {
return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string);
}
function trimmedEndIndex(string) {
var index = string.length;
while (index-- && reWhitespace.test(string.charAt(index))) {
}
return index;
}
var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
function unicodeSize(string) {
var result = reUnicode.lastIndex = 0;
while (reUnicode.test(string)) {
++result;
}
return result;
}
function unicodeToArray(string) {
return string.match(reUnicode) || [];
}
function unicodeWords(string) {
return string.match(reUnicodeWord) || [];
}
var runInContext = function runInContext2(context) {
context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));
var Array2 = context.Array, Date2 = context.Date, Error2 = context.Error, Function2 = context.Function, Math2 = context.Math, Object2 = context.Object, RegExp2 = context.RegExp, String2 = context.String, TypeError2 = context.TypeError;
var arrayProto = Array2.prototype, funcProto = Function2.prototype, objectProto = Object2.prototype;
var coreJsData = context["__core-js_shared__"];
var funcToString = funcProto.toString;
var hasOwnProperty = objectProto.hasOwnProperty;
var idCounter = 0;
var maskSrcKey = function() {
var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
return uid ? "Symbol(src)_1." + uid : "";
}();
var nativeObjectToString = objectProto.toString;
var objectCtorString = funcToString.call(Object2);
var oldDash = root._;
var reIsNative = RegExp2(
"^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
);
var Buffer2 = moduleExports ? context.Buffer : undefined2, Symbol2 = context.Symbol, Uint8Array2 = context.Uint8Array, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : undefined2, getPrototype = overArg(Object2.getPrototypeOf, Object2), objectCreate = Object2.create, propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice, spreadableSymbol = Symbol2 ? Symbol2.isConcatSpreadable : undefined2, symIterator = Symbol2 ? Symbol2.iterator : undefined2, symToStringTag = Symbol2 ? Symbol2.toStringTag : undefined2;
var defineProperty = function() {
try {
var func = getNative(Object2, "defineProperty");
func({}, "", {});
return func;
} catch (e) {
}
}();
var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, ctxNow = Date2 && Date2.now !== root.Date.now && Date2.now, ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;
var nativeCeil = Math2.ceil, nativeFloor = Math2.floor, nativeGetSymbols = Object2.getOwnPropertySymbols, nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : undefined2, nativeIsFinite = context.isFinite, nativeJoin = arrayProto.join, nativeKeys = overArg(Object2.keys, Object2), nativeMax = Math2.max, nativeMin = Math2.min, nativeNow = Date2.now, nativeParseInt = context.parseInt, nativeRandom = Math2.random, nativeReverse = arrayProto.reverse;
var DataView = getNative(context, "DataView"), Map2 = getNative(context, "Map"), Promise2 = getNative(context, "Promise"), Set2 = getNative(context, "Set"), WeakMap2 = getNative(context, "WeakMap"), nativeCreate = getNative(Object2, "create");
var metaMap = WeakMap2 && new WeakMap2();
var realNames = {};
var dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map2), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set2), weakMapCtorString = toSource(WeakMap2);
var symbolProto = Symbol2 ? Symbol2.prototype : undefined2, symbolValueOf = symbolProto ? symbolProto.valueOf : undefined2, symbolToString = symbolProto ? symbolProto.toString : undefined2;
function lodash(value) {
if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
if (value instanceof LodashWrapper) {
return value;
}
if (hasOwnProperty.call(value, "__wrapped__")) {
return wrapperClone(value);
}
}
return new LodashWrapper(value);
}
var baseCreate = function() {
function object() {
}
return function(proto) {
if (!isObject(proto)) {
return {};
}
if (objectCreate) {
return objectCreate(proto);
}
object.prototype = proto;
var result2 = new object();
object.prototype = undefined2;
return result2;
};
}();
function baseLodash() {
}
function LodashWrapper(value, chainAll) {
this.__wrapped__ = value;
this.__actions__ = [];
this.__chain__ = !!chainAll;
this.__index__ = 0;
this.__values__ = undefined2;
}
lodash.templateSettings = {
/**
* Used to detect `data` property values to be HTML-escaped.
*
* @memberOf _.templateSettings
* @type {RegExp}
*/
"escape": reEscape,
/**
* Used to detect code to be evaluated.
*
* @memberOf _.templateSettings
* @type {RegExp}
*/
"evaluate": reEvaluate,
/**
* Used to detect `data` property values to inject.
*
* @memberOf _.templateSettings
* @type {RegExp}
*/
"interpolate": reInterpolate,
/**
* Used to reference the data object in the template text.
*
* @memberOf _.templateSettings
* @type {string}
*/
"variable": "",
/**
* Used to import variables into the compiled template.
*
* @memberOf _.templateSettings
* @type {Object}
*/
"imports": {
/**
* A reference to the `lodash` function.
*
* @memberOf _.templateSettings.imports
* @type {Function}
*/
"_": lodash
}
};
lodash.prototype = baseLodash.prototype;
lodash.prototype.constructor = lodash;
LodashWrapper.prototype = baseCreate(baseLodash.prototype);
LodashWrapper.prototype.constructor = LodashWrapper;
function LazyWrapper(value) {
this.__wrapped__ = value;
this.__actions__ = [];
this.__dir__ = 1;
this.__filtered__ = false;
this.__iteratees__ = [];
this.__takeCount__ = MAX_ARRAY_LENGTH;
this.__views__ = [];
}
function lazyClone() {
var result2 = new LazyWrapper(this.__wrapped__);
result2.__actions__ = copyArray(this.__actions__);
result2.__dir__ = this.__dir__;
result2.__filtered__ = this.__filtered__;
result2.__iteratees__ = copyArray(this.__iteratees__);
result2.__takeCount__ = this.__takeCount__;
result2.__views__ = copyArray(this.__views__);
return result2;
}
function lazyReverse() {
if (this.__filtered__) {
var result2 = new LazyWrapper(this);
result2.__dir__ = -1;
result2.__filtered__ = true;
} else {
result2 = this.clone();
result2.__dir__ *= -1;
}
return result2;
}
function lazyValue() {
var array = this.__wrapped__.value(), dir = this.__dir__, isArr = isArray(array), isRight = dir < 0, arrLength = isArr ? array.length : 0, view = getView(0, arrLength, this.__views__), start = view.start, end = view.end, length = end - start, index = isRight ? end : start - 1, iteratees = this.__iteratees__, iterLength = iteratees.length, resIndex = 0, takeCount = nativeMin(length, this.__takeCount__);
if (!isArr || !isRight && arrLength == length && takeCount == length) {
return baseWrapperValue(array, this.__actions__);
}
var result2 = [];
outer:
while (length-- && resIndex < takeCount) {
index += dir;
var iterIndex = -1, value = array[index];
while (++iterIndex < iterLength) {
var data = iteratees[iterIndex], iteratee2 = data.iteratee, type = data.type, computed = iteratee2(value);
if (type == LAZY_MAP_FLAG) {
value = computed;
} else if (!computed) {
if (type == LAZY_FILTER_FLAG) {
continue outer;
} else {
break outer;
}
}
}
result2[resIndex++] = value;
}
return result2;
}
LazyWrapper.prototype = baseCreate(baseLodash.prototype);
LazyWrapper.prototype.constructor = LazyWrapper;
function Hash(entries) {
var index = -1, length = entries == null ? 0 : entries.length;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
function hashClear() {
this.__data__ = nativeCreate ? nativeCreate(null) : {};
this.size = 0;
}
function hashDelete(key) {
var result2 = this.has(key) && delete this.__data__[key];
this.size -= result2 ? 1 : 0;
return result2;
}
function hashGet(key) {
var data = this.__data__;
if (nativeCreate) {
var result2 = data[key];
return result2 === HASH_UNDEFINED ? undefined2 : result2;
}
return hasOwnProperty.call(data, key) ? data[key] : undefined2;
}
function hashHas(key) {
var data = this.__data__;
return nativeCreate ? data[key] !== undefined2 : hasOwnProperty.call(data, key);
}
function hashSet(key, value) {
var data = this.__data__;
this.size += this.has(key) ? 0 : 1;
data[key] = nativeCreate && value === undefined2 ? HASH_UNDEFINED : value;
return this;
}
Hash.prototype.clear = hashClear;
Hash.prototype["delete"] = hashDelete;
Hash.prototype.get = hashGet;
Hash.prototype.has = hashHas;
Hash.prototype.set = hashSet;
function ListCache(entries) {
var index = -1, length = entries == null ? 0 : entries.length;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
function listCacheClear() {
this.__data__ = [];
this.size = 0;
}
function listCacheDelete(key) {
var data = this.__data__, index = assocIndexOf(data, key);
if (index < 0) {
return false;
}
var lastIndex = data.length - 1;
if (index == lastIndex) {
data.pop();
} else {
splice.call(data, index, 1);
}
--this.size;
return true;
}
function listCacheGet(key) {
var data = this.__data__, index = assocIndexOf(data, key);
return index < 0 ? undefined2 : data[index][1];
}
function listCacheHas(key) {
return assocIndexOf(this.__data__, key) > -1;
}
function listCacheSet(key, value) {
var data = this.__data__, index = assocIndexOf(data, key);
if (index < 0) {
++this.size;
data.push([key, value]);
} else {
data[index][1] = value;
}
return this;
}
ListCache.prototype.clear = listCacheClear;
ListCache.prototype["delete"] = listCacheDelete;
ListCache.prototype.get = listCacheGet;
ListCache.prototype.has = listCacheHas;
ListCache.prototype.set = listCacheSet;
function MapCache(entries) {
var index = -1, length = entries == null ? 0 : entries.length;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
function mapCacheClear() {
this.size = 0;
this.__data__ = {
"hash": new Hash(),
"map": new (Map2 || ListCache)(),
"string": new Hash()
};
}
function mapCacheDelete(key) {
var result2 = getMapData(this, key)["delete"](key);
this.size -= result2 ? 1 : 0;
return result2;
}
function mapCacheGet(key) {
return getMapData(this, key).get(key);
}
function mapCacheHas(key) {
return getMapData(this, key).has(key);
}
function mapCacheSet(key, value) {
var data = getMapData(this, key), size2 = data.size;
data.set(key, value);
this.size += data.size == size2 ? 0 : 1;
return this;
}
MapCache.prototype.clear = mapCacheClear;
MapCache.prototype["delete"] = mapCacheDelete;
MapCache.prototype.get = mapCacheGet;
MapCache.prototype.has = mapCacheHas;
MapCache.prototype.set = mapCacheSet;
function SetCache(values2) {
var index = -1, length = values2 == null ? 0 : values2.length;
this.__data__ = new MapCache();
while (++index < length) {
this.add(values2[index]);
}
}
function setCacheAdd(value) {
this.__data__.set(value, HASH_UNDEFINED);
return this;
}
function setCacheHas(value) {
return this.__data__.has(value);
}
SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
SetCache.prototype.has = setCacheHas;
function Stack(entries) {
var data = this.__data__ = new ListCache(entries);
this.size = data.size;
}
function stackClear() {
this.__data__ = new ListCache();
this.size = 0;
}
function stackDelete(key) {
var data = this.__data__, result2 = data["delete"](key);
this.size = data.size;
return result2;
}
function stackGet(key) {
return this.__data__.get(key);
}
function stackHas(key) {
return this.__data__.has(key);
}
function stackSet(key, value) {
var data = this.__data__;
if (data instanceof ListCache) {
var pairs = data.__data__;
if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) {
pairs.push([key, value]);
this.size = ++data.size;
return this;
}
data = this.__data__ = new MapCache(pairs);
}
data.set(key, value);
this.size = data.size;
return this;
}
Stack.prototype.clear = stackClear;
Stack.prototype["delete"] = stackDelete;
Stack.prototype.get = stackGet;
Stack.prototype.has = stackHas;
Stack.prototype.set = stackSet;
function arrayLikeKeys(value, inherited) {
var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result2 = skipIndexes ? baseTimes(value.length, String2) : [], length = result2.length;
for (var key in value) {
if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.
(key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers.
isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays.
isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties.
isIndex(key, length)))) {
result2.push(key);
}
}
return result2;
}
function arraySample(array) {
var length = array.length;
return length ? array[baseRandom(0, length - 1)] : undefined2;
}
function arraySampleSize(array, n) {
return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));
}
function arrayShuffle(array) {
return shuffleSelf(copyArray(array));
}
function assignMergeValue(object, key, value) {
if (value !== undefined2 && !eq(object[key], value) || value === undefined2 && !(key in object)) {
baseAssignValue(object, key, value);
}
}
function assignValue(object, key, value) {
var objValue = object[key];
if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined2 && !(key in object)) {
baseAssignValue(object, key, value);
}
}
function assocIndexOf(array, key) {
var length = array.length;
while (length--) {
if (eq(array[length][0], key)) {
return length;
}
}
return -1;
}
function baseAggregator(collection, setter, iteratee2, accumulator) {
baseEach(collection, function(value, key, collection2) {
setter(accumulator, value, iteratee2(value), collection2);
});
return accumulator;
}
function baseAssign(object, source) {
return object && copyObject(source, keys(source), object);
}
function baseAssignIn(object, source) {
return object && copyObject(source, keysIn(source), object);
}
function baseAssignValue(object, key, value) {
if (key == "__proto__" && defineProperty) {
defineProperty(object, key, {
"configurable": true,
"enumerable": true,
"value": value,
"writable": true
});
} else {
object[key] = value;
}
}
function baseAt(object, paths) {
var index = -1, length = paths.length, result2 = Array2(length), skip = object == null;
while (++index < length) {
result2[index] = skip ? undefined2 : get(object, paths[index]);
}
return result2;
}
function baseClamp(number, lower, upper) {
if (number === number) {
if (upper !== undefined2) {
number = number <= upper ? number : upper;
}
if (lower !== undefined2) {
number = number >= lower ? number : lower;
}
}
return number;
}
function baseClone(value, bitmask, customizer, key, object, stack) {
var result2, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG;
if (customizer) {
result2 = object ? customizer(value, key, object, stack) : customizer(value);
}
if (result2 !== undefined2) {
return result2;
}
if (!isObject(value)) {
return value;
}
var isArr = isArray(value);
if (isArr) {
result2 = initCloneArray(value);
if (!isDeep) {
return copyArray(value, result2);
}
} else {
var tag = getTag(value), isFunc = tag == funcTag || tag == genTag;
if (isBuffer(value)) {
return cloneBuffer(value, isDeep);
}
if (tag == objectTag || tag == argsTag || isFunc && !object) {
result2 = isFlat || isFunc ? {} : initCloneObject(value);
if (!isDeep) {
return isFlat ? copySymbolsIn(value, baseAssignIn(result2, value)) : copySymbols(value, baseAssign(result2, value));
}
} else {
if (!cloneableTags[tag]) {
return object ? value : {};
}
result2 = initCloneByTag(value, tag, isDeep);
}
}
stack || (stack = new Stack());
var stacked = stack.get(value);
if (stacked) {
return stacked;
}
stack.set(value, result2);
if (isSet(value)) {
value.forEach(function(subValue) {
result2.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
});
} else if (isMap(value)) {
value.forEach(function(subValue, key2) {
result2.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack));
});
}
var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys;
var props = isArr ? undefined2 : keysFunc(value);
arrayEach(props || value, function(subValue, key2) {
if (props) {
key2 = subValue;
subValue = value[key2];
}
assignValue(result2, key2, baseClone(subValue, bitmask, customizer, key2, value, stack));
});
return result2;
}
function baseConforms(source) {
var props = keys(source);
return function(object) {
return baseConformsTo(object, source, props);
};
}
function baseConformsTo(object, source, props) {
var length = props.length;
if (object == null) {
return !length;
}
object = Object2(object);
while (length--) {
var key = props[length], predicate = source[key], value = object[key];
if (value === undefined2 && !(key in object) || !predicate(value)) {
return false;
}
}
return true;
}
function baseDelay(func, wait, args) {
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
return setTimeout(function() {
func.apply(undefined2, args);
}, wait);
}
function baseDifference(array, values2, iteratee2, comparator) {
var index = -1, includes2 = arrayIncludes, isCommon = true, length = array.length, result2 = [], valuesLength = values2.length;
if (!length) {
return result2;
}
if (iteratee2) {
values2 = arrayMap(values2, baseUnary(iteratee2));
}
if (comparator) {
includes2 = arrayIncludesWith;
isCommon = false;
} else if (values2.length >= LARGE_ARRAY_SIZE) {
includes2 = cacheHas;
isCommon = false;
values2 = new SetCache(values2);
}
outer:
while (++index < length) {
var value = array[index], computed = iteratee2 == null ? value : iteratee2(value);
value = comparator || value !== 0 ? value : 0;
if (isCommon && computed === computed) {
var valuesIndex = valuesLength;
while (valuesIndex--) {
if (values2[valuesIndex] === computed) {
continue outer;
}
}
result2.push(value);
} else if (!includes2(values2, computed, comparator)) {
result2.push(value);
}
}
return result2;
}
var baseEach = createBaseEach(baseForOwn);
var baseEachRight = createBaseEach(baseForOwnRight, true);
function baseEvery(collection, predicate) {
var result2 = true;
baseEach(collection, function(value, index, collection2) {
result2 = !!predicate(value, index, collection2);
return result2;
});
return result2;
}
function baseExtremum(array, iteratee2, comparator) {
var index = -1, length = array.length;
while (++index < length) {
var value = array[index], current = iteratee2(value);
if (current != null && (computed === undefined2 ? current === current && !isSymbol(current) : comparator(current, computed))) {
var computed = current, result2 = value;
}
}
return result2;
}
function baseFill(array, value, start, end) {
var length = array.length;
start = toInteger(start);
if (start < 0) {
start = -start > length ? 0 : length + start;
}
end = end === undefined2 || end > length ? length : toInteger(end);
if (end < 0) {
end += length;
}
end = start > end ? 0 : toLength(end);
while (start < end) {
array[start++] = value;
}
return array;
}
function baseFilter(collection, predicate) {
var result2 = [];
baseEach(collection, function(value, index, collection2) {
if (predicate(value, index, collection2)) {
result2.push(value);
}
});
return result2;
}
function baseFlatten(array, depth, predicate, isStrict, result2) {
var index = -1, length = array.length;
predicate || (predicate = isFlattenable);
result2 || (result2 = []);
while (++index < length) {
var value = array[index];
if (depth > 0 && predicate(value)) {
if (depth > 1) {
baseFlatten(value, depth - 1, predicate, isStrict, result2);
} else {
arrayPush(result2, value);
}
} else if (!isStrict) {
result2[result2.length] = value;
}
}
return result2;
}
var baseFor = createBaseFor();
var baseForRight = createBaseFor(true);
function baseForOwn(object, iteratee2) {
return object && baseFor(object, iteratee2, keys);
}
function baseForOwnRight(object, iteratee2) {
return object && baseForRight(object, iteratee2, keys);
}
function baseFunctions(object, props) {
return arrayFilter(props, function(key) {
return isFunction(object[key]);
});
}
function baseGet(object, path) {
path = castPath(path, object);
var index = 0, length = path.length;
while (object != null && index < length) {
object = object[toKey(path[index++])];
}
return index && index == length ? object : undefined2;
}
function baseGetAllKeys(object, keysFunc, symbolsFunc) {
var result2 = keysFunc(object);
return isArray(object) ? result2 : arrayPush(result2, symbolsFunc(object));
}
function baseGetTag(value) {
if (value == null) {
return value === undefined2 ? undefinedTag : nullTag;
}
return symToStringTag && symToStringTag in Object2(value) ? getRawTag(value) : objectToString(value);
}
function baseGt(value, other) {
return value > other;
}
function baseHas(object, key) {
return object != null && hasOwnProperty.call(object, key);
}
function baseHasIn(object, key) {
return object != null && key in Object2(object);
}
function baseInRange(number, start, end) {
return number >= nativeMin(start, end) && number < nativeMax(start, end);
}
function baseIntersection(arrays, iteratee2, comparator) {
var includes2 = comparator ? arrayIncludesWith : arrayIncludes, length = arrays[0].length, othLength = arrays.length, othIndex = othLength, caches = Array2(othLength), maxLength = Infinity, result2 = [];
while (othIndex--) {
var array = arrays[othIndex];
if (othIndex && iteratee2) {
array = arrayMap(array, baseUnary(iteratee2));
}
maxLength = nativeMin(array.length, maxLength);
caches[othIndex] = !comparator && (iteratee2 || length >= 120 && array.length >= 120) ? new SetCache(othIndex && array) : undefined2;
}
array = arrays[0];
var index = -1, seen = caches[0];
outer:
while (++index < length && result2.length < maxLength) {
var value = array[index], computed = iteratee2 ? iteratee2(value) : value;
value = comparator || value !== 0 ? value : 0;
if (!(seen ? cacheHas(seen, computed) : includes2(result2, computed, comparator))) {
othIndex = othLength;
while (--othIndex) {
var cache = caches[othIndex];
if (!(cache ? cacheHas(cache, computed) : includes2(arrays[othIndex], computed, comparator))) {
continue outer;
}
}
if (seen) {
seen.push(computed);
}
result2.push(value);
}
}
return result2;
}
function baseInverter(object, setter, iteratee2, accumulator) {
baseForOwn(object, function(value, key, object2) {
setter(accumulator, iteratee2(value), key, object2);
});
return accumulator;
}
function baseInvoke(object, path, args) {
path = castPath(path, object);
object = parent(object, path);
var func = object == null ? object : object[toKey(last3(path))];
return func == null ? undefined2 : apply(func, object, args);
}
function baseIsArguments(value) {
return isObjectLike(value) && baseGetTag(value) == argsTag;
}
function baseIsArrayBuffer(value) {
return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;
}
function baseIsDate(value) {
return isObjectLike(value) && baseGetTag(value) == dateTag;
}
function baseIsEqual(value, other, bitmask, customizer, stack) {
if (value === other) {
return true;
}
if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {
return value !== value && other !== other;
}
return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
}
function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
var objIsArr = isArray(object), othIsArr = isArray(other), objTag = objIsArr ? arrayTag : getTag(object), othTag = othIsArr ? arrayTag : getTag(other);
objTag = objTag == argsTag ? objectTag : objTag;
othTag = othTag == argsTag ? objectTag : othTag;
var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag;
if (isSameTag && isBuffer(object)) {
if (!isBuffer(other)) {
return false;
}
objIsArr = true;
objIsObj = false;
}
if (isSameTag && !objIsObj) {
stack || (stack = new Stack());
return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
}
if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
var objIsWrapped = objIsObj && hasOwnProperty.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__");
if (objIsWrapped || othIsWrapped) {
var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
stack || (stack = new Stack());
return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
}
}
if (!isSameTag) {
return false;
}
stack || (stack = new Stack());
return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
}
function baseIsMap(value) {
return isObjectLike(value) && getTag(value) == mapTag;
}
function baseIsMatch(object, source, matchData, customizer) {
var index = matchData.length, length = index, noCustomizer = !customizer;
if (object == null) {
return !length;
}
object = Object2(object);
while (index--) {
var data = matchData[index];
if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {
return false;
}
}
while (++index < length) {
data = matchData[index];
var key = data[0], objValue = object[key], srcValue = data[1];
if (noCustomizer && data[2]) {
if (objValue === undefined2 && !(key in object)) {
return false;
}
} else {
var stack = new Stack();
if (customizer) {
var result2 = customizer(objValue, srcValue, key, object, source, stack);
}
if (!(result2 === undefined2 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result2)) {
return false;
}
}
}
return true;
}
function baseIsNative(value) {
if (!isObject(value) || isMasked(value)) {
return false;
}
var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
return pattern.test(toSource(value));
}
function baseIsRegExp(value) {
return isObjectLike(value) && baseGetTag(value) == regexpTag;
}
function baseIsSet(value) {
return isObjectLike(value) && getTag(value) == setTag;
}
function baseIsTypedArray(value) {
return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
}
function baseIteratee(value) {
if (typeof value == "function") {
return value;
}
if (value == null) {
return identity;
}
if (typeof value == "object") {
return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);
}
return property(value);
}
function baseKeys(object) {
if (!isPrototype(object)) {
return nativeKeys(object);
}
var result2 = [];
for (var key in Object2(object)) {
if (hasOwnProperty.call(object, key) && key != "constructor") {
result2.push(key);
}
}
return result2;
}
function baseKeysIn(object) {
if (!isObject(object)) {
return nativeKeysIn(object);
}
var isProto = isPrototype(object), result2 = [];
for (var key in object) {
if (!(key == "constructor" && (isProto || !hasOwnProperty.call(object, key)))) {
result2.push(key);
}
}
return result2;
}
function baseLt(value, other) {
return value < other;
}
function baseMap(collection, iteratee2) {
var index = -1, result2 = isArrayLike(collection) ? Array2(collection.length) : [];
baseEach(collection, function(value, key, collection2) {
result2[++index] = iteratee2(value, key, collection2);
});
return result2;
}
function baseMatches(source) {
var matchData = getMatchData(source);
if (matchData.length == 1 && matchData[0][2]) {
return matchesStrictComparable(matchData[0][0], matchData[0][1]);
}
return function(object) {
return object === source || baseIsMatch(object, source, matchData);
};
}
function baseMatchesProperty(path, srcValue) {
if (isKey(path) && isStrictComparable(srcValue)) {
return matchesStrictComparable(toKey(path), srcValue);
}
return function(object) {
var objValue = get(object, path);
return objValue === undefined2 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
};
}
function baseMerge(object, source, srcIndex, customizer, stack) {
if (object === source) {
return;
}
baseFor(source, function(srcValue, key) {
stack || (stack = new Stack());
if (isObject(srcValue)) {
baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
} else {
var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + "", object, source, stack) : undefined2;
if (newValue === undefined2) {
newValue = srcValue;
}
assignMergeValue(object, key, newValue);
}
}, keysIn);
}
function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue);
if (stacked) {
assignMergeValue(object, key, stacked);
return;
}
var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : undefined2;
var isCommon = newValue === undefined2;
if (isCommon) {
var isArr = isArray(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue);
newValue = srcValue;
if (isArr || isBuff || isTyped) {
if (isArray(objValue)) {
newValue = objValue;
} else if (isArrayLikeObject(objValue)) {
newValue = copyArray(objValue);
} else if (isBuff) {
isCommon = false;
newValue = cloneBuffer(srcValue, true);
} else if (isTyped) {
isCommon = false;
newValue = cloneTypedArray(srcValue, true);
} else {
newValue = [];
}
} else if (isPlainObject(srcValue) || isArguments(srcValue)) {
newValue = objValue;
if (isArguments(objValue)) {
newValue = toPlainObject(objValue);
} else if (!isObject(objValue) || isFunction(objValue)) {
newValue = initCloneObject(srcValue);
}
} else {
isCommon = false;
}
}
if (isCommon) {
stack.set(srcValue, newValue);
mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
stack["delete"](srcValue);
}
assignMergeValue(object, key, newValue);
}
function baseNth(array, n) {
var length = array.length;
if (!length) {
return;
}
n += n < 0 ? length : 0;
return isIndex(n, length) ? array[n] : undefined2;
}
function baseOrderBy(collection, iteratees, orders) {
if (iteratees.length) {
iteratees = arrayMap(iteratees, function(iteratee2) {
if (isArray(iteratee2)) {
return function(value) {
return baseGet(value, iteratee2.length === 1 ? iteratee2[0] : iteratee2);
};
}
return iteratee2;
});
} else {
iteratees = [identity];
}
var index = -1;
iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
var result2 = baseMap(collection, function(value, key, collection2) {
var criteria = arrayMap(iteratees, function(iteratee2) {
return iteratee2(value);
});
return { "criteria": criteria, "index": ++index, "value": value };
});
return baseSortBy(result2, function(object, other) {
return compareMultiple(object, other, orders);
});
}
function basePick(object, paths) {
return basePickBy(object, paths, function(value, path) {
return hasIn(object, path);
});
}
function basePickBy(object, paths, predicate) {
var index = -1, length = paths.length, result2 = {};
while (++index < length) {
var path = paths[index], value = baseGet(object, path);
if (predicate(value, path)) {
baseSet(result2, castPath(path, object), value);
}
}
return result2;
}
function basePropertyDeep(path) {
return function(object) {
return baseGet(object, path);
};
}
function basePullAll(array, values2, iteratee2, comparator) {
var indexOf2 = comparator ? baseIndexOfWith : baseIndexOf, index = -1, length = values2.length, seen = array;
if (array === values2) {
values2 = copyArray(values2);
}
if (iteratee2) {
seen = arrayMap(array, baseUnary(iteratee2));
}
while (++index < length) {
var fromIndex = 0, value = values2[index], computed = iteratee2 ? iteratee2(value) : value;
while ((fromIndex = indexOf2(seen, computed, fromIndex, comparator)) > -1) {
if (seen !== array) {
splice.call(seen, fromIndex, 1);
}
splice.call(array, fromIndex, 1);
}
}
return array;
}
function basePullAt(array, indexes) {
var length = array ? indexes.length : 0, lastIndex = length - 1;
while (length--) {
var index = indexes[length];
if (length == lastIndex || index !== previous) {
var previous = index;
if (isIndex(index)) {
splice.call(array, index, 1);
} else {
baseUnset(array, index);
}
}
}
return array;
}
function baseRandom(lower, upper) {
return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
}
function baseRange(start, end, step, fromRight) {
var index = -1, length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), result2 = Array2(length);
while (length--) {
result2[fromRight ? length : ++index] = start;
start += step;
}
return result2;
}
function baseRepeat(string, n) {
var result2 = "";
if (!string || n < 1 || n > MAX_SAFE_INTEGER) {
return result2;
}
do {
if (n % 2) {
result2 += string;
}
n = nativeFloor(n / 2);
if (n) {
string += string;
}
} while (n);
return result2;
}
function baseRest(func, start) {
return setToString(overRest(func, start, identity), func + "");
}
function baseSample(collection) {
return arraySample(values(collection));
}
function baseSampleSize(collection, n) {
var array = values(collection);
return shuffleSelf(array, baseClamp(n, 0, array.length));
}
function baseSet(object, path, value, customizer) {
if (!isObject(object)) {
return object;
}
path = castPath(path, object);
var index = -1, length = path.length, lastIndex = length - 1, nested = object;
while (nested != null && ++index < length) {
var key = toKey(path[index]), newValue = value;
if (key === "__proto__" || key === "constructor" || key === "prototype") {
return object;
}
if (index != lastIndex) {
var objValue = nested[key];
newValue = customizer ? customizer(objValue, key, nested) : undefined2;
if (newValue === undefined2) {
newValue = isObject(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {};
}
}
assignValue(nested, key, newValue);
nested = nested[key];
}
return object;
}
var baseSetData = !metaMap ? identity : function(func, data) {
metaMap.set(func, data);
return func;
};
var baseSetToString = !defineProperty ? identity : function(func, string) {
return defineProperty(func, "toString", {
"configurable": true,
"enumerable": false,
"value": constant(string),
"writable": true
});
};
function baseShuffle(collection) {
return shuffleSelf(values(collection));
}
function baseSlice(array, start, end) {
var index = -1, length = array.length;
if (start < 0) {
start = -start > length ? 0 : length + start;
}
end = end > length ? length : end;
if (end < 0) {
end += length;
}
length = start > end ? 0 : end - start >>> 0;
start >>>= 0;
var result2 = Array2(length);
while (++index < length) {
result2[index] = array[index + start];
}
return result2;
}
function baseSome(collection, predicate) {
var result2;
baseEach(collection, function(value, index, collection2) {
result2 = predicate(value, index, collection2);
return !result2;
});
return !!result2;
}
function baseSortedIndex(array, value, retHighest) {
var low = 0, high = array == null ? low : array.length;
if (typeof value == "number" && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
while (low < high) {
var mid = low + high >>> 1, computed = array[mid];
if (computed !== null && !isSymbol(computed) && (retHighest ? computed <= value : computed < value)) {
low = mid + 1;
} else {
high = mid;
}
}
return high;
}
return baseSortedIndexBy(array, value, identity, retHighest);
}
function baseSortedIndexBy(array, value, iteratee2, retHighest) {
var low = 0, high = array == null ? 0 : array.length;
if (high === 0) {
return 0;
}
value = iteratee2(value);
var valIsNaN = value !== value, valIsNull = value === null, valIsSymbol = isSymbol(value), valIsUndefined = value === undefined2;
while (low < high) {
var mid = nativeFloor((low + high) / 2), computed = iteratee2(array[mid]), othIsDefined = computed !== undefined2, othIsNull = computed === null, othIsReflexive = computed === computed, othIsSymbol = isSymbol(computed);
if (valIsNaN) {
var setLow = retHighest || othIsReflexive;
} else if (valIsUndefined) {
setLow = othIsReflexive && (retHighest || othIsDefined);
} else if (valIsNull) {
setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
} else if (valIsSymbol) {
setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
} else if (othIsNull || othIsSymbol) {
setLow = false;
} else {
setLow = retHighest ? computed <= value : computed < value;
}
if (setLow) {
low = mid + 1;
} else {
high = mid;
}
}
return nativeMin(high, MAX_ARRAY_INDEX);
}
function baseSortedUniq(array, iteratee2) {
var index = -1, length = array.length, resIndex = 0, result2 = [];
while (++index < length) {
var value = array[index], computed = iteratee2 ? iteratee2(value) : value;
if (!index || !eq(computed, seen)) {
var seen = computed;
result2[resIndex++] = value === 0 ? 0 : value;
}
}
return result2;
}
function baseToNumber(value) {
if (typeof value == "number") {
return value;
}
if (isSymbol(value)) {
return NAN;
}
return +value;
}
function baseToString(value) {
if (typeof value == "string") {
return value;
}
if (isArray(value)) {
return arrayMap(value, baseToString) + "";
}
if (isSymbol(value)) {
return symbolToString ? symbolToString.call(value) : "";
}
var result2 = value + "";
return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2;
}
function baseUniq(array, iteratee2, comparator) {
var index = -1, includes2 = arrayIncludes, length = array.length, isCommon = true, result2 = [], seen = result2;
if (comparator) {
isCommon = false;
includes2 = arrayIncludesWith;
} else if (length >= LARGE_ARRAY_SIZE) {
var set2 = iteratee2 ? null : createSet(array);
if (set2) {
return setToArray(set2);
}
isCommon = false;
includes2 = cacheHas;
seen = new SetCache();
} else {
seen = iteratee2 ? [] : result2;
}
outer:
while (++index < length) {
var value = array[index], computed = iteratee2 ? iteratee2(value) : value;
value = comparator || value !== 0 ? value : 0;
if (isCommon && computed === computed) {
var seenIndex = seen.length;
while (seenIndex--) {
if (seen[seenIndex] === computed) {
continue outer;
}
}
if (iteratee2) {
seen.push(computed);
}
result2.push(value);
} else if (!includes2(seen, computed, comparator)) {
if (seen !== result2) {
seen.push(computed);
}
result2.push(value);
}
}
return result2;
}
function baseUnset(object, path) {
path = castPath(path, object);
object = parent(object, path);
return object == null || delete object[toKey(last3(path))];
}
function baseUpdate(object, path, updater, customizer) {
return baseSet(object, path, updater(baseGet(object, path)), customizer);
}
function baseWhile(array, predicate, isDrop, fromRight) {
var length = array.length, index = fromRight ? length : -1;
while ((fromRight ? index-- : ++index < length) && predicate(array[index], index, array)) {
}
return isDrop ? baseSlice(array, fromRight ? 0 : index, fromRight ? index + 1 : length) : baseSlice(array, fromRight ? index + 1 : 0, fromRight ? length : index);
}
function baseWrapperValue(value, actions) {
var result2 = value;
if (result2 instanceof LazyWrapper) {
result2 = result2.value();
}
return arrayReduce(actions, function(result3, action) {
return action.func.apply(action.thisArg, arrayPush([result3], action.args));
}, result2);
}
function baseXor(arrays, iteratee2, comparator) {
var length = arrays.length;
if (length < 2) {
return length ? baseUniq(arrays[0]) : [];
}
var index = -1, result2 = Array2(length);
while (++index < length) {
var array = arrays[index], othIndex = -1;
while (++othIndex < length) {
if (othIndex != index) {
result2[index] = baseDifference(result2[index] || array, arrays[othIndex], iteratee2, comparator);
}
}
}
return baseUniq(baseFlatten(result2, 1), iteratee2, comparator);
}
function baseZipObject(props, values2, assignFunc) {
var index = -1, length = props.length, valsLength = values2.length, result2 = {};
while (++index < length) {
var value = index < valsLength ? values2[index] : undefined2;
assignFunc(result2, props[index], value);
}
return result2;
}
function castArrayLikeObject(value) {
return isArrayLikeObject(value) ? value : [];
}
function castFunction(value) {
return typeof value == "function" ? value : identity;
}
function castPath(value, object) {
if (isArray(value)) {
return value;
}
return isKey(value, object) ? [value] : stringToPath(toString(value));
}
var castRest = baseRest;
function castSlice(array, start, end) {
var length = array.length;
end = end === undefined2 ? length : end;
return !start && end >= length ? array : baseSlice(array, start, end);
}
var clearTimeout = ctxClearTimeout || function(id) {
return root.clearTimeout(id);
};
function cloneBuffer(buffer, isDeep) {
if (isDeep) {
return buffer.slice();
}
var length = buffer.length, result2 = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
buffer.copy(result2);
return result2;
}
function cloneArrayBuffer(arrayBuffer) {
var result2 = new arrayBuffer.constructor(arrayBuffer.byteLength);
new Uint8Array2(result2).set(new Uint8Array2(arrayBuffer));
return result2;
}
function cloneDataView(dataView, isDeep) {
var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
}
function cloneRegExp(regexp) {
var result2 = new regexp.constructor(regexp.source, reFlags.exec(regexp));
result2.lastIndex = regexp.lastIndex;
return result2;
}
function cloneSymbol(symbol) {
return symbolValueOf ? Object2(symbolValueOf.call(symbol)) : {};
}
function cloneTypedArray(typedArray, isDeep) {
var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
}
function compareAscending(value, other) {
if (value !== other) {
var valIsDefined = value !== undefined2, valIsNull = value === null, valIsReflexive = value === value, valIsSymbol = isSymbol(value);
var othIsDefined = other !== undefined2, othIsNull = other === null, othIsReflexive = other === other, othIsSymbol = isSymbol(other);
if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) {
return 1;
}
if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) {
return -1;
}
}
return 0;
}
function compareMultiple(object, other, orders) {
var index = -1, objCriteria = object.criteria, othCriteria = other.criteria, length = objCriteria.length, ordersLength = orders.length;
while (++index < length) {
var result2 = compareAscending(objCriteria[index], othCriteria[index]);
if (result2) {
if (index >= ordersLength) {
return result2;
}
var order = orders[index];
return result2 * (order == "desc" ? -1 : 1);
}
}
return object.index - other.index;
}
function composeArgs(args, partials, holders, isCurried) {
var argsIndex = -1, argsLength = args.length, holdersLength = holders.length, leftIndex = -1, leftLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(leftLength + rangeLength), isUncurried = !isCurried;
while (++leftIndex < leftLength) {
result2[leftIndex] = partials[leftIndex];
}
while (++argsIndex < holdersLength) {
if (isUncurried || argsIndex < argsLength) {
result2[holders[argsIndex]] = args[argsIndex];
}
}
while (rangeLength--) {
result2[leftIndex++] = args[argsIndex++];
}
return result2;
}
function composeArgsRight(args, partials, holders, isCurried) {
var argsIndex = -1, argsLength = args.length, holdersIndex = -1, holdersLength = holders.length, rightIndex = -1, rightLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(rangeLength + rightLength), isUncurried = !isCurried;
while (++argsIndex < rangeLength) {
result2[argsIndex] = args[argsIndex];
}
var offset = argsIndex;
while (++rightIndex < rightLength) {
result2[offset + rightIndex] = partials[rightIndex];
}
while (++holdersIndex < holdersLength) {
if (isUncurried || argsIndex < argsLength) {
result2[offset + holders[holdersIndex]] = args[argsIndex++];
}
}
return result2;
}
function copyArray(source, array) {
var index = -1, length = source.length;
array || (array = Array2(length));
while (++index < length) {
array[index] = source[index];
}
return array;
}
function copyObject(source, props, object, customizer) {
var isNew = !object;
object || (object = {});
var index = -1, length = props.length;
while (++index < length) {
var key = props[index];
var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined2;
if (newValue === undefined2) {
newValue = source[key];
}
if (isNew) {
baseAssignValue(object, key, newValue);
} else {
assignValue(object, key, newValue);
}
}
return object;
}
function copySymbols(source, object) {
return copyObject(source, getSymbols(source), object);
}
function copySymbolsIn(source, object) {
return copyObject(source, getSymbolsIn(source), object);
}
function createAggregator(setter, initializer) {
return function(collection, iteratee2) {
var func = isArray(collection) ? arrayAggregator : baseAggregator, accumulator = initializer ? initializer() : {};
return func(collection, setter, getIteratee(iteratee2, 2), accumulator);
};
}
function createAssigner(assigner) {
return baseRest(function(object, sources) {
var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : undefined2, guard = length > 2 ? sources[2] : undefined2;
customizer = assigner.length > 3 && typeof customizer == "function" ? (length--, customizer) : undefined2;
if (guard && isIterateeCall(sources[0], sources[1], guard)) {
customizer = length < 3 ? undefined2 : customizer;
length = 1;
}
object = Object2(object);
while (++index < length) {
var source = sources[index];
if (source) {
assigner(object, source, index, customizer);
}
}
return object;
});
}
function createBaseEach(eachFunc, fromRight) {
return function(collection, iteratee2) {
if (collection == null) {
return collection;
}
if (!isArrayLike(collection)) {
return eachFunc(collection, iteratee2);
}
var length = collection.length, index = fromRight ? length : -1, iterable = Object2(collection);
while (fromRight ? index-- : ++index < length) {
if (iteratee2(iterable[index], index, iterable) === false) {
break;
}
}
return collection;
};
}
function createBaseFor(fromRight) {
return function(object, iteratee2, keysFunc) {
var index = -1, iterable = Object2(object), props = keysFunc(object), length = props.length;
while (length--) {
var key = props[fromRight ? length : ++index];
if (iteratee2(iterable[key], key, iterable) === false) {
break;
}
}
return object;
};
}
function createBind(func, bitmask, thisArg) {
var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func);
function wrapper() {
var fn = this && this !== root && this instanceof wrapper ? Ctor : func;
return fn.apply(isBind ? thisArg : this, arguments);
}
return wrapper;
}
function createCaseFirst(methodName) {
return function(string) {
string = toString(string);
var strSymbols = hasUnicode(string) ? stringToArray(string) : undefined2;
var chr = strSymbols ? strSymbols[0] : string.charAt(0);
var trailing = strSymbols ? castSlice(strSymbols, 1).join("") : string.slice(1);
return chr[methodName]() + trailing;
};
}
function createCompounder(callback) {
return function(string) {
return arrayReduce(words(deburr(string).replace(reApos, "")), callback, "");
};
}
function createCtor(Ctor) {
return function() {
var args = arguments;
switch (args.length) {
case 0:
return new Ctor();
case 1:
return new Ctor(args[0]);
case 2:
return new Ctor(args[0], args[1]);
case 3:
return new Ctor(args[0], args[1], args[2]);
case 4:
return new Ctor(args[0], args[1], args[2], args[3]);
case 5:
return new Ctor(args[0], args[1], args[2], args[3], args[4]);
case 6:
return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
case 7:
return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
}
var thisBinding = baseCreate(Ctor.prototype), result2 = Ctor.apply(thisBinding, args);
return isObject(result2) ? result2 : thisBinding;
};
}
function createCurry(func, bitmask, arity) {
var Ctor = createCtor(func);
function wrapper() {
var length = arguments.length, args = Array2(length), index = length, placeholder = getHolder(wrapper);
while (index--) {
args[index] = arguments[index];
}
var holders = length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder ? [] : replaceHolders(args, placeholder);
length -= holders.length;
if (length < arity) {
return createRecurry(
func,
bitmask,
createHybrid,
wrapper.placeholder,
undefined2,
args,
holders,
undefined2,
undefined2,
arity - length
);
}
var fn = this && this !== root && this instanceof wrapper ? Ctor : func;
return apply(fn, this, args);
}
return wrapper;
}
function createFind(findIndexFunc) {
return function(collection, predicate, fromIndex) {
var iterable = Object2(collection);
if (!isArrayLike(collection)) {
var iteratee2 = getIteratee(predicate, 3);
collection = keys(collection);
predicate = function(key) {
return iteratee2(iterable[key], key, iterable);
};
}
var index = findIndexFunc(collection, predicate, fromIndex);
return index > -1 ? iterable[iteratee2 ? collection[index] : index] : undefined2;
};
}
function createFlow(fromRight) {
return flatRest(function(funcs) {
var length = funcs.length, index = length, prereq = LodashWrapper.prototype.thru;
if (fromRight) {
funcs.reverse();
}
while (index--) {
var func = funcs[index];
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
if (prereq && !wrapper && getFuncName(func) == "wrapper") {
var wrapper = new LodashWrapper([], true);
}
}
index = wrapper ? index : length;
while (++index < length) {
func = funcs[index];
var funcName = getFuncName(func), data = funcName == "wrapper" ? getData(func) : undefined2;
if (data && isLaziable(data[0]) && data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && !data[4].length && data[9] == 1) {
wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
} else {
wrapper = func.length == 1 && isLaziable(func) ? wrapper[funcName]() : wrapper.thru(func);
}
}
return function() {
var args = arguments, value = args[0];
if (wrapper && args.length == 1 && isArray(value)) {
return wrapper.plant(value).value();
}
var index2 = 0, result2 = length ? funcs[index2].apply(this, args) : value;
while (++index2 < length) {
result2 = funcs[index2].call(this, result2);
}
return result2;
};
});
}
function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary2, arity) {
var isAry = bitmask & WRAP_ARY_FLAG, isBind = bitmask & WRAP_BIND_FLAG, isBindKey = bitmask & WRAP_BIND_KEY_FLAG, isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), isFlip = bitmask & WRAP_FLIP_FLAG, Ctor = isBindKey ? undefined2 : createCtor(func);
function wrapper() {
var length = arguments.length, args = Array2(length), index = length;
while (index--) {
args[index] = arguments[index];
}
if (isCurried) {
var placeholder = getHolder(wrapper), holdersCount = countHolders(args, placeholder);
}
if (partials) {
args = composeArgs(args, partials, holders, isCurried);
}
if (partialsRight) {
args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
}
length -= holdersCount;
if (isCurried && length < arity) {
var newHolders = replaceHolders(args, placeholder);
return createRecurry(
func,
bitmask,
createHybrid,
wrapper.placeholder,
thisArg,
args,
newHolders,
argPos,
ary2,
arity - length
);
}
var thisBinding = isBind ? thisArg : this, fn = isBindKey ? thisBinding[func] : func;
length = args.length;
if (argPos) {
args = reorder(args, argPos);
} else if (isFlip && length > 1) {
args.reverse();
}
if (isAry && ary2 < length) {
args.length = ary2;
}
if (this && this !== root && this instanceof wrapper) {
fn = Ctor || createCtor(fn);
}
return fn.apply(thisBinding, args);
}
return wrapper;
}
function createInverter(setter, toIteratee) {
return function(object, iteratee2) {
return baseInverter(object, setter, toIteratee(iteratee2), {});
};
}
function createMathOperation(operator, defaultValue) {
return function(value, other) {
var result2;
if (value === undefined2 && other === undefined2) {
return defaultValue;
}
if (value !== undefined2) {
result2 = value;
}
if (other !== undefined2) {
if (result2 === undefined2) {
return other;
}
if (typeof value == "string" || typeof other == "string") {
value = baseToString(value);
other = baseToString(other);
} else {
value = baseToNumber(value);
other = baseToNumber(other);
}
result2 = operator(value, other);
}
return result2;
};
}
function createOver(arrayFunc) {
return flatRest(function(iteratees) {
iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
return baseRest(function(args) {
var thisArg = this;
return arrayFunc(iteratees, function(iteratee2) {
return apply(iteratee2, thisArg, args);
});
});
});
}
function createPadding(length, chars) {
chars = chars === undefined2 ? " " : baseToString(chars);
var charsLength = chars.length;
if (charsLength < 2) {
return charsLength ? baseRepeat(chars, length) : chars;
}
var result2 = baseRepeat(chars, nativeCeil(length / stringSize(chars)));
return hasUnicode(chars) ? castSlice(stringToArray(result2), 0, length).join("") : result2.slice(0, length);
}
function createPartial(func, bitmask, thisArg, partials) {
var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func);
function wrapper() {
var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array2(leftLength + argsLength), fn = this && this !== root && this instanceof wrapper ? Ctor : func;
while (++leftIndex < leftLength) {
args[leftIndex] = partials[leftIndex];
}
while (argsLength--) {
args[leftIndex++] = arguments[++argsIndex];
}
return apply(fn, isBind ? thisArg : this, args);
}
return wrapper;
}
function createRange(fromRight) {
return function(start, end, step) {
if (step && typeof step != "number" && isIterateeCall(start, end, step)) {
end = step = undefined2;
}
start = toFinite(start);
if (end === undefined2) {
end = start;
start = 0;
} else {
end = toFinite(end);
}
step = step === undefined2 ? start < end ? 1 : -1 : toFinite(step);
return baseRange(start, end, step, fromRight);
};
}
function createRelationalOperation(operator) {
return function(value, other) {
if (!(typeof value == "string" && typeof other == "string")) {
value = toNumber(value);
other = toNumber(other);
}
return operator(value, other);
};
}
function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary2, arity) {
var isCurry = bitmask & WRAP_CURRY_FLAG, newHolders = isCurry ? holders : undefined2, newHoldersRight = isCurry ? undefined2 : holders, newPartials = isCurry ? partials : undefined2, newPartialsRight = isCurry ? undefined2 : partials;
bitmask |= isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG;
bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
}
var newData = [
func,
bitmask,
thisArg,
newPartials,
newHolders,
newPartialsRight,
newHoldersRight,
argPos,
ary2,
arity
];
var result2 = wrapFunc.apply(undefined2, newData);
if (isLaziable(func)) {
setData(result2, newData);
}
result2.placeholder = placeholder;
return setWrapToString(result2, func, bitmask);
}
function createRound(methodName) {
var func = Math2[methodName];
return function(number, precision) {
number = toNumber(number);
precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
if (precision && nativeIsFinite(number)) {
var pair = (toString(number) + "e").split("e"), value = func(pair[0] + "e" + (+pair[1] + precision));
pair = (toString(value) + "e").split("e");
return +(pair[0] + "e" + (+pair[1] - precision));
}
return func(number);
};
}
var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY) ? noop2 : function(values2) {
return new Set2(values2);
};
function createToPairs(keysFunc) {
return function(object) {
var tag = getTag(object);
if (tag == mapTag) {
return mapToArray(object);
}
if (tag == setTag) {
return setToPairs(object);
}
return baseToPairs(object, keysFunc(object));
};
}
function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary2, arity) {
var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
if (!isBindKey && typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
var length = partials ? partials.length : 0;
if (!length) {
bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
partials = holders = undefined2;
}
ary2 = ary2 === undefined2 ? ary2 : nativeMax(toInteger(ary2), 0);
arity = arity === undefined2 ? arity : toInteger(arity);
length -= holders ? holders.length : 0;
if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
var partialsRight = partials, holdersRight = holders;
partials = holders = undefined2;
}
var data = isBindKey ? undefined2 : getData(func);
var newData = [
func,
bitmask,
thisArg,
partials,
holders,
partialsRight,
holdersRight,
argPos,
ary2,
arity
];
if (data) {
mergeData(newData, data);
}
func = newData[0];
bitmask = newData[1];
thisArg = newData[2];
partials = newData[3];
holders = newData[4];
arity = newData[9] = newData[9] === undefined2 ? isBindKey ? 0 : func.length : nativeMax(newData[9] - length, 0);
if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
}
if (!bitmask || bitmask == WRAP_BIND_FLAG) {
var result2 = createBind(func, bitmask, thisArg);
} else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
result2 = createCurry(func, bitmask, arity);
} else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
result2 = createPartial(func, bitmask, thisArg, partials);
} else {
result2 = createHybrid.apply(undefined2, newData);
}
var setter = data ? baseSetData : setData;
return setWrapToString(setter(result2, newData), func, bitmask);
}
function customDefaultsAssignIn(objValue, srcValue, key, object) {
if (objValue === undefined2 || eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key)) {
return srcValue;
}
return objValue;
}
function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
if (isObject(objValue) && isObject(srcValue)) {
stack.set(srcValue, objValue);
baseMerge(objValue, srcValue, undefined2, customDefaultsMerge, stack);
stack["delete"](srcValue);
}
return objValue;
}
function customOmitClone(value) {
return isPlainObject(value) ? undefined2 : value;
}
function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array.length, othLength = other.length;
if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
return false;
}
var arrStacked = stack.get(array);
var othStacked = stack.get(other);
if (arrStacked && othStacked) {
return arrStacked == other && othStacked == array;
}
var index = -1, result2 = true, seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined2;
stack.set(array, other);
stack.set(other, array);
while (++index < arrLength) {
var arrValue = array[index], othValue = other[index];
if (customizer) {
var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);
}
if (compared !== undefined2) {
if (compared) {
continue;
}
result2 = false;
break;
}
if (seen) {
if (!arraySome(other, function(othValue2, othIndex) {
if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {
return seen.push(othIndex);
}
})) {
result2 = false;
break;
}
} else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
result2 = false;
break;
}
}
stack["delete"](array);
stack["delete"](other);
return result2;
}
function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
switch (tag) {
case dataViewTag:
if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {
return false;
}
object = object.buffer;
other = other.buffer;
case arrayBufferTag:
if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array2(object), new Uint8Array2(other))) {
return false;
}
return true;
case boolTag:
case dateTag:
case numberTag:
return eq(+object, +other);
case errorTag:
return object.name == other.name && object.message == other.message;
case regexpTag:
case stringTag:
return object == other + "";
case mapTag:
var convert = mapToArray;
case setTag:
var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
convert || (convert = setToArray);
if (object.size != other.size && !isPartial) {
return false;
}
var stacked = stack.get(object);
if (stacked) {
return stacked == other;
}
bitmask |= COMPARE_UNORDERED_FLAG;
stack.set(object, other);
var result2 = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
stack["delete"](object);
return result2;
case symbolTag:
if (symbolValueOf) {
return symbolValueOf.call(object) == symbolValueOf.call(other);
}
}
return false;
}
function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
var isPartial = bitmask & COMPARE_PARTIAL_FLAG, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length;
if (objLength != othLength && !isPartial) {
return false;
}
var index = objLength;
while (index--) {
var key = objProps[index];
if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
return false;
}
}
var objStacked = stack.get(object);
var othStacked = stack.get(other);
if (objStacked && othStacked) {
return objStacked == other && othStacked == object;
}
var result2 = true;
stack.set(object, other);
stack.set(other, object);
var skipCtor = isPartial;
while (++index < objLength) {
key = objProps[index];
var objValue = object[key], othValue = other[key];
if (customizer) {
var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
}
if (!(compared === undefined2 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {
result2 = false;
break;
}
skipCtor || (skipCtor = key == "constructor");
}
if (result2 && !skipCtor) {
var objCtor = object.constructor, othCtor = other.constructor;
if (objCtor != othCtor && ("constructor" in object && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) {
result2 = false;
}
}
stack["delete"](object);
stack["delete"](other);
return result2;
}
function flatRest(func) {
return setToString(overRest(func, undefined2, flatten), func + "");
}
function getAllKeys(object) {
return baseGetAllKeys(object, keys, getSymbols);
}
function getAllKeysIn(object) {
return baseGetAllKeys(object, keysIn, getSymbolsIn);
}
var getData = !metaMap ? noop2 : function(func) {
return metaMap.get(func);
};
function getFuncName(func) {
var result2 = func.name + "", array = realNames[result2], length = hasOwnProperty.call(realNames, result2) ? array.length : 0;
while (length--) {
var data = array[length], otherFunc = data.func;
if (otherFunc == null || otherFunc == func) {
return data.name;
}
}
return result2;
}
function getHolder(func) {
var object = hasOwnProperty.call(lodash, "placeholder") ? lodash : func;
return object.placeholder;
}
function getIteratee() {
var result2 = lodash.iteratee || iteratee;
result2 = result2 === iteratee ? baseIteratee : result2;
return arguments.length ? result2(arguments[0], arguments[1]) : result2;
}
function getMapData(map2, key) {
var data = map2.__data__;
return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
}
function getMatchData(object) {
var result2 = keys(object), length = result2.length;
while (length--) {
var key = result2[length], value = object[key];
result2[length] = [key, value, isStrictComparable(value)];
}
return result2;
}
function getNative(object, key) {
var value = getValue(object, key);
return baseIsNative(value) ? value : undefined2;
}
function getRawTag(value) {
var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];
try {
value[symToStringTag] = undefined2;
var unmasked = true;
} catch (e) {
}
var result2 = nativeObjectToString.call(value);
if (unmasked) {
if (isOwn) {
value[symToStringTag] = tag;
} else {
delete value[symToStringTag];
}
}
return result2;
}
var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
if (object == null) {
return [];
}
object = Object2(object);
return arrayFilter(nativeGetSymbols(object), function(symbol) {
return propertyIsEnumerable.call(object, symbol);
});
};
var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
var result2 = [];
while (object) {
arrayPush(result2, getSymbols(object));
object = getPrototype(object);
}
return result2;
};
var getTag = baseGetTag;
if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2()) != setTag || WeakMap2 && getTag(new WeakMap2()) != weakMapTag) {
getTag = function(value) {
var result2 = baseGetTag(value), Ctor = result2 == objectTag ? value.constructor : undefined2, ctorString = Ctor ? toSource(Ctor) : "";
if (ctorString) {
switch (ctorString) {
case dataViewCtorString:
return dataViewTag;
case mapCtorString:
return mapTag;
case promiseCtorString:
return promiseTag;
case setCtorString:
return setTag;
case weakMapCtorString:
return weakMapTag;
}
}
return result2;
};
}
function getView(start, end, transforms) {
var index = -1, length = transforms.length;
while (++index < length) {
var data = transforms[index], size2 = data.size;
switch (data.type) {
case "drop":
start += size2;
break;
case "dropRight":
end -= size2;
break;
case "take":
end = nativeMin(end, start + size2);
break;
case "takeRight":
start = nativeMax(start, end - size2);
break;
}
}
return { "start": start, "end": end };
}
function getWrapDetails(source) {
var match = source.match(reWrapDetails);
return match ? match[1].split(reSplitDetails) : [];
}
function hasPath(object, path, hasFunc) {
path = castPath(path, object);
var index = -1, length = path.length, result2 = false;
while (++index < length) {
var key = toKey(path[index]);
if (!(result2 = object != null && hasFunc(object, key))) {
break;
}
object = object[key];
}
if (result2 || ++index != length) {
return result2;
}
length = object == null ? 0 : object.length;
return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object));
}
function initCloneArray(array) {
var length = array.length, result2 = new array.constructor(length);
if (length && typeof array[0] == "string" && hasOwnProperty.call(array, "index")) {
result2.index = array.index;
result2.input = array.input;
}
return result2;
}
function initCloneObject(object) {
return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};
}
function initCloneByTag(object, tag, isDeep) {
var Ctor = object.constructor;
switch (tag) {
case arrayBufferTag:
return cloneArrayBuffer(object);
case boolTag:
case dateTag:
return new Ctor(+object);
case dataViewTag:
return cloneDataView(object, isDeep);
case float32Tag:
case float64Tag:
case int8Tag:
case int16Tag:
case int32Tag:
case uint8Tag:
case uint8ClampedTag:
case uint16Tag:
case uint32Tag:
return cloneTypedArray(object, isDeep);
case mapTag:
return new Ctor();
case numberTag:
case stringTag:
return new Ctor(object);
case regexpTag:
return cloneRegExp(object);
case setTag:
return new Ctor();
case symbolTag:
return cloneSymbol(object);
}
}
function insertWrapDetails(source, details) {
var length = details.length;
if (!length) {
return source;
}
var lastIndex = length - 1;
details[lastIndex] = (length > 1 ? "& " : "") + details[lastIndex];
details = details.join(length > 2 ? ", " : " ");
return source.replace(reWrapComment, "{\n/* [wrapped with " + details + "] */\n");
}
function isFlattenable(value) {
return isArray(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);
}
function isIndex(value, length) {
var type = typeof value;
length = length == null ? MAX_SAFE_INTEGER : length;
return !!length && (type == "number" || type != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);
}
function isIterateeCall(value, index, object) {
if (!isObject(object)) {
return false;
}
var type = typeof index;
if (type == "number" ? isArrayLike(object) && isIndex(index, object.length) : type == "string" && index in object) {
return eq(object[index], value);
}
return false;
}
function isKey(value, object) {
if (isArray(value)) {
return false;
}
var type = typeof value;
if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol(value)) {
return true;
}
return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object2(object);
}
function isKeyable(value) {
var type = typeof value;
return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
}
function isLaziable(func) {
var funcName = getFuncName(func), other = lodash[funcName];
if (typeof other != "function" || !(funcName in LazyWrapper.prototype)) {
return false;
}
if (func === other) {
return true;
}
var data = getData(other);
return !!data && func === data[0];
}
function isMasked(func) {
return !!maskSrcKey && maskSrcKey in func;
}
var isMaskable = coreJsData ? isFunction : stubFalse;
function isPrototype(value) {
var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto;
return value === proto;
}
function isStrictComparable(value) {
return value === value && !isObject(value);
}
function matchesStrictComparable(key, srcValue) {
return function(object) {
if (object == null) {
return false;
}
return object[key] === srcValue && (srcValue !== undefined2 || key in Object2(object));
};
}
function memoizeCapped(func) {
var result2 = memoize(func, function(key) {
if (cache.size === MAX_MEMOIZE_SIZE) {
cache.clear();
}
return key;
});
var cache = result2.cache;
return result2;
}
function mergeData(data, source) {
var bitmask = data[1], srcBitmask = source[1], newBitmask = bitmask | srcBitmask, isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
var isCombo = srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_CURRY_FLAG || srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_REARG_FLAG && data[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG;
if (!(isCommon || isCombo)) {
return data;
}
if (srcBitmask & WRAP_BIND_FLAG) {
data[2] = source[2];
newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
}
var value = source[3];
if (value) {
var partials = data[3];
data[3] = partials ? composeArgs(partials, value, source[4]) : value;
data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
}
value = source[5];
if (value) {
partials = data[5];
data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
}
value = source[7];
if (value) {
data[7] = value;
}
if (srcBitmask & WRAP_ARY_FLAG) {
data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
}
if (data[9] == null) {
data[9] = source[9];
}
data[0] = source[0];
data[1] = newBitmask;
return data;
}
function nativeKeysIn(object) {
var result2 = [];
if (object != null) {
for (var key in Object2(object)) {
result2.push(key);
}
}
return result2;
}
function objectToString(value) {
return nativeObjectToString.call(value);
}
function overRest(func, start, transform3) {
start = nativeMax(start === undefined2 ? func.length - 1 : start, 0);
return function() {
var args = arguments, index = -1, length = nativeMax(args.length - start, 0), array = Array2(length);
while (++index < length) {
array[index] = args[start + index];
}
index = -1;
var otherArgs = Array2(start + 1);
while (++index < start) {
otherArgs[index] = args[index];
}
otherArgs[start] = transform3(array);
return apply(func, this, otherArgs);
};
}
function parent(object, path) {
return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
}
function reorder(array, indexes) {
var arrLength = array.length, length = nativeMin(indexes.length, arrLength), oldArray = copyArray(array);
while (length--) {
var index = indexes[length];
array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined2;
}
return array;
}
function safeGet(object, key) {
if (key === "constructor" && typeof object[key] === "function") {
return;
}
if (key == "__proto__") {
return;
}
return object[key];
}
var setData = shortOut(baseSetData);
var setTimeout = ctxSetTimeout || function(func, wait) {
return root.setTimeout(func, wait);
};
var setToString = shortOut(baseSetToString);
function setWrapToString(wrapper, reference, bitmask) {
var source = reference + "";
return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));
}
function shortOut(func) {
var count = 0, lastCalled = 0;
return function() {
var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);
lastCalled = stamp;
if (remaining > 0) {
if (++count >= HOT_COUNT) {
return arguments[0];
}
} else {
count = 0;
}
return func.apply(undefined2, arguments);
};
}
function shuffleSelf(array, size2) {
var index = -1, length = array.length, lastIndex = length - 1;
size2 = size2 === undefined2 ? length : size2;
while (++index < size2) {
var rand = baseRandom(index, lastIndex), value = array[rand];
array[rand] = array[index];
array[index] = value;
}
array.length = size2;
return array;
}
var stringToPath = memoizeCapped(function(string) {
var result2 = [];
if (string.charCodeAt(0) === 46) {
result2.push("");
}
string.replace(rePropName, function(match, number, quote, subString) {
result2.push(quote ? subString.replace(reEscapeChar, "$1") : number || match);
});
return result2;
});
function toKey(value) {
if (typeof value == "string" || isSymbol(value)) {
return value;
}
var result2 = value + "";
return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2;
}
function toSource(func) {
if (func != null) {
try {
return funcToString.call(func);
} catch (e) {
}
try {
return func + "";
} catch (e) {
}
}
return "";
}
function updateWrapDetails(details, bitmask) {
arrayEach(wrapFlags, function(pair) {
var value = "_." + pair[0];
if (bitmask & pair[1] && !arrayIncludes(details, value)) {
details.push(value);
}
});
return details.sort();
}
function wrapperClone(wrapper) {
if (wrapper instanceof LazyWrapper) {
return wrapper.clone();
}
var result2 = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
result2.__actions__ = copyArray(wrapper.__actions__);
result2.__index__ = wrapper.__index__;
result2.__values__ = wrapper.__values__;
return result2;
}
function chunk(array, size2, guard) {
if (guard ? isIterateeCall(array, size2, guard) : size2 === undefined2) {
size2 = 1;
} else {
size2 = nativeMax(toInteger(size2), 0);
}
var length = array == null ? 0 : array.length;
if (!length || size2 < 1) {
return [];
}
var index = 0, resIndex = 0, result2 = Array2(nativeCeil(length / size2));
while (index < length) {
result2[resIndex++] = baseSlice(array, index, index += size2);
}
return result2;
}
function compact(array) {
var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result2 = [];
while (++index < length) {
var value = array[index];
if (value) {
result2[resIndex++] = value;
}
}
return result2;
}
function concat() {
var length = arguments.length;
if (!length) {
return [];
}
var args = Array2(length - 1), array = arguments[0], index = length;
while (index--) {
args[index - 1] = arguments[index];
}
return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
}
var difference2 = baseRest(function(array, values2) {
return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true)) : [];
});
var differenceBy = baseRest(function(array, values2) {
var iteratee2 = last3(values2);
if (isArrayLikeObject(iteratee2)) {
iteratee2 = undefined2;
}
return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)) : [];
});
var differenceWith = baseRest(function(array, values2) {
var comparator = last3(values2);
if (isArrayLikeObject(comparator)) {
comparator = undefined2;
}
return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), undefined2, comparator) : [];
});
function drop(array, n, guard) {
var length = array == null ? 0 : array.length;
if (!length) {
return [];
}
n = guard || n === undefined2 ? 1 : toInteger(n);
return baseSlice(array, n < 0 ? 0 : n, length);
}
function dropRight(array, n, guard) {
var length = array == null ? 0 : array.length;
if (!length) {
return [];
}
n = guard || n === undefined2 ? 1 : toInteger(n);
n = length - n;
return baseSlice(array, 0, n < 0 ? 0 : n);
}
function dropRightWhile(array, predicate) {
return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true, true) : [];
}
function dropWhile(array, predicate) {
return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true) : [];
}
function fill(array, value, start, end) {
var length = array == null ? 0 : array.length;
if (!length) {
return [];
}
if (start && typeof start != "number" && isIterateeCall(array, value, start)) {
start = 0;
end = length;
}
return baseFill(array, value, start, end);
}
function findIndex(array, predicate, fromIndex) {
var length = array == null ? 0 : array.length;
if (!length) {
return -1;
}
var index = fromIndex == null ? 0 : toInteger(fromIndex);
if (index < 0) {
index = nativeMax(length + index, 0);
}
return baseFindIndex(array, getIteratee(predicate, 3), index);
}
function findLastIndex(array, predicate, fromIndex) {
var length = array == null ? 0 : array.length;
if (!length) {
return -1;
}
var index = length - 1;
if (fromIndex !== undefined2) {
index = toInteger(fromIndex);
index = fromIndex < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
}
return baseFindIndex(array, getIteratee(predicate, 3), index, true);
}
function flatten(array) {
var length = array == null ? 0 : array.length;
return length ? baseFlatten(array, 1) : [];
}
function flattenDeep(array) {
var length = array == null ? 0 : array.length;
return length ? baseFlatten(array, INFINITY) : [];
}
function flattenDepth(array, depth) {
var length = array == null ? 0 : array.length;
if (!length) {
return [];
}
depth = depth === undefined2 ? 1 : toInteger(depth);
return baseFlatten(array, depth);
}
function fromPairs(pairs) {
var index = -1, length = pairs == null ? 0 : pairs.length, result2 = {};
while (++index < length) {
var pair = pairs[index];
result2[pair[0]] = pair[1];
}
return result2;
}
function head(array) {
return array && array.length ? array[0] : undefined2;
}
function indexOf(array, value, fromIndex) {
var length = array == null ? 0 : array.length;
if (!length) {
return -1;
}
var index = fromIndex == null ? 0 : toInteger(fromIndex);
if (index < 0) {
index = nativeMax(length + index, 0);
}
return baseIndexOf(array, value, index);
}
function initial(array) {
var length = array == null ? 0 : array.length;
return length ? baseSlice(array, 0, -1) : [];
}
var intersection = baseRest(function(arrays) {
var mapped = arrayMap(arrays, castArrayLikeObject);
return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped) : [];
});
var intersectionBy = baseRest(function(arrays) {
var iteratee2 = last3(arrays), mapped = arrayMap(arrays, castArrayLikeObject);
if (iteratee2 === last3(mapped)) {
iteratee2 = undefined2;
} else {
mapped.pop();
}
return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, getIteratee(iteratee2, 2)) : [];
});
var intersectionWith = baseRest(function(arrays) {
var comparator = last3(arrays), mapped = arrayMap(arrays, castArrayLikeObject);
comparator = typeof comparator == "function" ? comparator : undefined2;
if (comparator) {
mapped.pop();
}
return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined2, comparator) : [];
});
function join(array, separator) {
return array == null ? "" : nativeJoin.call(array, separator);
}
function last3(array) {
var length = array == null ? 0 : array.length;
return length ? array[length - 1] : undefined2;
}
function lastIndexOf(array, value, fromIndex) {
var length = array == null ? 0 : array.length;
if (!length) {
return -1;
}
var index = length;
if (fromIndex !== undefined2) {
index = toInteger(fromIndex);
index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
}
return value === value ? strictLastIndexOf(array, value, index) : baseFindIndex(array, baseIsNaN, index, true);
}
function nth(array, n) {
return array && array.length ? baseNth(array, toInteger(n)) : undefined2;
}
var pull = baseRest(pullAll);
function pullAll(array, values2) {
return array && array.length && values2 && values2.length ? basePullAll(array, values2) : array;
}
function pullAllBy(array, values2, iteratee2) {
return array && array.length && values2 && values2.length ? basePullAll(array, values2, getIteratee(iteratee2, 2)) : array;
}
function pullAllWith(array, values2, comparator) {
return array && array.length && values2 && values2.length ? basePullAll(array, values2, undefined2, comparator) : array;
}
var pullAt = flatRest(function(array, indexes) {
var length = array == null ? 0 : array.length, result2 = baseAt(array, indexes);
basePullAt(array, arrayMap(indexes, function(index) {
return isIndex(index, length) ? +index : index;
}).sort(compareAscending));
return result2;
});
function remove(array, predicate) {
var result2 = [];
if (!(array && array.length)) {
return result2;
}
var index = -1, indexes = [], length = array.length;
predicate = getIteratee(predicate, 3);
while (++index < length) {
var value = array[index];
if (predicate(value, index, array)) {
result2.push(value);
indexes.push(index);
}
}
basePullAt(array, indexes);
return result2;
}
function reverse(array) {
return array == null ? array : nativeReverse.call(array);
}
function slice(array, start, end) {
var length = array == null ? 0 : array.length;
if (!length) {
return [];
}
if (end && typeof end != "number" && isIterateeCall(array, start, end)) {
start = 0;
end = length;
} else {
start = start == null ? 0 : toInteger(start);
end = end === undefined2 ? length : toInteger(end);
}
return baseSlice(array, start, end);
}
function sortedIndex(array, value) {
return baseSortedIndex(array, value);
}
function sortedIndexBy(array, value, iteratee2) {
return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2));
}
function sortedIndexOf(array, value) {
var length = array == null ? 0 : array.length;
if (length) {
var index = baseSortedIndex(array, value);
if (index < length && eq(array[index], value)) {
return index;
}
}
return -1;
}
function sortedLastIndex(array, value) {
return baseSortedIndex(array, value, true);
}
function sortedLastIndexBy(array, value, iteratee2) {
return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2), true);
}
function sortedLastIndexOf(array, value) {
var length = array == null ? 0 : array.length;
if (length) {
var index = baseSortedIndex(array, value, true) - 1;
if (eq(array[index], value)) {
return index;
}
}
return -1;
}
function sortedUniq(array) {
return array && array.length ? baseSortedUniq(array) : [];
}
function sortedUniqBy(array, iteratee2) {
return array && array.length ? baseSortedUniq(array, getIteratee(iteratee2, 2)) : [];
}
function tail(array) {
var length = array == null ? 0 : array.length;
return length ? baseSlice(array, 1, length) : [];
}
function take(array, n, guard) {
if (!(array && array.length)) {
return [];
}
n = guard || n === undefined2 ? 1 : toInteger(n);
return baseSlice(array, 0, n < 0 ? 0 : n);
}
function takeRight(array, n, guard) {
var length = array == null ? 0 : array.length;
if (!length) {
return [];
}
n = guard || n === undefined2 ? 1 : toInteger(n);
n = length - n;
return baseSlice(array, n < 0 ? 0 : n, length);
}
function takeRightWhile(array, predicate) {
return array && array.length ? baseWhile(array, getIteratee(predicate, 3), false, true) : [];
}
function takeWhile(array, predicate) {
return array && array.length ? baseWhile(array, getIteratee(predicate, 3)) : [];
}
var union = baseRest(function(arrays) {
return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
});
var unionBy = baseRest(function(arrays) {
var iteratee2 = last3(arrays);
if (isArrayLikeObject(iteratee2)) {
iteratee2 = undefined2;
}
return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2));
});
var unionWith = baseRest(function(arrays) {
var comparator = last3(arrays);
comparator = typeof comparator == "function" ? comparator : undefined2;
return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined2, comparator);
});
function uniq(array) {
return array && array.length ? baseUniq(array) : [];
}
function uniqBy(array, iteratee2) {
return array && array.length ? baseUniq(array, getIteratee(iteratee2, 2)) : [];
}
function uniqWith(array, comparator) {
comparator = typeof comparator == "function" ? comparator : undefined2;
return array && array.length ? baseUniq(array, undefined2, comparator) : [];
}
function unzip(array) {
if (!(array && array.length)) {
return [];
}
var length = 0;
array = arrayFilter(array, function(group) {
if (isArrayLikeObject(group)) {
length = nativeMax(group.length, length);
return true;
}
});
return baseTimes(length, function(index) {
return arrayMap(array, baseProperty(index));
});
}
function unzipWith(array, iteratee2) {
if (!(array && array.length)) {
return [];
}
var result2 = unzip(array);
if (iteratee2 == null) {
return result2;
}
return arrayMap(result2, function(group) {
return apply(iteratee2, undefined2, group);
});
}
var without = baseRest(function(array, values2) {
return isArrayLikeObject(array) ? baseDifference(array, values2) : [];
});
var xor = baseRest(function(arrays) {
return baseXor(arrayFilter(arrays, isArrayLikeObject));
});
var xorBy = baseRest(function(arrays) {
var iteratee2 = last3(arrays);
if (isArrayLikeObject(iteratee2)) {
iteratee2 = undefined2;
}
return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee2, 2));
});
var xorWith = baseRest(function(arrays) {
var comparator = last3(arrays);
comparator = typeof comparator == "function" ? comparator : undefined2;
return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined2, comparator);
});
var zip = baseRest(unzip);
function zipObject(props, values2) {
return baseZipObject(props || [], values2 || [], assignValue);
}
function zipObjectDeep(props, values2) {
return baseZipObject(props || [], values2 || [], baseSet);
}
var zipWith = baseRest(function(arrays) {
var length = arrays.length, iteratee2 = length > 1 ? arrays[length - 1] : undefined2;
iteratee2 = typeof iteratee2 == "function" ? (arrays.pop(), iteratee2) : undefined2;
return unzipWith(arrays, iteratee2);
});
function chain(value) {
var result2 = lodash(value);
result2.__chain__ = true;
return result2;
}
function tap(value, interceptor) {
interceptor(value);
return value;
}
function thru(value, interceptor) {
return interceptor(value);
}
var wrapperAt = flatRest(function(paths) {
var length = paths.length, start = length ? paths[0] : 0, value = this.__wrapped__, interceptor = function(object) {
return baseAt(object, paths);
};
if (length > 1 || this.__actions__.length || !(value instanceof LazyWrapper) || !isIndex(start)) {
return this.thru(interceptor);
}
value = value.slice(start, +start + (length ? 1 : 0));
value.__actions__.push({
"func": thru,
"args": [interceptor],
"thisArg": undefined2
});
return new LodashWrapper(value, this.__chain__).thru(function(array) {
if (length && !array.length) {
array.push(undefined2);
}
return array;
});
});
function wrapperChain() {
return chain(this);
}
function wrapperCommit() {
return new LodashWrapper(this.value(), this.__chain__);
}
function wrapperNext() {
if (this.__values__ === undefined2) {
this.__values__ = toArray(this.value());
}
var done = this.__index__ >= this.__values__.length, value = done ? undefined2 : this.__values__[this.__index__++];
return { "done": done, "value": value };
}
function wrapperToIterator() {
return this;
}
function wrapperPlant(value) {
var result2, parent2 = this;
while (parent2 instanceof baseLodash) {
var clone2 = wrapperClone(parent2);
clone2.__index__ = 0;
clone2.__values__ = undefined2;
if (result2) {
previous.__wrapped__ = clone2;
} else {
result2 = clone2;
}
var previous = clone2;
parent2 = parent2.__wrapped__;
}
previous.__wrapped__ = value;
return result2;
}
function wrapperReverse() {
var value = this.__wrapped__;
if (value instanceof LazyWrapper) {
var wrapped = value;
if (this.__actions__.length) {
wrapped = new LazyWrapper(this);
}
wrapped = wrapped.reverse();
wrapped.__actions__.push({
"func": thru,
"args": [reverse],
"thisArg": undefined2
});
return new LodashWrapper(wrapped, this.__chain__);
}
return this.thru(reverse);
}
function wrapperValue() {
return baseWrapperValue(this.__wrapped__, this.__actions__);
}
var countBy = createAggregator(function(result2, value, key) {
if (hasOwnProperty.call(result2, key)) {
++result2[key];
} else {
baseAssignValue(result2, key, 1);
}
});
function every(collection, predicate, guard) {
var func = isArray(collection) ? arrayEvery : baseEvery;
if (guard && isIterateeCall(collection, predicate, guard)) {
predicate = undefined2;
}
return func(collection, getIteratee(predicate, 3));
}
function filter(collection, predicate) {
var func = isArray(collection) ? arrayFilter : baseFilter;
return func(collection, getIteratee(predicate, 3));
}
var find = createFind(findIndex);
var findLast = createFind(findLastIndex);
function flatMap(collection, iteratee2) {
return baseFlatten(map(collection, iteratee2), 1);
}
function flatMapDeep(collection, iteratee2) {
return baseFlatten(map(collection, iteratee2), INFINITY);
}
function flatMapDepth(collection, iteratee2, depth) {
depth = depth === undefined2 ? 1 : toInteger(depth);
return baseFlatten(map(collection, iteratee2), depth);
}
function forEach(collection, iteratee2) {
var func = isArray(collection) ? arrayEach : baseEach;
return func(collection, getIteratee(iteratee2, 3));
}
function forEachRight(collection, iteratee2) {
var func = isArray(collection) ? arrayEachRight : baseEachRight;
return func(collection, getIteratee(iteratee2, 3));
}
var groupBy = createAggregator(function(result2, value, key) {
if (hasOwnProperty.call(result2, key)) {
result2[key].push(value);
} else {
baseAssignValue(result2, key, [value]);
}
});
function includes(collection, value, fromIndex, guard) {
collection = isArrayLike(collection) ? collection : values(collection);
fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0;
var length = collection.length;
if (fromIndex < 0) {
fromIndex = nativeMax(length + fromIndex, 0);
}
return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1;
}
var invokeMap = baseRest(function(collection, path, args) {
var index = -1, isFunc = typeof path == "function", result2 = isArrayLike(collection) ? Array2(collection.length) : [];
baseEach(collection, function(value) {
result2[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);
});
return result2;
});
var keyBy = createAggregator(function(result2, value, key) {
baseAssignValue(result2, key, value);
});
function map(collection, iteratee2) {
var func = isArray(collection) ? arrayMap : baseMap;
return func(collection, getIteratee(iteratee2, 3));
}
function orderBy(collection, iteratees, orders, guard) {
if (collection == null) {
return [];
}
if (!isArray(iteratees)) {
iteratees = iteratees == null ? [] : [iteratees];
}
orders = guard ? undefined2 : orders;
if (!isArray(orders)) {
orders = orders == null ? [] : [orders];
}
return baseOrderBy(collection, iteratees, orders);
}
var partition3 = createAggregator(function(result2, value, key) {
result2[key ? 0 : 1].push(value);
}, function() {
return [[], []];
});
function reduce(collection, iteratee2, accumulator) {
var func = isArray(collection) ? arrayReduce : baseReduce, initAccum = arguments.length < 3;
return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEach);
}
function reduceRight(collection, iteratee2, accumulator) {
var func = isArray(collection) ? arrayReduceRight : baseReduce, initAccum = arguments.length < 3;
return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEachRight);
}
function reject(collection, predicate) {
var func = isArray(collection) ? arrayFilter : baseFilter;
return func(collection, negate(getIteratee(predicate, 3)));
}
function sample(collection) {
var func = isArray(collection) ? arraySample : baseSample;
return func(collection);
}
function sampleSize(collection, n, guard) {
if (guard ? isIterateeCall(collection, n, guard) : n === undefined2) {
n = 1;
} else {
n = toInteger(n);
}
var func = isArray(collection) ? arraySampleSize : baseSampleSize;
return func(collection, n);
}
function shuffle(collection) {
var func = isArray(collection) ? arrayShuffle : baseShuffle;
return func(collection);
}
function size(collection) {
if (collection == null) {
return 0;
}
if (isArrayLike(collection)) {
return isString(collection) ? stringSize(collection) : collection.length;
}
var tag = getTag(collection);
if (tag == mapTag || tag == setTag) {
return collection.size;
}
return baseKeys(collection).length;
}
function some(collection, predicate, guard) {
var func = isArray(collection) ? arraySome : baseSome;
if (guard && isIterateeCall(collection, predicate, guard)) {
predicate = undefined2;
}
return func(collection, getIteratee(predicate, 3));
}
var sortBy = baseRest(function(collection, iteratees) {
if (collection == null) {
return [];
}
var length = iteratees.length;
if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
iteratees = [];
} else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
iteratees = [iteratees[0]];
}
return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
});
var now = ctxNow || function() {
return root.Date.now();
};
function after(n, func) {
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
n = toInteger(n);
return function() {
if (--n < 1) {
return func.apply(this, arguments);
}
};
}
function ary(func, n, guard) {
n = guard ? undefined2 : n;
n = func && n == null ? func.length : n;
return createWrap(func, WRAP_ARY_FLAG, undefined2, undefined2, undefined2, undefined2, n);
}
function before(n, func) {
var result2;
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
n = toInteger(n);
return function() {
if (--n > 0) {
result2 = func.apply(this, arguments);
}
if (n <= 1) {
func = undefined2;
}
return result2;
};
}
var bind = baseRest(function(func, thisArg, partials) {
var bitmask = WRAP_BIND_FLAG;
if (partials.length) {
var holders = replaceHolders(partials, getHolder(bind));
bitmask |= WRAP_PARTIAL_FLAG;
}
return createWrap(func, bitmask, thisArg, partials, holders);
});
var bindKey = baseRest(function(object, key, partials) {
var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
if (partials.length) {
var holders = replaceHolders(partials, getHolder(bindKey));
bitmask |= WRAP_PARTIAL_FLAG;
}
return createWrap(key, bitmask, object, partials, holders);
});
function curry(func, arity, guard) {
arity = guard ? undefined2 : arity;
var result2 = createWrap(func, WRAP_CURRY_FLAG, undefined2, undefined2, undefined2, undefined2, undefined2, arity);
result2.placeholder = curry.placeholder;
return result2;
}
function curryRight(func, arity, guard) {
arity = guard ? undefined2 : arity;
var result2 = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined2, undefined2, undefined2, undefined2, undefined2, arity);
result2.placeholder = curryRight.placeholder;
return result2;
}
function debounce(func, wait, options) {
var lastArgs, lastThis, maxWait, result2, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
wait = toNumber(wait) || 0;
if (isObject(options)) {
leading = !!options.leading;
maxing = "maxWait" in options;
maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
trailing = "trailing" in options ? !!options.trailing : trailing;
}
function invokeFunc(time2) {
var args = lastArgs, thisArg = lastThis;
lastArgs = lastThis = undefined2;
lastInvokeTime = time2;
result2 = func.apply(thisArg, args);
return result2;
}
function leadingEdge(time2) {
lastInvokeTime = time2;
timerId = setTimeout(timerExpired, wait);
return leading ? invokeFunc(time2) : result2;
}
function remainingWait(time2) {
var timeSinceLastCall = time2 - lastCallTime, timeSinceLastInvoke = time2 - lastInvokeTime, timeWaiting = wait - timeSinceLastCall;
return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;
}
function shouldInvoke(time2) {
var timeSinceLastCall = time2 - lastCallTime, timeSinceLastInvoke = time2 - lastInvokeTime;
return lastCallTime === undefined2 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;
}
function timerExpired() {
var time2 = now();
if (shouldInvoke(time2)) {
return trailingEdge(time2);
}
timerId = setTimeout(timerExpired, remainingWait(time2));
}
function trailingEdge(time2) {
timerId = undefined2;
if (trailing && lastArgs) {
return invokeFunc(time2);
}
lastArgs = lastThis = undefined2;
return result2;
}
function cancel() {
if (timerId !== undefined2) {
clearTimeout(timerId);
}
lastInvokeTime = 0;
lastArgs = lastCallTime = lastThis = timerId = undefined2;
}
function flush2() {
return timerId === undefined2 ? result2 : trailingEdge(now());
}
function debounced() {
var time2 = now(), isInvoking = shouldInvoke(time2);
lastArgs = arguments;
lastThis = this;
lastCallTime = time2;
if (isInvoking) {
if (timerId === undefined2) {
return leadingEdge(lastCallTime);
}
if (maxing) {
clearTimeout(timerId);
timerId = setTimeout(timerExpired, wait);
return invokeFunc(lastCallTime);
}
}
if (timerId === undefined2) {
timerId = setTimeout(timerExpired, wait);
}
return result2;
}
debounced.cancel = cancel;
debounced.flush = flush2;
return debounced;
}
var defer = baseRest(function(func, args) {
return baseDelay(func, 1, args);
});
var delay = baseRest(function(func, wait, args) {
return baseDelay(func, toNumber(wait) || 0, args);
});
function flip(func) {
return createWrap(func, WRAP_FLIP_FLAG);
}
function memoize(func, resolver) {
if (typeof func != "function" || resolver != null && typeof resolver != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
var memoized = function() {
var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;
if (cache.has(key)) {
return cache.get(key);
}
var result2 = func.apply(this, args);
memoized.cache = cache.set(key, result2) || cache;
return result2;
};
memoized.cache = new (memoize.Cache || MapCache)();
return memoized;
}
memoize.Cache = MapCache;
function negate(predicate) {
if (typeof predicate != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
return function() {
var args = arguments;
switch (args.length) {
case 0:
return !predicate.call(this);
case 1:
return !predicate.call(this, args[0]);
case 2:
return !predicate.call(this, args[0], args[1]);
case 3:
return !predicate.call(this, args[0], args[1], args[2]);
}
return !predicate.apply(this, args);
};
}
function once(func) {
return before(2, func);
}
var overArgs = castRest(function(func, transforms) {
transforms = transforms.length == 1 && isArray(transforms[0]) ? arrayMap(transforms[0], baseUnary(getIteratee())) : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));
var funcsLength = transforms.length;
return baseRest(function(args) {
var index = -1, length = nativeMin(args.length, funcsLength);
while (++index < length) {
args[index] = transforms[index].call(this, args[index]);
}
return apply(func, this, args);
});
});
var partial = baseRest(function(func, partials) {
var holders = replaceHolders(partials, getHolder(partial));
return createWrap(func, WRAP_PARTIAL_FLAG, undefined2, partials, holders);
});
var partialRight = baseRest(function(func, partials) {
var holders = replaceHolders(partials, getHolder(partialRight));
return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined2, partials, holders);
});
var rearg = flatRest(function(func, indexes) {
return createWrap(func, WRAP_REARG_FLAG, undefined2, undefined2, undefined2, indexes);
});
function rest(func, start) {
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
start = start === undefined2 ? start : toInteger(start);
return baseRest(func, start);
}
function spread(func, start) {
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
start = start == null ? 0 : nativeMax(toInteger(start), 0);
return baseRest(function(args) {
var array = args[start], otherArgs = castSlice(args, 0, start);
if (array) {
arrayPush(otherArgs, array);
}
return apply(func, this, otherArgs);
});
}
function throttle(func, wait, options) {
var leading = true, trailing = true;
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
if (isObject(options)) {
leading = "leading" in options ? !!options.leading : leading;
trailing = "trailing" in options ? !!options.trailing : trailing;
}
return debounce(func, wait, {
"leading": leading,
"maxWait": wait,
"trailing": trailing
});
}
function unary(func) {
return ary(func, 1);
}
function wrap(value, wrapper) {
return partial(castFunction(wrapper), value);
}
function castArray() {
if (!arguments.length) {
return [];
}
var value = arguments[0];
return isArray(value) ? value : [value];
}
function clone(value) {
return baseClone(value, CLONE_SYMBOLS_FLAG);
}
function cloneWith(value, customizer) {
customizer = typeof customizer == "function" ? customizer : undefined2;
return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
}
function cloneDeep(value) {
return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
}
function cloneDeepWith(value, customizer) {
customizer = typeof customizer == "function" ? customizer : undefined2;
return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
}
function conformsTo(object, source) {
return source == null || baseConformsTo(object, source, keys(source));
}
function eq(value, other) {
return value === other || value !== value && other !== other;
}
var gt = createRelationalOperation(baseGt);
var gte = createRelationalOperation(function(value, other) {
return value >= other;
});
var isArguments = baseIsArguments(function() {
return arguments;
}()) ? baseIsArguments : function(value) {
return isObjectLike(value) && hasOwnProperty.call(value, "callee") && !propertyIsEnumerable.call(value, "callee");
};
var isArray = Array2.isArray;
var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
function isArrayLike(value) {
return value != null && isLength(value.length) && !isFunction(value);
}
function isArrayLikeObject(value) {
return isObjectLike(value) && isArrayLike(value);
}
function isBoolean(value) {
return value === true || value === false || isObjectLike(value) && baseGetTag(value) == boolTag;
}
var isBuffer = nativeIsBuffer || stubFalse;
var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
function isElement(value) {
return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
}
function isEmpty(value) {
if (value == null) {
return true;
}
if (isArrayLike(value) && (isArray(value) || typeof value == "string" || typeof value.splice == "function" || isBuffer(value) || isTypedArray(value) || isArguments(value))) {
return !value.length;
}
var tag = getTag(value);
if (tag == mapTag || tag == setTag) {
return !value.size;
}
if (isPrototype(value)) {
return !baseKeys(value).length;
}
for (var key in value) {
if (hasOwnProperty.call(value, key)) {
return false;
}
}
return true;
}
function isEqual(value, other) {
return baseIsEqual(value, other);
}
function isEqualWith(value, other, customizer) {
customizer = typeof customizer == "function" ? customizer : undefined2;
var result2 = customizer ? customizer(value, other) : undefined2;
return result2 === undefined2 ? baseIsEqual(value, other, undefined2, customizer) : !!result2;
}
function isError(value) {
if (!isObjectLike(value)) {
return false;
}
var tag = baseGetTag(value);
return tag == errorTag || tag == domExcTag || typeof value.message == "string" && typeof value.name == "string" && !isPlainObject(value);
}
function isFinite(value) {
return typeof value == "number" && nativeIsFinite(value);
}
function isFunction(value) {
if (!isObject(value)) {
return false;
}
var tag = baseGetTag(value);
return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
}
function isInteger(value) {
return typeof value == "number" && value == toInteger(value);
}
function isLength(value) {
return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
}
function isObject(value) {
var type = typeof value;
return value != null && (type == "object" || type == "function");
}
function isObjectLike(value) {
return value != null && typeof value == "object";
}
var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
function isMatch(object, source) {
return object === source || baseIsMatch(object, source, getMatchData(source));
}
function isMatchWith(object, source, customizer) {
customizer = typeof customizer == "function" ? customizer : undefined2;
return baseIsMatch(object, source, getMatchData(source), customizer);
}
function isNaN2(value) {
return isNumber(value) && value != +value;
}
function isNative(value) {
if (isMaskable(value)) {
throw new Error2(CORE_ERROR_TEXT);
}
return baseIsNative(value);
}
function isNull(value) {
return value === null;
}
function isNil(value) {
return value == null;
}
function isNumber(value) {
return typeof value == "number" || isObjectLike(value) && baseGetTag(value) == numberTag;
}
function isPlainObject(value) {
if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
return false;
}
var proto = getPrototype(value);
if (proto === null) {
return true;
}
var Ctor = hasOwnProperty.call(proto, "constructor") && proto.constructor;
return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;
}
var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
function isSafeInteger(value) {
return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;
}
var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
function isString(value) {
return typeof value == "string" || !isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag;
}
function isSymbol(value) {
return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag;
}
var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
function isUndefined(value) {
return value === undefined2;
}
function isWeakMap(value) {
return isObjectLike(value) && getTag(value) == weakMapTag;
}
function isWeakSet(value) {
return isObjectLike(value) && baseGetTag(value) == weakSetTag;
}
var lt = createRelationalOperation(baseLt);
var lte = createRelationalOperation(function(value, other) {
return value <= other;
});
function toArray(value) {
if (!value) {
return [];
}
if (isArrayLike(value)) {
return isString(value) ? stringToArray(value) : copyArray(value);
}
if (symIterator && value[symIterator]) {
return iteratorToArray(value[symIterator]());
}
var tag = getTag(value), func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values;
return func(value);
}
function toFinite(value) {
if (!value) {
return value === 0 ? value : 0;
}
value = toNumber(value);
if (value === INFINITY || value === -INFINITY) {
var sign = value < 0 ? -1 : 1;
return sign * MAX_INTEGER;
}
return value === value ? value : 0;
}
function toInteger(value) {
var result2 = toFinite(value), remainder = result2 % 1;
return result2 === result2 ? remainder ? result2 - remainder : result2 : 0;
}
function toLength(value) {
return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;
}
function toNumber(value) {
if (typeof value == "number") {
return value;
}
if (isSymbol(value)) {
return NAN;
}
if (isObject(value)) {
var other = typeof value.valueOf == "function" ? value.valueOf() : value;
value = isObject(other) ? other + "" : other;
}
if (typeof value != "string") {
return value === 0 ? value : +value;
}
value = baseTrim(value);
var isBinary = reIsBinary.test(value);
return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;
}
function toPlainObject(value) {
return copyObject(value, keysIn(value));
}
function toSafeInteger(value) {
return value ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) : value === 0 ? value : 0;
}
function toString(value) {
return value == null ? "" : baseToString(value);
}
var assign2 = createAssigner(function(object, source) {
if (isPrototype(source) || isArrayLike(source)) {
copyObject(source, keys(source), object);
return;
}
for (var key in source) {
if (hasOwnProperty.call(source, key)) {
assignValue(object, key, source[key]);
}
}
});
var assignIn = createAssigner(function(object, source) {
copyObject(source, keysIn(source), object);
});
var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {
copyObject(source, keysIn(source), object, customizer);
});
var assignWith = createAssigner(function(object, source, srcIndex, customizer) {
copyObject(source, keys(source), object, customizer);
});
var at = flatRest(baseAt);
function create2(prototype, properties) {
var result2 = baseCreate(prototype);
return properties == null ? result2 : baseAssign(result2, properties);
}
var defaults = baseRest(function(object, sources) {
object = Object2(object);
var index = -1;
var length = sources.length;
var guard = length > 2 ? sources[2] : undefined2;
if (guard && isIterateeCall(sources[0], sources[1], guard)) {
length = 1;
}
while (++index < length) {
var source = sources[index];
var props = keysIn(source);
var propsIndex = -1;
var propsLength = props.length;
while (++propsIndex < propsLength) {
var key = props[propsIndex];
var value = object[key];
if (value === undefined2 || eq(value, objectProto[key]) && !hasOwnProperty.call(object, key)) {
object[key] = source[key];
}
}
}
return object;
});
var defaultsDeep = baseRest(function(args) {
args.push(undefined2, customDefaultsMerge);
return apply(mergeWith, undefined2, args);
});
function findKey(object, predicate) {
return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);
}
function findLastKey(object, predicate) {
return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);
}
function forIn(object, iteratee2) {
return object == null ? object : baseFor(object, getIteratee(iteratee2, 3), keysIn);
}
function forInRight(object, iteratee2) {
return object == null ? object : baseForRight(object, getIteratee(iteratee2, 3), keysIn);
}
function forOwn(object, iteratee2) {
return object && baseForOwn(object, getIteratee(iteratee2, 3));
}
function forOwnRight(object, iteratee2) {
return object && baseForOwnRight(object, getIteratee(iteratee2, 3));
}
function functions(object) {
return object == null ? [] : baseFunctions(object, keys(object));
}
function functionsIn(object) {
return object == null ? [] : baseFunctions(object, keysIn(object));
}
function get(object, path, defaultValue) {
var result2 = object == null ? undefined2 : baseGet(object, path);
return result2 === undefined2 ? defaultValue : result2;
}
function has(object, path) {
return object != null && hasPath(object, path, baseHas);
}
function hasIn(object, path) {
return object != null && hasPath(object, path, baseHasIn);
}
var invert = createInverter(function(result2, value, key) {
if (value != null && typeof value.toString != "function") {
value = nativeObjectToString.call(value);
}
result2[value] = key;
}, constant(identity));
var invertBy = createInverter(function(result2, value, key) {
if (value != null && typeof value.toString != "function") {
value = nativeObjectToString.call(value);
}
if (hasOwnProperty.call(result2, value)) {
result2[value].push(key);
} else {
result2[value] = [key];
}
}, getIteratee);
var invoke = baseRest(baseInvoke);
function keys(object) {
return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
}
function keysIn(object) {
return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
}
function mapKeys(object, iteratee2) {
var result2 = {};
iteratee2 = getIteratee(iteratee2, 3);
baseForOwn(object, function(value, key, object2) {
baseAssignValue(result2, iteratee2(value, key, object2), value);
});
return result2;
}
function mapValues(object, iteratee2) {
var result2 = {};
iteratee2 = getIteratee(iteratee2, 3);
baseForOwn(object, function(value, key, object2) {
baseAssignValue(result2, key, iteratee2(value, key, object2));
});
return result2;
}
var merge = createAssigner(function(object, source, srcIndex) {
baseMerge(object, source, srcIndex);
});
var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
baseMerge(object, source, srcIndex, customizer);
});
var omit = flatRest(function(object, paths) {
var result2 = {};
if (object == null) {
return result2;
}
var isDeep = false;
paths = arrayMap(paths, function(path) {
path = castPath(path, object);
isDeep || (isDeep = path.length > 1);
return path;
});
copyObject(object, getAllKeysIn(object), result2);
if (isDeep) {
result2 = baseClone(result2, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
}
var length = paths.length;
while (length--) {
baseUnset(result2, paths[length]);
}
return result2;
});
function omitBy(object, predicate) {
return pickBy(object, negate(getIteratee(predicate)));
}
var pick = flatRest(function(object, paths) {
return object == null ? {} : basePick(object, paths);
});
function pickBy(object, predicate) {
if (object == null) {
return {};
}
var props = arrayMap(getAllKeysIn(object), function(prop) {
return [prop];
});
predicate = getIteratee(predicate);
return basePickBy(object, props, function(value, path) {
return predicate(value, path[0]);
});
}
function result(object, path, defaultValue) {
path = castPath(path, object);
var index = -1, length = path.length;
if (!length) {
length = 1;
object = undefined2;
}
while (++index < length) {
var value = object == null ? undefined2 : object[toKey(path[index])];
if (value === undefined2) {
index = length;
value = defaultValue;
}
object = isFunction(value) ? value.call(object) : value;
}
return object;
}
function set(object, path, value) {
return object == null ? object : baseSet(object, path, value);
}
function setWith(object, path, value, customizer) {
customizer = typeof customizer == "function" ? customizer : undefined2;
return object == null ? object : baseSet(object, path, value, customizer);
}
var toPairs = createToPairs(keys);
var toPairsIn = createToPairs(keysIn);
function transform2(object, iteratee2, accumulator) {
var isArr = isArray(object), isArrLike = isArr || isBuffer(object) || isTypedArray(object);
iteratee2 = getIteratee(iteratee2, 4);
if (accumulator == null) {
var Ctor = object && object.constructor;
if (isArrLike) {
accumulator = isArr ? new Ctor() : [];
} else if (isObject(object)) {
accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
} else {
accumulator = {};
}
}
(isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object2) {
return iteratee2(accumulator, value, index, object2);
});
return accumulator;
}
function unset(object, path) {
return object == null ? true : baseUnset(object, path);
}
function update2(object, path, updater) {
return object == null ? object : baseUpdate(object, path, castFunction(updater));
}
function updateWith(object, path, updater, customizer) {
customizer = typeof customizer == "function" ? customizer : undefined2;
return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);
}
function values(object) {
return object == null ? [] : baseValues(object, keys(object));
}
function valuesIn(object) {
return object == null ? [] : baseValues(object, keysIn(object));
}
function clamp(number, lower, upper) {
if (upper === undefined2) {
upper = lower;
lower = undefined2;
}
if (upper !== undefined2) {
upper = toNumber(upper);
upper = upper === upper ? upper : 0;
}
if (lower !== undefined2) {
lower = toNumber(lower);
lower = lower === lower ? lower : 0;
}
return baseClamp(toNumber(number), lower, upper);
}
function inRange(number, start, end) {
start = toFinite(start);
if (end === undefined2) {
end = start;
start = 0;
} else {
end = toFinite(end);
}
number = toNumber(number);
return baseInRange(number, start, end);
}
function random(lower, upper, floating) {
if (floating && typeof floating != "boolean" && isIterateeCall(lower, upper, floating)) {
upper = floating = undefined2;
}
if (floating === undefined2) {
if (typeof upper == "boolean") {
floating = upper;
upper = undefined2;
} else if (typeof lower == "boolean") {
floating = lower;
lower = undefined2;
}
}
if (lower === undefined2 && upper === undefined2) {
lower = 0;
upper = 1;
} else {
lower = toFinite(lower);
if (upper === undefined2) {
upper = lower;
lower = 0;
} else {
upper = toFinite(upper);
}
}
if (lower > upper) {
var temp = lower;
lower = upper;
upper = temp;
}
if (floating || lower % 1 || upper % 1) {
var rand = nativeRandom();
return nativeMin(lower + rand * (upper - lower + freeParseFloat("1e-" + ((rand + "").length - 1))), upper);
}
return baseRandom(lower, upper);
}
var camelCase = createCompounder(function(result2, word, index) {
word = word.toLowerCase();
return result2 + (index ? capitalize(word) : word);
});
function capitalize(string) {
return upperFirst(toString(string).toLowerCase());
}
function deburr(string) {
string = toString(string);
return string && string.replace(reLatin, deburrLetter).replace(reComboMark, "");
}
function endsWith(string, target, position) {
string = toString(string);
target = baseToString(target);
var length = string.length;
position = position === undefined2 ? length : baseClamp(toInteger(position), 0, length);
var end = position;
position -= target.length;
return position >= 0 && string.slice(position, end) == target;
}
function escape(string) {
string = toString(string);
return string && reHasUnescapedHtml.test(string) ? string.replace(reUnescapedHtml, escapeHtmlChar) : string;
}
function escapeRegExp(string) {
string = toString(string);
return string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar, "\\$&") : string;
}
var kebabCase = createCompounder(function(result2, word, index) {
return result2 + (index ? "-" : "") + word.toLowerCase();
});
var lowerCase = createCompounder(function(result2, word, index) {
return result2 + (index ? " " : "") + word.toLowerCase();
});
var lowerFirst = createCaseFirst("toLowerCase");
function pad(string, length, chars) {
string = toString(string);
length = toInteger(length);
var strLength = length ? stringSize(string) : 0;
if (!length || strLength >= length) {
return string;
}
var mid = (length - strLength) / 2;
return createPadding(nativeFloor(mid), chars) + string + createPadding(nativeCeil(mid), chars);
}
function padEnd(string, length, chars) {
string = toString(string);
length = toInteger(length);
var strLength = length ? stringSize(string) : 0;
return length && strLength < length ? string + createPadding(length - strLength, chars) : string;
}
function padStart(string, length, chars) {
string = toString(string);
length = toInteger(length);
var strLength = length ? stringSize(string) : 0;
return length && strLength < length ? createPadding(length - strLength, chars) + string : string;
}
function parseInt2(string, radix, guard) {
if (guard || radix == null) {
radix = 0;
} else if (radix) {
radix = +radix;
}
return nativeParseInt(toString(string).replace(reTrimStart, ""), radix || 0);
}
function repeat(string, n, guard) {
if (guard ? isIterateeCall(string, n, guard) : n === undefined2) {
n = 1;
} else {
n = toInteger(n);
}
return baseRepeat(toString(string), n);
}
function replace() {
var args = arguments, string = toString(args[0]);
return args.length < 3 ? string : string.replace(args[1], args[2]);
}
var snakeCase = createCompounder(function(result2, word, index) {
return result2 + (index ? "_" : "") + word.toLowerCase();
});
function split(string, separator, limit) {
if (limit && typeof limit != "number" && isIterateeCall(string, separator, limit)) {
separator = limit = undefined2;
}
limit = limit === undefined2 ? MAX_ARRAY_LENGTH : limit >>> 0;
if (!limit) {
return [];
}
string = toString(string);
if (string && (typeof separator == "string" || separator != null && !isRegExp(separator))) {
separator = baseToString(separator);
if (!separator && hasUnicode(string)) {
return castSlice(stringToArray(string), 0, limit);
}
}
return string.split(separator, limit);
}
var startCase = createCompounder(function(result2, word, index) {
return result2 + (index ? " " : "") + upperFirst(word);
});
function startsWith(string, target, position) {
string = toString(string);
position = position == null ? 0 : baseClamp(toInteger(position), 0, string.length);
target = baseToString(target);
return string.slice(position, position + target.length) == target;
}
function template(string, options, guard) {
var settings2 = lodash.templateSettings;
if (guard && isIterateeCall(string, options, guard)) {
options = undefined2;
}
string = toString(string);
options = assignInWith({}, options, settings2, customDefaultsAssignIn);
var imports = assignInWith({}, options.imports, settings2.imports, customDefaultsAssignIn), importsKeys = keys(imports), importsValues = baseValues(imports, importsKeys);
var isEscaping, isEvaluating, index = 0, interpolate = options.interpolate || reNoMatch, source = "__p += '";
var reDelimiters = RegExp2(
(options.escape || reNoMatch).source + "|" + interpolate.source + "|" + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + "|" + (options.evaluate || reNoMatch).source + "|$",
"g"
);
var sourceURL = "//# sourceURL=" + (hasOwnProperty.call(options, "sourceURL") ? (options.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++templateCounter + "]") + "\n";
string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
interpolateValue || (interpolateValue = esTemplateValue);
source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);
if (escapeValue) {
isEscaping = true;
source += "' +\n__e(" + escapeValue + ") +\n'";
}
if (evaluateValue) {
isEvaluating = true;
source += "';\n" + evaluateValue + ";\n__p += '";
}
if (interpolateValue) {
source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
}
index = offset + match.length;
return match;
});
source += "';\n";
var variable = hasOwnProperty.call(options, "variable") && options.variable;
if (!variable) {
source = "with (obj) {\n" + source + "\n}\n";
} else if (reForbiddenIdentifierChars.test(variable)) {
throw new Error2(INVALID_TEMPL_VAR_ERROR_TEXT);
}
source = (isEvaluating ? source.replace(reEmptyStringLeading, "") : source).replace(reEmptyStringMiddle, "$1").replace(reEmptyStringTrailing, "$1;");
source = "function(" + (variable || "obj") + ") {\n" + (variable ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (isEscaping ? ", __e = _.escape" : "") + (isEvaluating ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + source + "return __p\n}";
var result2 = attempt(function() {
return Function2(importsKeys, sourceURL + "return " + source).apply(undefined2, importsValues);
});
result2.source = source;
if (isError(result2)) {
throw result2;
}
return result2;
}
function toLower(value) {
return toString(value).toLowerCase();
}
function toUpper(value) {
return toString(value).toUpperCase();
}
function trim(string, chars, guard) {
string = toString(string);
if (string && (guard || chars === undefined2)) {
return baseTrim(string);
}
if (!string || !(chars = baseToString(chars))) {
return string;
}
var strSymbols = stringToArray(string), chrSymbols = stringToArray(chars), start = charsStartIndex(strSymbols, chrSymbols), end = charsEndIndex(strSymbols, chrSymbols) + 1;
return castSlice(strSymbols, start, end).join("");
}
function trimEnd(string, chars, guard) {
string = toString(string);
if (string && (guard || chars === undefined2)) {
return string.slice(0, trimmedEndIndex(string) + 1);
}
if (!string || !(chars = baseToString(chars))) {
return string;
}
var strSymbols = stringToArray(string), end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;
return castSlice(strSymbols, 0, end).join("");
}
function trimStart(string, chars, guard) {
string = toString(string);
if (string && (guard || chars === undefined2)) {
return string.replace(reTrimStart, "");
}
if (!string || !(chars = baseToString(chars))) {
return string;
}
var strSymbols = stringToArray(string), start = charsStartIndex(strSymbols, stringToArray(chars));
return castSlice(strSymbols, start).join("");
}
function truncate(string, options) {
var length = DEFAULT_TRUNC_LENGTH, omission = DEFAULT_TRUNC_OMISSION;
if (isObject(options)) {
var separator = "separator" in options ? options.separator : separator;
length = "length" in options ? toInteger(options.length) : length;
omission = "omission" in options ? baseToString(options.omission) : omission;
}
string = toString(string);
var strLength = string.length;
if (hasUnicode(string)) {
var strSymbols = stringToArray(string);
strLength = strSymbols.length;
}
if (length >= strLength) {
return string;
}
var end = length - stringSize(omission);
if (end < 1) {
return omission;
}
var result2 = strSymbols ? castSlice(strSymbols, 0, end).join("") : string.slice(0, end);
if (separator === undefined2) {
return result2 + omission;
}
if (strSymbols) {
end += result2.length - end;
}
if (isRegExp(separator)) {
if (string.slice(end).search(separator)) {
var match, substring = result2;
if (!separator.global) {
separator = RegExp2(separator.source, toString(reFlags.exec(separator)) + "g");
}
separator.lastIndex = 0;
while (match = separator.exec(substring)) {
var newEnd = match.index;
}
result2 = result2.slice(0, newEnd === undefined2 ? end : newEnd);
}
} else if (string.indexOf(baseToString(separator), end) != end) {
var index = result2.lastIndexOf(separator);
if (index > -1) {
result2 = result2.slice(0, index);
}
}
return result2 + omission;
}
function unescape(string) {
string = toString(string);
return string && reHasEscapedHtml.test(string) ? string.replace(reEscapedHtml, unescapeHtmlChar) : string;
}
var upperCase = createCompounder(function(result2, word, index) {
return result2 + (index ? " " : "") + word.toUpperCase();
});
var upperFirst = createCaseFirst("toUpperCase");
function words(string, pattern, guard) {
string = toString(string);
pattern = guard ? undefined2 : pattern;
if (pattern === undefined2) {
return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
}
return string.match(pattern) || [];
}
var attempt = baseRest(function(func, args) {
try {
return apply(func, undefined2, args);
} catch (e) {
return isError(e) ? e : new Error2(e);
}
});
var bindAll = flatRest(function(object, methodNames) {
arrayEach(methodNames, function(key) {
key = toKey(key);
baseAssignValue(object, key, bind(object[key], object));
});
return object;
});
function cond(pairs) {
var length = pairs == null ? 0 : pairs.length, toIteratee = getIteratee();
pairs = !length ? [] : arrayMap(pairs, function(pair) {
if (typeof pair[1] != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
return [toIteratee(pair[0]), pair[1]];
});
return baseRest(function(args) {
var index = -1;
while (++index < length) {
var pair = pairs[index];
if (apply(pair[0], this, args)) {
return apply(pair[1], this, args);
}
}
});
}
function conforms(source) {
return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
}
function constant(value) {
return function() {
return value;
};
}
function defaultTo(value, defaultValue) {
return value == null || value !== value ? defaultValue : value;
}
var flow = createFlow();
var flowRight = createFlow(true);
function identity(value) {
return value;
}
function iteratee(func) {
return baseIteratee(typeof func == "function" ? func : baseClone(func, CLONE_DEEP_FLAG));
}
function matches(source) {
return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
}
function matchesProperty(path, srcValue) {
return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
}
var method = baseRest(function(path, args) {
return function(object) {
return baseInvoke(object, path, args);
};
});
var methodOf = baseRest(function(object, args) {
return function(path) {
return baseInvoke(object, path, args);
};
});
function mixin(object, source, options) {
var props = keys(source), methodNames = baseFunctions(source, props);
if (options == null && !(isObject(source) && (methodNames.length || !props.length))) {
options = source;
source = object;
object = this;
methodNames = baseFunctions(source, keys(source));
}
var chain2 = !(isObject(options) && "chain" in options) || !!options.chain, isFunc = isFunction(object);
arrayEach(methodNames, function(methodName) {
var func = source[methodName];
object[methodName] = func;
if (isFunc) {
object.prototype[methodName] = function() {
var chainAll = this.__chain__;
if (chain2 || chainAll) {
var result2 = object(this.__wrapped__), actions = result2.__actions__ = copyArray(this.__actions__);
actions.push({ "func": func, "args": arguments, "thisArg": object });
result2.__chain__ = chainAll;
return result2;
}
return func.apply(object, arrayPush([this.value()], arguments));
};
}
});
return object;
}
function noConflict() {
if (root._ === this) {
root._ = oldDash;
}
return this;
}
function noop2() {
}
function nthArg(n) {
n = toInteger(n);
return baseRest(function(args) {
return baseNth(args, n);
});
}
var over = createOver(arrayMap);
var overEvery = createOver(arrayEvery);
var overSome = createOver(arraySome);
function property(path) {
return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
}
function propertyOf(object) {
return function(path) {
return object == null ? undefined2 : baseGet(object, path);
};
}
var range3 = createRange();
var rangeRight = createRange(true);
function stubArray() {
return [];
}
function stubFalse() {
return false;
}
function stubObject() {
return {};
}
function stubString() {
return "";
}
function stubTrue() {
return true;
}
function times(n, iteratee2) {
n = toInteger(n);
if (n < 1 || n > MAX_SAFE_INTEGER) {
return [];
}
var index = MAX_ARRAY_LENGTH, length = nativeMin(n, MAX_ARRAY_LENGTH);
iteratee2 = getIteratee(iteratee2);
n -= MAX_ARRAY_LENGTH;
var result2 = baseTimes(length, iteratee2);
while (++index < n) {
iteratee2(index);
}
return result2;
}
function toPath(value) {
if (isArray(value)) {
return arrayMap(value, toKey);
}
return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));
}
function uniqueId(prefix) {
var id = ++idCounter;
return toString(prefix) + id;
}
var add = createMathOperation(function(augend, addend) {
return augend + addend;
}, 0);
var ceil = createRound("ceil");
var divide = createMathOperation(function(dividend, divisor) {
return dividend / divisor;
}, 1);
var floor = createRound("floor");
function max(array) {
return array && array.length ? baseExtremum(array, identity, baseGt) : undefined2;
}
function maxBy(array, iteratee2) {
return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseGt) : undefined2;
}
function mean(array) {
return baseMean(array, identity);
}
function meanBy(array, iteratee2) {
return baseMean(array, getIteratee(iteratee2, 2));
}
function min(array) {
return array && array.length ? baseExtremum(array, identity, baseLt) : undefined2;
}
function minBy(array, iteratee2) {
return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseLt) : undefined2;
}
var multiply = createMathOperation(function(multiplier, multiplicand) {
return multiplier * multiplicand;
}, 1);
var round = createRound("round");
var subtract = createMathOperation(function(minuend, subtrahend) {
return minuend - subtrahend;
}, 0);
function sum(array) {
return array && array.length ? baseSum(array, identity) : 0;
}
function sumBy(array, iteratee2) {
return array && array.length ? baseSum(array, getIteratee(iteratee2, 2)) : 0;
}
lodash.after = after;
lodash.ary = ary;
lodash.assign = assign2;
lodash.assignIn = assignIn;
lodash.assignInWith = assignInWith;
lodash.assignWith = assignWith;
lodash.at = at;
lodash.before = before;
lodash.bind = bind;
lodash.bindAll = bindAll;
lodash.bindKey = bindKey;
lodash.castArray = castArray;
lodash.chain = chain;
lodash.chunk = chunk;
lodash.compact = compact;
lodash.concat = concat;
lodash.cond = cond;
lodash.conforms = conforms;
lodash.constant = constant;
lodash.countBy = countBy;
lodash.create = create2;
lodash.curry = curry;
lodash.curryRight = curryRight;
lodash.debounce = debounce;
lodash.defaults = defaults;
lodash.defaultsDeep = defaultsDeep;
lodash.defer = defer;
lodash.delay = delay;
lodash.difference = difference2;
lodash.differenceBy = differenceBy;
lodash.differenceWith = differenceWith;
lodash.drop = drop;
lodash.dropRight = dropRight;
lodash.dropRightWhile = dropRightWhile;
lodash.dropWhile = dropWhile;
lodash.fill = fill;
lodash.filter = filter;
lodash.flatMap = flatMap;
lodash.flatMapDeep = flatMapDeep;
lodash.flatMapDepth = flatMapDepth;
lodash.flatten = flatten;
lodash.flattenDeep = flattenDeep;
lodash.flattenDepth = flattenDepth;
lodash.flip = flip;
lodash.flow = flow;
lodash.flowRight = flowRight;
lodash.fromPairs = fromPairs;
lodash.functions = functions;
lodash.functionsIn = functionsIn;
lodash.groupBy = groupBy;
lodash.initial = initial;
lodash.intersection = intersection;
lodash.intersectionBy = intersectionBy;
lodash.intersectionWith = intersectionWith;
lodash.invert = invert;
lodash.invertBy = invertBy;
lodash.invokeMap = invokeMap;
lodash.iteratee = iteratee;
lodash.keyBy = keyBy;
lodash.keys = keys;
lodash.keysIn = keysIn;
lodash.map = map;
lodash.mapKeys = mapKeys;
lodash.mapValues = mapValues;
lodash.matches = matches;
lodash.matchesProperty = matchesProperty;
lodash.memoize = memoize;
lodash.merge = merge;
lodash.mergeWith = mergeWith;
lodash.method = method;
lodash.methodOf = methodOf;
lodash.mixin = mixin;
lodash.negate = negate;
lodash.nthArg = nthArg;
lodash.omit = omit;
lodash.omitBy = omitBy;
lodash.once = once;
lodash.orderBy = orderBy;
lodash.over = over;
lodash.overArgs = overArgs;
lodash.overEvery = overEvery;
lodash.overSome = overSome;
lodash.partial = partial;
lodash.partialRight = partialRight;
lodash.partition = partition3;
lodash.pick = pick;
lodash.pickBy = pickBy;
lodash.property = property;
lodash.propertyOf = propertyOf;
lodash.pull = pull;
lodash.pullAll = pullAll;
lodash.pullAllBy = pullAllBy;
lodash.pullAllWith = pullAllWith;
lodash.pullAt = pullAt;
lodash.range = range3;
lodash.rangeRight = rangeRight;
lodash.rearg = rearg;
lodash.reject = reject;
lodash.remove = remove;
lodash.rest = rest;
lodash.reverse = reverse;
lodash.sampleSize = sampleSize;
lodash.set = set;
lodash.setWith = setWith;
lodash.shuffle = shuffle;
lodash.slice = slice;
lodash.sortBy = sortBy;
lodash.sortedUniq = sortedUniq;
lodash.sortedUniqBy = sortedUniqBy;
lodash.split = split;
lodash.spread = spread;
lodash.tail = tail;
lodash.take = take;
lodash.takeRight = takeRight;
lodash.takeRightWhile = takeRightWhile;
lodash.takeWhile = takeWhile;
lodash.tap = tap;
lodash.throttle = throttle;
lodash.thru = thru;
lodash.toArray = toArray;
lodash.toPairs = toPairs;
lodash.toPairsIn = toPairsIn;
lodash.toPath = toPath;
lodash.toPlainObject = toPlainObject;
lodash.transform = transform2;
lodash.unary = unary;
lodash.union = union;
lodash.unionBy = unionBy;
lodash.unionWith = unionWith;
lodash.uniq = uniq;
lodash.uniqBy = uniqBy;
lodash.uniqWith = uniqWith;
lodash.unset = unset;
lodash.unzip = unzip;
lodash.unzipWith = unzipWith;
lodash.update = update2;
lodash.updateWith = updateWith;
lodash.values = values;
lodash.valuesIn = valuesIn;
lodash.without = without;
lodash.words = words;
lodash.wrap = wrap;
lodash.xor = xor;
lodash.xorBy = xorBy;
lodash.xorWith = xorWith;
lodash.zip = zip;
lodash.zipObject = zipObject;
lodash.zipObjectDeep = zipObjectDeep;
lodash.zipWith = zipWith;
lodash.entries = toPairs;
lodash.entriesIn = toPairsIn;
lodash.extend = assignIn;
lodash.extendWith = assignInWith;
mixin(lodash, lodash);
lodash.add = add;
lodash.attempt = attempt;
lodash.camelCase = camelCase;
lodash.capitalize = capitalize;
lodash.ceil = ceil;
lodash.clamp = clamp;
lodash.clone = clone;
lodash.cloneDeep = cloneDeep;
lodash.cloneDeepWith = cloneDeepWith;
lodash.cloneWith = cloneWith;
lodash.conformsTo = conformsTo;
lodash.deburr = deburr;
lodash.defaultTo = defaultTo;
lodash.divide = divide;
lodash.endsWith = endsWith;
lodash.eq = eq;
lodash.escape = escape;
lodash.escapeRegExp = escapeRegExp;
lodash.every = every;
lodash.find = find;
lodash.findIndex = findIndex;
lodash.findKey = findKey;
lodash.findLast = findLast;
lodash.findLastIndex = findLastIndex;
lodash.findLastKey = findLastKey;
lodash.floor = floor;
lodash.forEach = forEach;
lodash.forEachRight = forEachRight;
lodash.forIn = forIn;
lodash.forInRight = forInRight;
lodash.forOwn = forOwn;
lodash.forOwnRight = forOwnRight;
lodash.get = get;
lodash.gt = gt;
lodash.gte = gte;
lodash.has = has;
lodash.hasIn = hasIn;
lodash.head = head;
lodash.identity = identity;
lodash.includes = includes;
lodash.indexOf = indexOf;
lodash.inRange = inRange;
lodash.invoke = invoke;
lodash.isArguments = isArguments;
lodash.isArray = isArray;
lodash.isArrayBuffer = isArrayBuffer;
lodash.isArrayLike = isArrayLike;
lodash.isArrayLikeObject = isArrayLikeObject;
lodash.isBoolean = isBoolean;
lodash.isBuffer = isBuffer;
lodash.isDate = isDate;
lodash.isElement = isElement;
lodash.isEmpty = isEmpty;
lodash.isEqual = isEqual;
lodash.isEqualWith = isEqualWith;
lodash.isError = isError;
lodash.isFinite = isFinite;
lodash.isFunction = isFunction;
lodash.isInteger = isInteger;
lodash.isLength = isLength;
lodash.isMap = isMap;
lodash.isMatch = isMatch;
lodash.isMatchWith = isMatchWith;
lodash.isNaN = isNaN2;
lodash.isNative = isNative;
lodash.isNil = isNil;
lodash.isNull = isNull;
lodash.isNumber = isNumber;
lodash.isObject = isObject;
lodash.isObjectLike = isObjectLike;
lodash.isPlainObject = isPlainObject;
lodash.isRegExp = isRegExp;
lodash.isSafeInteger = isSafeInteger;
lodash.isSet = isSet;
lodash.isString = isString;
lodash.isSymbol = isSymbol;
lodash.isTypedArray = isTypedArray;
lodash.isUndefined = isUndefined;
lodash.isWeakMap = isWeakMap;
lodash.isWeakSet = isWeakSet;
lodash.join = join;
lodash.kebabCase = kebabCase;
lodash.last = last3;
lodash.lastIndexOf = lastIndexOf;
lodash.lowerCase = lowerCase;
lodash.lowerFirst = lowerFirst;
lodash.lt = lt;
lodash.lte = lte;
lodash.max = max;
lodash.maxBy = maxBy;
lodash.mean = mean;
lodash.meanBy = meanBy;
lodash.min = min;
lodash.minBy = minBy;
lodash.stubArray = stubArray;
lodash.stubFalse = stubFalse;
lodash.stubObject = stubObject;
lodash.stubString = stubString;
lodash.stubTrue = stubTrue;
lodash.multiply = multiply;
lodash.nth = nth;
lodash.noConflict = noConflict;
lodash.noop = noop2;
lodash.now = now;
lodash.pad = pad;
lodash.padEnd = padEnd;
lodash.padStart = padStart;
lodash.parseInt = parseInt2;
lodash.random = random;
lodash.reduce = reduce;
lodash.reduceRight = reduceRight;
lodash.repeat = repeat;
lodash.replace = replace;
lodash.result = result;
lodash.round = round;
lodash.runInContext = runInContext2;
lodash.sample = sample;
lodash.size = size;
lodash.snakeCase = snakeCase;
lodash.some = some;
lodash.sortedIndex = sortedIndex;
lodash.sortedIndexBy = sortedIndexBy;
lodash.sortedIndexOf = sortedIndexOf;
lodash.sortedLastIndex = sortedLastIndex;
lodash.sortedLastIndexBy = sortedLastIndexBy;
lodash.sortedLastIndexOf = sortedLastIndexOf;
lodash.startCase = startCase;
lodash.startsWith = startsWith;
lodash.subtract = subtract;
lodash.sum = sum;
lodash.sumBy = sumBy;
lodash.template = template;
lodash.times = times;
lodash.toFinite = toFinite;
lodash.toInteger = toInteger;
lodash.toLength = toLength;
lodash.toLower = toLower;
lodash.toNumber = toNumber;
lodash.toSafeInteger = toSafeInteger;
lodash.toString = toString;
lodash.toUpper = toUpper;
lodash.trim = trim;
lodash.trimEnd = trimEnd;
lodash.trimStart = trimStart;
lodash.truncate = truncate;
lodash.unescape = unescape;
lodash.uniqueId = uniqueId;
lodash.upperCase = upperCase;
lodash.upperFirst = upperFirst;
lodash.each = forEach;
lodash.eachRight = forEachRight;
lodash.first = head;
mixin(lodash, function() {
var source = {};
baseForOwn(lodash, function(func, methodName) {
if (!hasOwnProperty.call(lodash.prototype, methodName)) {
source[methodName] = func;
}
});
return source;
}(), { "chain": false });
lodash.VERSION = VERSION;
arrayEach(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(methodName) {
lodash[methodName].placeholder = lodash;
});
arrayEach(["drop", "take"], function(methodName, index) {
LazyWrapper.prototype[methodName] = function(n) {
n = n === undefined2 ? 1 : nativeMax(toInteger(n), 0);
var result2 = this.__filtered__ && !index ? new LazyWrapper(this) : this.clone();
if (result2.__filtered__) {
result2.__takeCount__ = nativeMin(n, result2.__takeCount__);
} else {
result2.__views__.push({
"size": nativeMin(n, MAX_ARRAY_LENGTH),
"type": methodName + (result2.__dir__ < 0 ? "Right" : "")
});
}
return result2;
};
LazyWrapper.prototype[methodName + "Right"] = function(n) {
return this.reverse()[methodName](n).reverse();
};
});
arrayEach(["filter", "map", "takeWhile"], function(methodName, index) {
var type = index + 1, isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;
LazyWrapper.prototype[methodName] = function(iteratee2) {
var result2 = this.clone();
result2.__iteratees__.push({
"iteratee": getIteratee(iteratee2, 3),
"type": type
});
result2.__filtered__ = result2.__filtered__ || isFilter;
return result2;
};
});
arrayEach(["head", "last"], function(methodName, index) {
var takeName = "take" + (index ? "Right" : "");
LazyWrapper.prototype[methodName] = function() {
return this[takeName](1).value()[0];
};
});
arrayEach(["initial", "tail"], function(methodName, index) {
var dropName = "drop" + (index ? "" : "Right");
LazyWrapper.prototype[methodName] = function() {
return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);
};
});
LazyWrapper.prototype.compact = function() {
return this.filter(identity);
};
LazyWrapper.prototype.find = function(predicate) {
return this.filter(predicate).head();
};
LazyWrapper.prototype.findLast = function(predicate) {
return this.reverse().find(predicate);
};
LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {
if (typeof path == "function") {
return new LazyWrapper(this);
}
return this.map(function(value) {
return baseInvoke(value, path, args);
});
});
LazyWrapper.prototype.reject = function(predicate) {
return this.filter(negate(getIteratee(predicate)));
};
LazyWrapper.prototype.slice = function(start, end) {
start = toInteger(start);
var result2 = this;
if (result2.__filtered__ && (start > 0 || end < 0)) {
return new LazyWrapper(result2);
}
if (start < 0) {
result2 = result2.takeRight(-start);
} else if (start) {
result2 = result2.drop(start);
}
if (end !== undefined2) {
end = toInteger(end);
result2 = end < 0 ? result2.dropRight(-end) : result2.take(end - start);
}
return result2;
};
LazyWrapper.prototype.takeRightWhile = function(predicate) {
return this.reverse().takeWhile(predicate).reverse();
};
LazyWrapper.prototype.toArray = function() {
return this.take(MAX_ARRAY_LENGTH);
};
baseForOwn(LazyWrapper.prototype, function(func, methodName) {
var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), isTaker = /^(?:head|last)$/.test(methodName), lodashFunc = lodash[isTaker ? "take" + (methodName == "last" ? "Right" : "") : methodName], retUnwrapped = isTaker || /^find/.test(methodName);
if (!lodashFunc) {
return;
}
lodash.prototype[methodName] = function() {
var value = this.__wrapped__, args = isTaker ? [1] : arguments, isLazy = value instanceof LazyWrapper, iteratee2 = args[0], useLazy = isLazy || isArray(value);
var interceptor = function(value2) {
var result3 = lodashFunc.apply(lodash, arrayPush([value2], args));
return isTaker && chainAll ? result3[0] : result3;
};
if (useLazy && checkIteratee && typeof iteratee2 == "function" && iteratee2.length != 1) {
isLazy = useLazy = false;
}
var chainAll = this.__chain__, isHybrid = !!this.__actions__.length, isUnwrapped = retUnwrapped && !chainAll, onlyLazy = isLazy && !isHybrid;
if (!retUnwrapped && useLazy) {
value = onlyLazy ? value : new LazyWrapper(this);
var result2 = func.apply(value, args);
result2.__actions__.push({ "func": thru, "args": [interceptor], "thisArg": undefined2 });
return new LodashWrapper(result2, chainAll);
}
if (isUnwrapped && onlyLazy) {
return func.apply(this, args);
}
result2 = this.thru(interceptor);
return isUnwrapped ? isTaker ? result2.value()[0] : result2.value() : result2;
};
});
arrayEach(["pop", "push", "shift", "sort", "splice", "unshift"], function(methodName) {
var func = arrayProto[methodName], chainName = /^(?:push|sort|unshift)$/.test(methodName) ? "tap" : "thru", retUnwrapped = /^(?:pop|shift)$/.test(methodName);
lodash.prototype[methodName] = function() {
var args = arguments;
if (retUnwrapped && !this.__chain__) {
var value = this.value();
return func.apply(isArray(value) ? value : [], args);
}
return this[chainName](function(value2) {
return func.apply(isArray(value2) ? value2 : [], args);
});
};
});
baseForOwn(LazyWrapper.prototype, function(func, methodName) {
var lodashFunc = lodash[methodName];
if (lodashFunc) {
var key = lodashFunc.name + "";
if (!hasOwnProperty.call(realNames, key)) {
realNames[key] = [];
}
realNames[key].push({ "name": methodName, "func": lodashFunc });
}
});
realNames[createHybrid(undefined2, WRAP_BIND_KEY_FLAG).name] = [{
"name": "wrapper",
"func": undefined2
}];
LazyWrapper.prototype.clone = lazyClone;
LazyWrapper.prototype.reverse = lazyReverse;
LazyWrapper.prototype.value = lazyValue;
lodash.prototype.at = wrapperAt;
lodash.prototype.chain = wrapperChain;
lodash.prototype.commit = wrapperCommit;
lodash.prototype.next = wrapperNext;
lodash.prototype.plant = wrapperPlant;
lodash.prototype.reverse = wrapperReverse;
lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
lodash.prototype.first = lodash.prototype.head;
if (symIterator) {
lodash.prototype[symIterator] = wrapperToIterator;
}
return lodash;
};
var _ = runInContext();
if (typeof define == "function" && typeof define.amd == "object" && define.amd) {
root._ = _;
define(function() {
return _;
});
} else if (freeModule) {
(freeModule.exports = _)._ = _;
freeExports._ = _;
} else {
root._ = _;
}
}).call(exports);
}
});
// node_modules/chroma-js/chroma.js
var require_chroma = __commonJS({
"node_modules/chroma-js/chroma.js"(exports, module2) {
(function(global2, factory) {
typeof exports === "object" && typeof module2 !== "undefined" ? module2.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.chroma = factory());
})(exports, function() {
"use strict";
var limit$2 = function(x, min2, max2) {
if (min2 === void 0)
min2 = 0;
if (max2 === void 0)
max2 = 1;
return x < min2 ? min2 : x > max2 ? max2 : x;
};
var limit$1 = limit$2;
var clip_rgb$3 = function(rgb2) {
rgb2._clipped = false;
rgb2._unclipped = rgb2.slice(0);
for (var i2 = 0; i2 <= 3; i2++) {
if (i2 < 3) {
if (rgb2[i2] < 0 || rgb2[i2] > 255) {
rgb2._clipped = true;
}
rgb2[i2] = limit$1(rgb2[i2], 0, 255);
} else if (i2 === 3) {
rgb2[i2] = limit$1(rgb2[i2], 0, 1);
}
}
return rgb2;
};
var classToType = {};
for (var i$1 = 0, list$1 = ["Boolean", "Number", "String", "Function", "Array", "Date", "RegExp", "Undefined", "Null"]; i$1 < list$1.length; i$1 += 1) {
var name = list$1[i$1];
classToType["[object " + name + "]"] = name.toLowerCase();
}
var type$p = function(obj) {
return classToType[Object.prototype.toString.call(obj)] || "object";
};
var type$o = type$p;
var unpack$B = function(args, keyOrder) {
if (keyOrder === void 0)
keyOrder = null;
if (args.length >= 3) {
return Array.prototype.slice.call(args);
}
if (type$o(args[0]) == "object" && keyOrder) {
return keyOrder.split("").filter(function(k) {
return args[0][k] !== void 0;
}).map(function(k) {
return args[0][k];
});
}
return args[0];
};
var type$n = type$p;
var last$4 = function(args) {
if (args.length < 2) {
return null;
}
var l = args.length - 1;
if (type$n(args[l]) == "string") {
return args[l].toLowerCase();
}
return null;
};
var PI$2 = Math.PI;
var utils = {
clip_rgb: clip_rgb$3,
limit: limit$2,
type: type$p,
unpack: unpack$B,
last: last$4,
PI: PI$2,
TWOPI: PI$2 * 2,
PITHIRD: PI$2 / 3,
DEG2RAD: PI$2 / 180,
RAD2DEG: 180 / PI$2
};
var input$h = {
format: {},
autodetect: []
};
var last$3 = utils.last;
var clip_rgb$2 = utils.clip_rgb;
var type$m = utils.type;
var _input = input$h;
var Color$D = function Color2() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
var me = this;
if (type$m(args[0]) === "object" && args[0].constructor && args[0].constructor === this.constructor) {
return args[0];
}
var mode = last$3(args);
var autodetect = false;
if (!mode) {
autodetect = true;
if (!_input.sorted) {
_input.autodetect = _input.autodetect.sort(function(a, b) {
return b.p - a.p;
});
_input.sorted = true;
}
for (var i2 = 0, list2 = _input.autodetect; i2 < list2.length; i2 += 1) {
var chk = list2[i2];
mode = chk.test.apply(chk, args);
if (mode) {
break;
}
}
}
if (_input.format[mode]) {
var rgb2 = _input.format[mode].apply(null, autodetect ? args : args.slice(0, -1));
me._rgb = clip_rgb$2(rgb2);
} else {
throw new Error("unknown format: " + args);
}
if (me._rgb.length === 3) {
me._rgb.push(1);
}
};
Color$D.prototype.toString = function toString() {
if (type$m(this.hex) == "function") {
return this.hex();
}
return "[" + this._rgb.join(",") + "]";
};
var Color_1 = Color$D;
var chroma$k = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
return new (Function.prototype.bind.apply(chroma$k.Color, [null].concat(args)))();
};
chroma$k.Color = Color_1;
chroma$k.version = "2.4.2";
var chroma_1 = chroma$k;
var unpack$A = utils.unpack;
var max$2 = Math.max;
var rgb2cmyk$1 = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
var ref = unpack$A(args, "rgb");
var r = ref[0];
var g = ref[1];
var b = ref[2];
r = r / 255;
g = g / 255;
b = b / 255;
var k = 1 - max$2(r, max$2(g, b));
var f = k < 1 ? 1 / (1 - k) : 0;
var c = (1 - r - k) * f;
var m = (1 - g - k) * f;
var y = (1 - b - k) * f;
return [c, m, y, k];
};
var rgb2cmyk_1 = rgb2cmyk$1;
var unpack$z = utils.unpack;
var cmyk2rgb = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
args = unpack$z(args, "cmyk");
var c = args[0];
var m = args[1];
var y = args[2];
var k = args[3];
var alpha = args.length > 4 ? args[4] : 1;
if (k === 1) {
return [0, 0, 0, alpha];
}
return [
c >= 1 ? 0 : 255 * (1 - c) * (1 - k),
// r
m >= 1 ? 0 : 255 * (1 - m) * (1 - k),
// g
y >= 1 ? 0 : 255 * (1 - y) * (1 - k),
// b
alpha
];
};
var cmyk2rgb_1 = cmyk2rgb;
var chroma$j = chroma_1;
var Color$C = Color_1;
var input$g = input$h;
var unpack$y = utils.unpack;
var type$l = utils.type;
var rgb2cmyk = rgb2cmyk_1;
Color$C.prototype.cmyk = function() {
return rgb2cmyk(this._rgb);
};
chroma$j.cmyk = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
return new (Function.prototype.bind.apply(Color$C, [null].concat(args, ["cmyk"])))();
};
input$g.format.cmyk = cmyk2rgb_1;
input$g.autodetect.push({
p: 2,
test: function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
args = unpack$y(args, "cmyk");
if (type$l(args) === "array" && args.length === 4) {
return "cmyk";
}
}
});
var unpack$x = utils.unpack;
var last$2 = utils.last;
var rnd = function(a) {
return Math.round(a * 100) / 100;
};
var hsl2css$1 = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
var hsla = unpack$x(args, "hsla");
var mode = last$2(args) || "lsa";
hsla[0] = rnd(hsla[0] || 0);
hsla[1] = rnd(hsla[1] * 100) + "%";
hsla[2] = rnd(hsla[2] * 100) + "%";
if (mode === "hsla" || hsla.length > 3 && hsla[3] < 1) {
hsla[3] = hsla.length > 3 ? hsla[3] : 1;
mode = "hsla";
} else {
hsla.length = 3;
}
return mode + "(" + hsla.join(",") + ")";
};
var hsl2css_1 = hsl2css$1;
var unpack$w = utils.unpack;
var rgb2hsl$3 = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
args = unpack$w(args, "rgba");
var r = args[0];
var g = args[1];
var b = args[2];
r /= 255;
g /= 255;
b /= 255;
var min2 = Math.min(r, g, b);
var max2 = Math.max(r, g, b);
var l = (max2 + min2) / 2;
var s, h;
if (max2 === min2) {
s = 0;
h = Number.NaN;
} else {
s = l < 0.5 ? (max2 - min2) / (max2 + min2) : (max2 - min2) / (2 - max2 - min2);
}
if (r == max2) {
h = (g - b) / (max2 - min2);
} else if (g == max2) {
h = 2 + (b - r) / (max2 - min2);
} else if (b == max2) {
h = 4 + (r - g) / (max2 - min2);
}
h *= 60;
if (h < 0) {
h += 360;
}
if (args.length > 3 && args[3] !== void 0) {
return [h, s, l, args[3]];
}
return [h, s, l];
};
var rgb2hsl_1 = rgb2hsl$3;
var unpack$v = utils.unpack;
var last$1 = utils.last;
var hsl2css = hsl2css_1;
var rgb2hsl$2 = rgb2hsl_1;
var round$6 = Math.round;
var rgb2css$1 = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
var rgba = unpack$v(args, "rgba");
var mode = last$1(args) || "rgb";
if (mode.substr(0, 3) == "hsl") {
return hsl2css(rgb2hsl$2(rgba), mode);
}
rgba[0] = round$6(rgba[0]);
rgba[1] = round$6(rgba[1]);
rgba[2] = round$6(rgba[2]);
if (mode === "rgba" || rgba.length > 3 && rgba[3] < 1) {
rgba[3] = rgba.length > 3 ? rgba[3] : 1;
mode = "rgba";
}
return mode + "(" + rgba.slice(0, mode === "rgb" ? 3 : 4).join(",") + ")";
};
var rgb2css_1 = rgb2css$1;
var unpack$u = utils.unpack;
var round$5 = Math.round;
var hsl2rgb$1 = function() {
var assign2;
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
args = unpack$u(args, "hsl");
var h = args[0];
var s = args[1];
var l = args[2];
var r, g, b;
if (s === 0) {
r = g = b = l * 255;
} else {
var t3 = [0, 0, 0];
var c = [0, 0, 0];
var t2 = l < 0.5 ? l * (1 + s) : l + s - l * s;
var t1 = 2 * l - t2;
var h_ = h / 360;
t3[0] = h_ + 1 / 3;
t3[1] = h_;
t3[2] = h_ - 1 / 3;
for (var i2 = 0; i2 < 3; i2++) {
if (t3[i2] < 0) {
t3[i2] += 1;
}
if (t3[i2] > 1) {
t3[i2] -= 1;
}
if (6 * t3[i2] < 1) {
c[i2] = t1 + (t2 - t1) * 6 * t3[i2];
} else if (2 * t3[i2] < 1) {
c[i2] = t2;
} else if (3 * t3[i2] < 2) {
c[i2] = t1 + (t2 - t1) * (2 / 3 - t3[i2]) * 6;
} else {
c[i2] = t1;
}
}
assign2 = [round$5(c[0] * 255), round$5(c[1] * 255), round$5(c[2] * 255)], r = assign2[0], g = assign2[1], b = assign2[2];
}
if (args.length > 3) {
return [r, g, b, args[3]];
}
return [r, g, b, 1];
};
var hsl2rgb_1 = hsl2rgb$1;
var hsl2rgb = hsl2rgb_1;
var input$f = input$h;
var RE_RGB = /^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/;
var RE_RGBA = /^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/;
var RE_RGB_PCT = /^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/;
var RE_RGBA_PCT = /^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/;
var RE_HSL = /^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/;
var RE_HSLA = /^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/;
var round$4 = Math.round;
var css2rgb$1 = function(css) {
css = css.toLowerCase().trim();
var m;
if (input$f.format.named) {
try {
return input$f.format.named(css);
} catch (e) {
}
}
if (m = css.match(RE_RGB)) {
var rgb2 = m.slice(1, 4);
for (var i2 = 0; i2 < 3; i2++) {
rgb2[i2] = +rgb2[i2];
}
rgb2[3] = 1;
return rgb2;
}
if (m = css.match(RE_RGBA)) {
var rgb$1 = m.slice(1, 5);
for (var i$12 = 0; i$12 < 4; i$12++) {
rgb$1[i$12] = +rgb$1[i$12];
}
return rgb$1;
}
if (m = css.match(RE_RGB_PCT)) {
var rgb$2 = m.slice(1, 4);
for (var i$2 = 0; i$2 < 3; i$2++) {
rgb$2[i$2] = round$4(rgb$2[i$2] * 2.55);
}
rgb$2[3] = 1;
return rgb$2;
}
if (m = css.match(RE_RGBA_PCT)) {
var rgb$3 = m.slice(1, 5);
for (var i$3 = 0; i$3 < 3; i$3++) {
rgb$3[i$3] = round$4(rgb$3[i$3] * 2.55);
}
rgb$3[3] = +rgb$3[3];
return rgb$3;
}
if (m = css.match(RE_HSL)) {
var hsl2 = m.slice(1, 4);
hsl2[1] *= 0.01;
hsl2[2] *= 0.01;
var rgb$4 = hsl2rgb(hsl2);
rgb$4[3] = 1;
return rgb$4;
}
if (m = css.match(RE_HSLA)) {
var hsl$1 = m.slice(1, 4);
hsl$1[1] *= 0.01;
hsl$1[2] *= 0.01;
var rgb$5 = hsl2rgb(hsl$1);
rgb$5[3] = +m[4];
return rgb$5;
}
};
css2rgb$1.test = function(s) {
return RE_RGB.test(s) || RE_RGBA.test(s) || RE_RGB_PCT.test(s) || RE_RGBA_PCT.test(s) || RE_HSL.test(s) || RE_HSLA.test(s);
};
var css2rgb_1 = css2rgb$1;
var chroma$i = chroma_1;
var Color$B = Color_1;
var input$e = input$h;
var type$k = utils.type;
var rgb2css = rgb2css_1;
var css2rgb = css2rgb_1;
Color$B.prototype.css = function(mode) {
return rgb2css(this._rgb, mode);
};
chroma$i.css = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
return new (Function.prototype.bind.apply(Color$B, [null].concat(args, ["css"])))();
};
input$e.format.css = css2rgb;
input$e.autodetect.push({
p: 5,
test: function(h) {
var rest = [], len = arguments.length - 1;
while (len-- > 0)
rest[len] = arguments[len + 1];
if (!rest.length && type$k(h) === "string" && css2rgb.test(h)) {
return "css";
}
}
});
var Color$A = Color_1;
var chroma$h = chroma_1;
var input$d = input$h;
var unpack$t = utils.unpack;
input$d.format.gl = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
var rgb2 = unpack$t(args, "rgba");
rgb2[0] *= 255;
rgb2[1] *= 255;
rgb2[2] *= 255;
return rgb2;
};
chroma$h.gl = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
return new (Function.prototype.bind.apply(Color$A, [null].concat(args, ["gl"])))();
};
Color$A.prototype.gl = function() {
var rgb2 = this._rgb;
return [rgb2[0] / 255, rgb2[1] / 255, rgb2[2] / 255, rgb2[3]];
};
var unpack$s = utils.unpack;
var rgb2hcg$1 = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
var ref = unpack$s(args, "rgb");
var r = ref[0];
var g = ref[1];
var b = ref[2];
var min2 = Math.min(r, g, b);
var max2 = Math.max(r, g, b);
var delta = max2 - min2;
var c = delta * 100 / 255;
var _g = min2 / (255 - delta) * 100;
var h;
if (delta === 0) {
h = Number.NaN;
} else {
if (r === max2) {
h = (g - b) / delta;
}
if (g === max2) {
h = 2 + (b - r) / delta;
}
if (b === max2) {
h = 4 + (r - g) / delta;
}
h *= 60;
if (h < 0) {
h += 360;
}
}
return [h, c, _g];
};
var rgb2hcg_1 = rgb2hcg$1;
var unpack$r = utils.unpack;
var floor$3 = Math.floor;
var hcg2rgb = function() {
var assign2, assign$1, assign$2, assign$3, assign$4, assign$5;
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
args = unpack$r(args, "hcg");
var h = args[0];
var c = args[1];
var _g = args[2];
var r, g, b;
_g = _g * 255;
var _c = c * 255;
if (c === 0) {
r = g = b = _g;
} else {
if (h === 360) {
h = 0;
}
if (h > 360) {
h -= 360;
}
if (h < 0) {
h += 360;
}
h /= 60;
var i2 = floor$3(h);
var f = h - i2;
var p = _g * (1 - c);
var q = p + _c * (1 - f);
var t = p + _c * f;
var v = p + _c;
switch (i2) {
case 0:
assign2 = [v, t, p], r = assign2[0], g = assign2[1], b = assign2[2];
break;
case 1:
assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2];
break;
case 2:
assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2];
break;
case 3:
assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2];
break;
case 4:
assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2];
break;
case 5:
assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2];
break;
}
}
return [r, g, b, args.length > 3 ? args[3] : 1];
};
var hcg2rgb_1 = hcg2rgb;
var unpack$q = utils.unpack;
var type$j = utils.type;
var chroma$g = chroma_1;
var Color$z = Color_1;
var input$c = input$h;
var rgb2hcg = rgb2hcg_1;
Color$z.prototype.hcg = function() {
return rgb2hcg(this._rgb);
};
chroma$g.hcg = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
return new (Function.prototype.bind.apply(Color$z, [null].concat(args, ["hcg"])))();
};
input$c.format.hcg = hcg2rgb_1;
input$c.autodetect.push({
p: 1,
test: function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
args = unpack$q(args, "hcg");
if (type$j(args) === "array" && args.length === 3) {
return "hcg";
}
}
});
var unpack$p = utils.unpack;
var last3 = utils.last;
var round$3 = Math.round;
var rgb2hex$2 = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
var ref = unpack$p(args, "rgba");
var r = ref[0];
var g = ref[1];
var b = ref[2];
var a = ref[3];
var mode = last3(args) || "auto";
if (a === void 0) {
a = 1;
}
if (mode === "auto") {
mode = a < 1 ? "rgba" : "rgb";
}
r = round$3(r);
g = round$3(g);
b = round$3(b);
var u = r << 16 | g << 8 | b;
var str = "000000" + u.toString(16);
str = str.substr(str.length - 6);
var hxa = "0" + round$3(a * 255).toString(16);
hxa = hxa.substr(hxa.length - 2);
switch (mode.toLowerCase()) {
case "rgba":
return "#" + str + hxa;
case "argb":
return "#" + hxa + str;
default:
return "#" + str;
}
};
var rgb2hex_1 = rgb2hex$2;
var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;
var RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/;
var hex2rgb$1 = function(hex) {
if (hex.match(RE_HEX)) {
if (hex.length === 4 || hex.length === 7) {
hex = hex.substr(1);
}
if (hex.length === 3) {
hex = hex.split("");
hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
}
var u = parseInt(hex, 16);
var r = u >> 16;
var g = u >> 8 & 255;
var b = u & 255;
return [r, g, b, 1];
}
if (hex.match(RE_HEXA)) {
if (hex.length === 5 || hex.length === 9) {
hex = hex.substr(1);
}
if (hex.length === 4) {
hex = hex.split("");
hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3];
}
var u$1 = parseInt(hex, 16);
var r$1 = u$1 >> 24 & 255;
var g$1 = u$1 >> 16 & 255;
var b$1 = u$1 >> 8 & 255;
var a = Math.round((u$1 & 255) / 255 * 100) / 100;
return [r$1, g$1, b$1, a];
}
throw new Error("unknown hex color: " + hex);
};
var hex2rgb_1 = hex2rgb$1;
var chroma$f = chroma_1;
var Color$y = Color_1;
var type$i = utils.type;
var input$b = input$h;
var rgb2hex$1 = rgb2hex_1;
Color$y.prototype.hex = function(mode) {
return rgb2hex$1(this._rgb, mode);
};
chroma$f.hex = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
return new (Function.prototype.bind.apply(Color$y, [null].concat(args, ["hex"])))();
};
input$b.format.hex = hex2rgb_1;
input$b.autodetect.push({
p: 4,
test: function(h) {
var rest = [], len = arguments.length - 1;
while (len-- > 0)
rest[len] = arguments[len + 1];
if (!rest.length && type$i(h) === "string" && [3, 4, 5, 6, 7, 8, 9].indexOf(h.length) >= 0) {
return "hex";
}
}
});
var unpack$o = utils.unpack;
var TWOPI$2 = utils.TWOPI;
var min$2 = Math.min;
var sqrt$4 = Math.sqrt;
var acos = Math.acos;
var rgb2hsi$1 = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
var ref = unpack$o(args, "rgb");
var r = ref[0];
var g = ref[1];
var b = ref[2];
r /= 255;
g /= 255;
b /= 255;
var h;
var min_ = min$2(r, g, b);
var i2 = (r + g + b) / 3;
var s = i2 > 0 ? 1 - min_ / i2 : 0;
if (s === 0) {
h = NaN;
} else {
h = (r - g + (r - b)) / 2;
h /= sqrt$4((r - g) * (r - g) + (r - b) * (g - b));
h = acos(h);
if (b > g) {
h = TWOPI$2 - h;
}
h /= TWOPI$2;
}
return [h * 360, s, i2];
};
var rgb2hsi_1 = rgb2hsi$1;
var unpack$n = utils.unpack;
var limit = utils.limit;
var TWOPI$1 = utils.TWOPI;
var PITHIRD = utils.PITHIRD;
var cos$4 = Math.cos;
var hsi2rgb = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
args = unpack$n(args, "hsi");
var h = args[0];
var s = args[1];
var i2 = args[2];
var r, g, b;
if (isNaN(h)) {
h = 0;
}
if (isNaN(s)) {
s = 0;
}
if (h > 360) {
h -= 360;
}
if (h < 0) {
h += 360;
}
h /= 360;
if (h < 1 / 3) {
b = (1 - s) / 3;
r = (1 + s * cos$4(TWOPI$1 * h) / cos$4(PITHIRD - TWOPI$1 * h)) / 3;
g = 1 - (b + r);
} else if (h < 2 / 3) {
h -= 1 / 3;
r = (1 - s) / 3;
g = (1 + s * cos$4(TWOPI$1 * h) / cos$4(PITHIRD - TWOPI$1 * h)) / 3;
b = 1 - (r + g);
} else {
h -= 2 / 3;
g = (1 - s) / 3;
b = (1 + s * cos$4(TWOPI$1 * h) / cos$4(PITHIRD - TWOPI$1 * h)) / 3;
r = 1 - (g + b);
}
r = limit(i2 * r * 3);
g = limit(i2 * g * 3);
b = limit(i2 * b * 3);
return [r * 255, g * 255, b * 255, args.length > 3 ? args[3] : 1];
};
var hsi2rgb_1 = hsi2rgb;
var unpack$m = utils.unpack;
var type$h = utils.type;
var chroma$e = chroma_1;
var Color$x = Color_1;
var input$a = input$h;
var rgb2hsi = rgb2hsi_1;
Color$x.prototype.hsi = function() {
return rgb2hsi(this._rgb);
};
chroma$e.hsi = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
return new (Function.prototype.bind.apply(Color$x, [null].concat(args, ["hsi"])))();
};
input$a.format.hsi = hsi2rgb_1;
input$a.autodetect.push({
p: 2,
test: function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
args = unpack$m(args, "hsi");
if (type$h(args) === "array" && args.length === 3) {
return "hsi";
}
}
});
var unpack$l = utils.unpack;
var type$g = utils.type;
var chroma$d = chroma_1;
var Color$w = Color_1;
var input$9 = input$h;
var rgb2hsl$1 = rgb2hsl_1;
Color$w.prototype.hsl = function() {
return rgb2hsl$1(this._rgb);
};
chroma$d.hsl = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
return new (Function.prototype.bind.apply(Color$w, [null].concat(args, ["hsl"])))();
};
input$9.format.hsl = hsl2rgb_1;
input$9.autodetect.push({
p: 2,
test: function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
args = unpack$l(args, "hsl");
if (type$g(args) === "array" && args.length === 3) {
return "hsl";
}
}
});
var unpack$k = utils.unpack;
var min$1 = Math.min;
var max$1 = Math.max;
var rgb2hsl = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
args = unpack$k(args, "rgb");
var r = args[0];
var g = args[1];
var b = args[2];
var min_ = min$1(r, g, b);
var max_ = max$1(r, g, b);
var delta = max_ - min_;
var h, s, v;
v = max_ / 255;
if (max_ === 0) {
h = Number.NaN;
s = 0;
} else {
s = delta / max_;
if (r === max_) {
h = (g - b) / delta;
}
if (g === max_) {
h = 2 + (b - r) / delta;
}
if (b === max_) {
h = 4 + (r - g) / delta;
}
h *= 60;
if (h < 0) {
h += 360;
}
}
return [h, s, v];
};
var rgb2hsv$1 = rgb2hsl;
var unpack$j = utils.unpack;
var floor$2 = Math.floor;
var hsv2rgb = function() {
var assign2, assign$1, assign$2, assign$3, assign$4, assign$5;
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
args = unpack$j(args, "hsv");
var h = args[0];
var s = args[1];
var v = args[2];
var r, g, b;
v *= 255;
if (s === 0) {
r = g = b = v;
} else {
if (h === 360) {
h = 0;
}
if (h > 360) {
h -= 360;
}
if (h < 0) {
h += 360;
}
h /= 60;
var i2 = floor$2(h);
var f = h - i2;
var p = v * (1 - s);
var q = v * (1 - s * f);
var t = v * (1 - s * (1 - f));
switch (i2) {
case 0:
assign2 = [v, t, p], r = assign2[0], g = assign2[1], b = assign2[2];
break;
case 1:
assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2];
break;
case 2:
assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2];
break;
case 3:
assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2];
break;
case 4:
assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2];
break;
case 5:
assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2];
break;
}
}
return [r, g, b, args.length > 3 ? args[3] : 1];
};
var hsv2rgb_1 = hsv2rgb;
var unpack$i = utils.unpack;
var type$f = utils.type;
var chroma$c = chroma_1;
var Color$v = Color_1;
var input$8 = input$h;
var rgb2hsv = rgb2hsv$1;
Color$v.prototype.hsv = function() {
return rgb2hsv(this._rgb);
};
chroma$c.hsv = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
return new (Function.prototype.bind.apply(Color$v, [null].concat(args, ["hsv"])))();
};
input$8.format.hsv = hsv2rgb_1;
input$8.autodetect.push({
p: 2,
test: function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
args = unpack$i(args, "hsv");
if (type$f(args) === "array" && args.length === 3) {
return "hsv";
}
}
});
var labConstants = {
// Corresponds roughly to RGB brighter/darker
Kn: 18,
// D65 standard referent
Xn: 0.95047,
Yn: 1,
Zn: 1.08883,
t0: 0.137931034,
// 4 / 29
t1: 0.206896552,
// 6 / 29
t2: 0.12841855,
// 3 * t1 * t1
t3: 8856452e-9
// t1 * t1 * t1
};
var LAB_CONSTANTS$3 = labConstants;
var unpack$h = utils.unpack;
var pow$a = Math.pow;
var rgb2lab$2 = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
var ref = unpack$h(args, "rgb");
var r = ref[0];
var g = ref[1];
var b = ref[2];
var ref$1 = rgb2xyz(r, g, b);
var x = ref$1[0];
var y = ref$1[1];
var z = ref$1[2];
var l = 116 * y - 16;
return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)];
};
var rgb_xyz = function(r) {
if ((r /= 255) <= 0.04045) {
return r / 12.92;
}
return pow$a((r + 0.055) / 1.055, 2.4);
};
var xyz_lab = function(t) {
if (t > LAB_CONSTANTS$3.t3) {
return pow$a(t, 1 / 3);
}
return t / LAB_CONSTANTS$3.t2 + LAB_CONSTANTS$3.t0;
};
var rgb2xyz = function(r, g, b) {
r = rgb_xyz(r);
g = rgb_xyz(g);
b = rgb_xyz(b);
var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / LAB_CONSTANTS$3.Xn);
var y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.072175 * b) / LAB_CONSTANTS$3.Yn);
var z = xyz_lab((0.0193339 * r + 0.119192 * g + 0.9503041 * b) / LAB_CONSTANTS$3.Zn);
return [x, y, z];
};
var rgb2lab_1 = rgb2lab$2;
var LAB_CONSTANTS$2 = labConstants;
var unpack$g = utils.unpack;
var pow$9 = Math.pow;
var lab2rgb$1 = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
args = unpack$g(args, "lab");
var l = args[0];
var a = args[1];
var b = args[2];
var x, y, z, r, g, b_;
y = (l + 16) / 116;
x = isNaN(a) ? y : y + a / 500;
z = isNaN(b) ? y : y - b / 200;
y = LAB_CONSTANTS$2.Yn * lab_xyz(y);
x = LAB_CONSTANTS$2.Xn * lab_xyz(x);
z = LAB_CONSTANTS$2.Zn * lab_xyz(z);
r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z);
g = xyz_rgb(-0.969266 * x + 1.8760108 * y + 0.041556 * z);
b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);
return [r, g, b_, args.length > 3 ? args[3] : 1];
};
var xyz_rgb = function(r) {
return 255 * (r <= 304e-5 ? 12.92 * r : 1.055 * pow$9(r, 1 / 2.4) - 0.055);
};
var lab_xyz = function(t) {
return t > LAB_CONSTANTS$2.t1 ? t * t * t : LAB_CONSTANTS$2.t2 * (t - LAB_CONSTANTS$2.t0);
};
var lab2rgb_1 = lab2rgb$1;
var unpack$f = utils.unpack;
var type$e = utils.type;
var chroma$b = chroma_1;
var Color$u = Color_1;
var input$7 = input$h;
var rgb2lab$1 = rgb2lab_1;
Color$u.prototype.lab = function() {
return rgb2lab$1(this._rgb);
};
chroma$b.lab = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
return new (Function.prototype.bind.apply(Color$u, [null].concat(args, ["lab"])))();
};
input$7.format.lab = lab2rgb_1;
input$7.autodetect.push({
p: 2,
test: function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
args = unpack$f(args, "lab");
if (type$e(args) === "array" && args.length === 3) {
return "lab";
}
}
});
var unpack$e = utils.unpack;
var RAD2DEG = utils.RAD2DEG;
var sqrt$3 = Math.sqrt;
var atan2$2 = Math.atan2;
var round$2 = Math.round;
var lab2lch$2 = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
var ref = unpack$e(args, "lab");
var l = ref[0];
var a = ref[1];
var b = ref[2];
var c = sqrt$3(a * a + b * b);
var h = (atan2$2(b, a) * RAD2DEG + 360) % 360;
if (round$2(c * 1e4) === 0) {
h = Number.NaN;
}
return [l, c, h];
};
var lab2lch_1 = lab2lch$2;
var unpack$d = utils.unpack;
var rgb2lab = rgb2lab_1;
var lab2lch$1 = lab2lch_1;
var rgb2lch$1 = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
var ref = unpack$d(args, "rgb");
var r = ref[0];
var g = ref[1];
var b = ref[2];
var ref$1 = rgb2lab(r, g, b);
var l = ref$1[0];
var a = ref$1[1];
var b_ = ref$1[2];
return lab2lch$1(l, a, b_);
};
var rgb2lch_1 = rgb2lch$1;
var unpack$c = utils.unpack;
var DEG2RAD = utils.DEG2RAD;
var sin$3 = Math.sin;
var cos$3 = Math.cos;
var lch2lab$2 = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
var ref = unpack$c(args, "lch");
var l = ref[0];
var c = ref[1];
var h = ref[2];
if (isNaN(h)) {
h = 0;
}
h = h * DEG2RAD;
return [l, cos$3(h) * c, sin$3(h) * c];
};
var lch2lab_1 = lch2lab$2;
var unpack$b = utils.unpack;
var lch2lab$1 = lch2lab_1;
var lab2rgb = lab2rgb_1;
var lch2rgb$1 = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
args = unpack$b(args, "lch");
var l = args[0];
var c = args[1];
var h = args[2];
var ref = lch2lab$1(l, c, h);
var L = ref[0];
var a = ref[1];
var b_ = ref[2];
var ref$1 = lab2rgb(L, a, b_);
var r = ref$1[0];
var g = ref$1[1];
var b = ref$1[2];
return [r, g, b, args.length > 3 ? args[3] : 1];
};
var lch2rgb_1 = lch2rgb$1;
var unpack$a = utils.unpack;
var lch2rgb = lch2rgb_1;
var hcl2rgb = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
var hcl = unpack$a(args, "hcl").reverse();
return lch2rgb.apply(void 0, hcl);
};
var hcl2rgb_1 = hcl2rgb;
var unpack$9 = utils.unpack;
var type$d = utils.type;
var chroma$a = chroma_1;
var Color$t = Color_1;
var input$6 = input$h;
var rgb2lch = rgb2lch_1;
Color$t.prototype.lch = function() {
return rgb2lch(this._rgb);
};
Color$t.prototype.hcl = function() {
return rgb2lch(this._rgb).reverse();
};
chroma$a.lch = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
return new (Function.prototype.bind.apply(Color$t, [null].concat(args, ["lch"])))();
};
chroma$a.hcl = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
return new (Function.prototype.bind.apply(Color$t, [null].concat(args, ["hcl"])))();
};
input$6.format.lch = lch2rgb_1;
input$6.format.hcl = hcl2rgb_1;
["lch", "hcl"].forEach(function(m) {
return input$6.autodetect.push({
p: 2,
test: function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
args = unpack$9(args, m);
if (type$d(args) === "array" && args.length === 3) {
return m;
}
}
});
});
var w3cx11$1 = {
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"
};
var w3cx11_1 = w3cx11$1;
var Color$s = Color_1;
var input$5 = input$h;
var type$c = utils.type;
var w3cx11 = w3cx11_1;
var hex2rgb = hex2rgb_1;
var rgb2hex = rgb2hex_1;
Color$s.prototype.name = function() {
var hex = rgb2hex(this._rgb, "rgb");
for (var i2 = 0, list2 = Object.keys(w3cx11); i2 < list2.length; i2 += 1) {
var n = list2[i2];
if (w3cx11[n] === hex) {
return n.toLowerCase();
}
}
return hex;
};
input$5.format.named = function(name2) {
name2 = name2.toLowerCase();
if (w3cx11[name2]) {
return hex2rgb(w3cx11[name2]);
}
throw new Error("unknown color name: " + name2);
};
input$5.autodetect.push({
p: 5,
test: function(h) {
var rest = [], len = arguments.length - 1;
while (len-- > 0)
rest[len] = arguments[len + 1];
if (!rest.length && type$c(h) === "string" && w3cx11[h.toLowerCase()]) {
return "named";
}
}
});
var unpack$8 = utils.unpack;
var rgb2num$1 = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
var ref = unpack$8(args, "rgb");
var r = ref[0];
var g = ref[1];
var b = ref[2];
return (r << 16) + (g << 8) + b;
};
var rgb2num_1 = rgb2num$1;
var type$b = utils.type;
var num2rgb = function(num2) {
if (type$b(num2) == "number" && num2 >= 0 && num2 <= 16777215) {
var r = num2 >> 16;
var g = num2 >> 8 & 255;
var b = num2 & 255;
return [r, g, b, 1];
}
throw new Error("unknown num color: " + num2);
};
var num2rgb_1 = num2rgb;
var chroma$9 = chroma_1;
var Color$r = Color_1;
var input$4 = input$h;
var type$a = utils.type;
var rgb2num = rgb2num_1;
Color$r.prototype.num = function() {
return rgb2num(this._rgb);
};
chroma$9.num = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
return new (Function.prototype.bind.apply(Color$r, [null].concat(args, ["num"])))();
};
input$4.format.num = num2rgb_1;
input$4.autodetect.push({
p: 5,
test: function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
if (args.length === 1 && type$a(args[0]) === "number" && args[0] >= 0 && args[0] <= 16777215) {
return "num";
}
}
});
var chroma$8 = chroma_1;
var Color$q = Color_1;
var input$3 = input$h;
var unpack$7 = utils.unpack;
var type$9 = utils.type;
var round$1 = Math.round;
Color$q.prototype.rgb = function(rnd2) {
if (rnd2 === void 0)
rnd2 = true;
if (rnd2 === false) {
return this._rgb.slice(0, 3);
}
return this._rgb.slice(0, 3).map(round$1);
};
Color$q.prototype.rgba = function(rnd2) {
if (rnd2 === void 0)
rnd2 = true;
return this._rgb.slice(0, 4).map(function(v, i2) {
return i2 < 3 ? rnd2 === false ? v : round$1(v) : v;
});
};
chroma$8.rgb = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
return new (Function.prototype.bind.apply(Color$q, [null].concat(args, ["rgb"])))();
};
input$3.format.rgb = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
var rgba = unpack$7(args, "rgba");
if (rgba[3] === void 0) {
rgba[3] = 1;
}
return rgba;
};
input$3.autodetect.push({
p: 3,
test: function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
args = unpack$7(args, "rgba");
if (type$9(args) === "array" && (args.length === 3 || args.length === 4 && type$9(args[3]) == "number" && args[3] >= 0 && args[3] <= 1)) {
return "rgb";
}
}
});
var log$1 = Math.log;
var temperature2rgb$1 = function(kelvin) {
var temp = kelvin / 100;
var r, g, b;
if (temp < 66) {
r = 255;
g = temp < 6 ? 0 : -155.25485562709179 - 0.44596950469579133 * (g = temp - 2) + 104.49216199393888 * log$1(g);
b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp - 10) + 115.67994401066147 * log$1(b);
} else {
r = 351.97690566805693 + 0.114206453784165 * (r = temp - 55) - 40.25366309332127 * log$1(r);
g = 325.4494125711974 + 0.07943456536662342 * (g = temp - 50) - 28.0852963507957 * log$1(g);
b = 255;
}
return [r, g, b, 1];
};
var temperature2rgb_1 = temperature2rgb$1;
var temperature2rgb = temperature2rgb_1;
var unpack$6 = utils.unpack;
var round = Math.round;
var rgb2temperature$1 = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
var rgb2 = unpack$6(args, "rgb");
var r = rgb2[0], b = rgb2[2];
var minTemp = 1e3;
var maxTemp = 4e4;
var eps = 0.4;
var temp;
while (maxTemp - minTemp > eps) {
temp = (maxTemp + minTemp) * 0.5;
var rgb$1 = temperature2rgb(temp);
if (rgb$1[2] / rgb$1[0] >= b / r) {
maxTemp = temp;
} else {
minTemp = temp;
}
}
return round(temp);
};
var rgb2temperature_1 = rgb2temperature$1;
var chroma$7 = chroma_1;
var Color$p = Color_1;
var input$2 = input$h;
var rgb2temperature = rgb2temperature_1;
Color$p.prototype.temp = Color$p.prototype.kelvin = Color$p.prototype.temperature = function() {
return rgb2temperature(this._rgb);
};
chroma$7.temp = chroma$7.kelvin = chroma$7.temperature = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
return new (Function.prototype.bind.apply(Color$p, [null].concat(args, ["temp"])))();
};
input$2.format.temp = input$2.format.kelvin = input$2.format.temperature = temperature2rgb_1;
var unpack$5 = utils.unpack;
var cbrt = Math.cbrt;
var pow$8 = Math.pow;
var sign$1 = Math.sign;
var rgb2oklab$2 = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
var ref = unpack$5(args, "rgb");
var r = ref[0];
var g = ref[1];
var b = ref[2];
var ref$1 = [rgb2lrgb(r / 255), rgb2lrgb(g / 255), rgb2lrgb(b / 255)];
var lr = ref$1[0];
var lg = ref$1[1];
var lb = ref$1[2];
var l = cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb);
var m = cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb);
var s = cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb);
return [
0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,
1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,
0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s
];
};
var rgb2oklab_1 = rgb2oklab$2;
function rgb2lrgb(c) {
var abs2 = Math.abs(c);
if (abs2 < 0.04045) {
return c / 12.92;
}
return (sign$1(c) || 1) * pow$8((abs2 + 0.055) / 1.055, 2.4);
}
var unpack$4 = utils.unpack;
var pow$7 = Math.pow;
var sign = Math.sign;
var oklab2rgb$1 = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
args = unpack$4(args, "lab");
var L = args[0];
var a = args[1];
var b = args[2];
var l = pow$7(L + 0.3963377774 * a + 0.2158037573 * b, 3);
var m = pow$7(L - 0.1055613458 * a - 0.0638541728 * b, 3);
var s = pow$7(L - 0.0894841775 * a - 1.291485548 * b, 3);
return [
255 * lrgb2rgb(4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s),
255 * lrgb2rgb(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s),
255 * lrgb2rgb(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s),
args.length > 3 ? args[3] : 1
];
};
var oklab2rgb_1 = oklab2rgb$1;
function lrgb2rgb(c) {
var abs2 = Math.abs(c);
if (abs2 > 31308e-7) {
return (sign(c) || 1) * (1.055 * pow$7(abs2, 1 / 2.4) - 0.055);
}
return c * 12.92;
}
var unpack$3 = utils.unpack;
var type$8 = utils.type;
var chroma$6 = chroma_1;
var Color$o = Color_1;
var input$1 = input$h;
var rgb2oklab$1 = rgb2oklab_1;
Color$o.prototype.oklab = function() {
return rgb2oklab$1(this._rgb);
};
chroma$6.oklab = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
return new (Function.prototype.bind.apply(Color$o, [null].concat(args, ["oklab"])))();
};
input$1.format.oklab = oklab2rgb_1;
input$1.autodetect.push({
p: 3,
test: function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
args = unpack$3(args, "oklab");
if (type$8(args) === "array" && args.length === 3) {
return "oklab";
}
}
});
var unpack$2 = utils.unpack;
var rgb2oklab = rgb2oklab_1;
var lab2lch = lab2lch_1;
var rgb2oklch$1 = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
var ref = unpack$2(args, "rgb");
var r = ref[0];
var g = ref[1];
var b = ref[2];
var ref$1 = rgb2oklab(r, g, b);
var l = ref$1[0];
var a = ref$1[1];
var b_ = ref$1[2];
return lab2lch(l, a, b_);
};
var rgb2oklch_1 = rgb2oklch$1;
var unpack$1 = utils.unpack;
var lch2lab = lch2lab_1;
var oklab2rgb = oklab2rgb_1;
var oklch2rgb = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
args = unpack$1(args, "lch");
var l = args[0];
var c = args[1];
var h = args[2];
var ref = lch2lab(l, c, h);
var L = ref[0];
var a = ref[1];
var b_ = ref[2];
var ref$1 = oklab2rgb(L, a, b_);
var r = ref$1[0];
var g = ref$1[1];
var b = ref$1[2];
return [r, g, b, args.length > 3 ? args[3] : 1];
};
var oklch2rgb_1 = oklch2rgb;
var unpack = utils.unpack;
var type$7 = utils.type;
var chroma$5 = chroma_1;
var Color$n = Color_1;
var input = input$h;
var rgb2oklch = rgb2oklch_1;
Color$n.prototype.oklch = function() {
return rgb2oklch(this._rgb);
};
chroma$5.oklch = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
return new (Function.prototype.bind.apply(Color$n, [null].concat(args, ["oklch"])))();
};
input.format.oklch = oklch2rgb_1;
input.autodetect.push({
p: 3,
test: function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
args = unpack(args, "oklch");
if (type$7(args) === "array" && args.length === 3) {
return "oklch";
}
}
});
var Color$m = Color_1;
var type$6 = utils.type;
Color$m.prototype.alpha = function(a, mutate) {
if (mutate === void 0)
mutate = false;
if (a !== void 0 && type$6(a) === "number") {
if (mutate) {
this._rgb[3] = a;
return this;
}
return new Color$m([this._rgb[0], this._rgb[1], this._rgb[2], a], "rgb");
}
return this._rgb[3];
};
var Color$l = Color_1;
Color$l.prototype.clipped = function() {
return this._rgb._clipped || false;
};
var Color$k = Color_1;
var LAB_CONSTANTS$1 = labConstants;
Color$k.prototype.darken = function(amount) {
if (amount === void 0)
amount = 1;
var me = this;
var lab2 = me.lab();
lab2[0] -= LAB_CONSTANTS$1.Kn * amount;
return new Color$k(lab2, "lab").alpha(me.alpha(), true);
};
Color$k.prototype.brighten = function(amount) {
if (amount === void 0)
amount = 1;
return this.darken(-amount);
};
Color$k.prototype.darker = Color$k.prototype.darken;
Color$k.prototype.brighter = Color$k.prototype.brighten;
var Color$j = Color_1;
Color$j.prototype.get = function(mc) {
var ref = mc.split(".");
var mode = ref[0];
var channel = ref[1];
var src = this[mode]();
if (channel) {
var i2 = mode.indexOf(channel) - (mode.substr(0, 2) === "ok" ? 2 : 0);
if (i2 > -1) {
return src[i2];
}
throw new Error("unknown channel " + channel + " in mode " + mode);
} else {
return src;
}
};
var Color$i = Color_1;
var type$5 = utils.type;
var pow$6 = Math.pow;
var EPS = 1e-7;
var MAX_ITER = 20;
Color$i.prototype.luminance = function(lum) {
if (lum !== void 0 && type$5(lum) === "number") {
if (lum === 0) {
return new Color$i([0, 0, 0, this._rgb[3]], "rgb");
}
if (lum === 1) {
return new Color$i([255, 255, 255, this._rgb[3]], "rgb");
}
var cur_lum = this.luminance();
var mode = "rgb";
var max_iter = MAX_ITER;
var test = function(low, high) {
var mid = low.interpolate(high, 0.5, mode);
var lm = mid.luminance();
if (Math.abs(lum - lm) < EPS || !max_iter--) {
return mid;
}
return lm > lum ? test(low, mid) : test(mid, high);
};
var rgb2 = (cur_lum > lum ? test(new Color$i([0, 0, 0]), this) : test(this, new Color$i([255, 255, 255]))).rgb();
return new Color$i(rgb2.concat([this._rgb[3]]));
}
return rgb2luminance.apply(void 0, this._rgb.slice(0, 3));
};
var rgb2luminance = function(r, g, b) {
r = luminance_x(r);
g = luminance_x(g);
b = luminance_x(b);
return 0.2126 * r + 0.7152 * g + 0.0722 * b;
};
var luminance_x = function(x) {
x /= 255;
return x <= 0.03928 ? x / 12.92 : pow$6((x + 0.055) / 1.055, 2.4);
};
var interpolator$1 = {};
var Color$h = Color_1;
var type$4 = utils.type;
var interpolator = interpolator$1;
var mix$1 = function(col1, col2, f) {
if (f === void 0)
f = 0.5;
var rest = [], len = arguments.length - 3;
while (len-- > 0)
rest[len] = arguments[len + 3];
var mode = rest[0] || "lrgb";
if (!interpolator[mode] && !rest.length) {
mode = Object.keys(interpolator)[0];
}
if (!interpolator[mode]) {
throw new Error("interpolation mode " + mode + " is not defined");
}
if (type$4(col1) !== "object") {
col1 = new Color$h(col1);
}
if (type$4(col2) !== "object") {
col2 = new Color$h(col2);
}
return interpolator[mode](col1, col2, f).alpha(col1.alpha() + f * (col2.alpha() - col1.alpha()));
};
var Color$g = Color_1;
var mix = mix$1;
Color$g.prototype.mix = Color$g.prototype.interpolate = function(col2, f) {
if (f === void 0)
f = 0.5;
var rest = [], len = arguments.length - 2;
while (len-- > 0)
rest[len] = arguments[len + 2];
return mix.apply(void 0, [this, col2, f].concat(rest));
};
var Color$f = Color_1;
Color$f.prototype.premultiply = function(mutate) {
if (mutate === void 0)
mutate = false;
var rgb2 = this._rgb;
var a = rgb2[3];
if (mutate) {
this._rgb = [rgb2[0] * a, rgb2[1] * a, rgb2[2] * a, a];
return this;
} else {
return new Color$f([rgb2[0] * a, rgb2[1] * a, rgb2[2] * a, a], "rgb");
}
};
var Color$e = Color_1;
var LAB_CONSTANTS = labConstants;
Color$e.prototype.saturate = function(amount) {
if (amount === void 0)
amount = 1;
var me = this;
var lch2 = me.lch();
lch2[1] += LAB_CONSTANTS.Kn * amount;
if (lch2[1] < 0) {
lch2[1] = 0;
}
return new Color$e(lch2, "lch").alpha(me.alpha(), true);
};
Color$e.prototype.desaturate = function(amount) {
if (amount === void 0)
amount = 1;
return this.saturate(-amount);
};
var Color$d = Color_1;
var type$3 = utils.type;
Color$d.prototype.set = function(mc, value, mutate) {
if (mutate === void 0)
mutate = false;
var ref = mc.split(".");
var mode = ref[0];
var channel = ref[1];
var src = this[mode]();
if (channel) {
var i2 = mode.indexOf(channel) - (mode.substr(0, 2) === "ok" ? 2 : 0);
if (i2 > -1) {
if (type$3(value) == "string") {
switch (value.charAt(0)) {
case "+":
src[i2] += +value;
break;
case "-":
src[i2] += +value;
break;
case "*":
src[i2] *= +value.substr(1);
break;
case "/":
src[i2] /= +value.substr(1);
break;
default:
src[i2] = +value;
}
} else if (type$3(value) === "number") {
src[i2] = value;
} else {
throw new Error("unsupported value for Color.set");
}
var out = new Color$d(src, mode);
if (mutate) {
this._rgb = out._rgb;
return this;
}
return out;
}
throw new Error("unknown channel " + channel + " in mode " + mode);
} else {
return src;
}
};
var Color$c = Color_1;
var rgb = function(col1, col2, f) {
var xyz0 = col1._rgb;
var xyz1 = col2._rgb;
return new Color$c(
xyz0[0] + f * (xyz1[0] - xyz0[0]),
xyz0[1] + f * (xyz1[1] - xyz0[1]),
xyz0[2] + f * (xyz1[2] - xyz0[2]),
"rgb"
);
};
interpolator$1.rgb = rgb;
var Color$b = Color_1;
var sqrt$2 = Math.sqrt;
var pow$5 = Math.pow;
var lrgb = function(col1, col2, f) {
var ref = col1._rgb;
var x1 = ref[0];
var y1 = ref[1];
var z1 = ref[2];
var ref$1 = col2._rgb;
var x2 = ref$1[0];
var y2 = ref$1[1];
var z2 = ref$1[2];
return new Color$b(
sqrt$2(pow$5(x1, 2) * (1 - f) + pow$5(x2, 2) * f),
sqrt$2(pow$5(y1, 2) * (1 - f) + pow$5(y2, 2) * f),
sqrt$2(pow$5(z1, 2) * (1 - f) + pow$5(z2, 2) * f),
"rgb"
);
};
interpolator$1.lrgb = lrgb;
var Color$a = Color_1;
var lab = function(col1, col2, f) {
var xyz0 = col1.lab();
var xyz1 = col2.lab();
return new Color$a(
xyz0[0] + f * (xyz1[0] - xyz0[0]),
xyz0[1] + f * (xyz1[1] - xyz0[1]),
xyz0[2] + f * (xyz1[2] - xyz0[2]),
"lab"
);
};
interpolator$1.lab = lab;
var Color$9 = Color_1;
var _hsx = function(col1, col2, f, m) {
var assign2, assign$1;
var xyz0, xyz1;
if (m === "hsl") {
xyz0 = col1.hsl();
xyz1 = col2.hsl();
} else if (m === "hsv") {
xyz0 = col1.hsv();
xyz1 = col2.hsv();
} else if (m === "hcg") {
xyz0 = col1.hcg();
xyz1 = col2.hcg();
} else if (m === "hsi") {
xyz0 = col1.hsi();
xyz1 = col2.hsi();
} else if (m === "lch" || m === "hcl") {
m = "hcl";
xyz0 = col1.hcl();
xyz1 = col2.hcl();
} else if (m === "oklch") {
xyz0 = col1.oklch().reverse();
xyz1 = col2.oklch().reverse();
}
var hue0, hue1, sat0, sat1, lbv0, lbv1;
if (m.substr(0, 1) === "h" || m === "oklch") {
assign2 = xyz0, hue0 = assign2[0], sat0 = assign2[1], lbv0 = assign2[2];
assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2];
}
var sat, hue, lbv, dh;
if (!isNaN(hue0) && !isNaN(hue1)) {
if (hue1 > hue0 && hue1 - hue0 > 180) {
dh = hue1 - (hue0 + 360);
} else if (hue1 < hue0 && hue0 - hue1 > 180) {
dh = hue1 + 360 - hue0;
} else {
dh = hue1 - hue0;
}
hue = hue0 + f * dh;
} else if (!isNaN(hue0)) {
hue = hue0;
if ((lbv1 == 1 || lbv1 == 0) && m != "hsv") {
sat = sat0;
}
} else if (!isNaN(hue1)) {
hue = hue1;
if ((lbv0 == 1 || lbv0 == 0) && m != "hsv") {
sat = sat1;
}
} else {
hue = Number.NaN;
}
if (sat === void 0) {
sat = sat0 + f * (sat1 - sat0);
}
lbv = lbv0 + f * (lbv1 - lbv0);
return m === "oklch" ? new Color$9([lbv, sat, hue], m) : new Color$9([hue, sat, lbv], m);
};
var interpolate_hsx$5 = _hsx;
var lch = function(col1, col2, f) {
return interpolate_hsx$5(col1, col2, f, "lch");
};
interpolator$1.lch = lch;
interpolator$1.hcl = lch;
var Color$8 = Color_1;
var num = function(col1, col2, f) {
var c1 = col1.num();
var c2 = col2.num();
return new Color$8(c1 + f * (c2 - c1), "num");
};
interpolator$1.num = num;
var interpolate_hsx$4 = _hsx;
var hcg = function(col1, col2, f) {
return interpolate_hsx$4(col1, col2, f, "hcg");
};
interpolator$1.hcg = hcg;
var interpolate_hsx$3 = _hsx;
var hsi = function(col1, col2, f) {
return interpolate_hsx$3(col1, col2, f, "hsi");
};
interpolator$1.hsi = hsi;
var interpolate_hsx$2 = _hsx;
var hsl = function(col1, col2, f) {
return interpolate_hsx$2(col1, col2, f, "hsl");
};
interpolator$1.hsl = hsl;
var interpolate_hsx$1 = _hsx;
var hsv = function(col1, col2, f) {
return interpolate_hsx$1(col1, col2, f, "hsv");
};
interpolator$1.hsv = hsv;
var Color$7 = Color_1;
var oklab = function(col1, col2, f) {
var xyz0 = col1.oklab();
var xyz1 = col2.oklab();
return new Color$7(
xyz0[0] + f * (xyz1[0] - xyz0[0]),
xyz0[1] + f * (xyz1[1] - xyz0[1]),
xyz0[2] + f * (xyz1[2] - xyz0[2]),
"oklab"
);
};
interpolator$1.oklab = oklab;
var interpolate_hsx = _hsx;
var oklch = function(col1, col2, f) {
return interpolate_hsx(col1, col2, f, "oklch");
};
interpolator$1.oklch = oklch;
var Color$6 = Color_1;
var clip_rgb$1 = utils.clip_rgb;
var pow$4 = Math.pow;
var sqrt$1 = Math.sqrt;
var PI$1 = Math.PI;
var cos$2 = Math.cos;
var sin$2 = Math.sin;
var atan2$1 = Math.atan2;
var average = function(colors, mode, weights) {
if (mode === void 0)
mode = "lrgb";
if (weights === void 0)
weights = null;
var l = colors.length;
if (!weights) {
weights = Array.from(new Array(l)).map(function() {
return 1;
});
}
var k = l / weights.reduce(function(a, b) {
return a + b;
});
weights.forEach(function(w, i3) {
weights[i3] *= k;
});
colors = colors.map(function(c) {
return new Color$6(c);
});
if (mode === "lrgb") {
return _average_lrgb(colors, weights);
}
var first = colors.shift();
var xyz = first.get(mode);
var cnt = [];
var dx = 0;
var dy = 0;
for (var i2 = 0; i2 < xyz.length; i2++) {
xyz[i2] = (xyz[i2] || 0) * weights[0];
cnt.push(isNaN(xyz[i2]) ? 0 : weights[0]);
if (mode.charAt(i2) === "h" && !isNaN(xyz[i2])) {
var A = xyz[i2] / 180 * PI$1;
dx += cos$2(A) * weights[0];
dy += sin$2(A) * weights[0];
}
}
var alpha = first.alpha() * weights[0];
colors.forEach(function(c, ci) {
var xyz2 = c.get(mode);
alpha += c.alpha() * weights[ci + 1];
for (var i3 = 0; i3 < xyz.length; i3++) {
if (!isNaN(xyz2[i3])) {
cnt[i3] += weights[ci + 1];
if (mode.charAt(i3) === "h") {
var A2 = xyz2[i3] / 180 * PI$1;
dx += cos$2(A2) * weights[ci + 1];
dy += sin$2(A2) * weights[ci + 1];
} else {
xyz[i3] += xyz2[i3] * weights[ci + 1];
}
}
}
});
for (var i$12 = 0; i$12 < xyz.length; i$12++) {
if (mode.charAt(i$12) === "h") {
var A$1 = atan2$1(dy / cnt[i$12], dx / cnt[i$12]) / PI$1 * 180;
while (A$1 < 0) {
A$1 += 360;
}
while (A$1 >= 360) {
A$1 -= 360;
}
xyz[i$12] = A$1;
} else {
xyz[i$12] = xyz[i$12] / cnt[i$12];
}
}
alpha /= l;
return new Color$6(xyz, mode).alpha(alpha > 0.99999 ? 1 : alpha, true);
};
var _average_lrgb = function(colors, weights) {
var l = colors.length;
var xyz = [0, 0, 0, 0];
for (var i2 = 0; i2 < colors.length; i2++) {
var col = colors[i2];
var f = weights[i2] / l;
var rgb2 = col._rgb;
xyz[0] += pow$4(rgb2[0], 2) * f;
xyz[1] += pow$4(rgb2[1], 2) * f;
xyz[2] += pow$4(rgb2[2], 2) * f;
xyz[3] += rgb2[3] * f;
}
xyz[0] = sqrt$1(xyz[0]);
xyz[1] = sqrt$1(xyz[1]);
xyz[2] = sqrt$1(xyz[2]);
if (xyz[3] > 0.9999999) {
xyz[3] = 1;
}
return new Color$6(clip_rgb$1(xyz));
};
var chroma$4 = chroma_1;
var type$2 = utils.type;
var pow$3 = Math.pow;
var scale$2 = function(colors) {
var _mode = "rgb";
var _nacol = chroma$4("#ccc");
var _spread = 0;
var _domain = [0, 1];
var _pos = [];
var _padding = [0, 0];
var _classes = false;
var _colors = [];
var _out = false;
var _min = 0;
var _max = 1;
var _correctLightness = false;
var _colorCache = {};
var _useCache = true;
var _gamma = 1;
var setColors = function(colors2) {
colors2 = colors2 || ["#fff", "#000"];
if (colors2 && type$2(colors2) === "string" && chroma$4.brewer && chroma$4.brewer[colors2.toLowerCase()]) {
colors2 = chroma$4.brewer[colors2.toLowerCase()];
}
if (type$2(colors2) === "array") {
if (colors2.length === 1) {
colors2 = [colors2[0], colors2[0]];
}
colors2 = colors2.slice(0);
for (var c = 0; c < colors2.length; c++) {
colors2[c] = chroma$4(colors2[c]);
}
_pos.length = 0;
for (var c$1 = 0; c$1 < colors2.length; c$1++) {
_pos.push(c$1 / (colors2.length - 1));
}
}
resetCache();
return _colors = colors2;
};
var getClass = function(value) {
if (_classes != null) {
var n = _classes.length - 1;
var i2 = 0;
while (i2 < n && value >= _classes[i2]) {
i2++;
}
return i2 - 1;
}
return 0;
};
var tMapLightness = function(t) {
return t;
};
var tMapDomain = function(t) {
return t;
};
var getColor = function(val, bypassMap) {
var col, t;
if (bypassMap == null) {
bypassMap = false;
}
if (isNaN(val) || val === null) {
return _nacol;
}
if (!bypassMap) {
if (_classes && _classes.length > 2) {
var c = getClass(val);
t = c / (_classes.length - 2);
} else if (_max !== _min) {
t = (val - _min) / (_max - _min);
} else {
t = 1;
}
} else {
t = val;
}
t = tMapDomain(t);
if (!bypassMap) {
t = tMapLightness(t);
}
if (_gamma !== 1) {
t = pow$3(t, _gamma);
}
t = _padding[0] + t * (1 - _padding[0] - _padding[1]);
t = Math.min(1, Math.max(0, t));
var k = Math.floor(t * 1e4);
if (_useCache && _colorCache[k]) {
col = _colorCache[k];
} else {
if (type$2(_colors) === "array") {
for (var i2 = 0; i2 < _pos.length; i2++) {
var p = _pos[i2];
if (t <= p) {
col = _colors[i2];
break;
}
if (t >= p && i2 === _pos.length - 1) {
col = _colors[i2];
break;
}
if (t > p && t < _pos[i2 + 1]) {
t = (t - p) / (_pos[i2 + 1] - p);
col = chroma$4.interpolate(_colors[i2], _colors[i2 + 1], t, _mode);
break;
}
}
} else if (type$2(_colors) === "function") {
col = _colors(t);
}
if (_useCache) {
_colorCache[k] = col;
}
}
return col;
};
var resetCache = function() {
return _colorCache = {};
};
setColors(colors);
var f = function(v) {
var c = chroma$4(getColor(v));
if (_out && c[_out]) {
return c[_out]();
} else {
return c;
}
};
f.classes = function(classes) {
if (classes != null) {
if (type$2(classes) === "array") {
_classes = classes;
_domain = [classes[0], classes[classes.length - 1]];
} else {
var d = chroma$4.analyze(_domain);
if (classes === 0) {
_classes = [d.min, d.max];
} else {
_classes = chroma$4.limits(d, "e", classes);
}
}
return f;
}
return _classes;
};
f.domain = function(domain) {
if (!arguments.length) {
return _domain;
}
_min = domain[0];
_max = domain[domain.length - 1];
_pos = [];
var k = _colors.length;
if (domain.length === k && _min !== _max) {
for (var i2 = 0, list2 = Array.from(domain); i2 < list2.length; i2 += 1) {
var d = list2[i2];
_pos.push((d - _min) / (_max - _min));
}
} else {
for (var c = 0; c < k; c++) {
_pos.push(c / (k - 1));
}
if (domain.length > 2) {
var tOut = domain.map(function(d2, i3) {
return i3 / (domain.length - 1);
});
var tBreaks = domain.map(function(d2) {
return (d2 - _min) / (_max - _min);
});
if (!tBreaks.every(function(val, i3) {
return tOut[i3] === val;
})) {
tMapDomain = function(t) {
if (t <= 0 || t >= 1) {
return t;
}
var i3 = 0;
while (t >= tBreaks[i3 + 1]) {
i3++;
}
var f2 = (t - tBreaks[i3]) / (tBreaks[i3 + 1] - tBreaks[i3]);
var out = tOut[i3] + f2 * (tOut[i3 + 1] - tOut[i3]);
return out;
};
}
}
}
_domain = [_min, _max];
return f;
};
f.mode = function(_m) {
if (!arguments.length) {
return _mode;
}
_mode = _m;
resetCache();
return f;
};
f.range = function(colors2, _pos2) {
setColors(colors2);
return f;
};
f.out = function(_o) {
_out = _o;
return f;
};
f.spread = function(val) {
if (!arguments.length) {
return _spread;
}
_spread = val;
return f;
};
f.correctLightness = function(v) {
if (v == null) {
v = true;
}
_correctLightness = v;
resetCache();
if (_correctLightness) {
tMapLightness = function(t) {
var L0 = getColor(0, true).lab()[0];
var L1 = getColor(1, true).lab()[0];
var pol = L0 > L1;
var L_actual = getColor(t, true).lab()[0];
var L_ideal = L0 + (L1 - L0) * t;
var L_diff = L_actual - L_ideal;
var t0 = 0;
var t1 = 1;
var max_iter = 20;
while (Math.abs(L_diff) > 0.01 && max_iter-- > 0) {
(function() {
if (pol) {
L_diff *= -1;
}
if (L_diff < 0) {
t0 = t;
t += (t1 - t) * 0.5;
} else {
t1 = t;
t += (t0 - t) * 0.5;
}
L_actual = getColor(t, true).lab()[0];
return L_diff = L_actual - L_ideal;
})();
}
return t;
};
} else {
tMapLightness = function(t) {
return t;
};
}
return f;
};
f.padding = function(p) {
if (p != null) {
if (type$2(p) === "number") {
p = [p, p];
}
_padding = p;
return f;
} else {
return _padding;
}
};
f.colors = function(numColors, out) {
if (arguments.length < 2) {
out = "hex";
}
var result = [];
if (arguments.length === 0) {
result = _colors.slice(0);
} else if (numColors === 1) {
result = [f(0.5)];
} else if (numColors > 1) {
var dm = _domain[0];
var dd = _domain[1] - dm;
result = __range__(0, numColors, false).map(function(i3) {
return f(dm + i3 / (numColors - 1) * dd);
});
} else {
colors = [];
var samples = [];
if (_classes && _classes.length > 2) {
for (var i2 = 1, end = _classes.length, asc = 1 <= end; asc ? i2 < end : i2 > end; asc ? i2++ : i2--) {
samples.push((_classes[i2 - 1] + _classes[i2]) * 0.5);
}
} else {
samples = _domain;
}
result = samples.map(function(v) {
return f(v);
});
}
if (chroma$4[out]) {
result = result.map(function(c) {
return c[out]();
});
}
return result;
};
f.cache = function(c) {
if (c != null) {
_useCache = c;
return f;
} else {
return _useCache;
}
};
f.gamma = function(g) {
if (g != null) {
_gamma = g;
return f;
} else {
return _gamma;
}
};
f.nodata = function(d) {
if (d != null) {
_nacol = chroma$4(d);
return f;
} else {
return _nacol;
}
};
return f;
};
function __range__(left, right, inclusive) {
var range3 = [];
var ascending = left < right;
var end = !inclusive ? right : ascending ? right + 1 : right - 1;
for (var i2 = left; ascending ? i2 < end : i2 > end; ascending ? i2++ : i2--) {
range3.push(i2);
}
return range3;
}
var Color$5 = Color_1;
var scale$1 = scale$2;
var binom_row = function(n) {
var row = [1, 1];
for (var i2 = 1; i2 < n; i2++) {
var newrow = [1];
for (var j = 1; j <= row.length; j++) {
newrow[j] = (row[j] || 0) + row[j - 1];
}
row = newrow;
}
return row;
};
var bezier = function(colors) {
var assign2, assign$1, assign$2;
var I, lab0, lab1, lab2;
colors = colors.map(function(c) {
return new Color$5(c);
});
if (colors.length === 2) {
assign2 = colors.map(function(c) {
return c.lab();
}), lab0 = assign2[0], lab1 = assign2[1];
I = function(t) {
var lab4 = [0, 1, 2].map(function(i2) {
return lab0[i2] + t * (lab1[i2] - lab0[i2]);
});
return new Color$5(lab4, "lab");
};
} else if (colors.length === 3) {
assign$1 = colors.map(function(c) {
return c.lab();
}), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2];
I = function(t) {
var lab4 = [0, 1, 2].map(function(i2) {
return (1 - t) * (1 - t) * lab0[i2] + 2 * (1 - t) * t * lab1[i2] + t * t * lab2[i2];
});
return new Color$5(lab4, "lab");
};
} else if (colors.length === 4) {
var lab3;
assign$2 = colors.map(function(c) {
return c.lab();
}), lab0 = assign$2[0], lab1 = assign$2[1], lab2 = assign$2[2], lab3 = assign$2[3];
I = function(t) {
var lab4 = [0, 1, 2].map(function(i2) {
return (1 - t) * (1 - t) * (1 - t) * lab0[i2] + 3 * (1 - t) * (1 - t) * t * lab1[i2] + 3 * (1 - t) * t * t * lab2[i2] + t * t * t * lab3[i2];
});
return new Color$5(lab4, "lab");
};
} else if (colors.length >= 5) {
var labs, row, n;
labs = colors.map(function(c) {
return c.lab();
});
n = colors.length - 1;
row = binom_row(n);
I = function(t) {
var u = 1 - t;
var lab4 = [0, 1, 2].map(function(i2) {
return labs.reduce(function(sum, el, j) {
return sum + row[j] * Math.pow(u, n - j) * Math.pow(t, j) * el[i2];
}, 0);
});
return new Color$5(lab4, "lab");
};
} else {
throw new RangeError("No point in running bezier with only one color.");
}
return I;
};
var bezier_1 = function(colors) {
var f = bezier(colors);
f.scale = function() {
return scale$1(f);
};
return f;
};
var chroma$3 = chroma_1;
var blend = function(bottom, top, mode) {
if (!blend[mode]) {
throw new Error("unknown blend mode " + mode);
}
return blend[mode](bottom, top);
};
var blend_f = function(f) {
return function(bottom, top) {
var c0 = chroma$3(top).rgb();
var c1 = chroma$3(bottom).rgb();
return chroma$3.rgb(f(c0, c1));
};
};
var each = function(f) {
return function(c0, c1) {
var out = [];
out[0] = f(c0[0], c1[0]);
out[1] = f(c0[1], c1[1]);
out[2] = f(c0[2], c1[2]);
return out;
};
};
var normal = function(a) {
return a;
};
var multiply = function(a, b) {
return a * b / 255;
};
var darken = function(a, b) {
return a > b ? b : a;
};
var lighten = function(a, b) {
return a > b ? a : b;
};
var screen = function(a, b) {
return 255 * (1 - (1 - a / 255) * (1 - b / 255));
};
var overlay = function(a, b) {
return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255) * (1 - b / 255));
};
var burn = function(a, b) {
return 255 * (1 - (1 - b / 255) / (a / 255));
};
var dodge = function(a, b) {
if (a === 255) {
return 255;
}
a = 255 * (b / 255) / (1 - a / 255);
return a > 255 ? 255 : a;
};
blend.normal = blend_f(each(normal));
blend.multiply = blend_f(each(multiply));
blend.screen = blend_f(each(screen));
blend.overlay = blend_f(each(overlay));
blend.darken = blend_f(each(darken));
blend.lighten = blend_f(each(lighten));
blend.dodge = blend_f(each(dodge));
blend.burn = blend_f(each(burn));
var blend_1 = blend;
var type$1 = utils.type;
var clip_rgb = utils.clip_rgb;
var TWOPI = utils.TWOPI;
var pow$2 = Math.pow;
var sin$1 = Math.sin;
var cos$1 = Math.cos;
var chroma$2 = chroma_1;
var cubehelix = function(start, rotations, hue, gamma, lightness) {
if (start === void 0)
start = 300;
if (rotations === void 0)
rotations = -1.5;
if (hue === void 0)
hue = 1;
if (gamma === void 0)
gamma = 1;
if (lightness === void 0)
lightness = [0, 1];
var dh = 0, dl;
if (type$1(lightness) === "array") {
dl = lightness[1] - lightness[0];
} else {
dl = 0;
lightness = [lightness, lightness];
}
var f = function(fract) {
var a = TWOPI * ((start + 120) / 360 + rotations * fract);
var l = pow$2(lightness[0] + dl * fract, gamma);
var h = dh !== 0 ? hue[0] + fract * dh : hue;
var amp = h * l * (1 - l) / 2;
var cos_a = cos$1(a);
var sin_a = sin$1(a);
var r = l + amp * (-0.14861 * cos_a + 1.78277 * sin_a);
var g = l + amp * (-0.29227 * cos_a - 0.90649 * sin_a);
var b = l + amp * (1.97294 * cos_a);
return chroma$2(clip_rgb([r * 255, g * 255, b * 255, 1]));
};
f.start = function(s) {
if (s == null) {
return start;
}
start = s;
return f;
};
f.rotations = function(r) {
if (r == null) {
return rotations;
}
rotations = r;
return f;
};
f.gamma = function(g) {
if (g == null) {
return gamma;
}
gamma = g;
return f;
};
f.hue = function(h) {
if (h == null) {
return hue;
}
hue = h;
if (type$1(hue) === "array") {
dh = hue[1] - hue[0];
if (dh === 0) {
hue = hue[1];
}
} else {
dh = 0;
}
return f;
};
f.lightness = function(h) {
if (h == null) {
return lightness;
}
if (type$1(h) === "array") {
lightness = h;
dl = h[1] - h[0];
} else {
lightness = [h, h];
dl = 0;
}
return f;
};
f.scale = function() {
return chroma$2.scale(f);
};
f.hue(hue);
return f;
};
var Color$4 = Color_1;
var digits = "0123456789abcdef";
var floor$1 = Math.floor;
var random = Math.random;
var random_1 = function() {
var code = "#";
for (var i2 = 0; i2 < 6; i2++) {
code += digits.charAt(floor$1(random() * 16));
}
return new Color$4(code, "hex");
};
var type = type$p;
var log = Math.log;
var pow$1 = Math.pow;
var floor = Math.floor;
var abs$1 = Math.abs;
var analyze = function(data, key2) {
if (key2 === void 0)
key2 = null;
var r = {
min: Number.MAX_VALUE,
max: Number.MAX_VALUE * -1,
sum: 0,
values: [],
count: 0
};
if (type(data) === "object") {
data = Object.values(data);
}
data.forEach(function(val) {
if (key2 && type(val) === "object") {
val = val[key2];
}
if (val !== void 0 && val !== null && !isNaN(val)) {
r.values.push(val);
r.sum += val;
if (val < r.min) {
r.min = val;
}
if (val > r.max) {
r.max = val;
}
r.count += 1;
}
});
r.domain = [r.min, r.max];
r.limits = function(mode, num2) {
return limits(r, mode, num2);
};
return r;
};
var limits = function(data, mode, num2) {
if (mode === void 0)
mode = "equal";
if (num2 === void 0)
num2 = 7;
if (type(data) == "array") {
data = analyze(data);
}
var min2 = data.min;
var max2 = data.max;
var values = data.values.sort(function(a, b) {
return a - b;
});
if (num2 === 1) {
return [min2, max2];
}
var limits2 = [];
if (mode.substr(0, 1) === "c") {
limits2.push(min2);
limits2.push(max2);
}
if (mode.substr(0, 1) === "e") {
limits2.push(min2);
for (var i2 = 1; i2 < num2; i2++) {
limits2.push(min2 + i2 / num2 * (max2 - min2));
}
limits2.push(max2);
} else if (mode.substr(0, 1) === "l") {
if (min2 <= 0) {
throw new Error("Logarithmic scales are only possible for values > 0");
}
var min_log = Math.LOG10E * log(min2);
var max_log = Math.LOG10E * log(max2);
limits2.push(min2);
for (var i$12 = 1; i$12 < num2; i$12++) {
limits2.push(pow$1(10, min_log + i$12 / num2 * (max_log - min_log)));
}
limits2.push(max2);
} else if (mode.substr(0, 1) === "q") {
limits2.push(min2);
for (var i$2 = 1; i$2 < num2; i$2++) {
var p = (values.length - 1) * i$2 / num2;
var pb = floor(p);
if (pb === p) {
limits2.push(values[pb]);
} else {
var pr = p - pb;
limits2.push(values[pb] * (1 - pr) + values[pb + 1] * pr);
}
}
limits2.push(max2);
} else if (mode.substr(0, 1) === "k") {
var cluster;
var n = values.length;
var assignments = new Array(n);
var clusterSizes = new Array(num2);
var repeat = true;
var nb_iters = 0;
var centroids = null;
centroids = [];
centroids.push(min2);
for (var i$3 = 1; i$3 < num2; i$3++) {
centroids.push(min2 + i$3 / num2 * (max2 - min2));
}
centroids.push(max2);
while (repeat) {
for (var j = 0; j < num2; j++) {
clusterSizes[j] = 0;
}
for (var i$4 = 0; i$4 < n; i$4++) {
var value = values[i$4];
var mindist = Number.MAX_VALUE;
var best = void 0;
for (var j$1 = 0; j$1 < num2; j$1++) {
var dist = abs$1(centroids[j$1] - value);
if (dist < mindist) {
mindist = dist;
best = j$1;
}
clusterSizes[best]++;
assignments[i$4] = best;
}
}
var newCentroids = new Array(num2);
for (var j$2 = 0; j$2 < num2; j$2++) {
newCentroids[j$2] = null;
}
for (var i$5 = 0; i$5 < n; i$5++) {
cluster = assignments[i$5];
if (newCentroids[cluster] === null) {
newCentroids[cluster] = values[i$5];
} else {
newCentroids[cluster] += values[i$5];
}
}
for (var j$3 = 0; j$3 < num2; j$3++) {
newCentroids[j$3] *= 1 / clusterSizes[j$3];
}
repeat = false;
for (var j$4 = 0; j$4 < num2; j$4++) {
if (newCentroids[j$4] !== centroids[j$4]) {
repeat = true;
break;
}
}
centroids = newCentroids;
nb_iters++;
if (nb_iters > 200) {
repeat = false;
}
}
var kClusters = {};
for (var j$5 = 0; j$5 < num2; j$5++) {
kClusters[j$5] = [];
}
for (var i$6 = 0; i$6 < n; i$6++) {
cluster = assignments[i$6];
kClusters[cluster].push(values[i$6]);
}
var tmpKMeansBreaks = [];
for (var j$6 = 0; j$6 < num2; j$6++) {
tmpKMeansBreaks.push(kClusters[j$6][0]);
tmpKMeansBreaks.push(kClusters[j$6][kClusters[j$6].length - 1]);
}
tmpKMeansBreaks = tmpKMeansBreaks.sort(function(a, b) {
return a - b;
});
limits2.push(tmpKMeansBreaks[0]);
for (var i$7 = 1; i$7 < tmpKMeansBreaks.length; i$7 += 2) {
var v = tmpKMeansBreaks[i$7];
if (!isNaN(v) && limits2.indexOf(v) === -1) {
limits2.push(v);
}
}
}
return limits2;
};
var analyze_1 = { analyze, limits };
var Color$3 = Color_1;
var contrast = function(a, b) {
a = new Color$3(a);
b = new Color$3(b);
var l1 = a.luminance();
var l2 = b.luminance();
return l1 > l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05);
};
var Color$2 = Color_1;
var sqrt = Math.sqrt;
var pow = Math.pow;
var min = Math.min;
var max = Math.max;
var atan2 = Math.atan2;
var abs = Math.abs;
var cos = Math.cos;
var sin = Math.sin;
var exp = Math.exp;
var PI = Math.PI;
var deltaE = function(a, b, Kl, Kc, Kh) {
if (Kl === void 0)
Kl = 1;
if (Kc === void 0)
Kc = 1;
if (Kh === void 0)
Kh = 1;
var rad2deg = function(rad) {
return 360 * rad / (2 * PI);
};
var deg2rad = function(deg) {
return 2 * PI * deg / 360;
};
a = new Color$2(a);
b = new Color$2(b);
var ref = Array.from(a.lab());
var L1 = ref[0];
var a1 = ref[1];
var b1 = ref[2];
var ref$1 = Array.from(b.lab());
var L2 = ref$1[0];
var a2 = ref$1[1];
var b2 = ref$1[2];
var avgL = (L1 + L2) / 2;
var C1 = sqrt(pow(a1, 2) + pow(b1, 2));
var C2 = sqrt(pow(a2, 2) + pow(b2, 2));
var avgC = (C1 + C2) / 2;
var G = 0.5 * (1 - sqrt(pow(avgC, 7) / (pow(avgC, 7) + pow(25, 7))));
var a1p = a1 * (1 + G);
var a2p = a2 * (1 + G);
var C1p = sqrt(pow(a1p, 2) + pow(b1, 2));
var C2p = sqrt(pow(a2p, 2) + pow(b2, 2));
var avgCp = (C1p + C2p) / 2;
var arctan1 = rad2deg(atan2(b1, a1p));
var arctan2 = rad2deg(atan2(b2, a2p));
var h1p = arctan1 >= 0 ? arctan1 : arctan1 + 360;
var h2p = arctan2 >= 0 ? arctan2 : arctan2 + 360;
var avgHp = abs(h1p - h2p) > 180 ? (h1p + h2p + 360) / 2 : (h1p + h2p) / 2;
var T = 1 - 0.17 * cos(deg2rad(avgHp - 30)) + 0.24 * cos(deg2rad(2 * avgHp)) + 0.32 * cos(deg2rad(3 * avgHp + 6)) - 0.2 * cos(deg2rad(4 * avgHp - 63));
var deltaHp = h2p - h1p;
deltaHp = abs(deltaHp) <= 180 ? deltaHp : h2p <= h1p ? deltaHp + 360 : deltaHp - 360;
deltaHp = 2 * sqrt(C1p * C2p) * sin(deg2rad(deltaHp) / 2);
var deltaL = L2 - L1;
var deltaCp = C2p - C1p;
var sl = 1 + 0.015 * pow(avgL - 50, 2) / sqrt(20 + pow(avgL - 50, 2));
var sc = 1 + 0.045 * avgCp;
var sh = 1 + 0.015 * avgCp * T;
var deltaTheta = 30 * exp(-pow((avgHp - 275) / 25, 2));
var Rc = 2 * sqrt(pow(avgCp, 7) / (pow(avgCp, 7) + pow(25, 7)));
var Rt = -Rc * sin(2 * deg2rad(deltaTheta));
var result = sqrt(pow(deltaL / (Kl * sl), 2) + pow(deltaCp / (Kc * sc), 2) + pow(deltaHp / (Kh * sh), 2) + Rt * (deltaCp / (Kc * sc)) * (deltaHp / (Kh * sh)));
return max(0, min(100, result));
};
var Color$1 = Color_1;
var distance = function(a, b, mode) {
if (mode === void 0)
mode = "lab";
a = new Color$1(a);
b = new Color$1(b);
var l1 = a.get(mode);
var l2 = b.get(mode);
var sum_sq = 0;
for (var i2 in l1) {
var d = (l1[i2] || 0) - (l2[i2] || 0);
sum_sq += d * d;
}
return Math.sqrt(sum_sq);
};
var Color = Color_1;
var valid = function() {
var args = [], len = arguments.length;
while (len--)
args[len] = arguments[len];
try {
new (Function.prototype.bind.apply(Color, [null].concat(args)))();
return true;
} catch (e) {
return false;
}
};
var chroma$1 = chroma_1;
var scale = scale$2;
var scales = {
cool: function cool() {
return scale([chroma$1.hsl(180, 1, 0.9), chroma$1.hsl(250, 0.7, 0.4)]);
},
hot: function hot() {
return scale(["#000", "#f00", "#ff0", "#fff"]).mode("rgb");
}
};
var colorbrewer = {
// sequential
OrRd: ["#fff7ec", "#fee8c8", "#fdd49e", "#fdbb84", "#fc8d59", "#ef6548", "#d7301f", "#b30000", "#7f0000"],
PuBu: ["#fff7fb", "#ece7f2", "#d0d1e6", "#a6bddb", "#74a9cf", "#3690c0", "#0570b0", "#045a8d", "#023858"],
BuPu: ["#f7fcfd", "#e0ecf4", "#bfd3e6", "#9ebcda", "#8c96c6", "#8c6bb1", "#88419d", "#810f7c", "#4d004b"],
Oranges: ["#fff5eb", "#fee6ce", "#fdd0a2", "#fdae6b", "#fd8d3c", "#f16913", "#d94801", "#a63603", "#7f2704"],
BuGn: ["#f7fcfd", "#e5f5f9", "#ccece6", "#99d8c9", "#66c2a4", "#41ae76", "#238b45", "#006d2c", "#00441b"],
YlOrBr: ["#ffffe5", "#fff7bc", "#fee391", "#fec44f", "#fe9929", "#ec7014", "#cc4c02", "#993404", "#662506"],
YlGn: ["#ffffe5", "#f7fcb9", "#d9f0a3", "#addd8e", "#78c679", "#41ab5d", "#238443", "#006837", "#004529"],
Reds: ["#fff5f0", "#fee0d2", "#fcbba1", "#fc9272", "#fb6a4a", "#ef3b2c", "#cb181d", "#a50f15", "#67000d"],
RdPu: ["#fff7f3", "#fde0dd", "#fcc5c0", "#fa9fb5", "#f768a1", "#dd3497", "#ae017e", "#7a0177", "#49006a"],
Greens: ["#f7fcf5", "#e5f5e0", "#c7e9c0", "#a1d99b", "#74c476", "#41ab5d", "#238b45", "#006d2c", "#00441b"],
YlGnBu: ["#ffffd9", "#edf8b1", "#c7e9b4", "#7fcdbb", "#41b6c4", "#1d91c0", "#225ea8", "#253494", "#081d58"],
Purples: ["#fcfbfd", "#efedf5", "#dadaeb", "#bcbddc", "#9e9ac8", "#807dba", "#6a51a3", "#54278f", "#3f007d"],
GnBu: ["#f7fcf0", "#e0f3db", "#ccebc5", "#a8ddb5", "#7bccc4", "#4eb3d3", "#2b8cbe", "#0868ac", "#084081"],
Greys: ["#ffffff", "#f0f0f0", "#d9d9d9", "#bdbdbd", "#969696", "#737373", "#525252", "#252525", "#000000"],
YlOrRd: ["#ffffcc", "#ffeda0", "#fed976", "#feb24c", "#fd8d3c", "#fc4e2a", "#e31a1c", "#bd0026", "#800026"],
PuRd: ["#f7f4f9", "#e7e1ef", "#d4b9da", "#c994c7", "#df65b0", "#e7298a", "#ce1256", "#980043", "#67001f"],
Blues: ["#f7fbff", "#deebf7", "#c6dbef", "#9ecae1", "#6baed6", "#4292c6", "#2171b5", "#08519c", "#08306b"],
PuBuGn: ["#fff7fb", "#ece2f0", "#d0d1e6", "#a6bddb", "#67a9cf", "#3690c0", "#02818a", "#016c59", "#014636"],
Viridis: ["#440154", "#482777", "#3f4a8a", "#31678e", "#26838f", "#1f9d8a", "#6cce5a", "#b6de2b", "#fee825"],
// diverging
Spectral: ["#9e0142", "#d53e4f", "#f46d43", "#fdae61", "#fee08b", "#ffffbf", "#e6f598", "#abdda4", "#66c2a5", "#3288bd", "#5e4fa2"],
RdYlGn: ["#a50026", "#d73027", "#f46d43", "#fdae61", "#fee08b", "#ffffbf", "#d9ef8b", "#a6d96a", "#66bd63", "#1a9850", "#006837"],
RdBu: ["#67001f", "#b2182b", "#d6604d", "#f4a582", "#fddbc7", "#f7f7f7", "#d1e5f0", "#92c5de", "#4393c3", "#2166ac", "#053061"],
PiYG: ["#8e0152", "#c51b7d", "#de77ae", "#f1b6da", "#fde0ef", "#f7f7f7", "#e6f5d0", "#b8e186", "#7fbc41", "#4d9221", "#276419"],
PRGn: ["#40004b", "#762a83", "#9970ab", "#c2a5cf", "#e7d4e8", "#f7f7f7", "#d9f0d3", "#a6dba0", "#5aae61", "#1b7837", "#00441b"],
RdYlBu: ["#a50026", "#d73027", "#f46d43", "#fdae61", "#fee090", "#ffffbf", "#e0f3f8", "#abd9e9", "#74add1", "#4575b4", "#313695"],
BrBG: ["#543005", "#8c510a", "#bf812d", "#dfc27d", "#f6e8c3", "#f5f5f5", "#c7eae5", "#80cdc1", "#35978f", "#01665e", "#003c30"],
RdGy: ["#67001f", "#b2182b", "#d6604d", "#f4a582", "#fddbc7", "#ffffff", "#e0e0e0", "#bababa", "#878787", "#4d4d4d", "#1a1a1a"],
PuOr: ["#7f3b08", "#b35806", "#e08214", "#fdb863", "#fee0b6", "#f7f7f7", "#d8daeb", "#b2abd2", "#8073ac", "#542788", "#2d004b"],
// qualitative
Set2: ["#66c2a5", "#fc8d62", "#8da0cb", "#e78ac3", "#a6d854", "#ffd92f", "#e5c494", "#b3b3b3"],
Accent: ["#7fc97f", "#beaed4", "#fdc086", "#ffff99", "#386cb0", "#f0027f", "#bf5b17", "#666666"],
Set1: ["#e41a1c", "#377eb8", "#4daf4a", "#984ea3", "#ff7f00", "#ffff33", "#a65628", "#f781bf", "#999999"],
Set3: ["#8dd3c7", "#ffffb3", "#bebada", "#fb8072", "#80b1d3", "#fdb462", "#b3de69", "#fccde5", "#d9d9d9", "#bc80bd", "#ccebc5", "#ffed6f"],
Dark2: ["#1b9e77", "#d95f02", "#7570b3", "#e7298a", "#66a61e", "#e6ab02", "#a6761d", "#666666"],
Paired: ["#a6cee3", "#1f78b4", "#b2df8a", "#33a02c", "#fb9a99", "#e31a1c", "#fdbf6f", "#ff7f00", "#cab2d6", "#6a3d9a", "#ffff99", "#b15928"],
Pastel2: ["#b3e2cd", "#fdcdac", "#cbd5e8", "#f4cae4", "#e6f5c9", "#fff2ae", "#f1e2cc", "#cccccc"],
Pastel1: ["#fbb4ae", "#b3cde3", "#ccebc5", "#decbe4", "#fed9a6", "#ffffcc", "#e5d8bd", "#fddaec", "#f2f2f2"]
};
for (var i = 0, list = Object.keys(colorbrewer); i < list.length; i += 1) {
var key = list[i];
colorbrewer[key.toLowerCase()] = colorbrewer[key];
}
var colorbrewer_1 = colorbrewer;
var chroma3 = chroma_1;
chroma3.average = average;
chroma3.bezier = bezier_1;
chroma3.blend = blend_1;
chroma3.cubehelix = cubehelix;
chroma3.mix = chroma3.interpolate = mix$1;
chroma3.random = random_1;
chroma3.scale = scale$2;
chroma3.analyze = analyze_1.analyze;
chroma3.contrast = contrast;
chroma3.deltaE = deltaE;
chroma3.distance = distance;
chroma3.limits = analyze_1.limits;
chroma3.valid = valid;
chroma3.scales = scales;
chroma3.colors = w3cx11_1;
chroma3.brewer = colorbrewer_1;
var chroma_js = chroma3;
return chroma_js;
});
}
});
// src/main.ts
var main_exports = {};
__export(main_exports, {
default: () => DayPlanner
});
module.exports = __toCommonJS(main_exports);
var import_obsidian6 = require("obsidian");
var import_obsidian_daily_notes_interface6 = __toESM(require_main());
// node_modules/svelte/internal/index.mjs
function noop() {
}
function assign(tar, src) {
for (const k in src)
tar[k] = src[k];
return tar;
}
function is_promise(value) {
return !!value && (typeof value === "object" || typeof value === "function") && typeof value.then === "function";
}
function run(fn) {
return fn();
}
function blank_object() {
return /* @__PURE__ */ Object.create(null);
}
function run_all(fns) {
fns.forEach(run);
}
function is_function(thing) {
return typeof thing === "function";
}
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || (a && typeof a === "object" || typeof a === "function");
}
function is_empty(obj) {
return Object.keys(obj).length === 0;
}
function subscribe(store, ...callbacks) {
if (store == null) {
return noop;
}
const unsub = store.subscribe(...callbacks);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
function get_store_value(store) {
let value;
subscribe(store, (_) => value = _)();
return value;
}
function component_subscribe(component, store, callback) {
component.$$.on_destroy.push(subscribe(store, callback));
}
function create_slot(definition, ctx, $$scope, fn) {
if (definition) {
const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);
return definition[0](slot_ctx);
}
}
function get_slot_context(definition, ctx, $$scope, fn) {
return definition[1] && fn ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) : $$scope.ctx;
}
function get_slot_changes(definition, $$scope, dirty, fn) {
if (definition[2] && fn) {
const lets = definition[2](fn(dirty));
if ($$scope.dirty === void 0) {
return lets;
}
if (typeof lets === "object") {
const merged = [];
const len = Math.max($$scope.dirty.length, lets.length);
for (let i = 0; i < len; i += 1) {
merged[i] = $$scope.dirty[i] | lets[i];
}
return merged;
}
return $$scope.dirty | lets;
}
return $$scope.dirty;
}
function update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) {
if (slot_changes) {
const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);
slot.p(slot_context, slot_changes);
}
}
function get_all_dirty_from_scope($$scope) {
if ($$scope.ctx.length > 32) {
const dirty = [];
const length = $$scope.ctx.length / 32;
for (let i = 0; i < length; i++) {
dirty[i] = -1;
}
return dirty;
}
return -1;
}
function exclude_internal_props(props) {
const result = {};
for (const k in props)
if (k[0] !== "$")
result[k] = props[k];
return result;
}
function compute_rest_props(props, keys) {
const rest = {};
keys = new Set(keys);
for (const k in props)
if (!keys.has(k) && k[0] !== "$")
rest[k] = props[k];
return rest;
}
function set_store_value(store, ret, value) {
store.set(value);
return ret;
}
function action_destroyer(action_result) {
return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;
}
var globals = typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : global;
var ResizeObserverSingleton = class _ResizeObserverSingleton {
constructor(options) {
this.options = options;
this._listeners = "WeakMap" in globals ? /* @__PURE__ */ new WeakMap() : void 0;
}
observe(element2, listener) {
this._listeners.set(element2, listener);
this._getObserver().observe(element2, this.options);
return () => {
this._listeners.delete(element2);
this._observer.unobserve(element2);
};
}
_getObserver() {
var _a;
return (_a = this._observer) !== null && _a !== void 0 ? _a : this._observer = new ResizeObserver((entries) => {
var _a2;
for (const entry of entries) {
_ResizeObserverSingleton.entries.set(entry.target, entry);
(_a2 = this._listeners.get(entry.target)) === null || _a2 === void 0 ? void 0 : _a2(entry);
}
});
}
};
ResizeObserverSingleton.entries = "WeakMap" in globals ? /* @__PURE__ */ new WeakMap() : void 0;
var is_hydrating = false;
function start_hydrating() {
is_hydrating = true;
}
function end_hydrating() {
is_hydrating = false;
}
function upper_bound(low, high, key, value) {
while (low < high) {
const mid = low + (high - low >> 1);
if (key(mid) <= value) {
low = mid + 1;
} else {
high = mid;
}
}
return low;
}
function init_hydrate(target) {
if (target.hydrate_init)
return;
target.hydrate_init = true;
let children2 = target.childNodes;
if (target.nodeName === "HEAD") {
const myChildren = [];
for (let i = 0; i < children2.length; i++) {
const node = children2[i];
if (node.claim_order !== void 0) {
myChildren.push(node);
}
}
children2 = myChildren;
}
const m = new Int32Array(children2.length + 1);
const p = new Int32Array(children2.length);
m[0] = -1;
let longest = 0;
for (let i = 0; i < children2.length; i++) {
const current = children2[i].claim_order;
const seqLen = (longest > 0 && children2[m[longest]].claim_order <= current ? longest + 1 : upper_bound(1, longest, (idx) => children2[m[idx]].claim_order, current)) - 1;
p[i] = m[seqLen] + 1;
const newLen = seqLen + 1;
m[newLen] = i;
longest = Math.max(newLen, longest);
}
const lis = [];
const toMove = [];
let last3 = children2.length - 1;
for (let cur = m[longest] + 1; cur != 0; cur = p[cur - 1]) {
lis.push(children2[cur - 1]);
for (; last3 >= cur; last3--) {
toMove.push(children2[last3]);
}
last3--;
}
for (; last3 >= 0; last3--) {
toMove.push(children2[last3]);
}
lis.reverse();
toMove.sort((a, b) => a.claim_order - b.claim_order);
for (let i = 0, j = 0; i < toMove.length; i++) {
while (j < lis.length && toMove[i].claim_order >= lis[j].claim_order) {
j++;
}
const anchor = j < lis.length ? lis[j] : null;
target.insertBefore(toMove[i], anchor);
}
}
function append(target, node) {
target.appendChild(node);
}
function append_styles(target, style_sheet_id, styles) {
const append_styles_to = get_root_for_style(target);
if (!append_styles_to.getElementById(style_sheet_id)) {
const style = element("style");
style.id = style_sheet_id;
style.textContent = styles;
append_stylesheet(append_styles_to, style);
}
}
function get_root_for_style(node) {
if (!node)
return document;
const root = node.getRootNode ? node.getRootNode() : node.ownerDocument;
if (root && root.host) {
return root;
}
return node.ownerDocument;
}
function append_stylesheet(node, style) {
append(node.head || node, style);
return style.sheet;
}
function append_hydration(target, node) {
if (is_hydrating) {
init_hydrate(target);
if (target.actual_end_child === void 0 || target.actual_end_child !== null && target.actual_end_child.parentNode !== target) {
target.actual_end_child = target.firstChild;
}
while (target.actual_end_child !== null && target.actual_end_child.claim_order === void 0) {
target.actual_end_child = target.actual_end_child.nextSibling;
}
if (node !== target.actual_end_child) {
if (node.claim_order !== void 0 || node.parentNode !== target) {
target.insertBefore(node, target.actual_end_child);
}
} else {
target.actual_end_child = node.nextSibling;
}
} else if (node.parentNode !== target || node.nextSibling !== null) {
target.appendChild(node);
}
}
function insert(target, node, anchor) {
target.insertBefore(node, anchor || null);
}
function insert_hydration(target, node, anchor) {
if (is_hydrating && !anchor) {
append_hydration(target, node);
} else if (node.parentNode !== target || node.nextSibling != anchor) {
target.insertBefore(node, anchor || null);
}
}
function detach(node) {
if (node.parentNode) {
node.parentNode.removeChild(node);
}
}
function destroy_each(iterations, detaching) {
for (let i = 0; i < iterations.length; i += 1) {
if (iterations[i])
iterations[i].d(detaching);
}
}
function element(name) {
return document.createElement(name);
}
function svg_element(name) {
return document.createElementNS("http://www.w3.org/2000/svg", name);
}
function text(data) {
return document.createTextNode(data);
}
function space() {
return text(" ");
}
function empty() {
return text("");
}
function listen(node, event, handler, options) {
node.addEventListener(event, handler, options);
return () => node.removeEventListener(event, handler, options);
}
function stop_propagation(fn) {
return function(event) {
event.stopPropagation();
return fn.call(this, event);
};
}
function attr(node, attribute, value) {
if (value == null)
node.removeAttribute(attribute);
else if (node.getAttribute(attribute) !== value)
node.setAttribute(attribute, value);
}
function set_svg_attributes(node, attributes) {
for (const key in attributes) {
attr(node, key, attributes[key]);
}
}
function children(element2) {
return Array.from(element2.childNodes);
}
function init_claim_info(nodes) {
if (nodes.claim_info === void 0) {
nodes.claim_info = { last_index: 0, total_claimed: 0 };
}
}
function claim_node(nodes, predicate, processNode, createNode, dontUpdateLastIndex = false) {
init_claim_info(nodes);
const resultNode = (() => {
for (let i = nodes.claim_info.last_index; i < nodes.length; i++) {
const node = nodes[i];
if (predicate(node)) {
const replacement = processNode(node);
if (replacement === void 0) {
nodes.splice(i, 1);
} else {
nodes[i] = replacement;
}
if (!dontUpdateLastIndex) {
nodes.claim_info.last_index = i;
}
return node;
}
}
for (let i = nodes.claim_info.last_index - 1; i >= 0; i--) {
const node = nodes[i];
if (predicate(node)) {
const replacement = processNode(node);
if (replacement === void 0) {
nodes.splice(i, 1);
} else {
nodes[i] = replacement;
}
if (!dontUpdateLastIndex) {
nodes.claim_info.last_index = i;
} else if (replacement === void 0) {
nodes.claim_info.last_index--;
}
return node;
}
}
return createNode();
})();
resultNode.claim_order = nodes.claim_info.total_claimed;
nodes.claim_info.total_claimed += 1;
return resultNode;
}
function claim_element_base(nodes, name, attributes, create_element) {
return claim_node(nodes, (node) => node.nodeName === name, (node) => {
const remove = [];
for (let j = 0; j < node.attributes.length; j++) {
const attribute = node.attributes[j];
if (!attributes[attribute.name]) {
remove.push(attribute.name);
}
}
remove.forEach((v) => node.removeAttribute(v));
return void 0;
}, () => create_element(name));
}
function claim_svg_element(nodes, name, attributes) {
return claim_element_base(nodes, name, attributes, svg_element);
}
function set_data(text2, data) {
data = "" + data;
if (text2.data === data)
return;
text2.data = data;
}
function set_style(node, key, value, important) {
if (value == null) {
node.style.removeProperty(key);
} else {
node.style.setProperty(key, value, important ? "important" : "");
}
}
function select_option(select, value, mounting) {
for (let i = 0; i < select.options.length; i += 1) {
const option = select.options[i];
if (option.__value === value) {
option.selected = true;
return;
}
}
if (!mounting || value !== void 0) {
select.selectedIndex = -1;
}
}
function toggle_class(element2, name, toggle) {
element2.classList[toggle ? "add" : "remove"](name);
}
var current_component;
function set_current_component(component) {
current_component = component;
}
function get_current_component() {
if (!current_component)
throw new Error("Function called outside component initialization");
return current_component;
}
function onDestroy(fn) {
get_current_component().$$.on_destroy.push(fn);
}
function bubble(component, event) {
const callbacks = component.$$.callbacks[event.type];
if (callbacks) {
callbacks.slice().forEach((fn) => fn.call(this, event));
}
}
var dirty_components = [];
var binding_callbacks = [];
var render_callbacks = [];
var flush_callbacks = [];
var resolved_promise = /* @__PURE__ */ Promise.resolve();
var update_scheduled = false;
function schedule_update() {
if (!update_scheduled) {
update_scheduled = true;
resolved_promise.then(flush);
}
}
function add_render_callback(fn) {
render_callbacks.push(fn);
}
var seen_callbacks = /* @__PURE__ */ new Set();
var flushidx = 0;
function flush() {
if (flushidx !== 0) {
return;
}
const saved_component = current_component;
do {
try {
while (flushidx < dirty_components.length) {
const component = dirty_components[flushidx];
flushidx++;
set_current_component(component);
update(component.$$);
}
} catch (e) {
dirty_components.length = 0;
flushidx = 0;
throw e;
}
set_current_component(null);
dirty_components.length = 0;
flushidx = 0;
while (binding_callbacks.length)
binding_callbacks.pop()();
for (let i = 0; i < render_callbacks.length; i += 1) {
const callback = render_callbacks[i];
if (!seen_callbacks.has(callback)) {
seen_callbacks.add(callback);
callback();
}
}
render_callbacks.length = 0;
} while (dirty_components.length);
while (flush_callbacks.length) {
flush_callbacks.pop()();
}
update_scheduled = false;
seen_callbacks.clear();
set_current_component(saved_component);
}
function update($$) {
if ($$.fragment !== null) {
$$.update();
run_all($$.before_update);
const dirty = $$.dirty;
$$.dirty = [-1];
$$.fragment && $$.fragment.p($$.ctx, dirty);
$$.after_update.forEach(add_render_callback);
}
}
function flush_render_callbacks(fns) {
const filtered = [];
const targets = [];
render_callbacks.forEach((c) => fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c));
targets.forEach((c) => c());
render_callbacks = filtered;
}
var outroing = /* @__PURE__ */ new Set();
var outros;
function group_outros() {
outros = {
r: 0,
c: [],
p: outros
// parent group
};
}
function check_outros() {
if (!outros.r) {
run_all(outros.c);
}
outros = outros.p;
}
function transition_in(block, local) {
if (block && block.i) {
outroing.delete(block);
block.i(local);
}
}
function transition_out(block, local, detach2, callback) {
if (block && block.o) {
if (outroing.has(block))
return;
outroing.add(block);
outros.c.push(() => {
outroing.delete(block);
if (callback) {
if (detach2)
block.d(1);
callback();
}
});
block.o(local);
} else if (callback) {
callback();
}
}
function handle_promise(promise, info) {
const token = info.token = {};
function update2(type, index, key, value) {
if (info.token !== token)
return;
info.resolved = value;
let child_ctx = info.ctx;
if (key !== void 0) {
child_ctx = child_ctx.slice();
child_ctx[key] = value;
}
const block = type && (info.current = type)(child_ctx);
let needs_flush = false;
if (info.block) {
if (info.blocks) {
info.blocks.forEach((block2, i) => {
if (i !== index && block2) {
group_outros();
transition_out(block2, 1, 1, () => {
if (info.blocks[i] === block2) {
info.blocks[i] = null;
}
});
check_outros();
}
});
} else {
info.block.d(1);
}
block.c();
transition_in(block, 1);
block.m(info.mount(), info.anchor);
needs_flush = true;
}
info.block = block;
if (info.blocks)
info.blocks[index] = block;
if (needs_flush) {
flush();
}
}
if (is_promise(promise)) {
const current_component2 = get_current_component();
promise.then((value) => {
set_current_component(current_component2);
update2(info.then, 1, info.value, value);
set_current_component(null);
}, (error) => {
set_current_component(current_component2);
update2(info.catch, 2, info.error, error);
set_current_component(null);
if (!info.hasCatch) {
throw error;
}
});
if (info.current !== info.pending) {
update2(info.pending, 0);
return true;
}
} else {
if (info.current !== info.then) {
update2(info.then, 1, info.value, promise);
return true;
}
info.resolved = promise;
}
}
function update_await_block_branch(info, ctx, dirty) {
const child_ctx = ctx.slice();
const { resolved } = info;
if (info.current === info.then) {
child_ctx[info.value] = resolved;
}
if (info.current === info.catch) {
child_ctx[info.error] = resolved;
}
info.block.p(child_ctx, dirty);
}
function outro_and_destroy_block(block, lookup) {
transition_out(block, 1, 1, () => {
lookup.delete(block.key);
});
}
function update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block7, next, get_context) {
let o = old_blocks.length;
let n = list.length;
let i = o;
const old_indexes = {};
while (i--)
old_indexes[old_blocks[i].key] = i;
const new_blocks = [];
const new_lookup = /* @__PURE__ */ new Map();
const deltas = /* @__PURE__ */ new Map();
const updates = [];
i = n;
while (i--) {
const child_ctx = get_context(ctx, list, i);
const key = get_key(child_ctx);
let block = lookup.get(key);
if (!block) {
block = create_each_block7(key, child_ctx);
block.c();
} else if (dynamic) {
updates.push(() => block.p(child_ctx, dirty));
}
new_lookup.set(key, new_blocks[i] = block);
if (key in old_indexes)
deltas.set(key, Math.abs(i - old_indexes[key]));
}
const will_move = /* @__PURE__ */ new Set();
const did_move = /* @__PURE__ */ new Set();
function insert2(block) {
transition_in(block, 1);
block.m(node, next);
lookup.set(block.key, block);
next = block.first;
n--;
}
while (o && n) {
const new_block = new_blocks[n - 1];
const old_block = old_blocks[o - 1];
const new_key = new_block.key;
const old_key = old_block.key;
if (new_block === old_block) {
next = new_block.first;
o--;
n--;
} else if (!new_lookup.has(old_key)) {
destroy(old_block, lookup);
o--;
} else if (!lookup.has(new_key) || will_move.has(new_key)) {
insert2(new_block);
} else if (did_move.has(old_key)) {
o--;
} else if (deltas.get(new_key) > deltas.get(old_key)) {
did_move.add(new_key);
insert2(new_block);
} else {
will_move.add(old_key);
o--;
}
}
while (o--) {
const old_block = old_blocks[o];
if (!new_lookup.has(old_block.key))
destroy(old_block, lookup);
}
while (n)
insert2(new_blocks[n - 1]);
run_all(updates);
return new_blocks;
}
function get_spread_update(levels, updates) {
const update2 = {};
const to_null_out = {};
const accounted_for = { $$scope: 1 };
let i = levels.length;
while (i--) {
const o = levels[i];
const n = updates[i];
if (n) {
for (const key in o) {
if (!(key in n))
to_null_out[key] = 1;
}
for (const key in n) {
if (!accounted_for[key]) {
update2[key] = n[key];
accounted_for[key] = 1;
}
}
levels[i] = n;
} else {
for (const key in o) {
accounted_for[key] = 1;
}
}
}
for (const key in to_null_out) {
if (!(key in update2))
update2[key] = void 0;
}
return update2;
}
function get_spread_object(spread_props) {
return typeof spread_props === "object" && spread_props !== null ? spread_props : {};
}
var _boolean_attributes = [
"allowfullscreen",
"allowpaymentrequest",
"async",
"autofocus",
"autoplay",
"checked",
"controls",
"default",
"defer",
"disabled",
"formnovalidate",
"hidden",
"inert",
"ismap",
"loop",
"multiple",
"muted",
"nomodule",
"novalidate",
"open",
"playsinline",
"readonly",
"required",
"reversed",
"selected"
];
var boolean_attributes = /* @__PURE__ */ new Set([..._boolean_attributes]);
function create_component(block) {
block && block.c();
}
function claim_component(block, parent_nodes) {
block && block.l(parent_nodes);
}
function mount_component(component, target, anchor, customElement) {
const { fragment, after_update } = component.$$;
fragment && fragment.m(target, anchor);
if (!customElement) {
add_render_callback(() => {
const new_on_destroy = component.$$.on_mount.map(run).filter(is_function);
if (component.$$.on_destroy) {
component.$$.on_destroy.push(...new_on_destroy);
} else {
run_all(new_on_destroy);
}
component.$$.on_mount = [];
});
}
after_update.forEach(add_render_callback);
}
function destroy_component(component, detaching) {
const $$ = component.$$;
if ($$.fragment !== null) {
flush_render_callbacks($$.after_update);
run_all($$.on_destroy);
$$.fragment && $$.fragment.d(detaching);
$$.on_destroy = $$.fragment = null;
$$.ctx = [];
}
}
function make_dirty(component, i) {
if (component.$$.dirty[0] === -1) {
dirty_components.push(component);
schedule_update();
component.$$.dirty.fill(0);
}
component.$$.dirty[i / 31 | 0] |= 1 << i % 31;
}
function init(component, options, instance20, create_fragment24, not_equal, props, append_styles2, dirty = [-1]) {
const parent_component = current_component;
set_current_component(component);
const $$ = component.$$ = {
fragment: null,
ctx: [],
// state
props,
update: noop,
not_equal,
bound: blank_object(),
// lifecycle
on_mount: [],
on_destroy: [],
on_disconnect: [],
before_update: [],
after_update: [],
context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),
// everything else
callbacks: blank_object(),
dirty,
skip_bound: false,
root: options.target || parent_component.$$.root
};
append_styles2 && append_styles2($$.root);
let ready = false;
$$.ctx = instance20 ? instance20(component, options.props || {}, (i, ret, ...rest) => {
const value = rest.length ? rest[0] : ret;
if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {
if (!$$.skip_bound && $$.bound[i])
$$.bound[i](value);
if (ready)
make_dirty(component, i);
}
return ret;
}) : [];
$$.update();
ready = true;
run_all($$.before_update);
$$.fragment = create_fragment24 ? create_fragment24($$.ctx) : false;
if (options.target) {
if (options.hydrate) {
start_hydrating();
const nodes = children(options.target);
$$.fragment && $$.fragment.l(nodes);
nodes.forEach(detach);
} else {
$$.fragment && $$.fragment.c();
}
if (options.intro)
transition_in(component.$$.fragment);
mount_component(component, options.target, options.anchor, options.customElement);
end_hydrating();
flush();
}
set_current_component(parent_component);
}
var SvelteElement;
if (typeof HTMLElement === "function") {
SvelteElement = class extends HTMLElement {
constructor() {
super();
this.attachShadow({ mode: "open" });
}
connectedCallback() {
const { on_mount } = this.$$;
this.$$.on_disconnect = on_mount.map(run).filter(is_function);
for (const key in this.$$.slotted) {
this.appendChild(this.$$.slotted[key]);
}
}
attributeChangedCallback(attr2, _oldValue, newValue) {
this[attr2] = newValue;
}
disconnectedCallback() {
run_all(this.$$.on_disconnect);
}
$destroy() {
destroy_component(this, 1);
this.$destroy = noop;
}
$on(type, callback) {
if (!is_function(callback)) {
return noop;
}
const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);
callbacks.push(callback);
return () => {
const index = callbacks.indexOf(callback);
if (index !== -1)
callbacks.splice(index, 1);
};
}
$set($$props) {
if (this.$$set && !is_empty($$props)) {
this.$$.skip_bound = true;
this.$$set($$props);
this.$$.skip_bound = false;
}
}
};
}
var SvelteComponent = class {
$destroy() {
destroy_component(this, 1);
this.$destroy = noop;
}
$on(type, callback) {
if (!is_function(callback)) {
return noop;
}
const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);
callbacks.push(callback);
return () => {
const index = callbacks.indexOf(callback);
if (index !== -1)
callbacks.splice(index, 1);
};
}
$set($$props) {
if (this.$$set && !is_empty($$props)) {
this.$$.skip_bound = true;
this.$$set($$props);
this.$$.skip_bound = false;
}
}
};
// node_modules/svelte/store/index.mjs
var subscriber_queue = [];
function readable(value, start) {
return {
subscribe: writable(value, start).subscribe
};
}
function writable(value, start = noop) {
let stop;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update2(fn) {
set(fn(value));
}
function subscribe2(run2, invalidate = noop) {
const subscriber = [run2, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set) || noop;
}
run2(value);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update: update2, subscribe: subscribe2 };
}
function derived(stores, fn, initial_value) {
const single = !Array.isArray(stores);
const stores_array = single ? [stores] : stores;
const auto = fn.length < 2;
return readable(initial_value, (set) => {
let started = false;
const values = [];
let pending = 0;
let cleanup = noop;
const sync = () => {
if (pending) {
return;
}
cleanup();
const result = fn(single ? values[0] : values, set);
if (auto) {
set(result);
} else {
cleanup = is_function(result) ? result : noop;
}
};
const unsubscribers = stores_array.map((store, i) => subscribe(store, (value) => {
values[i] = value;
pending &= ~(1 << i);
if (started) {
sync();
}
}, () => {
pending |= 1 << i;
}));
started = true;
sync();
return function stop() {
run_all(unsubscribers);
cleanup();
started = false;
};
});
}
// src/constants.ts
var viewTypeTimeline = "timeline";
var viewTypeWeekly = "weekly";
var defaultDurationMinutes = 30;
var snapStepMinutes = 10;
var icons = [
"any-key",
"audio-file",
"blocks",
"broken-link",
"bullet-list",
"calendar-with-checkmark",
"checkmark",
"create-new",
"cross",
"cross-in-box",
"crossed-star",
"dice",
"document",
"documents",
"dot-network",
"enter",
"expand-vertically",
"filled-pin",
"folder",
"gear",
"go-to-file",
"hashtag",
"help",
"horizontal-split",
"image-file",
"info",
"install",
"languages",
"left-arrow",
"left-arrow-with-tail",
"lines-of-text",
"link",
"logo-crystal",
"magnifying-glass",
"microphone",
"microphone-filled",
"open-vault",
"pane-layout",
"paper-plane",
"pdf-file",
"pencil",
"pin",
"popup-open",
"presentation",
"reset",
"right-arrow",
"right-arrow-with-tail",
"right-triangle",
"search",
"sheets-in-box",
"star",
"star-list",
"switch",
"three-horizontal-bars",
"trash",
"two-columns",
"up-and-down-arrows",
"uppercase-lowercase-a",
"vault",
"vertical-split",
"vertical-three-dots"
];
// src/global-store/app-store.ts
var appStore = writable();
// src/global-store/settings.ts
var settings = writable({
zoomLevel: 1,
startHour: 0,
centerNeedle: true,
showHelp: true,
timelineDateFormat: "LLLL",
plannerHeading: "Day planner",
plannerHeadingLevel: 1,
timelineColored: false,
timelineStartColor: "#006466",
timelineEndColor: "#4d194d"
});
// src/global-store/visible-date-range.ts
var visibleDateRange = writable();
// src/global-store/visible-day-in-timeline.ts
var visibleDayInTimeline = writable(window.moment());
// src/service/obsidian-facade.ts
var import_obsidian = require("obsidian");
var import_obsidian_daily_notes_interface = __toESM(require_main());
var import_typed_assert = __toESM(require_build());
// node_modules/ts-dedent/esm/index.js
function dedent(templ) {
var values = [];
for (var _i = 1; _i < arguments.length; _i++) {
values[_i - 1] = arguments[_i];
}
var strings = Array.from(typeof templ === "string" ? [templ] : templ);
strings[strings.length - 1] = strings[strings.length - 1].replace(/\r?\n([\t ]*)$/, "");
var indentLengths = strings.reduce(function(arr, str) {
var matches = str.match(/\n([\t ]+|(?!\s).)/g);
if (matches) {
return arr.concat(matches.map(function(match) {
var _a, _b;
return (_b = (_a = match.match(/[\t ]/g)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;
}));
}
return arr;
}, []);
if (indentLengths.length) {
var pattern_1 = new RegExp("\n[ ]{" + Math.min.apply(Math, indentLengths) + "}", "g");
strings = strings.map(function(str) {
return str.replace(pattern_1, "\n");
});
}
strings[0] = strings[0].replace(/^\r?\n/, "");
var string = strings[0];
values.forEach(function(value, i) {
var endentations = string.match(/(?:^|\n)( *)$/);
var endentation = endentations ? endentations[1] : "";
var indentedValue = value;
if (typeof value === "string" && value.includes("\n")) {
indentedValue = String(value).split("\n").map(function(str, i2) {
return i2 === 0 ? str : "" + endentation + str;
}).join("\n");
}
string += indentedValue + strings[i + 1];
});
return string;
}
// obsidian-metadata-utils/src/position.ts
var getTextAtPosition = (textInput, pos) => textInput.substring(pos.start.offset, pos.end.offset);
// obsidian-metadata-utils/src/list.ts
function isTopLevelListItem(listItem) {
return listItem.parent < 0;
}
// src/regexp.ts
var ulToken = `[-*+]`;
var olToken = `\\d+\\.`;
var listToken = `(${ulToken}|${olToken})\\s+`;
var checkbox = `\\[(?<completion>[^\\]])]\\s+`;
var checkboxOrNothing = `(${checkbox})?`;
var durationSeparator = `\\s*-{1,2}\\s*`;
var hours = `\\d{1,2}`;
var minutes = `\\d{2}`;
var hourMinuteSeparator = `[:. ]`;
var time = `(${hours})(?:${hourMinuteSeparator}?(${minutes}))?\\s*([apAP][mM])?`;
var timeRegExp = new RegExp(time);
var timestampRegExp = new RegExp(
`^(?<listTokens>${listToken}${checkboxOrNothing})(?<times>(?<start>${time})(?:${durationSeparator}(?<end>${time}))?)(?<text>.+)$`,
"im"
);
// src/util/id.ts
function getId() {
return String(Math.random());
}
// src/util/moment.ts
var import_fp = __toESM(require_fp());
var moment = window.moment;
function getMinutesSinceMidnight(moment2) {
return moment2.diff(moment2.clone().startOf("day"), "minutes");
}
function getMinutesSinceMidnightOfDayTo(day, moment2) {
return getDiffInMinutes(moment2, day.clone().startOf("day"));
}
function getDiffInMinutes(a, b) {
return Math.abs(a.diff(b, "minutes"));
}
function getDaysOfCurrentWeek() {
return getDaysOfWeek(window.moment());
}
function getDaysOfWeek(moment2) {
const firstDay = moment2.clone().startOf("isoWeek");
return (0, import_fp.range)(1, 7).reduce(
(result, dayIndex) => {
const nextDay = firstDay.clone().add(dayIndex, "day");
return [...result, nextDay];
},
[firstDay]
);
}
function minutesToMomentOfDay(minutesSinceMidnight, moment2) {
return moment2.clone().startOf("day").add(minutesSinceMidnight, "minutes");
}
function minutesToMoment(minutesSinceMidnight) {
return moment().startOf("day").add(minutesSinceMidnight, "minutes");
}
function addMinutes(moment2, minutes2) {
return moment2.clone().add(minutes2, "minutes");
}
function getRelationToNow(now, start, end) {
if (end.isBefore(now)) {
return "past";
}
if (start.isAfter(now)) {
return "future";
}
return "present";
}
function isToday(moment2) {
return moment2.isSame(window.moment(), "day");
}
// src/parser/calculate-default-duration.ts
function calculateDefaultDuration(item, next) {
if (item.endTime) {
return getDiffInMinutes(item.startTime, item.endTime);
}
if (next) {
const minutesUntilNext = getDiffInMinutes(next.startTime, item.startTime);
if (minutesUntilNext < defaultDurationMinutes) {
return minutesUntilNext;
}
}
return defaultDurationMinutes;
}
// src/parser/timestamp/timestamp.ts
function parseTimestamp(asText, day) {
if (!asText) {
return null;
}
const result = timeRegExp.exec(asText);
if (result === null) {
throw new Error(`${asText} is not a valid timestamp`);
}
const [, hours2, minutes2, ampm] = result;
let parsedHours = parseInt(hours2);
if (isNaN(parsedHours)) {
throw new Error(`${asText} is not a valid timestamp`);
}
const parsedMinutes = parseInt(minutes2) || 0;
if ((ampm == null ? void 0 : ampm.toLowerCase()) === "pm" && parsedHours < 12) {
parsedHours += 12;
}
const timeOfDay = window.moment.duration({
hours: parsedHours,
minutes: parsedMinutes
});
return day.clone().startOf("day").add(timeOfDay);
}
function taskLineToString(planItem, { startMinutes, durationMinutes }) {
return `${planItem.listTokens}${createTimestamp(
startMinutes,
durationMinutes
)} ${planItem.firstLineText}`;
}
function createTimestamp(startMinutes, durationMinutes) {
const start = minutesToMoment(startMinutes);
const end = addMinutes(start, durationMinutes);
return `${formatTimestamp(start)} - ${formatTimestamp(end)}`;
}
function formatTimestamp(moment2) {
return moment2.format("HH:mm");
}
// src/parser/parser.ts
function parsePlanItems(content, metadata, planHeadingContent, path, day) {
const listItemsUnderPlan = getListItemsUnderHeading(
metadata,
planHeadingContent
);
if (!listItemsUnderPlan) {
return [];
}
const listItemsWithContent = getListItemContent(content, listItemsUnderPlan);
return listItemsWithContent.map(
(li) => createPlanItem({
line: li.listItemLineContent,
completeContent: li.listItemCompleteContent,
location: { path, line: li.line },
day
})
).filter((item) => item !== null).map((item, index, items) => {
const next = items[index + 1];
const durationMinutes = calculateDefaultDuration(item, next);
const endTime = item.endTime || item.startTime.clone().add(durationMinutes, "minutes");
return {
...item,
endTime,
startMinutes: getMinutesSinceMidnightOfDayTo(day, item.startTime),
endMinutes: getMinutesSinceMidnightOfDayTo(day, endTime),
durationMinutes
};
}).sort((a, b) => a.startMinutes - b.startMinutes);
}
function getListItemsUnderHeading(metadata, heading) {
var _a;
const { headings } = metadata;
if (!headings) {
return [];
}
const planHeadingIndex = headings.findIndex((h) => h.heading === heading);
if (planHeadingIndex < 0) {
return [];
}
const planHeading = headings[planHeadingIndex];
const nextHeadingOfSameLevel = headings.slice(planHeadingIndex + 1).find((heading2) => heading2.level <= planHeading.level);
return (_a = metadata.listItems) == null ? void 0 : _a.filter((li) => {
const isBelowPlan = li.position.start.line > planHeading.position.start.line;
const isAboveNextHeadingIfItExists = !nextHeadingOfSameLevel || li.position.start.line < nextHeadingOfSameLevel.position.start.line;
return isBelowPlan && isAboveNextHeadingIfItExists;
});
}
function getHeadingByText(metadata, text2) {
const { headings = [] } = metadata;
return headings == null ? void 0 : headings.find((h) => h.heading === text2);
}
function createPlanItem({
line,
completeContent,
location,
day
}) {
const match = timestampRegExp.exec(line.trim());
if (!match) {
return null;
}
const {
groups: { listTokens, start, end, text: text2 }
} = match;
const startTime = parseTimestamp(start, day);
return {
listTokens,
startTime,
endTime: parseTimestamp(end, day),
rawStartTime: start,
rawEndTime: end,
text: getDisplayedText(match, completeContent),
firstLineText: text2,
location,
id: getId()
};
}
function getDisplayedText({ groups: { text: text2, listTokens, completion } }, completeContent) {
const isTask = (completion == null ? void 0 : completion.length) > 0;
const indexOfFirstNewline = completeContent.indexOf("\n");
const indexAfterFirstNewline = indexOfFirstNewline + 1;
const linesAfterFirst = completeContent.substring(indexAfterFirstNewline);
if (indexOfFirstNewline < 0) {
if (isTask) {
return `${listTokens}${text2}`;
}
return text2;
}
if (isTask) {
return `${listTokens}${text2}
${linesAfterFirst}`;
}
const formattedLinesAfterFirst = dedent(linesAfterFirst).trimStart();
return `${text2}
${formattedLinesAfterFirst}`;
}
function groupTopListItemsWithDescendants(listItems) {
return listItems.reduce((result, current) => {
if (isTopLevelListItem(current)) {
result.push({ root: current, descendants: [] });
} else {
const previousTopListItem = result[result.length - 1];
previousTopListItem.descendants.push(current);
}
return result;
}, []);
}
function getListItemContent(content, listItems) {
return groupTopListItemsWithDescendants(listItems).map(
({ root, descendants }) => {
var _a, _b;
const lastDescendantPosition = (_b = (_a = descendants == null ? void 0 : descendants[descendants.length - 1]) == null ? void 0 : _a.position) == null ? void 0 : _b.end;
const betweenRootAndLastDescendant = {
start: root.position.start,
end: lastDescendantPosition || root.position.end
};
return {
line: root.position.start.line,
listItemLineContent: getTextAtPosition(content, root.position),
listItemCompleteContent: getTextAtPosition(
content,
betweenRootAndLastDescendant
)
};
}
);
}
// src/service/obsidian-facade.ts
var ObsidianFacade = class {
constructor(workspace, vault, metadataCache, settings2) {
this.workspace = workspace;
this.vault = vault;
this.metadataCache = metadataCache;
this.settings = settings2;
}
async openFileInEditor(file) {
var _a;
const leaf = this.workspace.getLeaf(false);
await leaf.openFile(file);
return (_a = this.workspace.activeEditor) == null ? void 0 : _a.editor;
}
// todo: this class should not know about daily notes
async openFileForDay(moment2) {
const dailyNote = (0, import_obsidian_daily_notes_interface.getDailyNote)(moment2, (0, import_obsidian_daily_notes_interface.getAllDailyNotes)()) || await (0, import_obsidian_daily_notes_interface.createDailyNote)(moment2);
return this.openFileInEditor(dailyNote);
}
getFileByPath(path) {
const file = this.vault.getAbstractFileByPath(path);
(0, import_typed_assert.isInstanceOf)(file, import_obsidian.TFile, `Unable to open file: ${path}`);
return file;
}
getMetadataForPath(path) {
const file = this.getFileByPath(path);
return this.metadataCache.getFileCache(file);
}
async revealLineInFile(path, line) {
var _a;
const file = this.getFileByPath(path);
const editor = await this.openFileInEditor(file);
(_a = this.workspace.getActiveViewOfType(import_obsidian.MarkdownView)) == null ? void 0 : _a.setEphemeralState({ line });
editor.setCursor({ line, ch: 0 });
}
async editFile(path, editFn) {
const file = this.vault.getAbstractFileByPath(path);
(0, import_typed_assert.isInstanceOf)(file, import_obsidian.TFile, `${path} is not a markdown file`);
const contents = await this.vault.read(file);
const newContents = editFn(contents);
await this.vault.modify(file, newContents);
}
// todo: move to plan-editor. it should be a wrapper for plans
async getPlanItemsFromFile(file) {
if (!file) {
return [];
}
const { plannerHeading } = this.settings;
const fileContents = await this.vault.read(file);
const metadata = this.metadataCache.getFileCache(file);
const fileDay = (0, import_obsidian_daily_notes_interface.getDateFromFile)(file, "day");
(0, import_typed_assert.isNotVoid)(
fileDay,
`Tried to parse plan in file that is not a daily note: ${file.path}`
);
return parsePlanItems(
fileContents,
metadata,
plannerHeading,
file.path,
fileDay
);
}
};
// src/service/plan-editor.ts
var import_fp2 = __toESM(require_fp());
// src/util/task-utils.ts
function isEqualTask(a, b) {
return a.id === b.id && a.startMinutes === b.startMinutes && a.endMinutes === b.endMinutes && // todo: remove after endMinutes is replaced with a getter
a.durationMinutes === b.durationMinutes;
}
// src/service/plan-editor.ts
var PlanEditor = class {
constructor(settings2, obsidianFacade) {
this.settings = settings2;
this.obsidianFacade = obsidianFacade;
this.syncTasksWithFile = async (baseline, updated) => {
const pristine = updated.filter(
(task) => baseline.find((baselineTask) => isEqualTask(task, baselineTask))
);
const dirty = (0, import_fp2.difference)(updated, pristine);
const [edited, created] = (0, import_fp2.partition)((task) => task.location.line, dirty);
const path = updated[0].location.path;
await this.obsidianFacade.editFile(path, (contents) => {
const withUpdatedEdited = edited.reduce(
(result2, current) => this.updateTaskInFileContents(result2, current),
contents
);
const createdList = created.map(
(task) => taskLineToString(task, { ...task })
);
const metadata = this.obsidianFacade.getMetadataForPath(path) || {};
const [planEndLine, splitContents] = this.getPlanEndLine(
withUpdatedEdited.split("\n"),
metadata
);
const result = [...splitContents];
result.splice(planEndLine + 1, 0, ...createdList);
return result.join("\n");
});
};
}
createPlannerHeading() {
const { plannerHeading, plannerHeadingLevel } = this.settings;
const headingTokens = "#".repeat(plannerHeadingLevel);
return `${headingTokens} ${plannerHeading}`;
}
// todo: we might want to update not only duration. Better: syncTaskWithNote
updateTaskInFileContents(contents, task) {
return contents.split("\n").map((line, index) => {
var _a;
if (index === ((_a = task.location) == null ? void 0 : _a.line)) {
return taskLineToString(task, {
startMinutes: task.startMinutes,
durationMinutes: task.durationMinutes
});
}
return line;
}).join("\n");
}
getPlanEndLine(contents, metadata) {
const planHeading = getHeadingByText(
metadata,
this.settings.plannerHeading
);
const planListItems = getListItemsUnderHeading(
metadata,
this.settings.plannerHeading
);
if ((planListItems == null ? void 0 : planListItems.length) > 0) {
const lastListItem = planListItems[planListItems.length - 1];
return [lastListItem.position.start.line, contents];
}
if (planHeading) {
return [planHeading.position.start.line, contents];
}
const withNewPlan = [...contents, "", this.createPlannerHeading(), ""];
return [withNewPlan.length, withNewPlan];
}
};
// src/settings.ts
var DayPlannerSettings = class {
constructor() {
this.circularProgress = false;
this.nowAndNextInStatusBar = false;
this.showTaskNotification = false;
this.zoomLevel = 2;
this.timelineIcon = "calendar-with-checkmark";
this.endLabel = "All done";
this.startHour = 6;
this.timelineDateFormat = "LLLL";
this.centerNeedle = false;
this.showHelp = true;
this.plannerHeading = "Day planner";
this.plannerHeadingLevel = 1;
this.timelineColored = false;
this.timelineStartColor = "#006466";
this.timelineEndColor = "#4d194d";
}
};
// src/ui/settings-tab.ts
var import_obsidian2 = require("obsidian");
var DayPlannerSettingsTab = class extends import_obsidian2.PluginSettingTab {
constructor(app, plugin) {
super(app, plugin);
this.plugin = plugin;
}
display() {
const { containerEl } = this;
containerEl.empty();
new import_obsidian2.Setting(containerEl).setName("Status Bar - Circular Progress").setDesc("Display a circular progress bar in the status bar").addToggle(
(toggle) => toggle.setValue(this.plugin.settings.circularProgress).onChange((value) => {
this.plugin.settings.circularProgress = value;
this.plugin.saveData(this.plugin.settings);
})
);
new import_obsidian2.Setting(containerEl).setName("Status Bar - Now and Next").setDesc("Display now and next tasks in the status bar").addToggle(
(toggle) => toggle.setValue(this.plugin.settings.nowAndNextInStatusBar).onChange((value) => {
this.plugin.settings.nowAndNextInStatusBar = value;
this.plugin.saveData(this.plugin.settings);
})
);
new import_obsidian2.Setting(containerEl).setName("Task Notification").setDesc("Display a notification when a new task is started").addToggle(
(toggle) => toggle.setValue(this.plugin.settings.showTaskNotification).onChange((value) => {
this.plugin.settings.showTaskNotification = value;
this.plugin.saveData(this.plugin.settings);
})
);
new import_obsidian2.Setting(containerEl).setName("Timeline Zoom Level").setDesc(
"The zoom level to display the timeline. The higher the number, the more vertical space each task will take up."
).addSlider(
(slider) => {
var _a;
return slider.setLimits(1, 5, 1).setValue((_a = Number(this.plugin.settings.zoomLevel)) != null ? _a : 4).setDynamicTooltip().onChange(async (value) => {
settings.update((settings2) => ({ ...settings2, zoomLevel: value }));
this.plugin.settings.zoomLevel = value;
await this.plugin.saveData(this.plugin.settings);
});
}
);
new import_obsidian2.Setting(containerEl).setName("Timeline Icon").setDesc(
"The icon of the timeline pane. Reopen timeline pane or restart obsidian to see the change."
).addDropdown((dropdown) => {
var _a;
icons.forEach((icon) => dropdown.addOption(icon, icon));
return dropdown.setValue(
(_a = this.plugin.settings.timelineIcon) != null ? _a : "calendar-with-checkmark"
).onChange((value) => {
this.plugin.settings.timelineIcon = value;
this.plugin.saveData(this.plugin.settings);
});
});
new import_obsidian2.Setting(containerEl).setName("Start Hour").setDesc("The planner is going to start at this hour each day").addDropdown(
(component) => component.addOptions({
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"10": "10",
"11": "11",
"12": "12"
}).setValue(String(this.plugin.settings.startHour)).onChange(async (value) => {
const asNumber = Number(value);
settings.update((previous) => ({
...previous,
startHour: asNumber
}));
this.plugin.settings.startHour = asNumber;
await this.plugin.saveData(this.plugin.settings);
})
);
new import_obsidian2.Setting(containerEl).setName("Date Format in Timeline Header").then((component) => {
component.setDesc(
createFragment((fragment) => {
fragment.appendText("Your current syntax looks like this: ");
component.addMomentFormat(
(momentFormat) => momentFormat.setValue(this.plugin.settings.timelineDateFormat).setSampleEl(fragment.createSpan()).onChange(async (value) => {
settings.update((previous) => ({
...previous,
timelineDateFormat: value
}));
this.plugin.settings.timelineDateFormat = value;
await this.plugin.saveData(this.plugin.settings);
})
);
fragment.append(
createEl("br"),
createEl(
"a",
{
text: "format reference",
href: "https://momentjs.com/docs/#/displaying/format/"
},
(a) => {
a.setAttr("target", "_blank");
}
)
);
})
);
});
new import_obsidian2.Setting(containerEl).setName("Center the Pointer in the Timeline View").setDesc(
"Should the pointer continuously get scrolled to the center of the view"
).addToggle((component) => {
component.setValue(this.plugin.settings.centerNeedle).onChange(async (value) => {
settings.update((previous) => ({
...previous,
centerNeedle: value
}));
this.plugin.settings.centerNeedle = value;
await this.plugin.saveData(this.plugin.settings);
});
});
new import_obsidian2.Setting(containerEl).setName("Planner Heading").setDesc(
`When you create a planner, this text is going to be in the heading.
When you open a file, the plugin will search for this heading to detect a day plan`
).addText(
(component) => component.setValue(this.plugin.settings.plannerHeading).onChange(async (value) => {
settings.update((previous) => ({
...previous,
plannerHeading: value
}));
this.plugin.settings.plannerHeading = value;
await this.plugin.saveData(this.plugin.settings);
})
);
new import_obsidian2.Setting(containerEl).setName("Planner heading level").setDesc(
"When you create a planner in a file, this level of heading is going to be used"
).addSlider(
(component) => component.setLimits(1, 6, 1).setDynamicTooltip().setValue(this.plugin.settings.plannerHeadingLevel).onChange(async (value) => {
settings.update((previous) => ({
...previous,
plannerHeadingLevel: value
}));
this.plugin.settings.plannerHeadingLevel = value;
await this.plugin.saveData(this.plugin.settings);
})
);
new import_obsidian2.Setting(containerEl).setName("Colorful Timeline").setDesc(
"If the planner timeline should be monochrome or color tasks based on time of day"
).addToggle((component) => {
component.setValue(this.plugin.settings.timelineColored).onChange(async (value) => {
settings.update((previous) => ({
...previous,
timelineColored: value
}));
this.plugin.settings.timelineColored = value;
await this.plugin.saveData(this.plugin.settings);
});
});
new import_obsidian2.Setting(containerEl).setName("Colorful Timeline - Start Color").addColorPicker((component) => {
component.setValue(this.plugin.settings.timelineStartColor).onChange(async (value) => {
settings.update((previous) => ({
...previous,
timelineStartColor: value
}));
this.plugin.settings.timelineStartColor = value;
await this.plugin.saveData(this.plugin.settings);
});
});
new import_obsidian2.Setting(containerEl).setName("Colorful Timeline - End Color").addColorPicker((component) => {
component.setValue(this.plugin.settings.timelineEndColor).onChange(async (value) => {
settings.update((previous) => ({
...previous,
timelineEndColor: value
}));
this.plugin.settings.timelineEndColor = value;
await this.plugin.saveData(this.plugin.settings);
});
});
}
modeDescriptionContent() {
const descEl = document.createDocumentFragment();
descEl.appendText("Choose between 3 modes to use the Day Planner plugin:");
descEl.appendChild(document.createElement("br"));
descEl.appendChild(document.createElement("strong")).appendText("File mode");
descEl.appendChild(document.createElement("br"));
descEl.appendText(
"Plugin automatically generates day planner notes for each day within a Day Planners folder."
);
descEl.appendChild(document.createElement("br"));
descEl.appendChild(document.createElement("strong")).appendText("Command mode");
descEl.appendChild(document.createElement("br"));
descEl.appendText(
"Command used to insert a Day Planner for today within the current note."
);
descEl.appendChild(document.createElement("br"));
descEl.appendChild(document.createElement("strong")).appendText("Daily mode");
descEl.appendChild(document.createElement("br"));
descEl.appendText(
"Plugin automatically links to the current daily note. Daily notes plugin must be enabled."
);
descEl.appendChild(document.createElement("br"));
this.addDocsLink(descEl);
return descEl;
}
addDocsLink(descEl) {
const a = document.createElement("a");
a.href = "https://github.com/lynchjames/obsidian-day-planner/blob/main/README.md";
a.text = "plugin README";
a.target = "_blank";
descEl.appendChild(a);
descEl.appendChild(document.createElement("br"));
}
};
// src/ui/status-bar.ts
var StatusBar = class {
constructor(settings2, containerEl, workspace) {
this.settings = settings2;
this.containerEl = containerEl;
this.workspace = workspace;
this.containerEl.addClass("day-planner");
this.setupCard();
this.statusBarText = this.containerEl.createEl("span", {
cls: ["status-bar-item-segment", "day-planner-status-bar-text"]
});
this.setupCircularProgressBar();
this.setupHorizontalProgressBar();
this.nextText = this.containerEl.createEl("span", {
cls: ["status-bar-item-segment", "day-planner-status-bar-text"]
});
this.setupStatusBarEvents();
}
async update(planItems) {
this.containerEl.show();
if (planItems.length > 0) {
this.updateProgress(planItems);
} else {
this.setEmpty();
}
}
setEmpty() {
this.setText("No plan for today");
}
setText(text2) {
this.statusBarText.textContent = text2;
}
setupStatusBarEvents() {
this.containerEl.onClickEvent(async () => {
});
this.containerEl.on("mouseenter", ".day-planner", () => {
this.card.show();
});
this.containerEl.on("mouseleave", ".day-planner", () => {
this.card.hide();
});
}
hideProgress() {
this.statusBarProgress.hide();
this.circle.hide();
this.nextText.hide();
}
updateProgress(planItems) {
const now = window.moment();
const currentItemIndex = planItems.findIndex(
(item) => item.startTime.isBefore(now) && item.endTime.isAfter(now)
);
if (currentItemIndex < 0) {
this.hideProgress();
this.statusBarText.innerText = this.settings.endLabel;
return;
}
const currentItem = planItems[currentItemIndex];
const nextItem = planItems[currentItemIndex + 1];
const minutesFromStart = getDiffInMinutes(currentItem.startTime, now);
const percentageComplete = minutesFromStart / (currentItem.durationMinutes / 100);
this.updateStatusBarText(currentItem, nextItem);
if (nextItem) {
this.setStatusText(
getDiffInMinutes(now, nextItem.startTime),
currentItem,
nextItem,
percentageComplete
);
}
if (this.settings.circularProgress) {
this.statusBarProgress.hide();
this.progressCircle(percentageComplete);
} else {
this.circle.hide();
this.progressBar(percentageComplete);
}
}
progressBar(percentageComplete) {
this.statusBarCurrentProgress.style.width = `${percentageComplete}%`;
this.statusBarProgress.show();
}
progressCircle(percentageComplete) {
this.circle.setAttr("data-value", percentageComplete.toFixed(0));
this.circle.show();
}
setStatusText(minsUntilNext, current, next, percentageComplete) {
const minsUntilNextText = minsUntilNext === 0 ? "1" : minsUntilNext;
const minsText = `${minsUntilNextText} min${minsUntilNextText === "1" ? "" : "s"}`;
const percent = percentageComplete.toFixed(0);
const currentTaskStatus = `Current Task (${percent}% complete)`;
const currentTaskTimeAndText = `${current.rawStartTime} ${current.text}`;
const nextTask = `Next Task (in ${minsText})`;
const nextTaskTimeAndText = `${next.rawStartTime} ${next.text}`;
this.cardCurrent.textContent = `${currentTaskStatus}: ${currentTaskTimeAndText}`;
this.cardNext.textContent = `${nextTask}: ${nextTaskTimeAndText}`;
this.taskNotification(
current,
currentTaskTimeAndText,
nextTask,
nextTaskTimeAndText
);
}
updateStatusBarText(currentItem, nextItem) {
if (this.settings.nowAndNextInStatusBar) {
this.statusBarText.textContent = `Now: ${currentItem.rawStartTime} ${this.ellipsis(currentItem.text, 15)}`;
if (nextItem) {
this.nextText.textContent = `Next: ${nextItem.rawStartTime} ${this.ellipsis(nextItem.text, 15)}`;
this.nextText.show();
}
this.nextText.hide();
} else {
this.nextText.hide();
const minutesLeft = getDiffInMinutes(
currentItem.endTime,
window.moment()
);
this.statusBarText.textContent = `Minutes left: ${minutesLeft}`;
}
}
taskNotification(current, currentTaskTimeAndText, nextTask, nextTaskText) {
if (this.settings.showTaskNotification && this.currentTime !== void 0 && this.currentTime !== current.startTime.toString()) {
new Notification(`Task started, ${currentTaskTimeAndText}`, {
body: `${nextTask}: ${nextTaskText}`,
requireInteraction: true
});
}
this.currentTime = current.startTime.toString();
}
// todo: this doesn't belong to the class
ellipsis(input, limit) {
if (input.length <= limit) {
return input;
}
return input.substring(0, limit) + "...";
}
setupHorizontalProgressBar() {
this.statusBarProgress = this.containerEl.createEl("div", {
cls: ["status-bar-item-segment", "day-planner-progress-bar"]
});
this.statusBarProgress.hide();
this.statusBarCurrentProgress = this.statusBarProgress.createEl("div", {
cls: "day-planner-progress-value"
});
}
setupCircularProgressBar() {
this.circle = this.containerEl.createEl("div", {
cls: ["status-bar-item-segment", "progress-pie day-planner"]
});
}
setupCard() {
this.card = this.containerEl.createEl("div", {
cls: "day-planner-status-card"
});
this.cardCurrent = this.card.createEl("span");
this.card.createEl("br");
this.card.createEl("br");
this.cardNext = this.card.createEl("span");
this.card.createEl("div", { cls: "arrow-down" });
}
};
// src/ui/timeline-view.ts
var import_obsidian4 = require("obsidian");
// src/ui/components/timeline.svelte
var import_obsidian_daily_notes_interface4 = __toESM(require_main());
// src/global-store/settings-utils.ts
var hourSize = derived(
settings,
($settings) => $settings.zoomLevel * 60
);
var visibleHours = derived(
settings,
($settings) => [...Array(24).keys()].slice($settings.startHour)
);
var hiddenHoursSize = derived(
[settings, hourSize],
([$settings, $hourSize]) => $settings.startHour * $hourSize
);
var timeToTimelineOffset = derived(
[settings, hiddenHoursSize],
([$settings, $hiddenHoursSize]) => (minutes2) => minutes2 * $settings.zoomLevel - $hiddenHoursSize
);
function snap(coords, zoomLevel) {
return coords - coords % (snapStepMinutes * zoomLevel);
}
function getTimeFromYOffset(yCoords) {
const { zoomLevel } = get_store_value(settings);
return (yCoords + get_store_value(hiddenHoursSize)) / zoomLevel;
}
function sizeToDuration(size) {
const { zoomLevel } = get_store_value(settings);
return size / zoomLevel;
}
var durationToSize = derived(settings, ($settings) => {
return (duration) => {
const { zoomLevel } = $settings;
return duration * zoomLevel;
};
});
// src/overlap/overlap.ts
var import_fraction = __toESM(require_fraction());
var import_fp3 = __toESM(require_fp());
// src/overlap/horizontal-placing.ts
function getHorizontalPlacing(overlap) {
const widthPercent = overlap ? overlap.span / overlap.columns * 100 : 100;
const xOffsetPercent = overlap ? 100 / overlap.columns * overlap.start : 0;
return {
widthPercent,
xOffsetPercent
};
}
// src/overlap/overlap.ts
var empty2 = "empty";
var taken = "taken";
function computeOverlap(items) {
return items.reduce((overlapLookup, item) => {
const overlapGroup = getItemsOverlappingItemAndEachOther(item, items);
return computeOverlapForGroup(overlapGroup, overlapLookup);
}, /* @__PURE__ */ new Map());
}
function getItemsOverlappingItemAndEachOther(item, items) {
return items.reduce(
(result, current) => {
if (current === item) {
return result;
}
const currentOverlapsWithPreviousItems = result.every(
(intersectingItem) => overlaps(intersectingItem, current)
);
if (currentOverlapsWithPreviousItems) {
result.push(current);
}
return result;
},
[item]
).sort((a, b) => a.startMinutes - b.startMinutes);
}
function computeOverlapForGroup(overlapGroup, previousLookup) {
const newLookup = new Map([...previousLookup]);
const [itemsPlacedPreviously, itemsToBePlaced] = (0, import_fp3.partition)(
({ id }) => newLookup.has(id),
overlapGroup
);
if (itemsToBePlaced.length === 0) {
return newLookup;
}
const fractionOfPlacedItems = itemsPlacedPreviously.reduce((sum, current) => {
const { span, columns } = newLookup.get(current.id);
return new import_fraction.default(span, columns).add(sum);
}, new import_fraction.default(0));
const fractionForNewItems = new import_fraction.default(1).sub(fractionOfPlacedItems);
const fractionForEachNewItem = fractionForNewItems.div(
itemsToBePlaced.length
);
const columnsForNewGroup = fractionForEachNewItem.d;
const newItemInherentSpan = fractionForEachNewItem.n;
const slots = Array(columnsForNewGroup).fill(empty2);
itemsPlacedPreviously.forEach((item) => {
const { start, span, columns: previousColumns } = newLookup.get(item.id);
const scale = columnsForNewGroup / previousColumns;
const scaledStart = scale * start;
const scaledSpan = scale * span;
const scaledEnd = scaledStart + scaledSpan;
slots.fill(taken, scaledStart, scaledEnd);
});
itemsToBePlaced.forEach((itemInGroup) => {
const firstFreeSlotIndex = slots.findIndex((slot) => slot === empty2);
const nextTakenSlotIndex = slots.findIndex(
(slot, i) => i > firstFreeSlotIndex && slot === taken
);
const fromFreeToNextTakenSlot = nextTakenSlotIndex - firstFreeSlotIndex;
const onlyEmptySlotsLeft = nextTakenSlotIndex === -1;
const span = onlyEmptySlotsLeft ? newItemInherentSpan : Math.min(newItemInherentSpan, fromFreeToNextTakenSlot);
const fillEnd = firstFreeSlotIndex + span;
slots.fill(taken, firstFreeSlotIndex, fillEnd);
newLookup.set(itemInGroup.id, {
start: firstFreeSlotIndex,
span,
columns: columnsForNewGroup
});
});
return newLookup;
}
function overlaps(a, b) {
const [early, late] = a.startMinutes < b.startMinutes ? [a, b] : [b, a];
return early.endMinutes > late.startMinutes;
}
function addPlacing(planItems) {
const overlapLookup = computeOverlap(planItems);
return planItems.map((planItem) => {
const overlap = overlapLookup.get(planItem.id);
return {
...planItem,
placing: getHorizontalPlacing(overlap)
};
});
}
// src/ui/components/column.svelte
function add_css(target) {
append_styles(target, "svelte-af5q45", ".task-grid.svelte-af5q45{position:relative;flex:1 0 0}.time-grid-block.svelte-af5q45{flex:1 0 0;border-bottom:1px solid var(--background-modifier-border)}.half-hour-separator.svelte-af5q45{border-bottom:1px dashed var(--background-modifier-border)}");
}
function get_each_context(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[4] = list[i];
return child_ctx;
}
function create_each_block(ctx) {
let div1;
let div0;
let style_height = `${/*$hourSize*/
ctx[1] / 2}px`;
let t;
let style_height_1 = `${/*$hourSize*/
ctx[1]}px`;
return {
c() {
div1 = element("div");
div0 = element("div");
t = space();
attr(div0, "class", "half-hour-separator svelte-af5q45");
set_style(div0, "height", style_height);
attr(div1, "class", "time-grid-block svelte-af5q45");
set_style(div1, "height", style_height_1);
},
m(target, anchor) {
insert(target, div1, anchor);
append(div1, div0);
append(div1, t);
},
p(ctx2, dirty) {
if (dirty & /*$hourSize*/
2 && style_height !== (style_height = `${/*$hourSize*/
ctx2[1] / 2}px`)) {
set_style(div0, "height", style_height);
}
if (dirty & /*$hourSize*/
2 && style_height_1 !== (style_height_1 = `${/*$hourSize*/
ctx2[1]}px`)) {
set_style(div1, "height", style_height_1);
}
},
d(detaching) {
if (detaching)
detach(div1);
}
};
}
function create_fragment(ctx) {
let div;
let t;
let current;
const default_slot_template = (
/*#slots*/
ctx[3].default
);
const default_slot = create_slot(
default_slot_template,
ctx,
/*$$scope*/
ctx[2],
null
);
let each_value = (
/*visibleHours*/
ctx[0]
);
let each_blocks = [];
for (let i = 0; i < each_value.length; i += 1) {
each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));
}
return {
c() {
div = element("div");
if (default_slot)
default_slot.c();
t = space();
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
attr(div, "class", "task-grid svelte-af5q45");
},
m(target, anchor) {
insert(target, div, anchor);
if (default_slot) {
default_slot.m(div, null);
}
append(div, t);
for (let i = 0; i < each_blocks.length; i += 1) {
if (each_blocks[i]) {
each_blocks[i].m(div, null);
}
}
current = true;
},
p(ctx2, [dirty]) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/
4)) {
update_slot_base(
default_slot,
default_slot_template,
ctx2,
/*$$scope*/
ctx2[2],
!current ? get_all_dirty_from_scope(
/*$$scope*/
ctx2[2]
) : get_slot_changes(
default_slot_template,
/*$$scope*/
ctx2[2],
dirty,
null
),
null
);
}
}
if (dirty & /*$hourSize, visibleHours*/
3) {
each_value = /*visibleHours*/
ctx2[0];
let i;
for (i = 0; i < each_value.length; i += 1) {
const child_ctx = get_each_context(ctx2, each_value, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
} else {
each_blocks[i] = create_each_block(child_ctx);
each_blocks[i].c();
each_blocks[i].m(div, null);
}
}
for (; i < each_blocks.length; i += 1) {
each_blocks[i].d(1);
}
each_blocks.length = each_value.length;
}
},
i(local) {
if (current)
return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (detaching)
detach(div);
if (default_slot)
default_slot.d(detaching);
destroy_each(each_blocks, detaching);
}
};
}
function instance($$self, $$props, $$invalidate) {
let $hourSize;
component_subscribe($$self, hourSize, ($$value) => $$invalidate(1, $hourSize = $$value));
let { $$slots: slots = {}, $$scope } = $$props;
let { visibleHours: visibleHours2 } = $$props;
$$self.$$set = ($$props2) => {
if ("visibleHours" in $$props2)
$$invalidate(0, visibleHours2 = $$props2.visibleHours);
if ("$$scope" in $$props2)
$$invalidate(2, $$scope = $$props2.$$scope);
};
return [visibleHours2, $hourSize, $$scope, slots];
}
var Column = class extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance, create_fragment, safe_not_equal, { visibleHours: 0 }, add_css);
}
};
var column_default = Column;
// node_modules/tslib/tslib.es6.mjs
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());
});
}
// src/ui/components/controls.svelte
var import_fp4 = __toESM(require_fp());
// node_modules/lucide-svelte/dist/esm/defaultAttributes.js
var defaultAttributes = {
xmlns: "http://www.w3.org/2000/svg",
width: 24,
height: 24,
viewBox: "0 0 24 24",
fill: "none",
stroke: "currentColor",
"stroke-width": 2,
"stroke-linecap": "round",
"stroke-linejoin": "round"
};
// node_modules/lucide-svelte/dist/esm/Icon.svelte.js
function get_each_context2(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[10] = list[i][0];
child_ctx[11] = list[i][1];
return child_ctx;
}
function create_dynamic_element(ctx) {
let svelte_element;
let svelte_element_levels = [
/*attrs*/
ctx[11]
];
let svelte_element_data = {};
for (let i = 0; i < svelte_element_levels.length; i += 1) {
svelte_element_data = assign(svelte_element_data, svelte_element_levels[i]);
}
return {
c() {
svelte_element = svg_element(
/*tag*/
ctx[10]
);
this.h();
},
l(nodes) {
svelte_element = claim_svg_element(
nodes,
/*tag*/
ctx[10],
{}
);
children(svelte_element).forEach(detach);
this.h();
},
h() {
set_svg_attributes(svelte_element, svelte_element_data);
},
m(target, anchor) {
insert_hydration(target, svelte_element, anchor);
},
p(ctx2, dirty) {
svelte_element_data = get_spread_update(svelte_element_levels, [dirty & /*iconNode*/
32 && /*attrs*/
ctx2[11]]);
set_svg_attributes(svelte_element, svelte_element_data);
},
d(detaching) {
if (detaching)
detach(svelte_element);
}
};
}
function create_each_block2(ctx) {
let previous_tag = (
/*tag*/
ctx[10]
);
let svelte_element_anchor;
let svelte_element = (
/*tag*/
ctx[10] && create_dynamic_element(ctx)
);
return {
c() {
if (svelte_element)
svelte_element.c();
svelte_element_anchor = empty();
},
l(nodes) {
if (svelte_element)
svelte_element.l(nodes);
svelte_element_anchor = empty();
},
m(target, anchor) {
if (svelte_element)
svelte_element.m(target, anchor);
insert_hydration(target, svelte_element_anchor, anchor);
},
p(ctx2, dirty) {
if (
/*tag*/
ctx2[10]
) {
if (!previous_tag) {
svelte_element = create_dynamic_element(ctx2);
svelte_element.c();
svelte_element.m(svelte_element_anchor.parentNode, svelte_element_anchor);
} else if (safe_not_equal(
previous_tag,
/*tag*/
ctx2[10]
)) {
svelte_element.d(1);
svelte_element = create_dynamic_element(ctx2);
svelte_element.c();
svelte_element.m(svelte_element_anchor.parentNode, svelte_element_anchor);
} else {
svelte_element.p(ctx2, dirty);
}
} else if (previous_tag) {
svelte_element.d(1);
svelte_element = null;
}
previous_tag = /*tag*/
ctx2[10];
},
d(detaching) {
if (detaching)
detach(svelte_element_anchor);
if (svelte_element)
svelte_element.d(detaching);
}
};
}
function create_fragment2(ctx) {
var _a;
let svg;
let each_1_anchor;
let svg_stroke_width_value;
let svg_class_value;
let current;
let each_value = (
/*iconNode*/
ctx[5]
);
let each_blocks = [];
for (let i = 0; i < each_value.length; i += 1) {
each_blocks[i] = create_each_block2(get_each_context2(ctx, each_value, i));
}
const default_slot_template = (
/*#slots*/
ctx[9].default
);
const default_slot = create_slot(
default_slot_template,
ctx,
/*$$scope*/
ctx[8],
null
);
let svg_levels = [
defaultAttributes,
/*$$restProps*/
ctx[6],
{ width: (
/*size*/
ctx[2]
) },
{ height: (
/*size*/
ctx[2]
) },
{ stroke: (
/*color*/
ctx[1]
) },
{
"stroke-width": svg_stroke_width_value = /*absoluteStrokeWidth*/
ctx[4] ? Number(
/*strokeWidth*/
ctx[3]
) * 24 / Number(
/*size*/
ctx[2]
) : (
/*strokeWidth*/
ctx[3]
)
},
{
class: svg_class_value = `lucide-icon lucide lucide-${/*name*/
ctx[0]} ${/*$$props*/
(_a = ctx[7].class) != null ? _a : ""}`
}
];
let svg_data = {};
for (let i = 0; i < svg_levels.length; i += 1) {
svg_data = assign(svg_data, svg_levels[i]);
}
return {
c() {
svg = svg_element("svg");
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
each_1_anchor = empty();
if (default_slot)
default_slot.c();
this.h();
},
l(nodes) {
svg = claim_svg_element(nodes, "svg", {
width: true,
height: true,
stroke: true,
"stroke-width": true,
class: true
});
var svg_nodes = children(svg);
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].l(svg_nodes);
}
each_1_anchor = empty();
if (default_slot)
default_slot.l(svg_nodes);
svg_nodes.forEach(detach);
this.h();
},
h() {
set_svg_attributes(svg, svg_data);
},
m(target, anchor) {
insert_hydration(target, svg, anchor);
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].m(svg, null);
}
append_hydration(svg, each_1_anchor);
if (default_slot) {
default_slot.m(svg, null);
}
current = true;
},
p(ctx2, [dirty]) {
var _a2;
if (dirty & /*iconNode*/
32) {
each_value = /*iconNode*/
ctx2[5];
let i;
for (i = 0; i < each_value.length; i += 1) {
const child_ctx = get_each_context2(ctx2, each_value, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
} else {
each_blocks[i] = create_each_block2(child_ctx);
each_blocks[i].c();
each_blocks[i].m(svg, each_1_anchor);
}
}
for (; i < each_blocks.length; i += 1) {
each_blocks[i].d(1);
}
each_blocks.length = each_value.length;
}
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/
256)) {
update_slot_base(
default_slot,
default_slot_template,
ctx2,
/*$$scope*/
ctx2[8],
!current ? get_all_dirty_from_scope(
/*$$scope*/
ctx2[8]
) : get_slot_changes(
default_slot_template,
/*$$scope*/
ctx2[8],
dirty,
null
),
null
);
}
}
set_svg_attributes(svg, svg_data = get_spread_update(svg_levels, [
defaultAttributes,
dirty & /*$$restProps*/
64 && /*$$restProps*/
ctx2[6],
(!current || dirty & /*size*/
4) && { width: (
/*size*/
ctx2[2]
) },
(!current || dirty & /*size*/
4) && { height: (
/*size*/
ctx2[2]
) },
(!current || dirty & /*color*/
2) && { stroke: (
/*color*/
ctx2[1]
) },
(!current || dirty & /*absoluteStrokeWidth, strokeWidth, size*/
28 && svg_stroke_width_value !== (svg_stroke_width_value = /*absoluteStrokeWidth*/
ctx2[4] ? Number(
/*strokeWidth*/
ctx2[3]
) * 24 / Number(
/*size*/
ctx2[2]
) : (
/*strokeWidth*/
ctx2[3]
))) && { "stroke-width": svg_stroke_width_value },
(!current || dirty & /*name, $$props*/
129 && svg_class_value !== (svg_class_value = `lucide-icon lucide lucide-${/*name*/
ctx2[0]} ${/*$$props*/
(_a2 = ctx2[7].class) != null ? _a2 : ""}`)) && { class: svg_class_value }
]));
},
i(local) {
if (current)
return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (detaching)
detach(svg);
destroy_each(each_blocks, detaching);
if (default_slot)
default_slot.d(detaching);
}
};
}
function instance2($$self, $$props, $$invalidate) {
const omit_props_names = ["name", "color", "size", "strokeWidth", "absoluteStrokeWidth", "iconNode"];
let $$restProps = compute_rest_props($$props, omit_props_names);
let { $$slots: slots = {}, $$scope } = $$props;
let { name } = $$props;
let { color = "currentColor" } = $$props;
let { size = 24 } = $$props;
let { strokeWidth = 2 } = $$props;
let { absoluteStrokeWidth = false } = $$props;
let { iconNode } = $$props;
$$self.$$set = ($$new_props) => {
$$invalidate(7, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
$$invalidate(6, $$restProps = compute_rest_props($$props, omit_props_names));
if ("name" in $$new_props)
$$invalidate(0, name = $$new_props.name);
if ("color" in $$new_props)
$$invalidate(1, color = $$new_props.color);
if ("size" in $$new_props)
$$invalidate(2, size = $$new_props.size);
if ("strokeWidth" in $$new_props)
$$invalidate(3, strokeWidth = $$new_props.strokeWidth);
if ("absoluteStrokeWidth" in $$new_props)
$$invalidate(4, absoluteStrokeWidth = $$new_props.absoluteStrokeWidth);
if ("iconNode" in $$new_props)
$$invalidate(5, iconNode = $$new_props.iconNode);
if ("$$scope" in $$new_props)
$$invalidate(8, $$scope = $$new_props.$$scope);
};
$$props = exclude_internal_props($$props);
return [
name,
color,
size,
strokeWidth,
absoluteStrokeWidth,
iconNode,
$$restProps,
$$props,
$$scope,
slots
];
}
var Icon = class extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance2, create_fragment2, safe_not_equal, {
name: 0,
color: 1,
size: 2,
strokeWidth: 3,
absoluteStrokeWidth: 4,
iconNode: 5
});
}
};
var Icon$1 = Icon;
// node_modules/lucide-svelte/dist/esm/icons/arrow-left-to-line.svelte.js
function create_default_slot(ctx) {
let current;
const default_slot_template = (
/*#slots*/
ctx[2].default
);
const default_slot = create_slot(
default_slot_template,
ctx,
/*$$scope*/
ctx[3],
null
);
return {
c() {
if (default_slot)
default_slot.c();
},
l(nodes) {
if (default_slot)
default_slot.l(nodes);
},
m(target, anchor) {
if (default_slot) {
default_slot.m(target, anchor);
}
current = true;
},
p(ctx2, dirty) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/
8)) {
update_slot_base(
default_slot,
default_slot_template,
ctx2,
/*$$scope*/
ctx2[3],
!current ? get_all_dirty_from_scope(
/*$$scope*/
ctx2[3]
) : get_slot_changes(
default_slot_template,
/*$$scope*/
ctx2[3],
dirty,
null
),
null
);
}
}
},
i(local) {
if (current)
return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (default_slot)
default_slot.d(detaching);
}
};
}
function create_fragment3(ctx) {
let icon;
let current;
const icon_spread_levels = [
{ name: "arrow-left-to-line" },
/*$$props*/
ctx[1],
{ iconNode: (
/*iconNode*/
ctx[0]
) }
];
let icon_props = {
$$slots: { default: [create_default_slot] },
$$scope: { ctx }
};
for (let i = 0; i < icon_spread_levels.length; i += 1) {
icon_props = assign(icon_props, icon_spread_levels[i]);
}
icon = new Icon$1({ props: icon_props });
return {
c() {
create_component(icon.$$.fragment);
},
l(nodes) {
claim_component(icon.$$.fragment, nodes);
},
m(target, anchor) {
mount_component(icon, target, anchor);
current = true;
},
p(ctx2, [dirty]) {
const icon_changes = dirty & /*$$props, iconNode*/
3 ? get_spread_update(icon_spread_levels, [
icon_spread_levels[0],
dirty & /*$$props*/
2 && get_spread_object(
/*$$props*/
ctx2[1]
),
dirty & /*iconNode*/
1 && { iconNode: (
/*iconNode*/
ctx2[0]
) }
]) : {};
if (dirty & /*$$scope*/
8) {
icon_changes.$$scope = { dirty, ctx: ctx2 };
}
icon.$set(icon_changes);
},
i(local) {
if (current)
return;
transition_in(icon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(icon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(icon, detaching);
}
};
}
function instance3($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
const iconNode = [
["path", { "d": "M3 19V5" }],
["path", { "d": "m13 6-6 6 6 6" }],
["path", { "d": "M7 12h14" }]
];
$$self.$$set = ($$new_props) => {
$$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
if ("$$scope" in $$new_props)
$$invalidate(3, $$scope = $$new_props.$$scope);
};
$$props = exclude_internal_props($$props);
return [iconNode, $$props, slots, $$scope];
}
var Arrow_left_to_line = class extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance3, create_fragment3, safe_not_equal, {});
}
};
var Arrow_left_to_line$1 = Arrow_left_to_line;
// node_modules/lucide-svelte/dist/esm/icons/arrow-right-to-line.svelte.js
function create_default_slot2(ctx) {
let current;
const default_slot_template = (
/*#slots*/
ctx[2].default
);
const default_slot = create_slot(
default_slot_template,
ctx,
/*$$scope*/
ctx[3],
null
);
return {
c() {
if (default_slot)
default_slot.c();
},
l(nodes) {
if (default_slot)
default_slot.l(nodes);
},
m(target, anchor) {
if (default_slot) {
default_slot.m(target, anchor);
}
current = true;
},
p(ctx2, dirty) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/
8)) {
update_slot_base(
default_slot,
default_slot_template,
ctx2,
/*$$scope*/
ctx2[3],
!current ? get_all_dirty_from_scope(
/*$$scope*/
ctx2[3]
) : get_slot_changes(
default_slot_template,
/*$$scope*/
ctx2[3],
dirty,
null
),
null
);
}
}
},
i(local) {
if (current)
return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (default_slot)
default_slot.d(detaching);
}
};
}
function create_fragment4(ctx) {
let icon;
let current;
const icon_spread_levels = [
{ name: "arrow-right-to-line" },
/*$$props*/
ctx[1],
{ iconNode: (
/*iconNode*/
ctx[0]
) }
];
let icon_props = {
$$slots: { default: [create_default_slot2] },
$$scope: { ctx }
};
for (let i = 0; i < icon_spread_levels.length; i += 1) {
icon_props = assign(icon_props, icon_spread_levels[i]);
}
icon = new Icon$1({ props: icon_props });
return {
c() {
create_component(icon.$$.fragment);
},
l(nodes) {
claim_component(icon.$$.fragment, nodes);
},
m(target, anchor) {
mount_component(icon, target, anchor);
current = true;
},
p(ctx2, [dirty]) {
const icon_changes = dirty & /*$$props, iconNode*/
3 ? get_spread_update(icon_spread_levels, [
icon_spread_levels[0],
dirty & /*$$props*/
2 && get_spread_object(
/*$$props*/
ctx2[1]
),
dirty & /*iconNode*/
1 && { iconNode: (
/*iconNode*/
ctx2[0]
) }
]) : {};
if (dirty & /*$$scope*/
8) {
icon_changes.$$scope = { dirty, ctx: ctx2 };
}
icon.$set(icon_changes);
},
i(local) {
if (current)
return;
transition_in(icon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(icon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(icon, detaching);
}
};
}
function instance4($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
const iconNode = [
["path", { "d": "M17 12H3" }],
["path", { "d": "m11 18 6-6-6-6" }],
["path", { "d": "M21 5v14" }]
];
$$self.$$set = ($$new_props) => {
$$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
if ("$$scope" in $$new_props)
$$invalidate(3, $$scope = $$new_props.$$scope);
};
$$props = exclude_internal_props($$props);
return [iconNode, $$props, slots, $$scope];
}
var Arrow_right_to_line = class extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance4, create_fragment4, safe_not_equal, {});
}
};
var Arrow_right_to_line$1 = Arrow_right_to_line;
// node_modules/lucide-svelte/dist/esm/icons/circle-dot.svelte.js
function create_default_slot3(ctx) {
let current;
const default_slot_template = (
/*#slots*/
ctx[2].default
);
const default_slot = create_slot(
default_slot_template,
ctx,
/*$$scope*/
ctx[3],
null
);
return {
c() {
if (default_slot)
default_slot.c();
},
l(nodes) {
if (default_slot)
default_slot.l(nodes);
},
m(target, anchor) {
if (default_slot) {
default_slot.m(target, anchor);
}
current = true;
},
p(ctx2, dirty) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/
8)) {
update_slot_base(
default_slot,
default_slot_template,
ctx2,
/*$$scope*/
ctx2[3],
!current ? get_all_dirty_from_scope(
/*$$scope*/
ctx2[3]
) : get_slot_changes(
default_slot_template,
/*$$scope*/
ctx2[3],
dirty,
null
),
null
);
}
}
},
i(local) {
if (current)
return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (default_slot)
default_slot.d(detaching);
}
};
}
function create_fragment5(ctx) {
let icon;
let current;
const icon_spread_levels = [
{ name: "circle-dot" },
/*$$props*/
ctx[1],
{ iconNode: (
/*iconNode*/
ctx[0]
) }
];
let icon_props = {
$$slots: { default: [create_default_slot3] },
$$scope: { ctx }
};
for (let i = 0; i < icon_spread_levels.length; i += 1) {
icon_props = assign(icon_props, icon_spread_levels[i]);
}
icon = new Icon$1({ props: icon_props });
return {
c() {
create_component(icon.$$.fragment);
},
l(nodes) {
claim_component(icon.$$.fragment, nodes);
},
m(target, anchor) {
mount_component(icon, target, anchor);
current = true;
},
p(ctx2, [dirty]) {
const icon_changes = dirty & /*$$props, iconNode*/
3 ? get_spread_update(icon_spread_levels, [
icon_spread_levels[0],
dirty & /*$$props*/
2 && get_spread_object(
/*$$props*/
ctx2[1]
),
dirty & /*iconNode*/
1 && { iconNode: (
/*iconNode*/
ctx2[0]
) }
]) : {};
if (dirty & /*$$scope*/
8) {
icon_changes.$$scope = { dirty, ctx: ctx2 };
}
icon.$set(icon_changes);
},
i(local) {
if (current)
return;
transition_in(icon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(icon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(icon, detaching);
}
};
}
function instance5($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
const iconNode = [
["circle", { "cx": "12", "cy": "12", "r": "10" }],
["circle", { "cx": "12", "cy": "12", "r": "1" }]
];
$$self.$$set = ($$new_props) => {
$$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
if ("$$scope" in $$new_props)
$$invalidate(3, $$scope = $$new_props.$$scope);
};
$$props = exclude_internal_props($$props);
return [iconNode, $$props, slots, $$scope];
}
var Circle_dot = class extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance5, create_fragment5, safe_not_equal, {});
}
};
var Circle_dot$1 = Circle_dot;
// node_modules/lucide-svelte/dist/esm/icons/copy.svelte.js
function create_default_slot4(ctx) {
let current;
const default_slot_template = (
/*#slots*/
ctx[2].default
);
const default_slot = create_slot(
default_slot_template,
ctx,
/*$$scope*/
ctx[3],
null
);
return {
c() {
if (default_slot)
default_slot.c();
},
l(nodes) {
if (default_slot)
default_slot.l(nodes);
},
m(target, anchor) {
if (default_slot) {
default_slot.m(target, anchor);
}
current = true;
},
p(ctx2, dirty) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/
8)) {
update_slot_base(
default_slot,
default_slot_template,
ctx2,
/*$$scope*/
ctx2[3],
!current ? get_all_dirty_from_scope(
/*$$scope*/
ctx2[3]
) : get_slot_changes(
default_slot_template,
/*$$scope*/
ctx2[3],
dirty,
null
),
null
);
}
}
},
i(local) {
if (current)
return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (default_slot)
default_slot.d(detaching);
}
};
}
function create_fragment6(ctx) {
let icon;
let current;
const icon_spread_levels = [
{ name: "copy" },
/*$$props*/
ctx[1],
{ iconNode: (
/*iconNode*/
ctx[0]
) }
];
let icon_props = {
$$slots: { default: [create_default_slot4] },
$$scope: { ctx }
};
for (let i = 0; i < icon_spread_levels.length; i += 1) {
icon_props = assign(icon_props, icon_spread_levels[i]);
}
icon = new Icon$1({ props: icon_props });
return {
c() {
create_component(icon.$$.fragment);
},
l(nodes) {
claim_component(icon.$$.fragment, nodes);
},
m(target, anchor) {
mount_component(icon, target, anchor);
current = true;
},
p(ctx2, [dirty]) {
const icon_changes = dirty & /*$$props, iconNode*/
3 ? get_spread_update(icon_spread_levels, [
icon_spread_levels[0],
dirty & /*$$props*/
2 && get_spread_object(
/*$$props*/
ctx2[1]
),
dirty & /*iconNode*/
1 && { iconNode: (
/*iconNode*/
ctx2[0]
) }
]) : {};
if (dirty & /*$$scope*/
8) {
icon_changes.$$scope = { dirty, ctx: ctx2 };
}
icon.$set(icon_changes);
},
i(local) {
if (current)
return;
transition_in(icon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(icon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(icon, detaching);
}
};
}
function instance6($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
const iconNode = [
[
"rect",
{
"width": "14",
"height": "14",
"x": "8",
"y": "8",
"rx": "2",
"ry": "2"
}
],
[
"path",
{
"d": "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"
}
]
];
$$self.$$set = ($$new_props) => {
$$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
if ("$$scope" in $$new_props)
$$invalidate(3, $$scope = $$new_props.$$scope);
};
$$props = exclude_internal_props($$props);
return [iconNode, $$props, slots, $$scope];
}
var Copy = class extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance6, create_fragment6, safe_not_equal, {});
}
};
var Copy$1 = Copy;
// node_modules/lucide-svelte/dist/esm/icons/grip-vertical.svelte.js
function create_default_slot5(ctx) {
let current;
const default_slot_template = (
/*#slots*/
ctx[2].default
);
const default_slot = create_slot(
default_slot_template,
ctx,
/*$$scope*/
ctx[3],
null
);
return {
c() {
if (default_slot)
default_slot.c();
},
l(nodes) {
if (default_slot)
default_slot.l(nodes);
},
m(target, anchor) {
if (default_slot) {
default_slot.m(target, anchor);
}
current = true;
},
p(ctx2, dirty) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/
8)) {
update_slot_base(
default_slot,
default_slot_template,
ctx2,
/*$$scope*/
ctx2[3],
!current ? get_all_dirty_from_scope(
/*$$scope*/
ctx2[3]
) : get_slot_changes(
default_slot_template,
/*$$scope*/
ctx2[3],
dirty,
null
),
null
);
}
}
},
i(local) {
if (current)
return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (default_slot)
default_slot.d(detaching);
}
};
}
function create_fragment7(ctx) {
let icon;
let current;
const icon_spread_levels = [
{ name: "grip-vertical" },
/*$$props*/
ctx[1],
{ iconNode: (
/*iconNode*/
ctx[0]
) }
];
let icon_props = {
$$slots: { default: [create_default_slot5] },
$$scope: { ctx }
};
for (let i = 0; i < icon_spread_levels.length; i += 1) {
icon_props = assign(icon_props, icon_spread_levels[i]);
}
icon = new Icon$1({ props: icon_props });
return {
c() {
create_component(icon.$$.fragment);
},
l(nodes) {
claim_component(icon.$$.fragment, nodes);
},
m(target, anchor) {
mount_component(icon, target, anchor);
current = true;
},
p(ctx2, [dirty]) {
const icon_changes = dirty & /*$$props, iconNode*/
3 ? get_spread_update(icon_spread_levels, [
icon_spread_levels[0],
dirty & /*$$props*/
2 && get_spread_object(
/*$$props*/
ctx2[1]
),
dirty & /*iconNode*/
1 && { iconNode: (
/*iconNode*/
ctx2[0]
) }
]) : {};
if (dirty & /*$$scope*/
8) {
icon_changes.$$scope = { dirty, ctx: ctx2 };
}
icon.$set(icon_changes);
},
i(local) {
if (current)
return;
transition_in(icon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(icon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(icon, detaching);
}
};
}
function instance7($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
const iconNode = [
["circle", { "cx": "9", "cy": "12", "r": "1" }],
["circle", { "cx": "9", "cy": "5", "r": "1" }],
["circle", { "cx": "9", "cy": "19", "r": "1" }],
["circle", { "cx": "15", "cy": "12", "r": "1" }],
["circle", { "cx": "15", "cy": "5", "r": "1" }],
["circle", { "cx": "15", "cy": "19", "r": "1" }]
];
$$self.$$set = ($$new_props) => {
$$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
if ("$$scope" in $$new_props)
$$invalidate(3, $$scope = $$new_props.$$scope);
};
$$props = exclude_internal_props($$props);
return [iconNode, $$props, slots, $$scope];
}
var Grip_vertical = class extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance7, create_fragment7, safe_not_equal, {});
}
};
var Grip_vertical$1 = Grip_vertical;
// node_modules/lucide-svelte/dist/esm/icons/help-circle.svelte.js
function create_default_slot6(ctx) {
let current;
const default_slot_template = (
/*#slots*/
ctx[2].default
);
const default_slot = create_slot(
default_slot_template,
ctx,
/*$$scope*/
ctx[3],
null
);
return {
c() {
if (default_slot)
default_slot.c();
},
l(nodes) {
if (default_slot)
default_slot.l(nodes);
},
m(target, anchor) {
if (default_slot) {
default_slot.m(target, anchor);
}
current = true;
},
p(ctx2, dirty) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/
8)) {
update_slot_base(
default_slot,
default_slot_template,
ctx2,
/*$$scope*/
ctx2[3],
!current ? get_all_dirty_from_scope(
/*$$scope*/
ctx2[3]
) : get_slot_changes(
default_slot_template,
/*$$scope*/
ctx2[3],
dirty,
null
),
null
);
}
}
},
i(local) {
if (current)
return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (default_slot)
default_slot.d(detaching);
}
};
}
function create_fragment8(ctx) {
let icon;
let current;
const icon_spread_levels = [
{ name: "help-circle" },
/*$$props*/
ctx[1],
{ iconNode: (
/*iconNode*/
ctx[0]
) }
];
let icon_props = {
$$slots: { default: [create_default_slot6] },
$$scope: { ctx }
};
for (let i = 0; i < icon_spread_levels.length; i += 1) {
icon_props = assign(icon_props, icon_spread_levels[i]);
}
icon = new Icon$1({ props: icon_props });
return {
c() {
create_component(icon.$$.fragment);
},
l(nodes) {
claim_component(icon.$$.fragment, nodes);
},
m(target, anchor) {
mount_component(icon, target, anchor);
current = true;
},
p(ctx2, [dirty]) {
const icon_changes = dirty & /*$$props, iconNode*/
3 ? get_spread_update(icon_spread_levels, [
icon_spread_levels[0],
dirty & /*$$props*/
2 && get_spread_object(
/*$$props*/
ctx2[1]
),
dirty & /*iconNode*/
1 && { iconNode: (
/*iconNode*/
ctx2[0]
) }
]) : {};
if (dirty & /*$$scope*/
8) {
icon_changes.$$scope = { dirty, ctx: ctx2 };
}
icon.$set(icon_changes);
},
i(local) {
if (current)
return;
transition_in(icon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(icon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(icon, detaching);
}
};
}
function instance8($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
const iconNode = [
["circle", { "cx": "12", "cy": "12", "r": "10" }],
[
"path",
{
"d": "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"
}
],
["path", { "d": "M12 17h.01" }]
];
$$self.$$set = ($$new_props) => {
$$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
if ("$$scope" in $$new_props)
$$invalidate(3, $$scope = $$new_props.$$scope);
};
$$props = exclude_internal_props($$props);
return [iconNode, $$props, slots, $$scope];
}
var Help_circle = class extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance8, create_fragment8, safe_not_equal, {});
}
};
var Help_circle$1 = Help_circle;
// node_modules/lucide-svelte/dist/esm/icons/layers.svelte.js
function create_default_slot7(ctx) {
let current;
const default_slot_template = (
/*#slots*/
ctx[2].default
);
const default_slot = create_slot(
default_slot_template,
ctx,
/*$$scope*/
ctx[3],
null
);
return {
c() {
if (default_slot)
default_slot.c();
},
l(nodes) {
if (default_slot)
default_slot.l(nodes);
},
m(target, anchor) {
if (default_slot) {
default_slot.m(target, anchor);
}
current = true;
},
p(ctx2, dirty) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/
8)) {
update_slot_base(
default_slot,
default_slot_template,
ctx2,
/*$$scope*/
ctx2[3],
!current ? get_all_dirty_from_scope(
/*$$scope*/
ctx2[3]
) : get_slot_changes(
default_slot_template,
/*$$scope*/
ctx2[3],
dirty,
null
),
null
);
}
}
},
i(local) {
if (current)
return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (default_slot)
default_slot.d(detaching);
}
};
}
function create_fragment9(ctx) {
let icon;
let current;
const icon_spread_levels = [
{ name: "layers" },
/*$$props*/
ctx[1],
{ iconNode: (
/*iconNode*/
ctx[0]
) }
];
let icon_props = {
$$slots: { default: [create_default_slot7] },
$$scope: { ctx }
};
for (let i = 0; i < icon_spread_levels.length; i += 1) {
icon_props = assign(icon_props, icon_spread_levels[i]);
}
icon = new Icon$1({ props: icon_props });
return {
c() {
create_component(icon.$$.fragment);
},
l(nodes) {
claim_component(icon.$$.fragment, nodes);
},
m(target, anchor) {
mount_component(icon, target, anchor);
current = true;
},
p(ctx2, [dirty]) {
const icon_changes = dirty & /*$$props, iconNode*/
3 ? get_spread_update(icon_spread_levels, [
icon_spread_levels[0],
dirty & /*$$props*/
2 && get_spread_object(
/*$$props*/
ctx2[1]
),
dirty & /*iconNode*/
1 && { iconNode: (
/*iconNode*/
ctx2[0]
) }
]) : {};
if (dirty & /*$$scope*/
8) {
icon_changes.$$scope = { dirty, ctx: ctx2 };
}
icon.$set(icon_changes);
},
i(local) {
if (current)
return;
transition_in(icon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(icon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(icon, detaching);
}
};
}
function instance9($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
const iconNode = [
["polygon", { "points": "12 2 2 7 12 12 22 7 12 2" }],
["polyline", { "points": "2 17 12 22 22 17" }],
["polyline", { "points": "2 12 12 17 22 12" }]
];
$$self.$$set = ($$new_props) => {
$$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
if ("$$scope" in $$new_props)
$$invalidate(3, $$scope = $$new_props.$$scope);
};
$$props = exclude_internal_props($$props);
return [iconNode, $$props, slots, $$scope];
}
var Layers = class extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance9, create_fragment9, safe_not_equal, {});
}
};
var Layers$1 = Layers;
// src/ui/components/controls.svelte
var import_obsidian_daily_notes_interface3 = __toESM(require_main());
// src/util/daily-notes.ts
var import_obsidian_daily_notes_interface2 = __toESM(require_main());
async function createDailyNoteIfNeeded(moment2) {
return (0, import_obsidian_daily_notes_interface2.getDailyNote)(moment2, (0, import_obsidian_daily_notes_interface2.getAllDailyNotes)()) || (0, import_obsidian_daily_notes_interface2.createDailyNote)(moment2);
}
function dailyNoteExists() {
return Boolean((0, import_obsidian_daily_notes_interface2.getDailyNote)(window.moment(), (0, import_obsidian_daily_notes_interface2.getAllDailyNotes)()));
}
// src/ui/components/control-button.svelte
function add_css2(target) {
append_styles(target, "svelte-3xb39a", ".clickable-icon.svelte-3xb39a{grid-column-start:var(--grid-column-start, auto);flex-basis:var(--input-height);align-self:center;justify-self:var(--justify-self, auto);color:var(--color, var(--icon-color));white-space:nowrap}");
}
function create_fragment10(ctx) {
let div;
let div_class_value;
let current;
let mounted;
let dispose;
const default_slot_template = (
/*#slots*/
ctx[5].default
);
const default_slot = create_slot(
default_slot_template,
ctx,
/*$$scope*/
ctx[4],
null
);
return {
c() {
div = element("div");
if (default_slot)
default_slot.c();
attr(div, "class", div_class_value = "clickable-icon " + /*classes*/
ctx[3] + " svelte-3xb39a");
attr(
div,
"aria-disabled",
/*disabled*/
ctx[2]
);
attr(
div,
"aria-label",
/*label*/
ctx[0]
);
toggle_class(
div,
"is-active",
/*isActive*/
ctx[1]
);
},
m(target, anchor) {
insert(target, div, anchor);
if (default_slot) {
default_slot.m(div, null);
}
current = true;
if (!mounted) {
dispose = listen(
div,
"click",
/*click_handler*/
ctx[6]
);
mounted = true;
}
},
p(ctx2, [dirty]) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/
16)) {
update_slot_base(
default_slot,
default_slot_template,
ctx2,
/*$$scope*/
ctx2[4],
!current ? get_all_dirty_from_scope(
/*$$scope*/
ctx2[4]
) : get_slot_changes(
default_slot_template,
/*$$scope*/
ctx2[4],
dirty,
null
),
null
);
}
}
if (!current || dirty & /*classes*/
8 && div_class_value !== (div_class_value = "clickable-icon " + /*classes*/
ctx2[3] + " svelte-3xb39a")) {
attr(div, "class", div_class_value);
}
if (!current || dirty & /*disabled*/
4) {
attr(
div,
"aria-disabled",
/*disabled*/
ctx2[2]
);
}
if (!current || dirty & /*label*/
1) {
attr(
div,
"aria-label",
/*label*/
ctx2[0]
);
}
if (!current || dirty & /*classes, isActive*/
10) {
toggle_class(
div,
"is-active",
/*isActive*/
ctx2[1]
);
}
},
i(local) {
if (current)
return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (detaching)
detach(div);
if (default_slot)
default_slot.d(detaching);
mounted = false;
dispose();
}
};
}
function instance10($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
let { label } = $$props;
let { isActive = false } = $$props;
let { disabled = false } = $$props;
let { classes = "" } = $$props;
function click_handler(event) {
bubble.call(this, $$self, event);
}
$$self.$$set = ($$props2) => {
if ("label" in $$props2)
$$invalidate(0, label = $$props2.label);
if ("isActive" in $$props2)
$$invalidate(1, isActive = $$props2.isActive);
if ("disabled" in $$props2)
$$invalidate(2, disabled = $$props2.disabled);
if ("classes" in $$props2)
$$invalidate(3, classes = $$props2.classes);
if ("$$scope" in $$props2)
$$invalidate(4, $$scope = $$props2.$$scope);
};
return [label, isActive, disabled, classes, $$scope, slots, click_handler];
}
var Control_button = class extends SvelteComponent {
constructor(options) {
super();
init(
this,
options,
instance10,
create_fragment10,
safe_not_equal,
{
label: 0,
isActive: 1,
disabled: 2,
classes: 3
},
add_css2
);
}
};
var control_button_default = Control_button;
// src/ui/components/icons/arrow-left.svelte
function create_fragment11(ctx) {
let svg;
let path0;
let path1;
return {
c() {
svg = svg_element("svg");
path0 = svg_element("path");
path1 = svg_element("path");
attr(path0, "d", "m12 19-7-7 7-7");
attr(path1, "d", "M19 12H5");
attr(svg, "class", "svg-icon lucide lucide-arrow-left");
attr(svg, "fill", "none");
attr(svg, "height", "24");
attr(svg, "stroke", "currentColor");
attr(svg, "stroke-linecap", "round");
attr(svg, "stroke-linejoin", "round");
attr(svg, "stroke-width", "2");
attr(svg, "viewBox", "0 0 24 24");
attr(svg, "width", "24");
attr(svg, "xmlns", "http://www.w3.org/2000/svg");
},
m(target, anchor) {
insert(target, svg, anchor);
append(svg, path0);
append(svg, path1);
},
p: noop,
i: noop,
o: noop,
d(detaching) {
if (detaching)
detach(svg);
}
};
}
var Arrow_left = class extends SvelteComponent {
constructor(options) {
super();
init(this, options, null, create_fragment11, safe_not_equal, {});
}
};
var arrow_left_default = Arrow_left;
// src/ui/components/icons/arrow-right.svelte
function create_fragment12(ctx) {
let svg;
let path0;
let path1;
return {
c() {
svg = svg_element("svg");
path0 = svg_element("path");
path1 = svg_element("path");
attr(path0, "d", "M5 12h14");
attr(path1, "d", "m12 5 7 7-7 7");
attr(svg, "class", "svg-icon lucide lucide-arrow-right");
attr(svg, "fill", "none");
attr(svg, "height", "24");
attr(svg, "stroke", "currentColor");
attr(svg, "stroke-linecap", "round");
attr(svg, "stroke-linejoin", "round");
attr(svg, "stroke-width", "2");
attr(svg, "viewBox", "0 0 24 24");
attr(svg, "width", "24");
attr(svg, "xmlns", "http://www.w3.org/2000/svg");
},
m(target, anchor) {
insert(target, svg, anchor);
append(svg, path0);
append(svg, path1);
},
p: noop,
i: noop,
o: noop,
d(detaching) {
if (detaching)
detach(svg);
}
};
}
var Arrow_right = class extends SvelteComponent {
constructor(options) {
super();
init(this, options, null, create_fragment12, safe_not_equal, {});
}
};
var arrow_right_default = Arrow_right;
// src/ui/components/icons/go-to-file.svelte
function create_fragment13(ctx) {
let svg;
let path0;
let polyline;
let path1;
let path2;
return {
c() {
svg = svg_element("svg");
path0 = svg_element("path");
polyline = svg_element("polyline");
path1 = svg_element("path");
path2 = svg_element("path");
attr(path0, "d", "M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v4");
attr(polyline, "points", "14 2 14 8 20 8");
attr(path1, "d", "M2 15h10");
attr(path2, "d", "m9 18 3-3-3-3");
attr(svg, "class", "svg-icon lucide lucide-file-input");
attr(svg, "fill", "none");
attr(svg, "height", "24");
attr(svg, "stroke", "currentColor");
attr(svg, "stroke-linecap", "round");
attr(svg, "stroke-linejoin", "round");
attr(svg, "stroke-width", "2");
attr(svg, "viewBox", "0 0 24 24");
attr(svg, "width", "24");
attr(svg, "xmlns", "http://www.w3.org/2000/svg");
},
m(target, anchor) {
insert(target, svg, anchor);
append(svg, path0);
append(svg, polyline);
append(svg, path1);
append(svg, path2);
},
p: noop,
i: noop,
o: noop,
d(detaching) {
if (detaching)
detach(svg);
}
};
}
var Go_to_file = class extends SvelteComponent {
constructor(options) {
super();
init(this, options, null, create_fragment13, safe_not_equal, {});
}
};
var go_to_file_default = Go_to_file;
// src/ui/components/icons/settings.svelte
function create_fragment14(ctx) {
let svg;
let line0;
let line1;
let line2;
let line3;
let line4;
let line5;
let line6;
let line7;
let line8;
return {
c() {
svg = svg_element("svg");
line0 = svg_element("line");
line1 = svg_element("line");
line2 = svg_element("line");
line3 = svg_element("line");
line4 = svg_element("line");
line5 = svg_element("line");
line6 = svg_element("line");
line7 = svg_element("line");
line8 = svg_element("line");
attr(line0, "x1", "21");
attr(line0, "x2", "14");
attr(line0, "y1", "4");
attr(line0, "y2", "4");
attr(line1, "x1", "10");
attr(line1, "x2", "3");
attr(line1, "y1", "4");
attr(line1, "y2", "4");
attr(line2, "x1", "21");
attr(line2, "x2", "12");
attr(line2, "y1", "12");
attr(line2, "y2", "12");
attr(line3, "x1", "8");
attr(line3, "x2", "3");
attr(line3, "y1", "12");
attr(line3, "y2", "12");
attr(line4, "x1", "21");
attr(line4, "x2", "16");
attr(line4, "y1", "20");
attr(line4, "y2", "20");
attr(line5, "x1", "12");
attr(line5, "x2", "3");
attr(line5, "y1", "20");
attr(line5, "y2", "20");
attr(line6, "x1", "14");
attr(line6, "x2", "14");
attr(line6, "y1", "2");
attr(line6, "y2", "6");
attr(line7, "x1", "8");
attr(line7, "x2", "8");
attr(line7, "y1", "10");
attr(line7, "y2", "14");
attr(line8, "x1", "16");
attr(line8, "x2", "16");
attr(line8, "y1", "18");
attr(line8, "y2", "22");
attr(svg, "class", "svg-icon lucide-sliders-horizontal");
attr(svg, "fill", "none");
attr(svg, "height", "24");
attr(svg, "stroke", "currentColor");
attr(svg, "stroke-linecap", "round");
attr(svg, "stroke-linejoin", "round");
attr(svg, "stroke-width", "2");
attr(svg, "viewBox", "0 0 24 24");
attr(svg, "width", "24");
attr(svg, "xmlns", "http://www.w3.org/2000/svg");
},
m(target, anchor) {
insert(target, svg, anchor);
append(svg, line0);
append(svg, line1);
append(svg, line2);
append(svg, line3);
append(svg, line4);
append(svg, line5);
append(svg, line6);
append(svg, line7);
append(svg, line8);
},
p: noop,
i: noop,
o: noop,
d(detaching) {
if (detaching)
detach(svg);
}
};
}
var Settings = class extends SvelteComponent {
constructor(options) {
super();
init(this, options, null, create_fragment14, safe_not_equal, {});
}
};
var settings_default = Settings;
// src/ui/components/controls.svelte
function add_css3(target) {
append_styles(target, "svelte-1rjga2i", ".help-item.svelte-1rjga2i{margin:var(--size-2-3) var(--size-4-4);font-size:var(--font-ui-small);color:var(--text-muted)}.date.svelte-1rjga2i{display:flex;align-items:center;justify-content:center;font-size:var(--font-ui-small);font-weight:var(--font-medium);color:var(--text-normal)}.settings.svelte-1rjga2i{margin:var(--size-4-1) var(--size-4-4)}.setting-item.svelte-1rjga2i{padding:var(--size-2-3) 0;border:none}.setting-item-name.svelte-1rjga2i{font-size:var(--font-ui-small)}.controls.svelte-1rjga2i{display:flex;flex-direction:column;border-bottom:1px solid var(--background-modifier-border)}.header.svelte-1rjga2i{display:grid;grid-template-columns:repeat(2, var(--size-4-8)) repeat(3, 1fr) repeat(\n 2,\n var(--size-4-8)\n );margin:var(--size-4-2)}");
}
function get_each_context3(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[18] = list[i];
return child_ctx;
}
function get_each_context_1(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[21] = list[i];
return child_ctx;
}
function create_default_slot_5(ctx) {
let gotofileicon;
let current;
gotofileicon = new go_to_file_default({});
return {
c() {
create_component(gotofileicon.$$.fragment);
},
m(target, anchor) {
mount_component(gotofileicon, target, anchor);
current = true;
},
i(local) {
if (current)
return;
transition_in(gotofileicon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(gotofileicon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(gotofileicon, detaching);
}
};
}
function create_default_slot_4(ctx) {
let arrowlefticon;
let current;
arrowlefticon = new arrow_left_default({});
return {
c() {
create_component(arrowlefticon.$$.fragment);
},
m(target, anchor) {
mount_component(arrowlefticon, target, anchor);
current = true;
},
i(local) {
if (current)
return;
transition_in(arrowlefticon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(arrowlefticon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(arrowlefticon, detaching);
}
};
}
function create_default_slot_3(ctx) {
let span;
let t_value = (
/*day*/
ctx[0].format(import_obsidian_daily_notes_interface3.DEFAULT_DAILY_NOTE_FORMAT) + ""
);
let t;
return {
c() {
span = element("span");
t = text(t_value);
attr(span, "class", "date svelte-1rjga2i");
},
m(target, anchor) {
insert(target, span, anchor);
append(span, t);
},
p(ctx2, dirty) {
if (dirty & /*day*/
1 && t_value !== (t_value = /*day*/
ctx2[0].format(import_obsidian_daily_notes_interface3.DEFAULT_DAILY_NOTE_FORMAT) + ""))
set_data(t, t_value);
},
d(detaching) {
if (detaching)
detach(span);
}
};
}
function create_default_slot_2(ctx) {
let arrowrighticon;
let current;
arrowrighticon = new arrow_right_default({});
return {
c() {
create_component(arrowrighticon.$$.fragment);
},
m(target, anchor) {
mount_component(arrowrighticon, target, anchor);
current = true;
},
i(local) {
if (current)
return;
transition_in(arrowrighticon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(arrowrighticon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(arrowrighticon, detaching);
}
};
}
function create_default_slot_1(ctx) {
let helpcircle;
let current;
helpcircle = new Help_circle$1({ props: { class: "svg-icon" } });
return {
c() {
create_component(helpcircle.$$.fragment);
},
m(target, anchor) {
mount_component(helpcircle, target, anchor);
current = true;
},
p: noop,
i(local) {
if (current)
return;
transition_in(helpcircle.$$.fragment, local);
current = true;
},
o(local) {
transition_out(helpcircle.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(helpcircle, detaching);
}
};
}
function create_default_slot8(ctx) {
let settingsicon;
let current;
settingsicon = new settings_default({});
return {
c() {
create_component(settingsicon.$$.fragment);
},
m(target, anchor) {
mount_component(settingsicon, target, anchor);
current = true;
},
i(local) {
if (current)
return;
transition_in(settingsicon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(settingsicon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(settingsicon, detaching);
}
};
}
function create_if_block_1(ctx) {
let p0;
let t1;
let p1;
let t5;
let p2;
return {
c() {
p0 = element("p");
p0.innerHTML = `<strong>Advanced editing:</strong>`;
t1 = space();
p1 = element("p");
p1.innerHTML = `Hold <strong>Shift</strong> and drag to copy`;
t5 = space();
p2 = element("p");
p2.innerHTML = `Hold <strong>Control</strong> and drag/resize to push neighboring tasks`;
attr(p0, "class", "help-item svelte-1rjga2i");
attr(p1, "class", "help-item svelte-1rjga2i");
attr(p2, "class", "help-item svelte-1rjga2i");
},
m(target, anchor) {
insert(target, p0, anchor);
insert(target, t1, anchor);
insert(target, p1, anchor);
insert(target, t5, anchor);
insert(target, p2, anchor);
},
d(detaching) {
if (detaching)
detach(p0);
if (detaching)
detach(t1);
if (detaching)
detach(p1);
if (detaching)
detach(t5);
if (detaching)
detach(p2);
}
};
}
function create_if_block(ctx) {
let div18;
let div3;
let div1;
let t1;
let div2;
let select0;
let select0_value_value;
let t2;
let div7;
let div5;
let t4;
let div6;
let select1;
let select1_value_value;
let t5;
let div12;
let div9;
let t7;
let div11;
let div10;
let t8;
let div17;
let div14;
let t10;
let div16;
let div15;
let mounted;
let dispose;
let each_value_1 = (
/*startHourOptions*/
ctx[5]
);
let each_blocks_1 = [];
for (let i = 0; i < each_value_1.length; i += 1) {
each_blocks_1[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i));
}
let each_value = (
/*zoomLevelOptions*/
ctx[6]
);
let each_blocks = [];
for (let i = 0; i < each_value.length; i += 1) {
each_blocks[i] = create_each_block3(get_each_context3(ctx, each_value, i));
}
return {
c() {
div18 = element("div");
div3 = element("div");
div1 = element("div");
div1.innerHTML = `<div class="setting-item-name svelte-1rjga2i">Start hour</div>`;
t1 = space();
div2 = element("div");
select0 = element("select");
for (let i = 0; i < each_blocks_1.length; i += 1) {
each_blocks_1[i].c();
}
t2 = space();
div7 = element("div");
div5 = element("div");
div5.innerHTML = `<div class="setting-item-name svelte-1rjga2i">Zoom</div>`;
t4 = space();
div6 = element("div");
select1 = element("select");
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
t5 = space();
div12 = element("div");
div9 = element("div");
div9.innerHTML = `<div class="setting-item-name svelte-1rjga2i">Auto-scroll to now</div>`;
t7 = space();
div11 = element("div");
div10 = element("div");
div10.innerHTML = `<input tabindex="0" type="checkbox"/>`;
t8 = space();
div17 = element("div");
div14 = element("div");
div14.innerHTML = `<div class="setting-item-name svelte-1rjga2i">Show help while dragging</div>`;
t10 = space();
div16 = element("div");
div15 = element("div");
div15.innerHTML = `<input tabindex="0" type="checkbox"/>`;
attr(div1, "class", "setting-item-info");
attr(select0, "class", "dropdown");
attr(div2, "class", "setting-item-control");
attr(div3, "class", "setting-item svelte-1rjga2i");
attr(div5, "class", "setting-item-info");
attr(select1, "class", "dropdown");
attr(div6, "class", "setting-item-control");
attr(div7, "class", "setting-item svelte-1rjga2i");
attr(div9, "class", "setting-item-info");
attr(div10, "class", "checkbox-container mod-small");
toggle_class(
div10,
"is-enabled",
/*$settings*/
ctx[4].centerNeedle
);
attr(div11, "class", "setting-item-control");
attr(div12, "class", "setting-item mod-toggle svelte-1rjga2i");
attr(div14, "class", "setting-item-info");
attr(div15, "class", "checkbox-container mod-small");
toggle_class(
div15,
"is-enabled",
/*$settings*/
ctx[4].showHelp
);
attr(div16, "class", "setting-item-control");
attr(div17, "class", "setting-item mod-toggle svelte-1rjga2i");
attr(div18, "class", "settings svelte-1rjga2i");
},
m(target, anchor) {
insert(target, div18, anchor);
append(div18, div3);
append(div3, div1);
append(div3, t1);
append(div3, div2);
append(div2, select0);
for (let i = 0; i < each_blocks_1.length; i += 1) {
if (each_blocks_1[i]) {
each_blocks_1[i].m(select0, null);
}
}
select_option(select0, String(
/*$settings*/
ctx[4].startHour
));
append(div18, t2);
append(div18, div7);
append(div7, div5);
append(div7, t4);
append(div7, div6);
append(div6, select1);
for (let i = 0; i < each_blocks.length; i += 1) {
if (each_blocks[i]) {
each_blocks[i].m(select1, null);
}
}
select_option(select1, String(
/*$settings*/
ctx[4].zoomLevel
));
append(div18, t5);
append(div18, div12);
append(div12, div9);
append(div12, t7);
append(div12, div11);
append(div11, div10);
append(div18, t8);
append(div18, div17);
append(div17, div14);
append(div17, t10);
append(div17, div16);
append(div16, div15);
if (!mounted) {
dispose = [
listen(
select0,
"input",
/*input_handler*/
ctx[13]
),
listen(
select1,
"input",
/*input_handler_1*/
ctx[14]
),
listen(
div10,
"click",
/*click_handler_1*/
ctx[15]
),
listen(
div15,
"click",
/*click_handler_2*/
ctx[16]
)
];
mounted = true;
}
},
p(ctx2, dirty) {
if (dirty & /*startHourOptions*/
32) {
each_value_1 = /*startHourOptions*/
ctx2[5];
let i;
for (i = 0; i < each_value_1.length; i += 1) {
const child_ctx = get_each_context_1(ctx2, each_value_1, i);
if (each_blocks_1[i]) {
each_blocks_1[i].p(child_ctx, dirty);
} else {
each_blocks_1[i] = create_each_block_1(child_ctx);
each_blocks_1[i].c();
each_blocks_1[i].m(select0, null);
}
}
for (; i < each_blocks_1.length; i += 1) {
each_blocks_1[i].d(1);
}
each_blocks_1.length = each_value_1.length;
}
if (dirty & /*$settings, startHourOptions*/
48 && select0_value_value !== (select0_value_value = String(
/*$settings*/
ctx2[4].startHour
))) {
select_option(select0, String(
/*$settings*/
ctx2[4].startHour
));
}
if (dirty & /*zoomLevelOptions*/
64) {
each_value = /*zoomLevelOptions*/
ctx2[6];
let i;
for (i = 0; i < each_value.length; i += 1) {
const child_ctx = get_each_context3(ctx2, each_value, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
} else {
each_blocks[i] = create_each_block3(child_ctx);
each_blocks[i].c();
each_blocks[i].m(select1, null);
}
}
for (; i < each_blocks.length; i += 1) {
each_blocks[i].d(1);
}
each_blocks.length = each_value.length;
}
if (dirty & /*$settings, startHourOptions*/
48 && select1_value_value !== (select1_value_value = String(
/*$settings*/
ctx2[4].zoomLevel
))) {
select_option(select1, String(
/*$settings*/
ctx2[4].zoomLevel
));
}
if (dirty & /*$settings*/
16) {
toggle_class(
div10,
"is-enabled",
/*$settings*/
ctx2[4].centerNeedle
);
}
if (dirty & /*$settings*/
16) {
toggle_class(
div15,
"is-enabled",
/*$settings*/
ctx2[4].showHelp
);
}
},
d(detaching) {
if (detaching)
detach(div18);
destroy_each(each_blocks_1, detaching);
destroy_each(each_blocks, detaching);
mounted = false;
run_all(dispose);
}
};
}
function create_each_block_1(ctx) {
let option;
let t_value = (
/*hour*/
ctx[21] + ""
);
let t;
let option_value_value;
return {
c() {
option = element("option");
t = text(t_value);
option.__value = option_value_value = /*hour*/
ctx[21];
option.value = option.__value;
},
m(target, anchor) {
insert(target, option, anchor);
append(option, t);
},
p: noop,
d(detaching) {
if (detaching)
detach(option);
}
};
}
function create_each_block3(ctx) {
let option;
let t_value = (
/*level*/
ctx[18] + ""
);
let t;
let option_value_value;
return {
c() {
option = element("option");
t = text(t_value);
option.__value = option_value_value = /*level*/
ctx[18];
option.value = option.__value;
},
m(target, anchor) {
insert(target, option, anchor);
append(option, t);
},
p: noop,
d(detaching) {
if (detaching)
detach(option);
}
};
}
function create_fragment15(ctx) {
let div1;
let div0;
let controlbutton0;
let t0;
let controlbutton1;
let div;
let t1;
let controlbutton2;
let t2;
let controlbutton3;
let div_1;
let t3;
let controlbutton4;
let t4;
let controlbutton5;
let t5;
let t6;
let current;
controlbutton0 = new control_button_default({
props: {
label: "Open today's daily note",
$$slots: { default: [create_default_slot_5] },
$$scope: { ctx }
}
});
controlbutton0.$on(
"click",
/*goToToday*/
ctx[11]
);
controlbutton1 = new control_button_default({
props: {
label: "Go to previous daily plan",
$$slots: { default: [create_default_slot_4] },
$$scope: { ctx }
}
});
controlbutton1.$on(
"click",
/*goBack*/
ctx[9]
);
controlbutton2 = new control_button_default({
props: {
label: "Go to file",
$$slots: { default: [create_default_slot_3] },
$$scope: { ctx }
}
});
controlbutton2.$on(
"click",
/*click_handler*/
ctx[12]
);
controlbutton3 = new control_button_default({
props: {
label: "Go to next daily plan",
$$slots: { default: [create_default_slot_2] },
$$scope: { ctx }
}
});
controlbutton3.$on(
"click",
/*goForward*/
ctx[10]
);
controlbutton4 = new control_button_default({
props: {
isActive: (
/*helpVisible*/
ctx[3]
),
label: "Help",
$$slots: { default: [create_default_slot_1] },
$$scope: { ctx }
}
});
controlbutton4.$on(
"click",
/*toggleHelp*/
ctx[8]
);
controlbutton5 = new control_button_default({
props: {
isActive: (
/*settingsVisible*/
ctx[2]
),
label: "Settings",
$$slots: { default: [create_default_slot8] },
$$scope: { ctx }
}
});
controlbutton5.$on(
"click",
/*toggleSettings*/
ctx[7]
);
let if_block0 = (
/*helpVisible*/
ctx[3] && create_if_block_1(ctx)
);
let if_block1 = (
/*settingsVisible*/
ctx[2] && create_if_block(ctx)
);
return {
c() {
div1 = element("div");
div0 = element("div");
create_component(controlbutton0.$$.fragment);
t0 = space();
div = element("div");
create_component(controlbutton1.$$.fragment);
t1 = space();
create_component(controlbutton2.$$.fragment);
t2 = space();
div_1 = element("div");
create_component(controlbutton3.$$.fragment);
t3 = space();
create_component(controlbutton4.$$.fragment);
t4 = space();
create_component(controlbutton5.$$.fragment);
t5 = space();
if (if_block0)
if_block0.c();
t6 = space();
if (if_block1)
if_block1.c();
set_style(div, "display", "contents");
set_style(div, "--grid-column-start", "3");
set_style(div, "--justify-self", "flex-end");
set_style(div_1, "display", "contents");
set_style(div_1, "--justify-self", "flex-start");
attr(div0, "class", "header svelte-1rjga2i");
attr(div1, "class", "controls svelte-1rjga2i");
},
m(target, anchor) {
insert(target, div1, anchor);
append(div1, div0);
mount_component(controlbutton0, div0, null);
append(div0, t0);
append(div0, div);
mount_component(controlbutton1, div, null);
append(div0, t1);
mount_component(controlbutton2, div0, null);
append(div0, t2);
append(div0, div_1);
mount_component(controlbutton3, div_1, null);
append(div0, t3);
mount_component(controlbutton4, div0, null);
append(div0, t4);
mount_component(controlbutton5, div0, null);
append(div1, t5);
if (if_block0)
if_block0.m(div1, null);
append(div1, t6);
if (if_block1)
if_block1.m(div1, null);
current = true;
},
p(ctx2, [dirty]) {
const controlbutton0_changes = {};
if (dirty & /*$$scope*/
16777216) {
controlbutton0_changes.$$scope = { dirty, ctx: ctx2 };
}
controlbutton0.$set(controlbutton0_changes);
const controlbutton1_changes = {};
if (dirty & /*$$scope*/
16777216) {
controlbutton1_changes.$$scope = { dirty, ctx: ctx2 };
}
controlbutton1.$set(controlbutton1_changes);
const controlbutton2_changes = {};
if (dirty & /*$$scope, day*/
16777217) {
controlbutton2_changes.$$scope = { dirty, ctx: ctx2 };
}
controlbutton2.$set(controlbutton2_changes);
const controlbutton3_changes = {};
if (dirty & /*$$scope*/
16777216) {
controlbutton3_changes.$$scope = { dirty, ctx: ctx2 };
}
controlbutton3.$set(controlbutton3_changes);
const controlbutton4_changes = {};
if (dirty & /*helpVisible*/
8)
controlbutton4_changes.isActive = /*helpVisible*/
ctx2[3];
if (dirty & /*$$scope*/
16777216) {
controlbutton4_changes.$$scope = { dirty, ctx: ctx2 };
}
controlbutton4.$set(controlbutton4_changes);
const controlbutton5_changes = {};
if (dirty & /*settingsVisible*/
4)
controlbutton5_changes.isActive = /*settingsVisible*/
ctx2[2];
if (dirty & /*$$scope*/
16777216) {
controlbutton5_changes.$$scope = { dirty, ctx: ctx2 };
}
controlbutton5.$set(controlbutton5_changes);
if (
/*helpVisible*/
ctx2[3]
) {
if (if_block0) {
} else {
if_block0 = create_if_block_1(ctx2);
if_block0.c();
if_block0.m(div1, t6);
}
} else if (if_block0) {
if_block0.d(1);
if_block0 = null;
}
if (
/*settingsVisible*/
ctx2[2]
) {
if (if_block1) {
if_block1.p(ctx2, dirty);
} else {
if_block1 = create_if_block(ctx2);
if_block1.c();
if_block1.m(div1, null);
}
} else if (if_block1) {
if_block1.d(1);
if_block1 = null;
}
},
i(local) {
if (current)
return;
transition_in(controlbutton0.$$.fragment, local);
transition_in(controlbutton1.$$.fragment, local);
transition_in(controlbutton2.$$.fragment, local);
transition_in(controlbutton3.$$.fragment, local);
transition_in(controlbutton4.$$.fragment, local);
transition_in(controlbutton5.$$.fragment, local);
current = true;
},
o(local) {
transition_out(controlbutton0.$$.fragment, local);
transition_out(controlbutton1.$$.fragment, local);
transition_out(controlbutton2.$$.fragment, local);
transition_out(controlbutton3.$$.fragment, local);
transition_out(controlbutton4.$$.fragment, local);
transition_out(controlbutton5.$$.fragment, local);
current = false;
},
d(detaching) {
if (detaching)
detach(div1);
destroy_component(controlbutton0);
destroy_component(controlbutton1);
destroy_component(controlbutton2);
destroy_component(controlbutton3);
destroy_component(controlbutton4);
destroy_component(controlbutton5);
if (if_block0)
if_block0.d();
if (if_block1)
if_block1.d();
}
};
}
function instance11($$self, $$props, $$invalidate) {
let $visibleDayInTimeline;
let $settings;
component_subscribe($$self, visibleDayInTimeline, ($$value) => $$invalidate(17, $visibleDayInTimeline = $$value));
component_subscribe($$self, settings, ($$value) => $$invalidate(4, $settings = $$value));
let { day } = $$props;
let { obsidianFacade } = $$props;
const startHourOptions = (0, import_fp4.range)(0, 13).map(String);
const zoomLevelOptions = (0, import_fp4.range)(1, 5).map(String);
let settingsVisible = false;
let helpVisible = false;
function toggleSettings() {
$$invalidate(2, settingsVisible = !settingsVisible);
}
function toggleHelp() {
$$invalidate(3, helpVisible = !helpVisible);
}
function goBack() {
return __awaiter(this, void 0, void 0, function* () {
const previousDay = $visibleDayInTimeline.clone().subtract(1, "day");
const previousNote = yield createDailyNoteIfNeeded(previousDay);
yield obsidianFacade.openFileInEditor(previousNote);
set_store_value(visibleDayInTimeline, $visibleDayInTimeline = previousDay, $visibleDayInTimeline);
});
}
function goForward() {
return __awaiter(this, void 0, void 0, function* () {
const nextDay = $visibleDayInTimeline.clone().add(1, "day");
const nextNote = yield createDailyNoteIfNeeded(nextDay);
yield obsidianFacade.openFileInEditor(nextNote);
set_store_value(visibleDayInTimeline, $visibleDayInTimeline = nextDay, $visibleDayInTimeline);
});
}
function goToToday() {
return __awaiter(this, void 0, void 0, function* () {
const noteForToday = yield createDailyNoteIfNeeded(window.moment());
yield obsidianFacade.openFileInEditor(noteForToday);
});
}
const click_handler = async () => {
const note = await createDailyNoteIfNeeded(day);
await obsidianFacade.openFileInEditor(note);
};
const input_handler = (event) => {
set_store_value(settings, $settings.startHour = Number(event.currentTarget.value), $settings);
};
const input_handler_1 = (event) => {
set_store_value(settings, $settings.zoomLevel = Number(event.currentTarget.value), $settings);
};
const click_handler_1 = () => {
set_store_value(settings, $settings.centerNeedle = !$settings.centerNeedle, $settings);
};
const click_handler_2 = () => {
set_store_value(settings, $settings.showHelp = !$settings.showHelp, $settings);
};
$$self.$$set = ($$props2) => {
if ("day" in $$props2)
$$invalidate(0, day = $$props2.day);
if ("obsidianFacade" in $$props2)
$$invalidate(1, obsidianFacade = $$props2.obsidianFacade);
};
return [
day,
obsidianFacade,
settingsVisible,
helpVisible,
$settings,
startHourOptions,
zoomLevelOptions,
toggleSettings,
toggleHelp,
goBack,
goForward,
goToToday,
click_handler,
input_handler,
input_handler_1,
click_handler_1,
click_handler_2
];
}
var Controls = class extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance11, create_fragment15, safe_not_equal, { day: 0, obsidianFacade: 1 }, add_css3);
}
};
var controls_default = Controls;
// src/global-store/current-time.ts
var currentTime = readable(window.moment(), (set) => {
const interval = setInterval(() => {
set(window.moment());
}, 1e3);
return () => {
clearInterval(interval);
};
});
// src/ui/components/needle.svelte
function add_css4(target) {
append_styles(target, "svelte-1rbwtw9", ".needle.svelte-1rbwtw9{height:2px;background-color:var(--color-accent)}");
}
function create_fragment16(ctx) {
let div;
let style_transform = `translateY(${/*coords*/
ctx[1]}px)`;
return {
c() {
div = element("div");
attr(div, "class", "needle absolute-stretch-x svelte-1rbwtw9");
set_style(div, "transform", style_transform);
},
m(target, anchor) {
insert(target, div, anchor);
ctx[5](div);
},
p(ctx2, [dirty]) {
if (dirty & /*coords*/
2 && style_transform !== (style_transform = `translateY(${/*coords*/
ctx2[1]}px)`)) {
set_style(div, "transform", style_transform);
}
},
i: noop,
o: noop,
d(detaching) {
if (detaching)
detach(div);
ctx[5](null);
}
};
}
function instance12($$self, $$props, $$invalidate) {
let $currentTime;
let $timeToTimelineOffset;
let $visibleDayInTimeline;
let $settings;
component_subscribe($$self, currentTime, ($$value) => $$invalidate(3, $currentTime = $$value));
component_subscribe($$self, timeToTimelineOffset, ($$value) => $$invalidate(4, $timeToTimelineOffset = $$value));
component_subscribe($$self, visibleDayInTimeline, ($$value) => $$invalidate(6, $visibleDayInTimeline = $$value));
component_subscribe($$self, settings, ($$value) => $$invalidate(7, $settings = $$value));
let { autoScrollBlocked = false } = $$props;
let el;
let coords = $timeToTimelineOffset(getMinutesSinceMidnight($currentTime));
function scrollIntoView() {
if ($settings.centerNeedle && !autoScrollBlocked && isToday($visibleDayInTimeline)) {
el === null || el === void 0 ? void 0 : el.scrollIntoView({ behavior: "smooth", block: "center" });
}
}
function div_binding($$value) {
binding_callbacks[$$value ? "unshift" : "push"](() => {
el = $$value;
$$invalidate(0, el);
});
}
$$self.$$set = ($$props2) => {
if ("autoScrollBlocked" in $$props2)
$$invalidate(2, autoScrollBlocked = $$props2.autoScrollBlocked);
};
$$self.$$.update = () => {
if ($$self.$$.dirty & /*$timeToTimelineOffset, $currentTime*/
24) {
$: {
$$invalidate(1, coords = $timeToTimelineOffset(getMinutesSinceMidnight($currentTime)));
scrollIntoView();
}
}
};
return [
el,
coords,
autoScrollBlocked,
$currentTime,
$timeToTimelineOffset,
div_binding
];
}
var Needle = class extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance12, create_fragment16, safe_not_equal, { autoScrollBlocked: 2 }, add_css4);
}
};
var needle_default = Needle;
// src/ui/components/ruler.svelte
function add_css5(target) {
append_styles(target, "svelte-y3mmrv", ".hours-container.svelte-y3mmrv{position:sticky;z-index:5;left:0;display:flex;flex:0 0 30px;flex-direction:column;background-color:var(--background-primary);border-right:1px solid var(--background-modifier-border)}.hour.svelte-y3mmrv{display:flex;flex:1 0 0;border-bottom:1px solid var(--background-modifier-border)}.hour-number-container.svelte-y3mmrv{display:flex;flex:0 0 30px;align-self:flex-start;justify-content:center;font-size:var(--nav-item-size);color:var(--text-muted)}");
}
function get_each_context4(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[2] = list[i];
return child_ctx;
}
function create_each_block4(ctx) {
let div1;
let div0;
let t0_value = (
/*hour*/
ctx[2] + ""
);
let t0;
let t1;
let style_height = `${/*$hourSize*/
ctx[1]}px`;
return {
c() {
div1 = element("div");
div0 = element("div");
t0 = text(t0_value);
t1 = space();
attr(div0, "class", "hour-number-container svelte-y3mmrv");
attr(div1, "class", "hour svelte-y3mmrv");
set_style(div1, "height", style_height);
},
m(target, anchor) {
insert(target, div1, anchor);
append(div1, div0);
append(div0, t0);
append(div1, t1);
},
p(ctx2, dirty) {
if (dirty & /*visibleHours*/
1 && t0_value !== (t0_value = /*hour*/
ctx2[2] + ""))
set_data(t0, t0_value);
if (dirty & /*$hourSize*/
2 && style_height !== (style_height = `${/*$hourSize*/
ctx2[1]}px`)) {
set_style(div1, "height", style_height);
}
},
d(detaching) {
if (detaching)
detach(div1);
}
};
}
function create_fragment17(ctx) {
let div;
let each_value = (
/*visibleHours*/
ctx[0]
);
let each_blocks = [];
for (let i = 0; i < each_value.length; i += 1) {
each_blocks[i] = create_each_block4(get_each_context4(ctx, each_value, i));
}
return {
c() {
div = element("div");
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
attr(div, "class", "hours-container svelte-y3mmrv");
},
m(target, anchor) {
insert(target, div, anchor);
for (let i = 0; i < each_blocks.length; i += 1) {
if (each_blocks[i]) {
each_blocks[i].m(div, null);
}
}
},
p(ctx2, [dirty]) {
if (dirty & /*$hourSize, visibleHours*/
3) {
each_value = /*visibleHours*/
ctx2[0];
let i;
for (i = 0; i < each_value.length; i += 1) {
const child_ctx = get_each_context4(ctx2, each_value, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
} else {
each_blocks[i] = create_each_block4(child_ctx);
each_blocks[i].c();
each_blocks[i].m(div, null);
}
}
for (; i < each_blocks.length; i += 1) {
each_blocks[i].d(1);
}
each_blocks.length = each_value.length;
}
},
i: noop,
o: noop,
d(detaching) {
if (detaching)
detach(div);
destroy_each(each_blocks, detaching);
}
};
}
function instance13($$self, $$props, $$invalidate) {
let $hourSize;
component_subscribe($$self, hourSize, ($$value) => $$invalidate(1, $hourSize = $$value));
let { visibleHours: visibleHours2 } = $$props;
$$self.$$set = ($$props2) => {
if ("visibleHours" in $$props2)
$$invalidate(0, visibleHours2 = $$props2.visibleHours);
};
return [visibleHours2, $hourSize];
}
var Ruler = class extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance13, create_fragment17, safe_not_equal, { visibleHours: 0 }, add_css5);
}
};
var ruler_default = Ruler;
// src/util/create-watchable.ts
function createWatchable() {
const { subscribe: subscribe2, set } = writable();
function trigger() {
set({});
}
return {
subscribe: subscribe2,
trigger
};
}
// src/global-store/edit-events.ts
var editConfirmation = createWatchable();
var editCancellation = createWatchable();
// src/ui/actions/styled-cursor.ts
function styledCursor(el, cursor) {
const initial = el.style.cursor;
el.style.cursor = cursor;
return {
update(newCursor) {
el.style.cursor = newCursor || initial;
},
destroy() {
el.style.cursor = initial;
}
};
}
// src/ui/hooks/use-edit/transform/create.ts
function create(baseline, editTarget, cursorTime) {
const startMinutes = cursorTime;
const endMinutes = cursorTime + editTarget.durationMinutes;
const updated = {
...editTarget,
startMinutes,
endMinutes
};
return [...baseline, updated];
}
async function createPlanItem2(day, startMinutes) {
const endMinutes = startMinutes + defaultDurationMinutes;
const { path } = await createDailyNoteIfNeeded(day);
return {
id: getId(),
startMinutes,
durationMinutes: defaultDurationMinutes,
endMinutes,
firstLineText: "New item",
text: "New item",
startTime: minutesToMomentOfDay(startMinutes, day),
endTime: minutesToMomentOfDay(endMinutes, day),
// todo: no hardcode, this should be configurable
listTokens: "- ",
// todo: fix this, do not check for newly created tasks using their location
// @ts-ignore
location: {
path
},
placing: {
widthPercent: 100,
xOffsetPercent: 0
}
};
}
// src/util/to-spliced.ts
function toSpliced(array, index, el) {
const copy = [...array];
copy[index] = el;
return copy;
}
// src/ui/hooks/use-edit/transform/drag.ts
function drag(baseline, editTarget, cursorTime) {
const index = baseline.findIndex((task) => task.id === editTarget.id);
const startMinutes = cursorTime;
const endMinutes = cursorTime + editTarget.durationMinutes;
const updated = {
...editTarget,
startMinutes,
endMinutes
};
return toSpliced(baseline, index, updated);
}
// src/ui/hooks/use-edit/transform/drag-and-shift-others.ts
var import_lodash = __toESM(require_lodash());
function dragAndShiftOthers(baseline, editTarget, cursorTime) {
const index = baseline.findIndex((task) => task.id === editTarget.id);
const preceding = baseline.slice(0, index);
const following = baseline.slice(index + 1);
const newStartMinutes = cursorTime;
const newEndMinutes = cursorTime + editTarget.durationMinutes;
const updated = {
...editTarget,
startMinutes: newStartMinutes,
endMinutes: newEndMinutes
};
const updatedFollowing = following.reduce((result, current) => {
const previous = (0, import_lodash.last)(result) || updated;
if (previous.endMinutes > current.startMinutes) {
return [
...result,
{
...current,
startMinutes: previous.endMinutes,
endMinutes: previous.endMinutes + current.durationMinutes
}
];
}
return [...result, current];
}, []);
const updatedPreceding = preceding.reverse().reduce((result, current) => {
const nextInTimeline = (0, import_lodash.last)(result) || updated;
if (nextInTimeline.startMinutes < current.endMinutes) {
return [
...result,
{
...current,
startMinutes: nextInTimeline.startMinutes - current.durationMinutes,
endMinutes: nextInTimeline.startMinutes
}
];
}
return [...result, current];
}, []).reverse();
return [...updatedPreceding, updated, ...updatedFollowing];
}
// src/ui/hooks/use-edit/transform/resize.ts
function resize(baseline, editTarget, cursorTime) {
const index = baseline.findIndex((task) => task.id === editTarget.id);
const endMinutes = cursorTime;
const durationMinutes = cursorTime - editTarget.startMinutes;
const updated = {
...editTarget,
durationMinutes,
endMinutes
};
return toSpliced(baseline, index, updated);
}
// src/ui/hooks/use-edit/transform/resize-and-shift-others.ts
var import_lodash2 = __toESM(require_lodash());
function resizeAndShiftOthers(baseline, editTarget, cursorTime) {
const index = baseline.findIndex((task) => task.id === editTarget.id);
const preceding = baseline.slice(0, index);
const following = baseline.slice(index + 1);
const endMinutes = cursorTime;
const durationMinutes = endMinutes - editTarget.startMinutes;
const updated = {
...editTarget,
durationMinutes,
endMinutes
};
const updatedFollowing = following.reduce((result, current) => {
const previous = (0, import_lodash2.last)(result) || updated;
if (previous.endMinutes > current.startMinutes) {
return [
...result,
{
...current,
startMinutes: previous.endMinutes,
endMinutes: previous.endMinutes + current.durationMinutes
}
];
}
return [...result, current];
}, []);
return [...preceding, updated, ...updatedFollowing];
}
// src/ui/hooks/use-edit/transform/transform.ts
function transform(baseline, cursorTime, { task, mode }) {
switch (mode) {
case "DRAG" /* DRAG */:
return drag(baseline, task, cursorTime);
case "DRAG_AND_SHIFT_OTHERS" /* DRAG_AND_SHIFT_OTHERS */:
return dragAndShiftOthers(baseline, task, cursorTime);
case "CREATE" /* CREATE */:
return create(baseline, task, cursorTime);
case "RESIZE" /* RESIZE */:
return resize(baseline, task, cursorTime);
case "RESIZE_AND_SHIFT_OTHERS" /* RESIZE_AND_SHIFT_OTHERS */:
return resizeAndShiftOthers(baseline, task, cursorTime);
default:
throw new Error(`Unknown edit mode: ${mode}`);
}
}
// src/ui/hooks/use-edit/use-edit.ts
function offsetYToMinutes_NEW(offsetY, zoomLevel, startHour) {
const hiddenHoursSize2 = startHour * 60 * zoomLevel;
return (offsetY + hiddenHoursSize2) / zoomLevel;
}
function useEdit({
parsedTasks,
pointerOffsetY,
settings: settings2,
onUpdate
}) {
const baselineTasks = writable(parsedTasks);
const editOperation = writable();
const displayedTasks = derived(
[editOperation, pointerOffsetY, baselineTasks, settings2],
([$editOperation, $pointerOffsetY, $baselineTasks, $settings]) => {
if (!$editOperation) {
return $baselineTasks;
}
const cursorMinutes = offsetYToMinutes_NEW(
$pointerOffsetY,
$settings.zoomLevel,
$settings.startHour
);
return transform($baselineTasks, cursorMinutes, $editOperation);
}
);
const editStatus = derived(
editOperation,
($editOperation) => $editOperation == null ? void 0 : $editOperation.mode
);
function startEdit(operation) {
editOperation.set(operation);
}
async function confirmEdit() {
const currentTasks = get_store_value(displayedTasks);
baselineTasks.set(currentTasks.map((t) => ({ ...t, isGhost: false })));
editOperation.set(void 0);
await onUpdate(parsedTasks, currentTasks);
}
function cancelEdit() {
editOperation.set(void 0);
}
return {
startEdit,
confirmEdit,
cancelEdit,
displayedTasks,
editStatus
};
}
// src/global-store/settings-with-utils.ts
var settingsWithUtils = {
settings,
hourSize,
hiddenHoursSize,
visibleHours,
sizeToDuration,
durationToSize,
getTimeFromYOffset
};
// src/ui/hooks/use-color.ts
var import_chroma_js2 = __toESM(require_chroma());
// src/util/color.ts
var import_chroma_js = __toESM(require_chroma());
var lightThemeColors = {
normal: "#222222",
muted: "#5c5c5c",
faint: "#666666"
};
var darkThemeColors = {
normal: "#dadada",
muted: "#b3b3b3",
faint: "#ababab"
};
function getTextColorWithEnoughContrast(backgroundColor) {
return import_chroma_js.default.contrast(backgroundColor, darkThemeColors.normal) > import_chroma_js.default.contrast(backgroundColor, lightThemeColors.normal) ? darkThemeColors : lightThemeColors;
}
// src/ui/hooks/use-color.ts
function useColor({ settings: settings2, task }) {
const colorScale = derived(settings2, ($settings) => {
return import_chroma_js2.default.scale([$settings.timelineStartColor, $settings.timelineEndColor]).mode("lab");
});
const backgroundColor = derived(
[settings2, colorScale],
([$settings, $colorScale]) => {
const scaleKey = (task.startTime.hour() - $settings.startHour) / (24 - $settings.startHour);
return $settings.timelineColored && task.startTime ? $colorScale(scaleKey).hex() : "var(--background-primary)";
}
);
const properContrastColors = derived(
[settings2, backgroundColor],
([$settings, $backgroundColor]) => {
return $settings.timelineColored && task.startTime ? getTextColorWithEnoughContrast($backgroundColor) : {
normal: "var(--text-normal)",
muted: "var(--text-muted)",
faint: "var(--text-faint)"
};
}
);
return { properContrastColors, backgroundColor };
}
// src/ui/hooks/use-task.ts
function useTask(task, { settings: settings2, currentTime: currentTime2 }) {
const useColorValues = useColor({ settings: settings2.settings, task });
const offset = derived(
[settings2.settings, settings2.hiddenHoursSize],
([$settings, $hiddenHoursSize]) => {
return task.startMinutes * $settings.zoomLevel - $hiddenHoursSize;
}
);
const height = derived([settings2.settings], ([$settings]) => {
return task.durationMinutes * $settings.zoomLevel;
});
const relationToNow = derived([currentTime2], ([$currentTime]) => {
return getRelationToNow($currentTime, task.startTime, task.endTime);
});
return {
offset,
height,
relationToNow,
...useColorValues
};
}
// src/ui/components/rendered-markdown.svelte
var import_obsidian3 = require("obsidian");
function add_css6(target) {
append_styles(target, "svelte-13xlqzz", '.rendered-markdown.svelte-13xlqzz{--checkbox-size:var(--font-ui-small);flex:1 0 0;color:var(--text-normal)}.rendered-markdown.svelte-13xlqzz p,.rendered-markdown.svelte-13xlqzz ul{margin-block-start:0;margin-block-end:0}.rendered-markdown.svelte-13xlqzz ul,.rendered-markdown.svelte-13xlqzz ol{padding-inline-start:20px}.rendered-markdown.svelte-13xlqzz input[type="checkbox"]{top:2px;margin-inline-end:4px;border-color:var(--text-muted)}.rendered-markdown.svelte-13xlqzz li{color:var(--text-normal)}.rendered-markdown.svelte-13xlqzz li.task-list-item[data-task="x"],.rendered-markdown.svelte-13xlqzz li.task-list-item[data-task="X"]{color:var(--text-muted)}');
}
function create_fragment18(ctx) {
let div;
return {
c() {
div = element("div");
attr(div, "class", "rendered-markdown svelte-13xlqzz");
},
m(target, anchor) {
insert(target, div, anchor);
ctx[5](div);
},
p: noop,
i: noop,
o: noop,
d(detaching) {
if (detaching)
detach(div);
ctx[5](null);
}
};
}
function instance14($$self, $$props, $$invalidate) {
let $appStore;
component_subscribe($$self, appStore, ($$value) => $$invalidate(4, $appStore = $$value));
var _a;
let { text: text2 } = $$props;
let markdownLifecycleManager = new import_obsidian3.Component();
let el;
onDestroy(() => {
markdownLifecycleManager.unload();
});
function div_binding($$value) {
binding_callbacks[$$value ? "unshift" : "push"](() => {
el = $$value;
$$invalidate(0, el);
});
}
$$self.$$set = ($$props2) => {
if ("text" in $$props2)
$$invalidate(1, text2 = $$props2.text);
};
$$self.$$.update = () => {
if ($$self.$$.dirty & /*el, markdownLifecycleManager, $appStore, text, _a*/
31) {
$:
if (el) {
markdownLifecycleManager.unload();
$$invalidate(3, markdownLifecycleManager = new import_obsidian3.Component());
el.empty();
import_obsidian3.MarkdownRenderer.render($appStore, text2, el, "", markdownLifecycleManager);
markdownLifecycleManager.load();
$$invalidate(2, _a = el.querySelectorAll(`input[type="checkbox"]`)) === null || _a === void 0 ? void 0 : _a.forEach((checkbox2) => checkbox2.setAttribute("disabled", "true"));
}
}
};
return [el, text2, _a, markdownLifecycleManager, $appStore, div_binding];
}
var Rendered_markdown = class extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance14, create_fragment18, safe_not_equal, { text: 1 }, add_css6);
}
};
var rendered_markdown_default = Rendered_markdown;
// src/ui/components/task.svelte
function add_css7(target) {
append_styles(target, "svelte-1exzatw", ":not(#dummy).workspace-leaf-resize-handle.svelte-1exzatw{cursor:row-resize;right:0;bottom:0;left:0;display:block;height:calc(var(--divider-width-hover) * 2);border-bottom-style:solid;border-bottom-width:var(--divider-width)}.gap-box.svelte-1exzatw{display:flex;padding:0 1px 2px;transition:0.05s linear}.task.svelte-1exzatw{position:relative;overflow:hidden;display:flex;flex:1 0 0;padding:4px 6px 6px;font-size:var(--font-ui-small);text-align:left;overflow-wrap:anywhere;white-space:normal;border:1px solid var(--color-base-50);border-radius:var(--radius-s)}.past.svelte-1exzatw{background-color:var(--background-secondary)}.present.svelte-1exzatw{border-color:var(--color-accent)}.is-ghost.svelte-1exzatw{opacity:0.6}");
}
function create_fragment19(ctx) {
let div1;
let div0;
let renderedmarkdown;
let div;
let __text_faint_last;
let __text_muted_last;
let __text_normal_last;
let t0;
let t1;
let hr;
let div0_class_value;
let style_height = `${/*$height*/
ctx[7]}px`;
let style_transform = `translateY(${/*$offset*/
ctx[8]}px)`;
let style_width = `${/*planItem*/
ctx[0].placing.widthPercent || 100}%`;
let style_left = `${/*planItem*/
ctx[0].placing.xOffsetPercent || 0}%`;
let current;
let mounted;
let dispose;
renderedmarkdown = new rendered_markdown_default({
props: { text: (
/*planItem*/
ctx[0].text
) }
});
const default_slot_template = (
/*#slots*/
ctx[13].default
);
const default_slot = create_slot(
default_slot_template,
ctx,
/*$$scope*/
ctx[12],
null
);
return {
c() {
div1 = element("div");
div0 = element("div");
div = element("div");
create_component(renderedmarkdown.$$.fragment);
t0 = space();
if (default_slot)
default_slot.c();
t1 = space();
hr = element("hr");
set_style(div, "display", "contents");
set_style(div, "--text-faint", __text_faint_last = /*$properContrastColors*/
ctx[11].faint);
set_style(div, "--text-muted", __text_muted_last = /*$properContrastColors*/
ctx[11].muted);
set_style(div, "--text-normal", __text_normal_last = /*$properContrastColors*/
ctx[11].normal);
attr(hr, "class", "workspace-leaf-resize-handle svelte-1exzatw");
attr(div0, "class", div0_class_value = "task " + /*$relationToNow*/
ctx[10] + " svelte-1exzatw");
toggle_class(
div0,
"is-ghost",
/*planItem*/
ctx[0].isGhost
);
set_style(
div0,
"background-color",
/*$backgroundColor*/
ctx[9]
);
attr(div1, "class", "gap-box absolute-stretch-x svelte-1exzatw");
set_style(div1, "height", style_height);
set_style(div1, "transform", style_transform);
set_style(div1, "width", style_width);
set_style(div1, "left", style_left);
},
m(target, anchor) {
insert(target, div1, anchor);
append(div1, div0);
append(div0, div);
mount_component(renderedmarkdown, div, null);
append(div0, t0);
if (default_slot) {
default_slot.m(div0, null);
}
append(div0, t1);
append(div0, hr);
current = true;
if (!mounted) {
dispose = [
listen(hr, "mousedown", stop_propagation(function() {
if (is_function(
/*onResizeStart*/
ctx[1]
))
ctx[1].apply(this, arguments);
})),
listen(div0, "mousedown", mousedown_handler),
listen(
div0,
"mouseup",
/*mouseup_handler*/
ctx[14]
)
];
mounted = true;
}
},
p(new_ctx, [dirty]) {
ctx = new_ctx;
if (dirty & /*$properContrastColors*/
2048 && __text_faint_last !== (__text_faint_last = /*$properContrastColors*/
ctx[11].faint)) {
set_style(div, "--text-faint", __text_faint_last);
}
if (dirty & /*$properContrastColors*/
2048 && __text_muted_last !== (__text_muted_last = /*$properContrastColors*/
ctx[11].muted)) {
set_style(div, "--text-muted", __text_muted_last);
}
if (dirty & /*$properContrastColors*/
2048 && __text_normal_last !== (__text_normal_last = /*$properContrastColors*/
ctx[11].normal)) {
set_style(div, "--text-normal", __text_normal_last);
}
const renderedmarkdown_changes = {};
if (dirty & /*planItem*/
1)
renderedmarkdown_changes.text = /*planItem*/
ctx[0].text;
renderedmarkdown.$set(renderedmarkdown_changes);
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/
4096)) {
update_slot_base(
default_slot,
default_slot_template,
ctx,
/*$$scope*/
ctx[12],
!current ? get_all_dirty_from_scope(
/*$$scope*/
ctx[12]
) : get_slot_changes(
default_slot_template,
/*$$scope*/
ctx[12],
dirty,
null
),
null
);
}
}
if (!current || dirty & /*$relationToNow*/
1024 && div0_class_value !== (div0_class_value = "task " + /*$relationToNow*/
ctx[10] + " svelte-1exzatw")) {
attr(div0, "class", div0_class_value);
}
if (!current || dirty & /*$relationToNow, planItem*/
1025) {
toggle_class(
div0,
"is-ghost",
/*planItem*/
ctx[0].isGhost
);
}
if (dirty & /*$backgroundColor*/
512) {
set_style(
div0,
"background-color",
/*$backgroundColor*/
ctx[9]
);
}
if (dirty & /*$height*/
128 && style_height !== (style_height = `${/*$height*/
ctx[7]}px`)) {
set_style(div1, "height", style_height);
}
if (dirty & /*$offset*/
256 && style_transform !== (style_transform = `translateY(${/*$offset*/
ctx[8]}px)`)) {
set_style(div1, "transform", style_transform);
}
if (dirty & /*planItem*/
1 && style_width !== (style_width = `${/*planItem*/
ctx[0].placing.widthPercent || 100}%`)) {
set_style(div1, "width", style_width);
}
if (dirty & /*planItem*/
1 && style_left !== (style_left = `${/*planItem*/
ctx[0].placing.xOffsetPercent || 0}%`)) {
set_style(div1, "left", style_left);
}
},
i(local) {
if (current)
return;
transition_in(renderedmarkdown.$$.fragment, local);
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(renderedmarkdown.$$.fragment, local);
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (detaching)
detach(div1);
destroy_component(renderedmarkdown);
if (default_slot)
default_slot.d(detaching);
mounted = false;
run_all(dispose);
}
};
}
var mousedown_handler = (event) => event.stopPropagation();
function instance15($$self, $$props, $$invalidate) {
let height;
let offset;
let relationToNow;
let backgroundColor;
let properContrastColors;
let $height, $$unsubscribe_height = noop, $$subscribe_height = () => ($$unsubscribe_height(), $$unsubscribe_height = subscribe(height, ($$value) => $$invalidate(7, $height = $$value)), height);
let $offset, $$unsubscribe_offset = noop, $$subscribe_offset = () => ($$unsubscribe_offset(), $$unsubscribe_offset = subscribe(offset, ($$value) => $$invalidate(8, $offset = $$value)), offset);
let $backgroundColor, $$unsubscribe_backgroundColor = noop, $$subscribe_backgroundColor = () => ($$unsubscribe_backgroundColor(), $$unsubscribe_backgroundColor = subscribe(backgroundColor, ($$value) => $$invalidate(9, $backgroundColor = $$value)), backgroundColor);
let $relationToNow, $$unsubscribe_relationToNow = noop, $$subscribe_relationToNow = () => ($$unsubscribe_relationToNow(), $$unsubscribe_relationToNow = subscribe(relationToNow, ($$value) => $$invalidate(10, $relationToNow = $$value)), relationToNow);
let $properContrastColors, $$unsubscribe_properContrastColors = noop, $$subscribe_properContrastColors = () => ($$unsubscribe_properContrastColors(), $$unsubscribe_properContrastColors = subscribe(properContrastColors, ($$value) => $$invalidate(11, $properContrastColors = $$value)), properContrastColors);
$$self.$$.on_destroy.push(() => $$unsubscribe_height());
$$self.$$.on_destroy.push(() => $$unsubscribe_offset());
$$self.$$.on_destroy.push(() => $$unsubscribe_backgroundColor());
$$self.$$.on_destroy.push(() => $$unsubscribe_relationToNow());
$$self.$$.on_destroy.push(() => $$unsubscribe_properContrastColors());
let { $$slots: slots = {}, $$scope } = $$props;
let { planItem } = $$props;
let { onResizeStart } = $$props;
function mouseup_handler(event) {
bubble.call(this, $$self, event);
}
$$self.$$set = ($$props2) => {
if ("planItem" in $$props2)
$$invalidate(0, planItem = $$props2.planItem);
if ("onResizeStart" in $$props2)
$$invalidate(1, onResizeStart = $$props2.onResizeStart);
if ("$$scope" in $$props2)
$$invalidate(12, $$scope = $$props2.$$scope);
};
$$self.$$.update = () => {
if ($$self.$$.dirty & /*planItem*/
1) {
$:
$$subscribe_height($$invalidate(6, { height, offset, relationToNow, backgroundColor, properContrastColors } = useTask(planItem, { settings: settingsWithUtils, currentTime }), height, $$subscribe_offset($$invalidate(5, offset)), $$subscribe_relationToNow($$invalidate(4, relationToNow)), $$subscribe_backgroundColor($$invalidate(3, backgroundColor)), $$subscribe_properContrastColors($$invalidate(2, properContrastColors))));
}
};
return [
planItem,
onResizeStart,
properContrastColors,
backgroundColor,
relationToNow,
offset,
height,
$height,
$offset,
$backgroundColor,
$relationToNow,
$properContrastColors,
$$scope,
slots,
mouseup_handler
];
}
var Task = class extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance15, create_fragment19, safe_not_equal, { planItem: 0, onResizeStart: 1 }, add_css7);
}
};
var task_default = Task;
// src/ui/components/task-container.svelte
function add_css8(target) {
append_styles(target, "svelte-1o14c0z", "@keyframes svelte-1o14c0z-pulse{from{opacity:0.8}to{opacity:0.2}}.banner.svelte-1o14c0z{position:sticky;z-index:10;top:0;display:flex;align-items:center;justify-content:center;padding:var(--size-4-4);animation:svelte-1o14c0z-pulse 1s infinite alternate}.task-container.svelte-1o14c0z{top:0;bottom:0;display:flex;flex-direction:column;margin-right:10px;margin-left:10px}.grip.svelte-1o14c0z{position:relative;right:-4px;grid-column:2;align-self:flex-start;color:var(--text-faint)}.grip.svelte-1o14c0z:hover{color:var(--text-muted)}");
}
function get_each_context5(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[29] = list[i];
return child_ctx;
}
function create_if_block_3(ctx) {
let div;
return {
c() {
div = element("div");
div.textContent = "Release outside this column to cancel edit";
attr(div, "class", "banner svelte-1o14c0z");
},
m(target, anchor) {
insert(target, div, anchor);
},
d(detaching) {
if (detaching)
detach(div);
}
};
}
function create_if_block2(ctx) {
let div;
let current_block_type_index;
let if_block;
let current;
let mounted;
let dispose;
const if_block_creators = [create_if_block_12, create_if_block_2, create_else_block];
const if_blocks = [];
function select_block_type(ctx2, dirty) {
if (
/*shiftPressed*/
ctx2[3]
)
return 0;
if (
/*controlPressed*/
ctx2[4]
)
return 1;
return 2;
}
current_block_type_index = select_block_type(ctx, [-1, -1]);
if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
function mousedown_handler2() {
return (
/*mousedown_handler*/
ctx[23](
/*planItem*/
ctx[29]
)
);
}
return {
c() {
div = element("div");
if_block.c();
attr(div, "class", "grip svelte-1o14c0z");
set_style(
div,
"cursor",
/*gripCursor*/
ctx[7]
);
},
m(target, anchor) {
insert(target, div, anchor);
if_blocks[current_block_type_index].m(div, null);
current = true;
if (!mounted) {
dispose = listen(div, "mousedown", stop_propagation(mousedown_handler2));
mounted = true;
}
},
p(new_ctx, dirty) {
ctx = new_ctx;
let previous_block_index = current_block_type_index;
current_block_type_index = select_block_type(ctx, dirty);
if (current_block_type_index !== previous_block_index) {
group_outros();
transition_out(if_blocks[previous_block_index], 1, 1, () => {
if_blocks[previous_block_index] = null;
});
check_outros();
if_block = if_blocks[current_block_type_index];
if (!if_block) {
if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
if_block.c();
} else {
}
transition_in(if_block, 1);
if_block.m(div, null);
}
if (dirty[0] & /*gripCursor*/
128) {
set_style(
div,
"cursor",
/*gripCursor*/
ctx[7]
);
}
},
i(local) {
if (current)
return;
transition_in(if_block);
current = true;
},
o(local) {
transition_out(if_block);
current = false;
},
d(detaching) {
if (detaching)
detach(div);
if_blocks[current_block_type_index].d();
mounted = false;
dispose();
}
};
}
function create_else_block(ctx) {
let gripvertical;
let current;
gripvertical = new Grip_vertical$1({ props: { class: "svg-icon" } });
return {
c() {
create_component(gripvertical.$$.fragment);
},
m(target, anchor) {
mount_component(gripvertical, target, anchor);
current = true;
},
i(local) {
if (current)
return;
transition_in(gripvertical.$$.fragment, local);
current = true;
},
o(local) {
transition_out(gripvertical.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(gripvertical, detaching);
}
};
}
function create_if_block_2(ctx) {
let layers;
let current;
layers = new Layers$1({ props: { class: "svg-icon" } });
return {
c() {
create_component(layers.$$.fragment);
},
m(target, anchor) {
mount_component(layers, target, anchor);
current = true;
},
i(local) {
if (current)
return;
transition_in(layers.$$.fragment, local);
current = true;
},
o(local) {
transition_out(layers.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(layers, detaching);
}
};
}
function create_if_block_12(ctx) {
let copy;
let current;
copy = new Copy$1({ props: { class: "svg-icon" } });
return {
c() {
create_component(copy.$$.fragment);
},
m(target, anchor) {
mount_component(copy, target, anchor);
current = true;
},
i(local) {
if (current)
return;
transition_in(copy.$$.fragment, local);
current = true;
},
o(local) {
transition_out(copy.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(copy, detaching);
}
};
}
function create_default_slot9(ctx) {
let t;
let current;
let if_block = !/*planItem*/
ctx[29].isGhost && create_if_block2(ctx);
return {
c() {
if (if_block)
if_block.c();
t = space();
},
m(target, anchor) {
if (if_block)
if_block.m(target, anchor);
insert(target, t, anchor);
current = true;
},
p(ctx2, dirty) {
if (!/*planItem*/
ctx2[29].isGhost) {
if (if_block) {
if_block.p(ctx2, dirty);
if (dirty[0] & /*$displayedTasks*/
16384) {
transition_in(if_block, 1);
}
} else {
if_block = create_if_block2(ctx2);
if_block.c();
transition_in(if_block, 1);
if_block.m(t.parentNode, t);
}
} else if (if_block) {
group_outros();
transition_out(if_block, 1, 1, () => {
if_block = null;
});
check_outros();
}
},
i(local) {
if (current)
return;
transition_in(if_block);
current = true;
},
o(local) {
transition_out(if_block);
current = false;
},
d(detaching) {
if (if_block)
if_block.d(detaching);
if (detaching)
detach(t);
}
};
}
function create_each_block5(key_1, ctx) {
let first;
let task_1;
let current;
function func() {
return (
/*func*/
ctx[24](
/*planItem*/
ctx[29]
)
);
}
function mouseup_handler() {
return (
/*mouseup_handler*/
ctx[25](
/*planItem*/
ctx[29]
)
);
}
task_1 = new task_default({
props: {
onResizeStart: func,
planItem: (
/*planItem*/
ctx[29]
),
$$slots: { default: [create_default_slot9] },
$$scope: { ctx }
}
});
task_1.$on("mouseup", mouseup_handler);
return {
key: key_1,
first: null,
c() {
first = empty();
create_component(task_1.$$.fragment);
this.first = first;
},
m(target, anchor) {
insert(target, first, anchor);
mount_component(task_1, target, anchor);
current = true;
},
p(new_ctx, dirty) {
ctx = new_ctx;
const task_1_changes = {};
if (dirty[0] & /*controlPressed, startEdit, $displayedTasks*/
18448)
task_1_changes.onResizeStart = func;
if (dirty[0] & /*$displayedTasks*/
16384)
task_1_changes.planItem = /*planItem*/
ctx[29];
if (dirty[0] & /*gripCursor, $displayedTasks, controlPressed, shiftPressed, startEdit*/
18584 | dirty[1] & /*$$scope*/
2) {
task_1_changes.$$scope = { dirty, ctx };
}
task_1.$set(task_1_changes);
},
i(local) {
if (current)
return;
transition_in(task_1.$$.fragment, local);
current = true;
},
o(local) {
transition_out(task_1.$$.fragment, local);
current = false;
},
d(detaching) {
if (detaching)
detach(first);
destroy_component(task_1, detaching);
}
};
}
function create_fragment20(ctx) {
let styledCursor_action;
let t0;
let t1;
let div;
let t2;
let each_blocks = [];
let each_1_lookup = /* @__PURE__ */ new Map();
let current;
let mounted;
let dispose;
let if_block = (
/*$editStatus*/
ctx[2] && /*$settings*/
ctx[12].showHelp && create_if_block_3(ctx)
);
let each_value = (
/*$displayedTasks*/
ctx[14]
);
const get_key = (ctx2) => getKey(
/*planItem*/
ctx2[29]
);
for (let i = 0; i < each_value.length; i += 1) {
let child_ctx = get_each_context5(ctx, each_value, i);
let key = get_key(child_ctx);
each_1_lookup.set(key, each_blocks[i] = create_each_block5(key, child_ctx));
}
return {
c() {
t0 = space();
t1 = space();
div = element("div");
if (if_block)
if_block.c();
t2 = space();
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
attr(div, "class", "task-container absolute-stretch-x svelte-1o14c0z");
},
m(target, anchor) {
insert(target, t0, anchor);
insert(target, t1, anchor);
insert(target, div, anchor);
if (if_block)
if_block.m(div, null);
append(div, t2);
for (let i = 0; i < each_blocks.length; i += 1) {
if (each_blocks[i]) {
each_blocks[i].m(div, null);
}
}
ctx[26](div);
current = true;
if (!mounted) {
dispose = [
action_destroyer(styledCursor_action = styledCursor.call(
null,
document.body,
/*bodyCursor*/
ctx[6]
)),
listen(document, "mouseup", editCancellation.trigger),
listen(
document,
"mousemove",
/*mousemove_handler*/
ctx[20]
),
listen(
document,
"keydown",
/*keydown_handler*/
ctx[21]
),
listen(
document,
"keyup",
/*keyup_handler*/
ctx[22]
),
listen(
div,
"mousedown",
/*mousedown_handler_1*/
ctx[27]
),
listen(div, "mouseup", stop_propagation(
/*mouseup_handler_1*/
ctx[28]
))
];
mounted = true;
}
},
p(ctx2, dirty) {
if (styledCursor_action && is_function(styledCursor_action.update) && dirty[0] & /*bodyCursor*/
64)
styledCursor_action.update.call(
null,
/*bodyCursor*/
ctx2[6]
);
if (
/*$editStatus*/
ctx2[2] && /*$settings*/
ctx2[12].showHelp
) {
if (if_block) {
} else {
if_block = create_if_block_3(ctx2);
if_block.c();
if_block.m(div, t2);
}
} else if (if_block) {
if_block.d(1);
if_block = null;
}
if (dirty[0] & /*controlPressed, startEdit, $displayedTasks, $editStatus, obsidianFacade, gripCursor, shiftPressed*/
18590) {
each_value = /*$displayedTasks*/
ctx2[14];
group_outros();
each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, div, outro_and_destroy_block, create_each_block5, null, get_each_context5);
check_outros();
}
},
i(local) {
if (current)
return;
for (let i = 0; i < each_value.length; i += 1) {
transition_in(each_blocks[i]);
}
current = true;
},
o(local) {
for (let i = 0; i < each_blocks.length; i += 1) {
transition_out(each_blocks[i]);
}
current = false;
},
d(detaching) {
if (detaching)
detach(t0);
if (detaching)
detach(t1);
if (detaching)
detach(div);
if (if_block)
if_block.d();
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].d();
}
ctx[26](null);
mounted = false;
run_all(dispose);
}
};
}
function getKey(task) {
var _a;
return `${task.startMinutes} ${task.endMinutes} ${task.text} ${(_a = task.isGhost) !== null && _a !== void 0 ? _a : ""}`;
}
function instance16($$self, $$props, $$invalidate) {
let startEdit;
let displayedTasks;
let cancelEdit;
let editStatus;
let confirmEdit;
let $editCancellation;
let $editStatus, $$unsubscribe_editStatus = noop, $$subscribe_editStatus = () => ($$unsubscribe_editStatus(), $$unsubscribe_editStatus = subscribe(editStatus, ($$value) => $$invalidate(2, $editStatus = $$value)), editStatus);
let $settings;
let $pointerOffsetY;
let $displayedTasks, $$unsubscribe_displayedTasks = noop, $$subscribe_displayedTasks = () => ($$unsubscribe_displayedTasks(), $$unsubscribe_displayedTasks = subscribe(displayedTasks, ($$value) => $$invalidate(14, $displayedTasks = $$value)), displayedTasks);
component_subscribe($$self, editCancellation, ($$value) => $$invalidate(19, $editCancellation = $$value));
component_subscribe($$self, settings, ($$value) => $$invalidate(12, $settings = $$value));
$$self.$$.on_destroy.push(() => $$unsubscribe_editStatus());
$$self.$$.on_destroy.push(() => $$unsubscribe_displayedTasks());
let { tasks } = $$props;
let { day } = $$props;
let { obsidianFacade } = $$props;
let { onUpdate } = $$props;
let shiftPressed = false;
let controlPressed = false;
let el;
let bodyCursor = void 0;
let gripCursor = "grab";
const pointerOffsetY = writable(0);
component_subscribe($$self, pointerOffsetY, (value) => $$invalidate(13, $pointerOffsetY = value));
const mousemove_handler = (event) => {
const viewportToElOffsetY = el.getBoundingClientRect().top;
const borderTopToPointerOffsetY = event.clientY - viewportToElOffsetY;
pointerOffsetY.set(snap(borderTopToPointerOffsetY, $settings.zoomLevel));
};
const keydown_handler = (event) => {
if (event.shiftKey) {
$$invalidate(3, shiftPressed = true);
}
if (event.ctrlKey) {
$$invalidate(4, controlPressed = true);
}
};
const keyup_handler = (event) => {
if (!event.shiftKey) {
$$invalidate(3, shiftPressed = false);
}
if (!event.ctrlKey) {
$$invalidate(4, controlPressed = false);
}
};
const mousedown_handler2 = (planItem) => {
let mode = "DRAG" /* DRAG */;
let task = planItem;
if (controlPressed) {
mode = "DRAG_AND_SHIFT_OTHERS" /* DRAG_AND_SHIFT_OTHERS */;
} else if (shiftPressed) {
mode = "CREATE" /* CREATE */;
task = {
...planItem,
id: getId(),
isGhost: true,
location: { ...planItem.location, line: void 0 }
};
}
startEdit({ task, mode });
};
const func = (planItem) => {
const mode = controlPressed ? "RESIZE_AND_SHIFT_OTHERS" /* RESIZE_AND_SHIFT_OTHERS */ : "RESIZE" /* RESIZE */;
startEdit({ task: planItem, mode });
};
const mouseup_handler = async (planItem) => {
if ($editStatus) {
return;
}
const { path, line } = planItem.location;
await obsidianFacade.revealLineInFile(path, line);
};
function div_binding($$value) {
binding_callbacks[$$value ? "unshift" : "push"](() => {
el = $$value;
$$invalidate(5, el);
});
}
const mousedown_handler_1 = async () => {
const newTask = await createPlanItem2(day, offsetYToMinutes_NEW($pointerOffsetY, $settings.zoomLevel, $settings.startHour));
startEdit({
task: { ...newTask, isGhost: true },
mode: "CREATE" /* CREATE */
});
};
const mouseup_handler_1 = async () => {
editConfirmation.trigger();
await confirmEdit();
};
$$self.$$set = ($$props2) => {
if ("tasks" in $$props2)
$$invalidate(16, tasks = $$props2.tasks);
if ("day" in $$props2)
$$invalidate(0, day = $$props2.day);
if ("obsidianFacade" in $$props2)
$$invalidate(1, obsidianFacade = $$props2.obsidianFacade);
if ("onUpdate" in $$props2)
$$invalidate(17, onUpdate = $$props2.onUpdate);
};
$$self.$$.update = () => {
if ($$self.$$.dirty[0] & /*tasks, onUpdate*/
196608) {
$:
$$invalidate(
11,
{ startEdit, displayedTasks, cancelEdit, editStatus, confirmEdit } = useEdit({
parsedTasks: tasks,
settings,
pointerOffsetY,
onUpdate
}),
startEdit,
$$subscribe_displayedTasks($$invalidate(10, displayedTasks)),
($$invalidate(18, cancelEdit), $$invalidate(16, tasks), $$invalidate(17, onUpdate)),
$$subscribe_editStatus($$invalidate(9, editStatus)),
($$invalidate(8, confirmEdit), $$invalidate(16, tasks), $$invalidate(17, onUpdate))
);
}
if ($$self.$$.dirty[0] & /*$editStatus*/
4) {
$:
if ($editStatus === "CREATE" /* CREATE */ || $editStatus === "DRAG" /* DRAG */ || $editStatus === "DRAG_AND_SHIFT_OTHERS" /* DRAG_AND_SHIFT_OTHERS */) {
$$invalidate(6, bodyCursor = "grabbing");
$$invalidate(7, gripCursor = "grabbing");
} else if ($editStatus === "RESIZE" /* RESIZE */ || $editStatus === "RESIZE_AND_SHIFT_OTHERS" /* RESIZE_AND_SHIFT_OTHERS */) {
$$invalidate(6, bodyCursor = "row-resize");
} else {
$$invalidate(6, bodyCursor = void 0);
$$invalidate(7, gripCursor = "grab");
}
}
if ($$self.$$.dirty[0] & /*$editCancellation, cancelEdit*/
786432) {
$: {
$editCancellation;
cancelEdit();
}
}
};
return [
day,
obsidianFacade,
$editStatus,
shiftPressed,
controlPressed,
el,
bodyCursor,
gripCursor,
confirmEdit,
editStatus,
displayedTasks,
startEdit,
$settings,
$pointerOffsetY,
$displayedTasks,
pointerOffsetY,
tasks,
onUpdate,
cancelEdit,
$editCancellation,
mousemove_handler,
keydown_handler,
keyup_handler,
mousedown_handler2,
func,
mouseup_handler,
div_binding,
mousedown_handler_1,
mouseup_handler_1
];
}
var Task_container = class extends SvelteComponent {
constructor(options) {
super();
init(
this,
options,
instance16,
create_fragment20,
safe_not_equal,
{
tasks: 16,
day: 0,
obsidianFacade: 1,
onUpdate: 17
},
add_css8,
[-1, -1]
);
}
};
var task_container_default = Task_container;
// src/ui/components/timeline.svelte
function add_css9(target) {
append_styles(target, "svelte-1fzzjqj", ".vertical-scroller.svelte-1fzzjqj{overflow:auto;height:100%}.scale-with-days.svelte-1fzzjqj{display:flex}");
}
function create_if_block3(ctx) {
let needle;
let current;
needle = new needle_default({
props: {
autoScrollBlocked: (
/*userHoversOverScroller*/
ctx[2]
)
}
});
return {
c() {
create_component(needle.$$.fragment);
},
m(target, anchor) {
mount_component(needle, target, anchor);
current = true;
},
p(ctx2, dirty) {
const needle_changes = {};
if (dirty & /*userHoversOverScroller*/
4)
needle_changes.autoScrollBlocked = /*userHoversOverScroller*/
ctx2[2];
needle.$set(needle_changes);
},
i(local) {
if (current)
return;
transition_in(needle.$$.fragment, local);
current = true;
},
o(local) {
transition_out(needle.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(needle, detaching);
}
};
}
function create_default_slot10(ctx) {
let show_if = isToday(
/*$visibleDayInTimeline*/
ctx[3]
);
let t;
let taskcontainer;
let current;
let if_block = show_if && create_if_block3(ctx);
taskcontainer = new task_container_default({
props: {
day: (
/*$visibleDayInTimeline*/
ctx[3]
),
obsidianFacade: (
/*obsidianFacade*/
ctx[0]
),
onUpdate: (
/*onUpdate*/
ctx[1]
),
tasks: (
/*$parsedTasks*/
ctx[5]
)
}
});
return {
c() {
if (if_block)
if_block.c();
t = space();
create_component(taskcontainer.$$.fragment);
},
m(target, anchor) {
if (if_block)
if_block.m(target, anchor);
insert(target, t, anchor);
mount_component(taskcontainer, target, anchor);
current = true;
},
p(ctx2, dirty) {
if (dirty & /*$visibleDayInTimeline*/
8)
show_if = isToday(
/*$visibleDayInTimeline*/
ctx2[3]
);
if (show_if) {
if (if_block) {
if_block.p(ctx2, dirty);
if (dirty & /*$visibleDayInTimeline*/
8) {
transition_in(if_block, 1);
}
} else {
if_block = create_if_block3(ctx2);
if_block.c();
transition_in(if_block, 1);
if_block.m(t.parentNode, t);
}
} else if (if_block) {
group_outros();
transition_out(if_block, 1, 1, () => {
if_block = null;
});
check_outros();
}
const taskcontainer_changes = {};
if (dirty & /*$visibleDayInTimeline*/
8)
taskcontainer_changes.day = /*$visibleDayInTimeline*/
ctx2[3];
if (dirty & /*obsidianFacade*/
1)
taskcontainer_changes.obsidianFacade = /*obsidianFacade*/
ctx2[0];
if (dirty & /*onUpdate*/
2)
taskcontainer_changes.onUpdate = /*onUpdate*/
ctx2[1];
if (dirty & /*$parsedTasks*/
32)
taskcontainer_changes.tasks = /*$parsedTasks*/
ctx2[5];
taskcontainer.$set(taskcontainer_changes);
},
i(local) {
if (current)
return;
transition_in(if_block);
transition_in(taskcontainer.$$.fragment, local);
current = true;
},
o(local) {
transition_out(if_block);
transition_out(taskcontainer.$$.fragment, local);
current = false;
},
d(detaching) {
if (if_block)
if_block.d(detaching);
if (detaching)
detach(t);
destroy_component(taskcontainer, detaching);
}
};
}
function create_fragment21(ctx) {
let controls;
let t0;
let div1;
let div0;
let ruler;
let t1;
let column;
let current;
let mounted;
let dispose;
controls = new controls_default({
props: {
day: (
/*$visibleDayInTimeline*/
ctx[3]
),
obsidianFacade: (
/*obsidianFacade*/
ctx[0]
)
}
});
ruler = new ruler_default({
props: { visibleHours: (
/*$visibleHours*/
ctx[4]
) }
});
column = new column_default({
props: {
visibleHours: (
/*$visibleHours*/
ctx[4]
),
$$slots: { default: [create_default_slot10] },
$$scope: { ctx }
}
});
return {
c() {
create_component(controls.$$.fragment);
t0 = space();
div1 = element("div");
div0 = element("div");
create_component(ruler.$$.fragment);
t1 = space();
create_component(column.$$.fragment);
attr(div0, "class", "scale-with-days svelte-1fzzjqj");
attr(div1, "class", "vertical-scroller svelte-1fzzjqj");
},
m(target, anchor) {
mount_component(controls, target, anchor);
insert(target, t0, anchor);
insert(target, div1, anchor);
append(div1, div0);
mount_component(ruler, div0, null);
append(div0, t1);
mount_component(column, div0, null);
current = true;
if (!mounted) {
dispose = [
listen(
div1,
"mouseenter",
/*handleMouseEnter*/
ctx[6]
),
listen(
div1,
"mouseleave",
/*handleMouseLeave*/
ctx[7]
)
];
mounted = true;
}
},
p(ctx2, [dirty]) {
const controls_changes = {};
if (dirty & /*$visibleDayInTimeline*/
8)
controls_changes.day = /*$visibleDayInTimeline*/
ctx2[3];
if (dirty & /*obsidianFacade*/
1)
controls_changes.obsidianFacade = /*obsidianFacade*/
ctx2[0];
controls.$set(controls_changes);
const ruler_changes = {};
if (dirty & /*$visibleHours*/
16)
ruler_changes.visibleHours = /*$visibleHours*/
ctx2[4];
ruler.$set(ruler_changes);
const column_changes = {};
if (dirty & /*$visibleHours*/
16)
column_changes.visibleHours = /*$visibleHours*/
ctx2[4];
if (dirty & /*$$scope, $visibleDayInTimeline, obsidianFacade, onUpdate, $parsedTasks, userHoversOverScroller*/
559) {
column_changes.$$scope = { dirty, ctx: ctx2 };
}
column.$set(column_changes);
},
i(local) {
if (current)
return;
transition_in(controls.$$.fragment, local);
transition_in(ruler.$$.fragment, local);
transition_in(column.$$.fragment, local);
current = true;
},
o(local) {
transition_out(controls.$$.fragment, local);
transition_out(ruler.$$.fragment, local);
transition_out(column.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(controls, detaching);
if (detaching)
detach(t0);
if (detaching)
detach(div1);
destroy_component(ruler);
destroy_component(column);
mounted = false;
run_all(dispose);
}
};
}
function instance17($$self, $$props, $$invalidate) {
let $visibleDayInTimeline;
let $visibleHours;
let $parsedTasks;
component_subscribe($$self, visibleDayInTimeline, ($$value) => $$invalidate(3, $visibleDayInTimeline = $$value));
component_subscribe($$self, visibleHours, ($$value) => $$invalidate(4, $visibleHours = $$value));
let { obsidianFacade } = $$props;
let { onUpdate } = $$props;
let userHoversOverScroller = false;
function handleMouseEnter() {
$$invalidate(2, userHoversOverScroller = true);
}
function handleMouseLeave() {
$$invalidate(2, userHoversOverScroller = false);
}
const parsedTasks = derived(
visibleDayInTimeline,
(v, set) => {
const note = (0, import_obsidian_daily_notes_interface4.getDailyNote)(v, (0, import_obsidian_daily_notes_interface4.getAllDailyNotes)());
obsidianFacade.getPlanItemsFromFile(note).then((v2) => set(addPlacing(v2)));
},
[]
);
component_subscribe($$self, parsedTasks, (value) => $$invalidate(5, $parsedTasks = value));
$$self.$$set = ($$props2) => {
if ("obsidianFacade" in $$props2)
$$invalidate(0, obsidianFacade = $$props2.obsidianFacade);
if ("onUpdate" in $$props2)
$$invalidate(1, onUpdate = $$props2.onUpdate);
};
return [
obsidianFacade,
onUpdate,
userHoversOverScroller,
$visibleDayInTimeline,
$visibleHours,
$parsedTasks,
handleMouseEnter,
handleMouseLeave,
parsedTasks
];
}
var Timeline = class extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance17, create_fragment21, safe_not_equal, { obsidianFacade: 0, onUpdate: 1 }, add_css9);
}
};
var timeline_default = Timeline;
// src/ui/timeline-view.ts
var TimelineView = class extends import_obsidian4.ItemView {
constructor(leaf, settings2, obsidianFacade, planEditor) {
super(leaf);
this.settings = settings2;
this.obsidianFacade = obsidianFacade;
this.planEditor = planEditor;
}
getViewType() {
return viewTypeTimeline;
}
getDisplayText() {
return "Day Planner Timeline";
}
getIcon() {
return this.settings.timelineIcon;
}
async onOpen() {
const contentEl = this.containerEl.children[1];
this.timeline = new timeline_default({
target: contentEl,
props: {
obsidianFacade: this.obsidianFacade,
onUpdate: this.planEditor.syncTasksWithFile
}
});
}
async onClose() {
var _a;
(_a = this.timeline) == null ? void 0 : _a.$destroy();
}
};
// src/ui/weekly-view.ts
var import_obsidian5 = require("obsidian");
// src/ui/components/week/header-actions.svelte
function add_css10(target) {
append_styles(target, "svelte-vfradk", ".range.svelte-vfradk{flex:1 0 0;margin-right:10px;white-space:nowrap}");
}
function create_default_slot_22(ctx) {
let arrowlefttoline;
let current;
arrowlefttoline = new Arrow_left_to_line$1({ props: { class: "svg-icon" } });
return {
c() {
create_component(arrowlefttoline.$$.fragment);
},
m(target, anchor) {
mount_component(arrowlefttoline, target, anchor);
current = true;
},
p: noop,
i(local) {
if (current)
return;
transition_in(arrowlefttoline.$$.fragment, local);
current = true;
},
o(local) {
transition_out(arrowlefttoline.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(arrowlefttoline, detaching);
}
};
}
function create_default_slot_12(ctx) {
let circledoticon;
let current;
circledoticon = new Circle_dot$1({ props: { class: "svg-icon" } });
return {
c() {
create_component(circledoticon.$$.fragment);
},
m(target, anchor) {
mount_component(circledoticon, target, anchor);
current = true;
},
p: noop,
i(local) {
if (current)
return;
transition_in(circledoticon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(circledoticon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(circledoticon, detaching);
}
};
}
function create_default_slot11(ctx) {
let arrowrighttoline;
let current;
arrowrighttoline = new Arrow_right_to_line$1({ props: { class: "svg-icon" } });
return {
c() {
create_component(arrowrighttoline.$$.fragment);
},
m(target, anchor) {
mount_component(arrowrighttoline, target, anchor);
current = true;
},
p: noop,
i(local) {
if (current)
return;
transition_in(arrowrighttoline.$$.fragment, local);
current = true;
},
o(local) {
transition_out(arrowrighttoline.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(arrowrighttoline, detaching);
}
};
}
function create_fragment22(ctx) {
let div1;
let div0;
let t0;
let t1;
let t2;
let t3;
let controlbutton0;
let t4;
let controlbutton1;
let t5;
let controlbutton2;
let current;
controlbutton0 = new control_button_default({
props: {
label: "Show previous week",
$$slots: { default: [create_default_slot_22] },
$$scope: { ctx }
}
});
controlbutton0.$on(
"click",
/*handleShowPrevious*/
ctx[2]
);
controlbutton1 = new control_button_default({
props: {
label: "Show current week",
$$slots: { default: [create_default_slot_12] },
$$scope: { ctx }
}
});
controlbutton1.$on(
"click",
/*handleShowCurrent*/
ctx[3]
);
controlbutton2 = new control_button_default({
props: {
label: "Show next week",
$$slots: { default: [create_default_slot11] },
$$scope: { ctx }
}
});
controlbutton2.$on(
"click",
/*handleShowNext*/
ctx[4]
);
return {
c() {
div1 = element("div");
div0 = element("div");
t0 = text(
/*startOfRange*/
ctx[1]
);
t1 = text(" - ");
t2 = text(
/*endOfRange*/
ctx[0]
);
t3 = space();
create_component(controlbutton0.$$.fragment);
t4 = space();
create_component(controlbutton1.$$.fragment);
t5 = space();
create_component(controlbutton2.$$.fragment);
attr(div0, "class", "range svelte-vfradk");
attr(div1, "class", "view-header-nav-buttons");
},
m(target, anchor) {
insert(target, div1, anchor);
append(div1, div0);
append(div0, t0);
append(div0, t1);
append(div0, t2);
append(div1, t3);
mount_component(controlbutton0, div1, null);
append(div1, t4);
mount_component(controlbutton1, div1, null);
append(div1, t5);
mount_component(controlbutton2, div1, null);
current = true;
},
p(ctx2, [dirty]) {
if (!current || dirty & /*startOfRange*/
2)
set_data(
t0,
/*startOfRange*/
ctx2[1]
);
if (!current || dirty & /*endOfRange*/
1)
set_data(
t2,
/*endOfRange*/
ctx2[0]
);
const controlbutton0_changes = {};
if (dirty & /*$$scope*/
128) {
controlbutton0_changes.$$scope = { dirty, ctx: ctx2 };
}
controlbutton0.$set(controlbutton0_changes);
const controlbutton1_changes = {};
if (dirty & /*$$scope*/
128) {
controlbutton1_changes.$$scope = { dirty, ctx: ctx2 };
}
controlbutton1.$set(controlbutton1_changes);
const controlbutton2_changes = {};
if (dirty & /*$$scope*/
128) {
controlbutton2_changes.$$scope = { dirty, ctx: ctx2 };
}
controlbutton2.$set(controlbutton2_changes);
},
i(local) {
if (current)
return;
transition_in(controlbutton0.$$.fragment, local);
transition_in(controlbutton1.$$.fragment, local);
transition_in(controlbutton2.$$.fragment, local);
current = true;
},
o(local) {
transition_out(controlbutton0.$$.fragment, local);
transition_out(controlbutton1.$$.fragment, local);
transition_out(controlbutton2.$$.fragment, local);
current = false;
},
d(detaching) {
if (detaching)
detach(div1);
destroy_component(controlbutton0);
destroy_component(controlbutton1);
destroy_component(controlbutton2);
}
};
}
function instance18($$self, $$props, $$invalidate) {
let firstDayOfShownWeek;
let startOfRange;
let endOfRange;
let $visibleDateRange;
component_subscribe($$self, visibleDateRange, ($$value) => $$invalidate(6, $visibleDateRange = $$value));
function handleShowPrevious() {
const firstDayOfPreviousWeek = firstDayOfShownWeek.clone().subtract(1, "week");
const daysOfPreviousWeek = getDaysOfWeek(firstDayOfPreviousWeek);
visibleDateRange.set(daysOfPreviousWeek);
}
function handleShowCurrent() {
visibleDateRange.set(getDaysOfCurrentWeek());
}
function handleShowNext() {
const firstDayOfNextWeek = firstDayOfShownWeek.clone().add(1, "week");
const daysOfNextWeek = getDaysOfWeek(firstDayOfNextWeek);
visibleDateRange.set(daysOfNextWeek);
}
$$self.$$.update = () => {
if ($$self.$$.dirty & /*$visibleDateRange*/
64) {
$:
$$invalidate(5, firstDayOfShownWeek = $visibleDateRange[0]);
}
if ($$self.$$.dirty & /*firstDayOfShownWeek*/
32) {
$:
$$invalidate(1, startOfRange = firstDayOfShownWeek.format("MMM, D"));
}
if ($$self.$$.dirty & /*$visibleDateRange*/
64) {
$:
$$invalidate(0, endOfRange = $visibleDateRange.at(-1).format("MMM, D"));
}
};
return [
endOfRange,
startOfRange,
handleShowPrevious,
handleShowCurrent,
handleShowNext,
firstDayOfShownWeek,
$visibleDateRange
];
}
var Header_actions = class extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance18, create_fragment22, safe_not_equal, {}, add_css10);
}
};
var header_actions_default = Header_actions;
// src/ui/components/week/week.svelte
var import_obsidian_daily_notes_interface5 = __toESM(require_main());
function add_css11(target) {
append_styles(target, "svelte-8r78hm", ".corner.svelte-8r78hm{position:sticky;z-index:100;top:0;left:0;flex:0 0 var(--time-ruler-width);background-color:var(--background-primary);border:1px solid var(--background-modifier-border);border-top:none;border-left:none}.days.svelte-8r78hm{display:flex}.day-column.svelte-8r78hm{display:flex;flex:1 0 150px;flex-direction:column;background-color:var(--background-secondary);border-right:1px solid var(--background-modifier-border)}.week-header.svelte-8r78hm{position:sticky;z-index:10;top:0;display:flex}.day-header.svelte-8r78hm{flex:1 0 150px;padding:5px;background-color:var(--background-primary);border-right:1px solid var(--background-modifier-border);border-bottom:1px solid var(--background-modifier-border)}.today.svelte-8r78hm{color:white;background-color:var(--color-accent)}.scale-with-days.svelte-8r78hm{display:flex}");
}
function get_each_context6(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[5] = list[i];
return child_ctx;
}
function get_each_context_12(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[5] = list[i];
return child_ctx;
}
function create_default_slot_13(ctx) {
let t_value = (
/*day*/
ctx[5].format("MMM D, ddd") + ""
);
let t;
return {
c() {
t = text(t_value);
},
m(target, anchor) {
insert(target, t, anchor);
},
p(ctx2, dirty) {
if (dirty & /*$visibleDateRange*/
4 && t_value !== (t_value = /*day*/
ctx2[5].format("MMM D, ddd") + ""))
set_data(t, t_value);
},
d(detaching) {
if (detaching)
detach(t);
}
};
}
function create_each_block_12(ctx) {
let div;
let controlbutton;
let div_1;
let __color_last;
let t;
let current;
function click_handler() {
return (
/*click_handler*/
ctx[4](
/*day*/
ctx[5]
)
);
}
controlbutton = new control_button_default({
props: {
label: "Open note for day",
$$slots: { default: [create_default_slot_13] },
$$scope: { ctx }
}
});
controlbutton.$on("click", click_handler);
return {
c() {
div = element("div");
div_1 = element("div");
create_component(controlbutton.$$.fragment);
t = space();
set_style(div_1, "display", "contents");
set_style(div_1, "--color", __color_last = isToday(
/*day*/
ctx[5]
) ? "white" : "var(--icon-color)");
attr(div, "class", "day-header svelte-8r78hm");
toggle_class(div, "today", isToday(
/*day*/
ctx[5]
));
},
m(target, anchor) {
insert(target, div, anchor);
append(div, div_1);
mount_component(controlbutton, div_1, null);
append(div, t);
current = true;
},
p(new_ctx, dirty) {
ctx = new_ctx;
if (dirty & /*$visibleDateRange*/
4 && __color_last !== (__color_last = isToday(
/*day*/
ctx[5]
) ? "white" : "var(--icon-color)")) {
set_style(div_1, "--color", __color_last);
}
const controlbutton_changes = {};
if (dirty & /*$$scope, $visibleDateRange*/
4100) {
controlbutton_changes.$$scope = { dirty, ctx };
}
controlbutton.$set(controlbutton_changes);
if (!current || dirty & /*isToday, $visibleDateRange*/
4) {
toggle_class(div, "today", isToday(
/*day*/
ctx[5]
));
}
},
i(local) {
if (current)
return;
transition_in(controlbutton.$$.fragment, local);
current = true;
},
o(local) {
transition_out(controlbutton.$$.fragment, local);
current = false;
},
d(detaching) {
if (detaching)
detach(div);
destroy_component(controlbutton);
}
};
}
function create_if_block4(ctx) {
let needle;
let current;
needle = new needle_default({ props: { autoScrollBlocked: true } });
return {
c() {
create_component(needle.$$.fragment);
},
m(target, anchor) {
mount_component(needle, target, anchor);
current = true;
},
i(local) {
if (current)
return;
transition_in(needle.$$.fragment, local);
current = true;
},
o(local) {
transition_out(needle.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(needle, detaching);
}
};
}
function create_catch_block(ctx) {
let pre;
let t0;
let t1_value = (
/*error*/
ctx[9] + ""
);
let t1;
return {
c() {
pre = element("pre");
t0 = text("Could not render tasks: ");
t1 = text(t1_value);
},
m(target, anchor) {
insert(target, pre, anchor);
append(pre, t0);
append(pre, t1);
},
p(ctx2, dirty) {
if (dirty & /*obsidianFacade, $visibleDateRange*/
5 && t1_value !== (t1_value = /*error*/
ctx2[9] + ""))
set_data(t1, t1_value);
},
i: noop,
o: noop,
d(detaching) {
if (detaching)
detach(pre);
}
};
}
function create_then_block(ctx) {
let taskcontainer;
let current;
taskcontainer = new task_container_default({
props: {
day: (
/*day*/
ctx[5]
),
obsidianFacade: (
/*obsidianFacade*/
ctx[0]
),
onUpdate: (
/*onUpdate*/
ctx[1]
),
tasks: addPlacing(
/*tasks*/
ctx[8]
)
}
});
return {
c() {
create_component(taskcontainer.$$.fragment);
},
m(target, anchor) {
mount_component(taskcontainer, target, anchor);
current = true;
},
p(ctx2, dirty) {
const taskcontainer_changes = {};
if (dirty & /*$visibleDateRange*/
4)
taskcontainer_changes.day = /*day*/
ctx2[5];
if (dirty & /*obsidianFacade*/
1)
taskcontainer_changes.obsidianFacade = /*obsidianFacade*/
ctx2[0];
if (dirty & /*onUpdate*/
2)
taskcontainer_changes.onUpdate = /*onUpdate*/
ctx2[1];
if (dirty & /*obsidianFacade, $visibleDateRange*/
5)
taskcontainer_changes.tasks = addPlacing(
/*tasks*/
ctx2[8]
);
taskcontainer.$set(taskcontainer_changes);
},
i(local) {
if (current)
return;
transition_in(taskcontainer.$$.fragment, local);
current = true;
},
o(local) {
transition_out(taskcontainer.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(taskcontainer, detaching);
}
};
}
function create_pending_block(ctx) {
return {
c: noop,
m: noop,
p: noop,
i: noop,
o: noop,
d: noop
};
}
function create_default_slot12(ctx) {
let show_if = isToday(
/*day*/
ctx[5]
);
let t;
let await_block_anchor;
let promise;
let current;
let if_block = show_if && create_if_block4(ctx);
let info = {
ctx,
current: null,
token: null,
hasCatch: true,
pending: create_pending_block,
then: create_then_block,
catch: create_catch_block,
value: 8,
error: 9,
blocks: [, , ,]
};
handle_promise(promise = /*obsidianFacade*/
ctx[0].getPlanItemsFromFile((0, import_obsidian_daily_notes_interface5.getDailyNote)(
/*day*/
ctx[5],
(0, import_obsidian_daily_notes_interface5.getAllDailyNotes)()
)), info);
return {
c() {
if (if_block)
if_block.c();
t = space();
await_block_anchor = empty();
info.block.c();
},
m(target, anchor) {
if (if_block)
if_block.m(target, anchor);
insert(target, t, anchor);
insert(target, await_block_anchor, anchor);
info.block.m(target, info.anchor = anchor);
info.mount = () => await_block_anchor.parentNode;
info.anchor = await_block_anchor;
current = true;
},
p(new_ctx, dirty) {
ctx = new_ctx;
if (dirty & /*$visibleDateRange*/
4)
show_if = isToday(
/*day*/
ctx[5]
);
if (show_if) {
if (if_block) {
if (dirty & /*$visibleDateRange*/
4) {
transition_in(if_block, 1);
}
} else {
if_block = create_if_block4(ctx);
if_block.c();
transition_in(if_block, 1);
if_block.m(t.parentNode, t);
}
} else if (if_block) {
group_outros();
transition_out(if_block, 1, 1, () => {
if_block = null;
});
check_outros();
}
info.ctx = ctx;
if (dirty & /*obsidianFacade, $visibleDateRange*/
5 && promise !== (promise = /*obsidianFacade*/
ctx[0].getPlanItemsFromFile((0, import_obsidian_daily_notes_interface5.getDailyNote)(
/*day*/
ctx[5],
(0, import_obsidian_daily_notes_interface5.getAllDailyNotes)()
))) && handle_promise(promise, info)) {
} else {
update_await_block_branch(info, ctx, dirty);
}
},
i(local) {
if (current)
return;
transition_in(if_block);
transition_in(info.block);
current = true;
},
o(local) {
transition_out(if_block);
for (let i = 0; i < 3; i += 1) {
const block = info.blocks[i];
transition_out(block);
}
current = false;
},
d(detaching) {
if (if_block)
if_block.d(detaching);
if (detaching)
detach(t);
if (detaching)
detach(await_block_anchor);
info.block.d(detaching);
info.token = null;
info = null;
}
};
}
function create_each_block6(ctx) {
let div1;
let div0;
let column;
let t;
let current;
column = new column_default({
props: {
visibleHours: (
/*$visibleHours*/
ctx[3]
),
$$slots: { default: [create_default_slot12] },
$$scope: { ctx }
}
});
return {
c() {
div1 = element("div");
div0 = element("div");
create_component(column.$$.fragment);
t = space();
attr(div0, "class", "scale-with-days svelte-8r78hm");
attr(div1, "class", "day-column svelte-8r78hm");
},
m(target, anchor) {
insert(target, div1, anchor);
append(div1, div0);
mount_component(column, div0, null);
append(div1, t);
current = true;
},
p(ctx2, dirty) {
const column_changes = {};
if (dirty & /*$visibleHours*/
8)
column_changes.visibleHours = /*$visibleHours*/
ctx2[3];
if (dirty & /*$$scope, obsidianFacade, $visibleDateRange, onUpdate*/
4103) {
column_changes.$$scope = { dirty, ctx: ctx2 };
}
column.$set(column_changes);
},
i(local) {
if (current)
return;
transition_in(column.$$.fragment, local);
current = true;
},
o(local) {
transition_out(column.$$.fragment, local);
current = false;
},
d(detaching) {
if (detaching)
detach(div1);
destroy_component(column);
}
};
}
function create_fragment23(ctx) {
let div1;
let div0;
let t0;
let t1;
let div2;
let ruler;
let t2;
let current;
let each_value_1 = (
/*$visibleDateRange*/
ctx[2]
);
let each_blocks_1 = [];
for (let i = 0; i < each_value_1.length; i += 1) {
each_blocks_1[i] = create_each_block_12(get_each_context_12(ctx, each_value_1, i));
}
const out = (i) => transition_out(each_blocks_1[i], 1, 1, () => {
each_blocks_1[i] = null;
});
ruler = new ruler_default({
props: { visibleHours: (
/*$visibleHours*/
ctx[3]
) }
});
let each_value = (
/*$visibleDateRange*/
ctx[2]
);
let each_blocks = [];
for (let i = 0; i < each_value.length; i += 1) {
each_blocks[i] = create_each_block6(get_each_context6(ctx, each_value, i));
}
const out_1 = (i) => transition_out(each_blocks[i], 1, 1, () => {
each_blocks[i] = null;
});
return {
c() {
div1 = element("div");
div0 = element("div");
t0 = space();
for (let i = 0; i < each_blocks_1.length; i += 1) {
each_blocks_1[i].c();
}
t1 = space();
div2 = element("div");
create_component(ruler.$$.fragment);
t2 = space();
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
attr(div0, "class", "corner svelte-8r78hm");
attr(div1, "class", "week-header svelte-8r78hm");
attr(div2, "class", "days svelte-8r78hm");
},
m(target, anchor) {
insert(target, div1, anchor);
append(div1, div0);
append(div1, t0);
for (let i = 0; i < each_blocks_1.length; i += 1) {
if (each_blocks_1[i]) {
each_blocks_1[i].m(div1, null);
}
}
insert(target, t1, anchor);
insert(target, div2, anchor);
mount_component(ruler, div2, null);
append(div2, t2);
for (let i = 0; i < each_blocks.length; i += 1) {
if (each_blocks[i]) {
each_blocks[i].m(div2, null);
}
}
current = true;
},
p(ctx2, [dirty]) {
if (dirty & /*isToday, $visibleDateRange, obsidianFacade*/
5) {
each_value_1 = /*$visibleDateRange*/
ctx2[2];
let i;
for (i = 0; i < each_value_1.length; i += 1) {
const child_ctx = get_each_context_12(ctx2, each_value_1, i);
if (each_blocks_1[i]) {
each_blocks_1[i].p(child_ctx, dirty);
transition_in(each_blocks_1[i], 1);
} else {
each_blocks_1[i] = create_each_block_12(child_ctx);
each_blocks_1[i].c();
transition_in(each_blocks_1[i], 1);
each_blocks_1[i].m(div1, null);
}
}
group_outros();
for (i = each_value_1.length; i < each_blocks_1.length; i += 1) {
out(i);
}
check_outros();
}
const ruler_changes = {};
if (dirty & /*$visibleHours*/
8)
ruler_changes.visibleHours = /*$visibleHours*/
ctx2[3];
ruler.$set(ruler_changes);
if (dirty & /*$visibleHours, obsidianFacade, getDailyNote, $visibleDateRange, getAllDailyNotes, onUpdate, addPlacing, isToday*/
15) {
each_value = /*$visibleDateRange*/
ctx2[2];
let i;
for (i = 0; i < each_value.length; i += 1) {
const child_ctx = get_each_context6(ctx2, each_value, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
transition_in(each_blocks[i], 1);
} else {
each_blocks[i] = create_each_block6(child_ctx);
each_blocks[i].c();
transition_in(each_blocks[i], 1);
each_blocks[i].m(div2, null);
}
}
group_outros();
for (i = each_value.length; i < each_blocks.length; i += 1) {
out_1(i);
}
check_outros();
}
},
i(local) {
if (current)
return;
for (let i = 0; i < each_value_1.length; i += 1) {
transition_in(each_blocks_1[i]);
}
transition_in(ruler.$$.fragment, local);
for (let i = 0; i < each_value.length; i += 1) {
transition_in(each_blocks[i]);
}
current = true;
},
o(local) {
each_blocks_1 = each_blocks_1.filter(Boolean);
for (let i = 0; i < each_blocks_1.length; i += 1) {
transition_out(each_blocks_1[i]);
}
transition_out(ruler.$$.fragment, local);
each_blocks = each_blocks.filter(Boolean);
for (let i = 0; i < each_blocks.length; i += 1) {
transition_out(each_blocks[i]);
}
current = false;
},
d(detaching) {
if (detaching)
detach(div1);
destroy_each(each_blocks_1, detaching);
if (detaching)
detach(t1);
if (detaching)
detach(div2);
destroy_component(ruler);
destroy_each(each_blocks, detaching);
}
};
}
function instance19($$self, $$props, $$invalidate) {
let $visibleDateRange;
let $visibleHours;
component_subscribe($$self, visibleDateRange, ($$value) => $$invalidate(2, $visibleDateRange = $$value));
component_subscribe($$self, visibleHours, ($$value) => $$invalidate(3, $visibleHours = $$value));
let { obsidianFacade } = $$props;
let { onUpdate } = $$props;
const click_handler = async (day) => await obsidianFacade.openFileForDay(day);
$$self.$$set = ($$props2) => {
if ("obsidianFacade" in $$props2)
$$invalidate(0, obsidianFacade = $$props2.obsidianFacade);
if ("onUpdate" in $$props2)
$$invalidate(1, onUpdate = $$props2.onUpdate);
};
return [obsidianFacade, onUpdate, $visibleDateRange, $visibleHours, click_handler];
}
var Week = class extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance19, create_fragment23, safe_not_equal, { obsidianFacade: 0, onUpdate: 1 }, add_css11);
}
};
var week_default = Week;
// src/ui/weekly-view.ts
var WeeklyView = class extends import_obsidian5.ItemView {
constructor(leaf, settings2, obsidianFacade, planEditor) {
super(leaf);
this.settings = settings2;
this.obsidianFacade = obsidianFacade;
this.planEditor = planEditor;
}
getViewType() {
return viewTypeWeekly;
}
getDisplayText() {
return "Week Planner";
}
getIcon() {
return this.settings.timelineIcon;
}
async onOpen() {
const headerEl = this.containerEl.children[0];
const contentEl = this.containerEl.children[1];
const viewActionsEl = headerEl.querySelector(".view-actions");
const customActionsEl = createDiv();
viewActionsEl.prepend(customActionsEl);
this.headerActionsComponent = new header_actions_default({
target: customActionsEl
});
this.weekComponent = new week_default({
target: contentEl,
props: {
obsidianFacade: this.obsidianFacade,
onUpdate: this.planEditor.syncTasksWithFile
}
});
}
async onClose() {
var _a, _b;
(_a = this.weekComponent) == null ? void 0 : _a.$destroy();
(_b = this.headerActionsComponent) == null ? void 0 : _b.$destroy();
}
};
// src/main.ts
var DayPlanner = class extends import_obsidian6.Plugin {
constructor() {
super(...arguments);
this.handleActiveLeafChanged = ({ view }) => {
if (!(view instanceof import_obsidian6.FileView) || !view.file) {
return;
}
const dayUserSwitchedTo = (0, import_obsidian_daily_notes_interface6.getDateFromFile)(view.file, "day");
if (dayUserSwitchedTo.isSame(get_store_value(visibleDayInTimeline), "day")) {
return;
}
if (!dayUserSwitchedTo) {
if (isToday(get_store_value(visibleDayInTimeline))) {
visibleDayInTimeline.set(window.moment());
}
return;
}
visibleDayInTimeline.set(dayUserSwitchedTo);
};
this.handleLayoutReady = async () => {
visibleDateRange.set(getDaysOfCurrentWeek());
};
this.updateStatusBar = async () => {
if (dailyNoteExists()) {
const note = (0, import_obsidian_daily_notes_interface6.getDailyNote)(window.moment(), (0, import_obsidian_daily_notes_interface6.getAllDailyNotes)());
const planItems = await this.obsidianFacade.getPlanItemsFromFile(note);
await this.statusBar.update(planItems);
} else {
this.statusBar.setEmpty();
}
};
}
async onload() {
this.settings = Object.assign(
new DayPlannerSettings(),
await this.loadData()
);
this.statusBar = new StatusBar(
this.settings,
this.addStatusBarItem(),
this.app.workspace
);
this.registerCommands();
this.obsidianFacade = new ObsidianFacade(
this.app.workspace,
this.app.vault,
this.app.metadataCache,
this.settings
);
this.planEditor = new PlanEditor(this.settings, this.obsidianFacade);
this.registerView(
viewTypeTimeline,
(leaf) => new TimelineView(
leaf,
this.settings,
this.obsidianFacade,
this.planEditor
)
);
this.registerView(
viewTypeWeekly,
(leaf) => new WeeklyView(
leaf,
this.settings,
this.obsidianFacade,
this.planEditor
)
);
this.addRibbonIcon(
"calendar-range",
"Week plan",
async () => await this.initWeeklyLeaf()
);
this.addSettingTab(new DayPlannerSettingsTab(this.app, this));
this.initAppAndSettingsStores();
this.app.workspace.onLayoutReady(this.handleLayoutReady);
this.app.workspace.on("active-leaf-change", this.handleActiveLeafChanged);
this.app.metadataCache.on("changed", async (file) => {
visibleDateRange.update((prev) => [...prev]);
visibleDayInTimeline.update((prev) => prev.clone());
});
this.registerInterval(
window.setInterval(
() => this.updateStatusBarOnFailed(this.updateStatusBar),
5e3
)
);
}
registerCommands() {
this.addCommand({
id: "show-day-planner-timeline",
name: "Show the Day Planner Timeline",
callback: async () => await this.initTimelineLeaf()
});
this.addCommand({
id: "show-weekly-view",
name: "Show the Week Planner",
callback: async () => await this.initWeeklyLeaf()
});
this.addCommand({
id: "show-day-planner-today-note",
name: "Open today's Day Planner",
callback: async () => this.app.workspace.getLeaf(false).openFile(await createDailyNoteIfNeeded(window.moment()))
});
this.addCommand({
id: "insert-planner-heading-at-cursor",
name: "Insert Planner Heading at Cursor",
editorCallback: (editor) => editor.replaceSelection(this.planEditor.createPlannerHeading())
});
}
initAppAndSettingsStores() {
appStore.set(this.app);
const {
zoomLevel,
centerNeedle,
startHour,
timelineDateFormat,
plannerHeading,
plannerHeadingLevel,
timelineColored,
timelineStartColor,
timelineEndColor,
showHelp
} = this.settings;
settings.set({
zoomLevel,
centerNeedle,
startHour,
timelineDateFormat,
plannerHeading,
plannerHeadingLevel,
timelineColored,
timelineStartColor,
timelineEndColor,
showHelp
});
settings.subscribe(async (newValue) => {
this.settings = { ...this.settings, ...newValue };
await this.saveData(this.settings);
});
}
onunload() {
this.detachLeavesOfType(viewTypeTimeline);
this.detachLeavesOfType(viewTypeWeekly);
}
async updateStatusBarOnFailed(fn) {
try {
await fn();
} catch (error) {
this.statusBar.setText(`\u26A0\uFE0F Planner update failed (see console)`);
console.error(error);
}
}
async initWeeklyLeaf() {
this.detachLeavesOfType(viewTypeWeekly);
await this.app.workspace.getLeaf(false).setViewState({
type: viewTypeWeekly,
active: true
});
}
async initTimelineLeaf() {
this.detachLeavesOfType(viewTypeTimeline);
await this.app.workspace.getRightLeaf(false).setViewState({
type: viewTypeTimeline,
active: true
});
this.app.workspace.rightSplit.expand();
}
detachLeavesOfType(type) {
this.app.workspace.getLeavesOfType(type).forEach((leaf) => leaf.detach());
}
};
/*! Bundled license information:
lodash/lodash.min.js:
(**
* @license
* Lodash <https://lodash.com/>
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
* Released under MIT license <https://lodash.com/license>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
*)
fraction.js/fraction.js:
(**
* @license Fraction.js v4.1.1 23/05/2021
* https://www.xarg.org/2014/03/rational-numbers-in-javascript/
*
* Copyright (c) 2021, Robert Eisele (robert@xarg.org)
* Dual licensed under the MIT or GPL Version 2 licenses.
**)
lodash/lodash.js:
(**
* @license
* Lodash <https://lodash.com/>
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
* Released under MIT license <https://lodash.com/license>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
*)
chroma-js/chroma.js:
(**
* chroma.js - JavaScript library for color conversions
*
* Copyright (c) 2011-2019, Gregor Aisch
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name Gregor Aisch may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* -------------------------------------------------------
*
* chroma.js includes colors from colorbrewer2.org, which are released under
* the following license:
*
* Copyright (c) 2002 Cynthia Brewer, Mark Harrower,
* and The Pennsylvania State University.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific
* language governing permissions and limitations under the License.
*
* ------------------------------------------------------
*
* Named colors are taken from X11 Color Names.
* http://www.w3.org/TR/css3-color/#svg-color
*
* @preserve
*)
*/