{"version":3,"file":"bundle.js","sources":["../../node_modules/svelte/internal/index.mjs","../../node_modules/svelte/easing/index.mjs","../../node_modules/svelte/transition/index.mjs","../../src/view/Modal.svelte","../../node_modules/sanctuary-show/index.js","../../node_modules/sanctuary-type-identifiers/index.js","../../node_modules/daggy/src/daggy.js","../../node_modules/fluture/node_modules/sanctuary-type-identifiers/index.js","../../node_modules/fluture/src/internal/const.js","../../node_modules/fluture/src/internal/list.js","../../node_modules/fluture/src/internal/debug.js","../../node_modules/fluture/src/internal/utils.js","../../node_modules/fluture/src/internal/error.js","../../node_modules/fluture/src/internal/predicates.js","../../node_modules/fluture/src/internal/iteration.js","../../node_modules/fluture/src/future.js","../../node_modules/fluture/src/after.js","../../node_modules/fluture/src/and.js","../../node_modules/fluture/src/encase-p.js","../../node_modules/fluture/src/encase.js","../../node_modules/fluture/src/bichain.js","../../node_modules/fluture/src/internal/parallel.js","../../node_modules/fluture/src/both.js","../../node_modules/fluture/src/cache.js","../../node_modules/fluture/src/chain-rej.js","../../node_modules/fluture/src/chain.js","../../node_modules/fluture/src/coalesce.js","../../node_modules/fluture/src/fork.js","../../node_modules/fluture/src/internal/timing.js","../../node_modules/fluture/src/go.js","../../node_modules/fluture/src/hook.js","../../node_modules/fluture/src/lastly.js","../../node_modules/fluture/src/map-rej.js","../../node_modules/fluture/src/node.js","../../node_modules/fluture/src/pap.js","../../node_modules/fluture/src/parallel.js","../../node_modules/fluture/src/race.js","../../node_modules/fluture/src/par.js","../../node_modules/fluture/src/reject-after.js","../../node_modules/fluture/src/swap.js","../../node_modules/ramda/es/T.js","../../node_modules/ramda/es/internal/_isPlaceholder.js","../../node_modules/ramda/es/internal/_curry1.js","../../node_modules/ramda/es/internal/_curry2.js","../../node_modules/ramda/es/add.js","../../node_modules/ramda/es/internal/_concat.js","../../node_modules/ramda/es/internal/_arity.js","../../node_modules/ramda/es/internal/_curryN.js","../../node_modules/ramda/es/curryN.js","../../node_modules/ramda/es/addIndex.js","../../node_modules/ramda/es/internal/_curry3.js","../../node_modules/ramda/es/internal/_isArray.js","../../node_modules/ramda/es/internal/_isTransformer.js","../../node_modules/ramda/es/internal/_dispatchable.js","../../node_modules/ramda/es/internal/_xfBase.js","../../node_modules/ramda/es/max.js","../../node_modules/ramda/es/internal/_map.js","../../node_modules/ramda/es/internal/_isString.js","../../node_modules/ramda/es/internal/_isArrayLike.js","../../node_modules/ramda/es/internal/_xwrap.js","../../node_modules/ramda/es/bind.js","../../node_modules/ramda/es/internal/_reduce.js","../../node_modules/ramda/es/internal/_xmap.js","../../node_modules/ramda/es/internal/_has.js","../../node_modules/ramda/es/internal/_isArguments.js","../../node_modules/ramda/es/keys.js","../../node_modules/ramda/es/map.js","../../node_modules/ramda/es/internal/_isInteger.js","../../node_modules/ramda/es/nth.js","../../node_modules/ramda/es/paths.js","../../node_modules/ramda/es/path.js","../../node_modules/ramda/es/prop.js","../../node_modules/ramda/es/pluck.js","../../node_modules/ramda/es/reduce.js","../../node_modules/ramda/es/always.js","../../node_modules/ramda/es/and.js","../../node_modules/ramda/es/ap.js","../../node_modules/ramda/es/append.js","../../node_modules/ramda/es/apply.js","../../node_modules/ramda/es/values.js","../../node_modules/ramda/es/applySpec.js","../../node_modules/ramda/es/assoc.js","../../node_modules/ramda/es/isNil.js","../../node_modules/ramda/es/assocPath.js","../../node_modules/ramda/es/internal/_isFunction.js","../../node_modules/ramda/es/liftN.js","../../node_modules/ramda/es/lift.js","../../node_modules/ramda/es/curry.js","../../node_modules/ramda/es/type.js","../../node_modules/ramda/es/not.js","../../node_modules/ramda/es/complement.js","../../node_modules/ramda/es/internal/_pipe.js","../../node_modules/ramda/es/internal/_checkForMethod.js","../../node_modules/ramda/es/slice.js","../../node_modules/ramda/es/tail.js","../../node_modules/ramda/es/pipe.js","../../node_modules/ramda/es/reverse.js","../../node_modules/ramda/es/compose.js","../../node_modules/ramda/es/head.js","../../node_modules/ramda/es/internal/_identity.js","../../node_modules/ramda/es/identity.js","../../node_modules/ramda/es/internal/_arrayFromIterator.js","../../node_modules/ramda/es/internal/_includesWith.js","../../node_modules/ramda/es/internal/_objectIs.js","../../node_modules/ramda/es/internal/_equals.js","../../node_modules/ramda/es/internal/_functionName.js","../../node_modules/ramda/es/equals.js","../../node_modules/ramda/es/internal/_includes.js","../../node_modules/ramda/es/internal/_indexOf.js","../../node_modules/ramda/es/internal/_quote.js","../../node_modules/ramda/es/internal/_toISOString.js","../../node_modules/ramda/es/internal/_filter.js","../../node_modules/ramda/es/internal/_isObject.js","../../node_modules/ramda/es/internal/_xfilter.js","../../node_modules/ramda/es/filter.js","../../node_modules/ramda/es/reject.js","../../node_modules/ramda/es/internal/_complement.js","../../node_modules/ramda/es/internal/_toString.js","../../node_modules/ramda/es/toString.js","../../node_modules/ramda/es/concat.js","../../node_modules/ramda/es/cond.js","../../node_modules/ramda/es/converge.js","../../node_modules/ramda/es/defaultTo.js","../../node_modules/ramda/es/internal/_Set.js","../../node_modules/ramda/es/internal/_xtake.js","../../node_modules/ramda/es/internal/_reduced.js","../../node_modules/ramda/es/take.js","../../node_modules/ramda/es/empty.js","../../node_modules/ramda/es/flip.js","../../node_modules/ramda/es/ifElse.js","../../node_modules/ramda/es/includes.js","../../node_modules/ramda/es/uniqBy.js","../../node_modules/ramda/es/uniq.js","../../node_modules/ramda/es/intersection.js","../../node_modules/ramda/es/invoker.js","../../node_modules/ramda/es/isEmpty.js","../../node_modules/ramda/es/length.js","../../node_modules/ramda/es/internal/_isNumber.js","../../node_modules/ramda/es/lens.js","../../node_modules/ramda/es/lensPath.js","../../node_modules/ramda/es/lensProp.js","../../node_modules/ramda/es/multiply.js","../../node_modules/ramda/es/internal/_of.js","../../node_modules/ramda/es/of.js","../../node_modules/ramda/es/over.js","../../node_modules/ramda/es/prepend.js","../../node_modules/ramda/es/reduceRight.js","../../node_modules/ramda/es/replace.js","../../node_modules/ramda/es/sequence.js","../../node_modules/ramda/es/set.js","../../node_modules/ramda/es/sortBy.js","../../node_modules/ramda/es/toLower.js","../../node_modules/ramda/es/traverse.js","../../node_modules/ramda/es/trim.js","../../node_modules/ramda/es/unapply.js","../../node_modules/ramda/es/view.js","../../node_modules/ramda/es/without.js","../../node_modules/svelte/store/index.mjs","../../src/fp/free.js","../../src/fp/interpretor.js","../../src/fp/sop.js","../../src/fp/ref.js","../../node_modules/svelte/animate/index.mjs","../../node_modules/@zerodevx/svelte-toast/src/stores.js","../../node_modules/svelte/motion/index.mjs","../../node_modules/@zerodevx/svelte-toast/src/ToastItem.svelte","../../node_modules/@zerodevx/svelte-toast/src/SvelteToast.svelte","../../src/view/App.svelte","../../node_modules/page/page.js","../../node_modules/tslib/tslib.es6.js","../../node_modules/search-params/dist/search-params.esm.js","../../node_modules/path-parser/dist/path-parser.esm.js","../../src/fp/view.js","../../src/app/stores.js","../../src/view/DropdownMenu.svelte","../../src/view/BackHeader.svelte","../../node_modules/svelte-easy-crop/src/helpers.js","../../node_modules/svelte-easy-crop/src/index.svelte","../../src/view/item/photo-edit/canvasUtils.js","../../node_modules/pica/dist/pica.js","../../node_modules/image-blob-reduce/dist/image-blob-reduce.esm.mjs","../../src/view/item/photo-edit/PhotoEdit.svelte","../../src/view/item/photo-edit/Photo.svelte","../../src/view/item/NameInput.svelte","../../src/view/actions.js","../../src/view/Tag.svelte","../../src/view/item/TagSummary.svelte","../../src/view/item/TagNewInput.svelte","../../src/view/home/TagRenamePop.svelte","../../src/view/item/TagCloud.svelte","../../src/view/item/Tags.svelte","../../src/view/item/Reminder.svelte","../../node_modules/dayjs/dayjs.min.js","../../node_modules/svelte-calendar/stores/datepicker.js","../../node_modules/svelte-calendar/context.js","../../node_modules/svelte-calendar/components/generic/crossfade/Crossfade.svelte","../../node_modules/svelte-calendar/directives/blurr.js","../../node_modules/svelte-calendar/components/Popover.svelte","../../node_modules/svelte-calendar/config/theme.js","../../node_modules/svelte-calendar/components/generic/Theme.svelte","../../node_modules/svelte-calendar/config.js","../../node_modules/just-throttle/index.js","../../node_modules/svelte-calendar/components/generic/KeyControls.svelte","../../node_modules/svelte-calendar/components/generic/Grid.svelte","../../node_modules/svelte-calendar/components/generic/InfiniteGrid.svelte","../../node_modules/svelte-calendar/config/scroll.js","../../node_modules/svelte-calendar/directives/scrollable.js","../../node_modules/svelte-calendar/components/calendar/DayPicker.svelte","../../node_modules/svelte-calendar/components/generic/ViewTransitionEffect.svelte","../../node_modules/svelte-calendar/components/generic/Arrow.svelte","../../node_modules/svelte-calendar/components/calendar/CalendarControls.svelte","../../node_modules/svelte-calendar/components/generic/crossfade/CrossfadeProvider.svelte","../../node_modules/svelte-calendar/components/calendar/MonthPicker.svelte","../../node_modules/svelte-calendar/components/calendar/YearPicker.svelte","../../node_modules/svelte-calendar/components/calendar/Calendar.svelte","../../node_modules/svelte-calendar/config/defaults.js","../../node_modules/svelte-calendar/components/Datepicker.svelte","../../src/view/item/BatchCounter.svelte","../../src/view/item/BatchCreation.svelte","../../src/view/item/Batch.svelte","../../src/view/item/Batches.svelte","../../src/view/item/NoteInput.svelte","../../src/view/item/Item.svelte","../../src/view/item/ItemCreation.svelte","../../src/view/Logo.svelte","../../src/view/info/Welcome.svelte","../../src/view/home/Grid.svelte","../../src/view/home/BottomSideButton.svelte","../../src/view/home/FilterSelection.svelte","../../src/view/home/FilterSummary.svelte","../../src/view/home/Filter.svelte","../../src/view/home/FloatUpMenuButton.svelte","../../src/view/home/FloatUpMenu.svelte","../../src/view/home/BottomBar.svelte","../../src/view/info/InfoOnePager.svelte","../../node_modules/svelte-collapse/src/collapse.js","../../node_modules/svelte-collapsible/src/components/Accordion.svelte","../../node_modules/svelte-collapsible/src/components/AccordionItem.svelte","../../src/view/info/HowToOnePager.svelte","../../src/view/info/Releases.svelte","../../node_modules/immediate/lib/queueMicrotask.js","../../node_modules/immediate/lib/mutation.js","../../node_modules/immediate/lib/index.js","../../node_modules/immediate/lib/messageChannel.js","../../node_modules/immediate/lib/stateChange.js","../../node_modules/immediate/lib/timeout.js","../../node_modules/uuid/dist/rng-browser.js","../../node_modules/uuid/dist/bytesToUuid.js","../../node_modules/uuid/dist/v1.js","../../node_modules/uuid/dist/v35.js","../../node_modules/uuid/dist/md5-browser.js","../../node_modules/uuid/dist/v3.js","../../node_modules/uuid/dist/v4.js","../../node_modules/uuid/dist/sha1-browser.js","../../node_modules/uuid/dist/v5.js","../../node_modules/uuid/dist/index.js","../../node_modules/uuid/wrapper.mjs","../../node_modules/spark-md5/spark-md5.js","../../node_modules/vuvuzela/index.js","../../node_modules/argsarray/index.js","../../node_modules/inherits/inherits_browser.js","../../node_modules/rollup-plugin-node-builtins/src/es6/events.js","../../node_modules/pouchdb/lib/index-browser.es.js","../../node_modules/pouchdb-errors/lib/index.es.js","../../node_modules/pouchdb-fetch/lib/index-browser.es.js","../../node_modules/pouchdb-collections/lib/index.es.js","../../node_modules/pouchdb-binary-utils/lib/index-browser.es.js","../../node_modules/pouchdb-collate/lib/index.es.js","../../node_modules/pouchdb-md5/lib/index-browser.es.js","../../node_modules/pouchdb-utils/lib/index-browser.es.js","../../node_modules/pouchdb-mapreduce-utils/lib/index.es.js","../../node_modules/pouchdb-abstract-mapreduce/lib/index.es.js","../../node_modules/pouchdb-selector-core/lib/index.es.js","../../node_modules/pouchdb-find/lib/index-browser.es.js","../../src/app/database.js","../../src/app/db_ops.js","../../src/app/utils.js","../../src/app/sop/item_utils.js","../../src/app/sop/batch_ops.js","../../src/app/sop/item_ops.js","../../src/app/sop/stock_ops.js","../../src/app/kv.js","../../src/app/sop/filter_ops.js","../../src/app/sop/grid.js","../../node_modules/moment/moment.js","../../src/view/setting/Sync.svelte","../../src/view/setting/YesNoDialog.svelte","../../src/view/setting/Setting.svelte","../../src/app/sop/backup.js","../../src/app/sop/setting.js","../../src/app/sop/version_ops.js","../../src/app/sop/home.js","../../src/app/sop/tag_ops.js","../../src/app/sop/bulk_tag_ops.js","../../src/app/sop/item.js","../../src/app/router.js","../../src/main.js"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nlet src_url_equal_anchor;\nfunction src_url_equal(element_src, url) {\n if (!src_url_equal_anchor) {\n src_url_equal_anchor = document.createElement('a');\n }\n src_url_equal_anchor.href = url;\n return element_src === src_url_equal_anchor.href;\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction is_empty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction validate_store(store, name) {\n if (store != null && typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(store, ...callbacks) {\n if (store == null) {\n return noop;\n }\n const unsub = store.subscribe(...callbacks);\n return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\nfunction get_store_value(store) {\n let value;\n subscribe(store, _ => value = _)();\n return value;\n}\nfunction component_subscribe(component, store, callback) {\n component.$$.on_destroy.push(subscribe(store, callback));\n}\nfunction create_slot(definition, ctx, $$scope, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n return definition[1] && fn\n ? assign($$scope.ctx.slice(), definition[1](fn(ctx)))\n : $$scope.ctx;\n}\nfunction get_slot_changes(definition, $$scope, dirty, fn) {\n if (definition[2] && fn) {\n const lets = definition[2](fn(dirty));\n if ($$scope.dirty === undefined) {\n return lets;\n }\n if (typeof lets === 'object') {\n const merged = [];\n const len = Math.max($$scope.dirty.length, lets.length);\n for (let i = 0; i < len; i += 1) {\n merged[i] = $$scope.dirty[i] | lets[i];\n }\n return merged;\n }\n return $$scope.dirty | lets;\n }\n return $$scope.dirty;\n}\nfunction update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) {\n if (slot_changes) {\n const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n slot.p(slot_context, slot_changes);\n }\n}\nfunction update_slot(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_context_fn) {\n const slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn);\n}\nfunction get_all_dirty_from_scope($$scope) {\n if ($$scope.ctx.length > 32) {\n const dirty = [];\n const length = $$scope.ctx.length / 32;\n for (let i = 0; i < length; i++) {\n dirty[i] = -1;\n }\n return dirty;\n }\n return -1;\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction compute_rest_props(props, keys) {\n const rest = {};\n keys = new Set(keys);\n for (const k in props)\n if (!keys.has(k) && k[0] !== '$')\n rest[k] = props[k];\n return rest;\n}\nfunction compute_slots(slots) {\n const result = {};\n for (const key in slots) {\n result[key] = true;\n }\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\nfunction null_to_empty(value) {\n return value == null ? '' : value;\n}\nfunction set_store_value(store, ret, value) {\n store.set(value);\n return ret;\n}\nconst has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nfunction action_destroyer(action_result) {\n return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = is_client ? cb => requestAnimationFrame(cb) : noop;\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nfunction run_tasks(now) {\n tasks.forEach(task => {\n if (!task.c(now)) {\n tasks.delete(task);\n task.f();\n }\n });\n if (tasks.size !== 0)\n raf(run_tasks);\n}\n/**\n * For testing purposes only!\n */\nfunction clear_loops() {\n tasks.clear();\n}\n/**\n * Creates a new task that runs on each raf frame\n * until it returns a falsy value or is aborted\n */\nfunction loop(callback) {\n let task;\n if (tasks.size === 0)\n raf(run_tasks);\n return {\n promise: new Promise(fulfill => {\n tasks.add(task = { c: callback, f: fulfill });\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\n// Track which nodes are claimed during hydration. Unclaimed nodes can then be removed from the DOM\n// at the end of hydration without touching the remaining nodes.\nlet is_hydrating = false;\nfunction start_hydrating() {\n is_hydrating = true;\n}\nfunction end_hydrating() {\n is_hydrating = false;\n}\nfunction upper_bound(low, high, key, value) {\n // Return first index of value larger than input value in the range [low, high)\n while (low < high) {\n const mid = low + ((high - low) >> 1);\n if (key(mid) <= value) {\n low = mid + 1;\n }\n else {\n high = mid;\n }\n }\n return low;\n}\nfunction init_hydrate(target) {\n if (target.hydrate_init)\n return;\n target.hydrate_init = true;\n // We know that all children have claim_order values since the unclaimed have been detached if target is not \n let children = target.childNodes;\n // If target is , there may be children without claim_order\n if (target.nodeName === 'HEAD') {\n const myChildren = [];\n for (let i = 0; i < children.length; i++) {\n const node = children[i];\n if (node.claim_order !== undefined) {\n myChildren.push(node);\n }\n }\n children = myChildren;\n }\n /*\n * Reorder claimed children optimally.\n * We can reorder claimed children optimally by finding the longest subsequence of\n * nodes that are already claimed in order and only moving the rest. The longest\n * subsequence subsequence of nodes that are claimed in order can be found by\n * computing the longest increasing subsequence of .claim_order values.\n *\n * This algorithm is optimal in generating the least amount of reorder operations\n * possible.\n *\n * Proof:\n * We know that, given a set of reordering operations, the nodes that do not move\n * always form an increasing subsequence, since they do not move among each other\n * meaning that they must be already ordered among each other. Thus, the maximal\n * set of nodes that do not move form a longest increasing subsequence.\n */\n // Compute longest increasing subsequence\n // m: subsequence length j => index k of smallest value that ends an increasing subsequence of length j\n const m = new Int32Array(children.length + 1);\n // Predecessor indices + 1\n const p = new Int32Array(children.length);\n m[0] = -1;\n let longest = 0;\n for (let i = 0; i < children.length; i++) {\n const current = children[i].claim_order;\n // Find the largest subsequence length such that it ends in a value less than our current value\n // upper_bound returns first greater value, so we subtract one\n // with fast path for when we are on the current longest subsequence\n const seqLen = ((longest > 0 && children[m[longest]].claim_order <= current) ? longest + 1 : upper_bound(1, longest, idx => children[m[idx]].claim_order, current)) - 1;\n p[i] = m[seqLen] + 1;\n const newLen = seqLen + 1;\n // We can guarantee that current is the smallest value. Otherwise, we would have generated a longer sequence.\n m[newLen] = i;\n longest = Math.max(newLen, longest);\n }\n // The longest increasing subsequence of nodes (initially reversed)\n const lis = [];\n // The rest of the nodes, nodes that will be moved\n const toMove = [];\n let last = children.length - 1;\n for (let cur = m[longest] + 1; cur != 0; cur = p[cur - 1]) {\n lis.push(children[cur - 1]);\n for (; last >= cur; last--) {\n toMove.push(children[last]);\n }\n last--;\n }\n for (; last >= 0; last--) {\n toMove.push(children[last]);\n }\n lis.reverse();\n // We sort the nodes being moved to guarantee that their insertion order matches the claim order\n toMove.sort((a, b) => a.claim_order - b.claim_order);\n // Finally, we move the nodes\n for (let i = 0, j = 0; i < toMove.length; i++) {\n while (j < lis.length && toMove[i].claim_order >= lis[j].claim_order) {\n j++;\n }\n const anchor = j < lis.length ? lis[j] : null;\n target.insertBefore(toMove[i], anchor);\n }\n}\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction append_styles(target, style_sheet_id, styles) {\n const append_styles_to = get_root_for_style(target);\n if (!append_styles_to.getElementById(style_sheet_id)) {\n const style = element('style');\n style.id = style_sheet_id;\n style.textContent = styles;\n append_stylesheet(append_styles_to, style);\n }\n}\nfunction get_root_for_style(node) {\n if (!node)\n return document;\n const root = node.getRootNode ? node.getRootNode() : node.ownerDocument;\n if (root && root.host) {\n return root;\n }\n return node.ownerDocument;\n}\nfunction append_empty_stylesheet(node) {\n const style_element = element('style');\n append_stylesheet(get_root_for_style(node), style_element);\n return style_element;\n}\nfunction append_stylesheet(node, style) {\n append(node.head || node, style);\n}\nfunction append_hydration(target, node) {\n if (is_hydrating) {\n init_hydrate(target);\n if ((target.actual_end_child === undefined) || ((target.actual_end_child !== null) && (target.actual_end_child.parentElement !== target))) {\n target.actual_end_child = target.firstChild;\n }\n // Skip nodes of undefined ordering\n while ((target.actual_end_child !== null) && (target.actual_end_child.claim_order === undefined)) {\n target.actual_end_child = target.actual_end_child.nextSibling;\n }\n if (node !== target.actual_end_child) {\n // We only insert if the ordering of this node should be modified or the parent node is not target\n if (node.claim_order !== undefined || node.parentNode !== target) {\n target.insertBefore(node, target.actual_end_child);\n }\n }\n else {\n target.actual_end_child = node.nextSibling;\n }\n }\n else if (node.parentNode !== target || node.nextSibling !== null) {\n target.appendChild(node);\n }\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction insert_hydration(target, node, anchor) {\n if (is_hydrating && !anchor) {\n append_hydration(target, node);\n }\n else if (node.parentNode !== target || node.nextSibling != anchor) {\n target.insertBefore(node, anchor || null);\n }\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction element_is(name, is) {\n return document.createElement(name, { is });\n}\nfunction object_without_properties(obj, exclude) {\n const target = {};\n for (const k in obj) {\n if (has_prop(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction self(fn) {\n return function (event) {\n // @ts-ignore\n if (event.target === this)\n fn.call(this, event);\n };\n}\nfunction trusted(fn) {\n return function (event) {\n // @ts-ignore\n if (event.isTrusted)\n fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else if (node.getAttribute(attribute) !== value)\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n // @ts-ignore\n const descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n for (const key in attributes) {\n if (attributes[key] == null) {\n node.removeAttribute(key);\n }\n else if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key === '__value') {\n node.value = node[key] = attributes[key];\n }\n else if (descriptors[key] && descriptors[key].set) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_svg_attributes(node, attributes) {\n for (const key in attributes) {\n attr(node, key, attributes[key]);\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group, __value, checked) {\n const value = new Set();\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.add(group[i].__value);\n }\n if (!checked) {\n value.delete(__value);\n }\n return Array.from(value);\n}\nfunction to_number(value) {\n return value === '' ? null : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction init_claim_info(nodes) {\n if (nodes.claim_info === undefined) {\n nodes.claim_info = { last_index: 0, total_claimed: 0 };\n }\n}\nfunction claim_node(nodes, predicate, processNode, createNode, dontUpdateLastIndex = false) {\n // Try to find nodes in an order such that we lengthen the longest increasing subsequence\n init_claim_info(nodes);\n const resultNode = (() => {\n // We first try to find an element after the previous one\n for (let i = nodes.claim_info.last_index; i < nodes.length; i++) {\n const node = nodes[i];\n if (predicate(node)) {\n const replacement = processNode(node);\n if (replacement === undefined) {\n nodes.splice(i, 1);\n }\n else {\n nodes[i] = replacement;\n }\n if (!dontUpdateLastIndex) {\n nodes.claim_info.last_index = i;\n }\n return node;\n }\n }\n // Otherwise, we try to find one before\n // We iterate in reverse so that we don't go too far back\n for (let i = nodes.claim_info.last_index - 1; i >= 0; i--) {\n const node = nodes[i];\n if (predicate(node)) {\n const replacement = processNode(node);\n if (replacement === undefined) {\n nodes.splice(i, 1);\n }\n else {\n nodes[i] = replacement;\n }\n if (!dontUpdateLastIndex) {\n nodes.claim_info.last_index = i;\n }\n else if (replacement === undefined) {\n // Since we spliced before the last_index, we decrease it\n nodes.claim_info.last_index--;\n }\n return node;\n }\n }\n // If we can't find any matching node, we create a new one\n return createNode();\n })();\n resultNode.claim_order = nodes.claim_info.total_claimed;\n nodes.claim_info.total_claimed += 1;\n return resultNode;\n}\nfunction claim_element_base(nodes, name, attributes, create_element) {\n return claim_node(nodes, (node) => node.nodeName === name, (node) => {\n const remove = [];\n for (let j = 0; j < node.attributes.length; j++) {\n const attribute = node.attributes[j];\n if (!attributes[attribute.name]) {\n remove.push(attribute.name);\n }\n }\n remove.forEach(v => node.removeAttribute(v));\n return undefined;\n }, () => create_element(name));\n}\nfunction claim_element(nodes, name, attributes) {\n return claim_element_base(nodes, name, attributes, element);\n}\nfunction claim_svg_element(nodes, name, attributes) {\n return claim_element_base(nodes, name, attributes, svg_element);\n}\nfunction claim_text(nodes, data) {\n return claim_node(nodes, (node) => node.nodeType === 3, (node) => {\n const dataStr = '' + data;\n if (node.data.startsWith(dataStr)) {\n if (node.data.length !== dataStr.length) {\n return node.splitText(dataStr.length);\n }\n }\n else {\n node.data = dataStr;\n }\n }, () => text(data), true // Text nodes should not update last index since it is likely not worth it to eliminate an increasing subsequence of actual elements\n );\n}\nfunction claim_space(nodes) {\n return claim_text(nodes, ' ');\n}\nfunction find_comment(nodes, text, start) {\n for (let i = start; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 8 /* comment node */ && node.textContent.trim() === text) {\n return i;\n }\n }\n return nodes.length;\n}\nfunction claim_html_tag(nodes) {\n // find html opening tag\n const start_index = find_comment(nodes, 'HTML_TAG_START', 0);\n const end_index = find_comment(nodes, 'HTML_TAG_END', start_index);\n if (start_index === end_index) {\n return new HtmlTagHydration();\n }\n init_claim_info(nodes);\n const html_tag_nodes = nodes.splice(start_index, end_index + 1);\n detach(html_tag_nodes[0]);\n detach(html_tag_nodes[html_tag_nodes.length - 1]);\n const claimed_nodes = html_tag_nodes.slice(1, html_tag_nodes.length - 1);\n for (const n of claimed_nodes) {\n n.claim_order = nodes.claim_info.total_claimed;\n nodes.claim_info.total_claimed += 1;\n }\n return new HtmlTagHydration(claimed_nodes);\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.wholeText !== data)\n text.data = data;\n}\nfunction set_input_value(input, value) {\n input.value = value == null ? '' : value;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value, important) {\n node.style.setProperty(key, value, important ? 'important' : '');\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n select.selectedIndex = -1; // no option should be selected\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\nlet crossorigin;\nfunction is_crossorigin() {\n if (crossorigin === undefined) {\n crossorigin = false;\n try {\n if (typeof window !== 'undefined' && window.parent) {\n void window.parent.document;\n }\n }\n catch (error) {\n crossorigin = true;\n }\n }\n return crossorigin;\n}\nfunction add_resize_listener(node, fn) {\n const computed_style = getComputedStyle(node);\n if (computed_style.position === 'static') {\n node.style.position = 'relative';\n }\n const iframe = element('iframe');\n iframe.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +\n 'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;');\n iframe.setAttribute('aria-hidden', 'true');\n iframe.tabIndex = -1;\n const crossorigin = is_crossorigin();\n let unsubscribe;\n if (crossorigin) {\n iframe.src = \"data:text/html,\";\n unsubscribe = listen(window, 'message', (event) => {\n if (event.source === iframe.contentWindow)\n fn();\n });\n }\n else {\n iframe.src = 'about:blank';\n iframe.onload = () => {\n unsubscribe = listen(iframe.contentWindow, 'resize', fn);\n };\n }\n append(node, iframe);\n return () => {\n if (crossorigin) {\n unsubscribe();\n }\n else if (unsubscribe && iframe.contentWindow) {\n unsubscribe();\n }\n detach(iframe);\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail, bubbles = false) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, bubbles, false, detail);\n return e;\n}\nfunction query_selector_all(selector, parent = document.body) {\n return Array.from(parent.querySelectorAll(selector));\n}\nclass HtmlTag {\n constructor() {\n this.e = this.n = null;\n }\n c(html) {\n this.h(html);\n }\n m(html, target, anchor = null) {\n if (!this.e) {\n this.e = element(target.nodeName);\n this.t = target;\n this.c(html);\n }\n this.i(anchor);\n }\n h(html) {\n this.e.innerHTML = html;\n this.n = Array.from(this.e.childNodes);\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert(this.t, this.n[i], anchor);\n }\n }\n p(html) {\n this.d();\n this.h(html);\n this.i(this.a);\n }\n d() {\n this.n.forEach(detach);\n }\n}\nclass HtmlTagHydration extends HtmlTag {\n constructor(claimed_nodes) {\n super();\n this.e = this.n = null;\n this.l = claimed_nodes;\n }\n c(html) {\n if (this.l) {\n this.n = this.l;\n }\n else {\n super.c(html);\n }\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert_hydration(this.t, this.n[i], anchor);\n }\n }\n}\nfunction attribute_to_object(attributes) {\n const result = {};\n for (const attribute of attributes) {\n result[attribute.name] = attribute.value;\n }\n return result;\n}\nfunction get_custom_elements_slots(element) {\n const result = {};\n element.childNodes.forEach((node) => {\n result[node.slot || 'default'] = true;\n });\n return result;\n}\n\nconst active_docs = new Set();\nlet active = 0;\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n const doc = get_root_for_style(node);\n active_docs.add(doc);\n const stylesheet = doc.__svelte_stylesheet || (doc.__svelte_stylesheet = append_empty_stylesheet(node).sheet);\n const current_rules = doc.__svelte_rules || (doc.__svelte_rules = {});\n if (!current_rules[name]) {\n current_rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n const previous = (node.style.animation || '').split(', ');\n const next = previous.filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n );\n const deleted = previous.length - next.length;\n if (deleted) {\n node.style.animation = next.join(', ');\n active -= deleted;\n if (!active)\n clear_rules();\n }\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n active_docs.forEach(doc => {\n const stylesheet = doc.__svelte_stylesheet;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n doc.__svelte_rules = {};\n });\n active_docs.clear();\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now => {\n if (!started && now >= start_time) {\n started = true;\n }\n if (started && now >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error('Function called outside component initialization');\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_update.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = get_current_component();\n return (type, detail) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail);\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n }\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\nfunction getAllContexts() {\n return get_current_component().$$.context;\n}\nfunction hasContext(key) {\n return get_current_component().$$.context.has(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n // @ts-ignore\n callbacks.slice().forEach(fn => fn.call(this, event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\nlet flushing = false;\nconst seen_callbacks = new Set();\nfunction flush() {\n if (flushing)\n return;\n flushing = true;\n do {\n // first, call beforeUpdate functions\n // and update components\n for (let i = 0; i < dirty_components.length; i += 1) {\n const component = dirty_components[i];\n set_current_component(component);\n update(component.$$);\n }\n set_current_component(null);\n dirty_components.length = 0;\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n callback();\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n flushing = false;\n seen_callbacks.clear();\n}\nfunction update($$) {\n if ($$.fragment !== null) {\n $$.update();\n run_all($$.before_update);\n const dirty = $$.dirty;\n $$.dirty = [-1];\n $$.fragment && $$.fragment.p($$.ctx, dirty);\n $$.after_update.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros // parent group\n };\n}\nfunction check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, detach, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.c.push(() => {\n outroing.delete(block);\n if (callback) {\n if (detach)\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nconst null_transition = { duration: 0 };\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n started = true;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.r += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(0, 1);\n dispatch(node, false, 'end');\n if (!--group.r) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.c);\n }\n return false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = (program.b - t);\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.r += 1;\n }\n if (running_program || pending_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now => {\n if (pending_program && now > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now >= running_program.end) {\n tick(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.r)\n run_all(running_program.group.c);\n }\n }\n running_program = null;\n }\n else if (now >= running_program.start) {\n const p = now - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = value;\n let child_ctx = info.ctx;\n if (key !== undefined) {\n child_ctx = child_ctx.slice();\n child_ctx[key] = value;\n }\n const block = type && (info.current = type)(child_ctx);\n let needs_flush = false;\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, 1, () => {\n if (info.blocks[i] === block) {\n info.blocks[i] = null;\n }\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n needs_flush = true;\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n if (needs_flush) {\n flush();\n }\n }\n if (is_promise(promise)) {\n const current_component = get_current_component();\n promise.then(value => {\n set_current_component(current_component);\n update(info.then, 1, info.value, value);\n set_current_component(null);\n }, error => {\n set_current_component(current_component);\n update(info.catch, 2, info.error, error);\n set_current_component(null);\n if (!info.hasCatch) {\n throw error;\n }\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = promise;\n }\n}\nfunction update_await_block_branch(info, ctx, dirty) {\n const child_ctx = ctx.slice();\n const { resolved } = info;\n if (info.current === info.then) {\n child_ctx[info.value] = resolved;\n }\n if (info.current === info.catch) {\n child_ctx[info.error] = resolved;\n }\n info.block.p(child_ctx, dirty);\n}\n\nconst globals = (typeof window !== 'undefined'\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : global);\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(child_ctx, dirty);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction validate_each_keys(ctx, list, get_context, get_key) {\n const keys = new Set();\n for (let i = 0; i < list.length; i++) {\n const key = get_key(get_context(ctx, list, i));\n if (keys.has(key)) {\n throw new Error('Cannot have duplicate keys in a keyed each');\n }\n keys.add(key);\n }\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\nfunction get_spread_object(spread_props) {\n return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\n// source: https://html.spec.whatwg.org/multipage/indices.html\nconst boolean_attributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'formnovalidate',\n 'hidden',\n 'ismap',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected'\n]);\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args, classes_to_add) {\n const attributes = Object.assign({}, ...args);\n if (classes_to_add) {\n if (attributes.class == null) {\n attributes.class = classes_to_add;\n }\n else {\n attributes.class += ' ' + classes_to_add;\n }\n }\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === true)\n str += ' ' + name;\n else if (boolean_attributes.has(name.toLowerCase())) {\n if (value)\n str += ' ' + name;\n }\n else if (value != null) {\n str += ` ${name}=\"${value}\"`;\n }\n });\n return str;\n}\nconst escaped = {\n '\"': '"',\n \"'\": ''',\n '&': '&',\n '<': '<',\n '>': '>'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction escape_attribute_value(value) {\n return typeof value === 'string' ? escape(value) : value;\n}\nfunction escape_object(obj) {\n const result = {};\n for (const key in obj) {\n result[key] = escape_attribute_value(obj[key]);\n }\n return result;\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots, context) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(parent_component ? parent_component.$$.context : context || []),\n // these will be immediately discarded\n on_mount: [],\n before_update: [],\n after_update: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, { $$slots = {}, context = new Map() } = {}) => {\n on_destroy = [];\n const result = { title: '', head: '', css: new Set() };\n const html = $$render(result, props, {}, $$slots, context);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.title + result.head\n };\n },\n $$render\n };\n}\nfunction add_attribute(name, value, boolean) {\n if (value == null || (boolean && !value))\n return '';\n return ` ${name}${value === true ? '' : `=${typeof value === 'string' ? JSON.stringify(escape(value)) : `\"${value}\"`}`}`;\n}\nfunction add_classes(classes) {\n return classes ? ` class=\"${classes}\"` : '';\n}\n\nfunction bind(component, name, callback) {\n const index = component.$$.props[name];\n if (index !== undefined) {\n component.$$.bound[index] = callback;\n callback(component.$$.ctx[index]);\n }\n}\nfunction create_component(block) {\n block && block.c();\n}\nfunction claim_component(block, parent_nodes) {\n block && block.l(parent_nodes);\n}\nfunction mount_component(component, target, anchor, customElement) {\n const { fragment, on_mount, on_destroy, after_update } = component.$$;\n fragment && fragment.m(target, anchor);\n if (!customElement) {\n // onMount happens before the initial afterUpdate\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n }\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n const $$ = component.$$;\n if ($$.fragment !== null) {\n run_all($$.on_destroy);\n $$.fragment && $$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n $$.on_destroy = $$.fragment = null;\n $$.ctx = [];\n }\n}\nfunction make_dirty(component, i) {\n if (component.$$.dirty[0] === -1) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty.fill(0);\n }\n component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));\n}\nfunction init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) {\n const parent_component = current_component;\n set_current_component(component);\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props,\n update: noop,\n not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n on_disconnect: [],\n before_update: [],\n after_update: [],\n context: new Map(parent_component ? parent_component.$$.context : options.context || []),\n // everything else\n callbacks: blank_object(),\n dirty,\n skip_bound: false,\n root: options.target || parent_component.$$.root\n };\n append_styles && append_styles($$.root);\n let ready = false;\n $$.ctx = instance\n ? instance(component, options.props || {}, (i, ret, ...rest) => {\n const value = rest.length ? rest[0] : ret;\n if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n if (!$$.skip_bound && $$.bound[i])\n $$.bound[i](value);\n if (ready)\n make_dirty(component, i);\n }\n return ret;\n })\n : [];\n $$.update();\n ready = true;\n run_all($$.before_update);\n // `false` as a special case of no DOM component\n $$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n if (options.target) {\n if (options.hydrate) {\n start_hydrating();\n const nodes = children(options.target);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.l(nodes);\n nodes.forEach(detach);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor, options.customElement);\n end_hydrating();\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement === 'function') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n const { on_mount } = this.$$;\n this.$$.on_disconnect = on_mount.map(run).filter(is_function);\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr, _oldValue, newValue) {\n this[attr] = newValue;\n }\n disconnectedCallback() {\n run_all(this.$$.on_disconnect);\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n };\n}\n/**\n * Base class for Svelte components. Used when dev=false.\n */\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n}\n\nfunction dispatch_dev(type, detail) {\n document.dispatchEvent(custom_event(type, Object.assign({ version: '3.42.4' }, detail), true));\n}\nfunction append_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append(target, node);\n}\nfunction append_hydration_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append_hydration(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert(target, node, anchor);\n}\nfunction insert_hydration_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert_hydration(target, node, anchor);\n}\nfunction detach_dev(node) {\n dispatch_dev('SvelteDOMRemove', { node });\n detach(node);\n}\nfunction detach_between_dev(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n detach_dev(before.nextSibling);\n }\n}\nfunction detach_before_dev(after) {\n while (after.previousSibling) {\n detach_dev(after.previousSibling);\n }\n}\nfunction detach_after_dev(before) {\n while (before.nextSibling) {\n detach_dev(before.nextSibling);\n }\n}\nfunction listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) {\n const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : [];\n if (has_prevent_default)\n modifiers.push('preventDefault');\n if (has_stop_propagation)\n modifiers.push('stopPropagation');\n dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers });\n const dispose = listen(node, event, handler, options);\n return () => {\n dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers });\n dispose();\n };\n}\nfunction attr_dev(node, attribute, value) {\n attr(node, attribute, value);\n if (value == null)\n dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute });\n else\n dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value });\n}\nfunction prop_dev(node, property, value) {\n node[property] = value;\n dispatch_dev('SvelteDOMSetProperty', { node, property, value });\n}\nfunction dataset_dev(node, property, value) {\n node.dataset[property] = value;\n dispatch_dev('SvelteDOMSetDataset', { node, property, value });\n}\nfunction set_data_dev(text, data) {\n data = '' + data;\n if (text.wholeText === data)\n return;\n dispatch_dev('SvelteDOMSetData', { node: text, data });\n text.data = data;\n}\nfunction validate_each_argument(arg) {\n if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) {\n let msg = '{#each} only iterates over array-like objects.';\n if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) {\n msg += ' You can use a spread to convert this iterable into an array.';\n }\n throw new Error(msg);\n }\n}\nfunction validate_slots(name, slot, keys) {\n for (const slot_key of Object.keys(slot)) {\n if (!~keys.indexOf(slot_key)) {\n console.warn(`<${name}> received an unexpected slot \"${slot_key}\".`);\n }\n }\n}\n/**\n * Base class for Svelte components with some minor dev-enhancements. Used when dev=true.\n */\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(\"'target' is a required option\");\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn('Component was already destroyed'); // eslint-disable-line no-console\n };\n }\n $capture_state() { }\n $inject_state() { }\n}\n/**\n * Base class to create strongly typed Svelte components.\n * This only exists for typing purposes and should be used in `.d.ts` files.\n *\n * ### Example:\n *\n * You have component library on npm called `component-library`, from which\n * you export a component called `MyComponent`. For Svelte+TypeScript users,\n * you want to provide typings. Therefore you create a `index.d.ts`:\n * ```ts\n * import { SvelteComponentTyped } from \"svelte\";\n * export class MyComponent extends SvelteComponentTyped<{foo: string}> {}\n * ```\n * Typing this makes it possible for IDEs like VS Code with the Svelte extension\n * to provide intellisense and to use the component like this in a Svelte file\n * with TypeScript:\n * ```svelte\n * \n * \n * ```\n *\n * #### Why not make this part of `SvelteComponent(Dev)`?\n * Because\n * ```ts\n * class ASubclassOfSvelteComponent extends SvelteComponent<{foo: string}> {}\n * const component: typeof SvelteComponent = ASubclassOfSvelteComponent;\n * ```\n * will throw a type error, so we need to separate the more strictly typed class.\n */\nclass SvelteComponentTyped extends SvelteComponentDev {\n constructor(options) {\n super(options);\n }\n}\nfunction loop_guard(timeout) {\n const start = Date.now();\n return () => {\n if (Date.now() - start > timeout) {\n throw new Error('Infinite loop detected');\n }\n };\n}\n\nexport { HtmlTag, HtmlTagHydration, SvelteComponent, SvelteComponentDev, SvelteComponentTyped, SvelteElement, action_destroyer, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_transform, afterUpdate, append, append_dev, append_empty_stylesheet, append_hydration, append_hydration_dev, append_styles, assign, attr, attr_dev, attribute_to_object, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_component, claim_element, claim_html_tag, claim_space, claim_svg_element, claim_text, clear_loops, component_subscribe, compute_rest_props, compute_slots, createEventDispatcher, create_animation, create_bidirectional_transition, create_component, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, dataset_dev, debug, destroy_block, destroy_component, destroy_each, detach, detach_after_dev, detach_before_dev, detach_between_dev, detach_dev, dirty_components, dispatch_dev, each, element, element_is, empty, end_hydrating, escape, escape_attribute_value, escape_object, escaped, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, getAllContexts, getContext, get_all_dirty_from_scope, get_binding_group_value, get_current_component, get_custom_elements_slots, get_root_for_style, get_slot_changes, get_spread_object, get_spread_update, get_store_value, globals, group_outros, handle_promise, hasContext, has_prop, identity, init, insert, insert_dev, insert_hydration, insert_hydration_dev, intros, invalid_attribute_name_character, is_client, is_crossorigin, is_empty, is_function, is_promise, listen, listen_dev, loop, loop_guard, missing_component, mount_component, noop, not_equal, now, null_to_empty, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, prop_dev, query_selector_all, raf, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, self, setContext, set_attributes, set_current_component, set_custom_element_data, set_data, set_data_dev, set_input_type, set_input_value, set_now, set_raf, set_store_value, set_style, set_svg_attributes, space, spread, src_url_equal, start_hydrating, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, trusted, update_await_block_branch, update_keyed_each, update_slot, update_slot_base, validate_component, validate_each_argument, validate_each_keys, validate_slots, validate_store, xlink_attr };\n","export { identity as linear } from '../internal/index.mjs';\n\n/*\nAdapted from https://github.com/mattdesl\nDistributed under MIT License https://github.com/mattdesl/eases/blob/master/LICENSE.md\n*/\nfunction backInOut(t) {\n const s = 1.70158 * 1.525;\n if ((t *= 2) < 1)\n return 0.5 * (t * t * ((s + 1) * t - s));\n return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\n}\nfunction backIn(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n}\nfunction backOut(t) {\n const s = 1.70158;\n return --t * t * ((s + 1) * t + s) + 1;\n}\nfunction bounceOut(t) {\n const a = 4.0 / 11.0;\n const b = 8.0 / 11.0;\n const c = 9.0 / 10.0;\n const ca = 4356.0 / 361.0;\n const cb = 35442.0 / 1805.0;\n const cc = 16061.0 / 1805.0;\n const t2 = t * t;\n return t < a\n ? 7.5625 * t2\n : t < b\n ? 9.075 * t2 - 9.9 * t + 3.4\n : t < c\n ? ca * t2 - cb * t + cc\n : 10.8 * t * t - 20.52 * t + 10.72;\n}\nfunction bounceInOut(t) {\n return t < 0.5\n ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0))\n : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5;\n}\nfunction bounceIn(t) {\n return 1.0 - bounceOut(1.0 - t);\n}\nfunction circInOut(t) {\n if ((t *= 2) < 1)\n return -0.5 * (Math.sqrt(1 - t * t) - 1);\n return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n}\nfunction circIn(t) {\n return 1.0 - Math.sqrt(1.0 - t * t);\n}\nfunction circOut(t) {\n return Math.sqrt(1 - --t * t);\n}\nfunction cubicInOut(t) {\n return t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;\n}\nfunction cubicIn(t) {\n return t * t * t;\n}\nfunction cubicOut(t) {\n const f = t - 1.0;\n return f * f * f + 1.0;\n}\nfunction elasticInOut(t) {\n return t < 0.5\n ? 0.5 *\n Math.sin(((+13.0 * Math.PI) / 2) * 2.0 * t) *\n Math.pow(2.0, 10.0 * (2.0 * t - 1.0))\n : 0.5 *\n Math.sin(((-13.0 * Math.PI) / 2) * (2.0 * t - 1.0 + 1.0)) *\n Math.pow(2.0, -10.0 * (2.0 * t - 1.0)) +\n 1.0;\n}\nfunction elasticIn(t) {\n return Math.sin((13.0 * t * Math.PI) / 2) * Math.pow(2.0, 10.0 * (t - 1.0));\n}\nfunction elasticOut(t) {\n return (Math.sin((-13.0 * (t + 1.0) * Math.PI) / 2) * Math.pow(2.0, -10.0 * t) + 1.0);\n}\nfunction expoInOut(t) {\n return t === 0.0 || t === 1.0\n ? t\n : t < 0.5\n ? +0.5 * Math.pow(2.0, 20.0 * t - 10.0)\n : -0.5 * Math.pow(2.0, 10.0 - t * 20.0) + 1.0;\n}\nfunction expoIn(t) {\n return t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0));\n}\nfunction expoOut(t) {\n return t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t);\n}\nfunction quadInOut(t) {\n t /= 0.5;\n if (t < 1)\n return 0.5 * t * t;\n t--;\n return -0.5 * (t * (t - 2) - 1);\n}\nfunction quadIn(t) {\n return t * t;\n}\nfunction quadOut(t) {\n return -t * (t - 2.0);\n}\nfunction quartInOut(t) {\n return t < 0.5\n ? +8.0 * Math.pow(t, 4.0)\n : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0;\n}\nfunction quartIn(t) {\n return Math.pow(t, 4.0);\n}\nfunction quartOut(t) {\n return Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0;\n}\nfunction quintInOut(t) {\n if ((t *= 2) < 1)\n return 0.5 * t * t * t * t * t;\n return 0.5 * ((t -= 2) * t * t * t * t + 2);\n}\nfunction quintIn(t) {\n return t * t * t * t * t;\n}\nfunction quintOut(t) {\n return --t * t * t * t * t + 1;\n}\nfunction sineInOut(t) {\n return -0.5 * (Math.cos(Math.PI * t) - 1);\n}\nfunction sineIn(t) {\n const v = Math.cos(t * Math.PI * 0.5);\n if (Math.abs(v) < 1e-14)\n return 1;\n else\n return 1 - v;\n}\nfunction sineOut(t) {\n return Math.sin((t * Math.PI) / 2);\n}\n\nexport { backIn, backInOut, backOut, bounceIn, bounceInOut, bounceOut, circIn, circInOut, circOut, cubicIn, cubicInOut, cubicOut, elasticIn, elasticInOut, elasticOut, expoIn, expoInOut, expoOut, quadIn, quadInOut, quadOut, quartIn, quartInOut, quartOut, quintIn, quintInOut, quintOut, sineIn, sineInOut, sineOut };\n","import { cubicInOut, linear, cubicOut } from '../easing/index.mjs';\nimport { is_function, assign } from '../internal/index.mjs';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\nfunction blur(node, { delay = 0, duration = 400, easing = cubicInOut, amount = 5, opacity = 0 } = {}) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const f = style.filter === 'none' ? '' : style.filter;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (_t, u) => `opacity: ${target_opacity - (od * u)}; filter: ${f} blur(${u * amount}px);`\n };\n}\nfunction fade(node, { delay = 0, duration = 400, easing = linear } = {}) {\n const o = +getComputedStyle(node).opacity;\n return {\n delay,\n duration,\n easing,\n css: t => `opacity: ${t * o}`\n };\n}\nfunction fly(node, { delay = 0, duration = 400, easing = cubicOut, x = 0, y = 0, opacity = 0 } = {}) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const transform = style.transform === 'none' ? '' : style.transform;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (t, u) => `\n\t\t\ttransform: ${transform} translate(${(1 - t) * x}px, ${(1 - t) * y}px);\n\t\t\topacity: ${target_opacity - (od * u)}`\n };\n}\nfunction slide(node, { delay = 0, duration = 400, easing = cubicOut } = {}) {\n const style = getComputedStyle(node);\n const opacity = +style.opacity;\n const height = parseFloat(style.height);\n const padding_top = parseFloat(style.paddingTop);\n const padding_bottom = parseFloat(style.paddingBottom);\n const margin_top = parseFloat(style.marginTop);\n const margin_bottom = parseFloat(style.marginBottom);\n const border_top_width = parseFloat(style.borderTopWidth);\n const border_bottom_width = parseFloat(style.borderBottomWidth);\n return {\n delay,\n duration,\n easing,\n css: t => 'overflow: hidden;' +\n `opacity: ${Math.min(t * 20, 1) * opacity};` +\n `height: ${t * height}px;` +\n `padding-top: ${t * padding_top}px;` +\n `padding-bottom: ${t * padding_bottom}px;` +\n `margin-top: ${t * margin_top}px;` +\n `margin-bottom: ${t * margin_bottom}px;` +\n `border-top-width: ${t * border_top_width}px;` +\n `border-bottom-width: ${t * border_bottom_width}px;`\n };\n}\nfunction scale(node, { delay = 0, duration = 400, easing = cubicOut, start = 0, opacity = 0 } = {}) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const transform = style.transform === 'none' ? '' : style.transform;\n const sd = 1 - start;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (_t, u) => `\n\t\t\ttransform: ${transform} scale(${1 - (sd * u)});\n\t\t\topacity: ${target_opacity - (od * u)}\n\t\t`\n };\n}\nfunction draw(node, { delay = 0, speed, duration, easing = cubicInOut } = {}) {\n const len = node.getTotalLength();\n if (duration === undefined) {\n if (speed === undefined) {\n duration = 800;\n }\n else {\n duration = len / speed;\n }\n }\n else if (typeof duration === 'function') {\n duration = duration(len);\n }\n return {\n delay,\n duration,\n easing,\n css: (t, u) => `stroke-dasharray: ${t * len} ${u * len}`\n };\n}\nfunction crossfade(_a) {\n var { fallback } = _a, defaults = __rest(_a, [\"fallback\"]);\n const to_receive = new Map();\n const to_send = new Map();\n function crossfade(from, node, params) {\n const { delay = 0, duration = d => Math.sqrt(d) * 30, easing = cubicOut } = assign(assign({}, defaults), params);\n const to = node.getBoundingClientRect();\n const dx = from.left - to.left;\n const dy = from.top - to.top;\n const dw = from.width / to.width;\n const dh = from.height / to.height;\n const d = Math.sqrt(dx * dx + dy * dy);\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n const opacity = +style.opacity;\n return {\n delay,\n duration: is_function(duration) ? duration(d) : duration,\n easing,\n css: (t, u) => `\n\t\t\t\topacity: ${t * opacity};\n\t\t\t\ttransform-origin: top left;\n\t\t\t\ttransform: ${transform} translate(${u * dx}px,${u * dy}px) scale(${t + (1 - t) * dw}, ${t + (1 - t) * dh});\n\t\t\t`\n };\n }\n function transition(items, counterparts, intro) {\n return (node, params) => {\n items.set(params.key, {\n rect: node.getBoundingClientRect()\n });\n return () => {\n if (counterparts.has(params.key)) {\n const { rect } = counterparts.get(params.key);\n counterparts.delete(params.key);\n return crossfade(rect, node, params);\n }\n // if the node is disappearing altogether\n // (i.e. wasn't claimed by the other list)\n // then we need to supply an outro\n items.delete(params.key);\n return fallback && fallback(node, params, intro);\n };\n };\n }\n return [\n transition(to_send, to_receive, false),\n transition(to_receive, to_send, true)\n ];\n}\n\nexport { blur, crossfade, draw, fade, fly, scale, slide };\n","\n\n\n {}}\n >\n \n \n \n\n\n\n","//. # sanctuary-show\n//.\n//. Haskell has a `show` function which can be applied to a compatible value to\n//. produce a descriptive string representation of that value. The idea is that\n//. the string representation should, if possible, be an expression which would\n//. produce the original value if evaluated.\n//.\n//. This library provides a similar [`show`](#show) function.\n//.\n//. In general, this property should hold: `eval (show (x)) = x`. In some cases\n//. parens are necessary to ensure correct interpretation (`{}`, for example,\n//. is an empty block rather than an empty object in some contexts). Thus the\n//. property is more accurately stated `eval ('(' + show (x) + ')') = x`.\n//.\n//. One can make values of a custom type compatible with [`show`](#show) by\n//. defining a `@@show` method. For example:\n//.\n//. ```javascript\n//. //# Maybe#@@show :: Maybe a ~> () -> String\n//. //.\n//. //. ```javascript\n//. //. > show (Nothing)\n//. //. 'Nothing'\n//. //.\n//. //. > show (Just (['foo', 'bar', 'baz']))\n//. //. 'Just ([\"foo\", \"bar\", \"baz\"])'\n//. //. ```\n//. Maybe.prototype['@@show'] = function() {\n//. return this.isNothing ? 'Nothing' : 'Just (' + show (this.value) + ')';\n//. };\n//. ```\n\n(function(f) {\n\n 'use strict';\n\n /* istanbul ignore else */\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = f ();\n } else if (typeof define === 'function' && define.amd != null) {\n define ([], f);\n } else {\n self.sanctuaryShow = f ();\n }\n\n} (function() {\n\n 'use strict';\n\n // $$show :: String\n var $$show = '@@show';\n\n // seen :: Array Any\n var seen = [];\n\n // entry :: Object -> String -> String\n function entry(o) {\n return function(k) {\n return show (k) + ': ' + show (o[k]);\n };\n }\n\n // sortedKeys :: Object -> Array String\n function sortedKeys(o) {\n return (Object.keys (o)).sort ();\n }\n\n //# show :: Showable a => a -> String\n //.\n //. Returns a useful string representation of the given value.\n //.\n //. Dispatches to the value's `@@show` method if present.\n //.\n //. Where practical, `show (eval ('(' + show (x) + ')')) = show (x)`.\n //.\n //. ```javascript\n //. > show (null)\n //. 'null'\n //.\n //. > show (undefined)\n //. 'undefined'\n //.\n //. > show (true)\n //. 'true'\n //.\n //. > show (new Boolean (false))\n //. 'new Boolean (false)'\n //.\n //. > show (-0)\n //. '-0'\n //.\n //. > show (NaN)\n //. 'NaN'\n //.\n //. > show (new Number (Infinity))\n //. 'new Number (Infinity)'\n //.\n //. > show ('foo\\n\"bar\"\\nbaz\\n')\n //. '\"foo\\\\n\\\\\"bar\\\\\"\\\\nbaz\\\\n\"'\n //.\n //. > show (new String (''))\n //. 'new String (\"\")'\n //.\n //. > show (['foo', 'bar', 'baz'])\n //. '[\"foo\", \"bar\", \"baz\"]'\n //.\n //. > show ([[[[[0]]]]])\n //. '[[[[[0]]]]]'\n //.\n //. > show ({x: [1, 2], y: [3, 4], z: [5, 6]})\n //. '{\"x\": [1, 2], \"y\": [3, 4], \"z\": [5, 6]}'\n //. ```\n function show(x) {\n if (seen.indexOf (x) >= 0) return '';\n\n switch (Object.prototype.toString.call (x)) {\n\n case '[object Boolean]':\n return typeof x === 'object' ?\n 'new Boolean (' + show (x.valueOf ()) + ')' :\n x.toString ();\n\n case '[object Number]':\n return typeof x === 'object' ?\n 'new Number (' + show (x.valueOf ()) + ')' :\n 1 / x === -Infinity ? '-0' : x.toString (10);\n\n case '[object String]':\n return typeof x === 'object' ?\n 'new String (' + show (x.valueOf ()) + ')' :\n JSON.stringify (x);\n\n case '[object Date]':\n return 'new Date (' +\n show (isNaN (x.valueOf ()) ? NaN : x.toISOString ()) +\n ')';\n\n case '[object Error]':\n return 'new ' + x.name + ' (' + show (x.message) + ')';\n\n case '[object Arguments]':\n return 'function () { return arguments; } (' +\n (Array.prototype.map.call (x, show)).join (', ') +\n ')';\n\n case '[object Array]':\n seen.push (x);\n try {\n return '[' + ((x.map (show)).concat (\n sortedKeys (x)\n .filter (function(k) { return !(/^\\d+$/.test (k)); })\n .map (entry (x))\n )).join (', ') + ']';\n } finally {\n seen.pop ();\n }\n\n case '[object Object]':\n seen.push (x);\n try {\n return (\n $$show in x &&\n (x.constructor == null || x.constructor.prototype !== x) ?\n x[$$show] () :\n '{' + ((sortedKeys (x)).map (entry (x))).join (', ') + '}'\n );\n } finally {\n seen.pop ();\n }\n\n case '[object Set]':\n seen.push (x);\n try {\n return 'new Set (' + show (Array.from (x.values ())) + ')';\n } finally {\n seen.pop ();\n }\n\n case '[object Map]':\n seen.push (x);\n try {\n return 'new Map (' + show (Array.from (x.entries ())) + ')';\n } finally {\n seen.pop ();\n }\n\n default:\n return String (x);\n\n }\n }\n\n return show;\n\n}));\n","/*\n @@@@@@@ @@@@@@@ @@\n @@ @@ @@ @@ @@@\n @@ @@@ @@ @@ @@ @@@ @@ @@ @@@@@@ @@ @@@ @@ @@@ @@@@\n @@ @@ @@@ @@ @@ @@ @@@ @@ @@@ @@ @@@ @@@ @@ @@@ @@\n @@ @@ @@@ @@ @@ @@ @@@ @@ @@@ @@ @@@ @@@ @@ @@@@@@@@\n @@ @@ @@@ @@ @@ @@ @@@ @@ @@@ @@ @@@ @@@ @@ @@@\n @@ @@@ @@@@@ @@ @@@ @@@@@ @@@ @@@ @@ @@@@@@ @@@@@\n @@ @@ @@ @@\n @@@@@@@ @@@@@@@ @@@@@ @@\n */\n//. # sanctuary-type-identifiers\n//.\n//. A type is a set of values. Boolean, for example, is the type comprising\n//. `true` and `false`. A value may be a member of multiple types (`42` is a\n//. member of Number, PositiveNumber, Integer, and many other types).\n//.\n//. In certain situations it is useful to divide JavaScript values into\n//. non-overlapping types. The language provides two constructs for this\n//. purpose: the [`typeof`][1] operator and [`Object.prototype.toString`][2].\n//. Each has pros and cons, but neither supports user-defined types.\n//.\n//. This package specifies an [algorithm][3] for deriving a _type identifier_\n//. from any JavaScript value, and exports an implementation of the algorithm.\n//. Authors of algebraic data types may follow this specification in order to\n//. make their data types compatible with the algorithm.\n//.\n//. ### Algorithm\n//.\n//. 1. Take any JavaScript value `x`.\n//.\n//. 2. If `x` is `null` or `undefined`, go to step 6.\n//.\n//. 3. If `x.constructor` evaluates to `null` or `undefined`, go to step 6.\n//.\n//. 4. If `x.constructor.prototype === x`, go to step 6. This check prevents a\n//. prototype object from being considered a member of its associated type.\n//.\n//. 5. If `typeof x.constructor['@@type']` evaluates to `'string'`, return\n//. the value of `x.constructor['@@type']`.\n//.\n//. 6. Return the [`Object.prototype.toString`][2] representation of `x`\n//. without the leading `'[object '` and trailing `']'`.\n//.\n//. ### Compatibility\n//.\n//. For an algebraic data type to be compatible with the [algorithm][3]:\n//.\n//. - every member of the type must have a `constructor` property pointing\n//. to an object known as the _type representative_;\n//.\n//. - the type representative must have a `@@type` property; and\n//.\n//. - the type representative's `@@type` property (the _type identifier_)\n//. must be a string primitive, ideally `'/'`.\n//.\n//. For example:\n//.\n//. ```javascript\n//. // Identity :: a -> Identity a\n//. function Identity(x) {\n//. if (!(this instanceof Identity)) return new Identity(x);\n//. this.value = x;\n//. }\n//.\n//. Identity['@@type'] = 'my-package/Identity';\n//. ```\n//.\n//. Note that by using a constructor function the `constructor` property is set\n//. implicitly for each value created. Constructor functions are convenient for\n//. this reason, but are not required. This definition is also valid:\n//.\n//. ```javascript\n//. // IdentityTypeRep :: TypeRep Identity\n//. var IdentityTypeRep = {\n//. '@@type': 'my-package/Identity'\n//. };\n//.\n//. // Identity :: a -> Identity a\n//. function Identity(x) {\n//. return {constructor: IdentityTypeRep, value: x};\n//. }\n//. ```\n//.\n//. ### Usage\n//.\n//. ```javascript\n//. var Identity = require('my-package').Identity;\n//. var type = require('sanctuary-type-identifiers');\n//.\n//. type(null); // => 'Null'\n//. type(true); // => 'Boolean'\n//. type([1, 2, 3]); // => 'Array'\n//. type(Identity); // => 'Function'\n//. type(Identity(0)); // => 'my-package/Identity'\n//. ```\n//.\n//.\n//. [1]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof\n//. [2]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString\n//. [3]: #algorithm\n\n(function(f) {\n\n 'use strict';\n\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = f();\n } else if (typeof define === 'function' && define.amd != null) {\n define([], f);\n } else {\n self.sanctuaryTypeIdentifiers = f();\n }\n\n}(function() {\n\n 'use strict';\n\n // $$type :: String\n var $$type = '@@type';\n\n // type :: Any -> String\n function type(x) {\n return x != null &&\n x.constructor != null &&\n x.constructor.prototype !== x &&\n typeof x.constructor[$$type] === 'string' ?\n x.constructor[$$type] :\n Object.prototype.toString.call(x).slice('[object '.length, -']'.length);\n }\n\n return type;\n\n}));\n","(function(f) {\n\n 'use strict';\n\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = f (require ('sanctuary-show'),\n require ('sanctuary-type-identifiers'));\n } else if (typeof define === 'function' && define.amd != null) {\n define (['sanctuary-show',\n 'sanctuary-type-identifiers'],\n f);\n } else {\n self.daggy = f (self.sanctuaryShow,\n self.sanctuaryTypeIdentifiers);\n }\n\n} (function(show, type) {\n\n 'use strict';\n\n // Names of prop used to store:\n // * name of variant of a sum type\n var TAG = '@@tag';\n // * array of arguments used to create a value (to speed up `cata`)\n var VALUES = '@@values';\n // * `@@type` of its returned results\n var TYPE = '@@type';\n // * `@@type` of variant constructor's returned results\n var RET_TYPE = '@@ret_type';\n // * names of all variants of a sum type\n var TAGS = '@@tags';\n\n var SHOW = '@@show';\n\n function tagged(typeName, fields) {\n var proto = {toString: tagged$toString};\n proto[SHOW] = tagged$toString;\n // this way we avoid named function\n var typeRep = makeConstructor (fields, proto);\n typeRep.toString = typeRepToString;\n typeRep.prototype = proto;\n typeRep.is = isType (typeName);\n typeRep.from = makeConstructorFromObject (fields, proto);\n typeRep[TYPE] = typeName;\n typeRep[SHOW] = typeRepToString;\n proto.constructor = typeRep;\n return typeRep;\n }\n\n function taggedSum(typeName, constructors) {\n var proto = {cata: sum$cata, toString: sum$toString};\n proto[SHOW] = sum$toString;\n\n var tags = Object.keys (constructors);\n var typeRep = proto.constructor = {\n 'toString': typeRepToString,\n 'prototype': proto,\n 'is': isType (typeName),\n '@@type': typeName,\n '@@tags': tags\n };\n typeRep[SHOW] = typeRepToString;\n tags.forEach (function(tag) {\n var fields = constructors[tag];\n var tagProto = Object.create (proto);\n defProp (tagProto, TAG, tag);\n if (fields.length === 0) {\n typeRep[tag] = makeValue (fields, tagProto, [], 0);\n typeRep[tag].is = sum$isUnit (typeRep[tag]);\n return;\n }\n typeRep[tag] = makeConstructor (fields, tagProto);\n typeRep[tag].is = sum$isVariant (typeRep[tag]);\n typeRep[tag][TAG] = tag;\n typeRep[tag][RET_TYPE] = typeName;\n typeRep[tag].toString = sum$ctrToString;\n typeRep[tag].from = makeConstructorFromObject (fields, tagProto);\n });\n return typeRep;\n }\n\n function sum$cata(fs) {\n var tags = this.constructor[TAGS];\n var tag;\n for (var idx = 0; idx < tags.length; idx += 1) {\n tag = tags[idx];\n if (!fs[tag]) {\n throw new TypeError (\n \"Constructors given to cata didn't include: \" + tag\n );\n }\n }\n return fs[this[TAG]].apply (fs, this[VALUES]);\n }\n\n function sum$ctrToString() {\n return this[RET_TYPE] + '.' + this[TAG];\n }\n\n function sum$toString() {\n return this.constructor[TYPE] + '.' +\n this[TAG] + arrToString (this[VALUES]);\n }\n\n function typeRepToString() {\n return this[TYPE];\n }\n\n function tagged$toString() {\n return this.constructor[TYPE] + arrToString (this[VALUES]);\n }\n\n function sum$isVariant(variant) {\n return function $sum$isVariant(val) {\n return Boolean (val) &&\n variant[TAG] === val[TAG] &&\n variant[RET_TYPE] === type (val);\n };\n }\n\n function sum$isUnit(unit) {\n return function $sum$isUnit(val) {\n return unit === val || Boolean (val) &&\n unit[TAG] === val[TAG] &&\n type (unit) === type (val);\n };\n }\n\n function isType(typeName) {\n return function $isType(val) {\n return typeName === type (val);\n };\n }\n\n function makeValue(fields, proto, values, argumentsLength) {\n if (argumentsLength !== fields.length) {\n throw new TypeError (\n 'Expected ' + fields.length + ' arguments, got ' + argumentsLength\n );\n }\n var obj = Object.create (proto);\n defProp (obj, VALUES, values);\n for (var idx = 0; idx < fields.length; idx += 1) {\n obj[fields[idx]] = values[idx];\n }\n return obj;\n }\n\n // adopted version of withValue from https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty\n function defProp(obj, prop, val) {\n var desc = defProp.desc || (\n defProp.desc = {\n enumerable: false,\n writable: false,\n configurable: false,\n value: null\n }\n );\n desc.value = val;\n Object.defineProperty (obj, prop, desc);\n }\n\n // optimised version of `arr.map(toString).join(', ')`\n function arrToString(arr) {\n if (arr.length === 0) return '';\n var str = '(' + show (arr[0]);\n for (var idx = 1; idx < arr.length; idx += 1) {\n str = str + ', ' + show (arr[idx]);\n }\n return str + ')';\n }\n\n function makeConstructor(fields, proto) {\n switch (fields.length) {\n /* eslint-disable max-len */\n case 1: return function(a) { return makeValue (fields, proto, [a], arguments.length); };\n case 2: return function(a, b) { return makeValue (fields, proto, [a, b], arguments.length); };\n case 3: return function(a, b, c) { return makeValue (fields, proto, [a, b, c], arguments.length); };\n case 4: return function(a, b, c, d) { return makeValue (fields, proto, [a, b, c, d], arguments.length); };\n case 5: return function(a, b, c, d, e) { return makeValue (fields, proto, [a, b, c, d, e], arguments.length); };\n case 6: return function(a, b, c, d, e, f) { return makeValue (fields, proto, [a, b, c, d, e, f], arguments.length); };\n case 7: return function(a, b, c, d, e, f, g) { return makeValue (fields, proto, [a, b, c, d, e, f, g], arguments.length); };\n case 8: return function(a, b, c, d, e, f, g, h) { return makeValue (fields, proto, [a, b, c, d, e, f, g, h], arguments.length); };\n case 9: return function(a, b, c, d, e, f, g, h, i) { return makeValue (fields, proto, [a, b, c, d, e, f, g, h, i], arguments.length); };\n case 10: return function(a, b, c, d, e, f, g, h, i, j) { return makeValue (fields, proto, [a, b, c, d, e, f, g, h, i, j], arguments.length); };\n /* eslint-enable max-len */\n default: return Object.defineProperty (\n function() {\n return makeValue (fields, proto, arguments, arguments.length);\n },\n 'length',\n {value: fields.length}\n );\n }\n }\n\n function makeConstructorFromObject(fields, proto) {\n return function(obj) {\n var values = [];\n for (var idx = 0; idx < fields.length; idx += 1) {\n var field = fields[idx];\n if (!(Object.prototype.hasOwnProperty.call (obj, field))) {\n throw new TypeError ('Missing field: ' + field);\n }\n values.push (obj[field]);\n }\n return makeValue (fields, proto, values, values.length);\n };\n }\n\n return {tagged: tagged, taggedSum: taggedSum};\n\n}));\n","/*\n @@@@@@@ @@@@@@@ @@\n @@ @@ @@ @@ @@@\n @@ @@@ @@ @@ @@ @@@ @@ @@ @@@@@@ @@ @@@ @@ @@@ @@@@\n @@ @@ @@@ @@ @@ @@ @@@ @@ @@@ @@ @@@ @@@ @@ @@@ @@\n @@ @@ @@@ @@ @@ @@ @@@ @@ @@@ @@ @@@ @@@ @@ @@@@@@@@\n @@ @@ @@@ @@ @@ @@ @@@ @@ @@@ @@ @@@ @@@ @@ @@@\n @@ @@@ @@@@@ @@ @@@ @@@@@ @@@ @@@ @@ @@@@@@ @@@@@\n @@ @@ @@ @@\n @@@@@@@ @@@@@@@ @@@@@ @@\n */\n//. # sanctuary-type-identifiers\n//.\n//. A type is a set of values. Boolean, for example, is the type comprising\n//. `true` and `false`. A value may be a member of multiple types (`42` is a\n//. member of Number, PositiveNumber, Integer, and many other types).\n//.\n//. In certain situations it is useful to divide JavaScript values into\n//. non-overlapping types. The language provides two constructs for this\n//. purpose: the [`typeof`][1] operator and [`Object.prototype.toString`][2].\n//. Each has pros and cons, but neither supports user-defined types.\n//.\n//. sanctuary-type-identifiers comprises:\n//.\n//. - an npm and browser -compatible package for deriving the\n//. _type identifier_ of a JavaScript value; and\n//. - a specification which authors may follow to specify type\n//. identifiers for their types.\n//.\n//. ### Specification\n//.\n//. For a type to be compatible with the algorithm:\n//.\n//. - every member of the type MUST have a `@@type` property\n//. (the _type identifier_); and\n//.\n//. - the type identifier MUST be a string primitive and SHOULD have\n//. format `'/[@]'`, where:\n//.\n//. - `` MUST consist of one or more characters, and\n//. SHOULD equal the name of the npm package which defines the\n//. type (including [scope][3] where appropriate);\n//.\n//. - `` MUST consist of one or more characters, and SHOULD\n//. be the unique name of the type; and\n//.\n//. - `` MUST consist of one or more digits, and SHOULD\n//. represent the version of the type.\n//.\n//. If the type identifier does not conform to the format specified above,\n//. it is assumed that the entire string represents the _name_ of the type;\n//. _namespace_ will be `null` and _version_ will be `0`.\n//.\n//. If the _version_ is not given, it is assumed to be `0`.\n\n(function(f) {\n\n 'use strict';\n\n /* istanbul ignore else */\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = f ();\n } else if (typeof define === 'function' && define.amd != null) {\n define ([], f);\n } else {\n self.sanctuaryTypeIdentifiers = f ();\n }\n\n} (function() {\n\n 'use strict';\n\n // $$type :: String\n var $$type = '@@type';\n\n // pattern :: RegExp\n var pattern = new RegExp (\n '^'\n + '([\\\\s\\\\S]+)' // \n + '/' // SOLIDUS (U+002F)\n + '([\\\\s\\\\S]+?)' // \n + '(?:' // optional non-capturing group {\n + '@' // COMMERCIAL AT (U+0040)\n + '([0-9]+)' // \n + ')?' // }\n + '$'\n );\n\n //. ### Usage\n //.\n //. ```javascript\n //. const type = require ('sanctuary-type-identifiers');\n //. ```\n //.\n //. ```javascript\n //. > const Identity$prototype = {\n //. . '@@type': 'my-package/Identity@1',\n //. . '@@show': function() {\n //. . return 'Identity (' + show (this.value) + ')';\n //. . }\n //. . }\n //.\n //. > const Identity = value =>\n //. . Object.assign (Object.create (Identity$prototype), {value})\n //.\n //. > type (Identity (0))\n //. 'my-package/Identity@1'\n //.\n //. > type.parse (type (Identity (0)))\n //. {namespace: 'my-package', name: 'Identity', version: 1}\n //. ```\n //.\n //. ### API\n //.\n //# type :: Any -> String\n //.\n //. Takes any value and returns a string which identifies its type. If the\n //. value conforms to the [specification][4], the custom type identifier is\n //. returned.\n //.\n //. ```javascript\n //. > type (null)\n //. 'Null'\n //.\n //. > type (true)\n //. 'Boolean'\n //.\n //. > type (Identity (0))\n //. 'my-package/Identity@1'\n //. ```\n function type(x) {\n return x != null &&\n x.constructor != null &&\n x.constructor.prototype !== x &&\n typeof x[$$type] === 'string' ?\n x[$$type] :\n (Object.prototype.toString.call (x)).slice ('[object '.length,\n -']'.length);\n }\n\n //# type.parse :: String -> { namespace :: Nullable String, name :: String, version :: Number }\n //.\n //. Takes any string and parses it according to the [specification][4],\n //. returning an object with `namespace`, `name`, and `version` fields.\n //.\n //. ```javascript\n //. > type.parse ('my-package/List@2')\n //. {namespace: 'my-package', name: 'List', version: 2}\n //.\n //. > type.parse ('nonsense!')\n //. {namespace: null, name: 'nonsense!', version: 0}\n //.\n //. > type.parse (type (Identity (0)))\n //. {namespace: 'my-package', name: 'Identity', version: 1}\n //. ```\n type.parse = function parse(s) {\n var namespace = null;\n var name = s;\n var version = 0;\n var groups = pattern.exec (s);\n if (groups != null) {\n namespace = groups[1];\n name = groups[2];\n if (groups[3] != null) version = Number (groups[3]);\n }\n return {namespace: namespace, name: name, version: version};\n };\n\n return type;\n\n}));\n\n//. [1]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof\n//. [2]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString\n//. [3]: https://docs.npmjs.com/misc/scope\n//. [4]: #specification\n","export var FL = {\n alt: 'fantasy-land/alt',\n ap: 'fantasy-land/ap',\n bimap: 'fantasy-land/bimap',\n chain: 'fantasy-land/chain',\n chainRec: 'fantasy-land/chainRec',\n map: 'fantasy-land/map',\n of: 'fantasy-land/of',\n zero: 'fantasy-land/zero'\n};\n\nexport var ordinal = ['first', 'second', 'third', 'fourth', 'fifth'];\n\nexport var namespace = 'fluture';\nexport var name = 'Future';\nexport var version = 5;\n\nexport var $$type = namespace + '/' + name + '@' + version;\n","export function List(head, tail){\n this.head = head;\n this.tail = tail;\n}\n\nList.prototype.toJSON = function(){\n return toArray(this);\n};\n\nexport var nil = new List(null, null);\nnil.tail = nil;\n\nexport function isNil(list){\n return list.tail === list;\n}\n\n// cons :: (a, List a) -> List a\n// -- O(1) append operation\nexport function cons(head, tail){\n return new List(head, tail);\n}\n\n// reverse :: List a -> List a\n// -- O(n) list reversal\nexport function reverse(xs){\n var ys = nil, tail = xs;\n while(!isNil(tail)){\n ys = cons(tail.head, ys);\n tail = tail.tail;\n }\n return ys;\n}\n\n// cat :: (List a, List a) -> List a\n// -- O(n) list concatenation\nexport function cat(xs, ys){\n var zs = ys, tail = reverse(xs);\n while(!isNil(tail)){\n zs = cons(tail.head, zs);\n tail = tail.tail;\n }\n return zs;\n}\n\n// toArray :: List a -> Array a\n// -- O(n) list to Array\nexport function toArray(xs){\n var tail = xs, arr = [];\n while(!isNil(tail)){\n arr.push(tail.head);\n tail = tail.tail;\n }\n return arr;\n}\n","import {ordinal} from './const.js';\nimport {cons} from './list.js';\n\n/* c8 ignore next */\nvar captureStackTrace = Error.captureStackTrace || captureStackTraceFallback;\nvar _debug = debugHandleNone;\n\nexport {captureStackTrace};\n\nexport function debugMode(debug){\n _debug = debug ? debugHandleAll : debugHandleNone;\n}\n\nexport function debugHandleNone(x){\n return x;\n}\n\nexport function debugHandleAll(x, fn, a, b, c){\n return fn(a, b, c);\n}\n\nexport function debug(x, fn, a, b, c){\n return _debug(x, fn, a, b, c);\n}\n\nexport function captureContext(previous, tag, fn){\n return debug(previous, debugCaptureContext, previous, tag, fn);\n}\n\nexport function debugCaptureContext(previous, tag, fn){\n var context = {tag: tag, name: ' from ' + tag + ':'};\n captureStackTrace(context, fn);\n return cons(context, previous);\n}\n\nexport function captureApplicationContext(context, n, f){\n return debug(context, debugCaptureApplicationContext, context, n, f);\n}\n\nexport function debugCaptureApplicationContext(context, n, f){\n return debugCaptureContext(context, ordinal[n - 1] + ' application of ' + f.name, f);\n}\n\nexport function captureStackTraceFallback(x){\n var e = new Error;\n if(typeof e.stack === 'string'){\n x.stack = x.name + '\\n' + e.stack.split('\\n').slice(1).join('\\n');\n /* c8 ignore next 3 */\n }else{\n x.stack = x.name;\n }\n}\n","export {default as show} from 'sanctuary-show';\n\n/* c8 ignore next */\nvar setImmediate = typeof setImmediate === 'undefined' ? setImmediateFallback : setImmediate;\n\nexport function noop(){}\nexport function moop(){ return this }\nexport function call(f, x){ return f(x) }\n\nexport function setImmediateFallback(f, x){\n return setTimeout(f, 0, x);\n}\n\nexport function raise(x){\n setImmediate(function rethrowErrorDelayedToEscapePromiseCatch(){\n throw x;\n });\n}\n","import {show} from './utils.js';\nimport {ordinal, namespace, name, version} from './const.js';\nimport type from 'sanctuary-type-identifiers';\nimport {nil, cat} from './list.js';\nimport {captureStackTrace} from './debug.js';\n\nfunction showArg(x){\n return show(x) + ' :: ' + type.parse(type(x)).name;\n}\n\nexport function error(message){\n return new Error(message);\n}\n\nexport function typeError(message){\n return new TypeError(message);\n}\n\nexport function invalidArgument(it, at, expected, actual){\n return typeError(\n it + '() expects its ' + ordinal[at] + ' argument to ' + expected + '.' +\n '\\n Actual: ' + showArg(actual)\n );\n}\n\nexport function invalidArgumentOf(expected){\n return function(it, at, actual){\n return invalidArgument(it, at, expected, actual);\n };\n}\n\nexport function invalidContext(it, actual){\n return typeError(\n it + '() was invoked outside the context of a Future. You might want to use'\n + ' a dispatcher instead\\n Called on: ' + show(actual)\n );\n}\n\nexport function invalidArity(f, args){\n return new TypeError(\n f.name + '() expects to be called with a single argument per invocation\\n' +\n ' Saw: ' + args.length + ' arguments' +\n Array.prototype.slice.call(args).map(function(arg, i){\n return '\\n ' + (\n ordinal[i] ?\n ordinal[i].charAt(0).toUpperCase() + ordinal[i].slice(1) :\n 'Argument ' + String(i + 1)\n ) + ': ' + showArg(arg);\n }).join('')\n );\n}\n\nfunction invalidNamespace(m, x){\n return (\n 'The Future was not created by ' + namespace + '. '\n + 'Make sure you transform other Futures to ' + namespace + ' Futures. '\n + 'Got ' + (x ? ('a Future from ' + x) : 'an unscoped Future') + '.'\n + '\\n See: https://github.com/fluture-js/Fluture#casting-futures'\n );\n}\n\nfunction invalidVersion(m, x){\n return (\n 'The Future was created by ' + (x < version ? 'an older' : 'a newer')\n + ' version of ' + namespace + '. '\n + 'This means that one of the sources which creates Futures is outdated. '\n + 'Update this source, or transform its created Futures to be compatible.'\n + '\\n See: https://github.com/fluture-js/Fluture#casting-futures'\n );\n}\n\nexport function invalidFuture(desc, m, s){\n var id = type.parse(type(m));\n var info = id.name === name ? '\\n' + (\n id.namespace !== namespace ? invalidNamespace(m, id.namespace)\n : id.version !== version ? invalidVersion(m, id.version)\n : 'Nothing seems wrong. Contact the Fluture maintainers.') : '';\n return typeError(\n desc + ' to be a valid Future.' + info + '\\n' +\n ' Actual: ' + show(m) + ' :: ' + id.name + (s || '')\n );\n}\n\nexport function invalidFutureArgument(it, at, m, s){\n return invalidFuture(it + '() expects its ' + ordinal[at] + ' argument', m, s);\n}\n\nexport function ensureError(value, fn){\n var message;\n try{\n if(value instanceof Error) return value;\n message = 'A Non-Error was thrown from a Future: ' + show(value);\n }catch (_){\n message = 'Something was thrown from a Future, but it could not be converted to String';\n }\n var e = error(message);\n captureStackTrace(e, fn);\n return e;\n}\n\nexport function assignUnenumerable(o, prop, value){\n Object.defineProperty(o, prop, {value: value, writable: true, configurable: true});\n}\n\nexport function wrapException(caught, callingFuture){\n var origin = ensureError(caught, wrapException);\n var context = cat(origin.context || nil, callingFuture.context);\n var e = error(origin.message);\n assignUnenumerable(e, 'future', origin.future || callingFuture);\n assignUnenumerable(e, 'reason', origin.reason || origin);\n assignUnenumerable(e, 'stack', e.reason.stack);\n return withExtraContext(e, context);\n}\n\nexport function withExtraContext(e, context){\n assignUnenumerable(e, 'context', context);\n assignUnenumerable(e, 'stack', e.stack + contextToStackTrace(context));\n return e;\n}\n\nexport function contextToStackTrace(context){\n var stack = '', tail = context;\n while(tail !== nil){\n stack = stack + '\\n' + tail.head.stack;\n tail = tail.tail;\n }\n return stack;\n}\n","import {FL} from './const.js';\n\nexport function isFunction(f){\n return typeof f === 'function';\n}\n\nexport function isThenable(m){\n return m instanceof Promise || m != null && isFunction(m.then);\n}\n\nexport function isBoolean(f){\n return typeof f === 'boolean';\n}\n\nexport function isNumber(f){\n return typeof f === 'number';\n}\n\nexport function isUnsigned(n){\n return (n === Infinity || isNumber(n) && n > 0 && n % 1 === 0);\n}\n\nexport function isObject(o){\n return o !== null && typeof o === 'object';\n}\n\nexport function isIterator(i){\n return isObject(i) && isFunction(i.next);\n}\n\nexport function isArray(x){\n return Array.isArray(x);\n}\n\nexport function hasMethod(method, x){\n return x != null && isFunction(x[method]);\n}\n\nexport function isFunctor(x){\n return hasMethod(FL.map, x);\n}\n\nexport function isAlt(x){\n return isFunctor(x) && hasMethod(FL.alt, x);\n}\n\nexport function isApply(x){\n return isFunctor(x) && hasMethod(FL.ap, x);\n}\n\nexport function isBifunctor(x){\n return isFunctor(x) && hasMethod(FL.bimap, x);\n}\n\nexport function isChain(x){\n return isApply(x) && hasMethod(FL.chain, x);\n}\n","import {isObject, isBoolean} from './predicates.js';\n\nexport function Next(x){\n return {done: false, value: x};\n}\n\nexport function Done(x){\n return {done: true, value: x};\n}\n\nexport function isIteration(x){\n return isObject(x) && isBoolean(x.done);\n}\n","/*eslint no-cond-assign:0, no-constant-condition:0 */\nimport type from 'sanctuary-type-identifiers';\n\nimport {FL, $$type} from './internal/const.js';\nimport {captureContext, captureApplicationContext, captureStackTrace} from './internal/debug.js';\nimport {\n invalidArgument,\n invalidArgumentOf,\n invalidArity,\n invalidFuture,\n invalidFutureArgument,\n typeError,\n withExtraContext,\n wrapException\n} from './internal/error.js';\nimport {Next, Done} from './internal/iteration.js';\nimport {nil, cons, isNil, reverse, toArray} from './internal/list.js';\nimport {isFunction, isUnsigned} from './internal/predicates.js';\nimport {show, noop, call, moop} from './internal/utils.js';\n\nfunction alwaysTrue(){\n return true;\n}\n\nfunction getArgs(it){\n var args = new Array(it.arity);\n for(var i = 1; i <= it.arity; i++){\n args[i - 1] = it['$' + String(i)];\n }\n return args;\n}\n\nfunction showArg(arg){\n return ' (' + show(arg) + ')';\n}\n\nexport var any = {pred: alwaysTrue, error: invalidArgumentOf('be anything')};\nexport var func = {pred: isFunction, error: invalidArgumentOf('be a Function')};\nexport var future = {pred: isFuture, error: invalidFutureArgument};\nexport var positiveInteger = {pred: isUnsigned, error: invalidArgumentOf('be a positive Integer')};\n\nexport function application(n, f, type, args, prev){\n if(args.length < 2 && type.pred(args[0])) return captureApplicationContext(prev, n, f);\n var e = args.length > 1 ? invalidArity(f, args) : type.error(f.name, n - 1, args[0]);\n captureStackTrace(e, f);\n throw withExtraContext(e, prev);\n}\n\nexport function application1(f, type, args){\n return application(1, f, type, args, nil);\n}\n\nexport function Future(computation){\n var context = application1(Future, func, arguments);\n return new Computation(context, computation);\n}\n\nexport function isFuture(x){\n return x instanceof Future || type(x) === $$type;\n}\n\n// Compliance with sanctuary-type-identifiers versions 1 and 2.\n// To prevent sanctuary-type-identifiers version 3 from identifying 'Future'\n// as being of the type denoted by $$type, we ensure that\n// Future.constructor.prototype is equal to Future.\nFuture['@@type'] = $$type;\nFuture.constructor = {prototype: Future};\n\nFuture[FL.of] = resolve;\nFuture[FL.chainRec] = chainRec;\n\nFuture.prototype['@@type'] = $$type;\n\nFuture.prototype['@@show'] = function Future$show(){\n return this.toString();\n};\n\nFuture.prototype.pipe = function Future$pipe(f){\n if(!isFunction(f)) throw invalidArgument('Future#pipe', 0, 'be a Function', f);\n return f(this);\n};\n\nFuture.prototype[FL.ap] = function Future$FL$ap(other){\n var context = captureContext(nil, 'a Fantasy Land dispatch to ap', Future$FL$ap);\n return other._transform(new ApTransformation(context, this));\n};\n\nFuture.prototype[FL.map] = function Future$FL$map(mapper){\n var context = captureContext(nil, 'a Fantasy Land dispatch to map', Future$FL$map);\n return this._transform(new MapTransformation(context, mapper));\n};\n\nFuture.prototype[FL.bimap] = function Future$FL$bimap(lmapper, rmapper){\n var context = captureContext(nil, 'a Fantasy Land dispatch to bimap', Future$FL$bimap);\n return this._transform(new BimapTransformation(context, lmapper, rmapper));\n};\n\nFuture.prototype[FL.chain] = function Future$FL$chain(mapper){\n var context = captureContext(nil, 'a Fantasy Land dispatch to chain', Future$FL$chain);\n return this._transform(new ChainTransformation(context, mapper));\n};\n\nFuture.prototype[FL.alt] = function Future$FL$alt(other){\n var context = captureContext(nil, 'a Fantasy Land dispatch to alt', Future$FL$alt);\n return this._transform(new AltTransformation(context, other));\n};\n\nFuture.prototype.extractLeft = function Future$extractLeft(){\n return [];\n};\n\nFuture.prototype.extractRight = function Future$extractRight(){\n return [];\n};\n\nFuture.prototype._transform = function Future$transform(transformation){\n return new Transformer(transformation.context, this, cons(transformation, nil));\n};\n\nFuture.prototype.isTransformer = false;\nFuture.prototype.context = nil;\nFuture.prototype.arity = 0;\nFuture.prototype.name = 'future';\n\nFuture.prototype.toString = function Future$toString(){\n return this.name + getArgs(this).map(showArg).join('');\n};\n\nFuture.prototype.toJSON = function Future$toJSON(){\n return {$: $$type, kind: 'interpreter', type: this.name, args: getArgs(this)};\n};\n\nexport function createInterpreter(arity, name, interpret){\n var Interpreter = function(context, $1, $2, $3){\n this.context = context;\n this.$1 = $1;\n this.$2 = $2;\n this.$3 = $3;\n };\n\n Interpreter.prototype = Object.create(Future.prototype);\n Interpreter.prototype.arity = arity;\n Interpreter.prototype.name = name;\n Interpreter.prototype._interpret = interpret;\n\n return Interpreter;\n}\n\nexport var Computation =\ncreateInterpreter(1, 'Future', function Computation$interpret(rec, rej, res){\n var computation = this.$1, open = false, cancel = noop, cont = function(){ open = true };\n try{\n cancel = computation(function Computation$rej(x){\n cont = function Computation$rej$cont(){\n open = false;\n rej(x);\n };\n if(open){\n cont();\n }\n }, function Computation$res(x){\n cont = function Computation$res$cont(){\n open = false;\n res(x);\n };\n if(open){\n cont();\n }\n });\n }catch(e){\n rec(wrapException(e, this));\n return noop;\n }\n if(!(isFunction(cancel) && cancel.length === 0)){\n rec(wrapException(typeError(\n 'The computation was expected to return a nullary cancellation function\\n' +\n ' Actual: ' + show(cancel)\n ), this));\n return noop;\n }\n cont();\n return function Computation$cancel(){\n if(open){\n open = false;\n cancel && cancel();\n }\n };\n});\n\nexport var Never = createInterpreter(0, 'never', function Never$interpret(){\n return noop;\n});\n\nNever.prototype._isNever = true;\n\nexport var never = new Never(nil);\n\nexport function isNever(x){\n return isFuture(x) && x._isNever === true;\n}\n\nexport var Crash = createInterpreter(1, 'crash', function Crash$interpret(rec){\n rec(this.$1);\n return noop;\n});\n\nexport function crash(x){\n return new Crash(application1(crash, any, arguments), x);\n}\n\nexport var Reject = createInterpreter(1, 'reject', function Reject$interpret(rec, rej){\n rej(this.$1);\n return noop;\n});\n\nReject.prototype.extractLeft = function Reject$extractLeft(){\n return [this.$1];\n};\n\nexport function reject(x){\n return new Reject(application1(reject, any, arguments), x);\n}\n\nexport var Resolve = createInterpreter(1, 'resolve', function Resolve$interpret(rec, rej, res){\n res(this.$1);\n return noop;\n});\n\nResolve.prototype.extractRight = function Resolve$extractRight(){\n return [this.$1];\n};\n\nexport function resolve(x){\n return new Resolve(application1(resolve, any, arguments), x);\n}\n\n//Note: This function is not curried because it's only used to satisfy the\n// Fantasy Land ChainRec specification.\nexport function chainRec(step, init){\n return resolve(Next(init))._transform(new ChainTransformation(nil, function chainRec$recur(o){\n return o.done ?\n resolve(o.value) :\n step(Next, Done, o.value)._transform(new ChainTransformation(nil, chainRec$recur));\n }));\n}\n\nexport var Transformer =\ncreateInterpreter(2, 'transform', function Transformer$interpret(rec, rej, res){\n\n //These are the cold, and hot, transformation stacks. The cold actions are those that\n //have yet to run parallel computations, and hot are those that have.\n var cold = nil, hot = nil;\n\n //These combined variables define our current state.\n // future = the future we are currently forking\n // transformation = the transformation to be informed when the future settles\n // cancel = the cancel function of the current future\n // settled = a boolean indicating whether a new tick should start\n // async = a boolean indicating whether we are awaiting a result asynchronously\n var future, transformation, cancel = noop, settled, async = true, it;\n\n //Takes a transformation from the top of the hot stack and returns it.\n function nextHot(){\n var x = hot.head;\n hot = hot.tail;\n return x;\n }\n\n //Takes a transformation from the top of the cold stack and returns it.\n function nextCold(){\n var x = cold.head;\n cold = cold.tail;\n return x;\n }\n\n //This function is called with a future to use in the next tick.\n //Here we \"flatten\" the actions of another Sequence into our own actions,\n //this is the magic that allows for infinitely stack safe recursion because\n //actions like ChainAction will return a new Sequence.\n //If we settled asynchronously, we call drain() directly to run the next tick.\n function settle(m){\n settled = true;\n future = m;\n if(future.isTransformer){\n var tail = future.$2;\n while(!isNil(tail)){\n cold = cons(tail.head, cold);\n tail = tail.tail;\n }\n future = future.$1;\n }\n if(async) drain();\n }\n\n //This function serves as a rejection handler for our current future.\n //It will tell the current transformation that the future rejected, and it will\n //settle the current tick with the transformation's answer to that.\n function rejected(x){\n settle(transformation.rejected(x));\n }\n\n //This function serves as a resolution handler for our current future.\n //It will tell the current transformation that the future resolved, and it will\n //settle the current tick with the transformation's answer to that.\n function resolved(x){\n settle(transformation.resolved(x));\n }\n\n //This function is passed into actions when they are \"warmed up\".\n //If the transformation decides that it has its result, without the need to await\n //anything else, then it can call this function to force \"early termination\".\n //When early termination occurs, all actions which were stacked prior to the\n //terminator will be skipped. If they were already hot, they will also be\n //sent a cancel signal so they can cancel their own concurrent computations,\n //as their results are no longer needed.\n function early(m, terminator){\n cancel();\n cold = nil;\n if(async && transformation !== terminator){\n transformation.cancel();\n while((it = nextHot()) && it !== terminator) it.cancel();\n }\n settle(m);\n }\n\n //This will cancel the current Future, the current transformation, and all stacked hot actions.\n function Sequence$cancel(){\n cancel();\n transformation && transformation.cancel();\n while(it = nextHot()) it.cancel();\n }\n\n //This function is called when an exception is caught.\n function exception(e){\n Sequence$cancel();\n settled = true;\n cold = hot = nil;\n var error = wrapException(e, future);\n future = never;\n rec(error);\n }\n\n //This function serves to kickstart concurrent computations.\n //Takes all actions from the cold stack in reverse order, and calls run() on\n //each of them, passing them the \"early\" function. If any of them settles (by\n //calling early()), we abort. After warming up all actions in the cold queue,\n //we warm up the current transformation as well.\n function warmupActions(){\n cold = reverse(cold);\n while(cold !== nil){\n it = cold.head.run(early);\n if(settled) return;\n hot = cons(it, hot);\n cold = cold.tail;\n }\n transformation = transformation.run(early);\n }\n\n //This function represents our main execution loop. By \"tick\", we've been\n //referring to the execution of one iteration in the while-loop below.\n function drain(){\n async = false;\n while(true){\n settled = false;\n if(transformation = nextCold()){\n cancel = future._interpret(exception, rejected, resolved);\n if(!settled) warmupActions();\n }else if(transformation = nextHot()){\n cancel = future._interpret(exception, rejected, resolved);\n }else break;\n if(settled) continue;\n async = true;\n return;\n }\n cancel = future._interpret(exception, rej, res);\n }\n\n //Start the execution loop.\n settle(this);\n\n //Return the cancellation function.\n return Sequence$cancel;\n\n});\n\nTransformer.prototype.isTransformer = true;\n\nTransformer.prototype._transform = function Transformer$_transform(transformation){\n return new Transformer(transformation.context, this.$1, cons(transformation, this.$2));\n};\n\nTransformer.prototype.toString = function Transformer$toString(){\n return toArray(reverse(this.$2)).reduce(function(str, action){\n return action.name + getArgs(action).map(showArg).join('') + ' (' + str + ')';\n }, this.$1.toString());\n};\n\nfunction BaseTransformation$rejected(x){\n this.cancel();\n return new Reject(this.context, x);\n}\n\nfunction BaseTransformation$resolved(x){\n this.cancel();\n return new Resolve(this.context, x);\n}\n\nfunction BaseTransformation$toJSON(){\n return {$: $$type, kind: 'transformation', type: this.name, args: getArgs(this)};\n}\n\nexport var BaseTransformation = {\n rejected: BaseTransformation$rejected,\n resolved: BaseTransformation$resolved,\n run: moop,\n cancel: noop,\n context: nil,\n arity: 0,\n name: 'transform',\n toJSON: BaseTransformation$toJSON\n};\n\nfunction wrapHandler(handler){\n return function transformationHandler(x){\n var m;\n try{\n m = handler.call(this, x);\n }catch(e){\n return new Crash(this.context, e);\n }\n if(isFuture(m)){\n return m;\n }\n return new Crash(this.context, invalidFuture(\n this.name + ' expects the return value from the function it\\'s given', m,\n '\\n When called with: ' + show(x)\n ));\n };\n}\n\nexport function createTransformation(arity, name, prototype){\n var Transformation = function(context, $1, $2){\n this.context = context;\n this.$1 = $1;\n this.$2 = $2;\n };\n\n Transformation.prototype = Object.create(BaseTransformation);\n Transformation.prototype.arity = arity;\n Transformation.prototype.name = name;\n\n if(typeof prototype.rejected === 'function'){\n Transformation.prototype.rejected = wrapHandler(prototype.rejected);\n }\n\n if(typeof prototype.resolved === 'function'){\n Transformation.prototype.resolved = wrapHandler(prototype.resolved);\n }\n\n if(typeof prototype.run === 'function'){\n Transformation.prototype.run = prototype.run;\n }\n\n return Transformation;\n}\n\nexport var ApTransformation = createTransformation(1, 'ap', {\n resolved: function ApTransformation$resolved(f){\n if(isFunction(f)) return this.$1._transform(new MapTransformation(this.context, f));\n throw typeError(\n 'ap expects the second Future to resolve to a Function\\n' +\n ' Actual: ' + show(f)\n );\n }\n});\n\nexport var AltTransformation = createTransformation(1, 'alt', {\n rejected: function AltTransformation$rejected(){ return this.$1 }\n});\n\nexport var MapTransformation = createTransformation(1, 'map', {\n resolved: function MapTransformation$resolved(x){\n return new Resolve(this.context, call(this.$1, x));\n }\n});\n\nexport var BimapTransformation = createTransformation(2, 'bimap', {\n rejected: function BimapTransformation$rejected(x){\n return new Reject(this.context, call(this.$1, x));\n },\n resolved: function BimapTransformation$resolved(x){\n return new Resolve(this.context, call(this.$2, x));\n }\n});\n\nexport var ChainTransformation = createTransformation(1, 'chain', {\n resolved: function ChainTransformation$resolved(x){ return call(this.$1, x) }\n});\n","import {\n any,\n application,\n application1,\n createInterpreter,\n never,\n positiveInteger\n} from './future.js';\n\nexport var After = createInterpreter(2, 'after', function After$interpret(rec, rej, res){\n var id = setTimeout(res, this.$1, this.$2);\n return function After$cancel(){ clearTimeout(id) };\n});\n\nAfter.prototype.extractRight = function After$extractRight(){\n return [this.$2];\n};\n\nfunction alwaysNever(_){\n return never;\n}\n\nexport function after(time){\n var context1 = application1(after, positiveInteger, arguments);\n return time === Infinity ? alwaysNever : (function after(value){\n var context2 = application(2, after, any, arguments, context1);\n return new After(context2, time, value);\n });\n}\n","import {createTransformation, application1, application, future} from './future.js';\n\nexport var AndTransformation = createTransformation(1, 'and', {\n resolved: function AndTransformation$resolved(){ return this.$1 }\n});\n\nexport function and(left){\n var context1 = application1(and, future, arguments);\n return function and(right){\n var context2 = application(2, and, future, arguments, context1);\n return right._transform(new AndTransformation(context2, left));\n };\n}\n","import {wrapException, typeError} from './internal/error.js';\nimport {isThenable} from './internal/predicates.js';\nimport {noop, show} from './internal/utils.js';\nimport {createInterpreter, application1, application, func, any} from './future.js';\n\nfunction invalidPromise(p, f, a){\n return typeError(\n 'encaseP() expects the function it\\'s given to return a Promise/Thenable'\n + '\\n Actual: ' + show(p) + '\\n From calling: ' + show(f)\n + '\\n With: ' + show(a)\n );\n}\n\nexport var EncaseP = createInterpreter(2, 'encaseP', function EncaseP$interpret(rec, rej, res){\n var open = true, fn = this.$1, arg = this.$2, p;\n try{\n p = fn(arg);\n }catch(e){\n rec(wrapException(e, this));\n return noop;\n }\n if(!isThenable(p)){\n rec(wrapException(invalidPromise(p, fn, arg), this));\n return noop;\n }\n p.then(function EncaseP$res(x){\n if(open){\n open = false;\n res(x);\n }\n }, function EncaseP$rej(x){\n if(open){\n open = false;\n rej(x);\n }\n });\n return function EncaseP$cancel(){ open = false };\n});\n\nexport function encaseP(f){\n var context1 = application1(encaseP, func, arguments);\n return function encaseP(x){\n var context2 = application(2, encaseP, any, arguments, context1);\n return new EncaseP(context2, f, x);\n };\n}\n","import {noop} from './internal/utils.js';\nimport {createInterpreter, application1, application, func, any} from './future.js';\n\nexport var Encase = createInterpreter(2, 'encase', function Encase$interpret(rec, rej, res){\n var fn = this.$1, r;\n try{ r = fn(this.$2) }catch(e){ rej(e); return noop }\n res(r);\n return noop;\n});\n\nexport function encase(f){\n var context1 = application1(encase, func, arguments);\n return function encase(x){\n var context2 = application(2, encase, any, arguments, context1);\n return new Encase(context2, f, x);\n };\n}\n","import {createTransformation, future, application1, application, func} from './future.js';\nimport {call} from './internal/utils.js';\n\nexport var BichainTransformation = createTransformation(2, 'bichain', {\n rejected: function BichainTransformation$rejected(x){ return call(this.$1, x) },\n resolved: function BichainTransformation$resolved(x){ return call(this.$2, x) }\n});\n\nexport function bichain(f){\n var context1 = application1(bichain, func, arguments);\n return function bichain(g){\n var context2 = application(2, bichain, func, arguments, context1);\n return function bichain(m){\n var context3 = application(3, bichain, future, arguments, context2);\n return m._transform(new BichainTransformation(context3, f, g));\n };\n };\n}\n","import {noop} from './utils.js';\nimport {createTransformation, Future, crash, reject, resolve} from '../future.js';\n\nfunction Eager(future){\n var _this = this;\n _this.rec = noop;\n _this.rej = noop;\n _this.res = noop;\n _this.crashed = false;\n _this.rejected = false;\n _this.resolved = false;\n _this.value = null;\n _this.cancel = future._interpret(function Eager$crash(x){\n _this.value = x;\n _this.crashed = true;\n _this.cancel = noop;\n _this.rec(x);\n }, function Eager$reject(x){\n _this.value = x;\n _this.rejected = true;\n _this.cancel = noop;\n _this.rej(x);\n }, function Eager$resolve(x){\n _this.value = x;\n _this.resolved = true;\n _this.cancel = noop;\n _this.res(x);\n });\n}\n\nEager.prototype = Object.create(Future.prototype);\n\nEager.prototype._interpret = function Eager$interpret(rec, rej, res){\n if(this.crashed) rec(this.value);\n else if(this.rejected) rej(this.value);\n else if(this.resolved) res(this.value);\n else{\n this.rec = rec;\n this.rej = rej;\n this.res = res;\n }\n return this.cancel;\n};\n\nexport function earlyCrash(early, x){\n early(crash(x));\n}\n\nexport function earlyReject(early, x){\n early(reject(x));\n}\n\nexport function earlyResolve(early, x){\n early(resolve(x));\n}\n\nexport function createParallelTransformation(name, rec, rej, res, prototype){\n var ParallelTransformation = createTransformation(1, name, Object.assign({\n run: function Parallel$run(early){\n var eager = new Eager(this.$1);\n var transformation = new ParallelTransformation(this.context, eager);\n function Parallel$early(m){ early(m, transformation) }\n transformation.cancel = eager._interpret(\n function Parallel$rec(x){ rec(Parallel$early, x) },\n function Parallel$rej(x){ rej(Parallel$early, x) },\n function Parallel$res(x){ res(Parallel$early, x) }\n );\n return transformation;\n }\n }, prototype));\n return ParallelTransformation;\n}\n","import {createParallelTransformation, earlyCrash, earlyReject} from './internal/parallel.js';\nimport {noop} from './internal/utils.js';\nimport {createTransformation, Resolve, application1, application, future} from './future.js';\n\nexport var PairTransformation = createTransformation(1, 'pair', {\n resolved: function PairTransformation$resolved(x){\n return new Resolve(this.context, [x, this.$1]);\n }\n});\n\nexport var BothTransformation =\ncreateParallelTransformation('both', earlyCrash, earlyReject, noop, {\n resolved: function BothTransformation$resolved(x){\n return this.$1._transform(new PairTransformation(this.context, x));\n }\n});\n\nexport function both(left){\n var context1 = application1(both, future, arguments);\n return function both(right){\n var context2 = application(2, both, future, arguments, context1);\n return right._transform(new BothTransformation(context2, left));\n };\n}\n","import {noop} from './internal/utils.js';\nimport {createInterpreter, application1, future} from './future.js';\n\nexport var Cold = 0;\nexport var Pending = 1;\nexport var Crashed = 2;\nexport var Rejected = 3;\nexport var Resolved = 4;\n\nexport function Queued(rec, rej, res){\n this[Crashed] = rec;\n this[Rejected] = rej;\n this[Resolved] = res;\n}\n\nexport var Cache = createInterpreter(1, 'cache', function Cache$interpret(rec, rej, res){\n var cancel = noop;\n\n switch(this._state){\n /* c8 ignore next 4 */\n case Pending: cancel = this._addToQueue(rec, rej, res); break;\n case Crashed: rec(this._value); break;\n case Rejected: rej(this._value); break;\n case Resolved: res(this._value); break;\n default:\n this._queue = [];\n cancel = this._addToQueue(rec, rej, res);\n this.run();\n }\n\n return cancel;\n});\n\nCache.prototype._cancel = noop;\nCache.prototype._queue = null;\nCache.prototype._queued = 0;\nCache.prototype._value = undefined;\nCache.prototype._state = Cold;\n\nCache.prototype.extractLeft = function Cache$extractLeft(){\n return this._state === Rejected ? [this._value] : [];\n};\n\nCache.prototype.extractRight = function Cache$extractRight(){\n return this._state === Resolved ? [this._value] : [];\n};\n\nCache.prototype._addToQueue = function Cache$addToQueue(rec, rej, res){\n var _this = this;\n if(_this._state > Pending) return noop;\n var i = _this._queue.push(new Queued(rec, rej, res)) - 1;\n _this._queued = _this._queued + 1;\n\n return function Cache$removeFromQueue(){\n if(_this._state > Pending) return;\n _this._queue[i] = undefined;\n _this._queued = _this._queued - 1;\n if(_this._queued === 0) _this.reset();\n };\n};\n\nCache.prototype._drainQueue = function Cache$drainQueue(){\n if(this._state <= Pending) return;\n if(this._queued === 0) return;\n var queue = this._queue;\n var length = queue.length;\n var state = this._state;\n var value = this._value;\n\n for(var i = 0; i < length; i++){\n queue[i] && queue[i][state](value);\n queue[i] = undefined;\n }\n\n this._queue = undefined;\n this._queued = 0;\n};\n\nCache.prototype.crash = function Cache$crash(error){\n if(this._state > Pending) return;\n this._value = error;\n this._state = Crashed;\n this._drainQueue();\n};\n\nCache.prototype.reject = function Cache$reject(reason){\n if(this._state > Pending) return;\n this._value = reason;\n this._state = Rejected;\n this._drainQueue();\n};\n\nCache.prototype.resolve = function Cache$resolve(value){\n if(this._state > Pending) return;\n this._value = value;\n this._state = Resolved;\n this._drainQueue();\n};\n\nCache.prototype.run = function Cache$run(){\n var _this = this;\n if(_this._state > Cold) return;\n _this._state = Pending;\n _this._cancel = _this.$1._interpret(\n function Cache$fork$rec(x){ _this.crash(x) },\n function Cache$fork$rej(x){ _this.reject(x) },\n function Cache$fork$res(x){ _this.resolve(x) }\n );\n};\n\nCache.prototype.reset = function Cache$reset(){\n if(this._state === Cold) return;\n if(this._state === Pending) this._cancel();\n this._cancel = noop;\n this._queue = [];\n this._queued = 0;\n this._value = undefined;\n this._state = Cold;\n};\n\nexport function cache(m){\n return new Cache(application1(cache, future, arguments), m);\n}\n","import {call} from './internal/utils.js';\nimport {createTransformation, application1, application, future, func} from './future.js';\n\nexport var ChainRejTransformation = createTransformation(1, 'chainRej', {\n rejected: function ChainRejTransformation$rejected(x){ return call(this.$1, x) }\n});\n\nexport function chainRej(f){\n var context1 = application1(chainRej, func, arguments);\n return function chainRej(m){\n var context2 = application(2, chainRej, future, arguments, context1);\n return m._transform(new ChainRejTransformation(context2, f));\n };\n}\n","import {FL} from './internal/const.js';\nimport {invalidArgumentOf} from './internal/error.js';\nimport {isChain} from './internal/predicates.js';\nimport {isFuture, application1, application, func, ChainTransformation} from './future.js';\n\nexport var monad = {pred: isChain, error: invalidArgumentOf('have Chain implemented')};\n\nexport function chain(f){\n var context1 = application1(chain, func, arguments);\n return function chain(m){\n var context2 = application(2, chain, monad, arguments, context1);\n return isFuture(m) ?\n m._transform(new ChainTransformation(context2, f)) :\n m[FL.chain](f);\n };\n}\n","import {call} from './internal/utils.js';\nimport {createTransformation, Resolve, application1, application, func, future} from './future.js';\n\nexport var CoalesceTransformation = createTransformation(2, 'coalesce', {\n rejected: function CoalesceTransformation$rejected(x){\n return new Resolve(this.context, call(this.$1, x));\n },\n resolved: function CoalesceTransformation$resolved(x){\n return new Resolve(this.context, call(this.$2, x));\n }\n});\n\nexport function coalesce(f){\n var context1 = application1(coalesce, func, arguments);\n return function coalesce(g){\n var context2 = application(2, coalesce, func, arguments, context1);\n return function coalesce(m){\n var context3 = application(3, coalesce, future, arguments, context2);\n return m._transform(new CoalesceTransformation(context3, f, g));\n };\n };\n}\n","import {raise} from './internal/utils.js';\nimport {application, application1, func, future} from './future.js';\n\nexport function fork(f){\n var context1 = application1(fork, func, arguments);\n return function fork(g){\n var context2 = application(2, fork, func, arguments, context1);\n return function fork(m){\n application(3, fork, future, arguments, context2);\n return m._interpret(raise, f, g);\n };\n };\n}\n","export var Undetermined = 0;\nexport var Synchronous = 1;\nexport var Asynchronous = 2;\n","/*eslint consistent-return: 0 */\n\nimport {typeError, invalidFuture, invalidArgument, wrapException} from './internal/error.js';\nimport {isIteration} from './internal/iteration.js';\nimport {isIterator} from './internal/predicates.js';\nimport {Undetermined, Synchronous, Asynchronous} from './internal/timing.js';\nimport {show, noop} from './internal/utils.js';\nimport {createInterpreter, isFuture, application1, func} from './future.js';\n\nexport function invalidIteration(o){\n return typeError(\n 'The iterator did not return a valid iteration from iterator.next()\\n' +\n ' Actual: ' + show(o)\n );\n}\n\nexport function invalidState(x){\n return invalidFuture(\n 'go() expects the value produced by the iterator', x,\n '\\n Tip: If you\\'re using a generator, make sure you always yield a Future'\n );\n}\n\nexport var Go = createInterpreter(1, 'go', function Go$interpret(rec, rej, res){\n\n var _this = this, timing = Undetermined, cancel = noop, state, value, iterator;\n\n function crash(e){\n rec(wrapException(e, _this));\n }\n\n try{\n iterator = _this.$1();\n }catch(e){\n crash(e);\n return noop;\n }\n\n if(!isIterator(iterator)){\n crash(invalidArgument('go', 0, 'return an iterator, maybe you forgot the \"*\"', iterator));\n return noop;\n }\n\n function resolved(x){\n value = x;\n if(timing === Asynchronous) return drain();\n timing = Synchronous;\n }\n\n function drain(){\n //eslint-disable-next-line no-constant-condition\n while(true){\n try{\n state = iterator.next(value);\n }catch(e){\n return crash(e);\n }\n if(!isIteration(state)) return crash(invalidIteration(state));\n if(state.done) break;\n if(!isFuture(state.value)){\n return crash(invalidState(state.value));\n }\n timing = Undetermined;\n cancel = state.value._interpret(crash, rej, resolved);\n if(timing === Undetermined) return timing = Asynchronous;\n }\n res(state.value);\n }\n\n drain();\n\n return function Go$cancel(){ cancel() };\n\n});\n\nexport function go(generator){\n return new Go(application1(go, func, arguments), generator);\n}\n","import {noop, show, raise} from './internal/utils.js';\nimport {invalidFuture, wrapException} from './internal/error.js';\nimport {createInterpreter, isFuture, application1, application, func, future} from './future.js';\n\nfunction invalidDisposal(m, f, x){\n return invalidFuture(\n 'hook() expects the return value from the first function it\\'s given', m,\n '\\n From calling: ' + show(f) + '\\n With: ' + show(x)\n );\n}\n\nfunction invalidConsumption(m, f, x){\n return invalidFuture(\n 'hook() expects the return value from the second function it\\'s given', m,\n '\\n From calling: ' + show(f) + '\\n With: ' + show(x)\n );\n}\n\nexport var Hook = createInterpreter(3, 'hook', function Hook$interpret(rec, rej, res){\n\n var _this = this, _acquire = this.$1, _dispose = this.$2, _consume = this.$3;\n var cancel, cancelConsume = noop, resource, value, cont = noop;\n\n function Hook$done(){\n cont(value);\n }\n\n function Hook$rec(x){\n rec(wrapException(x, _this));\n }\n\n function Hook$dispose(){\n var disposal;\n try{\n disposal = _dispose(resource);\n }catch(e){\n return Hook$rec(e);\n }\n if(!isFuture(disposal)){\n return Hook$rec(invalidDisposal(disposal, _dispose, resource));\n }\n cancel = Hook$cancelDisposal;\n disposal._interpret(Hook$rec, Hook$disposalRejected, Hook$done);\n }\n\n function Hook$cancelConsumption(){\n cancelConsume();\n Hook$dispose();\n Hook$cancelDisposal();\n }\n\n function Hook$cancelDisposal(){\n cont = noop;\n }\n\n function Hook$disposalRejected(x){\n Hook$rec(new Error('The disposal Future rejected with ' + show(x)));\n }\n\n function Hook$consumptionException(x){\n cont = Hook$rec;\n value = x;\n Hook$dispose();\n }\n\n function Hook$consumptionRejected(x){\n cont = rej;\n value = x;\n Hook$dispose();\n }\n\n function Hook$consumptionResolved(x){\n cont = res;\n value = x;\n Hook$dispose();\n }\n\n function Hook$consume(x){\n resource = x;\n var consumption;\n try{\n consumption = _consume(resource);\n }catch(e){\n return Hook$consumptionException(e);\n }\n if(!isFuture(consumption)){\n return Hook$consumptionException(invalidConsumption(consumption, _consume, resource));\n }\n cancel = Hook$cancelConsumption;\n cancelConsume = consumption._interpret(\n Hook$consumptionException,\n Hook$consumptionRejected,\n Hook$consumptionResolved\n );\n }\n\n var cancelAcquire = _acquire._interpret(Hook$rec, rej, Hook$consume);\n cancel = cancel || cancelAcquire;\n\n return function Hook$fork$cancel(){\n rec = raise;\n cancel();\n };\n\n});\n\nexport function hook(acquire){\n var context1 = application1(hook, future, arguments);\n return function hook(dispose){\n var context2 = application(2, hook, func, arguments, context1);\n return function hook(consume){\n var context3 = application(3, hook, func, arguments, context2);\n return new Hook(context3, acquire, dispose, consume);\n };\n };\n}\n","import {AndTransformation} from './and.js';\nimport {\n application,\n application1,\n createTransformation,\n future,\n Reject,\n Resolve\n} from './future.js';\n\nexport var LastlyTransformation = createTransformation(1, 'lastly', {\n rejected: function LastlyAction$rejected(x){\n return this.$1._transform(new AndTransformation(this.context, new Reject(this.context, x)));\n },\n resolved: function LastlyAction$resolved(x){\n return this.$1._transform(new AndTransformation(this.context, new Resolve(this.context, x)));\n }\n});\n\nexport function lastly(cleanup){\n var context1 = application1(lastly, future, arguments);\n return function lastly(program){\n var context2 = application(2, lastly, future, arguments, context1);\n return program._transform(new LastlyTransformation(context2, cleanup));\n };\n}\n","import {call} from './internal/utils.js';\nimport {createTransformation, Reject, application1, application, future, func} from './future.js';\n\nexport var MapRejTransformation = createTransformation(1, 'mapRej', {\n rejected: function MapRejTransformation$rejected(x){\n return new Reject(this.context, call(this.$1, x));\n }\n});\n\nexport function mapRej(f){\n var context1 = application1(mapRej, func, arguments);\n return function mapRej(m){\n var context2 = application(2, mapRej, future, arguments, context1);\n return m._transform(new MapRejTransformation(context2, f));\n };\n}\n","import {wrapException} from './internal/error.js';\nimport {noop, call} from './internal/utils.js';\nimport {createInterpreter, application1, func} from './future.js';\n\nexport var Node = createInterpreter(1, 'node', function Node$interpret(rec, rej, res){\n function Node$done(err, val){\n cont = err ? function EncaseN3$rej(){\n open = false;\n rej(err);\n } : function EncaseN3$res(){\n open = false;\n res(val);\n };\n if(open){\n cont();\n }\n }\n var open = false, cont = function(){ open = true };\n try{\n call(this.$1, Node$done);\n }catch(e){\n rec(wrapException(e, this));\n open = false;\n return noop;\n }\n cont();\n return function Node$cancel(){ open = false };\n});\n\nexport function node(f){\n return new Node(application1(node, func, arguments), f);\n}\n","import {createParallelTransformation, earlyCrash, earlyReject} from './internal/parallel.js';\nimport {noop} from './internal/utils.js';\nimport {typeError} from './internal/error.js';\nimport {isFunction} from './internal/predicates.js';\nimport {show} from './internal/utils.js';\nimport {MapTransformation, application1, application, future} from './future.js';\n\nexport var ParallelApTransformation =\ncreateParallelTransformation('pap', earlyCrash, earlyReject, noop, {\n resolved: function ParallelApTransformation$resolved(f){\n if(isFunction(f)) return this.$1._transform(new MapTransformation(this.context, f));\n throw typeError(\n 'pap expects the second Future to resolve to a Function\\n' +\n ' Actual: ' + show(f)\n );\n }\n});\n\nexport function pap(mx){\n var context1 = application1(pap, future, arguments);\n return function pap(mf){\n var context2 = application(2, pap, future, arguments, context1);\n return mf._transform(new ParallelApTransformation(context2, mx));\n };\n}\n","import {wrapException, invalidArgumentOf} from './internal/error.js';\nimport {isArray} from './internal/predicates.js';\nimport {noop} from './internal/utils.js';\nimport {\n createInterpreter,\n isFuture,\n resolve,\n application1,\n positiveInteger,\n application\n} from './future.js';\n\nfunction isFutureArray(xs){\n if(!isArray(xs)) return false;\n for(var i = 0; i < xs.length; i++){\n if(!isFuture(xs[i])) return false;\n }\n return true;\n}\n\nexport var futureArray = {\n pred: isFutureArray,\n error: invalidArgumentOf('be an Array of valid Futures')\n};\n\nexport var Parallel = createInterpreter(2, 'parallel', function Parallel$interpret(rec, rej, res){\n\n var _this = this, futures = this.$2, length = futures.length;\n var max = Math.min(this.$1, length), cancels = new Array(length), out = new Array(length);\n var cursor = 0, running = 0, blocked = false, cont = noop;\n\n function Parallel$cancel(){\n rec = noop;\n rej = noop;\n res = noop;\n cursor = length;\n for(var n = 0; n < length; n++) cancels[n] && cancels[n]();\n }\n\n function Parallel$run(idx){\n running++;\n cancels[idx] = futures[idx]._interpret(function Parallel$rec(e){\n cont = rec;\n cancels[idx] = noop;\n Parallel$cancel();\n cont(wrapException(e, _this));\n }, function Parallel$rej(reason){\n cont = rej;\n cancels[idx] = noop;\n Parallel$cancel();\n cont(reason);\n }, function Parallel$res(value){\n cancels[idx] = noop;\n out[idx] = value;\n running--;\n if(cursor === length && running === 0) res(out);\n else if(blocked) Parallel$drain();\n });\n }\n\n function Parallel$drain(){\n blocked = false;\n while(cursor < length && running < max) Parallel$run(cursor++);\n blocked = true;\n }\n\n Parallel$drain();\n\n return Parallel$cancel;\n\n});\n\nvar emptyArray = resolve([]);\n\nexport function parallel(max){\n var context1 = application1(parallel, positiveInteger, arguments);\n return function parallel(ms){\n var context2 = application(2, parallel, futureArray, arguments, context1);\n return ms.length === 0 ? emptyArray : new Parallel(context2, max, ms);\n };\n}\n","import {\n createParallelTransformation,\n earlyCrash,\n earlyReject,\n earlyResolve\n} from './internal/parallel.js';\nimport {application1, application, future} from './future.js';\n\nexport var RaceTransformation =\ncreateParallelTransformation('race', earlyCrash, earlyReject, earlyResolve, {});\n\nexport function race(left){\n var context1 = application1(race, future, arguments);\n return function race(right){\n var context2 = application(2, race, future, arguments, context1);\n return right._transform(new RaceTransformation(context2, left));\n };\n}\n","import type from 'sanctuary-type-identifiers';\n\nimport {FL, namespace, version} from './internal/const.js';\nimport {invalidFutureArgument} from './internal/error.js';\nimport {captureContext} from './internal/debug.js';\nimport {nil} from './internal/list.js';\n\nimport {never, resolve, isFuture, MapTransformation} from './future.js';\nimport {ParallelApTransformation} from './pap.js';\nimport {RaceTransformation} from './race.js';\n\nexport function ConcurrentFuture (sequential){\n this.sequential = sequential;\n}\n\nConcurrentFuture.prototype = Object.create(Par.prototype);\n\nexport function Par (sequential){\n if(!isFuture(sequential)) throw invalidFutureArgument(Par.name, 0, sequential);\n return new ConcurrentFuture(sequential);\n}\n\nvar $$type = namespace + '/ConcurrentFuture@' + version;\nvar zeroInstance = new ConcurrentFuture(never);\n\n// Compliance with sanctuary-type-identifiers versions 1 and 2.\n// To prevent sanctuary-type-identifiers version 3 from identifying\n// 'Par' as being of the type denoted by $$type, we ensure that\n// Par.constructor.prototype is equal to Par.\nPar['@@type'] = $$type;\nPar.constructor = {prototype: Par};\n\nPar[FL.of] = function Par$of(x){\n return new ConcurrentFuture(resolve(x));\n};\n\nPar[FL.zero] = function Par$zero(){\n return zeroInstance;\n};\n\nPar.prototype['@@type'] = $$type;\n\nPar.prototype['@@show'] = function Par$show(){\n return this.toString();\n};\n\nPar.prototype.toString = function Par$toString(){\n return 'Par (' + this.sequential.toString() + ')';\n};\n\nPar.prototype[FL.map] = function Par$FL$map(f){\n var context = captureContext(\n nil,\n 'a Fantasy Land dispatch to map via ConcurrentFuture',\n Par$FL$map\n );\n return new ConcurrentFuture(this.sequential._transform(new MapTransformation(context, f)));\n};\n\nPar.prototype[FL.ap] = function Par$FL$ap(other){\n var context = captureContext(\n nil,\n 'a Fantasy Land dispatch to ap via ConcurrentFuture',\n Par$FL$ap\n );\n return new ConcurrentFuture(other.sequential._transform(\n new ParallelApTransformation(context, this.sequential)\n ));\n};\n\nPar.prototype[FL.alt] = function Par$FL$alt(other){\n var context = captureContext(\n nil,\n 'a Fantasy Land dispatch to alt via ConcurrentFuture',\n Par$FL$alt\n );\n return new ConcurrentFuture(other.sequential._transform(\n new RaceTransformation(context, this.sequential)\n ));\n};\n\nexport function isParallel(x){\n return x instanceof ConcurrentFuture || type(x) === $$type;\n}\n","import {\n any,\n application,\n application1,\n createInterpreter,\n never,\n positiveInteger\n} from './future.js';\n\nexport var RejectAfter =\ncreateInterpreter(2, 'rejectAfter', function RejectAfter$interpret(rec, rej){\n var id = setTimeout(rej, this.$1, this.$2);\n return function RejectAfter$cancel(){ clearTimeout(id) };\n});\n\nRejectAfter.prototype.extractLeft = function RejectAfter$extractLeft(){\n return [this.$2];\n};\n\nfunction alwaysNever(_){\n return never;\n}\n\nexport function rejectAfter(time){\n var context1 = application1(rejectAfter, positiveInteger, arguments);\n return time === Infinity ? alwaysNever : (function rejectAfter(value){\n var context2 = application(2, rejectAfter, any, arguments, context1);\n return new RejectAfter(context2, time, value);\n });\n}\n","import {createTransformation, Reject, Resolve, application1, future} from './future.js';\n\nexport var SwapTransformation = createTransformation(0, 'swap', {\n resolved: function SwapTransformation$resolved(x){\n return new Reject(this.context, x);\n },\n rejected: function SwapTransformation$rejected(x){\n return new Resolve(this.context, x);\n }\n});\n\nexport function swap(m){\n var context = application1(swap, future, arguments);\n return m._transform(new SwapTransformation(context));\n}\n","/**\n * A function that always returns `true`. Any passed in parameters are ignored.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Function\n * @sig * -> Boolean\n * @param {*}\n * @return {Boolean}\n * @see R.F\n * @example\n *\n * R.T(); //=> true\n */\nvar T = function () {\n return true;\n};\n\nexport default T;","export default function _isPlaceholder(a) {\n return a != null && typeof a === 'object' && a['@@functional/placeholder'] === true;\n}","import _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Optimized internal one-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curry1(fn) {\n return function f1(a) {\n if (arguments.length === 0 || _isPlaceholder(a)) {\n return f1;\n } else {\n return fn.apply(this, arguments);\n }\n };\n}","import _curry1 from \"./_curry1.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Optimized internal two-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curry2(fn) {\n return function f2(a, b) {\n switch (arguments.length) {\n case 0:\n return f2;\n\n case 1:\n return _isPlaceholder(a) ? f2 : _curry1(function (_b) {\n return fn(a, _b);\n });\n\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f2 : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b);\n }) : fn(a, b);\n }\n };\n}","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Adds two values.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig Number -> Number -> Number\n * @param {Number} a\n * @param {Number} b\n * @return {Number}\n * @see R.subtract\n * @example\n *\n * R.add(2, 3); //=> 5\n * R.add(7)(10); //=> 17\n */\n\nvar add =\n/*#__PURE__*/\n_curry2(function add(a, b) {\n return Number(a) + Number(b);\n});\n\nexport default add;","/**\n * Private `concat` function to merge two array-like objects.\n *\n * @private\n * @param {Array|Arguments} [set1=[]] An array-like object.\n * @param {Array|Arguments} [set2=[]] An array-like object.\n * @return {Array} A new, merged array.\n * @example\n *\n * _concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3]\n */\nexport default function _concat(set1, set2) {\n set1 = set1 || [];\n set2 = set2 || [];\n var idx;\n var len1 = set1.length;\n var len2 = set2.length;\n var result = [];\n idx = 0;\n\n while (idx < len1) {\n result[result.length] = set1[idx];\n idx += 1;\n }\n\n idx = 0;\n\n while (idx < len2) {\n result[result.length] = set2[idx];\n idx += 1;\n }\n\n return result;\n}","export default function _arity(n, fn) {\n /* eslint-disable no-unused-vars */\n switch (n) {\n case 0:\n return function () {\n return fn.apply(this, arguments);\n };\n\n case 1:\n return function (a0) {\n return fn.apply(this, arguments);\n };\n\n case 2:\n return function (a0, a1) {\n return fn.apply(this, arguments);\n };\n\n case 3:\n return function (a0, a1, a2) {\n return fn.apply(this, arguments);\n };\n\n case 4:\n return function (a0, a1, a2, a3) {\n return fn.apply(this, arguments);\n };\n\n case 5:\n return function (a0, a1, a2, a3, a4) {\n return fn.apply(this, arguments);\n };\n\n case 6:\n return function (a0, a1, a2, a3, a4, a5) {\n return fn.apply(this, arguments);\n };\n\n case 7:\n return function (a0, a1, a2, a3, a4, a5, a6) {\n return fn.apply(this, arguments);\n };\n\n case 8:\n return function (a0, a1, a2, a3, a4, a5, a6, a7) {\n return fn.apply(this, arguments);\n };\n\n case 9:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {\n return fn.apply(this, arguments);\n };\n\n case 10:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n return fn.apply(this, arguments);\n };\n\n default:\n throw new Error('First argument to _arity must be a non-negative integer no greater than ten');\n }\n}","import _arity from \"./_arity.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Internal curryN function.\n *\n * @private\n * @category Function\n * @param {Number} length The arity of the curried function.\n * @param {Array} received An array of arguments received thus far.\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curryN(length, received, fn) {\n return function () {\n var combined = [];\n var argsIdx = 0;\n var left = length;\n var combinedIdx = 0;\n\n while (combinedIdx < received.length || argsIdx < arguments.length) {\n var result;\n\n if (combinedIdx < received.length && (!_isPlaceholder(received[combinedIdx]) || argsIdx >= arguments.length)) {\n result = received[combinedIdx];\n } else {\n result = arguments[argsIdx];\n argsIdx += 1;\n }\n\n combined[combinedIdx] = result;\n\n if (!_isPlaceholder(result)) {\n left -= 1;\n }\n\n combinedIdx += 1;\n }\n\n return left <= 0 ? fn.apply(this, combined) : _arity(left, _curryN(length, combined, fn));\n };\n}","import _arity from \"./internal/_arity.js\";\nimport _curry1 from \"./internal/_curry1.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _curryN from \"./internal/_curryN.js\";\n/**\n * Returns a curried equivalent of the provided function, with the specified\n * arity. The curried function has two unusual capabilities. First, its\n * arguments needn't be provided one at a time. If `g` is `R.curryN(3, f)`, the\n * following are equivalent:\n *\n * - `g(1)(2)(3)`\n * - `g(1)(2, 3)`\n * - `g(1, 2)(3)`\n * - `g(1, 2, 3)`\n *\n * Secondly, the special placeholder value [`R.__`](#__) may be used to specify\n * \"gaps\", allowing partial application of any combination of arguments,\n * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__),\n * the following are equivalent:\n *\n * - `g(1, 2, 3)`\n * - `g(_, 2, 3)(1)`\n * - `g(_, _, 3)(1)(2)`\n * - `g(_, _, 3)(1, 2)`\n * - `g(_, 2)(1)(3)`\n * - `g(_, 2)(1, 3)`\n * - `g(_, 2)(_, 3)(1)`\n *\n * @func\n * @memberOf R\n * @since v0.5.0\n * @category Function\n * @sig Number -> (* -> a) -> (* -> a)\n * @param {Number} length The arity for the returned function.\n * @param {Function} fn The function to curry.\n * @return {Function} A new, curried function.\n * @see R.curry\n * @example\n *\n * const sumArgs = (...args) => R.sum(args);\n *\n * const curriedAddFourNumbers = R.curryN(4, sumArgs);\n * const f = curriedAddFourNumbers(1, 2);\n * const g = f(3);\n * g(4); //=> 10\n */\n\nvar curryN =\n/*#__PURE__*/\n_curry2(function curryN(length, fn) {\n if (length === 1) {\n return _curry1(fn);\n }\n\n return _arity(length, _curryN(length, [], fn));\n});\n\nexport default curryN;","import _concat from \"./internal/_concat.js\";\nimport _curry1 from \"./internal/_curry1.js\";\nimport curryN from \"./curryN.js\";\n/**\n * Creates a new list iteration function from an existing one by adding two new\n * parameters to its callback function: the current index, and the entire list.\n *\n * This would turn, for instance, [`R.map`](#map) function into one that\n * more closely resembles `Array.prototype.map`. Note that this will only work\n * for functions in which the iteration callback function is the first\n * parameter, and where the list is the last parameter. (This latter might be\n * unimportant if the list parameter is not used.)\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category Function\n * @category List\n * @sig ((a ... -> b) ... -> [a] -> *) -> ((a ..., Int, [a] -> b) ... -> [a] -> *)\n * @param {Function} fn A list iteration function that does not pass index or list to its callback\n * @return {Function} An altered list iteration function that passes (item, index, list) to its callback\n * @example\n *\n * const mapIndexed = R.addIndex(R.map);\n * mapIndexed((val, idx) => idx + '-' + val, ['f', 'o', 'o', 'b', 'a', 'r']);\n * //=> ['0-f', '1-o', '2-o', '3-b', '4-a', '5-r']\n */\n\nvar addIndex =\n/*#__PURE__*/\n_curry1(function addIndex(fn) {\n return curryN(fn.length, function () {\n var idx = 0;\n var origFn = arguments[0];\n var list = arguments[arguments.length - 1];\n var args = Array.prototype.slice.call(arguments, 0);\n\n args[0] = function () {\n var result = origFn.apply(this, _concat(arguments, [idx, list]));\n idx += 1;\n return result;\n };\n\n return fn.apply(this, args);\n });\n});\n\nexport default addIndex;","import _curry1 from \"./_curry1.js\";\nimport _curry2 from \"./_curry2.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Optimized internal three-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curry3(fn) {\n return function f3(a, b, c) {\n switch (arguments.length) {\n case 0:\n return f3;\n\n case 1:\n return _isPlaceholder(a) ? f3 : _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n });\n\n case 2:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f3 : _isPlaceholder(a) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _curry1(function (_c) {\n return fn(a, b, _c);\n });\n\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) && _isPlaceholder(c) ? f3 : _isPlaceholder(a) && _isPlaceholder(b) ? _curry2(function (_a, _b) {\n return fn(_a, _b, c);\n }) : _isPlaceholder(a) && _isPlaceholder(c) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) && _isPlaceholder(c) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b, c);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b, c);\n }) : _isPlaceholder(c) ? _curry1(function (_c) {\n return fn(a, b, _c);\n }) : fn(a, b, c);\n }\n };\n}","/**\n * Tests whether or not an object is an array.\n *\n * @private\n * @param {*} val The object to test.\n * @return {Boolean} `true` if `val` is an array, `false` otherwise.\n * @example\n *\n * _isArray([]); //=> true\n * _isArray(null); //=> false\n * _isArray({}); //=> false\n */\nexport default Array.isArray || function _isArray(val) {\n return val != null && val.length >= 0 && Object.prototype.toString.call(val) === '[object Array]';\n};","export default function _isTransformer(obj) {\n return obj != null && typeof obj['@@transducer/step'] === 'function';\n}","import _isArray from \"./_isArray.js\";\nimport _isTransformer from \"./_isTransformer.js\";\n/**\n * Returns a function that dispatches with different strategies based on the\n * object in list position (last argument). If it is an array, executes [fn].\n * Otherwise, if it has a function with one of the given method names, it will\n * execute that function (functor case). Otherwise, if it is a transformer,\n * uses transducer [xf] to return a new transformer (transducer case).\n * Otherwise, it will default to executing [fn].\n *\n * @private\n * @param {Array} methodNames properties to check for a custom implementation\n * @param {Function} xf transducer to initialize if object is transformer\n * @param {Function} fn default ramda implementation\n * @return {Function} A function that dispatches on object in list position\n */\n\nexport default function _dispatchable(methodNames, xf, fn) {\n return function () {\n if (arguments.length === 0) {\n return fn();\n }\n\n var args = Array.prototype.slice.call(arguments, 0);\n var obj = args.pop();\n\n if (!_isArray(obj)) {\n var idx = 0;\n\n while (idx < methodNames.length) {\n if (typeof obj[methodNames[idx]] === 'function') {\n return obj[methodNames[idx]].apply(obj, args);\n }\n\n idx += 1;\n }\n\n if (_isTransformer(obj)) {\n var transducer = xf.apply(null, args);\n return transducer(obj);\n }\n }\n\n return fn.apply(this, arguments);\n };\n}","export default {\n init: function () {\n return this.xf['@@transducer/init']();\n },\n result: function (result) {\n return this.xf['@@transducer/result'](result);\n }\n};","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns the larger of its two arguments.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> a\n * @param {*} a\n * @param {*} b\n * @return {*}\n * @see R.maxBy, R.min\n * @example\n *\n * R.max(789, 123); //=> 789\n * R.max('a', 'b'); //=> 'b'\n */\n\nvar max =\n/*#__PURE__*/\n_curry2(function max(a, b) {\n return b > a ? b : a;\n});\n\nexport default max;","export default function _map(fn, functor) {\n var idx = 0;\n var len = functor.length;\n var result = Array(len);\n\n while (idx < len) {\n result[idx] = fn(functor[idx]);\n idx += 1;\n }\n\n return result;\n}","export default function _isString(x) {\n return Object.prototype.toString.call(x) === '[object String]';\n}","import _curry1 from \"./_curry1.js\";\nimport _isArray from \"./_isArray.js\";\nimport _isString from \"./_isString.js\";\n/**\n * Tests whether or not an object is similar to an array.\n *\n * @private\n * @category Type\n * @category List\n * @sig * -> Boolean\n * @param {*} x The object to test.\n * @return {Boolean} `true` if `x` has a numeric length property and extreme indices defined; `false` otherwise.\n * @example\n *\n * _isArrayLike([]); //=> true\n * _isArrayLike(true); //=> false\n * _isArrayLike({}); //=> false\n * _isArrayLike({length: 10}); //=> false\n * _isArrayLike({0: 'zero', 9: 'nine', length: 10}); //=> true\n */\n\nvar _isArrayLike =\n/*#__PURE__*/\n_curry1(function isArrayLike(x) {\n if (_isArray(x)) {\n return true;\n }\n\n if (!x) {\n return false;\n }\n\n if (typeof x !== 'object') {\n return false;\n }\n\n if (_isString(x)) {\n return false;\n }\n\n if (x.nodeType === 1) {\n return !!x.length;\n }\n\n if (x.length === 0) {\n return true;\n }\n\n if (x.length > 0) {\n return x.hasOwnProperty(0) && x.hasOwnProperty(x.length - 1);\n }\n\n return false;\n});\n\nexport default _isArrayLike;","var XWrap =\n/*#__PURE__*/\nfunction () {\n function XWrap(fn) {\n this.f = fn;\n }\n\n XWrap.prototype['@@transducer/init'] = function () {\n throw new Error('init not implemented on XWrap');\n };\n\n XWrap.prototype['@@transducer/result'] = function (acc) {\n return acc;\n };\n\n XWrap.prototype['@@transducer/step'] = function (acc, x) {\n return this.f(acc, x);\n };\n\n return XWrap;\n}();\n\nexport default function _xwrap(fn) {\n return new XWrap(fn);\n}","import _arity from \"./internal/_arity.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Creates a function that is bound to a context.\n * Note: `R.bind` does not provide the additional argument-binding capabilities of\n * [Function.prototype.bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Function\n * @category Object\n * @sig (* -> *) -> {*} -> (* -> *)\n * @param {Function} fn The function to bind to context\n * @param {Object} thisObj The context to bind `fn` to\n * @return {Function} A function that will execute in the context of `thisObj`.\n * @see R.partial\n * @example\n *\n * const log = R.bind(console.log, console);\n * R.pipe(R.assoc('a', 2), R.tap(log), R.assoc('a', 3))({a: 1}); //=> {a: 3}\n * // logs {a: 2}\n * @symb R.bind(f, o)(a, b) = f.call(o, a, b)\n */\n\nvar bind =\n/*#__PURE__*/\n_curry2(function bind(fn, thisObj) {\n return _arity(fn.length, function () {\n return fn.apply(thisObj, arguments);\n });\n});\n\nexport default bind;","import _isArrayLike from \"./_isArrayLike.js\";\nimport _xwrap from \"./_xwrap.js\";\nimport bind from \"../bind.js\";\n\nfunction _arrayReduce(xf, acc, list) {\n var idx = 0;\n var len = list.length;\n\n while (idx < len) {\n acc = xf['@@transducer/step'](acc, list[idx]);\n\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n\n idx += 1;\n }\n\n return xf['@@transducer/result'](acc);\n}\n\nfunction _iterableReduce(xf, acc, iter) {\n var step = iter.next();\n\n while (!step.done) {\n acc = xf['@@transducer/step'](acc, step.value);\n\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n\n step = iter.next();\n }\n\n return xf['@@transducer/result'](acc);\n}\n\nfunction _methodReduce(xf, acc, obj, methodName) {\n return xf['@@transducer/result'](obj[methodName](bind(xf['@@transducer/step'], xf), acc));\n}\n\nvar symIterator = typeof Symbol !== 'undefined' ? Symbol.iterator : '@@iterator';\nexport default function _reduce(fn, acc, list) {\n if (typeof fn === 'function') {\n fn = _xwrap(fn);\n }\n\n if (_isArrayLike(list)) {\n return _arrayReduce(fn, acc, list);\n }\n\n if (typeof list['fantasy-land/reduce'] === 'function') {\n return _methodReduce(fn, acc, list, 'fantasy-land/reduce');\n }\n\n if (list[symIterator] != null) {\n return _iterableReduce(fn, acc, list[symIterator]());\n }\n\n if (typeof list.next === 'function') {\n return _iterableReduce(fn, acc, list);\n }\n\n if (typeof list.reduce === 'function') {\n return _methodReduce(fn, acc, list, 'reduce');\n }\n\n throw new TypeError('reduce: list must be array or iterable');\n}","import _curry2 from \"./_curry2.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XMap =\n/*#__PURE__*/\nfunction () {\n function XMap(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n\n XMap.prototype['@@transducer/init'] = _xfBase.init;\n XMap.prototype['@@transducer/result'] = _xfBase.result;\n\n XMap.prototype['@@transducer/step'] = function (result, input) {\n return this.xf['@@transducer/step'](result, this.f(input));\n };\n\n return XMap;\n}();\n\nvar _xmap =\n/*#__PURE__*/\n_curry2(function _xmap(f, xf) {\n return new XMap(f, xf);\n});\n\nexport default _xmap;","export default function _has(prop, obj) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}","import _has from \"./_has.js\";\nvar toString = Object.prototype.toString;\n\nvar _isArguments =\n/*#__PURE__*/\nfunction () {\n return toString.call(arguments) === '[object Arguments]' ? function _isArguments(x) {\n return toString.call(x) === '[object Arguments]';\n } : function _isArguments(x) {\n return _has('callee', x);\n };\n}();\n\nexport default _isArguments;","import _curry1 from \"./internal/_curry1.js\";\nimport _has from \"./internal/_has.js\";\nimport _isArguments from \"./internal/_isArguments.js\"; // cover IE < 9 keys issues\n\nvar hasEnumBug = !\n/*#__PURE__*/\n{\n toString: null\n}.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['constructor', 'valueOf', 'isPrototypeOf', 'toString', 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; // Safari bug\n\nvar hasArgsEnumBug =\n/*#__PURE__*/\nfunction () {\n 'use strict';\n\n return arguments.propertyIsEnumerable('length');\n}();\n\nvar contains = function contains(list, item) {\n var idx = 0;\n\n while (idx < list.length) {\n if (list[idx] === item) {\n return true;\n }\n\n idx += 1;\n }\n\n return false;\n};\n/**\n * Returns a list containing the names of all the enumerable own properties of\n * the supplied object.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -> [k]\n * @param {Object} obj The object to extract properties from\n * @return {Array} An array of the object's own properties.\n * @see R.keysIn, R.values\n * @example\n *\n * R.keys({a: 1, b: 2, c: 3}); //=> ['a', 'b', 'c']\n */\n\n\nvar keys = typeof Object.keys === 'function' && !hasArgsEnumBug ?\n/*#__PURE__*/\n_curry1(function keys(obj) {\n return Object(obj) !== obj ? [] : Object.keys(obj);\n}) :\n/*#__PURE__*/\n_curry1(function keys(obj) {\n if (Object(obj) !== obj) {\n return [];\n }\n\n var prop, nIdx;\n var ks = [];\n\n var checkArgsLength = hasArgsEnumBug && _isArguments(obj);\n\n for (prop in obj) {\n if (_has(prop, obj) && (!checkArgsLength || prop !== 'length')) {\n ks[ks.length] = prop;\n }\n }\n\n if (hasEnumBug) {\n nIdx = nonEnumerableProps.length - 1;\n\n while (nIdx >= 0) {\n prop = nonEnumerableProps[nIdx];\n\n if (_has(prop, obj) && !contains(ks, prop)) {\n ks[ks.length] = prop;\n }\n\n nIdx -= 1;\n }\n }\n\n return ks;\n});\nexport default keys;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _map from \"./internal/_map.js\";\nimport _reduce from \"./internal/_reduce.js\";\nimport _xmap from \"./internal/_xmap.js\";\nimport curryN from \"./curryN.js\";\nimport keys from \"./keys.js\";\n/**\n * Takes a function and\n * a [functor](https://github.com/fantasyland/fantasy-land#functor),\n * applies the function to each of the functor's values, and returns\n * a functor of the same shape.\n *\n * Ramda provides suitable `map` implementations for `Array` and `Object`,\n * so this function may be applied to `[1, 2, 3]` or `{x: 1, y: 2, z: 3}`.\n *\n * Dispatches to the `map` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * Also treats functions as functors and will compose them together.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Functor f => (a -> b) -> f a -> f b\n * @param {Function} fn The function to be called on every element of the input `list`.\n * @param {Array} list The list to be iterated over.\n * @return {Array} The new list.\n * @see R.transduce, R.addIndex\n * @example\n *\n * const double = x => x * 2;\n *\n * R.map(double, [1, 2, 3]); //=> [2, 4, 6]\n *\n * R.map(double, {x: 1, y: 2, z: 3}); //=> {x: 2, y: 4, z: 6}\n * @symb R.map(f, [a, b]) = [f(a), f(b)]\n * @symb R.map(f, { x: a, y: b }) = { x: f(a), y: f(b) }\n * @symb R.map(f, functor_o) = functor_o.map(f)\n */\n\nvar map =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable(['fantasy-land/map', 'map'], _xmap, function map(fn, functor) {\n switch (Object.prototype.toString.call(functor)) {\n case '[object Function]':\n return curryN(functor.length, function () {\n return fn.call(this, functor.apply(this, arguments));\n });\n\n case '[object Object]':\n return _reduce(function (acc, key) {\n acc[key] = fn(functor[key]);\n return acc;\n }, {}, keys(functor));\n\n default:\n return _map(fn, functor);\n }\n}));\n\nexport default map;","/**\n * Determine if the passed argument is an integer.\n *\n * @private\n * @param {*} n\n * @category Type\n * @return {Boolean}\n */\nexport default Number.isInteger || function _isInteger(n) {\n return n << 0 === n;\n};","import _curry2 from \"./internal/_curry2.js\";\nimport _isString from \"./internal/_isString.js\";\n/**\n * Returns the nth element of the given list or string. If n is negative the\n * element at index length + n is returned.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -> [a] -> a | Undefined\n * @sig Number -> String -> String\n * @param {Number} offset\n * @param {*} list\n * @return {*}\n * @example\n *\n * const list = ['foo', 'bar', 'baz', 'quux'];\n * R.nth(1, list); //=> 'bar'\n * R.nth(-1, list); //=> 'quux'\n * R.nth(-99, list); //=> undefined\n *\n * R.nth(2, 'abc'); //=> 'c'\n * R.nth(3, 'abc'); //=> ''\n * @symb R.nth(-1, [a, b, c]) = c\n * @symb R.nth(0, [a, b, c]) = a\n * @symb R.nth(1, [a, b, c]) = b\n */\n\nvar nth =\n/*#__PURE__*/\n_curry2(function nth(offset, list) {\n var idx = offset < 0 ? list.length + offset : offset;\n return _isString(list) ? list.charAt(idx) : list[idx];\n});\n\nexport default nth;","import _curry2 from \"./internal/_curry2.js\";\nimport _isInteger from \"./internal/_isInteger.js\";\nimport nth from \"./nth.js\";\n/**\n * Retrieves the values at given paths of an object.\n *\n * @func\n * @memberOf R\n * @since v0.27.1\n * @category Object\n * @typedefn Idx = [String | Int]\n * @sig [Idx] -> {a} -> [a | Undefined]\n * @param {Array} pathsArray The array of paths to be fetched.\n * @param {Object} obj The object to retrieve the nested properties from.\n * @return {Array} A list consisting of values at paths specified by \"pathsArray\".\n * @see R.path\n * @example\n *\n * R.paths([['a', 'b'], ['p', 0, 'q']], {a: {b: 2}, p: [{q: 3}]}); //=> [2, 3]\n * R.paths([['a', 'b'], ['p', 'r']], {a: {b: 2}, p: [{q: 3}]}); //=> [2, undefined]\n */\n\nvar paths =\n/*#__PURE__*/\n_curry2(function paths(pathsArray, obj) {\n return pathsArray.map(function (paths) {\n var val = obj;\n var idx = 0;\n var p;\n\n while (idx < paths.length) {\n if (val == null) {\n return;\n }\n\n p = paths[idx];\n val = _isInteger(p) ? nth(p, val) : val[p];\n idx += 1;\n }\n\n return val;\n });\n});\n\nexport default paths;","import _curry2 from \"./internal/_curry2.js\";\nimport paths from \"./paths.js\";\n/**\n * Retrieve the value at a given path.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Object\n * @typedefn Idx = String | Int\n * @sig [Idx] -> {a} -> a | Undefined\n * @param {Array} path The path to use.\n * @param {Object} obj The object to retrieve the nested property from.\n * @return {*} The data at `path`.\n * @see R.prop, R.nth\n * @example\n *\n * R.path(['a', 'b'], {a: {b: 2}}); //=> 2\n * R.path(['a', 'b'], {c: {b: 2}}); //=> undefined\n * R.path(['a', 'b', 0], {a: {b: [1, 2, 3]}}); //=> 1\n * R.path(['a', 'b', -2], {a: {b: [1, 2, 3]}}); //=> 2\n */\n\nvar path =\n/*#__PURE__*/\n_curry2(function path(pathAr, obj) {\n return paths([pathAr], obj)[0];\n});\n\nexport default path;","import _curry2 from \"./internal/_curry2.js\";\nimport path from \"./path.js\";\n/**\n * Returns a function that when supplied an object returns the indicated\n * property of that object, if it exists.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @typedefn Idx = String | Int\n * @sig Idx -> {s: a} -> a | Undefined\n * @param {String|Number} p The property name or array index\n * @param {Object} obj The object to query\n * @return {*} The value at `obj.p`.\n * @see R.path, R.nth\n * @example\n *\n * R.prop('x', {x: 100}); //=> 100\n * R.prop('x', {}); //=> undefined\n * R.prop(0, [100]); //=> 100\n * R.compose(R.inc, R.prop('x'))({ x: 3 }) //=> 4\n */\n\nvar prop =\n/*#__PURE__*/\n_curry2(function prop(p, obj) {\n return path([p], obj);\n});\n\nexport default prop;","import _curry2 from \"./internal/_curry2.js\";\nimport map from \"./map.js\";\nimport prop from \"./prop.js\";\n/**\n * Returns a new list by plucking the same named property off all objects in\n * the list supplied.\n *\n * `pluck` will work on\n * any [functor](https://github.com/fantasyland/fantasy-land#functor) in\n * addition to arrays, as it is equivalent to `R.map(R.prop(k), f)`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Functor f => k -> f {k: v} -> f v\n * @param {Number|String} key The key name to pluck off of each object.\n * @param {Array} f The array or functor to consider.\n * @return {Array} The list of values for the given key.\n * @see R.props\n * @example\n *\n * var getAges = R.pluck('age');\n * getAges([{name: 'fred', age: 29}, {name: 'wilma', age: 27}]); //=> [29, 27]\n *\n * R.pluck(0, [[1, 2], [3, 4]]); //=> [1, 3]\n * R.pluck('val', {a: {val: 3}, b: {val: 5}}); //=> {a: 3, b: 5}\n * @symb R.pluck('x', [{x: 1, y: 2}, {x: 3, y: 4}, {x: 5, y: 6}]) = [1, 3, 5]\n * @symb R.pluck(0, [[1, 2], [3, 4], [5, 6]]) = [1, 3, 5]\n */\n\nvar pluck =\n/*#__PURE__*/\n_curry2(function pluck(p, list) {\n return map(prop(p), list);\n});\n\nexport default pluck;","import _curry3 from \"./internal/_curry3.js\";\nimport _reduce from \"./internal/_reduce.js\";\n/**\n * Returns a single item by iterating through the list, successively calling\n * the iterator function and passing it an accumulator value and the current\n * value from the array, and then passing the result to the next call.\n *\n * The iterator function receives two values: *(acc, value)*. It may use\n * [`R.reduced`](#reduced) to shortcut the iteration.\n *\n * The arguments' order of [`reduceRight`](#reduceRight)'s iterator function\n * is *(value, acc)*.\n *\n * Note: `R.reduce` does not skip deleted or unassigned indices (sparse\n * arrays), unlike the native `Array.prototype.reduce` method. For more details\n * on this behavior, see:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce#Description\n *\n * Dispatches to the `reduce` method of the third argument, if present. When\n * doing so, it is up to the user to handle the [`R.reduced`](#reduced)\n * shortcuting, as this is not implemented by `reduce`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, b) -> a) -> a -> [b] -> a\n * @param {Function} fn The iterator function. Receives two values, the accumulator and the\n * current element from the array.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduced, R.addIndex, R.reduceRight\n * @example\n *\n * R.reduce(R.subtract, 0, [1, 2, 3, 4]) // => ((((0 - 1) - 2) - 3) - 4) = -10\n * // - -10\n * // / \\ / \\\n * // - 4 -6 4\n * // / \\ / \\\n * // - 3 ==> -3 3\n * // / \\ / \\\n * // - 2 -1 2\n * // / \\ / \\\n * // 0 1 0 1\n *\n * @symb R.reduce(f, a, [b, c, d]) = f(f(f(a, b), c), d)\n */\n\nvar reduce =\n/*#__PURE__*/\n_curry3(_reduce);\n\nexport default reduce;","import _curry1 from \"./internal/_curry1.js\";\n/**\n * Returns a function that always returns the given value. Note that for\n * non-primitives the value returned is a reference to the original value.\n *\n * This function is known as `const`, `constant`, or `K` (for K combinator) in\n * other languages and libraries.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig a -> (* -> a)\n * @param {*} val The value to wrap in a function\n * @return {Function} A Function :: * -> val.\n * @example\n *\n * const t = R.always('Tee');\n * t(); //=> 'Tee'\n */\n\nvar always =\n/*#__PURE__*/\n_curry1(function always(val) {\n return function () {\n return val;\n };\n});\n\nexport default always;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns `true` if both arguments are `true`; `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig a -> b -> a | b\n * @param {Any} a\n * @param {Any} b\n * @return {Any} the first argument if it is falsy, otherwise the second argument.\n * @see R.both, R.xor\n * @example\n *\n * R.and(true, true); //=> true\n * R.and(true, false); //=> false\n * R.and(false, true); //=> false\n * R.and(false, false); //=> false\n */\n\nvar and =\n/*#__PURE__*/\n_curry2(function and(a, b) {\n return a && b;\n});\n\nexport default and;","import _concat from \"./internal/_concat.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _reduce from \"./internal/_reduce.js\";\nimport map from \"./map.js\";\n/**\n * ap applies a list of functions to a list of values.\n *\n * Dispatches to the `ap` method of the second argument, if present. Also\n * treats curried functions as applicatives.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Function\n * @sig [a -> b] -> [a] -> [b]\n * @sig Apply f => f (a -> b) -> f a -> f b\n * @sig (r -> a -> b) -> (r -> a) -> (r -> b)\n * @param {*} applyF\n * @param {*} applyX\n * @return {*}\n * @example\n *\n * R.ap([R.multiply(2), R.add(3)], [1,2,3]); //=> [2, 4, 6, 4, 5, 6]\n * R.ap([R.concat('tasty '), R.toUpper], ['pizza', 'salad']); //=> [\"tasty pizza\", \"tasty salad\", \"PIZZA\", \"SALAD\"]\n *\n * // R.ap can also be used as S combinator\n * // when only two functions are passed\n * R.ap(R.concat, R.toUpper)('Ramda') //=> 'RamdaRAMDA'\n * @symb R.ap([f, g], [a, b]) = [f(a), f(b), g(a), g(b)]\n */\n\nvar ap =\n/*#__PURE__*/\n_curry2(function ap(applyF, applyX) {\n return typeof applyX['fantasy-land/ap'] === 'function' ? applyX['fantasy-land/ap'](applyF) : typeof applyF.ap === 'function' ? applyF.ap(applyX) : typeof applyF === 'function' ? function (x) {\n return applyF(x)(applyX(x));\n } : _reduce(function (acc, f) {\n return _concat(acc, map(f, applyX));\n }, [], applyF);\n});\n\nexport default ap;","import _concat from \"./internal/_concat.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns a new list containing the contents of the given list, followed by\n * the given element.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -> [a] -> [a]\n * @param {*} el The element to add to the end of the new list.\n * @param {Array} list The list of elements to add a new item to.\n * list.\n * @return {Array} A new list containing the elements of the old list followed by `el`.\n * @see R.prepend\n * @example\n *\n * R.append('tests', ['write', 'more']); //=> ['write', 'more', 'tests']\n * R.append('tests', []); //=> ['tests']\n * R.append(['tests'], ['write', 'more']); //=> ['write', 'more', ['tests']]\n */\n\nvar append =\n/*#__PURE__*/\n_curry2(function append(el, list) {\n return _concat(list, [el]);\n});\n\nexport default append;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Applies function `fn` to the argument list `args`. This is useful for\n * creating a fixed-arity function from a variadic function. `fn` should be a\n * bound function if context is significant.\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Function\n * @sig (*... -> a) -> [*] -> a\n * @param {Function} fn The function which will be called with `args`\n * @param {Array} args The arguments to call `fn` with\n * @return {*} result The result, equivalent to `fn(...args)`\n * @see R.call, R.unapply\n * @example\n *\n * const nums = [1, 2, 3, -99, 42, 6, 7];\n * R.apply(Math.max, nums); //=> 42\n * @symb R.apply(f, [a, b, c]) = f(a, b, c)\n */\n\nvar apply =\n/*#__PURE__*/\n_curry2(function apply(fn, args) {\n return fn.apply(this, args);\n});\n\nexport default apply;","import _curry1 from \"./internal/_curry1.js\";\nimport keys from \"./keys.js\";\n/**\n * Returns a list of all the enumerable own properties of the supplied object.\n * Note that the order of the output array is not guaranteed across different\n * JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -> [v]\n * @param {Object} obj The object to extract values from\n * @return {Array} An array of the values of the object's own properties.\n * @see R.valuesIn, R.keys\n * @example\n *\n * R.values({a: 1, b: 2, c: 3}); //=> [1, 2, 3]\n */\n\nvar values =\n/*#__PURE__*/\n_curry1(function values(obj) {\n var props = keys(obj);\n var len = props.length;\n var vals = [];\n var idx = 0;\n\n while (idx < len) {\n vals[idx] = obj[props[idx]];\n idx += 1;\n }\n\n return vals;\n});\n\nexport default values;","import _curry1 from \"./internal/_curry1.js\";\nimport apply from \"./apply.js\";\nimport curryN from \"./curryN.js\";\nimport max from \"./max.js\";\nimport pluck from \"./pluck.js\";\nimport reduce from \"./reduce.js\";\nimport keys from \"./keys.js\";\nimport values from \"./values.js\"; // Use custom mapValues function to avoid issues with specs that include a \"map\" key and R.map\n// delegating calls to .map\n\nfunction mapValues(fn, obj) {\n return keys(obj).reduce(function (acc, key) {\n acc[key] = fn(obj[key]);\n return acc;\n }, {});\n}\n/**\n * Given a spec object recursively mapping properties to functions, creates a\n * function producing an object of the same structure, by mapping each property\n * to the result of calling its associated function with the supplied arguments.\n *\n * @func\n * @memberOf R\n * @since v0.20.0\n * @category Function\n * @sig {k: ((a, b, ..., m) -> v)} -> ((a, b, ..., m) -> {k: v})\n * @param {Object} spec an object recursively mapping properties to functions for\n * producing the values for these properties.\n * @return {Function} A function that returns an object of the same structure\n * as `spec', with each property set to the value returned by calling its\n * associated function with the supplied arguments.\n * @see R.converge, R.juxt\n * @example\n *\n * const getMetrics = R.applySpec({\n * sum: R.add,\n * nested: { mul: R.multiply }\n * });\n * getMetrics(2, 4); // => { sum: 6, nested: { mul: 8 } }\n * @symb R.applySpec({ x: f, y: { z: g } })(a, b) = { x: f(a, b), y: { z: g(a, b) } }\n */\n\n\nvar applySpec =\n/*#__PURE__*/\n_curry1(function applySpec(spec) {\n spec = mapValues(function (v) {\n return typeof v == 'function' ? v : applySpec(v);\n }, spec);\n return curryN(reduce(max, 0, pluck('length', values(spec))), function () {\n var args = arguments;\n return mapValues(function (f) {\n return apply(f, args);\n }, spec);\n });\n});\n\nexport default applySpec;","import _curry3 from \"./internal/_curry3.js\";\n/**\n * Makes a shallow clone of an object, setting or overriding the specified\n * property with the given value. Note that this copies and flattens prototype\n * properties onto the new object as well. All non-primitive properties are\n * copied by reference.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @sig String -> a -> {k: v} -> {k: v}\n * @param {String} prop The property name to set\n * @param {*} val The new value\n * @param {Object} obj The object to clone\n * @return {Object} A new object equivalent to the original except for the changed property.\n * @see R.dissoc, R.pick\n * @example\n *\n * R.assoc('c', 3, {a: 1, b: 2}); //=> {a: 1, b: 2, c: 3}\n */\n\nvar assoc =\n/*#__PURE__*/\n_curry3(function assoc(prop, val, obj) {\n var result = {};\n\n for (var p in obj) {\n result[p] = obj[p];\n }\n\n result[prop] = val;\n return result;\n});\n\nexport default assoc;","import _curry1 from \"./internal/_curry1.js\";\n/**\n * Checks if the input value is `null` or `undefined`.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Type\n * @sig * -> Boolean\n * @param {*} x The value to test.\n * @return {Boolean} `true` if `x` is `undefined` or `null`, otherwise `false`.\n * @example\n *\n * R.isNil(null); //=> true\n * R.isNil(undefined); //=> true\n * R.isNil(0); //=> false\n * R.isNil([]); //=> false\n */\n\nvar isNil =\n/*#__PURE__*/\n_curry1(function isNil(x) {\n return x == null;\n});\n\nexport default isNil;","import _curry3 from \"./internal/_curry3.js\";\nimport _has from \"./internal/_has.js\";\nimport _isArray from \"./internal/_isArray.js\";\nimport _isInteger from \"./internal/_isInteger.js\";\nimport assoc from \"./assoc.js\";\nimport isNil from \"./isNil.js\";\n/**\n * Makes a shallow clone of an object, setting or overriding the nodes required\n * to create the given path, and placing the specific value at the tail end of\n * that path. Note that this copies and flattens prototype properties onto the\n * new object as well. All non-primitive properties are copied by reference.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @typedefn Idx = String | Int\n * @sig [Idx] -> a -> {a} -> {a}\n * @param {Array} path the path to set\n * @param {*} val The new value\n * @param {Object} obj The object to clone\n * @return {Object} A new object equivalent to the original except along the specified path.\n * @see R.dissocPath\n * @example\n *\n * R.assocPath(['a', 'b', 'c'], 42, {a: {b: {c: 0}}}); //=> {a: {b: {c: 42}}}\n *\n * // Any missing or non-object keys in path will be overridden\n * R.assocPath(['a', 'b', 'c'], 42, {a: 5}); //=> {a: {b: {c: 42}}}\n */\n\nvar assocPath =\n/*#__PURE__*/\n_curry3(function assocPath(path, val, obj) {\n if (path.length === 0) {\n return val;\n }\n\n var idx = path[0];\n\n if (path.length > 1) {\n var nextObj = !isNil(obj) && _has(idx, obj) ? obj[idx] : _isInteger(path[1]) ? [] : {};\n val = assocPath(Array.prototype.slice.call(path, 1), val, nextObj);\n }\n\n if (_isInteger(idx) && _isArray(obj)) {\n var arr = [].concat(obj);\n arr[idx] = val;\n return arr;\n } else {\n return assoc(idx, val, obj);\n }\n});\n\nexport default assocPath;","export default function _isFunction(x) {\n var type = Object.prototype.toString.call(x);\n return type === '[object Function]' || type === '[object AsyncFunction]' || type === '[object GeneratorFunction]' || type === '[object AsyncGeneratorFunction]';\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _reduce from \"./internal/_reduce.js\";\nimport ap from \"./ap.js\";\nimport curryN from \"./curryN.js\";\nimport map from \"./map.js\";\n/**\n * \"lifts\" a function to be the specified arity, so that it may \"map over\" that\n * many lists, Functions or other objects that satisfy the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply).\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Function\n * @sig Number -> (*... -> *) -> ([*]... -> [*])\n * @param {Function} fn The function to lift into higher context\n * @return {Function} The lifted function.\n * @see R.lift, R.ap\n * @example\n *\n * const madd3 = R.liftN(3, (...args) => R.sum(args));\n * madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7]\n */\n\nvar liftN =\n/*#__PURE__*/\n_curry2(function liftN(arity, fn) {\n var lifted = curryN(arity, fn);\n return curryN(arity, function () {\n return _reduce(ap, map(lifted, arguments[0]), Array.prototype.slice.call(arguments, 1));\n });\n});\n\nexport default liftN;","import _curry1 from \"./internal/_curry1.js\";\nimport liftN from \"./liftN.js\";\n/**\n * \"lifts\" a function of arity > 1 so that it may \"map over\" a list, Function or other\n * object that satisfies the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply).\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Function\n * @sig (*... -> *) -> ([*]... -> [*])\n * @param {Function} fn The function to lift into higher context\n * @return {Function} The lifted function.\n * @see R.liftN\n * @example\n *\n * const madd3 = R.lift((a, b, c) => a + b + c);\n *\n * madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7]\n *\n * const madd5 = R.lift((a, b, c, d, e) => a + b + c + d + e);\n *\n * madd5([1,2], [3], [4, 5], [6], [7, 8]); //=> [21, 22, 22, 23, 22, 23, 23, 24]\n */\n\nvar lift =\n/*#__PURE__*/\n_curry1(function lift(fn) {\n return liftN(fn.length, fn);\n});\n\nexport default lift;","import _curry1 from \"./internal/_curry1.js\";\nimport curryN from \"./curryN.js\";\n/**\n * Returns a curried equivalent of the provided function. The curried function\n * has two unusual capabilities. First, its arguments needn't be provided one\n * at a time. If `f` is a ternary function and `g` is `R.curry(f)`, the\n * following are equivalent:\n *\n * - `g(1)(2)(3)`\n * - `g(1)(2, 3)`\n * - `g(1, 2)(3)`\n * - `g(1, 2, 3)`\n *\n * Secondly, the special placeholder value [`R.__`](#__) may be used to specify\n * \"gaps\", allowing partial application of any combination of arguments,\n * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__),\n * the following are equivalent:\n *\n * - `g(1, 2, 3)`\n * - `g(_, 2, 3)(1)`\n * - `g(_, _, 3)(1)(2)`\n * - `g(_, _, 3)(1, 2)`\n * - `g(_, 2)(1)(3)`\n * - `g(_, 2)(1, 3)`\n * - `g(_, 2)(_, 3)(1)`\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (* -> a) -> (* -> a)\n * @param {Function} fn The function to curry.\n * @return {Function} A new, curried function.\n * @see R.curryN, R.partial\n * @example\n *\n * const addFourNumbers = (a, b, c, d) => a + b + c + d;\n *\n * const curriedAddFourNumbers = R.curry(addFourNumbers);\n * const f = curriedAddFourNumbers(1, 2);\n * const g = f(3);\n * g(4); //=> 10\n */\n\nvar curry =\n/*#__PURE__*/\n_curry1(function curry(fn) {\n return curryN(fn.length, fn);\n});\n\nexport default curry;","import _curry1 from \"./internal/_curry1.js\";\n/**\n * Gives a single-word string description of the (native) type of a value,\n * returning such answers as 'Object', 'Number', 'Array', or 'Null'. Does not\n * attempt to distinguish user Object types any further, reporting them all as\n * 'Object'.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Type\n * @sig (* -> {*}) -> String\n * @param {*} val The value to test\n * @return {String}\n * @example\n *\n * R.type({}); //=> \"Object\"\n * R.type(1); //=> \"Number\"\n * R.type(false); //=> \"Boolean\"\n * R.type('s'); //=> \"String\"\n * R.type(null); //=> \"Null\"\n * R.type([]); //=> \"Array\"\n * R.type(/[A-z]/); //=> \"RegExp\"\n * R.type(() => {}); //=> \"Function\"\n * R.type(undefined); //=> \"Undefined\"\n */\n\nvar type =\n/*#__PURE__*/\n_curry1(function type(val) {\n return val === null ? 'Null' : val === undefined ? 'Undefined' : Object.prototype.toString.call(val).slice(8, -1);\n});\n\nexport default type;","import _curry1 from \"./internal/_curry1.js\";\n/**\n * A function that returns the `!` of its argument. It will return `true` when\n * passed false-y value, and `false` when passed a truth-y one.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig * -> Boolean\n * @param {*} a any value\n * @return {Boolean} the logical inverse of passed argument.\n * @see R.complement\n * @example\n *\n * R.not(true); //=> false\n * R.not(false); //=> true\n * R.not(0); //=> true\n * R.not(1); //=> false\n */\n\nvar not =\n/*#__PURE__*/\n_curry1(function not(a) {\n return !a;\n});\n\nexport default not;","import lift from \"./lift.js\";\nimport not from \"./not.js\";\n/**\n * Takes a function `f` and returns a function `g` such that if called with the same arguments\n * when `f` returns a \"truthy\" value, `g` returns `false` and when `f` returns a \"falsy\" value `g` returns `true`.\n *\n * `R.complement` may be applied to any functor\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category Logic\n * @sig (*... -> *) -> (*... -> Boolean)\n * @param {Function} f\n * @return {Function}\n * @see R.not\n * @example\n *\n * const isNotNil = R.complement(R.isNil);\n * isNil(null); //=> true\n * isNotNil(null); //=> false\n * isNil(7); //=> false\n * isNotNil(7); //=> true\n */\n\nvar complement =\n/*#__PURE__*/\nlift(not);\nexport default complement;","export default function _pipe(f, g) {\n return function () {\n return g.call(this, f.apply(this, arguments));\n };\n}","import _isArray from \"./_isArray.js\";\n/**\n * This checks whether a function has a [methodname] function. If it isn't an\n * array it will execute that function otherwise it will default to the ramda\n * implementation.\n *\n * @private\n * @param {Function} fn ramda implemtation\n * @param {String} methodname property to check for a custom implementation\n * @return {Object} Whatever the return value of the method is.\n */\n\nexport default function _checkForMethod(methodname, fn) {\n return function () {\n var length = arguments.length;\n\n if (length === 0) {\n return fn();\n }\n\n var obj = arguments[length - 1];\n return _isArray(obj) || typeof obj[methodname] !== 'function' ? fn.apply(this, arguments) : obj[methodname].apply(obj, Array.prototype.slice.call(arguments, 0, length - 1));\n };\n}","import _checkForMethod from \"./internal/_checkForMethod.js\";\nimport _curry3 from \"./internal/_curry3.js\";\n/**\n * Returns the elements of the given list or string (or object with a `slice`\n * method) from `fromIndex` (inclusive) to `toIndex` (exclusive).\n *\n * Dispatches to the `slice` method of the third argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.4\n * @category List\n * @sig Number -> Number -> [a] -> [a]\n * @sig Number -> Number -> String -> String\n * @param {Number} fromIndex The start index (inclusive).\n * @param {Number} toIndex The end index (exclusive).\n * @param {*} list\n * @return {*}\n * @example\n *\n * R.slice(1, 3, ['a', 'b', 'c', 'd']); //=> ['b', 'c']\n * R.slice(1, Infinity, ['a', 'b', 'c', 'd']); //=> ['b', 'c', 'd']\n * R.slice(0, -1, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c']\n * R.slice(-3, -1, ['a', 'b', 'c', 'd']); //=> ['b', 'c']\n * R.slice(0, 3, 'ramda'); //=> 'ram'\n */\n\nvar slice =\n/*#__PURE__*/\n_curry3(\n/*#__PURE__*/\n_checkForMethod('slice', function slice(fromIndex, toIndex, list) {\n return Array.prototype.slice.call(list, fromIndex, toIndex);\n}));\n\nexport default slice;","import _checkForMethod from \"./internal/_checkForMethod.js\";\nimport _curry1 from \"./internal/_curry1.js\";\nimport slice from \"./slice.js\";\n/**\n * Returns all but the first element of the given list or string (or object\n * with a `tail` method).\n *\n * Dispatches to the `slice` method of the first argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @sig String -> String\n * @param {*} list\n * @return {*}\n * @see R.head, R.init, R.last\n * @example\n *\n * R.tail([1, 2, 3]); //=> [2, 3]\n * R.tail([1, 2]); //=> [2]\n * R.tail([1]); //=> []\n * R.tail([]); //=> []\n *\n * R.tail('abc'); //=> 'bc'\n * R.tail('ab'); //=> 'b'\n * R.tail('a'); //=> ''\n * R.tail(''); //=> ''\n */\n\nvar tail =\n/*#__PURE__*/\n_curry1(\n/*#__PURE__*/\n_checkForMethod('tail',\n/*#__PURE__*/\nslice(1, Infinity)));\n\nexport default tail;","import _arity from \"./internal/_arity.js\";\nimport _pipe from \"./internal/_pipe.js\";\nimport reduce from \"./reduce.js\";\nimport tail from \"./tail.js\";\n/**\n * Performs left-to-right function composition. The first argument may have\n * any arity; the remaining arguments must be unary.\n *\n * In some libraries this function is named `sequence`.\n *\n * **Note:** The result of pipe is not automatically curried.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (((a, b, ..., n) -> o), (o -> p), ..., (x -> y), (y -> z)) -> ((a, b, ..., n) -> z)\n * @param {...Function} functions\n * @return {Function}\n * @see R.compose\n * @example\n *\n * const f = R.pipe(Math.pow, R.negate, R.inc);\n *\n * f(3, 4); // -(3^4) + 1\n * @symb R.pipe(f, g, h)(a, b) = h(g(f(a, b)))\n */\n\nexport default function pipe() {\n if (arguments.length === 0) {\n throw new Error('pipe requires at least one argument');\n }\n\n return _arity(arguments[0].length, reduce(_pipe, arguments[0], tail(arguments)));\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _isString from \"./internal/_isString.js\";\n/**\n * Returns a new list or string with the elements or characters in reverse\n * order.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @sig String -> String\n * @param {Array|String} list\n * @return {Array|String}\n * @example\n *\n * R.reverse([1, 2, 3]); //=> [3, 2, 1]\n * R.reverse([1, 2]); //=> [2, 1]\n * R.reverse([1]); //=> [1]\n * R.reverse([]); //=> []\n *\n * R.reverse('abc'); //=> 'cba'\n * R.reverse('ab'); //=> 'ba'\n * R.reverse('a'); //=> 'a'\n * R.reverse(''); //=> ''\n */\n\nvar reverse =\n/*#__PURE__*/\n_curry1(function reverse(list) {\n return _isString(list) ? list.split('').reverse().join('') : Array.prototype.slice.call(list, 0).reverse();\n});\n\nexport default reverse;","import pipe from \"./pipe.js\";\nimport reverse from \"./reverse.js\";\n/**\n * Performs right-to-left function composition. The last argument may have\n * any arity; the remaining arguments must be unary.\n *\n * **Note:** The result of compose is not automatically curried.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig ((y -> z), (x -> y), ..., (o -> p), ((a, b, ..., n) -> o)) -> ((a, b, ..., n) -> z)\n * @param {...Function} ...functions The functions to compose\n * @return {Function}\n * @see R.pipe\n * @example\n *\n * const classyGreeting = (firstName, lastName) => \"The name's \" + lastName + \", \" + firstName + \" \" + lastName\n * const yellGreeting = R.compose(R.toUpper, classyGreeting);\n * yellGreeting('James', 'Bond'); //=> \"THE NAME'S BOND, JAMES BOND\"\n *\n * R.compose(Math.abs, R.add(1), R.multiply(2))(-4) //=> 7\n *\n * @symb R.compose(f, g, h)(a, b) = f(g(h(a, b)))\n */\n\nexport default function compose() {\n if (arguments.length === 0) {\n throw new Error('compose requires at least one argument');\n }\n\n return pipe.apply(this, reverse(arguments));\n}","import nth from \"./nth.js\";\n/**\n * Returns the first element of the given list or string. In some libraries\n * this function is named `first`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> a | Undefined\n * @sig String -> String\n * @param {Array|String} list\n * @return {*}\n * @see R.tail, R.init, R.last\n * @example\n *\n * R.head(['fi', 'fo', 'fum']); //=> 'fi'\n * R.head([]); //=> undefined\n *\n * R.head('abc'); //=> 'a'\n * R.head(''); //=> ''\n */\n\nvar head =\n/*#__PURE__*/\nnth(0);\nexport default head;","export default function _identity(x) {\n return x;\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _identity from \"./internal/_identity.js\";\n/**\n * A function that does nothing but return the parameter supplied to it. Good\n * as a default or placeholder function.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig a -> a\n * @param {*} x The value to return.\n * @return {*} The input value, `x`.\n * @example\n *\n * R.identity(1); //=> 1\n *\n * const obj = {};\n * R.identity(obj) === obj; //=> true\n * @symb R.identity(a) = a\n */\n\nvar identity =\n/*#__PURE__*/\n_curry1(_identity);\n\nexport default identity;","export default function _arrayFromIterator(iter) {\n var list = [];\n var next;\n\n while (!(next = iter.next()).done) {\n list.push(next.value);\n }\n\n return list;\n}","export default function _includesWith(pred, x, list) {\n var idx = 0;\n var len = list.length;\n\n while (idx < len) {\n if (pred(x, list[idx])) {\n return true;\n }\n\n idx += 1;\n }\n\n return false;\n}","// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction _objectIs(a, b) {\n // SameValue algorithm\n if (a === b) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return a !== 0 || 1 / a === 1 / b;\n } else {\n // Step 6.a: NaN == NaN\n return a !== a && b !== b;\n }\n}\n\nexport default typeof Object.is === 'function' ? Object.is : _objectIs;","import _arrayFromIterator from \"./_arrayFromIterator.js\";\nimport _includesWith from \"./_includesWith.js\";\nimport _functionName from \"./_functionName.js\";\nimport _has from \"./_has.js\";\nimport _objectIs from \"./_objectIs.js\";\nimport keys from \"../keys.js\";\nimport type from \"../type.js\";\n/**\n * private _uniqContentEquals function.\n * That function is checking equality of 2 iterator contents with 2 assumptions\n * - iterators lengths are the same\n * - iterators values are unique\n *\n * false-positive result will be returned for comparision of, e.g.\n * - [1,2,3] and [1,2,3,4]\n * - [1,1,1] and [1,2,3]\n * */\n\nfunction _uniqContentEquals(aIterator, bIterator, stackA, stackB) {\n var a = _arrayFromIterator(aIterator);\n\n var b = _arrayFromIterator(bIterator);\n\n function eq(_a, _b) {\n return _equals(_a, _b, stackA.slice(), stackB.slice());\n } // if *a* array contains any element that is not included in *b*\n\n\n return !_includesWith(function (b, aItem) {\n return !_includesWith(eq, aItem, b);\n }, b, a);\n}\n\nexport default function _equals(a, b, stackA, stackB) {\n if (_objectIs(a, b)) {\n return true;\n }\n\n var typeA = type(a);\n\n if (typeA !== type(b)) {\n return false;\n }\n\n if (a == null || b == null) {\n return false;\n }\n\n if (typeof a['fantasy-land/equals'] === 'function' || typeof b['fantasy-land/equals'] === 'function') {\n return typeof a['fantasy-land/equals'] === 'function' && a['fantasy-land/equals'](b) && typeof b['fantasy-land/equals'] === 'function' && b['fantasy-land/equals'](a);\n }\n\n if (typeof a.equals === 'function' || typeof b.equals === 'function') {\n return typeof a.equals === 'function' && a.equals(b) && typeof b.equals === 'function' && b.equals(a);\n }\n\n switch (typeA) {\n case 'Arguments':\n case 'Array':\n case 'Object':\n if (typeof a.constructor === 'function' && _functionName(a.constructor) === 'Promise') {\n return a === b;\n }\n\n break;\n\n case 'Boolean':\n case 'Number':\n case 'String':\n if (!(typeof a === typeof b && _objectIs(a.valueOf(), b.valueOf()))) {\n return false;\n }\n\n break;\n\n case 'Date':\n if (!_objectIs(a.valueOf(), b.valueOf())) {\n return false;\n }\n\n break;\n\n case 'Error':\n return a.name === b.name && a.message === b.message;\n\n case 'RegExp':\n if (!(a.source === b.source && a.global === b.global && a.ignoreCase === b.ignoreCase && a.multiline === b.multiline && a.sticky === b.sticky && a.unicode === b.unicode)) {\n return false;\n }\n\n break;\n }\n\n var idx = stackA.length - 1;\n\n while (idx >= 0) {\n if (stackA[idx] === a) {\n return stackB[idx] === b;\n }\n\n idx -= 1;\n }\n\n switch (typeA) {\n case 'Map':\n if (a.size !== b.size) {\n return false;\n }\n\n return _uniqContentEquals(a.entries(), b.entries(), stackA.concat([a]), stackB.concat([b]));\n\n case 'Set':\n if (a.size !== b.size) {\n return false;\n }\n\n return _uniqContentEquals(a.values(), b.values(), stackA.concat([a]), stackB.concat([b]));\n\n case 'Arguments':\n case 'Array':\n case 'Object':\n case 'Boolean':\n case 'Number':\n case 'String':\n case 'Date':\n case 'Error':\n case 'RegExp':\n case 'Int8Array':\n case 'Uint8Array':\n case 'Uint8ClampedArray':\n case 'Int16Array':\n case 'Uint16Array':\n case 'Int32Array':\n case 'Uint32Array':\n case 'Float32Array':\n case 'Float64Array':\n case 'ArrayBuffer':\n break;\n\n default:\n // Values of other types are only equal if identical.\n return false;\n }\n\n var keysA = keys(a);\n\n if (keysA.length !== keys(b).length) {\n return false;\n }\n\n var extendedStackA = stackA.concat([a]);\n var extendedStackB = stackB.concat([b]);\n idx = keysA.length - 1;\n\n while (idx >= 0) {\n var key = keysA[idx];\n\n if (!(_has(key, b) && _equals(b[key], a[key], extendedStackA, extendedStackB))) {\n return false;\n }\n\n idx -= 1;\n }\n\n return true;\n}","export default function _functionName(f) {\n // String(x => x) evaluates to \"x => x\", so the pattern may not match.\n var match = String(f).match(/^function (\\w*)/);\n return match == null ? '' : match[1];\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _equals from \"./internal/_equals.js\";\n/**\n * Returns `true` if its arguments are equivalent, `false` otherwise. Handles\n * cyclical data structures.\n *\n * Dispatches symmetrically to the `equals` methods of both arguments, if\n * present.\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category Relation\n * @sig a -> b -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @example\n *\n * R.equals(1, 1); //=> true\n * R.equals(1, '1'); //=> false\n * R.equals([1, 2, 3], [1, 2, 3]); //=> true\n *\n * const a = {}; a.v = a;\n * const b = {}; b.v = b;\n * R.equals(a, b); //=> true\n */\n\nvar equals =\n/*#__PURE__*/\n_curry2(function equals(a, b) {\n return _equals(a, b, [], []);\n});\n\nexport default equals;","import _indexOf from \"./_indexOf.js\";\nexport default function _includes(a, list) {\n return _indexOf(list, a, 0) >= 0;\n}","import equals from \"../equals.js\";\nexport default function _indexOf(list, a, idx) {\n var inf, item; // Array.prototype.indexOf doesn't exist below IE9\n\n if (typeof list.indexOf === 'function') {\n switch (typeof a) {\n case 'number':\n if (a === 0) {\n // manually crawl the list to distinguish between +0 and -0\n inf = 1 / a;\n\n while (idx < list.length) {\n item = list[idx];\n\n if (item === 0 && 1 / item === inf) {\n return idx;\n }\n\n idx += 1;\n }\n\n return -1;\n } else if (a !== a) {\n // NaN\n while (idx < list.length) {\n item = list[idx];\n\n if (typeof item === 'number' && item !== item) {\n return idx;\n }\n\n idx += 1;\n }\n\n return -1;\n } // non-zero numbers can utilise Set\n\n\n return list.indexOf(a, idx);\n // all these types can utilise Set\n\n case 'string':\n case 'boolean':\n case 'function':\n case 'undefined':\n return list.indexOf(a, idx);\n\n case 'object':\n if (a === null) {\n // null can utilise Set\n return list.indexOf(a, idx);\n }\n\n }\n } // anything else not covered above, defer to R.equals\n\n\n while (idx < list.length) {\n if (equals(list[idx], a)) {\n return idx;\n }\n\n idx += 1;\n }\n\n return -1;\n}","export default function _quote(s) {\n var escaped = s.replace(/\\\\/g, '\\\\\\\\').replace(/[\\b]/g, '\\\\b') // \\b matches word boundary; [\\b] matches backspace\n .replace(/\\f/g, '\\\\f').replace(/\\n/g, '\\\\n').replace(/\\r/g, '\\\\r').replace(/\\t/g, '\\\\t').replace(/\\v/g, '\\\\v').replace(/\\0/g, '\\\\0');\n return '\"' + escaped.replace(/\"/g, '\\\\\"') + '\"';\n}","/**\n * Polyfill from .\n */\nvar pad = function pad(n) {\n return (n < 10 ? '0' : '') + n;\n};\n\nvar _toISOString = typeof Date.prototype.toISOString === 'function' ? function _toISOString(d) {\n return d.toISOString();\n} : function _toISOString(d) {\n return d.getUTCFullYear() + '-' + pad(d.getUTCMonth() + 1) + '-' + pad(d.getUTCDate()) + 'T' + pad(d.getUTCHours()) + ':' + pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds()) + '.' + (d.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) + 'Z';\n};\n\nexport default _toISOString;","export default function _filter(fn, list) {\n var idx = 0;\n var len = list.length;\n var result = [];\n\n while (idx < len) {\n if (fn(list[idx])) {\n result[result.length] = list[idx];\n }\n\n idx += 1;\n }\n\n return result;\n}","export default function _isObject(x) {\n return Object.prototype.toString.call(x) === '[object Object]';\n}","import _curry2 from \"./_curry2.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XFilter =\n/*#__PURE__*/\nfunction () {\n function XFilter(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n\n XFilter.prototype['@@transducer/init'] = _xfBase.init;\n XFilter.prototype['@@transducer/result'] = _xfBase.result;\n\n XFilter.prototype['@@transducer/step'] = function (result, input) {\n return this.f(input) ? this.xf['@@transducer/step'](result, input) : result;\n };\n\n return XFilter;\n}();\n\nvar _xfilter =\n/*#__PURE__*/\n_curry2(function _xfilter(f, xf) {\n return new XFilter(f, xf);\n});\n\nexport default _xfilter;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _filter from \"./internal/_filter.js\";\nimport _isObject from \"./internal/_isObject.js\";\nimport _reduce from \"./internal/_reduce.js\";\nimport _xfilter from \"./internal/_xfilter.js\";\nimport keys from \"./keys.js\";\n/**\n * Takes a predicate and a `Filterable`, and returns a new filterable of the\n * same type containing the members of the given filterable which satisfy the\n * given predicate. Filterable objects include plain objects or any object\n * that has a filter method such as `Array`.\n *\n * Dispatches to the `filter` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Filterable f => (a -> Boolean) -> f a -> f a\n * @param {Function} pred\n * @param {Array} filterable\n * @return {Array} Filterable\n * @see R.reject, R.transduce, R.addIndex\n * @example\n *\n * const isEven = n => n % 2 === 0;\n *\n * R.filter(isEven, [1, 2, 3, 4]); //=> [2, 4]\n *\n * R.filter(isEven, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4}\n */\n\nvar filter =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable(['filter'], _xfilter, function (pred, filterable) {\n return _isObject(filterable) ? _reduce(function (acc, key) {\n if (pred(filterable[key])) {\n acc[key] = filterable[key];\n }\n\n return acc;\n }, {}, keys(filterable)) : // else\n _filter(pred, filterable);\n}));\n\nexport default filter;","import _complement from \"./internal/_complement.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport filter from \"./filter.js\";\n/**\n * The complement of [`filter`](#filter).\n *\n * Acts as a transducer if a transformer is given in list position. Filterable\n * objects include plain objects or any object that has a filter method such\n * as `Array`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Filterable f => (a -> Boolean) -> f a -> f a\n * @param {Function} pred\n * @param {Array} filterable\n * @return {Array}\n * @see R.filter, R.transduce, R.addIndex\n * @example\n *\n * const isOdd = (n) => n % 2 === 1;\n *\n * R.reject(isOdd, [1, 2, 3, 4]); //=> [2, 4]\n *\n * R.reject(isOdd, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4}\n */\n\nvar reject =\n/*#__PURE__*/\n_curry2(function reject(pred, filterable) {\n return filter(_complement(pred), filterable);\n});\n\nexport default reject;","export default function _complement(f) {\n return function () {\n return !f.apply(this, arguments);\n };\n}","import _includes from \"./_includes.js\";\nimport _map from \"./_map.js\";\nimport _quote from \"./_quote.js\";\nimport _toISOString from \"./_toISOString.js\";\nimport keys from \"../keys.js\";\nimport reject from \"../reject.js\";\nexport default function _toString(x, seen) {\n var recur = function recur(y) {\n var xs = seen.concat([x]);\n return _includes(y, xs) ? '' : _toString(y, xs);\n }; // mapPairs :: (Object, [String]) -> [String]\n\n\n var mapPairs = function (obj, keys) {\n return _map(function (k) {\n return _quote(k) + ': ' + recur(obj[k]);\n }, keys.slice().sort());\n };\n\n switch (Object.prototype.toString.call(x)) {\n case '[object Arguments]':\n return '(function() { return arguments; }(' + _map(recur, x).join(', ') + '))';\n\n case '[object Array]':\n return '[' + _map(recur, x).concat(mapPairs(x, reject(function (k) {\n return /^\\d+$/.test(k);\n }, keys(x)))).join(', ') + ']';\n\n case '[object Boolean]':\n return typeof x === 'object' ? 'new Boolean(' + recur(x.valueOf()) + ')' : x.toString();\n\n case '[object Date]':\n return 'new Date(' + (isNaN(x.valueOf()) ? recur(NaN) : _quote(_toISOString(x))) + ')';\n\n case '[object Null]':\n return 'null';\n\n case '[object Number]':\n return typeof x === 'object' ? 'new Number(' + recur(x.valueOf()) + ')' : 1 / x === -Infinity ? '-0' : x.toString(10);\n\n case '[object String]':\n return typeof x === 'object' ? 'new String(' + recur(x.valueOf()) + ')' : _quote(x);\n\n case '[object Undefined]':\n return 'undefined';\n\n default:\n if (typeof x.toString === 'function') {\n var repr = x.toString();\n\n if (repr !== '[object Object]') {\n return repr;\n }\n }\n\n return '{' + mapPairs(x, keys(x)).join(', ') + '}';\n }\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _toString from \"./internal/_toString.js\";\n/**\n * Returns the string representation of the given value. `eval`'ing the output\n * should result in a value equivalent to the input value. Many of the built-in\n * `toString` methods do not satisfy this requirement.\n *\n * If the given value is an `[object Object]` with a `toString` method other\n * than `Object.prototype.toString`, this method is invoked with no arguments\n * to produce the return value. This means user-defined constructor functions\n * can provide a suitable `toString` method. For example:\n *\n * function Point(x, y) {\n * this.x = x;\n * this.y = y;\n * }\n *\n * Point.prototype.toString = function() {\n * return 'new Point(' + this.x + ', ' + this.y + ')';\n * };\n *\n * R.toString(new Point(1, 2)); //=> 'new Point(1, 2)'\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category String\n * @sig * -> String\n * @param {*} val\n * @return {String}\n * @example\n *\n * R.toString(42); //=> '42'\n * R.toString('abc'); //=> '\"abc\"'\n * R.toString([1, 2, 3]); //=> '[1, 2, 3]'\n * R.toString({foo: 1, bar: 2, baz: 3}); //=> '{\"bar\": 2, \"baz\": 3, \"foo\": 1}'\n * R.toString(new Date('2001-02-03T04:05:06Z')); //=> 'new Date(\"2001-02-03T04:05:06.000Z\")'\n */\n\nvar toString =\n/*#__PURE__*/\n_curry1(function toString(val) {\n return _toString(val, []);\n});\n\nexport default toString;","import _curry2 from \"./internal/_curry2.js\";\nimport _isArray from \"./internal/_isArray.js\";\nimport _isFunction from \"./internal/_isFunction.js\";\nimport _isString from \"./internal/_isString.js\";\nimport toString from \"./toString.js\";\n/**\n * Returns the result of concatenating the given lists or strings.\n *\n * Note: `R.concat` expects both arguments to be of the same type,\n * unlike the native `Array.prototype.concat` method. It will throw\n * an error if you `concat` an Array with a non-Array value.\n *\n * Dispatches to the `concat` method of the first argument, if present.\n * Can also concatenate two members of a [fantasy-land\n * compatible semigroup](https://github.com/fantasyland/fantasy-land#semigroup).\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a] -> [a]\n * @sig String -> String -> String\n * @param {Array|String} firstList The first list\n * @param {Array|String} secondList The second list\n * @return {Array|String} A list consisting of the elements of `firstList` followed by the elements of\n * `secondList`.\n *\n * @example\n *\n * R.concat('ABC', 'DEF'); // 'ABCDEF'\n * R.concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3]\n * R.concat([], []); //=> []\n */\n\nvar concat =\n/*#__PURE__*/\n_curry2(function concat(a, b) {\n if (_isArray(a)) {\n if (_isArray(b)) {\n return a.concat(b);\n }\n\n throw new TypeError(toString(b) + ' is not an array');\n }\n\n if (_isString(a)) {\n if (_isString(b)) {\n return a + b;\n }\n\n throw new TypeError(toString(b) + ' is not a string');\n }\n\n if (a != null && _isFunction(a['fantasy-land/concat'])) {\n return a['fantasy-land/concat'](b);\n }\n\n if (a != null && _isFunction(a.concat)) {\n return a.concat(b);\n }\n\n throw new TypeError(toString(a) + ' does not have a method named \"concat\" or \"fantasy-land/concat\"');\n});\n\nexport default concat;","import _arity from \"./internal/_arity.js\";\nimport _curry1 from \"./internal/_curry1.js\";\nimport map from \"./map.js\";\nimport max from \"./max.js\";\nimport reduce from \"./reduce.js\";\n/**\n * Returns a function, `fn`, which encapsulates `if/else, if/else, ...` logic.\n * `R.cond` takes a list of [predicate, transformer] pairs. All of the arguments\n * to `fn` are applied to each of the predicates in turn until one returns a\n * \"truthy\" value, at which point `fn` returns the result of applying its\n * arguments to the corresponding transformer. If none of the predicates\n * matches, `fn` returns undefined.\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Logic\n * @sig [[(*... -> Boolean),(*... -> *)]] -> (*... -> *)\n * @param {Array} pairs A list of [predicate, transformer]\n * @return {Function}\n * @see R.ifElse, R.unless, R.when\n * @example\n *\n * const fn = R.cond([\n * [R.equals(0), R.always('water freezes at 0°C')],\n * [R.equals(100), R.always('water boils at 100°C')],\n * [R.T, temp => 'nothing special happens at ' + temp + '°C']\n * ]);\n * fn(0); //=> 'water freezes at 0°C'\n * fn(50); //=> 'nothing special happens at 50°C'\n * fn(100); //=> 'water boils at 100°C'\n */\n\nvar cond =\n/*#__PURE__*/\n_curry1(function cond(pairs) {\n var arity = reduce(max, 0, map(function (pair) {\n return pair[0].length;\n }, pairs));\n return _arity(arity, function () {\n var idx = 0;\n\n while (idx < pairs.length) {\n if (pairs[idx][0].apply(this, arguments)) {\n return pairs[idx][1].apply(this, arguments);\n }\n\n idx += 1;\n }\n });\n});\n\nexport default cond;","import _curry2 from \"./internal/_curry2.js\";\nimport _map from \"./internal/_map.js\";\nimport curryN from \"./curryN.js\";\nimport max from \"./max.js\";\nimport pluck from \"./pluck.js\";\nimport reduce from \"./reduce.js\";\n/**\n * Accepts a converging function and a list of branching functions and returns\n * a new function. The arity of the new function is the same as the arity of\n * the longest branching function. When invoked, this new function is applied\n * to some arguments, and each branching function is applied to those same\n * arguments. The results of each branching function are passed as arguments\n * to the converging function to produce the return value.\n *\n * @func\n * @memberOf R\n * @since v0.4.2\n * @category Function\n * @sig ((x1, x2, ...) -> z) -> [((a, b, ...) -> x1), ((a, b, ...) -> x2), ...] -> (a -> b -> ... -> z)\n * @param {Function} after A function. `after` will be invoked with the return values of\n * `fn1` and `fn2` as its arguments.\n * @param {Array} functions A list of functions.\n * @return {Function} A new function.\n * @see R.useWith\n * @example\n *\n * const average = R.converge(R.divide, [R.sum, R.length])\n * average([1, 2, 3, 4, 5, 6, 7]) //=> 4\n *\n * const strangeConcat = R.converge(R.concat, [R.toUpper, R.toLower])\n * strangeConcat(\"Yodel\") //=> \"YODELyodel\"\n *\n * @symb R.converge(f, [g, h])(a, b) = f(g(a, b), h(a, b))\n */\n\nvar converge =\n/*#__PURE__*/\n_curry2(function converge(after, fns) {\n return curryN(reduce(max, 0, pluck('length', fns)), function () {\n var args = arguments;\n var context = this;\n return after.apply(context, _map(function (fn) {\n return fn.apply(context, args);\n }, fns));\n });\n});\n\nexport default converge;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns the second argument if it is not `null`, `undefined` or `NaN`;\n * otherwise the first argument is returned.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Logic\n * @sig a -> b -> a | b\n * @param {a} default The default value.\n * @param {b} val `val` will be returned instead of `default` unless `val` is `null`, `undefined` or `NaN`.\n * @return {*} The second value if it is not `null`, `undefined` or `NaN`, otherwise the default value\n * @example\n *\n * const defaultTo42 = R.defaultTo(42);\n *\n * defaultTo42(null); //=> 42\n * defaultTo42(undefined); //=> 42\n * defaultTo42(false); //=> false\n * defaultTo42('Ramda'); //=> 'Ramda'\n * // parseInt('string') results in NaN\n * defaultTo42(parseInt('string')); //=> 42\n */\n\nvar defaultTo =\n/*#__PURE__*/\n_curry2(function defaultTo(d, v) {\n return v == null || v !== v ? d : v;\n});\n\nexport default defaultTo;","import _includes from \"./_includes.js\";\n\nvar _Set =\n/*#__PURE__*/\nfunction () {\n function _Set() {\n /* globals Set */\n this._nativeSet = typeof Set === 'function' ? new Set() : null;\n this._items = {};\n }\n\n // until we figure out why jsdoc chokes on this\n // @param item The item to add to the Set\n // @returns {boolean} true if the item did not exist prior, otherwise false\n //\n _Set.prototype.add = function (item) {\n return !hasOrAdd(item, true, this);\n }; //\n // @param item The item to check for existence in the Set\n // @returns {boolean} true if the item exists in the Set, otherwise false\n //\n\n\n _Set.prototype.has = function (item) {\n return hasOrAdd(item, false, this);\n }; //\n // Combines the logic for checking whether an item is a member of the set and\n // for adding a new item to the set.\n //\n // @param item The item to check or add to the Set instance.\n // @param shouldAdd If true, the item will be added to the set if it doesn't\n // already exist.\n // @param set The set instance to check or add to.\n // @return {boolean} true if the item already existed, otherwise false.\n //\n\n\n return _Set;\n}();\n\nfunction hasOrAdd(item, shouldAdd, set) {\n var type = typeof item;\n var prevSize, newSize;\n\n switch (type) {\n case 'string':\n case 'number':\n // distinguish between +0 and -0\n if (item === 0 && 1 / item === -Infinity) {\n if (set._items['-0']) {\n return true;\n } else {\n if (shouldAdd) {\n set._items['-0'] = true;\n }\n\n return false;\n }\n } // these types can all utilise the native Set\n\n\n if (set._nativeSet !== null) {\n if (shouldAdd) {\n prevSize = set._nativeSet.size;\n\n set._nativeSet.add(item);\n\n newSize = set._nativeSet.size;\n return newSize === prevSize;\n } else {\n return set._nativeSet.has(item);\n }\n } else {\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = {};\n set._items[type][item] = true;\n }\n\n return false;\n } else if (item in set._items[type]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type][item] = true;\n }\n\n return false;\n }\n }\n\n case 'boolean':\n // set._items['boolean'] holds a two element array\n // representing [ falseExists, trueExists ]\n if (type in set._items) {\n var bIdx = item ? 1 : 0;\n\n if (set._items[type][bIdx]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type][bIdx] = true;\n }\n\n return false;\n }\n } else {\n if (shouldAdd) {\n set._items[type] = item ? [false, true] : [true, false];\n }\n\n return false;\n }\n\n case 'function':\n // compare functions for reference equality\n if (set._nativeSet !== null) {\n if (shouldAdd) {\n prevSize = set._nativeSet.size;\n\n set._nativeSet.add(item);\n\n newSize = set._nativeSet.size;\n return newSize === prevSize;\n } else {\n return set._nativeSet.has(item);\n }\n } else {\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = [item];\n }\n\n return false;\n }\n\n if (!_includes(item, set._items[type])) {\n if (shouldAdd) {\n set._items[type].push(item);\n }\n\n return false;\n }\n\n return true;\n }\n\n case 'undefined':\n if (set._items[type]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type] = true;\n }\n\n return false;\n }\n\n case 'object':\n if (item === null) {\n if (!set._items['null']) {\n if (shouldAdd) {\n set._items['null'] = true;\n }\n\n return false;\n }\n\n return true;\n }\n\n /* falls through */\n\n default:\n // reduce the search size of heterogeneous sets by creating buckets\n // for each type.\n type = Object.prototype.toString.call(item);\n\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = [item];\n }\n\n return false;\n } // scan through all previously applied items\n\n\n if (!_includes(item, set._items[type])) {\n if (shouldAdd) {\n set._items[type].push(item);\n }\n\n return false;\n }\n\n return true;\n }\n} // A simple Set type that honours R.equals semantics\n\n\nexport default _Set;","import _curry2 from \"./_curry2.js\";\nimport _reduced from \"./_reduced.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XTake =\n/*#__PURE__*/\nfunction () {\n function XTake(n, xf) {\n this.xf = xf;\n this.n = n;\n this.i = 0;\n }\n\n XTake.prototype['@@transducer/init'] = _xfBase.init;\n XTake.prototype['@@transducer/result'] = _xfBase.result;\n\n XTake.prototype['@@transducer/step'] = function (result, input) {\n this.i += 1;\n var ret = this.n === 0 ? result : this.xf['@@transducer/step'](result, input);\n return this.n >= 0 && this.i >= this.n ? _reduced(ret) : ret;\n };\n\n return XTake;\n}();\n\nvar _xtake =\n/*#__PURE__*/\n_curry2(function _xtake(n, xf) {\n return new XTake(n, xf);\n});\n\nexport default _xtake;","export default function _reduced(x) {\n return x && x['@@transducer/reduced'] ? x : {\n '@@transducer/value': x,\n '@@transducer/reduced': true\n };\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xtake from \"./internal/_xtake.js\";\nimport slice from \"./slice.js\";\n/**\n * Returns the first `n` elements of the given list, string, or\n * transducer/transformer (or object with a `take` method).\n *\n * Dispatches to the `take` method of the second argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -> [a] -> [a]\n * @sig Number -> String -> String\n * @param {Number} n\n * @param {*} list\n * @return {*}\n * @see R.drop\n * @example\n *\n * R.take(1, ['foo', 'bar', 'baz']); //=> ['foo']\n * R.take(2, ['foo', 'bar', 'baz']); //=> ['foo', 'bar']\n * R.take(3, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz']\n * R.take(4, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz']\n * R.take(3, 'ramda'); //=> 'ram'\n *\n * const personnel = [\n * 'Dave Brubeck',\n * 'Paul Desmond',\n * 'Eugene Wright',\n * 'Joe Morello',\n * 'Gerry Mulligan',\n * 'Bob Bates',\n * 'Joe Dodge',\n * 'Ron Crotty'\n * ];\n *\n * const takeFive = R.take(5);\n * takeFive(personnel);\n * //=> ['Dave Brubeck', 'Paul Desmond', 'Eugene Wright', 'Joe Morello', 'Gerry Mulligan']\n * @symb R.take(-1, [a, b]) = [a, b]\n * @symb R.take(0, [a, b]) = []\n * @symb R.take(1, [a, b]) = [a]\n * @symb R.take(2, [a, b]) = [a, b]\n */\n\nvar take =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable(['take'], _xtake, function take(n, xs) {\n return slice(0, n < 0 ? Infinity : n, xs);\n}));\n\nexport default take;","import _curry1 from \"./internal/_curry1.js\";\nimport _isArguments from \"./internal/_isArguments.js\";\nimport _isArray from \"./internal/_isArray.js\";\nimport _isObject from \"./internal/_isObject.js\";\nimport _isString from \"./internal/_isString.js\";\n/**\n * Returns the empty value of its argument's type. Ramda defines the empty\n * value of Array (`[]`), Object (`{}`), String (`''`), and Arguments. Other\n * types are supported if they define `.empty`,\n * `.prototype.empty` or implement the\n * [FantasyLand Monoid spec](https://github.com/fantasyland/fantasy-land#monoid).\n *\n * Dispatches to the `empty` method of the first argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Function\n * @sig a -> a\n * @param {*} x\n * @return {*}\n * @example\n *\n * R.empty(Just(42)); //=> Nothing()\n * R.empty([1, 2, 3]); //=> []\n * R.empty('unicorns'); //=> ''\n * R.empty({x: 1, y: 2}); //=> {}\n */\n\nvar empty =\n/*#__PURE__*/\n_curry1(function empty(x) {\n return x != null && typeof x['fantasy-land/empty'] === 'function' ? x['fantasy-land/empty']() : x != null && x.constructor != null && typeof x.constructor['fantasy-land/empty'] === 'function' ? x.constructor['fantasy-land/empty']() : x != null && typeof x.empty === 'function' ? x.empty() : x != null && x.constructor != null && typeof x.constructor.empty === 'function' ? x.constructor.empty() : _isArray(x) ? [] : _isString(x) ? '' : _isObject(x) ? {} : _isArguments(x) ? function () {\n return arguments;\n }() : void 0 // else\n ;\n});\n\nexport default empty;","import _curry1 from \"./internal/_curry1.js\";\nimport curryN from \"./curryN.js\";\n/**\n * Returns a new function much like the supplied one, except that the first two\n * arguments' order is reversed.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig ((a, b, c, ...) -> z) -> (b -> a -> c -> ... -> z)\n * @param {Function} fn The function to invoke with its first two parameters reversed.\n * @return {*} The result of invoking `fn` with its first two parameters' order reversed.\n * @example\n *\n * const mergeThree = (a, b, c) => [].concat(a, b, c);\n *\n * mergeThree(1, 2, 3); //=> [1, 2, 3]\n *\n * R.flip(mergeThree)(1, 2, 3); //=> [2, 1, 3]\n * @symb R.flip(f)(a, b, c) = f(b, a, c)\n */\n\nvar flip =\n/*#__PURE__*/\n_curry1(function flip(fn) {\n return curryN(fn.length, function (a, b) {\n var args = Array.prototype.slice.call(arguments, 0);\n args[0] = b;\n args[1] = a;\n return fn.apply(this, args);\n });\n});\n\nexport default flip;","import _curry3 from \"./internal/_curry3.js\";\nimport curryN from \"./curryN.js\";\n/**\n * Creates a function that will process either the `onTrue` or the `onFalse`\n * function depending upon the result of the `condition` predicate.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Logic\n * @sig (*... -> Boolean) -> (*... -> *) -> (*... -> *) -> (*... -> *)\n * @param {Function} condition A predicate function\n * @param {Function} onTrue A function to invoke when the `condition` evaluates to a truthy value.\n * @param {Function} onFalse A function to invoke when the `condition` evaluates to a falsy value.\n * @return {Function} A new function that will process either the `onTrue` or the `onFalse`\n * function depending upon the result of the `condition` predicate.\n * @see R.unless, R.when, R.cond\n * @example\n *\n * const incCount = R.ifElse(\n * R.has('count'),\n * R.over(R.lensProp('count'), R.inc),\n * R.assoc('count', 1)\n * );\n * incCount({}); //=> { count: 1 }\n * incCount({ count: 1 }); //=> { count: 2 }\n */\n\nvar ifElse =\n/*#__PURE__*/\n_curry3(function ifElse(condition, onTrue, onFalse) {\n return curryN(Math.max(condition.length, onTrue.length, onFalse.length), function _ifElse() {\n return condition.apply(this, arguments) ? onTrue.apply(this, arguments) : onFalse.apply(this, arguments);\n });\n});\n\nexport default ifElse;","import _includes from \"./internal/_includes.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns `true` if the specified value is equal, in [`R.equals`](#equals)\n * terms, to at least one element of the given list; `false` otherwise.\n * Works also with strings.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category List\n * @sig a -> [a] -> Boolean\n * @param {Object} a The item to compare against.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if an equivalent item is in the list, `false` otherwise.\n * @see R.any\n * @example\n *\n * R.includes(3, [1, 2, 3]); //=> true\n * R.includes(4, [1, 2, 3]); //=> false\n * R.includes({ name: 'Fred' }, [{ name: 'Fred' }]); //=> true\n * R.includes([42], [[42]]); //=> true\n * R.includes('ba', 'banana'); //=>true\n */\n\nvar includes =\n/*#__PURE__*/\n_curry2(_includes);\n\nexport default includes;","import _Set from \"./internal/_Set.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns a new list containing only one copy of each element in the original\n * list, based upon the value returned by applying the supplied function to\n * each list element. Prefers the first item if the supplied function produces\n * the same value on two items. [`R.equals`](#equals) is used for comparison.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig (a -> b) -> [a] -> [a]\n * @param {Function} fn A function used to produce a value to use during comparisons.\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n * R.uniqBy(Math.abs, [-1, -5, 2, 10, 1, 2]); //=> [-1, -5, 2, 10]\n */\n\nvar uniqBy =\n/*#__PURE__*/\n_curry2(function uniqBy(fn, list) {\n var set = new _Set();\n var result = [];\n var idx = 0;\n var appliedItem, item;\n\n while (idx < list.length) {\n item = list[idx];\n appliedItem = fn(item);\n\n if (set.add(appliedItem)) {\n result.push(item);\n }\n\n idx += 1;\n }\n\n return result;\n});\n\nexport default uniqBy;","import identity from \"./identity.js\";\nimport uniqBy from \"./uniqBy.js\";\n/**\n * Returns a new list containing only one copy of each element in the original\n * list. [`R.equals`](#equals) is used to determine equality.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n * R.uniq([1, 1, 2, 1]); //=> [1, 2]\n * R.uniq([1, '1']); //=> [1, '1']\n * R.uniq([[42], [42]]); //=> [[42]]\n */\n\nvar uniq =\n/*#__PURE__*/\nuniqBy(identity);\nexport default uniq;","import _includes from \"./internal/_includes.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _filter from \"./internal/_filter.js\";\nimport flip from \"./flip.js\";\nimport uniq from \"./uniq.js\";\n/**\n * Combines two lists into a set (i.e. no duplicates) composed of those\n * elements common to both lists.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig [*] -> [*] -> [*]\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The list of elements found in both `list1` and `list2`.\n * @see R.innerJoin\n * @example\n *\n * R.intersection([1,2,3,4], [7,6,5,4,3]); //=> [4, 3]\n */\n\nvar intersection =\n/*#__PURE__*/\n_curry2(function intersection(list1, list2) {\n var lookupList, filteredList;\n\n if (list1.length > list2.length) {\n lookupList = list1;\n filteredList = list2;\n } else {\n lookupList = list2;\n filteredList = list1;\n }\n\n return uniq(_filter(flip(_includes)(lookupList), filteredList));\n});\n\nexport default intersection;","import _curry2 from \"./internal/_curry2.js\";\nimport _isFunction from \"./internal/_isFunction.js\";\nimport curryN from \"./curryN.js\";\nimport toString from \"./toString.js\";\n/**\n * Turns a named method with a specified arity into a function that can be\n * called directly supplied with arguments and a target object.\n *\n * The returned function is curried and accepts `arity + 1` parameters where\n * the final parameter is the target object.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig Number -> String -> (a -> b -> ... -> n -> Object -> *)\n * @param {Number} arity Number of arguments the returned function should take\n * before the target object.\n * @param {String} method Name of any of the target object's methods to call.\n * @return {Function} A new curried function.\n * @see R.construct\n * @example\n *\n * const sliceFrom = R.invoker(1, 'slice');\n * sliceFrom(6, 'abcdefghijklm'); //=> 'ghijklm'\n * const sliceFrom6 = R.invoker(2, 'slice')(6);\n * sliceFrom6(8, 'abcdefghijklm'); //=> 'gh'\n *\n * const dog = {\n * speak: async () => 'Woof!'\n * };\n * const speak = R.invoker(0, 'speak');\n * speak(dog).then(console.log) //~> 'Woof!'\n *\n * @symb R.invoker(0, 'method')(o) = o['method']()\n * @symb R.invoker(1, 'method')(a, o) = o['method'](a)\n * @symb R.invoker(2, 'method')(a, b, o) = o['method'](a, b)\n */\n\nvar invoker =\n/*#__PURE__*/\n_curry2(function invoker(arity, method) {\n return curryN(arity + 1, function () {\n var target = arguments[arity];\n\n if (target != null && _isFunction(target[method])) {\n return target[method].apply(target, Array.prototype.slice.call(arguments, 0, arity));\n }\n\n throw new TypeError(toString(target) + ' does not have a method named \"' + method + '\"');\n });\n});\n\nexport default invoker;","import _curry1 from \"./internal/_curry1.js\";\nimport empty from \"./empty.js\";\nimport equals from \"./equals.js\";\n/**\n * Returns `true` if the given value is its type's empty value; `false`\n * otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig a -> Boolean\n * @param {*} x\n * @return {Boolean}\n * @see R.empty\n * @example\n *\n * R.isEmpty([1, 2, 3]); //=> false\n * R.isEmpty([]); //=> true\n * R.isEmpty(''); //=> true\n * R.isEmpty(null); //=> false\n * R.isEmpty({}); //=> true\n * R.isEmpty({length: 0}); //=> false\n */\n\nvar isEmpty =\n/*#__PURE__*/\n_curry1(function isEmpty(x) {\n return x != null && equals(x, empty(x));\n});\n\nexport default isEmpty;","import _curry1 from \"./internal/_curry1.js\";\nimport _isNumber from \"./internal/_isNumber.js\";\n/**\n * Returns the number of elements in the array by returning `list.length`.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig [a] -> Number\n * @param {Array} list The array to inspect.\n * @return {Number} The length of the array.\n * @example\n *\n * R.length([]); //=> 0\n * R.length([1, 2, 3]); //=> 3\n */\n\nvar length =\n/*#__PURE__*/\n_curry1(function length(list) {\n return list != null && _isNumber(list.length) ? list.length : NaN;\n});\n\nexport default length;","export default function _isNumber(x) {\n return Object.prototype.toString.call(x) === '[object Number]';\n}","import _curry2 from \"./internal/_curry2.js\";\nimport map from \"./map.js\";\n/**\n * Returns a lens for the given getter and setter functions. The getter \"gets\"\n * the value of the focus; the setter \"sets\" the value of the focus. The setter\n * should not mutate the data structure.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig (s -> a) -> ((a, s) -> s) -> Lens s a\n * @param {Function} getter\n * @param {Function} setter\n * @return {Lens}\n * @see R.view, R.set, R.over, R.lensIndex, R.lensProp\n * @example\n *\n * const xLens = R.lens(R.prop('x'), R.assoc('x'));\n *\n * R.view(xLens, {x: 1, y: 2}); //=> 1\n * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2}\n * R.over(xLens, R.negate, {x: 1, y: 2}); //=> {x: -1, y: 2}\n */\n\nvar lens =\n/*#__PURE__*/\n_curry2(function lens(getter, setter) {\n return function (toFunctorFn) {\n return function (target) {\n return map(function (focus) {\n return setter(focus, target);\n }, toFunctorFn(getter(target)));\n };\n };\n});\n\nexport default lens;","import _curry1 from \"./internal/_curry1.js\";\nimport assocPath from \"./assocPath.js\";\nimport lens from \"./lens.js\";\nimport path from \"./path.js\";\n/**\n * Returns a lens whose focus is the specified path.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Object\n * @typedefn Idx = String | Int\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig [Idx] -> Lens s a\n * @param {Array} path The path to use.\n * @return {Lens}\n * @see R.view, R.set, R.over\n * @example\n *\n * const xHeadYLens = R.lensPath(['x', 0, 'y']);\n *\n * R.view(xHeadYLens, {x: [{y: 2, z: 3}, {y: 4, z: 5}]});\n * //=> 2\n * R.set(xHeadYLens, 1, {x: [{y: 2, z: 3}, {y: 4, z: 5}]});\n * //=> {x: [{y: 1, z: 3}, {y: 4, z: 5}]}\n * R.over(xHeadYLens, R.negate, {x: [{y: 2, z: 3}, {y: 4, z: 5}]});\n * //=> {x: [{y: -2, z: 3}, {y: 4, z: 5}]}\n */\n\nvar lensPath =\n/*#__PURE__*/\n_curry1(function lensPath(p) {\n return lens(path(p), assocPath(p));\n});\n\nexport default lensPath;","import _curry1 from \"./internal/_curry1.js\";\nimport assoc from \"./assoc.js\";\nimport lens from \"./lens.js\";\nimport prop from \"./prop.js\";\n/**\n * Returns a lens whose focus is the specified property.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig String -> Lens s a\n * @param {String} k\n * @return {Lens}\n * @see R.view, R.set, R.over\n * @example\n *\n * const xLens = R.lensProp('x');\n *\n * R.view(xLens, {x: 1, y: 2}); //=> 1\n * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2}\n * R.over(xLens, R.negate, {x: 1, y: 2}); //=> {x: -1, y: 2}\n */\n\nvar lensProp =\n/*#__PURE__*/\n_curry1(function lensProp(k) {\n return lens(prop(k), assoc(k));\n});\n\nexport default lensProp;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Multiplies two numbers. Equivalent to `a * b` but curried.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig Number -> Number -> Number\n * @param {Number} a The first value.\n * @param {Number} b The second value.\n * @return {Number} The result of `a * b`.\n * @see R.divide\n * @example\n *\n * const double = R.multiply(2);\n * const triple = R.multiply(3);\n * double(3); //=> 6\n * triple(4); //=> 12\n * R.multiply(2, 5); //=> 10\n */\n\nvar multiply =\n/*#__PURE__*/\n_curry2(function multiply(a, b) {\n return a * b;\n});\n\nexport default multiply;","export default function _of(x) {\n return [x];\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _of from \"./internal/_of.js\";\n/**\n * Returns a singleton array containing the value provided.\n *\n * Note this `of` is different from the ES6 `of`; See\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Function\n * @sig a -> [a]\n * @param {*} x any value\n * @return {Array} An array wrapping `x`.\n * @example\n *\n * R.of(null); //=> [null]\n * R.of([42]); //=> [[42]]\n */\n\nvar of =\n/*#__PURE__*/\n_curry1(_of);\n\nexport default of;","import _curry3 from \"./internal/_curry3.js\"; // `Identity` is a functor that holds a single value, where `map` simply\n// transforms the held value with the provided function.\n\nvar Identity = function (x) {\n return {\n value: x,\n map: function (f) {\n return Identity(f(x));\n }\n };\n};\n/**\n * Returns the result of \"setting\" the portion of the given data structure\n * focused by the given lens to the result of applying the given function to\n * the focused value.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig Lens s a -> (a -> a) -> s -> s\n * @param {Lens} lens\n * @param {*} v\n * @param {*} x\n * @return {*}\n * @see R.prop, R.lensIndex, R.lensProp\n * @example\n *\n * const headLens = R.lensIndex(0);\n *\n * R.over(headLens, R.toUpper, ['foo', 'bar', 'baz']); //=> ['FOO', 'bar', 'baz']\n */\n\n\nvar over =\n/*#__PURE__*/\n_curry3(function over(lens, f, x) {\n // The value returned by the getter function is first transformed with `f`,\n // then set as the value of an `Identity`. This is then mapped over with the\n // setter function of the lens.\n return lens(function (y) {\n return Identity(f(y));\n })(x).value;\n});\n\nexport default over;","import _concat from \"./internal/_concat.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns a new list with the given element at the front, followed by the\n * contents of the list.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -> [a] -> [a]\n * @param {*} el The item to add to the head of the output list.\n * @param {Array} list The array to add to the tail of the output list.\n * @return {Array} A new array.\n * @see R.append\n * @example\n *\n * R.prepend('fee', ['fi', 'fo', 'fum']); //=> ['fee', 'fi', 'fo', 'fum']\n */\n\nvar prepend =\n/*#__PURE__*/\n_curry2(function prepend(el, list) {\n return _concat([el], list);\n});\n\nexport default prepend;","import _curry3 from \"./internal/_curry3.js\";\n/**\n * Returns a single item by iterating through the list, successively calling\n * the iterator function and passing it an accumulator value and the current\n * value from the array, and then passing the result to the next call.\n *\n * Similar to [`reduce`](#reduce), except moves through the input list from the\n * right to the left.\n *\n * The iterator function receives two values: *(value, acc)*, while the arguments'\n * order of `reduce`'s iterator function is *(acc, value)*.\n *\n * Note: `R.reduceRight` does not skip deleted or unassigned indices (sparse\n * arrays), unlike the native `Array.prototype.reduceRight` method. For more details\n * on this behavior, see:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduceRight#Description\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, b) -> b) -> b -> [a] -> b\n * @param {Function} fn The iterator function. Receives two values, the current element from the array\n * and the accumulator.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduce, R.addIndex\n * @example\n *\n * R.reduceRight(R.subtract, 0, [1, 2, 3, 4]) // => (1 - (2 - (3 - (4 - 0)))) = -2\n * // - -2\n * // / \\ / \\\n * // 1 - 1 3\n * // / \\ / \\\n * // 2 - ==> 2 -1\n * // / \\ / \\\n * // 3 - 3 4\n * // / \\ / \\\n * // 4 0 4 0\n *\n * @symb R.reduceRight(f, a, [b, c, d]) = f(b, f(c, f(d, a)))\n */\n\nvar reduceRight =\n/*#__PURE__*/\n_curry3(function reduceRight(fn, acc, list) {\n var idx = list.length - 1;\n\n while (idx >= 0) {\n acc = fn(list[idx], acc);\n idx -= 1;\n }\n\n return acc;\n});\n\nexport default reduceRight;","import _curry3 from \"./internal/_curry3.js\";\n/**\n * Replace a substring or regex match in a string with a replacement.\n *\n * The first two parameters correspond to the parameters of the\n * `String.prototype.replace()` function, so the second parameter can also be a\n * function.\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category String\n * @sig RegExp|String -> String -> String -> String\n * @param {RegExp|String} pattern A regular expression or a substring to match.\n * @param {String} replacement The string to replace the matches with.\n * @param {String} str The String to do the search and replacement in.\n * @return {String} The result.\n * @example\n *\n * R.replace('foo', 'bar', 'foo foo foo'); //=> 'bar foo foo'\n * R.replace(/foo/, 'bar', 'foo foo foo'); //=> 'bar foo foo'\n *\n * // Use the \"g\" (global) flag to replace all occurrences:\n * R.replace(/foo/g, 'bar', 'foo foo foo'); //=> 'bar bar bar'\n */\n\nvar replace =\n/*#__PURE__*/\n_curry3(function replace(regex, replacement, str) {\n return str.replace(regex, replacement);\n});\n\nexport default replace;","import _curry2 from \"./internal/_curry2.js\";\nimport ap from \"./ap.js\";\nimport map from \"./map.js\";\nimport prepend from \"./prepend.js\";\nimport reduceRight from \"./reduceRight.js\";\n/**\n * Transforms a [Traversable](https://github.com/fantasyland/fantasy-land#traversable)\n * of [Applicative](https://github.com/fantasyland/fantasy-land#applicative) into an\n * Applicative of Traversable.\n *\n * Dispatches to the `sequence` method of the second argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig (Applicative f, Traversable t) => (a -> f a) -> t (f a) -> f (t a)\n * @param {Function} of\n * @param {*} traversable\n * @return {*}\n * @see R.traverse\n * @example\n *\n * R.sequence(Maybe.of, [Just(1), Just(2), Just(3)]); //=> Just([1, 2, 3])\n * R.sequence(Maybe.of, [Just(1), Just(2), Nothing()]); //=> Nothing()\n *\n * R.sequence(R.of, Just([1, 2, 3])); //=> [Just(1), Just(2), Just(3)]\n * R.sequence(R.of, Nothing()); //=> [Nothing()]\n */\n\nvar sequence =\n/*#__PURE__*/\n_curry2(function sequence(of, traversable) {\n return typeof traversable.sequence === 'function' ? traversable.sequence(of) : reduceRight(function (x, acc) {\n return ap(map(prepend, x), acc);\n }, of([]), traversable);\n});\n\nexport default sequence;","import _curry3 from \"./internal/_curry3.js\";\nimport always from \"./always.js\";\nimport over from \"./over.js\";\n/**\n * Returns the result of \"setting\" the portion of the given data structure\n * focused by the given lens to the given value.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig Lens s a -> a -> s -> s\n * @param {Lens} lens\n * @param {*} v\n * @param {*} x\n * @return {*}\n * @see R.prop, R.lensIndex, R.lensProp\n * @example\n *\n * const xLens = R.lensProp('x');\n *\n * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2}\n * R.set(xLens, 8, {x: 1, y: 2}); //=> {x: 8, y: 2}\n */\n\nvar set =\n/*#__PURE__*/\n_curry3(function set(lens, v, x) {\n return over(lens, always(v), x);\n});\n\nexport default set;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Sorts the list according to the supplied function.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord b => (a -> b) -> [a] -> [a]\n * @param {Function} fn\n * @param {Array} list The list to sort.\n * @return {Array} A new list sorted by the keys generated by `fn`.\n * @example\n *\n * const sortByFirstItem = R.sortBy(R.prop(0));\n * const pairs = [[-1, 1], [-2, 2], [-3, 3]];\n * sortByFirstItem(pairs); //=> [[-3, 3], [-2, 2], [-1, 1]]\n *\n * const sortByNameCaseInsensitive = R.sortBy(R.compose(R.toLower, R.prop('name')));\n * const alice = {\n * name: 'ALICE',\n * age: 101\n * };\n * const bob = {\n * name: 'Bob',\n * age: -10\n * };\n * const clara = {\n * name: 'clara',\n * age: 314.159\n * };\n * const people = [clara, bob, alice];\n * sortByNameCaseInsensitive(people); //=> [alice, bob, clara]\n */\n\nvar sortBy =\n/*#__PURE__*/\n_curry2(function sortBy(fn, list) {\n return Array.prototype.slice.call(list, 0).sort(function (a, b) {\n var aa = fn(a);\n var bb = fn(b);\n return aa < bb ? -1 : aa > bb ? 1 : 0;\n });\n});\n\nexport default sortBy;","import invoker from \"./invoker.js\";\n/**\n * The lower case version of a string.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category String\n * @sig String -> String\n * @param {String} str The string to lower case.\n * @return {String} The lower case version of `str`.\n * @see R.toUpper\n * @example\n *\n * R.toLower('XYZ'); //=> 'xyz'\n */\n\nvar toLower =\n/*#__PURE__*/\ninvoker(0, 'toLowerCase');\nexport default toLower;","import _curry3 from \"./internal/_curry3.js\";\nimport map from \"./map.js\";\nimport sequence from \"./sequence.js\";\n/**\n * Maps an [Applicative](https://github.com/fantasyland/fantasy-land#applicative)-returning\n * function over a [Traversable](https://github.com/fantasyland/fantasy-land#traversable),\n * then uses [`sequence`](#sequence) to transform the resulting Traversable of Applicative\n * into an Applicative of Traversable.\n *\n * Dispatches to the `traverse` method of the third argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig (Applicative f, Traversable t) => (a -> f a) -> (a -> f b) -> t a -> f (t b)\n * @param {Function} of\n * @param {Function} f\n * @param {*} traversable\n * @return {*}\n * @see R.sequence\n * @example\n *\n * // Returns `Maybe.Nothing` if the given divisor is `0`\n * const safeDiv = n => d => d === 0 ? Maybe.Nothing() : Maybe.Just(n / d)\n *\n * R.traverse(Maybe.of, safeDiv(10), [2, 4, 5]); //=> Maybe.Just([5, 2.5, 2])\n * R.traverse(Maybe.of, safeDiv(10), [2, 0, 5]); //=> Maybe.Nothing\n */\n\nvar traverse =\n/*#__PURE__*/\n_curry3(function traverse(of, f, traversable) {\n return typeof traversable['fantasy-land/traverse'] === 'function' ? traversable['fantasy-land/traverse'](f, of) : sequence(of, map(f, traversable));\n});\n\nexport default traverse;","import _curry1 from \"./internal/_curry1.js\";\nvar ws = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' + '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028' + '\\u2029\\uFEFF';\nvar zeroWidth = '\\u200b';\nvar hasProtoTrim = typeof String.prototype.trim === 'function';\n/**\n * Removes (strips) whitespace from both ends of the string.\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category String\n * @sig String -> String\n * @param {String} str The string to trim.\n * @return {String} Trimmed version of `str`.\n * @example\n *\n * R.trim(' xyz '); //=> 'xyz'\n * R.map(R.trim, R.split(',', 'x, y, z')); //=> ['x', 'y', 'z']\n */\n\nvar trim = !hasProtoTrim ||\n/*#__PURE__*/\nws.trim() || !\n/*#__PURE__*/\nzeroWidth.trim() ?\n/*#__PURE__*/\n_curry1(function trim(str) {\n var beginRx = new RegExp('^[' + ws + '][' + ws + ']*');\n var endRx = new RegExp('[' + ws + '][' + ws + ']*$');\n return str.replace(beginRx, '').replace(endRx, '');\n}) :\n/*#__PURE__*/\n_curry1(function trim(str) {\n return str.trim();\n});\nexport default trim;","import _curry1 from \"./internal/_curry1.js\";\n/**\n * Takes a function `fn`, which takes a single array argument, and returns a\n * function which:\n *\n * - takes any number of positional arguments;\n * - passes these arguments to `fn` as an array; and\n * - returns the result.\n *\n * In other words, `R.unapply` derives a variadic function from a function which\n * takes an array. `R.unapply` is the inverse of [`R.apply`](#apply).\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Function\n * @sig ([*...] -> a) -> (*... -> a)\n * @param {Function} fn\n * @return {Function}\n * @see R.apply\n * @example\n *\n * R.unapply(JSON.stringify)(1, 2, 3); //=> '[1,2,3]'\n * @symb R.unapply(f)(a, b) = f([a, b])\n */\n\nvar unapply =\n/*#__PURE__*/\n_curry1(function unapply(fn) {\n return function () {\n return fn(Array.prototype.slice.call(arguments, 0));\n };\n});\n\nexport default unapply;","import _curry2 from \"./internal/_curry2.js\"; // `Const` is a functor that effectively ignores the function given to `map`.\n\nvar Const = function (x) {\n return {\n value: x,\n 'fantasy-land/map': function () {\n return this;\n }\n };\n};\n/**\n * Returns a \"view\" of the given data structure, determined by the given lens.\n * The lens's focus determines which portion of the data structure is visible.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig Lens s a -> s -> a\n * @param {Lens} lens\n * @param {*} x\n * @return {*}\n * @see R.prop, R.lensIndex, R.lensProp\n * @example\n *\n * const xLens = R.lensProp('x');\n *\n * R.view(xLens, {x: 1, y: 2}); //=> 1\n * R.view(xLens, {x: 4, y: 2}); //=> 4\n */\n\n\nvar view =\n/*#__PURE__*/\n_curry2(function view(lens, x) {\n // Using `Const` effectively ignores the setter function of the `lens`,\n // leaving the value returned by the getter function unmodified.\n return lens(Const)(x).value;\n});\n\nexport default view;","import _includes from \"./internal/_includes.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport flip from \"./flip.js\";\nimport reject from \"./reject.js\";\n/**\n * Returns a new list without values in the first argument.\n * [`R.equals`](#equals) is used to determine equality.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig [a] -> [a] -> [a]\n * @param {Array} list1 The values to be removed from `list2`.\n * @param {Array} list2 The array to remove values from.\n * @return {Array} The new array without values in `list1`.\n * @see R.transduce, R.difference, R.remove\n * @example\n *\n * R.without([1, 2], [1, 2, 1, 3, 4]); //=> [3, 4]\n */\n\nvar without =\n/*#__PURE__*/\n_curry2(function (xs, list) {\n return reject(flip(_includes)(xs), list);\n});\n\nexport default without;","import { noop, safe_not_equal, subscribe, run_all, is_function } from '../internal/index.mjs';\nexport { get_store_value as get } from '../internal/index.mjs';\n\nconst subscriber_queue = [];\n/**\n * Creates a `Readable` store that allows reading by subscription.\n * @param value initial value\n * @param {StartStopNotifier}start start and stop notifications for subscriptions\n */\nfunction readable(value, start) {\n return {\n subscribe: writable(value, start).subscribe\n };\n}\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n * @param {*=}value initial value\n * @param {StartStopNotifier=}start start and stop notifications for subscriptions\n */\nfunction writable(value, start = noop) {\n let stop;\n const subscribers = new Set();\n function set(new_value) {\n if (safe_not_equal(value, new_value)) {\n value = new_value;\n if (stop) { // store is ready\n const run_queue = !subscriber_queue.length;\n for (const subscriber of subscribers) {\n subscriber[1]();\n subscriber_queue.push(subscriber, value);\n }\n if (run_queue) {\n for (let i = 0; i < subscriber_queue.length; i += 2) {\n subscriber_queue[i][0](subscriber_queue[i + 1]);\n }\n subscriber_queue.length = 0;\n }\n }\n }\n }\n function update(fn) {\n set(fn(value));\n }\n function subscribe(run, invalidate = noop) {\n const subscriber = [run, invalidate];\n subscribers.add(subscriber);\n if (subscribers.size === 1) {\n stop = start(set) || noop;\n }\n run(value);\n return () => {\n subscribers.delete(subscriber);\n if (subscribers.size === 0) {\n stop();\n stop = null;\n }\n };\n }\n return { set, update, subscribe };\n}\nfunction derived(stores, fn, initial_value) {\n const single = !Array.isArray(stores);\n const stores_array = single\n ? [stores]\n : stores;\n const auto = fn.length < 2;\n return readable(initial_value, (set) => {\n let inited = false;\n const values = [];\n let pending = 0;\n let cleanup = noop;\n const sync = () => {\n if (pending) {\n return;\n }\n cleanup();\n const result = fn(single ? values[0] : values, set);\n if (auto) {\n set(result);\n }\n else {\n cleanup = is_function(result) ? result : noop;\n }\n };\n const unsubscribers = stores_array.map((store, i) => subscribe(store, (value) => {\n values[i] = value;\n pending &= ~(1 << i);\n if (inited) {\n sync();\n }\n }, () => {\n pending |= (1 << i);\n }));\n inited = true;\n sync();\n return function stop() {\n run_all(unsubscribers);\n cleanup();\n };\n });\n}\n\nexport { derived, readable, writable };\n","// @ts-nocheck\n// Copied from https://github.com/DrBoolean/freemonadky\n\nimport daggy from 'daggy';\nimport * as fluture from 'fluture';\nimport * as R from 'ramda';\n\nconst FreeMonad = daggy.taggedSum('FreeMonad', {\n Impure: ['x', 'f'],\n Pure: ['x'],\n});\n\nconst kleisli_comp = (f, g) => (x) => f(x).chain(g);\n\nFreeMonad.prototype.fold = function () {\n return this.x.fold.apply(this.x, arguments);\n};\n\nFreeMonad.prototype.map = function (f) {\n return this.cata({\n Impure: (x, g) => FreeMonad.Impure(x, (y) => g(y).map(f)),\n Pure: (x) => FreeMonad.Pure(f(x)),\n });\n};\n\nFreeMonad.prototype.ap = function (a) {\n return this.cata({\n Impure: (x, g) => FreeMonad.Impure(x, (y) => g(y).ap(a)),\n Pure: (f) => a.map(f),\n });\n};\n\nFreeMonad.prototype.chain = function (f) {\n return this.cata({\n Impure: (x, g) => FreeMonad.Impure(x, kleisli_comp(g, f)),\n Pure: (x) => f(x),\n });\n};\n\n// KUAN ADDON:\n// Call function `f` with this free monad as argument.\n// This is useful to dot-chainning `bichain` and `bimap`.\nFreeMonad.prototype.call = function (f) {\n return f(this);\n};\n\nconst of = FreeMonad.Pure; // FreeMonad.of\nconst lift = (command) => FreeMonad.Impure(command, FreeMonad.Pure);\n\nFreeMonad.prototype.foldMap = function (interpreter, of) {\n return this.cata({\n Pure: (a) => of(a),\n Impure: (intruction_of_arg, next) => {\n // FutureCommand sumtype interpreter will return a function instead of\n // `Future`. We must check the type before fluter.chain them.\n let interpreted = interpreter(intruction_of_arg);\n if (fluture.isFuture(interpreted)) {\n return fluture.chain((result) => next(result).foldMap(interpreter, of))(\n interpreted\n );\n } else {\n console.assert(typeof interpreted === 'function', `Bad interpreted ${interpreted}`);\n\n let future = interpreted(interpreter, of);\n return fluture.chain((result) => next(result).foldMap(interpreter, of))(\n future\n );\n }\n // }\n },\n });\n};\n\nconst MAX_THREAD = 8;\n\nconst FreeUtils = daggy.taggedSum('FutureCommand', {\n Bichain: ['left', 'right', 'freeMonad'],\n Bimap: ['left', 'right', 'freeMonad'],\n Parallel: ['freeMonads'],\n Left: ['value'],\n Right: ['value'],\n});\nconst { Bichain, Bimap, Parallel, Left, Right } = FreeUtils;\n\n// This interpretor return a function that expect `interpreter` and `of`, when\n// called with the arguments (which usually pass in by caller `foldMap`), this\n// will return a Future.\nconst freeUtilsToFuture = (p) =>\n p.cata({\n Bichain: (left, right, freeMonad) => (interpreter, of) =>\n fluture.bichain((result) => left(result).foldMap(interpreter, of))(\n (result) => right(result).foldMap(interpreter, of)\n )(freeMonad.foldMap(interpreter, of)),\n\n Bimap: (left, right, freeMonad) => (interpreter, of) =>\n fluture.coalesce(left)(right)(freeMonad.foldMap(interpreter, of)),\n\n Parallel: (freeMonads) => (interpreter, of) => {\n // Interpret each free monads in the array\n const futures = R.map((fm) => fm.foldMap(interpreter, of), freeMonads);\n\n // Run all interpreted Future with parallel\n return fluture.parallel(MAX_THREAD)(futures);\n },\n\n Left: fluture.reject,\n Right: fluture.resolve,\n });\n\n\n// [Free(Future)] -> Free(Future)\n// This take in an array of free monads (which must interprete into Future).\n// All interpreted Futures will run by Fluture's parallel command.\n// See also: https://github.com/fluture-js/Fluture#parallel\nconst parallel = (freeMonads) => lift(Parallel(freeMonads));\nconst parallelConverge = R.converge((...freeMonads) => parallel(freeMonads));\nconst sequence = R.sequence(of);\n\n// Function -> Function -> Free(Future) -> Free(Future)\n// Map the result over `left` function if the outcome from forking freeMonad\n// being rejected. Map over `right` when resolved.\n//\n// Outcome of the future will become resolution as internally we use fluture's\n// coalesce instead of bimap.\n//\n// See also: https://github.com/fluture-js/Fluture#bimap\n// See also: https://github.com/fluture-js/Fluture#coalesce\nconst bimap = R.curry((left, right, freeMonad) =>\n lift(Bimap(left, right, freeMonad))\n);\n\n// Function -> Function -> Free(Future) -> Free(Future)\n// Chain the result over `left` function if the outcome from forking freeMonad\n// being rejected. Map over `right` when resolved.\n//\n// Outcome of the future will change back on the result of the chained function.\n// i.e. If the chained future is resolved (instead of reject), a previously\n// rejected result will now becomes resolved future.\n//\n// See also: https://github.com/fluture-js/Fluture#bichain\nconst bichain = R.curry((left, right, freeMonad) =>\n lift(Bichain(left, right, freeMonad))\n);\n\nconst left = (v) => lift(Left(v))\nconst right = (v) => lift(Right(v));\n\nconst interpete = (freeMonad) => (interpreter, of) =>\n freeMonad.foldMap(interpreter, of);\n\nexport const freeUtilsInterpretor = [FreeUtils, freeUtilsToFuture];\nexport {\n lift,\n of,\n parallel,\n parallelConverge,\n sequence,\n bimap,\n bichain,\n left,\n right,\n interpete,\n};\n","// Copied from https://github.com/DrBoolean/freemonadky\n\nconst find = (xs, f) => {\n var found;\n for (let x in xs) {\n if (f(xs[x])) {\n found = xs[x];\n break;\n }\n }\n return found;\n};\n\nexport const dispatch = (pairs) => (instruction_of_arg) => {\n const found = find(\n pairs,\n (\n xs // [type, interpreter]\n ) => instruction_of_arg.constructor === xs[0]\n );\n if (found) {\n const interpreter = found[1];\n return interpreter(instruction_of_arg);\n } else {\n console.error(`Cannot find interpretor for type: ${instruction_of_arg.constructor} - args: ${instruction_of_arg}`);\n }\n};\n","import { fork, resolve } from 'fluture';\nimport * as R from 'ramda';\n\nimport { dispatch } from './interpretor';\n\nconst add = Symbol.for('sop-add');\nconst run = Symbol.for('sop-run');\nconst idle = Symbol.for('sop-mode-idle');\nconst working = Symbol.for('sop-mode-running');\n\nlet sopId = 0;\nlet toastErrorSop;\n\nconst getDeref = (sopId) => {\n return (s) => {\n return {\n get: () => s.refget(sopId),\n set: (v) => s.refset(sopId, v),\n reset: () => s.reset(sopId),\n update: (k, v) => s.update(sopId, k, v),\n };\n };\n};\n\n/**\n * A generator function that make sure only one SOP function running at a time.\n *\n * It will queue up new SOP when one is currently running. And run the next SOP\n * from the queue as soon as the current one completes.\n */\nconst sopManager = (function* () {\n const sopQueue = [];\n\n let mode = idle;\n while (true) {\n const [command, sop, continuedDeref] = yield;\n if (command == add) {\n sopQueue.push([sop, continuedDeref]);\n\n // Queue up a [run] command into event loop if manager is idle.\n if (mode == idle) {\n // Change mode to [working] immediately to prevent multiple queue up.\n mode = working;\n\n // Use the event loop to trigger the [next()]. Generator cannot iterate\n // themselves.\n setTimeout(() => sopManager.next([run, null, null]), 0);\n }\n } else if (command == run) {\n if (sopQueue.length > 0) {\n // Dequeue the oldest SOP from the queue and run it.\n // When it returns, queue up another [run] command.\n let [sopFn, deref] = sopQueue.shift();\n\n if (!deref) {\n // Increment the [sopId] for SOP without a continued deref.\n sopId++;\n deref = getDeref(sopId);\n }\n\n const freeMonad = sopFn();\n const future = freeMonad.foldMap(\n dispatch(constructInterpretor(deref)),\n resolve\n );\n\n fork((e) => {\n console.error('SOP error: ', e);\n\n sopQueue.unshift([toastErrorSop(e)]);\n setTimeout(() => sopManager.next([run, null, null]), 0);\n\n })(() => setTimeout(() => sopManager.next([run, null, null]), 0))(future);\n } else {\n // When there is no SOP to run, set the mode back to idle.\n // This will ensure the next [add] command will restart the running.\n mode = idle;\n }\n }\n }\n})();\n\n// Run to next yield, and start waiting for sop from [addSop].\n// TODO : Too \"auto js magically\". Make a function to call it at main.js\nsopManager.next();\n\n/** Add a new SOP. It might run immediately by the manager, or queue up. */\nconst addSop = (sop, continuedDeref) => {\n sopManager.next([add, sop, continuedDeref]);\n};\n\n// FreeMonad -> Function -> FreeMonad\nconst continueSop = R.curry((derefAction, sop) =>\n R.map((continuedDeref) => () => addSop(sop, continuedDeref), derefAction)\n);\n\nconst addToastErrorSop = (sop) => {\n toastErrorSop = sop;\n}\n\nconst staticInterpretors = [];\nconst dynamicInterpretorGetters = [];\nconst derefInterpretors = [];\n\nconst registerStaticInterpretor = (interpretor) =>\n staticInterpretors.push(interpretor);\n\nconst registerDynamicInterpretorGetter = (getter) => {\n return dynamicInterpretorGetters.push(getter);\n};\n\nconst registerDerefInterpretor = (builder) => derefInterpretors.push(builder);\n\nconst constructInterpretor = (deref) => {\n const derefer = R.map((builder) => builder(deref), derefInterpretors);\n return R.pipe(\n R.concat(staticInterpretors),\n R.concat(R.map((getter) => getter(), dynamicInterpretorGetters))\n )(derefer);\n};\n\nexport {\n addSop,\n continueSop,\n addToastErrorSop,\n registerStaticInterpretor,\n registerDynamicInterpretorGetter,\n registerDerefInterpretor,\n};\n","//\nimport daggy from 'daggy';\nimport { Future, resolve } from 'fluture';\nimport * as R from 'ramda';\nimport { writable } from 'svelte/store';\n\nimport * as free from 'fp/free';\nimport { registerDerefInterpretor } from 'fp/sop';\n\nconst createRef = (defaultValue) => {\n const { subscribe, set: originalSet } = writable(defaultValue);\n\n let owner = -1;\n let hotValue = defaultValue;\n\n function refset(sopId, newValue) {\n if (verifyOwnership(sopId)) {\n changeOwner(sopId);\n set(newValue);\n originalSet(newValue);\n } else {\n console.log('outdated update for sop ' + sopId);\n }\n }\n\n function reset(sopId) {\n if (verifyOwnership(sopId)) {\n changeOwner(sopId);\n set(defaultValue);\n originalSet(defaultValue);\n } else {\n console.log('outdated reset for sop ' + sopId);\n }\n }\n\n const verifyOwnership = (sopId) => sopId >= owner;\n\n function changeOwner(sopId) {\n if (sopId >= owner) {\n owner = sopId;\n } else {\n console.log(\n 'Cannot change owner because someone with higher SOP ID already own this ref'\n );\n }\n }\n\n function set(value) {\n hotValue = value;\n\n // Bug, see DEVLOG Wed Mar 31 15:42:44 MYT 2021\n // originalSet(defaultValue);\n }\n\n const refget = (sopId) => {\n console.log('ref geting iwht ' + sopId);\n if (verifyOwnership(sopId)) {\n return hotValue;\n } else {\n console.log('outdated hot value get for sop ' + sopId);\n throw new Error('Outdated Get');\n }\n };\n\n return {\n subscribe,\n set,\n refget,\n refset,\n reset,\n verifyOwnership,\n changeOwner,\n };\n};\n\nfunction createArrayRef() {\n const {\n subscribe,\n refset,\n reset: originalReset,\n verifyOwnership,\n changeOwner,\n } = createRef([]);\n\n let data = [];\n function update(sopId, index, value) {\n if (verifyOwnership(sopId)) {\n data[index] = value;\n refset(sopId, data);\n }\n }\n\n const reset = (sopId) => {\n if (verifyOwnership(sopId)) {\n data = [];\n originalReset(sopId);\n }\n };\n\n return {\n subscribe,\n update,\n reset,\n changeOwner,\n };\n}\n\nconst Ref = daggy.taggedSum('Ref', {\n Deref: [''],\n Get: ['ref'],\n Reset: ['ref'],\n Set: ['ref', 'value'],\n Update: ['ref', 'key', 'value'],\n});\n// @ts-ignore\nconst { Deref, Get, Set, Reset, Update } = Ref;\n\nconst refToFuture = (deref) => (p) =>\n p.cata({\n Deref: (_) => resolve(deref),\n Get: (ref) =>\n Future((reject, resolve) => {\n try {\n resolve(deref(ref).get());\n } catch (error) {\n reject(error);\n }\n\n return () => { };\n }),\n Set: (ref, value) =>\n Future((_, resolve) => {\n // console.log('setting ', value);\n deref(ref).set(value);\n resolve();\n\n return () => { };\n }),\n Reset: (ref) =>\n Future((_, resolve) => {\n deref(ref).reset();\n resolve();\n\n return () => { };\n }),\n Update: (ref, key, value) =>\n Future((_, resolve) => {\n deref(ref).update(key, value);\n resolve();\n\n return () => { };\n }),\n });\n\nconst refInterpretor = (deref) => [Ref, refToFuture(deref)];\nregisterDerefInterpretor(refInterpretor);\n\nconst deref = () => free.lift(Deref(null));\nconst getRef = (ref) => free.lift(Get(ref));\n\nconst setRef = R.curry((ref, value) => free.lift(Set(ref, value)));\nconst updateRef = R.curry((ref, index, value) =>\n free.lift(Update(ref, index, value))\n);\nconst resetRef = (ref) => free.lift(Reset(ref));\n\nexport {\n createRef,\n createArrayRef,\n refInterpretor,\n deref,\n getRef,\n setRef,\n updateRef,\n resetRef,\n};\n","import { cubicOut } from '../easing/index.mjs';\nimport { is_function } from '../internal/index.mjs';\n\nfunction flip(node, { from, to }, params = {}) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n const [ox, oy] = style.transformOrigin.split(' ').map(parseFloat);\n const dx = (from.left + from.width * ox / to.width) - (to.left + ox);\n const dy = (from.top + from.height * oy / to.height) - (to.top + oy);\n const { delay = 0, duration = (d) => Math.sqrt(d) * 120, easing = cubicOut } = params;\n return {\n delay,\n duration: is_function(duration) ? duration(Math.sqrt(dx * dx + dy * dy)) : duration,\n easing,\n css: (t, u) => {\n const x = u * dx;\n const y = u * dy;\n const sx = t + u * from.width / to.width;\n const sy = t + u * from.height / to.height;\n return `transform: ${transform} translate(${x}px, ${y}px) scale(${sx}, ${sy});`;\n }\n };\n}\n\nexport { flip };\n","import { writable } from 'svelte/store'\n\nconst defaults = {\n duration: 4000,\n initial: 1,\n next: 0,\n pausable: false,\n dismissable: true,\n reversed: false,\n intro: { x: 256 },\n theme: {}\n}\n\nconst createToast = () => {\n const { subscribe, update } = writable([])\n let count = 0\n const options = {}\n const _obj = (obj) => obj instanceof Object\n const push = (msg, opts = {}) => {\n const param = { target: 'default', ...(_obj(msg) ? msg : { ...opts, msg }) }\n const conf = options[param.target] || {}\n const entry = {\n ...defaults,\n ...conf,\n ...param,\n theme: { ...conf.theme, ...param.theme },\n id: ++count\n }\n update((n) => (entry.reversed ? [...n, entry] : [entry, ...n]))\n return count\n }\n const pop = (id) => {\n update((n) => {\n if (!n.length || id === 0) return []\n if (_obj(id)) return n.filter((i) => id(i))\n const target = id || Math.max(...n.map((i) => i.id))\n return n.filter((i) => i.id !== target)\n })\n }\n const set = (id, opts = {}) => {\n const param = _obj(id) ? { ...id } : { ...opts, id }\n update((n) => {\n const idx = n.findIndex((i) => i.id === param.id)\n if (idx > -1) {\n n[idx] = { ...n[idx], ...param }\n }\n return n\n })\n }\n const _init = (target = 'default', opts = {}) => {\n options[target] = opts\n return options\n }\n return { subscribe, push, pop, set, _init }\n}\n\nexport const toast = createToast()\n","import { writable } from '../store/index.mjs';\nimport { now, loop, assign } from '../internal/index.mjs';\nimport { linear } from '../easing/index.mjs';\n\nfunction is_date(obj) {\n return Object.prototype.toString.call(obj) === '[object Date]';\n}\n\nfunction tick_spring(ctx, last_value, current_value, target_value) {\n if (typeof current_value === 'number' || is_date(current_value)) {\n // @ts-ignore\n const delta = target_value - current_value;\n // @ts-ignore\n const velocity = (current_value - last_value) / (ctx.dt || 1 / 60); // guard div by 0\n const spring = ctx.opts.stiffness * delta;\n const damper = ctx.opts.damping * velocity;\n const acceleration = (spring - damper) * ctx.inv_mass;\n const d = (velocity + acceleration) * ctx.dt;\n if (Math.abs(d) < ctx.opts.precision && Math.abs(delta) < ctx.opts.precision) {\n return target_value; // settled\n }\n else {\n ctx.settled = false; // signal loop to keep ticking\n // @ts-ignore\n return is_date(current_value) ?\n new Date(current_value.getTime() + d) : current_value + d;\n }\n }\n else if (Array.isArray(current_value)) {\n // @ts-ignore\n return current_value.map((_, i) => tick_spring(ctx, last_value[i], current_value[i], target_value[i]));\n }\n else if (typeof current_value === 'object') {\n const next_value = {};\n for (const k in current_value) {\n // @ts-ignore\n next_value[k] = tick_spring(ctx, last_value[k], current_value[k], target_value[k]);\n }\n // @ts-ignore\n return next_value;\n }\n else {\n throw new Error(`Cannot spring ${typeof current_value} values`);\n }\n}\nfunction spring(value, opts = {}) {\n const store = writable(value);\n const { stiffness = 0.15, damping = 0.8, precision = 0.01 } = opts;\n let last_time;\n let task;\n let current_token;\n let last_value = value;\n let target_value = value;\n let inv_mass = 1;\n let inv_mass_recovery_rate = 0;\n let cancel_task = false;\n function set(new_value, opts = {}) {\n target_value = new_value;\n const token = current_token = {};\n if (value == null || opts.hard || (spring.stiffness >= 1 && spring.damping >= 1)) {\n cancel_task = true; // cancel any running animation\n last_time = now();\n last_value = new_value;\n store.set(value = target_value);\n return Promise.resolve();\n }\n else if (opts.soft) {\n const rate = opts.soft === true ? .5 : +opts.soft;\n inv_mass_recovery_rate = 1 / (rate * 60);\n inv_mass = 0; // infinite mass, unaffected by spring forces\n }\n if (!task) {\n last_time = now();\n cancel_task = false;\n task = loop(now => {\n if (cancel_task) {\n cancel_task = false;\n task = null;\n return false;\n }\n inv_mass = Math.min(inv_mass + inv_mass_recovery_rate, 1);\n const ctx = {\n inv_mass,\n opts: spring,\n settled: true,\n dt: (now - last_time) * 60 / 1000\n };\n const next_value = tick_spring(ctx, last_value, value, target_value);\n last_time = now;\n last_value = value;\n store.set(value = next_value);\n if (ctx.settled) {\n task = null;\n }\n return !ctx.settled;\n });\n }\n return new Promise(fulfil => {\n task.promise.then(() => {\n if (token === current_token)\n fulfil();\n });\n });\n }\n const spring = {\n set,\n update: (fn, opts) => set(fn(target_value, value), opts),\n subscribe: store.subscribe,\n stiffness,\n damping,\n precision\n };\n return spring;\n}\n\nfunction get_interpolator(a, b) {\n if (a === b || a !== a)\n return () => a;\n const type = typeof a;\n if (type !== typeof b || Array.isArray(a) !== Array.isArray(b)) {\n throw new Error('Cannot interpolate values of different type');\n }\n if (Array.isArray(a)) {\n const arr = b.map((bi, i) => {\n return get_interpolator(a[i], bi);\n });\n return t => arr.map(fn => fn(t));\n }\n if (type === 'object') {\n if (!a || !b)\n throw new Error('Object cannot be null');\n if (is_date(a) && is_date(b)) {\n a = a.getTime();\n b = b.getTime();\n const delta = b - a;\n return t => new Date(a + t * delta);\n }\n const keys = Object.keys(b);\n const interpolators = {};\n keys.forEach(key => {\n interpolators[key] = get_interpolator(a[key], b[key]);\n });\n return t => {\n const result = {};\n keys.forEach(key => {\n result[key] = interpolators[key](t);\n });\n return result;\n };\n }\n if (type === 'number') {\n const delta = b - a;\n return t => a + t * delta;\n }\n throw new Error(`Cannot interpolate ${type} values`);\n}\nfunction tweened(value, defaults = {}) {\n const store = writable(value);\n let task;\n let target_value = value;\n function set(new_value, opts) {\n if (value == null) {\n store.set(value = new_value);\n return Promise.resolve();\n }\n target_value = new_value;\n let previous_task = task;\n let started = false;\n let { delay = 0, duration = 400, easing = linear, interpolate = get_interpolator } = assign(assign({}, defaults), opts);\n if (duration === 0) {\n if (previous_task) {\n previous_task.abort();\n previous_task = null;\n }\n store.set(value = target_value);\n return Promise.resolve();\n }\n const start = now() + delay;\n let fn;\n task = loop(now => {\n if (now < start)\n return true;\n if (!started) {\n fn = interpolate(value, new_value);\n if (typeof duration === 'function')\n duration = duration(value, new_value);\n started = true;\n }\n if (previous_task) {\n previous_task.abort();\n previous_task = null;\n }\n const elapsed = now - start;\n if (elapsed > duration) {\n store.set(value = new_value);\n return false;\n }\n // @ts-ignore\n store.set(value = fn(easing(elapsed / duration)));\n return true;\n });\n return task.promise;\n }\n return {\n set,\n update: (fn, opts) => set(fn(target_value, value), opts),\n subscribe: store.subscribe\n };\n}\n\nexport { spring, tweened };\n","\n\n\n\n
\n
\n {#if item.component}\n \n {:else}\n {@html item.msg}\n {/if}\n
\n {#if item.dismissable}\n
\n {/if}\n \n
\n","\n\n\n\n
    \n {#each items as item (item.id)}\n
  • \n \n
  • \n {/each}\n
\n","\n\n\n\n\n\n\n \n\n {#if modalViewComponent}\n \n \n \n {/if}\n\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.page = factory());\n}(this, (function () { 'use strict';\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {String} str\n * @return {Array}\n */\nfunction parse (str) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var suffix = res[6];\n var asterisk = res[7];\n\n var repeat = suffix === '+' || suffix === '*';\n var optional = suffix === '?' || suffix === '*';\n var delimiter = prefix || '/';\n var pattern = capture || group || (asterisk ? '.*' : '[^' + delimiter + ']+?');\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n pattern: escapeGroup(pattern)\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {String} str\n * @return {Function}\n */\nfunction compile (str) {\n return tokensToFunction(parse(str))\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^' + tokens[i].pattern + '$');\n }\n }\n\n return function (obj) {\n var path = '';\n var data = obj || {};\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received \"' + value + '\"')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encodeURIComponent(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = encodeURIComponent(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {String} group\n * @return {String}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {RegExp} re\n * @param {Array} keys\n * @return {RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {String}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {RegExp} path\n * @param {Array} keys\n * @return {RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {Array} path\n * @param {Array} keys\n * @param {Object} options\n * @return {RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {String} path\n * @param {Array} keys\n * @param {Object} options\n * @return {RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n var tokens = parse(path);\n var re = tokensToRegExp(tokens, options);\n\n // Attach keys back to the regexp.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] !== 'string') {\n keys.push(tokens[i]);\n }\n }\n\n return attachKeys(re, keys)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {Array} tokens\n * @param {Array} keys\n * @param {Object} options\n * @return {RegExp}\n */\nfunction tokensToRegExp (tokens, options) {\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n var lastToken = tokens[tokens.length - 1];\n var endsWithSlash = typeof lastToken === 'string' && /\\/$/.test(lastToken);\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = token.pattern;\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (prefix) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithSlash ? route.slice(0, -2) : route) + '(?:\\\\/(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithSlash ? '' : '(?=\\\\/|$)';\n }\n\n return new RegExp('^' + route, flags(options))\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(String|RegExp|Array)} path\n * @param {Array} [keys]\n * @param {Object} [options]\n * @return {RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n keys = keys || [];\n\n if (!isarray(keys)) {\n options = keys;\n keys = [];\n } else if (!options) {\n options = {};\n }\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, keys, options)\n }\n\n if (isarray(path)) {\n return arrayToRegexp(path, keys, options)\n }\n\n return stringToRegexp(path, keys, options)\n}\n\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/**\n * Module dependencies.\n */\n\n \n\n /**\n * Short-cuts for global-object checks\n */\n\n var hasDocument = ('undefined' !== typeof document);\n var hasWindow = ('undefined' !== typeof window);\n var hasHistory = ('undefined' !== typeof history);\n var hasProcess = typeof process !== 'undefined';\n\n /**\n * Detect click event\n */\n var clickEvent = hasDocument && document.ontouchstart ? 'touchstart' : 'click';\n\n /**\n * To work properly with the URL\n * history.location generated polyfill in https://github.com/devote/HTML5-History-API\n */\n\n var isLocation = hasWindow && !!(window.history.location || window.location);\n\n /**\n * The page instance\n * @api private\n */\n function Page() {\n // public things\n this.callbacks = [];\n this.exits = [];\n this.current = '';\n this.len = 0;\n\n // private things\n this._decodeURLComponents = true;\n this._base = '';\n this._strict = false;\n this._running = false;\n this._hashbang = false;\n\n // bound functions\n this.clickHandler = this.clickHandler.bind(this);\n this._onpopstate = this._onpopstate.bind(this);\n }\n\n /**\n * Configure the instance of page. This can be called multiple times.\n *\n * @param {Object} options\n * @api public\n */\n\n Page.prototype.configure = function(options) {\n var opts = options || {};\n\n this._window = opts.window || (hasWindow && window);\n this._decodeURLComponents = opts.decodeURLComponents !== false;\n this._popstate = opts.popstate !== false && hasWindow;\n this._click = opts.click !== false && hasDocument;\n this._hashbang = !!opts.hashbang;\n\n var _window = this._window;\n if(this._popstate) {\n _window.addEventListener('popstate', this._onpopstate, false);\n } else if(hasWindow) {\n _window.removeEventListener('popstate', this._onpopstate, false);\n }\n\n if (this._click) {\n _window.document.addEventListener(clickEvent, this.clickHandler, false);\n } else if(hasDocument) {\n _window.document.removeEventListener(clickEvent, this.clickHandler, false);\n }\n\n if(this._hashbang && hasWindow && !hasHistory) {\n _window.addEventListener('hashchange', this._onpopstate, false);\n } else if(hasWindow) {\n _window.removeEventListener('hashchange', this._onpopstate, false);\n }\n };\n\n /**\n * Get or set basepath to `path`.\n *\n * @param {string} path\n * @api public\n */\n\n Page.prototype.base = function(path) {\n if (0 === arguments.length) return this._base;\n this._base = path;\n };\n\n /**\n * Gets the `base`, which depends on whether we are using History or\n * hashbang routing.\n\n * @api private\n */\n Page.prototype._getBase = function() {\n var base = this._base;\n if(!!base) return base;\n var loc = hasWindow && this._window && this._window.location;\n\n if(hasWindow && this._hashbang && loc && loc.protocol === 'file:') {\n base = loc.pathname;\n }\n\n return base;\n };\n\n /**\n * Get or set strict path matching to `enable`\n *\n * @param {boolean} enable\n * @api public\n */\n\n Page.prototype.strict = function(enable) {\n if (0 === arguments.length) return this._strict;\n this._strict = enable;\n };\n\n\n /**\n * Bind with the given `options`.\n *\n * Options:\n *\n * - `click` bind to click events [true]\n * - `popstate` bind to popstate [true]\n * - `dispatch` perform initial dispatch [true]\n *\n * @param {Object} options\n * @api public\n */\n\n Page.prototype.start = function(options) {\n var opts = options || {};\n this.configure(opts);\n\n if (false === opts.dispatch) return;\n this._running = true;\n\n var url;\n if(isLocation) {\n var window = this._window;\n var loc = window.location;\n\n if(this._hashbang && ~loc.hash.indexOf('#!')) {\n url = loc.hash.substr(2) + loc.search;\n } else if (this._hashbang) {\n url = loc.search + loc.hash;\n } else {\n url = loc.pathname + loc.search + loc.hash;\n }\n }\n\n this.replace(url, null, true, opts.dispatch);\n };\n\n /**\n * Unbind click and popstate event handlers.\n *\n * @api public\n */\n\n Page.prototype.stop = function() {\n if (!this._running) return;\n this.current = '';\n this.len = 0;\n this._running = false;\n\n var window = this._window;\n this._click && window.document.removeEventListener(clickEvent, this.clickHandler, false);\n hasWindow && window.removeEventListener('popstate', this._onpopstate, false);\n hasWindow && window.removeEventListener('hashchange', this._onpopstate, false);\n };\n\n /**\n * Show `path` with optional `state` object.\n *\n * @param {string} path\n * @param {Object=} state\n * @param {boolean=} dispatch\n * @param {boolean=} push\n * @return {!Context}\n * @api public\n */\n\n Page.prototype.show = function(path, state, dispatch, push) {\n var ctx = new Context(path, state, this),\n prev = this.prevContext;\n this.prevContext = ctx;\n this.current = ctx.path;\n if (false !== dispatch) this.dispatch(ctx, prev);\n if (false !== ctx.handled && false !== push) ctx.pushState();\n return ctx;\n };\n\n /**\n * Goes back in the history\n * Back should always let the current route push state and then go back.\n *\n * @param {string} path - fallback path to go back if no more history exists, if undefined defaults to page.base\n * @param {Object=} state\n * @api public\n */\n\n Page.prototype.back = function(path, state) {\n var page = this;\n if (this.len > 0) {\n var window = this._window;\n // this may need more testing to see if all browsers\n // wait for the next tick to go back in history\n hasHistory && window.history.back();\n this.len--;\n } else if (path) {\n setTimeout(function() {\n page.show(path, state);\n });\n } else {\n setTimeout(function() {\n page.show(page._getBase(), state);\n });\n }\n };\n\n /**\n * Register route to redirect from one path to other\n * or just redirect to another route\n *\n * @param {string} from - if param 'to' is undefined redirects to 'from'\n * @param {string=} to\n * @api public\n */\n Page.prototype.redirect = function(from, to) {\n var inst = this;\n\n // Define route from a path to another\n if ('string' === typeof from && 'string' === typeof to) {\n page.call(this, from, function(e) {\n setTimeout(function() {\n inst.replace(/** @type {!string} */ (to));\n }, 0);\n });\n }\n\n // Wait for the push state and replace it with another\n if ('string' === typeof from && 'undefined' === typeof to) {\n setTimeout(function() {\n inst.replace(from);\n }, 0);\n }\n };\n\n /**\n * Replace `path` with optional `state` object.\n *\n * @param {string} path\n * @param {Object=} state\n * @param {boolean=} init\n * @param {boolean=} dispatch\n * @return {!Context}\n * @api public\n */\n\n\n Page.prototype.replace = function(path, state, init, dispatch) {\n var ctx = new Context(path, state, this),\n prev = this.prevContext;\n this.prevContext = ctx;\n this.current = ctx.path;\n ctx.init = init;\n ctx.save(); // save before dispatching, which may redirect\n if (false !== dispatch) this.dispatch(ctx, prev);\n return ctx;\n };\n\n /**\n * Dispatch the given `ctx`.\n *\n * @param {Context} ctx\n * @api private\n */\n\n Page.prototype.dispatch = function(ctx, prev) {\n var i = 0, j = 0, page = this;\n\n function nextExit() {\n var fn = page.exits[j++];\n if (!fn) return nextEnter();\n fn(prev, nextExit);\n }\n\n function nextEnter() {\n var fn = page.callbacks[i++];\n\n if (ctx.path !== page.current) {\n ctx.handled = false;\n return;\n }\n if (!fn) return unhandled.call(page, ctx);\n fn(ctx, nextEnter);\n }\n\n if (prev) {\n nextExit();\n } else {\n nextEnter();\n }\n };\n\n /**\n * Register an exit route on `path` with\n * callback `fn()`, which will be called\n * on the previous context when a new\n * page is visited.\n */\n Page.prototype.exit = function(path, fn) {\n if (typeof path === 'function') {\n return this.exit('*', path);\n }\n\n var route = new Route(path, null, this);\n for (var i = 1; i < arguments.length; ++i) {\n this.exits.push(route.middleware(arguments[i]));\n }\n };\n\n /**\n * Handle \"click\" events.\n */\n\n /* jshint +W054 */\n Page.prototype.clickHandler = function(e) {\n if (1 !== this._which(e)) return;\n\n if (e.metaKey || e.ctrlKey || e.shiftKey) return;\n if (e.defaultPrevented) return;\n\n // ensure link\n // use shadow dom when available if not, fall back to composedPath()\n // for browsers that only have shady\n var el = e.target;\n var eventPath = e.path || (e.composedPath ? e.composedPath() : null);\n\n if(eventPath) {\n for (var i = 0; i < eventPath.length; i++) {\n if (!eventPath[i].nodeName) continue;\n if (eventPath[i].nodeName.toUpperCase() !== 'A') continue;\n if (!eventPath[i].href) continue;\n\n el = eventPath[i];\n break;\n }\n }\n\n // continue ensure link\n // el.nodeName for svg links are 'a' instead of 'A'\n while (el && 'A' !== el.nodeName.toUpperCase()) el = el.parentNode;\n if (!el || 'A' !== el.nodeName.toUpperCase()) return;\n\n // check if link is inside an svg\n // in this case, both href and target are always inside an object\n var svg = (typeof el.href === 'object') && el.href.constructor.name === 'SVGAnimatedString';\n\n // Ignore if tag has\n // 1. \"download\" attribute\n // 2. rel=\"external\" attribute\n if (el.hasAttribute('download') || el.getAttribute('rel') === 'external') return;\n\n // ensure non-hash for the same path\n var link = el.getAttribute('href');\n if(!this._hashbang && this._samePath(el) && (el.hash || '#' === link)) return;\n\n // Check for mailto: in the href\n if (link && link.indexOf('mailto:') > -1) return;\n\n // check target\n // svg target is an object and its desired value is in .baseVal property\n if (svg ? el.target.baseVal : el.target) return;\n\n // x-origin\n // note: svg links that are not relative don't call click events (and skip page.js)\n // consequently, all svg links tested inside page.js are relative and in the same origin\n if (!svg && !this.sameOrigin(el.href)) return;\n\n // rebuild path\n // There aren't .pathname and .search properties in svg links, so we use href\n // Also, svg href is an object and its desired value is in .baseVal property\n var path = svg ? el.href.baseVal : (el.pathname + el.search + (el.hash || ''));\n\n path = path[0] !== '/' ? '/' + path : path;\n\n // strip leading \"/[drive letter]:\" on NW.js on Windows\n if (hasProcess && path.match(/^\\/[a-zA-Z]:\\//)) {\n path = path.replace(/^\\/[a-zA-Z]:\\//, '/');\n }\n\n // same page\n var orig = path;\n var pageBase = this._getBase();\n\n if (path.indexOf(pageBase) === 0) {\n path = path.substr(pageBase.length);\n }\n\n if (this._hashbang) path = path.replace('#!', '');\n\n if (pageBase && orig === path && (!isLocation || this._window.location.protocol !== 'file:')) {\n return;\n }\n\n e.preventDefault();\n this.show(orig);\n };\n\n /**\n * Handle \"populate\" events.\n * @api private\n */\n\n Page.prototype._onpopstate = (function () {\n var loaded = false;\n if ( ! hasWindow ) {\n return function () {};\n }\n if (hasDocument && document.readyState === 'complete') {\n loaded = true;\n } else {\n window.addEventListener('load', function() {\n setTimeout(function() {\n loaded = true;\n }, 0);\n });\n }\n return function onpopstate(e) {\n if (!loaded) return;\n var page = this;\n if (e.state) {\n var path = e.state.path;\n page.replace(path, e.state);\n } else if (isLocation) {\n var loc = page._window.location;\n page.show(loc.pathname + loc.search + loc.hash, undefined, undefined, false);\n }\n };\n })();\n\n /**\n * Event button.\n */\n Page.prototype._which = function(e) {\n e = e || (hasWindow && this._window.event);\n return null == e.which ? e.button : e.which;\n };\n\n /**\n * Convert to a URL object\n * @api private\n */\n Page.prototype._toURL = function(href) {\n var window = this._window;\n if(typeof URL === 'function' && isLocation) {\n return new URL(href, window.location.toString());\n } else if (hasDocument) {\n var anc = window.document.createElement('a');\n anc.href = href;\n return anc;\n }\n };\n\n /**\n * Check if `href` is the same origin.\n * @param {string} href\n * @api public\n */\n Page.prototype.sameOrigin = function(href) {\n if(!href || !isLocation) return false;\n\n var url = this._toURL(href);\n var window = this._window;\n\n var loc = window.location;\n\n /*\n When the port is the default http port 80 for http, or 443 for\n https, internet explorer 11 returns an empty string for loc.port,\n so we need to compare loc.port with an empty string if url.port\n is the default port 80 or 443.\n Also the comparition with `port` is changed from `===` to `==` because\n `port` can be a string sometimes. This only applies to ie11.\n */\n return loc.protocol === url.protocol &&\n loc.hostname === url.hostname &&\n (loc.port === url.port || loc.port === '' && (url.port == 80 || url.port == 443)); // jshint ignore:line\n };\n\n /**\n * @api private\n */\n Page.prototype._samePath = function(url) {\n if(!isLocation) return false;\n var window = this._window;\n var loc = window.location;\n return url.pathname === loc.pathname &&\n url.search === loc.search;\n };\n\n /**\n * Remove URL encoding from the given `str`.\n * Accommodates whitespace in both x-www-form-urlencoded\n * and regular percent-encoded form.\n *\n * @param {string} val - URL component to decode\n * @api private\n */\n Page.prototype._decodeURLEncodedURIComponent = function(val) {\n if (typeof val !== 'string') { return val; }\n return this._decodeURLComponents ? decodeURIComponent(val.replace(/\\+/g, ' ')) : val;\n };\n\n /**\n * Create a new `page` instance and function\n */\n function createPage() {\n var pageInstance = new Page();\n\n function pageFn(/* args */) {\n return page.apply(pageInstance, arguments);\n }\n\n // Copy all of the things over. In 2.0 maybe we use setPrototypeOf\n pageFn.callbacks = pageInstance.callbacks;\n pageFn.exits = pageInstance.exits;\n pageFn.base = pageInstance.base.bind(pageInstance);\n pageFn.strict = pageInstance.strict.bind(pageInstance);\n pageFn.start = pageInstance.start.bind(pageInstance);\n pageFn.stop = pageInstance.stop.bind(pageInstance);\n pageFn.show = pageInstance.show.bind(pageInstance);\n pageFn.back = pageInstance.back.bind(pageInstance);\n pageFn.redirect = pageInstance.redirect.bind(pageInstance);\n pageFn.replace = pageInstance.replace.bind(pageInstance);\n pageFn.dispatch = pageInstance.dispatch.bind(pageInstance);\n pageFn.exit = pageInstance.exit.bind(pageInstance);\n pageFn.configure = pageInstance.configure.bind(pageInstance);\n pageFn.sameOrigin = pageInstance.sameOrigin.bind(pageInstance);\n pageFn.clickHandler = pageInstance.clickHandler.bind(pageInstance);\n\n pageFn.create = createPage;\n\n Object.defineProperty(pageFn, 'len', {\n get: function(){\n return pageInstance.len;\n },\n set: function(val) {\n pageInstance.len = val;\n }\n });\n\n Object.defineProperty(pageFn, 'current', {\n get: function(){\n return pageInstance.current;\n },\n set: function(val) {\n pageInstance.current = val;\n }\n });\n\n // In 2.0 these can be named exports\n pageFn.Context = Context;\n pageFn.Route = Route;\n\n return pageFn;\n }\n\n /**\n * Register `path` with callback `fn()`,\n * or route `path`, or redirection,\n * or `page.start()`.\n *\n * page(fn);\n * page('*', fn);\n * page('/user/:id', load, user);\n * page('/user/' + user.id, { some: 'thing' });\n * page('/user/' + user.id);\n * page('/from', '/to')\n * page();\n *\n * @param {string|!Function|!Object} path\n * @param {Function=} fn\n * @api public\n */\n\n function page(path, fn) {\n // \n if ('function' === typeof path) {\n return page.call(this, '*', path);\n }\n\n // route to \n if ('function' === typeof fn) {\n var route = new Route(/** @type {string} */ (path), null, this);\n for (var i = 1; i < arguments.length; ++i) {\n this.callbacks.push(route.middleware(arguments[i]));\n }\n // show with [state]\n } else if ('string' === typeof path) {\n this['string' === typeof fn ? 'redirect' : 'show'](path, fn);\n // start [options]\n } else {\n this.start(path);\n }\n }\n\n /**\n * Unhandled `ctx`. When it's not the initial\n * popstate then redirect. If you wish to handle\n * 404s on your own use `page('*', callback)`.\n *\n * @param {Context} ctx\n * @api private\n */\n function unhandled(ctx) {\n if (ctx.handled) return;\n var current;\n var page = this;\n var window = page._window;\n\n if (page._hashbang) {\n current = isLocation && this._getBase() + window.location.hash.replace('#!', '');\n } else {\n current = isLocation && window.location.pathname + window.location.search;\n }\n\n if (current === ctx.canonicalPath) return;\n page.stop();\n ctx.handled = false;\n isLocation && (window.location.href = ctx.canonicalPath);\n }\n\n /**\n * Escapes RegExp characters in the given string.\n *\n * @param {string} s\n * @api private\n */\n function escapeRegExp(s) {\n return s.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1');\n }\n\n /**\n * Initialize a new \"request\" `Context`\n * with the given `path` and optional initial `state`.\n *\n * @constructor\n * @param {string} path\n * @param {Object=} state\n * @api public\n */\n\n function Context(path, state, pageInstance) {\n var _page = this.page = pageInstance || page;\n var window = _page._window;\n var hashbang = _page._hashbang;\n\n var pageBase = _page._getBase();\n if ('/' === path[0] && 0 !== path.indexOf(pageBase)) path = pageBase + (hashbang ? '#!' : '') + path;\n var i = path.indexOf('?');\n\n this.canonicalPath = path;\n var re = new RegExp('^' + escapeRegExp(pageBase));\n this.path = path.replace(re, '') || '/';\n if (hashbang) this.path = this.path.replace('#!', '') || '/';\n\n this.title = (hasDocument && window.document.title);\n this.state = state || {};\n this.state.path = path;\n this.querystring = ~i ? _page._decodeURLEncodedURIComponent(path.slice(i + 1)) : '';\n this.pathname = _page._decodeURLEncodedURIComponent(~i ? path.slice(0, i) : path);\n this.params = {};\n\n // fragment\n this.hash = '';\n if (!hashbang) {\n if (!~this.path.indexOf('#')) return;\n var parts = this.path.split('#');\n this.path = this.pathname = parts[0];\n this.hash = _page._decodeURLEncodedURIComponent(parts[1]) || '';\n this.querystring = this.querystring.split('#')[0];\n }\n }\n\n /**\n * Push state.\n *\n * @api private\n */\n\n Context.prototype.pushState = function() {\n var page = this.page;\n var window = page._window;\n var hashbang = page._hashbang;\n\n page.len++;\n if (hasHistory) {\n window.history.pushState(this.state, this.title,\n hashbang && this.path !== '/' ? '#!' + this.path : this.canonicalPath);\n }\n };\n\n /**\n * Save the context state.\n *\n * @api public\n */\n\n Context.prototype.save = function() {\n var page = this.page;\n if (hasHistory) {\n page._window.history.replaceState(this.state, this.title,\n page._hashbang && this.path !== '/' ? '#!' + this.path : this.canonicalPath);\n }\n };\n\n /**\n * Initialize `Route` with the given HTTP `path`,\n * and an array of `callbacks` and `options`.\n *\n * Options:\n *\n * - `sensitive` enable case-sensitive routes\n * - `strict` enable strict matching for trailing slashes\n *\n * @constructor\n * @param {string} path\n * @param {Object=} options\n * @api private\n */\n\n function Route(path, options, page) {\n var _page = this.page = page || globalPage;\n var opts = options || {};\n opts.strict = opts.strict || _page._strict;\n this.path = (path === '*') ? '(.*)' : path;\n this.method = 'GET';\n this.regexp = pathToRegexp_1(this.path, this.keys = [], opts);\n }\n\n /**\n * Return route middleware with\n * the given callback `fn()`.\n *\n * @param {Function} fn\n * @return {Function}\n * @api public\n */\n\n Route.prototype.middleware = function(fn) {\n var self = this;\n return function(ctx, next) {\n if (self.match(ctx.path, ctx.params)) {\n ctx.routePath = self.path;\n return fn(ctx, next);\n }\n next();\n };\n };\n\n /**\n * Check if this route matches `path`, if so\n * populate `params`.\n *\n * @param {string} path\n * @param {Object} params\n * @return {boolean}\n * @api private\n */\n\n Route.prototype.match = function(path, params) {\n var keys = this.keys,\n qsIndex = path.indexOf('?'),\n pathname = ~qsIndex ? path.slice(0, qsIndex) : path,\n m = this.regexp.exec(decodeURIComponent(pathname));\n\n if (!m) return false;\n\n delete params[0];\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = keys[i - 1];\n var val = this.page._decodeURLEncodedURIComponent(m[i]);\n if (val !== undefined || !(hasOwnProperty.call(params, key.name))) {\n params[key.name] = val;\n }\n }\n\n return true;\n };\n\n\n /**\n * Module exports.\n */\n\n var globalPage = createPage();\n var page_js = globalPage;\n var default_1 = globalPage;\n\npage_js.default = default_1;\n\nreturn page_js;\n\n})));\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","var makeOptions = function makeOptions(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n return {\n arrayFormat: opts.arrayFormat || 'none',\n booleanFormat: opts.booleanFormat || 'none',\n nullFormat: opts.nullFormat || 'default'\n };\n};\n\nvar encodeValue = function encodeValue(value) {\n return encodeURIComponent(value);\n};\n\nvar decodeValue = function decodeValue(value) {\n return decodeURIComponent(value);\n};\n\nvar encodeBoolean = function encodeBoolean(name, value, opts) {\n if (opts.booleanFormat === 'empty-true' && value) {\n return name;\n }\n\n var encodedValue;\n\n if (opts.booleanFormat === 'unicode') {\n encodedValue = value ? '✓' : '✗';\n } else {\n encodedValue = value.toString();\n }\n\n return name + \"=\" + encodedValue;\n};\n\nvar encodeNull = function encodeNull(name, opts) {\n if (opts.nullFormat === 'hidden') {\n return '';\n }\n\n if (opts.nullFormat === 'string') {\n return name + \"=null\";\n }\n\n return name;\n};\n\nvar getNameEncoder = function getNameEncoder(opts) {\n if (opts.arrayFormat === 'index') {\n return function (name, index) {\n return name + \"[\" + index + \"]\";\n };\n }\n\n if (opts.arrayFormat === 'brackets') {\n return function (name) {\n return name + \"[]\";\n };\n }\n\n return function (name) {\n return name;\n };\n};\n\nvar encodeArray = function encodeArray(name, arr, opts) {\n var encodeName = getNameEncoder(opts);\n return arr.map(function (val, index) {\n return encodeName(name, index) + \"=\" + encodeValue(val);\n }).join('&');\n};\nvar encode = function encode(name, value, opts) {\n if (value === null) {\n return encodeNull(name, opts);\n }\n\n if (typeof value === 'boolean') {\n return encodeBoolean(name, value, opts);\n }\n\n if (Array.isArray(value)) {\n return encodeArray(name, value, opts);\n }\n\n return name + \"=\" + encodeValue(value);\n};\nvar decode = function decode(value, opts) {\n if (value === undefined) {\n return opts.booleanFormat === 'empty-true' ? true : null;\n }\n\n if (opts.booleanFormat === 'string') {\n if (value === 'true') {\n return true;\n }\n\n if (value === 'false') {\n return false;\n }\n }\n\n if (opts.booleanFormat === 'unicode') {\n if (decodeValue(value) === '✓') {\n return true;\n }\n\n if (decodeValue(value) === '✗') {\n return false;\n }\n }\n\n if (opts.nullFormat === 'string') {\n if (value === 'null') {\n return null;\n }\n }\n\n return decodeValue(value);\n};\n\nvar getSearch = function getSearch(path) {\n var pos = path.indexOf('?');\n\n if (pos === -1) {\n return path;\n }\n\n return path.slice(pos + 1);\n};\nvar isSerialisable = function isSerialisable(val) {\n return val !== undefined;\n};\nvar parseName = function parseName(name) {\n var bracketPosition = name.indexOf('[');\n var hasBrackets = bracketPosition !== -1;\n return {\n hasBrackets: hasBrackets,\n name: hasBrackets ? name.slice(0, bracketPosition) : name\n };\n};\n\n/**\r\n * Parse a querystring and return an object of parameters\r\n */\n\nvar parse = function parse(path, opts) {\n var options = makeOptions(opts);\n return getSearch(path).split('&').reduce(function (params, param) {\n var _a = param.split('='),\n rawName = _a[0],\n value = _a[1];\n\n var _b = parseName(rawName),\n hasBrackets = _b.hasBrackets,\n name = _b.name;\n\n var currentValue = params[name];\n var decodedValue = decode(value, options);\n\n if (currentValue === undefined) {\n params[name] = hasBrackets ? [decodedValue] : decodedValue;\n } else {\n params[name] = (Array.isArray(currentValue) ? currentValue : [currentValue]).concat(decodedValue);\n }\n\n return params;\n }, {});\n};\n/**\r\n * Build a querystring from an object of parameters\r\n */\n\nvar build = function build(params, opts) {\n var options = makeOptions(opts);\n return Object.keys(params).filter(function (paramName) {\n return isSerialisable(params[paramName]);\n }).map(function (paramName) {\n return encode(paramName, params[paramName], options);\n }).filter(Boolean).join('&');\n};\n/**\r\n * Remove a list of parameters from a querystring\r\n */\n\nvar omit = function omit(path, paramsToOmit, opts) {\n var options = makeOptions(opts);\n var searchPart = getSearch(path);\n\n if (searchPart === '') {\n return {\n querystring: '',\n removedParams: {}\n };\n }\n\n var _a = path.split('&').reduce(function (_a, chunk) {\n var left = _a[0],\n right = _a[1];\n var rawName = chunk.split('=')[0];\n var name = parseName(rawName).name;\n return paramsToOmit.indexOf(name) === -1 ? [left.concat(chunk), right] : [left, right.concat(chunk)];\n }, [[], []]),\n kept = _a[0],\n removed = _a[1];\n\n return {\n querystring: kept.join('&'),\n removedParams: parse(removed.join('&'), options)\n };\n};\n/**\r\n * Remove a list of parameters from a querystring\r\n */\n\nvar keep = function keep(path, paramsToKeep, opts) {\n var options = makeOptions(opts);\n var searchPart = getSearch(path);\n\n if (searchPart === '') {\n return {\n keptParams: {},\n querystring: ''\n };\n }\n\n var kept = path.split('&').reduce(function (acc, chunk) {\n var rawName = chunk.split('=')[0];\n var name = parseName(rawName).name;\n\n if (paramsToKeep.includes(name)) {\n acc.push(chunk);\n }\n\n return acc;\n }, []);\n return {\n keptParams: parse(kept.join('&'), options),\n querystring: kept.join('&')\n };\n};\n\nexport { build, keep, omit, parse };\n//# sourceMappingURL=search-params.esm.js.map\n","import { __assign } from 'tslib';\nimport { parse, build } from 'search-params';\n\n/**\r\n * We encode using encodeURIComponent but we want to\r\n * preserver certain characters which are commonly used\r\n * (sub delimiters and ':')\r\n *\r\n * https://www.ietf.org/rfc/rfc3986.txt\r\n *\r\n * reserved = gen-delims / sub-delims\r\n *\r\n * gen-delims = \":\" / \"/\" / \"?\" / \"#\" / \"[\" / \"]\" / \"@\"\r\n *\r\n * sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"\r\n / \"*\" / \"+\" / \",\" / \";\" / \"=\"\r\n */\nvar excludeSubDelimiters = /[^!$'()*+,;|:]/g;\nvar encodeURIComponentExcludingSubDelims = function encodeURIComponentExcludingSubDelims(segment) {\n return segment.replace(excludeSubDelimiters, function (match) {\n return encodeURIComponent(match);\n });\n};\nvar encodingMethods = {\n \"default\": encodeURIComponentExcludingSubDelims,\n uri: encodeURI,\n uriComponent: encodeURIComponent,\n none: function none(val) {\n return val;\n },\n legacy: encodeURI\n};\nvar decodingMethods = {\n \"default\": decodeURIComponent,\n uri: decodeURI,\n uriComponent: decodeURIComponent,\n none: function none(val) {\n return val;\n },\n legacy: decodeURIComponent\n};\nvar encodeParam = function encodeParam(param, encoding, isSpatParam) {\n var encoder = encodingMethods[encoding] || encodeURIComponentExcludingSubDelims;\n\n if (isSpatParam) {\n return String(param).split('/').map(encoder).join('/');\n }\n\n return encoder(String(param));\n};\nvar decodeParam = function decodeParam(param, encoding) {\n return (decodingMethods[encoding] || decodeURIComponent)(param);\n};\n\nvar defaultOrConstrained = function defaultOrConstrained(match) {\n return '(' + (match ? match.replace(/(^<|>$)/g, '') : \"[a-zA-Z0-9-_.~%':|=+\\\\*@$]+\") + ')';\n};\nvar rules = [{\n name: 'url-parameter',\n pattern: /^:([a-zA-Z0-9-_]*[a-zA-Z0-9]{1})(<(.+?)>)?/,\n regex: function regex(match) {\n return new RegExp(defaultOrConstrained(match[2]));\n }\n}, {\n name: 'url-parameter-splat',\n pattern: /^\\*([a-zA-Z0-9-_]*[a-zA-Z0-9]{1})/,\n regex: /([^?]*)/\n}, {\n name: 'url-parameter-matrix',\n pattern: /^;([a-zA-Z0-9-_]*[a-zA-Z0-9]{1})(<(.+?)>)?/,\n regex: function regex(match) {\n return new RegExp(';' + match[1] + '=' + defaultOrConstrained(match[2]));\n }\n}, {\n name: 'query-parameter',\n pattern: /^(?:\\?|&)(?::)?([a-zA-Z0-9-_]*[a-zA-Z0-9]{1})/\n}, {\n name: 'delimiter',\n pattern: /^(\\/|\\?)/,\n regex: function regex(match) {\n return new RegExp('\\\\' + match[0]);\n }\n}, {\n name: 'sub-delimiter',\n pattern: /^(!|&|-|_|\\.|;)/,\n regex: function regex(match) {\n return new RegExp(match[0]);\n }\n}, {\n name: 'fragment',\n pattern: /^([0-9a-zA-Z]+)/,\n regex: function regex(match) {\n return new RegExp(match[0]);\n }\n}];\n\nvar tokenise = function tokenise(str, tokens) {\n if (tokens === void 0) {\n tokens = [];\n } // Look for a matching rule\n\n\n var matched = rules.some(function (rule) {\n var match = str.match(rule.pattern);\n\n if (!match) {\n return false;\n }\n\n tokens.push({\n type: rule.name,\n match: match[0],\n val: match.slice(1, 2),\n otherVal: match.slice(2),\n regex: rule.regex instanceof Function ? rule.regex(match) : rule.regex\n });\n\n if (match[0].length < str.length) {\n tokens = tokenise(str.substr(match[0].length), tokens);\n }\n\n return true;\n }); // If no rules matched, throw an error (possible malformed path)\n\n if (!matched) {\n throw new Error(\"Could not parse path '\" + str + \"'\");\n }\n\n return tokens;\n};\n\nvar exists = function exists(val) {\n return val !== undefined && val !== null;\n};\n\nvar optTrailingSlash = function optTrailingSlash(source, strictTrailingSlash) {\n if (strictTrailingSlash) {\n return source;\n }\n\n if (source === '\\\\/') {\n return source;\n }\n\n return source.replace(/\\\\\\/$/, '') + '(?:\\\\/)?';\n};\n\nvar upToDelimiter = function upToDelimiter(source, delimiter) {\n if (!delimiter) {\n return source;\n }\n\n return /(\\/)$/.test(source) ? source : source + '(\\\\/|\\\\?|\\\\.|;|$)';\n};\n\nvar appendQueryParam = function appendQueryParam(params, param, val) {\n if (val === void 0) {\n val = '';\n }\n\n var existingVal = params[param];\n\n if (existingVal === undefined) {\n params[param] = val;\n } else {\n params[param] = Array.isArray(existingVal) ? existingVal.concat(val) : [existingVal, val];\n }\n\n return params;\n};\n\nvar defaultOptions = {\n urlParamsEncoding: 'default'\n};\n\nvar Path =\n/*#__PURE__*/\n\n/** @class */\nfunction () {\n function Path(path, options) {\n if (!path) {\n throw new Error('Missing path in Path constructor');\n }\n\n this.path = path;\n this.options = __assign(__assign({}, defaultOptions), options);\n this.tokens = tokenise(path);\n this.hasUrlParams = this.tokens.filter(function (t) {\n return /^url-parameter/.test(t.type);\n }).length > 0;\n this.hasSpatParam = this.tokens.filter(function (t) {\n return /splat$/.test(t.type);\n }).length > 0;\n this.hasMatrixParams = this.tokens.filter(function (t) {\n return /matrix$/.test(t.type);\n }).length > 0;\n this.hasQueryParams = this.tokens.filter(function (t) {\n return /^query-parameter/.test(t.type);\n }).length > 0; // Extract named parameters from tokens\n\n this.spatParams = this.getParams('url-parameter-splat');\n this.urlParams = this.getParams(/^url-parameter/); // Query params\n\n this.queryParams = this.getParams('query-parameter'); // All params\n\n this.params = this.urlParams.concat(this.queryParams); // Check if hasQueryParams\n // Regular expressions for url part only (full and partial match)\n\n this.source = this.tokens.filter(function (t) {\n return t.regex !== undefined;\n }).map(function (t) {\n return t.regex.source;\n }).join('');\n }\n\n Path.createPath = function (path, options) {\n return new Path(path, options);\n };\n\n Path.prototype.isQueryParam = function (name) {\n return this.queryParams.indexOf(name) !== -1;\n };\n\n Path.prototype.isSpatParam = function (name) {\n return this.spatParams.indexOf(name) !== -1;\n };\n\n Path.prototype.test = function (path, opts) {\n var _this = this;\n\n var options = __assign(__assign({\n caseSensitive: false,\n strictTrailingSlash: false\n }, this.options), opts); // trailingSlash: falsy => non optional, truthy => optional\n\n\n var source = optTrailingSlash(this.source, options.strictTrailingSlash); // Check if exact match\n\n var match = this.urlTest(path, source + (this.hasQueryParams ? '(\\\\?.*$|$)' : '$'), options.caseSensitive, options.urlParamsEncoding); // If no match, or no query params, no need to go further\n\n if (!match || !this.hasQueryParams) {\n return match;\n } // Extract query params\n\n\n var queryParams = parse(path, options.queryParams);\n var unexpectedQueryParams = Object.keys(queryParams).filter(function (p) {\n return !_this.isQueryParam(p);\n });\n\n if (unexpectedQueryParams.length === 0) {\n // Extend url match\n Object.keys(queryParams).forEach( // @ts-ignore\n function (p) {\n return match[p] = queryParams[p];\n });\n return match;\n }\n\n return null;\n };\n\n Path.prototype.partialTest = function (path, opts) {\n var _this = this;\n\n var options = __assign(__assign({\n caseSensitive: false,\n delimited: true\n }, this.options), opts); // Check if partial match (start of given path matches regex)\n // trailingSlash: falsy => non optional, truthy => optional\n\n\n var source = upToDelimiter(this.source, options.delimited);\n var match = this.urlTest(path, source, options.caseSensitive, options.urlParamsEncoding);\n\n if (!match) {\n return match;\n }\n\n if (!this.hasQueryParams) {\n return match;\n }\n\n var queryParams = parse(path, options.queryParams);\n Object.keys(queryParams).filter(function (p) {\n return _this.isQueryParam(p);\n }).forEach(function (p) {\n return appendQueryParam(match, p, queryParams[p]);\n });\n return match;\n };\n\n Path.prototype.build = function (params, opts) {\n var _this = this;\n\n if (params === void 0) {\n params = {};\n }\n\n var options = __assign(__assign({\n ignoreConstraints: false,\n ignoreSearch: false,\n queryParams: {}\n }, this.options), opts);\n\n var encodedUrlParams = Object.keys(params).filter(function (p) {\n return !_this.isQueryParam(p);\n }).reduce(function (acc, key) {\n if (!exists(params[key])) {\n return acc;\n }\n\n var val = params[key];\n\n var isSpatParam = _this.isSpatParam(key);\n\n if (typeof val === 'boolean') {\n acc[key] = val;\n } else if (Array.isArray(val)) {\n acc[key] = val.map(function (v) {\n return encodeParam(v, options.urlParamsEncoding, isSpatParam);\n });\n } else {\n acc[key] = encodeParam(val, options.urlParamsEncoding, isSpatParam);\n }\n\n return acc;\n }, {}); // Check all params are provided (not search parameters which are optional)\n\n if (this.urlParams.some(function (p) {\n return !exists(params[p]);\n })) {\n var missingParameters = this.urlParams.filter(function (p) {\n return !exists(params[p]);\n });\n throw new Error(\"Cannot build path: '\" + this.path + \"' requires missing parameters { \" + missingParameters.join(', ') + ' }');\n } // Check constraints\n\n\n if (!options.ignoreConstraints) {\n var constraintsPassed = this.tokens.filter(function (t) {\n return /^url-parameter/.test(t.type) && !/-splat$/.test(t.type);\n }).every(function (t) {\n return new RegExp('^' + defaultOrConstrained(t.otherVal[0]) + '$').test(encodedUrlParams[t.val]);\n });\n\n if (!constraintsPassed) {\n throw new Error(\"Some parameters of '\" + this.path + \"' are of invalid format\");\n }\n }\n\n var base = this.tokens.filter(function (t) {\n return /^query-parameter/.test(t.type) === false;\n }).map(function (t) {\n if (t.type === 'url-parameter-matrix') {\n return \";\" + t.val + \"=\" + encodedUrlParams[t.val[0]];\n }\n\n return /^url-parameter/.test(t.type) ? encodedUrlParams[t.val[0]] : t.match;\n }).join('');\n\n if (options.ignoreSearch) {\n return base;\n }\n\n var searchParams = this.queryParams.filter(function (p) {\n return Object.keys(params).indexOf(p) !== -1;\n }).reduce(function (sparams, paramName) {\n sparams[paramName] = params[paramName];\n return sparams;\n }, {});\n var searchPart = build(searchParams, options.queryParams);\n return searchPart ? base + '?' + searchPart : base;\n };\n\n Path.prototype.getParams = function (type) {\n var predicate = type instanceof RegExp ? function (t) {\n return type.test(t.type);\n } : function (t) {\n return t.type === type;\n };\n return this.tokens.filter(predicate).map(function (t) {\n return t.val[0];\n });\n };\n\n Path.prototype.urlTest = function (path, source, caseSensitive, urlParamsEncoding) {\n var _this = this;\n\n var regex = new RegExp('^' + source, caseSensitive ? '' : 'i');\n var match = path.match(regex);\n\n if (!match) {\n return null;\n } else if (!this.urlParams.length) {\n return {};\n } // Reduce named params to key-value pairs\n\n\n return match.slice(1, this.urlParams.length + 1).reduce(function (params, m, i) {\n params[_this.urlParams[i]] = decodeParam(m, urlParamsEncoding);\n return params;\n }, {});\n };\n\n return Path;\n}();\n\nexport { Path };\n//# sourceMappingURL=path-parser.esm.js.map\n","import * as free from './free';\nimport * as ref from './ref';\nimport { addSop } from './sop';\n\nimport {\n primaryView,\n modalView,\n closeModal,\n toastMessage\n} from 'view/App.svelte';\n\n// Void -> Free SetRef\nconst closeModalSop = () => ref.setRef(modalView, '');\n\n// Svelte Component -> Free\nexport const viewMainPage = (primaryView) => viewSubPage(primaryView, null);\n\n// Svelte Component -> Svelte Component -> Function -> Free\nexport const viewSubPage = (primaryComponent, subComponent, subViewClosed) =>\n free.sequence([\n ref.setRef(primaryView, primaryComponent),\n ref.setRef(modalView, subComponent),\n ref.setRef(closeModal)(() => {\n addSop(() => closeModalSop());\n if (subViewClosed != undefined) subViewClosed();\n }),\n ]);\n\nexport const toast = (message) => ref.setRef(toastMessage, message);\n","import { createRef } from 'fp/ref';\n\n/**\n * @typedef {object} Nav\n * @property {object} goToCreateItem\n * @property {object} goToSetting\n * @property {object} goToInfo\n * @property {object} goToHowTo\n * @property {object} goToRelease\n * @property {object} backToHome\n*/\n\n/**\n * @type Nav\n */\nexport const Nav = {\n goToCreateItem: createRef(),\n goToSetting: createRef(),\n goToInfo: createRef(),\n goToHowTo: createRef(),\n goToRelease: createRef(),\n backToHome: createRef()\n}\n\n/**\n * @typedef {object} GridStores\n * @property {object} items\n * @property {object} goToItem\n*/\n\n/**\n * @type GridStores\n */\nexport const GridStores = {\n items: createRef([]),\n goToItem: createRef([])\n}\n\n/**\n * @typedef {object} FilterStores\n * @property {object} tags\n * @property {object} allTags\n * @property {object} allTagsSelected\n * @property {object} performToggleTagFilter\n * @property {object} performClearFilter\n * @property {object} expiringItemCount\n * @property {object} expiringFilterSelected\n * @property {object} performToggleExpiringFilter\n * @property {object} outOfStockItemCount \n * @property {object} outOfStockFilterSelected \n * @property {object} performToggleOutOfStockFilter \n*/\n\n/**\n * @type FilterStores\n */\nexport const FilterStores = {\n tags: createRef([]),\n allTags: createRef([]),\n allTagsSelected: createRef([]),\n performToggleTagFilter: createRef([]),\n performClearFilter: createRef(),\n expiringItemCount: createRef(),\n expiringFilterSelected: createRef(),\n performToggleExpiringFilter: createRef(),\n outOfStockItemCount: createRef(),\n outOfStockFilterSelected: createRef(),\n performToggleOutOfStockFilter: createRef(),\n}\n\n/**\n * @typedef {object} ItemStores\n * @property {object} name\n * @property {object} nameError\n * @property {object} photoBlob\n * @property {object} editingPhotoBlob\n * @property {object} remindDays \n * @property {object} note\n * @property {object} savedStatus\n * @property {object} performEditName\n * @property {object} performEditPhoto\n * @property {object} performDeleteItem\n * @property {object} backFromEditPhoto\n * @property {object} performSave\n * @property {object} performEditRemindDays\n * @property {object} performEditNote\n*/\n\n/**\n * @type ItemStores\n */\nexport const ItemStores = {\n name: createRef(),\n nameError: createRef(),\n photoBlob: createRef(),\n editingPhotoBlob: createRef(),\n remindDays: createRef(),\n note: createRef(),\n savedStatus: createRef(),\n performEditName: createRef(),\n performEditPhoto: createRef(),\n performDeleteItem: createRef(),\n backFromEditPhoto: createRef(),\n performSave: createRef(),\n performEditRemindDays: createRef(),\n performEditNote: createRef(),\n}\n\n/**\n * @typedef {object} TagStores \n * @property {object} allTags\n * @property {object} allTagsSelected\n * @property {object} performToggleTagFilter\n * @property {object} tags\n * @property {object} performAddNewTag\n * @property {object} performRenameTag\n * @property {object} performRemoveTag\n*/\n\n/**\n * @type TagStores\n */\nexport const TagStores = {\n allTags: createRef([]),\n allTagsSelected: createRef([]),\n performToggleTagFilter: createRef([]),\n tags: createRef([]),\n performAddNewTag: createRef(),\n performRenameTag: createRef([]),\n performRemoveTag: createRef([]),\n}\n\n/**\n * @typedef {object} BatchStores \n * @property {object} batches\n * @property {object} performAddBatch\n * @property {object} performBatchInc\n * @property {object} performBatchDec\n * @property {object} performBatchUpdate\n * @property {object} performDeleteBatch\n*/\n\n/**\n * @type BatchStores\n */\nexport const BatchStores = {\n batches: createRef([]),\n performAddBatch: createRef(),\n performBatchInc: createRef([]),\n performBatchDec: createRef([]),\n performBatchUpdate: createRef([]),\n performDeleteBatch: createRef([]),\n}\n\n/**\n * @typedef {object} SettingStores\n * @property {object} spaceTaken \n * @property {object} spaceLeft\n * @property {object} performCleanupStorage\n * @property {object} performDestroyStorage\n * @property {object} backFromSettingPage \n*/\n\n/**\n * @type SettingStores\n */\nexport const SettingStores = {\n spaceTaken: createRef(),\n spaceLeft: createRef(),\n performCleanupStorage: createRef(),\n performDestroyStorage: createRef(),\n backFromSettingPage: createRef(),\n}\n\n/**\n * @typedef {object} SyncStores\n * @property {object} savedCode - previously sync code that saved locally\n * @property {object} savedTimestamp\n * @property {object} syncStatus\n * @property {object} syncErrorMessage\n * @property {object} performSyncStorage\n * @property {Symbol} IDLE\n * @property {Symbol} SYNCING\n * @property {Symbol} DONE\n * @property {Symbol} FAILED\n */\n\n/**\n * @type SyncStores\n */\nexport const SyncStores = {\n savedCode: createRef(),\n savedTimestamp: createRef(),\n syncStatus: createRef(),\n syncErrorMessage: createRef(),\n performSyncStorage: createRef(),\n\n IDLE: Symbol('sync_status_idle'),\n SYNCING: Symbol('sync_status_syncing'),\n DONE: Symbol('sync_status_done'),\n FAILED: Symbol('sync_status_failed'),\n}\n\n","\n\n
\n \n\n {#if expanded}\n
\n\n
\n \n {#each actions as action}\n
\n {/if}\n
\n","\n\n
\n \n\n {statusText}\n\n {#if actions}\n \n {/if}\n
\n","/**\n * Compute the dimension of the crop area based on image size and aspect ratio\n * @param {number} imgWidth width of the src image in pixels\n * @param {number} imgHeight height of the src image in pixels\n * @param {number} aspect aspect ratio of the crop\n */\nexport function getCropSize(imgWidth, imgHeight, aspect) {\n if (imgWidth >= imgHeight * aspect) {\n return {\n width: imgHeight * aspect,\n height: imgHeight,\n }\n }\n return {\n width: imgWidth,\n height: imgWidth / aspect,\n }\n}\n\n/**\n * Ensure a new image position stays in the crop area.\n * @param {{x: number, y: number}} position new x/y position requested for the image\n * @param {{width: number, height: number}} imageSize width/height of the src image\n * @param {{width: number, height: number}} cropSize width/height of the crop area\n * @param {number} zoom zoom value\n * @returns {{x: number, y: number}}\n */\nexport function restrictPosition(position, imageSize, cropSize, zoom) {\n return {\n x: restrictPositionCoord(position.x, imageSize.width, cropSize.width, zoom),\n y: restrictPositionCoord(position.y, imageSize.height, cropSize.height, zoom),\n }\n}\n\nfunction restrictPositionCoord(position, imageSize, cropSize, zoom) {\n const maxPosition = (imageSize * zoom) / 2 - cropSize / 2\n return Math.min(maxPosition, Math.max(position, -maxPosition))\n}\n\nexport function getDistanceBetweenPoints(pointA, pointB) {\n return Math.sqrt(Math.pow(pointA.y - pointB.y, 2) + Math.pow(pointA.x - pointB.x, 2))\n}\n\n/**\n * Compute the output cropped area of the image in percentages and pixels.\n * x/y are the top-left coordinates on the src image\n * @param {{x: number, y number}} crop x/y position of the current center of the image\n * @param {{width: number, height: number, naturalWidth: number, naturelHeight: number}} imageSize width/height of the src image (default is size on the screen, natural is the original size)\n * @param {{width: number, height: number}} cropSize width/height of the crop area\n * @param {number} aspect aspect value\n * @param {number} zoom zoom value\n * @param {boolean} restrictPosition whether we should limit or not the cropped area\n */\nexport function computeCroppedArea(crop, imgSize, cropSize, aspect, zoom, restrictPosition = true) {\n const limitAreaFn = restrictPosition ? limitArea : noOp\n const croppedAreaPercentages = {\n x: limitAreaFn(\n 100,\n (((imgSize.width - cropSize.width / zoom) / 2 - crop.x / zoom) / imgSize.width) * 100\n ),\n y: limitAreaFn(\n 100,\n (((imgSize.height - cropSize.height / zoom) / 2 - crop.y / zoom) / imgSize.height) * 100\n ),\n width: limitAreaFn(100, ((cropSize.width / imgSize.width) * 100) / zoom),\n height: limitAreaFn(100, ((cropSize.height / imgSize.height) * 100) / zoom),\n }\n\n // we compute the pixels size naively\n const widthInPixels = limitAreaFn(\n imgSize.naturalWidth,\n (croppedAreaPercentages.width * imgSize.naturalWidth) / 100,\n true\n )\n const heightInPixels = limitAreaFn(\n imgSize.naturalHeight,\n (croppedAreaPercentages.height * imgSize.naturalHeight) / 100,\n true\n )\n const isImgWiderThanHigh = imgSize.naturalWidth >= imgSize.naturalHeight * aspect\n\n // then we ensure the width and height exactly match the aspect (to avoid rounding approximations)\n // if the image is wider than high, when zoom is 0, the crop height will be equals to iamge height\n // thus we want to compute the width from the height and aspect for accuracy.\n // Otherwise, we compute the height from width and aspect.\n const sizePixels = isImgWiderThanHigh\n ? {\n width: Math.round(heightInPixels * aspect),\n height: heightInPixels,\n }\n : {\n width: widthInPixels,\n height: Math.round(widthInPixels / aspect),\n }\n const croppedAreaPixels = {\n ...sizePixels,\n x: limitAreaFn(\n imgSize.naturalWidth - sizePixels.width,\n (croppedAreaPercentages.x * imgSize.naturalWidth) / 100,\n true\n ),\n y: limitAreaFn(\n imgSize.naturalHeight - sizePixels.height,\n (croppedAreaPercentages.y * imgSize.naturalHeight) / 100,\n true\n ),\n }\n return { croppedAreaPercentages, croppedAreaPixels }\n}\n\n/**\n * Ensure the returned value is between 0 and max\n * @param {number} max\n * @param {number} value\n * @param {boolean} shouldRound\n */\nfunction limitArea(max, value, shouldRound = false) {\n const v = shouldRound ? Math.round(value) : value\n return Math.min(max, Math.max(0, v))\n}\n\nfunction noOp(max, value) {\n return value\n}\n\n/**\n * Return the point that is the center of point a and b\n * @param {{x: number, y: number}} a\n * @param {{x: number, y: number}} b\n */\nexport function getCenter(a, b) {\n return {\n x: (b.x + a.x) / 2,\n y: (b.y + a.y) / 2,\n }\n}\n","\n\n\n\n \n {#if cropperSize}\n \n {/if}\n
\n\n\n","/**\n * @author Valentin Hervieu\n * https://codesandbox.io/s/y09komm059?file=/src/canvasUtils.js\n */\n\nconst createImage = (url) =>\n new Promise((resolve, reject) => {\n const image = new Image();\n image.addEventListener('load', () => resolve(image));\n image.addEventListener('error', (error) => reject(error));\n image.setAttribute('crossOrigin', 'anonymous'); // needed to avoid cross-origin issues on CodeSandbox\n image.src = url;\n });\n\nfunction getRadianAngle(degreeValue) {\n return (degreeValue * Math.PI) / 180;\n}\n\n/**\n * This function was adapted from the one in the ReadMe of https://github.com/DominicTobias/react-image-crop\n * @param {File} imageSrc - Image File url\n * @param {Object} pixelCrop - pixelCrop Object provided by react-easy-crop\n * @param {any} mimetype \n */\nexport async function getCroppedImg(imageSrc, pixelCrop, mimetype) {\n const image = await createImage(imageSrc);\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n\n const maxSize = Math.max(image.width, image.height);\n const safeArea = 2 * ((maxSize / 2) * Math.sqrt(2));\n\n // set each dimensions to double largest dimension to allow for a safe area for the\n // image to rotate in without being clipped by canvas context\n canvas.width = safeArea;\n canvas.height = safeArea;\n\n // translate canvas context to a central location on image to allow rotating around the center.\n ctx.translate(safeArea / 2, safeArea / 2);\n ctx.translate(-safeArea / 2, -safeArea / 2);\n\n // draw rotated image and store data.\n ctx.drawImage(\n image,\n safeArea / 2 - image.width * 0.5,\n safeArea / 2 - image.height * 0.5\n );\n const data = ctx.getImageData(0, 0, safeArea, safeArea);\n\n // set canvas width to final desired crop size - this will clear existing context\n canvas.width = pixelCrop.width;\n canvas.height = pixelCrop.height;\n\n // paste generated rotate image with correct offsets for x,y crop values.\n ctx.putImageData(\n data,\n Math.round(0 - safeArea / 2 + image.width * 0.5 - pixelCrop.x),\n Math.round(0 - safeArea / 2 + image.height * 0.5 - pixelCrop.y)\n );\n\n // if (resize) {\n // const resizedCanvas = document.createElement('canvas');\n // resizedCanvas.width = 256;\n // resizedCanvas.height = 256;\n\n // const p = pica({ features: ['js'] });\n // const result = await p.resize(canvas, resizedCanvas);\n // return p.toBlob(result);\n\n // // As a blob\n // // return new Promise((resolve) => {\n // // // canvas.toBlob(resolve, 'image/png');\n // // });\n // } else {\n return new Promise((resolve) => {\n canvas.toBlob(resolve, mimetype);\n });\n // }\n}\n\nexport async function getRotatedImage(imageSrc, rotation = 0) {\n const image = await createImage(imageSrc);\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n\n const orientationChanged =\n rotation === 90 ||\n rotation === -90 ||\n rotation === 270 ||\n rotation === -270;\n if (orientationChanged) {\n canvas.width = image.height;\n canvas.height = image.width;\n } else {\n canvas.width = image.width;\n canvas.height = image.height;\n }\n\n ctx.translate(canvas.width / 2, canvas.height / 2);\n ctx.rotate((rotation * Math.PI) / 180);\n ctx.drawImage(image, -image.width / 2, -image.height / 2);\n\n return new Promise((resolve) => {\n canvas.toBlob((file) => {\n resolve(URL.createObjectURL(file));\n }, 'image/png');\n });\n}\n","/*!\n\npica\nhttps://github.com/nodeca/pica\n\n*/\n\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.pica = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i= 0,\n wasm: __requested_features.indexOf('wasm') >= 0\n };\n Multimath.call(this, features);\n this.features = {\n js: features.js,\n wasm: features.wasm && this.has_wasm()\n };\n this.use(mm_unsharp_mask);\n this.use(mm_resize);\n}\n\ninherits(MathLib, Multimath);\n\nMathLib.prototype.resizeAndUnsharp = function resizeAndUnsharp(options, cache) {\n var result = this.resize(options, cache);\n\n if (options.unsharpAmount) {\n this.unsharp_mask(result, options.toWidth, options.toHeight, options.unsharpAmount, options.unsharpRadius, options.unsharpThreshold);\n }\n\n return result;\n};\n\nmodule.exports = MathLib;\n\n},{\"./mm_resize\":4,\"./mm_unsharp_mask\":9,\"inherits\":19,\"multimath\":20}],2:[function(_dereq_,module,exports){\n// Resize convolvers, pure JS implementation\n//\n'use strict'; // Precision of fixed FP values\n//var FIXED_FRAC_BITS = 14;\n\nfunction clampTo8(i) {\n return i < 0 ? 0 : i > 255 ? 255 : i;\n} // Convolve image in horizontal directions and transpose output. In theory,\n// transpose allow:\n//\n// - use the same convolver for both passes (this fails due different\n// types of input array and temporary buffer)\n// - making vertical pass by horisonltal lines inprove CPU cache use.\n//\n// But in real life this doesn't work :)\n//\n\n\nfunction convolveHorizontally(src, dest, srcW, srcH, destW, filters) {\n var r, g, b, a;\n var filterPtr, filterShift, filterSize;\n var srcPtr, srcY, destX, filterVal;\n var srcOffset = 0,\n destOffset = 0; // For each row\n\n for (srcY = 0; srcY < srcH; srcY++) {\n filterPtr = 0; // Apply precomputed filters to each destination row point\n\n for (destX = 0; destX < destW; destX++) {\n // Get the filter that determines the current output pixel.\n filterShift = filters[filterPtr++];\n filterSize = filters[filterPtr++];\n srcPtr = srcOffset + filterShift * 4 | 0;\n r = g = b = a = 0; // Apply the filter to the row to get the destination pixel r, g, b, a\n\n for (; filterSize > 0; filterSize--) {\n filterVal = filters[filterPtr++]; // Use reverse order to workaround deopts in old v8 (node v.10)\n // Big thanks to @mraleph (Vyacheslav Egorov) for the tip.\n\n a = a + filterVal * src[srcPtr + 3] | 0;\n b = b + filterVal * src[srcPtr + 2] | 0;\n g = g + filterVal * src[srcPtr + 1] | 0;\n r = r + filterVal * src[srcPtr] | 0;\n srcPtr = srcPtr + 4 | 0;\n } // Bring this value back in range. All of the filter scaling factors\n // are in fixed point with FIXED_FRAC_BITS bits of fractional part.\n //\n // (!) Add 1/2 of value before clamping to get proper rounding. In other\n // case brightness loss will be noticeable if you resize image with white\n // border and place it on white background.\n //\n\n\n dest[destOffset + 3] = clampTo8(a + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset + 2] = clampTo8(b + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset + 1] = clampTo8(g + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset] = clampTo8(r + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n destOffset = destOffset + srcH * 4 | 0;\n }\n\n destOffset = (srcY + 1) * 4 | 0;\n srcOffset = (srcY + 1) * srcW * 4 | 0;\n }\n} // Technically, convolvers are the same. But input array and temporary\n// buffer can be of different type (especially, in old browsers). So,\n// keep code in separate functions to avoid deoptimizations & speed loss.\n\n\nfunction convolveVertically(src, dest, srcW, srcH, destW, filters) {\n var r, g, b, a;\n var filterPtr, filterShift, filterSize;\n var srcPtr, srcY, destX, filterVal;\n var srcOffset = 0,\n destOffset = 0; // For each row\n\n for (srcY = 0; srcY < srcH; srcY++) {\n filterPtr = 0; // Apply precomputed filters to each destination row point\n\n for (destX = 0; destX < destW; destX++) {\n // Get the filter that determines the current output pixel.\n filterShift = filters[filterPtr++];\n filterSize = filters[filterPtr++];\n srcPtr = srcOffset + filterShift * 4 | 0;\n r = g = b = a = 0; // Apply the filter to the row to get the destination pixel r, g, b, a\n\n for (; filterSize > 0; filterSize--) {\n filterVal = filters[filterPtr++]; // Use reverse order to workaround deopts in old v8 (node v.10)\n // Big thanks to @mraleph (Vyacheslav Egorov) for the tip.\n\n a = a + filterVal * src[srcPtr + 3] | 0;\n b = b + filterVal * src[srcPtr + 2] | 0;\n g = g + filterVal * src[srcPtr + 1] | 0;\n r = r + filterVal * src[srcPtr] | 0;\n srcPtr = srcPtr + 4 | 0;\n } // Bring this value back in range. All of the filter scaling factors\n // are in fixed point with FIXED_FRAC_BITS bits of fractional part.\n //\n // (!) Add 1/2 of value before clamping to get proper rounding. In other\n // case brightness loss will be noticeable if you resize image with white\n // border and place it on white background.\n //\n\n\n dest[destOffset + 3] = clampTo8(a + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset + 2] = clampTo8(b + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset + 1] = clampTo8(g + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset] = clampTo8(r + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n destOffset = destOffset + srcH * 4 | 0;\n }\n\n destOffset = (srcY + 1) * 4 | 0;\n srcOffset = (srcY + 1) * srcW * 4 | 0;\n }\n}\n\nmodule.exports = {\n convolveHorizontally: convolveHorizontally,\n convolveVertically: convolveVertically\n};\n\n},{}],3:[function(_dereq_,module,exports){\n// This is autogenerated file from math.wasm, don't edit.\n//\n'use strict';\n/* eslint-disable max-len */\n\nmodule.exports = 'AGFzbQEAAAAADAZkeWxpbmsAAAAAAAEXA2AAAGAGf39/f39/AGAHf39/f39/fwACDwEDZW52Bm1lbW9yeQIAAAMEAwABAgYGAX8AQQALB1cFEV9fd2FzbV9jYWxsX2N0b3JzAAAIY29udm9sdmUAAQpjb252b2x2ZUhWAAIMX19kc29faGFuZGxlAwAYX193YXNtX2FwcGx5X2RhdGFfcmVsb2NzAAAK7AMDAwABC8YDAQ9/AkAgA0UNACAERQ0AA0AgDCENQQAhE0EAIQcDQCAHQQJqIQYCfyAHQQF0IAVqIgcuAQIiFEUEQEGAwAAhCEGAwAAhCUGAwAAhCkGAwAAhCyAGDAELIBIgBy4BAGohCEEAIQsgFCEHQQAhDiAGIQlBACEPQQAhEANAIAUgCUEBdGouAQAiESAAIAhBAnRqKAIAIgpBGHZsIBBqIRAgCkH/AXEgEWwgC2ohCyAKQRB2Qf8BcSARbCAPaiEPIApBCHZB/wFxIBFsIA5qIQ4gCEEBaiEIIAlBAWohCSAHQQFrIgcNAAsgC0GAQGshCCAOQYBAayEJIA9BgEBrIQogEEGAQGshCyAGIBRqCyEHIAEgDUECdGogCUEOdSIGQf8BIAZB/wFIGyIGQQAgBkEAShtBCHRBgP4DcSAKQQ51IgZB/wEgBkH/AUgbIgZBACAGQQBKG0EQdEGAgPwHcSALQQ51IgZB/wEgBkH/AUgbIgZBACAGQQBKG0EYdHJyIAhBDnUiBkH/ASAGQf8BSBsiBkEAIAZBAEobcjYCACADIA1qIQ0gE0EBaiITIARHDQALIAxBAWoiDCACbCESIAMgDEcNAAsLCx4AQQAgAiADIAQgBSAAEAEgAkEAIAQgBSAGIAEQAQs=';\n\n},{}],4:[function(_dereq_,module,exports){\n'use strict';\n\nmodule.exports = {\n name: 'resize',\n fn: _dereq_('./resize'),\n wasm_fn: _dereq_('./resize_wasm'),\n wasm_src: _dereq_('./convolve_wasm_base64')\n};\n\n},{\"./convolve_wasm_base64\":3,\"./resize\":5,\"./resize_wasm\":8}],5:[function(_dereq_,module,exports){\n'use strict';\n\nvar createFilters = _dereq_('./resize_filter_gen');\n\nvar convolveHorizontally = _dereq_('./convolve').convolveHorizontally;\n\nvar convolveVertically = _dereq_('./convolve').convolveVertically;\n\nfunction resetAlpha(dst, width, height) {\n var ptr = 3,\n len = width * height * 4 | 0;\n\n while (ptr < len) {\n dst[ptr] = 0xFF;\n ptr = ptr + 4 | 0;\n }\n}\n\nmodule.exports = function resize(options) {\n var src = options.src;\n var srcW = options.width;\n var srcH = options.height;\n var destW = options.toWidth;\n var destH = options.toHeight;\n var scaleX = options.scaleX || options.toWidth / options.width;\n var scaleY = options.scaleY || options.toHeight / options.height;\n var offsetX = options.offsetX || 0;\n var offsetY = options.offsetY || 0;\n var dest = options.dest || new Uint8Array(destW * destH * 4);\n var quality = typeof options.quality === 'undefined' ? 3 : options.quality;\n var alpha = options.alpha || false;\n var filtersX = createFilters(quality, srcW, destW, scaleX, offsetX),\n filtersY = createFilters(quality, srcH, destH, scaleY, offsetY);\n var tmp = new Uint8Array(destW * srcH * 4); // To use single function we need src & tmp of the same type.\n // But src can be CanvasPixelArray, and tmp - Uint8Array. So, keep\n // vertical and horizontal passes separately to avoid deoptimization.\n\n convolveHorizontally(src, tmp, srcW, srcH, destW, filtersX);\n convolveVertically(tmp, dest, srcH, destW, destH, filtersY); // That's faster than doing checks in convolver.\n // !!! Note, canvas data is not premultipled. We don't need other\n // alpha corrections.\n\n if (!alpha) resetAlpha(dest, destW, destH);\n return dest;\n};\n\n},{\"./convolve\":2,\"./resize_filter_gen\":6}],6:[function(_dereq_,module,exports){\n// Calculate convolution filters for each destination point,\n// and pack data to Int16Array:\n//\n// [ shift, length, data..., shift2, length2, data..., ... ]\n//\n// - shift - offset in src image\n// - length - filter length (in src points)\n// - data - filter values sequence\n//\n'use strict';\n\nvar FILTER_INFO = _dereq_('./resize_filter_info'); // Precision of fixed FP values\n\n\nvar FIXED_FRAC_BITS = 14;\n\nfunction toFixedPoint(num) {\n return Math.round(num * ((1 << FIXED_FRAC_BITS) - 1));\n}\n\nmodule.exports = function resizeFilterGen(quality, srcSize, destSize, scale, offset) {\n var filterFunction = FILTER_INFO[quality].filter;\n var scaleInverted = 1.0 / scale;\n var scaleClamped = Math.min(1.0, scale); // For upscale\n // Filter window (averaging interval), scaled to src image\n\n var srcWindow = FILTER_INFO[quality].win / scaleClamped;\n var destPixel, srcPixel, srcFirst, srcLast, filterElementSize, floatFilter, fxpFilter, total, pxl, idx, floatVal, filterTotal, filterVal;\n var leftNotEmpty, rightNotEmpty, filterShift, filterSize;\n var maxFilterElementSize = Math.floor((srcWindow + 1) * 2);\n var packedFilter = new Int16Array((maxFilterElementSize + 2) * destSize);\n var packedFilterPtr = 0;\n var slowCopy = !packedFilter.subarray || !packedFilter.set; // For each destination pixel calculate source range and built filter values\n\n for (destPixel = 0; destPixel < destSize; destPixel++) {\n // Scaling should be done relative to central pixel point\n srcPixel = (destPixel + 0.5) * scaleInverted + offset;\n srcFirst = Math.max(0, Math.floor(srcPixel - srcWindow));\n srcLast = Math.min(srcSize - 1, Math.ceil(srcPixel + srcWindow));\n filterElementSize = srcLast - srcFirst + 1;\n floatFilter = new Float32Array(filterElementSize);\n fxpFilter = new Int16Array(filterElementSize);\n total = 0.0; // Fill filter values for calculated range\n\n for (pxl = srcFirst, idx = 0; pxl <= srcLast; pxl++, idx++) {\n floatVal = filterFunction((pxl + 0.5 - srcPixel) * scaleClamped);\n total += floatVal;\n floatFilter[idx] = floatVal;\n } // Normalize filter, convert to fixed point and accumulate conversion error\n\n\n filterTotal = 0;\n\n for (idx = 0; idx < floatFilter.length; idx++) {\n filterVal = floatFilter[idx] / total;\n filterTotal += filterVal;\n fxpFilter[idx] = toFixedPoint(filterVal);\n } // Compensate normalization error, to minimize brightness drift\n\n\n fxpFilter[destSize >> 1] += toFixedPoint(1.0 - filterTotal); //\n // Now pack filter to useable form\n //\n // 1. Trim heading and tailing zero values, and compensate shitf/length\n // 2. Put all to single array in this format:\n //\n // [ pos shift, data length, value1, value2, value3, ... ]\n //\n\n leftNotEmpty = 0;\n\n while (leftNotEmpty < fxpFilter.length && fxpFilter[leftNotEmpty] === 0) {\n leftNotEmpty++;\n }\n\n if (leftNotEmpty < fxpFilter.length) {\n rightNotEmpty = fxpFilter.length - 1;\n\n while (rightNotEmpty > 0 && fxpFilter[rightNotEmpty] === 0) {\n rightNotEmpty--;\n }\n\n filterShift = srcFirst + leftNotEmpty;\n filterSize = rightNotEmpty - leftNotEmpty + 1;\n packedFilter[packedFilterPtr++] = filterShift; // shift\n\n packedFilter[packedFilterPtr++] = filterSize; // size\n\n if (!slowCopy) {\n packedFilter.set(fxpFilter.subarray(leftNotEmpty, rightNotEmpty + 1), packedFilterPtr);\n packedFilterPtr += filterSize;\n } else {\n // fallback for old IE < 11, without subarray/set methods\n for (idx = leftNotEmpty; idx <= rightNotEmpty; idx++) {\n packedFilter[packedFilterPtr++] = fxpFilter[idx];\n }\n }\n } else {\n // zero data, write header only\n packedFilter[packedFilterPtr++] = 0; // shift\n\n packedFilter[packedFilterPtr++] = 0; // size\n }\n }\n\n return packedFilter;\n};\n\n},{\"./resize_filter_info\":7}],7:[function(_dereq_,module,exports){\n// Filter definitions to build tables for\n// resizing convolvers.\n//\n// Presets for quality 0..3. Filter functions + window size\n//\n'use strict';\n\nmodule.exports = [{\n // Nearest neibor (Box)\n win: 0.5,\n filter: function filter(x) {\n return x >= -0.5 && x < 0.5 ? 1.0 : 0.0;\n }\n}, {\n // Hamming\n win: 1.0,\n filter: function filter(x) {\n if (x <= -1.0 || x >= 1.0) {\n return 0.0;\n }\n\n if (x > -1.19209290E-07 && x < 1.19209290E-07) {\n return 1.0;\n }\n\n var xpi = x * Math.PI;\n return Math.sin(xpi) / xpi * (0.54 + 0.46 * Math.cos(xpi / 1.0));\n }\n}, {\n // Lanczos, win = 2\n win: 2.0,\n filter: function filter(x) {\n if (x <= -2.0 || x >= 2.0) {\n return 0.0;\n }\n\n if (x > -1.19209290E-07 && x < 1.19209290E-07) {\n return 1.0;\n }\n\n var xpi = x * Math.PI;\n return Math.sin(xpi) / xpi * Math.sin(xpi / 2.0) / (xpi / 2.0);\n }\n}, {\n // Lanczos, win = 3\n win: 3.0,\n filter: function filter(x) {\n if (x <= -3.0 || x >= 3.0) {\n return 0.0;\n }\n\n if (x > -1.19209290E-07 && x < 1.19209290E-07) {\n return 1.0;\n }\n\n var xpi = x * Math.PI;\n return Math.sin(xpi) / xpi * Math.sin(xpi / 3.0) / (xpi / 3.0);\n }\n}];\n\n},{}],8:[function(_dereq_,module,exports){\n'use strict';\n\nvar createFilters = _dereq_('./resize_filter_gen');\n\nfunction resetAlpha(dst, width, height) {\n var ptr = 3,\n len = width * height * 4 | 0;\n\n while (ptr < len) {\n dst[ptr] = 0xFF;\n ptr = ptr + 4 | 0;\n }\n}\n\nfunction asUint8Array(src) {\n return new Uint8Array(src.buffer, 0, src.byteLength);\n}\n\nvar IS_LE = true; // should not crash everything on module load in old browsers\n\ntry {\n IS_LE = new Uint32Array(new Uint8Array([1, 0, 0, 0]).buffer)[0] === 1;\n} catch (__) {}\n\nfunction copyInt16asLE(src, target, target_offset) {\n if (IS_LE) {\n target.set(asUint8Array(src), target_offset);\n return;\n }\n\n for (var ptr = target_offset, i = 0; i < src.length; i++) {\n var data = src[i];\n target[ptr++] = data & 0xFF;\n target[ptr++] = data >> 8 & 0xFF;\n }\n}\n\nmodule.exports = function resize_wasm(options) {\n var src = options.src;\n var srcW = options.width;\n var srcH = options.height;\n var destW = options.toWidth;\n var destH = options.toHeight;\n var scaleX = options.scaleX || options.toWidth / options.width;\n var scaleY = options.scaleY || options.toHeight / options.height;\n var offsetX = options.offsetX || 0.0;\n var offsetY = options.offsetY || 0.0;\n var dest = options.dest || new Uint8Array(destW * destH * 4);\n var quality = typeof options.quality === 'undefined' ? 3 : options.quality;\n var alpha = options.alpha || false;\n var filtersX = createFilters(quality, srcW, destW, scaleX, offsetX),\n filtersY = createFilters(quality, srcH, destH, scaleY, offsetY); // destination is 0 too.\n\n var src_offset = 0; // buffer between convolve passes\n\n var tmp_offset = this.__align(src_offset + Math.max(src.byteLength, dest.byteLength));\n\n var filtersX_offset = this.__align(tmp_offset + srcH * destW * 4);\n\n var filtersY_offset = this.__align(filtersX_offset + filtersX.byteLength);\n\n var alloc_bytes = filtersY_offset + filtersY.byteLength;\n\n var instance = this.__instance('resize', alloc_bytes); //\n // Fill memory block with data to process\n //\n\n\n var mem = new Uint8Array(this.__memory.buffer);\n var mem32 = new Uint32Array(this.__memory.buffer); // 32-bit copy is much faster in chrome\n\n var src32 = new Uint32Array(src.buffer);\n mem32.set(src32); // We should guarantee LE bytes order. Filters are not big, so\n // speed difference is not significant vs direct .set()\n\n copyInt16asLE(filtersX, mem, filtersX_offset);\n copyInt16asLE(filtersY, mem, filtersY_offset); //\n // Now call webassembly method\n // emsdk does method names with '_'\n\n var fn = instance.exports.convolveHV || instance.exports._convolveHV;\n fn(filtersX_offset, filtersY_offset, tmp_offset, srcW, srcH, destW, destH); //\n // Copy data back to typed array\n //\n // 32-bit copy is much faster in chrome\n\n var dest32 = new Uint32Array(dest.buffer);\n dest32.set(new Uint32Array(this.__memory.buffer, 0, destH * destW)); // That's faster than doing checks in convolver.\n // !!! Note, canvas data is not premultipled. We don't need other\n // alpha corrections.\n\n if (!alpha) resetAlpha(dest, destW, destH);\n return dest;\n};\n\n},{\"./resize_filter_gen\":6}],9:[function(_dereq_,module,exports){\n'use strict';\n\nmodule.exports = {\n name: 'unsharp_mask',\n fn: _dereq_('./unsharp_mask'),\n wasm_fn: _dereq_('./unsharp_mask_wasm'),\n wasm_src: _dereq_('./unsharp_mask_wasm_base64')\n};\n\n},{\"./unsharp_mask\":10,\"./unsharp_mask_wasm\":11,\"./unsharp_mask_wasm_base64\":12}],10:[function(_dereq_,module,exports){\n// Unsharp mask filter\n//\n// http://stackoverflow.com/a/23322820/1031804\n// USM(O) = O + (2 * (Amount / 100) * (O - GB))\n// GB - gaussian blur.\n//\n// Image is converted from RGB to HSV, unsharp mask is applied to the\n// brightness channel and then image is converted back to RGB.\n//\n'use strict';\n\nvar glur_mono16 = _dereq_('glur/mono16');\n\nfunction hsv_v16(img, width, height) {\n var size = width * height;\n var out = new Uint16Array(size);\n var r, g, b, max;\n\n for (var i = 0; i < size; i++) {\n r = img[4 * i];\n g = img[4 * i + 1];\n b = img[4 * i + 2];\n max = r >= g && r >= b ? r : g >= b && g >= r ? g : b;\n out[i] = max << 8;\n }\n\n return out;\n}\n\nmodule.exports = function unsharp(img, width, height, amount, radius, threshold) {\n var v1, v2, vmul;\n var diff, iTimes4;\n\n if (amount === 0 || radius < 0.5) {\n return;\n }\n\n if (radius > 2.0) {\n radius = 2.0;\n }\n\n var brightness = hsv_v16(img, width, height);\n var blured = new Uint16Array(brightness); // copy, because blur modify src\n\n glur_mono16(blured, width, height, radius);\n var amountFp = amount / 100 * 0x1000 + 0.5 | 0;\n var thresholdFp = threshold << 8;\n var size = width * height;\n /* eslint-disable indent */\n\n for (var i = 0; i < size; i++) {\n v1 = brightness[i];\n diff = v1 - blured[i];\n\n if (Math.abs(diff) >= thresholdFp) {\n // add unsharp mask to the brightness channel\n v2 = v1 + (amountFp * diff + 0x800 >> 12); // Both v1 and v2 are within [0.0 .. 255.0] (0000-FF00) range, never going into\n // [255.003 .. 255.996] (FF01-FFFF). This allows to round this value as (x+.5)|0\n // later without overflowing.\n\n v2 = v2 > 0xff00 ? 0xff00 : v2;\n v2 = v2 < 0x0000 ? 0x0000 : v2; // Avoid division by 0. V=0 means rgb(0,0,0), unsharp with unsharpAmount>0 cannot\n // change this value (because diff between colors gets inflated), so no need to verify correctness.\n\n v1 = v1 !== 0 ? v1 : 1; // Multiplying V in HSV model by a constant is equivalent to multiplying each component\n // in RGB by the same constant (same for HSL), see also:\n // https://beesbuzz.biz/code/16-hsv-color-transforms\n\n vmul = (v2 << 12) / v1 | 0; // Result will be in [0..255] range because:\n // - all numbers are positive\n // - r,g,b <= (v1/256)\n // - r,g,b,(v1/256),(v2/256) <= 255\n // So highest this number can get is X*255/X+0.5=255.5 which is < 256 and rounds down.\n\n iTimes4 = i * 4;\n img[iTimes4] = img[iTimes4] * vmul + 0x800 >> 12; // R\n\n img[iTimes4 + 1] = img[iTimes4 + 1] * vmul + 0x800 >> 12; // G\n\n img[iTimes4 + 2] = img[iTimes4 + 2] * vmul + 0x800 >> 12; // B\n }\n }\n};\n\n},{\"glur/mono16\":18}],11:[function(_dereq_,module,exports){\n'use strict';\n\nmodule.exports = function unsharp(img, width, height, amount, radius, threshold) {\n if (amount === 0 || radius < 0.5) {\n return;\n }\n\n if (radius > 2.0) {\n radius = 2.0;\n }\n\n var pixels = width * height;\n var img_bytes_cnt = pixels * 4;\n var hsv_bytes_cnt = pixels * 2;\n var blur_bytes_cnt = pixels * 2;\n var blur_line_byte_cnt = Math.max(width, height) * 4; // float32 array\n\n var blur_coeffs_byte_cnt = 8 * 4; // float32 array\n\n var img_offset = 0;\n var hsv_offset = img_bytes_cnt;\n var blur_offset = hsv_offset + hsv_bytes_cnt;\n var blur_tmp_offset = blur_offset + blur_bytes_cnt;\n var blur_line_offset = blur_tmp_offset + blur_bytes_cnt;\n var blur_coeffs_offset = blur_line_offset + blur_line_byte_cnt;\n\n var instance = this.__instance('unsharp_mask', img_bytes_cnt + hsv_bytes_cnt + blur_bytes_cnt * 2 + blur_line_byte_cnt + blur_coeffs_byte_cnt, {\n exp: Math.exp\n }); // 32-bit copy is much faster in chrome\n\n\n var img32 = new Uint32Array(img.buffer);\n var mem32 = new Uint32Array(this.__memory.buffer);\n mem32.set(img32); // HSL\n\n var fn = instance.exports.hsv_v16 || instance.exports._hsv_v16;\n fn(img_offset, hsv_offset, width, height); // BLUR\n\n fn = instance.exports.blurMono16 || instance.exports._blurMono16;\n fn(hsv_offset, blur_offset, blur_tmp_offset, blur_line_offset, blur_coeffs_offset, width, height, radius); // UNSHARP\n\n fn = instance.exports.unsharp || instance.exports._unsharp;\n fn(img_offset, img_offset, hsv_offset, blur_offset, width, height, amount, threshold); // 32-bit copy is much faster in chrome\n\n img32.set(new Uint32Array(this.__memory.buffer, 0, pixels));\n};\n\n},{}],12:[function(_dereq_,module,exports){\n// This is autogenerated file from math.wasm, don't edit.\n//\n'use strict';\n/* eslint-disable max-len */\n\nmodule.exports = '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';\n\n},{}],13:[function(_dereq_,module,exports){\n'use strict';\n\nvar GC_INTERVAL = 100;\n\nfunction Pool(create, idle) {\n this.create = create;\n this.available = [];\n this.acquired = {};\n this.lastId = 1;\n this.timeoutId = 0;\n this.idle = idle || 2000;\n}\n\nPool.prototype.acquire = function () {\n var _this = this;\n\n var resource;\n\n if (this.available.length !== 0) {\n resource = this.available.pop();\n } else {\n resource = this.create();\n resource.id = this.lastId++;\n\n resource.release = function () {\n return _this.release(resource);\n };\n }\n\n this.acquired[resource.id] = resource;\n return resource;\n};\n\nPool.prototype.release = function (resource) {\n var _this2 = this;\n\n delete this.acquired[resource.id];\n resource.lastUsed = Date.now();\n this.available.push(resource);\n\n if (this.timeoutId === 0) {\n this.timeoutId = setTimeout(function () {\n return _this2.gc();\n }, GC_INTERVAL);\n }\n};\n\nPool.prototype.gc = function () {\n var _this3 = this;\n\n var now = Date.now();\n this.available = this.available.filter(function (resource) {\n if (now - resource.lastUsed > _this3.idle) {\n resource.destroy();\n return false;\n }\n\n return true;\n });\n\n if (this.available.length !== 0) {\n this.timeoutId = setTimeout(function () {\n return _this3.gc();\n }, GC_INTERVAL);\n } else {\n this.timeoutId = 0;\n }\n};\n\nmodule.exports = Pool;\n\n},{}],14:[function(_dereq_,module,exports){\n// Add intermediate resizing steps when scaling down by a very large factor.\n//\n// For example, when resizing 10000x10000 down to 10x10, it'll resize it to\n// 300x300 first.\n//\n// It's needed because tiler has issues when the entire tile is scaled down\n// to a few pixels (1024px source tile with border size 3 should result in\n// at least 3+3+2 = 8px target tile, so max scale factor is 128 here).\n//\n// Also, adding intermediate steps can speed up processing if we use lower\n// quality algorithms for first stages.\n//\n'use strict'; // min size = 0 results in infinite loop,\n// min size = 1 can consume large amount of memory\n\nvar MIN_INNER_TILE_SIZE = 2;\n\nmodule.exports = function createStages(fromWidth, fromHeight, toWidth, toHeight, srcTileSize, destTileBorder) {\n var scaleX = toWidth / fromWidth;\n var scaleY = toHeight / fromHeight; // derived from createRegions equation:\n // innerTileWidth = pixelFloor(srcTileSize * scaleX) - 2 * destTileBorder;\n\n var minScale = (2 * destTileBorder + MIN_INNER_TILE_SIZE + 1) / srcTileSize; // refuse to scale image multiple times by less than twice each time,\n // it could only happen because of invalid options\n\n if (minScale > 0.5) return [[toWidth, toHeight]];\n var stageCount = Math.ceil(Math.log(Math.min(scaleX, scaleY)) / Math.log(minScale)); // no additional resizes are necessary,\n // stageCount can be zero or be negative when enlarging the image\n\n if (stageCount <= 1) return [[toWidth, toHeight]];\n var result = [];\n\n for (var i = 0; i < stageCount; i++) {\n var width = Math.round(Math.pow(Math.pow(fromWidth, stageCount - i - 1) * Math.pow(toWidth, i + 1), 1 / stageCount));\n var height = Math.round(Math.pow(Math.pow(fromHeight, stageCount - i - 1) * Math.pow(toHeight, i + 1), 1 / stageCount));\n result.push([width, height]);\n }\n\n return result;\n};\n\n},{}],15:[function(_dereq_,module,exports){\n// Split original image into multiple 1024x1024 chunks to reduce memory usage\n// (images have to be unpacked into typed arrays for resizing) and allow\n// parallel processing of multiple tiles at a time.\n//\n'use strict';\n/*\n * pixelFloor and pixelCeil are modified versions of Math.floor and Math.ceil\n * functions which take into account floating point arithmetic errors.\n * Those errors can cause undesired increments/decrements of sizes and offsets:\n * Math.ceil(36 / (36 / 500)) = 501\n * pixelCeil(36 / (36 / 500)) = 500\n */\n\nvar PIXEL_EPSILON = 1e-5;\n\nfunction pixelFloor(x) {\n var nearest = Math.round(x);\n\n if (Math.abs(x - nearest) < PIXEL_EPSILON) {\n return nearest;\n }\n\n return Math.floor(x);\n}\n\nfunction pixelCeil(x) {\n var nearest = Math.round(x);\n\n if (Math.abs(x - nearest) < PIXEL_EPSILON) {\n return nearest;\n }\n\n return Math.ceil(x);\n}\n\nmodule.exports = function createRegions(options) {\n var scaleX = options.toWidth / options.width;\n var scaleY = options.toHeight / options.height;\n var innerTileWidth = pixelFloor(options.srcTileSize * scaleX) - 2 * options.destTileBorder;\n var innerTileHeight = pixelFloor(options.srcTileSize * scaleY) - 2 * options.destTileBorder; // prevent infinite loop, this should never happen\n\n if (innerTileWidth < 1 || innerTileHeight < 1) {\n throw new Error('Internal error in pica: target tile width/height is too small.');\n }\n\n var x, y;\n var innerX, innerY, toTileWidth, toTileHeight;\n var tiles = [];\n var tile; // we go top-to-down instead of left-to-right to make image displayed from top to\n // doesn in the browser\n\n for (innerY = 0; innerY < options.toHeight; innerY += innerTileHeight) {\n for (innerX = 0; innerX < options.toWidth; innerX += innerTileWidth) {\n x = innerX - options.destTileBorder;\n\n if (x < 0) {\n x = 0;\n }\n\n toTileWidth = innerX + innerTileWidth + options.destTileBorder - x;\n\n if (x + toTileWidth >= options.toWidth) {\n toTileWidth = options.toWidth - x;\n }\n\n y = innerY - options.destTileBorder;\n\n if (y < 0) {\n y = 0;\n }\n\n toTileHeight = innerY + innerTileHeight + options.destTileBorder - y;\n\n if (y + toTileHeight >= options.toHeight) {\n toTileHeight = options.toHeight - y;\n }\n\n tile = {\n toX: x,\n toY: y,\n toWidth: toTileWidth,\n toHeight: toTileHeight,\n toInnerX: innerX,\n toInnerY: innerY,\n toInnerWidth: innerTileWidth,\n toInnerHeight: innerTileHeight,\n offsetX: x / scaleX - pixelFloor(x / scaleX),\n offsetY: y / scaleY - pixelFloor(y / scaleY),\n scaleX: scaleX,\n scaleY: scaleY,\n x: pixelFloor(x / scaleX),\n y: pixelFloor(y / scaleY),\n width: pixelCeil(toTileWidth / scaleX),\n height: pixelCeil(toTileHeight / scaleY)\n };\n tiles.push(tile);\n }\n }\n\n return tiles;\n};\n\n},{}],16:[function(_dereq_,module,exports){\n'use strict';\n\nfunction objClass(obj) {\n return Object.prototype.toString.call(obj);\n}\n\nmodule.exports.isCanvas = function isCanvas(element) {\n var cname = objClass(element);\n return cname === '[object HTMLCanvasElement]'\n /* browser */\n || cname === '[object OffscreenCanvas]' || cname === '[object Canvas]'\n /* node-canvas */\n ;\n};\n\nmodule.exports.isImage = function isImage(element) {\n return objClass(element) === '[object HTMLImageElement]';\n};\n\nmodule.exports.isImageBitmap = function isImageBitmap(element) {\n return objClass(element) === '[object ImageBitmap]';\n};\n\nmodule.exports.limiter = function limiter(concurrency) {\n var active = 0,\n queue = [];\n\n function roll() {\n if (active < concurrency && queue.length) {\n active++;\n queue.shift()();\n }\n }\n\n return function limit(fn) {\n return new Promise(function (resolve, reject) {\n queue.push(function () {\n fn().then(function (result) {\n resolve(result);\n active--;\n roll();\n }, function (err) {\n reject(err);\n active--;\n roll();\n });\n });\n roll();\n });\n };\n};\n\nmodule.exports.cib_quality_name = function cib_quality_name(num) {\n switch (num) {\n case 0:\n return 'pixelated';\n\n case 1:\n return 'low';\n\n case 2:\n return 'medium';\n }\n\n return 'high';\n};\n\nmodule.exports.cib_support = function cib_support(createCanvas) {\n return Promise.resolve().then(function () {\n if (typeof createImageBitmap === 'undefined') {\n return false;\n }\n\n var c = createCanvas(100, 100);\n return createImageBitmap(c, 0, 0, 100, 100, {\n resizeWidth: 10,\n resizeHeight: 10,\n resizeQuality: 'high'\n }).then(function (bitmap) {\n var status = bitmap.width === 10; // Branch below is filtered on upper level. We do not call resize\n // detection for basic ImageBitmap.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap\n // old Crome 51 has ImageBitmap without .close(). Then this code\n // will throw and return 'false' as expected.\n //\n\n bitmap.close();\n c = null;\n return status;\n });\n })[\"catch\"](function () {\n return false;\n });\n};\n\nmodule.exports.worker_offscreen_canvas_support = function worker_offscreen_canvas_support() {\n return new Promise(function (resolve, reject) {\n if (typeof OffscreenCanvas === 'undefined') {\n // if OffscreenCanvas is present, we assume browser supports Worker and built-in Promise as well\n resolve(false);\n return;\n }\n\n function workerPayload(self) {\n if (typeof createImageBitmap === 'undefined') {\n self.postMessage(false);\n return;\n }\n\n Promise.resolve().then(function () {\n var canvas = new OffscreenCanvas(10, 10); // test that 2d context can be used in worker\n\n var ctx = canvas.getContext('2d');\n ctx.rect(0, 0, 1, 1); // test that cib can be used to return image bitmap from worker\n\n return createImageBitmap(canvas, 0, 0, 1, 1);\n }).then(function () {\n return self.postMessage(true);\n }, function () {\n return self.postMessage(false);\n });\n }\n\n var code = btoa(\"(\".concat(workerPayload.toString(), \")(self);\"));\n var w = new Worker(\"data:text/javascript;base64,\".concat(code));\n\n w.onmessage = function (ev) {\n return resolve(ev.data);\n };\n\n w.onerror = reject;\n }).then(function (result) {\n return result;\n }, function () {\n return false;\n });\n}; // Check if canvas.getContext('2d').getImageData can be used,\n// FireFox randomizes the output of that function in `privacy.resistFingerprinting` mode\n\n\nmodule.exports.can_use_canvas = function can_use_canvas(createCanvas) {\n var usable = false;\n\n try {\n var canvas = createCanvas(2, 1);\n var ctx = canvas.getContext('2d');\n var d = ctx.createImageData(2, 1);\n d.data[0] = 12;\n d.data[1] = 23;\n d.data[2] = 34;\n d.data[3] = 255;\n d.data[4] = 45;\n d.data[5] = 56;\n d.data[6] = 67;\n d.data[7] = 255;\n ctx.putImageData(d, 0, 0);\n d = null;\n d = ctx.getImageData(0, 0, 2, 1);\n\n if (d.data[0] === 12 && d.data[1] === 23 && d.data[2] === 34 && d.data[3] === 255 && d.data[4] === 45 && d.data[5] === 56 && d.data[6] === 67 && d.data[7] === 255) {\n usable = true;\n }\n } catch (err) {}\n\n return usable;\n}; // Check if createImageBitmap(img, sx, sy, sw, sh) signature works correctly\n// with JPEG images oriented with Exif;\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1220671\n// TODO: remove after it's fixed in chrome for at least 2 releases\n\n\nmodule.exports.cib_can_use_region = function cib_can_use_region() {\n return new Promise(function (resolve) {\n if (typeof createImageBitmap === 'undefined') {\n resolve(false);\n return;\n }\n\n var image = new Image();\n image.src = 'data:image/jpeg;base64,' + '/9j/4QBiRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAYAAAEaAAUAAAABAAAASgEbAAUAA' + 'AABAAAAUgEoAAMAAAABAAIAAAITAAMAAAABAAEAAAAAAAAAAABIAAAAAQAAAEgAAAAB/9' + 'sAQwAEAwMEAwMEBAMEBQQEBQYKBwYGBgYNCQoICg8NEBAPDQ8OERMYFBESFxIODxUcFRc' + 'ZGRsbGxAUHR8dGh8YGhsa/9sAQwEEBQUGBQYMBwcMGhEPERoaGhoaGhoaGhoaGhoaGhoa' + 'GhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoa/8IAEQgAAQACAwERAAIRAQMRA' + 'f/EABQAAQAAAAAAAAAAAAAAAAAAAAf/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAA' + 'IQAxAAAAF/P//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAQUCf//EABQRAQAAAAA' + 'AAAAAAAAAAAAAAAD/2gAIAQMBAT8Bf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIB' + 'AT8Bf//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEABj8Cf//EABQQAQAAAAAAAAAAA' + 'AAAAAAAAAD/2gAIAQEAAT8hf//aAAwDAQACAAMAAAAQH//EABQRAQAAAAAAAAAAAAAAAA' + 'AAAAD/2gAIAQMBAT8Qf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIBAT8Qf//EABQ' + 'QAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAT8Qf//Z';\n\n image.onload = function () {\n createImageBitmap(image, 0, 0, image.width, image.height).then(function (bitmap) {\n if (bitmap.width === image.width && bitmap.height === image.height) {\n resolve(true);\n } else {\n resolve(false);\n }\n }, function () {\n return resolve(false);\n });\n };\n\n image.onerror = function () {\n return resolve(false);\n };\n });\n};\n\n},{}],17:[function(_dereq_,module,exports){\n// Web Worker wrapper for image resize function\n'use strict';\n\nmodule.exports = function () {\n var MathLib = _dereq_('./mathlib');\n\n var mathLib;\n /* eslint-disable no-undef */\n\n onmessage = function onmessage(ev) {\n var tileOpts = ev.data.opts;\n var returnBitmap = false;\n\n if (!tileOpts.src && tileOpts.srcBitmap) {\n var canvas = new OffscreenCanvas(tileOpts.width, tileOpts.height);\n var ctx = canvas.getContext('2d', {\n alpha: Boolean(tileOpts.alpha)\n });\n ctx.drawImage(tileOpts.srcBitmap, 0, 0);\n tileOpts.src = ctx.getImageData(0, 0, tileOpts.width, tileOpts.height).data;\n canvas.width = canvas.height = 0;\n canvas = null;\n tileOpts.srcBitmap.close();\n tileOpts.srcBitmap = null;\n returnBitmap = true;\n }\n\n if (!mathLib) mathLib = new MathLib(ev.data.features); // Use multimath's sync auto-init. Avoid Promise use in old browsers,\n // because polyfills are not propagated to webworker.\n\n var data = mathLib.resizeAndUnsharp(tileOpts);\n\n if (returnBitmap) {\n var toImageData = new ImageData(new Uint8ClampedArray(data), tileOpts.toWidth, tileOpts.toHeight);\n\n var _canvas = new OffscreenCanvas(tileOpts.toWidth, tileOpts.toHeight);\n\n var _ctx = _canvas.getContext('2d', {\n alpha: Boolean(tileOpts.alpha)\n });\n\n _ctx.putImageData(toImageData, 0, 0);\n\n createImageBitmap(_canvas).then(function (bitmap) {\n postMessage({\n bitmap: bitmap\n }, [bitmap]);\n });\n } else {\n postMessage({\n data: data\n }, [data.buffer]);\n }\n };\n};\n\n},{\"./mathlib\":1}],18:[function(_dereq_,module,exports){\n// Calculate Gaussian blur of an image using IIR filter\n// The method is taken from Intel's white paper and code example attached to it:\n// https://software.intel.com/en-us/articles/iir-gaussian-blur-filter\n// -implementation-using-intel-advanced-vector-extensions\n\nvar a0, a1, a2, a3, b1, b2, left_corner, right_corner;\n\nfunction gaussCoef(sigma) {\n if (sigma < 0.5) {\n sigma = 0.5;\n }\n\n var a = Math.exp(0.726 * 0.726) / sigma,\n g1 = Math.exp(-a),\n g2 = Math.exp(-2 * a),\n k = (1 - g1) * (1 - g1) / (1 + 2 * a * g1 - g2);\n\n a0 = k;\n a1 = k * (a - 1) * g1;\n a2 = k * (a + 1) * g1;\n a3 = -k * g2;\n b1 = 2 * g1;\n b2 = -g2;\n left_corner = (a0 + a1) / (1 - b1 - b2);\n right_corner = (a2 + a3) / (1 - b1 - b2);\n\n // Attempt to force type to FP32.\n return new Float32Array([ a0, a1, a2, a3, b1, b2, left_corner, right_corner ]);\n}\n\nfunction convolveMono16(src, out, line, coeff, width, height) {\n // takes src image and writes the blurred and transposed result into out\n\n var prev_src, curr_src, curr_out, prev_out, prev_prev_out;\n var src_index, out_index, line_index;\n var i, j;\n var coeff_a0, coeff_a1, coeff_b1, coeff_b2;\n\n for (i = 0; i < height; i++) {\n src_index = i * width;\n out_index = i;\n line_index = 0;\n\n // left to right\n prev_src = src[src_index];\n prev_prev_out = prev_src * coeff[6];\n prev_out = prev_prev_out;\n\n coeff_a0 = coeff[0];\n coeff_a1 = coeff[1];\n coeff_b1 = coeff[4];\n coeff_b2 = coeff[5];\n\n for (j = 0; j < width; j++) {\n curr_src = src[src_index];\n\n curr_out = curr_src * coeff_a0 +\n prev_src * coeff_a1 +\n prev_out * coeff_b1 +\n prev_prev_out * coeff_b2;\n\n prev_prev_out = prev_out;\n prev_out = curr_out;\n prev_src = curr_src;\n\n line[line_index] = prev_out;\n line_index++;\n src_index++;\n }\n\n src_index--;\n line_index--;\n out_index += height * (width - 1);\n\n // right to left\n prev_src = src[src_index];\n prev_prev_out = prev_src * coeff[7];\n prev_out = prev_prev_out;\n curr_src = prev_src;\n\n coeff_a0 = coeff[2];\n coeff_a1 = coeff[3];\n\n for (j = width - 1; j >= 0; j--) {\n curr_out = curr_src * coeff_a0 +\n prev_src * coeff_a1 +\n prev_out * coeff_b1 +\n prev_prev_out * coeff_b2;\n\n prev_prev_out = prev_out;\n prev_out = curr_out;\n\n prev_src = curr_src;\n curr_src = src[src_index];\n\n out[out_index] = line[line_index] + prev_out;\n\n src_index--;\n line_index--;\n out_index -= height;\n }\n }\n}\n\n\nfunction blurMono16(src, width, height, radius) {\n // Quick exit on zero radius\n if (!radius) { return; }\n\n var out = new Uint16Array(src.length),\n tmp_line = new Float32Array(Math.max(width, height));\n\n var coeff = gaussCoef(radius);\n\n convolveMono16(src, out, tmp_line, coeff, width, height, radius);\n convolveMono16(out, src, tmp_line, coeff, height, width, radius);\n}\n\nmodule.exports = blurMono16;\n\n},{}],19:[function(_dereq_,module,exports){\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n\n},{}],20:[function(_dereq_,module,exports){\n'use strict';\n\n\nvar assign = _dereq_('object-assign');\nvar base64decode = _dereq_('./lib/base64decode');\nvar hasWebAssembly = _dereq_('./lib/wa_detect');\n\n\nvar DEFAULT_OPTIONS = {\n js: true,\n wasm: true\n};\n\n\nfunction MultiMath(options) {\n if (!(this instanceof MultiMath)) return new MultiMath(options);\n\n var opts = assign({}, DEFAULT_OPTIONS, options || {});\n\n this.options = opts;\n\n this.__cache = {};\n\n this.__init_promise = null;\n this.__modules = opts.modules || {};\n this.__memory = null;\n this.__wasm = {};\n\n this.__isLE = ((new Uint32Array((new Uint8Array([ 1, 0, 0, 0 ])).buffer))[0] === 1);\n\n if (!this.options.js && !this.options.wasm) {\n throw new Error('mathlib: at least \"js\" or \"wasm\" should be enabled');\n }\n}\n\n\nMultiMath.prototype.has_wasm = hasWebAssembly;\n\n\nMultiMath.prototype.use = function (module) {\n this.__modules[module.name] = module;\n\n // Pin the best possible implementation\n if (this.options.wasm && this.has_wasm() && module.wasm_fn) {\n this[module.name] = module.wasm_fn;\n } else {\n this[module.name] = module.fn;\n }\n\n return this;\n};\n\n\nMultiMath.prototype.init = function () {\n if (this.__init_promise) return this.__init_promise;\n\n if (!this.options.js && this.options.wasm && !this.has_wasm()) {\n return Promise.reject(new Error('mathlib: only \"wasm\" was enabled, but it\\'s not supported'));\n }\n\n var self = this;\n\n this.__init_promise = Promise.all(Object.keys(self.__modules).map(function (name) {\n var module = self.__modules[name];\n\n if (!self.options.wasm || !self.has_wasm() || !module.wasm_fn) return null;\n\n // If already compiled - exit\n if (self.__wasm[name]) return null;\n\n // Compile wasm source\n return WebAssembly.compile(self.__base64decode(module.wasm_src))\n .then(function (m) { self.__wasm[name] = m; });\n }))\n .then(function () { return self; });\n\n return this.__init_promise;\n};\n\n\n////////////////////////////////////////////////////////////////////////////////\n// Methods below are for internal use from plugins\n\n\n// Simple decode base64 to typed array. Useful to load embedded webassembly\n// code. You probably don't need to call this method directly.\n//\nMultiMath.prototype.__base64decode = base64decode;\n\n\n// Increase current memory to include specified number of bytes. Do nothing if\n// size is already ok. You probably don't need to call this method directly,\n// because it will be invoked from `.__instance()`.\n//\nMultiMath.prototype.__reallocate = function mem_grow_to(bytes) {\n if (!this.__memory) {\n this.__memory = new WebAssembly.Memory({\n initial: Math.ceil(bytes / (64 * 1024))\n });\n return this.__memory;\n }\n\n var mem_size = this.__memory.buffer.byteLength;\n\n if (mem_size < bytes) {\n this.__memory.grow(Math.ceil((bytes - mem_size) / (64 * 1024)));\n }\n\n return this.__memory;\n};\n\n\n// Returns instantinated webassembly item by name, with specified memory size\n// and environment.\n// - use cache if available\n// - do sync module init, if async init was not called earlier\n// - allocate memory if not enougth\n// - can export functions to webassembly via \"env_extra\",\n// for example, { exp: Math.exp }\n//\nMultiMath.prototype.__instance = function instance(name, memsize, env_extra) {\n if (memsize) this.__reallocate(memsize);\n\n // If .init() was not called, do sync compile\n if (!this.__wasm[name]) {\n var module = this.__modules[name];\n this.__wasm[name] = new WebAssembly.Module(this.__base64decode(module.wasm_src));\n }\n\n if (!this.__cache[name]) {\n var env_base = {\n memoryBase: 0,\n memory: this.__memory,\n tableBase: 0,\n table: new WebAssembly.Table({ initial: 0, element: 'anyfunc' })\n };\n\n this.__cache[name] = new WebAssembly.Instance(this.__wasm[name], {\n env: assign(env_base, env_extra || {})\n });\n }\n\n return this.__cache[name];\n};\n\n\n// Helper to calculate memory aligh for pointers. Webassembly does not require\n// this, but you may wish to experiment. Default base = 8;\n//\nMultiMath.prototype.__align = function align(number, base) {\n base = base || 8;\n var reminder = number % base;\n return number + (reminder ? base - reminder : 0);\n};\n\n\nmodule.exports = MultiMath;\n\n},{\"./lib/base64decode\":21,\"./lib/wa_detect\":22,\"object-assign\":23}],21:[function(_dereq_,module,exports){\n// base64 decode str -> Uint8Array, to load WA modules\n//\n'use strict';\n\n\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n\nmodule.exports = function base64decode(str) {\n var input = str.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length;\n\n var out = new Uint8Array((max * 3) >> 2);\n\n // Collect by 6*4 bits (3 bytes)\n\n var bits = 0;\n var ptr = 0;\n\n for (var idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n out[ptr++] = (bits >> 16) & 0xFF;\n out[ptr++] = (bits >> 8) & 0xFF;\n out[ptr++] = bits & 0xFF;\n }\n\n bits = (bits << 6) | BASE64_MAP.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n var tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n out[ptr++] = (bits >> 16) & 0xFF;\n out[ptr++] = (bits >> 8) & 0xFF;\n out[ptr++] = bits & 0xFF;\n } else if (tailbits === 18) {\n out[ptr++] = (bits >> 10) & 0xFF;\n out[ptr++] = (bits >> 2) & 0xFF;\n } else if (tailbits === 12) {\n out[ptr++] = (bits >> 4) & 0xFF;\n }\n\n return out;\n};\n\n},{}],22:[function(_dereq_,module,exports){\n// Detect WebAssembly support.\n// - Check global WebAssembly object\n// - Try to load simple module (can be disabled via CSP)\n//\n'use strict';\n\n\nvar wa;\n\n\nmodule.exports = function hasWebAssembly() {\n // use cache if called before;\n if (typeof wa !== 'undefined') return wa;\n\n wa = false;\n\n if (typeof WebAssembly === 'undefined') return wa;\n\n // If WebAssenbly is disabled, code can throw on compile\n try {\n // https://github.com/brion/min-wasm-fail/blob/master/min-wasm-fail.in.js\n // Additional check that WA internals are correct\n\n /* eslint-disable comma-spacing, max-len */\n var bin = new Uint8Array([ 0,97,115,109,1,0,0,0,1,6,1,96,1,127,1,127,3,2,1,0,5,3,1,0,1,7,8,1,4,116,101,115,116,0,0,10,16,1,14,0,32,0,65,1,54,2,0,32,0,40,2,0,11 ]);\n var module = new WebAssembly.Module(bin);\n var instance = new WebAssembly.Instance(module, {});\n\n // test storing to and loading from a non-zero location via a parameter.\n // Safari on iOS 11.2.5 returns 0 unexpectedly at non-zero locations\n if (instance.exports.test(4) !== 0) wa = true;\n\n return wa;\n } catch (__) {}\n\n return wa;\n};\n\n},{}],23:[function(_dereq_,module,exports){\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n},{}],24:[function(_dereq_,module,exports){\nvar bundleFn = arguments[3];\nvar sources = arguments[4];\nvar cache = arguments[5];\n\nvar stringify = JSON.stringify;\n\nmodule.exports = function (fn, options) {\n var wkey;\n var cacheKeys = Object.keys(cache);\n\n for (var i = 0, l = cacheKeys.length; i < l; i++) {\n var key = cacheKeys[i];\n var exp = cache[key].exports;\n // Using babel as a transpiler to use esmodule, the export will always\n // be an object with the default export as a property of it. To ensure\n // the existing api and babel esmodule exports are both supported we\n // check for both\n if (exp === fn || exp && exp.default === fn) {\n wkey = key;\n break;\n }\n }\n\n if (!wkey) {\n wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);\n var wcache = {};\n for (var i = 0, l = cacheKeys.length; i < l; i++) {\n var key = cacheKeys[i];\n wcache[key] = key;\n }\n sources[wkey] = [\n 'function(require,module,exports){' + fn + '(self); }',\n wcache\n ];\n }\n var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);\n\n var scache = {}; scache[wkey] = wkey;\n sources[skey] = [\n 'function(require,module,exports){' +\n // try to call default if defined to also support babel esmodule exports\n 'var f = require(' + stringify(wkey) + ');' +\n '(f.default ? f.default : f)(self);' +\n '}',\n scache\n ];\n\n var workerSources = {};\n resolveSources(skey);\n\n function resolveSources(key) {\n workerSources[key] = true;\n\n for (var depPath in sources[key][1]) {\n var depKey = sources[key][1][depPath];\n if (!workerSources[depKey]) {\n resolveSources(depKey);\n }\n }\n }\n\n var src = '(' + bundleFn + ')({'\n + Object.keys(workerSources).map(function (key) {\n return stringify(key) + ':['\n + sources[key][0]\n + ',' + stringify(sources[key][1]) + ']'\n ;\n }).join(',')\n + '},{},[' + stringify(skey) + '])'\n ;\n\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n\n var blob = new Blob([src], { type: 'text/javascript' });\n if (options && options.bare) { return blob; }\n var workerUrl = URL.createObjectURL(blob);\n var worker = new Worker(workerUrl);\n worker.objectURL = workerUrl;\n return worker;\n};\n\n},{}],\"/index.js\":[function(_dereq_,module,exports){\n'use strict';\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nvar assign = _dereq_('object-assign');\n\nvar webworkify = _dereq_('webworkify');\n\nvar MathLib = _dereq_('./lib/mathlib');\n\nvar Pool = _dereq_('./lib/pool');\n\nvar utils = _dereq_('./lib/utils');\n\nvar worker = _dereq_('./lib/worker');\n\nvar createStages = _dereq_('./lib/stepper');\n\nvar createRegions = _dereq_('./lib/tiler'); // Deduplicate pools & limiters with the same configs\n// when user creates multiple pica instances.\n\n\nvar singletones = {};\nvar NEED_SAFARI_FIX = false;\n\ntry {\n if (typeof navigator !== 'undefined' && navigator.userAgent) {\n NEED_SAFARI_FIX = navigator.userAgent.indexOf('Safari') >= 0;\n }\n} catch (e) {}\n\nvar concurrency = 1;\n\nif (typeof navigator !== 'undefined') {\n concurrency = Math.min(navigator.hardwareConcurrency || 1, 4);\n}\n\nvar DEFAULT_PICA_OPTS = {\n tile: 1024,\n concurrency: concurrency,\n features: ['js', 'wasm', 'ww'],\n idle: 2000,\n createCanvas: function createCanvas(width, height) {\n var tmpCanvas = document.createElement('canvas');\n tmpCanvas.width = width;\n tmpCanvas.height = height;\n return tmpCanvas;\n }\n};\nvar DEFAULT_RESIZE_OPTS = {\n quality: 3,\n alpha: false,\n unsharpAmount: 0,\n unsharpRadius: 0.0,\n unsharpThreshold: 0\n};\nvar CAN_NEW_IMAGE_DATA = false;\nvar CAN_CREATE_IMAGE_BITMAP = false;\nvar CAN_USE_CANVAS_GET_IMAGE_DATA = false;\nvar CAN_USE_OFFSCREEN_CANVAS = false;\nvar CAN_USE_CIB_REGION_FOR_IMAGE = false;\n\nfunction workerFabric() {\n return {\n value: webworkify(worker),\n destroy: function destroy() {\n this.value.terminate();\n\n if (typeof window !== 'undefined') {\n var url = window.URL || window.webkitURL || window.mozURL || window.msURL;\n\n if (url && url.revokeObjectURL && this.value.objectURL) {\n url.revokeObjectURL(this.value.objectURL);\n }\n }\n }\n };\n} ////////////////////////////////////////////////////////////////////////////////\n// API methods\n\n\nfunction Pica(options) {\n if (!(this instanceof Pica)) return new Pica(options);\n this.options = assign({}, DEFAULT_PICA_OPTS, options || {});\n var limiter_key = \"lk_\".concat(this.options.concurrency); // Share limiters to avoid multiple parallel workers when user creates\n // multiple pica instances.\n\n this.__limit = singletones[limiter_key] || utils.limiter(this.options.concurrency);\n if (!singletones[limiter_key]) singletones[limiter_key] = this.__limit; // List of supported features, according to options & browser/node.js\n\n this.features = {\n js: false,\n // pure JS implementation, can be disabled for testing\n wasm: false,\n // webassembly implementation for heavy functions\n cib: false,\n // resize via createImageBitmap (only FF at this moment)\n ww: false // webworkers\n\n };\n this.__workersPool = null; // Store requested features for webworkers\n\n this.__requested_features = [];\n this.__mathlib = null;\n}\n\nPica.prototype.init = function () {\n var _this = this;\n\n if (this.__initPromise) return this.__initPromise; // Test if we can create ImageData without canvas and memory copy\n\n if (typeof ImageData !== 'undefined' && typeof Uint8ClampedArray !== 'undefined') {\n try {\n /* eslint-disable no-new */\n new ImageData(new Uint8ClampedArray(400), 10, 10);\n CAN_NEW_IMAGE_DATA = true;\n } catch (__) {}\n } // ImageBitmap can be effective in 2 places:\n //\n // 1. Threaded jpeg unpack (basic)\n // 2. Built-in resize (blocked due problem in chrome, see issue #89)\n //\n // For basic use we also need ImageBitmap wo support .close() method,\n // see https://developer.mozilla.org/ru/docs/Web/API/ImageBitmap\n\n\n if (typeof ImageBitmap !== 'undefined') {\n if (ImageBitmap.prototype && ImageBitmap.prototype.close) {\n CAN_CREATE_IMAGE_BITMAP = true;\n } else {\n this.debug('ImageBitmap does not support .close(), disabled');\n }\n }\n\n var features = this.options.features.slice();\n\n if (features.indexOf('all') >= 0) {\n features = ['cib', 'wasm', 'js', 'ww'];\n }\n\n this.__requested_features = features;\n this.__mathlib = new MathLib(features); // Check WebWorker support if requested\n\n if (features.indexOf('ww') >= 0) {\n if (typeof window !== 'undefined' && 'Worker' in window) {\n // IE <= 11 don't allow to create webworkers from string. We should check it.\n // https://connect.microsoft.com/IE/feedback/details/801810/web-workers-from-blob-urls-in-ie-10-and-11\n try {\n var wkr = _dereq_('webworkify')(function () {});\n\n wkr.terminate();\n this.features.ww = true; // pool uniqueness depends on pool config + webworker config\n\n var wpool_key = \"wp_\".concat(JSON.stringify(this.options));\n\n if (singletones[wpool_key]) {\n this.__workersPool = singletones[wpool_key];\n } else {\n this.__workersPool = new Pool(workerFabric, this.options.idle);\n singletones[wpool_key] = this.__workersPool;\n }\n } catch (__) {}\n }\n }\n\n var initMath = this.__mathlib.init().then(function (mathlib) {\n // Copy detected features\n assign(_this.features, mathlib.features);\n });\n\n var checkCibResize;\n\n if (!CAN_CREATE_IMAGE_BITMAP) {\n checkCibResize = Promise.resolve(false);\n } else {\n checkCibResize = utils.cib_support(this.options.createCanvas).then(function (status) {\n if (_this.features.cib && features.indexOf('cib') < 0) {\n _this.debug('createImageBitmap() resize supported, but disabled by config');\n\n return;\n }\n\n if (features.indexOf('cib') >= 0) _this.features.cib = status;\n });\n }\n\n CAN_USE_CANVAS_GET_IMAGE_DATA = utils.can_use_canvas(this.options.createCanvas);\n var checkOffscreenCanvas;\n\n if (CAN_CREATE_IMAGE_BITMAP && CAN_NEW_IMAGE_DATA && features.indexOf('ww') !== -1) {\n checkOffscreenCanvas = utils.worker_offscreen_canvas_support();\n } else {\n checkOffscreenCanvas = Promise.resolve(false);\n }\n\n checkOffscreenCanvas = checkOffscreenCanvas.then(function (result) {\n CAN_USE_OFFSCREEN_CANVAS = result;\n }); // we use createImageBitmap to crop image data and pass it to workers,\n // so need to check whether function works correctly;\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1220671\n\n var checkCibRegion = utils.cib_can_use_region().then(function (result) {\n CAN_USE_CIB_REGION_FOR_IMAGE = result;\n }); // Init math lib. That's async because can load some\n\n this.__initPromise = Promise.all([initMath, checkCibResize, checkOffscreenCanvas, checkCibRegion]).then(function () {\n return _this;\n });\n return this.__initPromise;\n}; // Call resizer in webworker or locally, depending on config\n\n\nPica.prototype.__invokeResize = function (tileOpts, opts) {\n var _this2 = this;\n\n // Share cache between calls:\n //\n // - wasm instance\n // - wasm memory object\n //\n opts.__mathCache = opts.__mathCache || {};\n return Promise.resolve().then(function () {\n if (!_this2.features.ww) {\n // not possible to have ImageBitmap here if user disabled WW\n return {\n data: _this2.__mathlib.resizeAndUnsharp(tileOpts, opts.__mathCache)\n };\n }\n\n return new Promise(function (resolve, reject) {\n var w = _this2.__workersPool.acquire();\n\n if (opts.cancelToken) opts.cancelToken[\"catch\"](function (err) {\n return reject(err);\n });\n\n w.value.onmessage = function (ev) {\n w.release();\n if (ev.data.err) reject(ev.data.err);else resolve(ev.data);\n };\n\n var transfer = [];\n if (tileOpts.src) transfer.push(tileOpts.src.buffer);\n if (tileOpts.srcBitmap) transfer.push(tileOpts.srcBitmap);\n w.value.postMessage({\n opts: tileOpts,\n features: _this2.__requested_features,\n preload: {\n wasm_nodule: _this2.__mathlib.__\n }\n }, transfer);\n });\n });\n}; // this function can return promise if createImageBitmap is used\n\n\nPica.prototype.__extractTileData = function (tile, from, opts, stageEnv, extractTo) {\n if (this.features.ww && CAN_USE_OFFSCREEN_CANVAS && ( // createImageBitmap doesn't work for images (Image, ImageBitmap) with Exif orientation in Chrome,\n // can use canvas because canvas doesn't have orientation;\n // see https://bugs.chromium.org/p/chromium/issues/detail?id=1220671\n utils.isCanvas(from) || CAN_USE_CIB_REGION_FOR_IMAGE)) {\n this.debug('Create tile for OffscreenCanvas');\n return createImageBitmap(stageEnv.srcImageBitmap || from, tile.x, tile.y, tile.width, tile.height).then(function (bitmap) {\n extractTo.srcBitmap = bitmap;\n return extractTo;\n });\n } // Extract tile RGBA buffer, depending on input type\n\n\n if (utils.isCanvas(from)) {\n if (!stageEnv.srcCtx) stageEnv.srcCtx = from.getContext('2d', {\n alpha: Boolean(opts.alpha)\n }); // If input is Canvas - extract region data directly\n\n this.debug('Get tile pixel data');\n extractTo.src = stageEnv.srcCtx.getImageData(tile.x, tile.y, tile.width, tile.height).data;\n return extractTo;\n } // If input is Image or decoded to ImageBitmap,\n // draw region to temporary canvas and extract data from it\n //\n // Note! Attempt to reuse this canvas causes significant slowdown in chrome\n //\n\n\n this.debug('Draw tile imageBitmap/image to temporary canvas');\n var tmpCanvas = this.options.createCanvas(tile.width, tile.height);\n var tmpCtx = tmpCanvas.getContext('2d', {\n alpha: Boolean(opts.alpha)\n });\n tmpCtx.globalCompositeOperation = 'copy';\n tmpCtx.drawImage(stageEnv.srcImageBitmap || from, tile.x, tile.y, tile.width, tile.height, 0, 0, tile.width, tile.height);\n this.debug('Get tile pixel data');\n extractTo.src = tmpCtx.getImageData(0, 0, tile.width, tile.height).data; // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n\n tmpCanvas.width = tmpCanvas.height = 0;\n return extractTo;\n};\n\nPica.prototype.__landTileData = function (tile, result, stageEnv) {\n var toImageData;\n this.debug('Convert raw rgba tile result to ImageData');\n\n if (result.bitmap) {\n stageEnv.toCtx.drawImage(result.bitmap, tile.toX, tile.toY);\n return null;\n }\n\n if (CAN_NEW_IMAGE_DATA) {\n // this branch is for modern browsers\n // If `new ImageData()` & Uint8ClampedArray suported\n toImageData = new ImageData(new Uint8ClampedArray(result.data), tile.toWidth, tile.toHeight);\n } else {\n // fallback for `node-canvas` and old browsers\n // (IE11 has ImageData but does not support `new ImageData()`)\n toImageData = stageEnv.toCtx.createImageData(tile.toWidth, tile.toHeight);\n\n if (toImageData.data.set) {\n toImageData.data.set(result.data);\n } else {\n // IE9 don't have `.set()`\n for (var i = toImageData.data.length - 1; i >= 0; i--) {\n toImageData.data[i] = result.data[i];\n }\n }\n }\n\n this.debug('Draw tile');\n\n if (NEED_SAFARI_FIX) {\n // Safari draws thin white stripes between tiles without this fix\n stageEnv.toCtx.putImageData(toImageData, tile.toX, tile.toY, tile.toInnerX - tile.toX, tile.toInnerY - tile.toY, tile.toInnerWidth + 1e-5, tile.toInnerHeight + 1e-5);\n } else {\n stageEnv.toCtx.putImageData(toImageData, tile.toX, tile.toY, tile.toInnerX - tile.toX, tile.toInnerY - tile.toY, tile.toInnerWidth, tile.toInnerHeight);\n }\n\n return null;\n};\n\nPica.prototype.__tileAndResize = function (from, to, opts) {\n var _this3 = this;\n\n var stageEnv = {\n srcCtx: null,\n srcImageBitmap: null,\n isImageBitmapReused: false,\n toCtx: null\n };\n\n var processTile = function processTile(tile) {\n return _this3.__limit(function () {\n if (opts.canceled) return opts.cancelToken;\n var tileOpts = {\n width: tile.width,\n height: tile.height,\n toWidth: tile.toWidth,\n toHeight: tile.toHeight,\n scaleX: tile.scaleX,\n scaleY: tile.scaleY,\n offsetX: tile.offsetX,\n offsetY: tile.offsetY,\n quality: opts.quality,\n alpha: opts.alpha,\n unsharpAmount: opts.unsharpAmount,\n unsharpRadius: opts.unsharpRadius,\n unsharpThreshold: opts.unsharpThreshold\n };\n\n _this3.debug('Invoke resize math');\n\n return Promise.resolve(tileOpts).then(function (tileOpts) {\n return _this3.__extractTileData(tile, from, opts, stageEnv, tileOpts);\n }).then(function (tileOpts) {\n _this3.debug('Invoke resize math');\n\n return _this3.__invokeResize(tileOpts, opts);\n }).then(function (result) {\n if (opts.canceled) return opts.cancelToken;\n stageEnv.srcImageData = null;\n return _this3.__landTileData(tile, result, stageEnv);\n });\n });\n }; // Need to normalize data source first. It can be canvas or image.\n // If image - try to decode in background if possible\n\n\n return Promise.resolve().then(function () {\n stageEnv.toCtx = to.getContext('2d', {\n alpha: Boolean(opts.alpha)\n });\n if (utils.isCanvas(from)) return null;\n\n if (utils.isImageBitmap(from)) {\n stageEnv.srcImageBitmap = from;\n stageEnv.isImageBitmapReused = true;\n return null;\n }\n\n if (utils.isImage(from)) {\n // try do decode image in background for faster next operations;\n // if we're using offscreen canvas, cib is called per tile, so not needed here\n if (!CAN_CREATE_IMAGE_BITMAP) return null;\n\n _this3.debug('Decode image via createImageBitmap');\n\n return createImageBitmap(from).then(function (imageBitmap) {\n stageEnv.srcImageBitmap = imageBitmap;\n }) // Suppress error to use fallback, if method fails\n // https://github.com/nodeca/pica/issues/190\n\n /* eslint-disable no-unused-vars */\n [\"catch\"](function (e) {\n return null;\n });\n }\n\n throw new Error('Pica: \".from\" should be Image, Canvas or ImageBitmap');\n }).then(function () {\n if (opts.canceled) return opts.cancelToken;\n\n _this3.debug('Calculate tiles'); //\n // Here we are with \"normalized\" source,\n // follow to tiling\n //\n\n\n var regions = createRegions({\n width: opts.width,\n height: opts.height,\n srcTileSize: _this3.options.tile,\n toWidth: opts.toWidth,\n toHeight: opts.toHeight,\n destTileBorder: opts.__destTileBorder\n });\n var jobs = regions.map(function (tile) {\n return processTile(tile);\n });\n\n function cleanup(stageEnv) {\n if (stageEnv.srcImageBitmap) {\n if (!stageEnv.isImageBitmapReused) stageEnv.srcImageBitmap.close();\n stageEnv.srcImageBitmap = null;\n }\n }\n\n _this3.debug('Process tiles');\n\n return Promise.all(jobs).then(function () {\n _this3.debug('Finished!');\n\n cleanup(stageEnv);\n return to;\n }, function (err) {\n cleanup(stageEnv);\n throw err;\n });\n });\n};\n\nPica.prototype.__processStages = function (stages, from, to, opts) {\n var _this4 = this;\n\n if (opts.canceled) return opts.cancelToken;\n\n var _stages$shift = stages.shift(),\n _stages$shift2 = _slicedToArray(_stages$shift, 2),\n toWidth = _stages$shift2[0],\n toHeight = _stages$shift2[1];\n\n var isLastStage = stages.length === 0;\n opts = assign({}, opts, {\n toWidth: toWidth,\n toHeight: toHeight,\n // only use user-defined quality for the last stage,\n // use simpler (Hamming) filter for the first stages where\n // scale factor is large enough (more than 2-3)\n quality: isLastStage ? opts.quality : Math.min(1, opts.quality)\n });\n var tmpCanvas;\n\n if (!isLastStage) {\n // create temporary canvas\n tmpCanvas = this.options.createCanvas(toWidth, toHeight);\n }\n\n return this.__tileAndResize(from, isLastStage ? to : tmpCanvas, opts).then(function () {\n if (isLastStage) return to;\n opts.width = toWidth;\n opts.height = toHeight;\n return _this4.__processStages(stages, tmpCanvas, to, opts);\n }).then(function (res) {\n if (tmpCanvas) {\n // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n tmpCanvas.width = tmpCanvas.height = 0;\n }\n\n return res;\n });\n};\n\nPica.prototype.__resizeViaCreateImageBitmap = function (from, to, opts) {\n var _this5 = this;\n\n var toCtx = to.getContext('2d', {\n alpha: Boolean(opts.alpha)\n });\n this.debug('Resize via createImageBitmap()');\n return createImageBitmap(from, {\n resizeWidth: opts.toWidth,\n resizeHeight: opts.toHeight,\n resizeQuality: utils.cib_quality_name(opts.quality)\n }).then(function (imageBitmap) {\n if (opts.canceled) return opts.cancelToken; // if no unsharp - draw directly to output canvas\n\n if (!opts.unsharpAmount) {\n toCtx.drawImage(imageBitmap, 0, 0);\n imageBitmap.close();\n toCtx = null;\n\n _this5.debug('Finished!');\n\n return to;\n }\n\n _this5.debug('Unsharp result');\n\n var tmpCanvas = _this5.options.createCanvas(opts.toWidth, opts.toHeight);\n\n var tmpCtx = tmpCanvas.getContext('2d', {\n alpha: Boolean(opts.alpha)\n });\n tmpCtx.drawImage(imageBitmap, 0, 0);\n imageBitmap.close();\n var iData = tmpCtx.getImageData(0, 0, opts.toWidth, opts.toHeight);\n\n _this5.__mathlib.unsharp_mask(iData.data, opts.toWidth, opts.toHeight, opts.unsharpAmount, opts.unsharpRadius, opts.unsharpThreshold);\n\n toCtx.putImageData(iData, 0, 0); // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n\n tmpCanvas.width = tmpCanvas.height = 0;\n iData = tmpCtx = tmpCanvas = toCtx = null;\n\n _this5.debug('Finished!');\n\n return to;\n });\n};\n\nPica.prototype.resize = function (from, to, options) {\n var _this6 = this;\n\n this.debug('Start resize...');\n var opts = assign({}, DEFAULT_RESIZE_OPTS);\n\n if (!isNaN(options)) {\n opts = assign(opts, {\n quality: options\n });\n } else if (options) {\n opts = assign(opts, options);\n }\n\n opts.toWidth = to.width;\n opts.toHeight = to.height;\n opts.width = from.naturalWidth || from.width;\n opts.height = from.naturalHeight || from.height; // Prevent stepper from infinite loop\n\n if (to.width === 0 || to.height === 0) {\n return Promise.reject(new Error(\"Invalid output size: \".concat(to.width, \"x\").concat(to.height)));\n }\n\n if (opts.unsharpRadius > 2) opts.unsharpRadius = 2;\n opts.canceled = false;\n\n if (opts.cancelToken) {\n // Wrap cancelToken to avoid successive resolve & set flag\n opts.cancelToken = opts.cancelToken.then(function (data) {\n opts.canceled = true;\n throw data;\n }, function (err) {\n opts.canceled = true;\n throw err;\n });\n }\n\n var DEST_TILE_BORDER = 3; // Max possible filter window size\n\n opts.__destTileBorder = Math.ceil(Math.max(DEST_TILE_BORDER, 2.5 * opts.unsharpRadius | 0));\n return this.init().then(function () {\n if (opts.canceled) return opts.cancelToken; // if createImageBitmap supports resize, just do it and return\n\n if (_this6.features.cib) {\n return _this6.__resizeViaCreateImageBitmap(from, to, opts);\n }\n\n if (!CAN_USE_CANVAS_GET_IMAGE_DATA) {\n var err = new Error('Pica: cannot use getImageData on canvas, ' + \"make sure fingerprinting protection isn't enabled\");\n err.code = 'ERR_GET_IMAGE_DATA';\n throw err;\n } //\n // No easy way, let's resize manually via arrays\n //\n\n\n var stages = createStages(opts.width, opts.height, opts.toWidth, opts.toHeight, _this6.options.tile, opts.__destTileBorder);\n return _this6.__processStages(stages, from, to, opts);\n });\n}; // RGBA buffer resize\n//\n\n\nPica.prototype.resizeBuffer = function (options) {\n var _this7 = this;\n\n var opts = assign({}, DEFAULT_RESIZE_OPTS, options);\n return this.init().then(function () {\n return _this7.__mathlib.resizeAndUnsharp(opts);\n });\n};\n\nPica.prototype.toBlob = function (canvas, mimeType, quality) {\n mimeType = mimeType || 'image/png';\n return new Promise(function (resolve) {\n if (canvas.toBlob) {\n canvas.toBlob(function (blob) {\n return resolve(blob);\n }, mimeType, quality);\n return;\n }\n\n if (canvas.convertToBlob) {\n resolve(canvas.convertToBlob({\n type: mimeType,\n quality: quality\n }));\n return;\n } // Fallback for old browsers\n\n\n var asString = atob(canvas.toDataURL(mimeType, quality).split(',')[1]);\n var len = asString.length;\n var asBuffer = new Uint8Array(len);\n\n for (var i = 0; i < len; i++) {\n asBuffer[i] = asString.charCodeAt(i);\n }\n\n resolve(new Blob([asBuffer], {\n type: mimeType\n }));\n });\n};\n\nPica.prototype.debug = function () {};\n\nmodule.exports = Pica;\n\n},{\"./lib/mathlib\":1,\"./lib/pool\":13,\"./lib/stepper\":14,\"./lib/tiler\":15,\"./lib/utils\":16,\"./lib/worker\":17,\"object-assign\":23,\"webworkify\":24}]},{},[])(\"/index.js\")\n});\n","\n/*! image-blob-reduce 3.0.1 https://github.com/nodeca/image-blob-reduce @license MIT */\nvar assign$1 = function assign(to) {\n var from;\n\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n\n for (var key in from) {\n if (Object.prototype.hasOwnProperty.call(from, key)) to[key] = from[key];\n }\n }\n\n return to;\n};\n\n\nfunction pick(from, props) {\n var to = {};\n\n props.forEach(function (key) {\n if (Object.prototype.hasOwnProperty.call(from, key)) to[key] = from[key];\n });\n\n return to;\n}\n\n\nfunction pick_pica_resize_options(from) {\n return pick(from, [\n 'alpha',\n 'unsharpAmount',\n 'unsharpRadius',\n 'unsharpThreshold',\n 'cancelToken'\n ]);\n}\n\n\nvar pick_1 = pick;\nvar pick_pica_resize_options_1 = pick_pica_resize_options;\n\nvar utils = {\n\tassign: assign$1,\n\tpick: pick_1,\n\tpick_pica_resize_options: pick_pica_resize_options_1\n};\n\nfunction createCommonjsModule(fn) {\n var module = { exports: {} };\n\treturn fn(module, module.exports), module.exports;\n}\n\nfunction commonjsRequire (target) {\n\tthrow new Error('Could not dynamically require \"' + target + '\". Please configure the dynamicRequireTargets option of @rollup/plugin-commonjs appropriately for this require call to behave properly.');\n}\n\n/*!\n\npica\nhttps://github.com/nodeca/pica\n\n*/\n\nvar pica = createCommonjsModule(function (module, exports) {\n(function(f){{module.exports=f();}})(function(){return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof commonjsRequire&&commonjsRequire;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t);}return n[i].exports}for(var u=\"function\"==typeof commonjsRequire&&commonjsRequire,i=0;i= 0,\n wasm: __requested_features.indexOf('wasm') >= 0\n };\n Multimath.call(this, features);\n this.features = {\n js: features.js,\n wasm: features.wasm && this.has_wasm()\n };\n this.use(mm_unsharp_mask);\n this.use(mm_resize);\n}\n\ninherits(MathLib, Multimath);\n\nMathLib.prototype.resizeAndUnsharp = function resizeAndUnsharp(options, cache) {\n var result = this.resize(options, cache);\n\n if (options.unsharpAmount) {\n this.unsharp_mask(result, options.toWidth, options.toHeight, options.unsharpAmount, options.unsharpRadius, options.unsharpThreshold);\n }\n\n return result;\n};\n\nmodule.exports = MathLib;\n\n},{\"./mm_resize\":4,\"./mm_unsharp_mask\":9,\"inherits\":19,\"multimath\":20}],2:[function(_dereq_,module,exports){\n//var FIXED_FRAC_BITS = 14;\n\nfunction clampTo8(i) {\n return i < 0 ? 0 : i > 255 ? 255 : i;\n} // Convolve image in horizontal directions and transpose output. In theory,\n// transpose allow:\n//\n// - use the same convolver for both passes (this fails due different\n// types of input array and temporary buffer)\n// - making vertical pass by horisonltal lines inprove CPU cache use.\n//\n// But in real life this doesn't work :)\n//\n\n\nfunction convolveHorizontally(src, dest, srcW, srcH, destW, filters) {\n var r, g, b, a;\n var filterPtr, filterShift, filterSize;\n var srcPtr, srcY, destX, filterVal;\n var srcOffset = 0,\n destOffset = 0; // For each row\n\n for (srcY = 0; srcY < srcH; srcY++) {\n filterPtr = 0; // Apply precomputed filters to each destination row point\n\n for (destX = 0; destX < destW; destX++) {\n // Get the filter that determines the current output pixel.\n filterShift = filters[filterPtr++];\n filterSize = filters[filterPtr++];\n srcPtr = srcOffset + filterShift * 4 | 0;\n r = g = b = a = 0; // Apply the filter to the row to get the destination pixel r, g, b, a\n\n for (; filterSize > 0; filterSize--) {\n filterVal = filters[filterPtr++]; // Use reverse order to workaround deopts in old v8 (node v.10)\n // Big thanks to @mraleph (Vyacheslav Egorov) for the tip.\n\n a = a + filterVal * src[srcPtr + 3] | 0;\n b = b + filterVal * src[srcPtr + 2] | 0;\n g = g + filterVal * src[srcPtr + 1] | 0;\n r = r + filterVal * src[srcPtr] | 0;\n srcPtr = srcPtr + 4 | 0;\n } // Bring this value back in range. All of the filter scaling factors\n // are in fixed point with FIXED_FRAC_BITS bits of fractional part.\n //\n // (!) Add 1/2 of value before clamping to get proper rounding. In other\n // case brightness loss will be noticeable if you resize image with white\n // border and place it on white background.\n //\n\n\n dest[destOffset + 3] = clampTo8(a + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset + 2] = clampTo8(b + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset + 1] = clampTo8(g + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset] = clampTo8(r + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n destOffset = destOffset + srcH * 4 | 0;\n }\n\n destOffset = (srcY + 1) * 4 | 0;\n srcOffset = (srcY + 1) * srcW * 4 | 0;\n }\n} // Technically, convolvers are the same. But input array and temporary\n// buffer can be of different type (especially, in old browsers). So,\n// keep code in separate functions to avoid deoptimizations & speed loss.\n\n\nfunction convolveVertically(src, dest, srcW, srcH, destW, filters) {\n var r, g, b, a;\n var filterPtr, filterShift, filterSize;\n var srcPtr, srcY, destX, filterVal;\n var srcOffset = 0,\n destOffset = 0; // For each row\n\n for (srcY = 0; srcY < srcH; srcY++) {\n filterPtr = 0; // Apply precomputed filters to each destination row point\n\n for (destX = 0; destX < destW; destX++) {\n // Get the filter that determines the current output pixel.\n filterShift = filters[filterPtr++];\n filterSize = filters[filterPtr++];\n srcPtr = srcOffset + filterShift * 4 | 0;\n r = g = b = a = 0; // Apply the filter to the row to get the destination pixel r, g, b, a\n\n for (; filterSize > 0; filterSize--) {\n filterVal = filters[filterPtr++]; // Use reverse order to workaround deopts in old v8 (node v.10)\n // Big thanks to @mraleph (Vyacheslav Egorov) for the tip.\n\n a = a + filterVal * src[srcPtr + 3] | 0;\n b = b + filterVal * src[srcPtr + 2] | 0;\n g = g + filterVal * src[srcPtr + 1] | 0;\n r = r + filterVal * src[srcPtr] | 0;\n srcPtr = srcPtr + 4 | 0;\n } // Bring this value back in range. All of the filter scaling factors\n // are in fixed point with FIXED_FRAC_BITS bits of fractional part.\n //\n // (!) Add 1/2 of value before clamping to get proper rounding. In other\n // case brightness loss will be noticeable if you resize image with white\n // border and place it on white background.\n //\n\n\n dest[destOffset + 3] = clampTo8(a + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset + 2] = clampTo8(b + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset + 1] = clampTo8(g + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset] = clampTo8(r + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n destOffset = destOffset + srcH * 4 | 0;\n }\n\n destOffset = (srcY + 1) * 4 | 0;\n srcOffset = (srcY + 1) * srcW * 4 | 0;\n }\n}\n\nmodule.exports = {\n convolveHorizontally: convolveHorizontally,\n convolveVertically: convolveVertically\n};\n\n},{}],3:[function(_dereq_,module,exports){\n/* eslint-disable max-len */\n\nmodule.exports = 'AGFzbQEAAAAADAZkeWxpbmsAAAAAAAEXA2AAAGAGf39/f39/AGAHf39/f39/fwACDwEDZW52Bm1lbW9yeQIAAAMEAwABAgYGAX8AQQALB1cFEV9fd2FzbV9jYWxsX2N0b3JzAAAIY29udm9sdmUAAQpjb252b2x2ZUhWAAIMX19kc29faGFuZGxlAwAYX193YXNtX2FwcGx5X2RhdGFfcmVsb2NzAAAK7AMDAwABC8YDAQ9/AkAgA0UNACAERQ0AA0AgDCENQQAhE0EAIQcDQCAHQQJqIQYCfyAHQQF0IAVqIgcuAQIiFEUEQEGAwAAhCEGAwAAhCUGAwAAhCkGAwAAhCyAGDAELIBIgBy4BAGohCEEAIQsgFCEHQQAhDiAGIQlBACEPQQAhEANAIAUgCUEBdGouAQAiESAAIAhBAnRqKAIAIgpBGHZsIBBqIRAgCkH/AXEgEWwgC2ohCyAKQRB2Qf8BcSARbCAPaiEPIApBCHZB/wFxIBFsIA5qIQ4gCEEBaiEIIAlBAWohCSAHQQFrIgcNAAsgC0GAQGshCCAOQYBAayEJIA9BgEBrIQogEEGAQGshCyAGIBRqCyEHIAEgDUECdGogCUEOdSIGQf8BIAZB/wFIGyIGQQAgBkEAShtBCHRBgP4DcSAKQQ51IgZB/wEgBkH/AUgbIgZBACAGQQBKG0EQdEGAgPwHcSALQQ51IgZB/wEgBkH/AUgbIgZBACAGQQBKG0EYdHJyIAhBDnUiBkH/ASAGQf8BSBsiBkEAIAZBAEobcjYCACADIA1qIQ0gE0EBaiITIARHDQALIAxBAWoiDCACbCESIAMgDEcNAAsLCx4AQQAgAiADIAQgBSAAEAEgAkEAIAQgBSAGIAEQAQs=';\n\n},{}],4:[function(_dereq_,module,exports){\n\nmodule.exports = {\n name: 'resize',\n fn: _dereq_('./resize'),\n wasm_fn: _dereq_('./resize_wasm'),\n wasm_src: _dereq_('./convolve_wasm_base64')\n};\n\n},{\"./convolve_wasm_base64\":3,\"./resize\":5,\"./resize_wasm\":8}],5:[function(_dereq_,module,exports){\n\nvar createFilters = _dereq_('./resize_filter_gen');\n\nvar convolveHorizontally = _dereq_('./convolve').convolveHorizontally;\n\nvar convolveVertically = _dereq_('./convolve').convolveVertically;\n\nfunction resetAlpha(dst, width, height) {\n var ptr = 3,\n len = width * height * 4 | 0;\n\n while (ptr < len) {\n dst[ptr] = 0xFF;\n ptr = ptr + 4 | 0;\n }\n}\n\nmodule.exports = function resize(options) {\n var src = options.src;\n var srcW = options.width;\n var srcH = options.height;\n var destW = options.toWidth;\n var destH = options.toHeight;\n var scaleX = options.scaleX || options.toWidth / options.width;\n var scaleY = options.scaleY || options.toHeight / options.height;\n var offsetX = options.offsetX || 0;\n var offsetY = options.offsetY || 0;\n var dest = options.dest || new Uint8Array(destW * destH * 4);\n var quality = typeof options.quality === 'undefined' ? 3 : options.quality;\n var alpha = options.alpha || false;\n var filtersX = createFilters(quality, srcW, destW, scaleX, offsetX),\n filtersY = createFilters(quality, srcH, destH, scaleY, offsetY);\n var tmp = new Uint8Array(destW * srcH * 4); // To use single function we need src & tmp of the same type.\n // But src can be CanvasPixelArray, and tmp - Uint8Array. So, keep\n // vertical and horizontal passes separately to avoid deoptimization.\n\n convolveHorizontally(src, tmp, srcW, srcH, destW, filtersX);\n convolveVertically(tmp, dest, srcH, destW, destH, filtersY); // That's faster than doing checks in convolver.\n // !!! Note, canvas data is not premultipled. We don't need other\n // alpha corrections.\n\n if (!alpha) resetAlpha(dest, destW, destH);\n return dest;\n};\n\n},{\"./convolve\":2,\"./resize_filter_gen\":6}],6:[function(_dereq_,module,exports){\n\nvar FILTER_INFO = _dereq_('./resize_filter_info'); // Precision of fixed FP values\n\n\nvar FIXED_FRAC_BITS = 14;\n\nfunction toFixedPoint(num) {\n return Math.round(num * ((1 << FIXED_FRAC_BITS) - 1));\n}\n\nmodule.exports = function resizeFilterGen(quality, srcSize, destSize, scale, offset) {\n var filterFunction = FILTER_INFO[quality].filter;\n var scaleInverted = 1.0 / scale;\n var scaleClamped = Math.min(1.0, scale); // For upscale\n // Filter window (averaging interval), scaled to src image\n\n var srcWindow = FILTER_INFO[quality].win / scaleClamped;\n var destPixel, srcPixel, srcFirst, srcLast, filterElementSize, floatFilter, fxpFilter, total, pxl, idx, floatVal, filterTotal, filterVal;\n var leftNotEmpty, rightNotEmpty, filterShift, filterSize;\n var maxFilterElementSize = Math.floor((srcWindow + 1) * 2);\n var packedFilter = new Int16Array((maxFilterElementSize + 2) * destSize);\n var packedFilterPtr = 0;\n var slowCopy = !packedFilter.subarray || !packedFilter.set; // For each destination pixel calculate source range and built filter values\n\n for (destPixel = 0; destPixel < destSize; destPixel++) {\n // Scaling should be done relative to central pixel point\n srcPixel = (destPixel + 0.5) * scaleInverted + offset;\n srcFirst = Math.max(0, Math.floor(srcPixel - srcWindow));\n srcLast = Math.min(srcSize - 1, Math.ceil(srcPixel + srcWindow));\n filterElementSize = srcLast - srcFirst + 1;\n floatFilter = new Float32Array(filterElementSize);\n fxpFilter = new Int16Array(filterElementSize);\n total = 0.0; // Fill filter values for calculated range\n\n for (pxl = srcFirst, idx = 0; pxl <= srcLast; pxl++, idx++) {\n floatVal = filterFunction((pxl + 0.5 - srcPixel) * scaleClamped);\n total += floatVal;\n floatFilter[idx] = floatVal;\n } // Normalize filter, convert to fixed point and accumulate conversion error\n\n\n filterTotal = 0;\n\n for (idx = 0; idx < floatFilter.length; idx++) {\n filterVal = floatFilter[idx] / total;\n filterTotal += filterVal;\n fxpFilter[idx] = toFixedPoint(filterVal);\n } // Compensate normalization error, to minimize brightness drift\n\n\n fxpFilter[destSize >> 1] += toFixedPoint(1.0 - filterTotal); //\n // Now pack filter to useable form\n //\n // 1. Trim heading and tailing zero values, and compensate shitf/length\n // 2. Put all to single array in this format:\n //\n // [ pos shift, data length, value1, value2, value3, ... ]\n //\n\n leftNotEmpty = 0;\n\n while (leftNotEmpty < fxpFilter.length && fxpFilter[leftNotEmpty] === 0) {\n leftNotEmpty++;\n }\n\n if (leftNotEmpty < fxpFilter.length) {\n rightNotEmpty = fxpFilter.length - 1;\n\n while (rightNotEmpty > 0 && fxpFilter[rightNotEmpty] === 0) {\n rightNotEmpty--;\n }\n\n filterShift = srcFirst + leftNotEmpty;\n filterSize = rightNotEmpty - leftNotEmpty + 1;\n packedFilter[packedFilterPtr++] = filterShift; // shift\n\n packedFilter[packedFilterPtr++] = filterSize; // size\n\n if (!slowCopy) {\n packedFilter.set(fxpFilter.subarray(leftNotEmpty, rightNotEmpty + 1), packedFilterPtr);\n packedFilterPtr += filterSize;\n } else {\n // fallback for old IE < 11, without subarray/set methods\n for (idx = leftNotEmpty; idx <= rightNotEmpty; idx++) {\n packedFilter[packedFilterPtr++] = fxpFilter[idx];\n }\n }\n } else {\n // zero data, write header only\n packedFilter[packedFilterPtr++] = 0; // shift\n\n packedFilter[packedFilterPtr++] = 0; // size\n }\n }\n\n return packedFilter;\n};\n\n},{\"./resize_filter_info\":7}],7:[function(_dereq_,module,exports){\n\nmodule.exports = [{\n // Nearest neibor (Box)\n win: 0.5,\n filter: function filter(x) {\n return x >= -0.5 && x < 0.5 ? 1.0 : 0.0;\n }\n}, {\n // Hamming\n win: 1.0,\n filter: function filter(x) {\n if (x <= -1.0 || x >= 1.0) {\n return 0.0;\n }\n\n if (x > -1.19209290E-07 && x < 1.19209290E-07) {\n return 1.0;\n }\n\n var xpi = x * Math.PI;\n return Math.sin(xpi) / xpi * (0.54 + 0.46 * Math.cos(xpi / 1.0));\n }\n}, {\n // Lanczos, win = 2\n win: 2.0,\n filter: function filter(x) {\n if (x <= -2.0 || x >= 2.0) {\n return 0.0;\n }\n\n if (x > -1.19209290E-07 && x < 1.19209290E-07) {\n return 1.0;\n }\n\n var xpi = x * Math.PI;\n return Math.sin(xpi) / xpi * Math.sin(xpi / 2.0) / (xpi / 2.0);\n }\n}, {\n // Lanczos, win = 3\n win: 3.0,\n filter: function filter(x) {\n if (x <= -3.0 || x >= 3.0) {\n return 0.0;\n }\n\n if (x > -1.19209290E-07 && x < 1.19209290E-07) {\n return 1.0;\n }\n\n var xpi = x * Math.PI;\n return Math.sin(xpi) / xpi * Math.sin(xpi / 3.0) / (xpi / 3.0);\n }\n}];\n\n},{}],8:[function(_dereq_,module,exports){\n\nvar createFilters = _dereq_('./resize_filter_gen');\n\nfunction resetAlpha(dst, width, height) {\n var ptr = 3,\n len = width * height * 4 | 0;\n\n while (ptr < len) {\n dst[ptr] = 0xFF;\n ptr = ptr + 4 | 0;\n }\n}\n\nfunction asUint8Array(src) {\n return new Uint8Array(src.buffer, 0, src.byteLength);\n}\n\nvar IS_LE = true; // should not crash everything on module load in old browsers\n\ntry {\n IS_LE = new Uint32Array(new Uint8Array([1, 0, 0, 0]).buffer)[0] === 1;\n} catch (__) {}\n\nfunction copyInt16asLE(src, target, target_offset) {\n if (IS_LE) {\n target.set(asUint8Array(src), target_offset);\n return;\n }\n\n for (var ptr = target_offset, i = 0; i < src.length; i++) {\n var data = src[i];\n target[ptr++] = data & 0xFF;\n target[ptr++] = data >> 8 & 0xFF;\n }\n}\n\nmodule.exports = function resize_wasm(options) {\n var src = options.src;\n var srcW = options.width;\n var srcH = options.height;\n var destW = options.toWidth;\n var destH = options.toHeight;\n var scaleX = options.scaleX || options.toWidth / options.width;\n var scaleY = options.scaleY || options.toHeight / options.height;\n var offsetX = options.offsetX || 0.0;\n var offsetY = options.offsetY || 0.0;\n var dest = options.dest || new Uint8Array(destW * destH * 4);\n var quality = typeof options.quality === 'undefined' ? 3 : options.quality;\n var alpha = options.alpha || false;\n var filtersX = createFilters(quality, srcW, destW, scaleX, offsetX),\n filtersY = createFilters(quality, srcH, destH, scaleY, offsetY); // destination is 0 too.\n\n var src_offset = 0; // buffer between convolve passes\n\n var tmp_offset = this.__align(src_offset + Math.max(src.byteLength, dest.byteLength));\n\n var filtersX_offset = this.__align(tmp_offset + srcH * destW * 4);\n\n var filtersY_offset = this.__align(filtersX_offset + filtersX.byteLength);\n\n var alloc_bytes = filtersY_offset + filtersY.byteLength;\n\n var instance = this.__instance('resize', alloc_bytes); //\n // Fill memory block with data to process\n //\n\n\n var mem = new Uint8Array(this.__memory.buffer);\n var mem32 = new Uint32Array(this.__memory.buffer); // 32-bit copy is much faster in chrome\n\n var src32 = new Uint32Array(src.buffer);\n mem32.set(src32); // We should guarantee LE bytes order. Filters are not big, so\n // speed difference is not significant vs direct .set()\n\n copyInt16asLE(filtersX, mem, filtersX_offset);\n copyInt16asLE(filtersY, mem, filtersY_offset); //\n // Now call webassembly method\n // emsdk does method names with '_'\n\n var fn = instance.exports.convolveHV || instance.exports._convolveHV;\n fn(filtersX_offset, filtersY_offset, tmp_offset, srcW, srcH, destW, destH); //\n // Copy data back to typed array\n //\n // 32-bit copy is much faster in chrome\n\n var dest32 = new Uint32Array(dest.buffer);\n dest32.set(new Uint32Array(this.__memory.buffer, 0, destH * destW)); // That's faster than doing checks in convolver.\n // !!! Note, canvas data is not premultipled. We don't need other\n // alpha corrections.\n\n if (!alpha) resetAlpha(dest, destW, destH);\n return dest;\n};\n\n},{\"./resize_filter_gen\":6}],9:[function(_dereq_,module,exports){\n\nmodule.exports = {\n name: 'unsharp_mask',\n fn: _dereq_('./unsharp_mask'),\n wasm_fn: _dereq_('./unsharp_mask_wasm'),\n wasm_src: _dereq_('./unsharp_mask_wasm_base64')\n};\n\n},{\"./unsharp_mask\":10,\"./unsharp_mask_wasm\":11,\"./unsharp_mask_wasm_base64\":12}],10:[function(_dereq_,module,exports){\n\nvar glur_mono16 = _dereq_('glur/mono16');\n\nfunction hsv_v16(img, width, height) {\n var size = width * height;\n var out = new Uint16Array(size);\n var r, g, b, max;\n\n for (var i = 0; i < size; i++) {\n r = img[4 * i];\n g = img[4 * i + 1];\n b = img[4 * i + 2];\n max = r >= g && r >= b ? r : g >= b && g >= r ? g : b;\n out[i] = max << 8;\n }\n\n return out;\n}\n\nmodule.exports = function unsharp(img, width, height, amount, radius, threshold) {\n var v1, v2, vmul;\n var diff, iTimes4;\n\n if (amount === 0 || radius < 0.5) {\n return;\n }\n\n if (radius > 2.0) {\n radius = 2.0;\n }\n\n var brightness = hsv_v16(img, width, height);\n var blured = new Uint16Array(brightness); // copy, because blur modify src\n\n glur_mono16(blured, width, height, radius);\n var amountFp = amount / 100 * 0x1000 + 0.5 | 0;\n var thresholdFp = threshold << 8;\n var size = width * height;\n /* eslint-disable indent */\n\n for (var i = 0; i < size; i++) {\n v1 = brightness[i];\n diff = v1 - blured[i];\n\n if (Math.abs(diff) >= thresholdFp) {\n // add unsharp mask to the brightness channel\n v2 = v1 + (amountFp * diff + 0x800 >> 12); // Both v1 and v2 are within [0.0 .. 255.0] (0000-FF00) range, never going into\n // [255.003 .. 255.996] (FF01-FFFF). This allows to round this value as (x+.5)|0\n // later without overflowing.\n\n v2 = v2 > 0xff00 ? 0xff00 : v2;\n v2 = v2 < 0x0000 ? 0x0000 : v2; // Avoid division by 0. V=0 means rgb(0,0,0), unsharp with unsharpAmount>0 cannot\n // change this value (because diff between colors gets inflated), so no need to verify correctness.\n\n v1 = v1 !== 0 ? v1 : 1; // Multiplying V in HSV model by a constant is equivalent to multiplying each component\n // in RGB by the same constant (same for HSL), see also:\n // https://beesbuzz.biz/code/16-hsv-color-transforms\n\n vmul = (v2 << 12) / v1 | 0; // Result will be in [0..255] range because:\n // - all numbers are positive\n // - r,g,b <= (v1/256)\n // - r,g,b,(v1/256),(v2/256) <= 255\n // So highest this number can get is X*255/X+0.5=255.5 which is < 256 and rounds down.\n\n iTimes4 = i * 4;\n img[iTimes4] = img[iTimes4] * vmul + 0x800 >> 12; // R\n\n img[iTimes4 + 1] = img[iTimes4 + 1] * vmul + 0x800 >> 12; // G\n\n img[iTimes4 + 2] = img[iTimes4 + 2] * vmul + 0x800 >> 12; // B\n }\n }\n};\n\n},{\"glur/mono16\":18}],11:[function(_dereq_,module,exports){\n\nmodule.exports = function unsharp(img, width, height, amount, radius, threshold) {\n if (amount === 0 || radius < 0.5) {\n return;\n }\n\n if (radius > 2.0) {\n radius = 2.0;\n }\n\n var pixels = width * height;\n var img_bytes_cnt = pixels * 4;\n var hsv_bytes_cnt = pixels * 2;\n var blur_bytes_cnt = pixels * 2;\n var blur_line_byte_cnt = Math.max(width, height) * 4; // float32 array\n\n var blur_coeffs_byte_cnt = 8 * 4; // float32 array\n\n var img_offset = 0;\n var hsv_offset = img_bytes_cnt;\n var blur_offset = hsv_offset + hsv_bytes_cnt;\n var blur_tmp_offset = blur_offset + blur_bytes_cnt;\n var blur_line_offset = blur_tmp_offset + blur_bytes_cnt;\n var blur_coeffs_offset = blur_line_offset + blur_line_byte_cnt;\n\n var instance = this.__instance('unsharp_mask', img_bytes_cnt + hsv_bytes_cnt + blur_bytes_cnt * 2 + blur_line_byte_cnt + blur_coeffs_byte_cnt, {\n exp: Math.exp\n }); // 32-bit copy is much faster in chrome\n\n\n var img32 = new Uint32Array(img.buffer);\n var mem32 = new Uint32Array(this.__memory.buffer);\n mem32.set(img32); // HSL\n\n var fn = instance.exports.hsv_v16 || instance.exports._hsv_v16;\n fn(img_offset, hsv_offset, width, height); // BLUR\n\n fn = instance.exports.blurMono16 || instance.exports._blurMono16;\n fn(hsv_offset, blur_offset, blur_tmp_offset, blur_line_offset, blur_coeffs_offset, width, height, radius); // UNSHARP\n\n fn = instance.exports.unsharp || instance.exports._unsharp;\n fn(img_offset, img_offset, hsv_offset, blur_offset, width, height, amount, threshold); // 32-bit copy is much faster in chrome\n\n img32.set(new Uint32Array(this.__memory.buffer, 0, pixels));\n};\n\n},{}],12:[function(_dereq_,module,exports){\n/* eslint-disable max-len */\n\nmodule.exports = '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';\n\n},{}],13:[function(_dereq_,module,exports){\n\nvar GC_INTERVAL = 100;\n\nfunction Pool(create, idle) {\n this.create = create;\n this.available = [];\n this.acquired = {};\n this.lastId = 1;\n this.timeoutId = 0;\n this.idle = idle || 2000;\n}\n\nPool.prototype.acquire = function () {\n var _this = this;\n\n var resource;\n\n if (this.available.length !== 0) {\n resource = this.available.pop();\n } else {\n resource = this.create();\n resource.id = this.lastId++;\n\n resource.release = function () {\n return _this.release(resource);\n };\n }\n\n this.acquired[resource.id] = resource;\n return resource;\n};\n\nPool.prototype.release = function (resource) {\n var _this2 = this;\n\n delete this.acquired[resource.id];\n resource.lastUsed = Date.now();\n this.available.push(resource);\n\n if (this.timeoutId === 0) {\n this.timeoutId = setTimeout(function () {\n return _this2.gc();\n }, GC_INTERVAL);\n }\n};\n\nPool.prototype.gc = function () {\n var _this3 = this;\n\n var now = Date.now();\n this.available = this.available.filter(function (resource) {\n if (now - resource.lastUsed > _this3.idle) {\n resource.destroy();\n return false;\n }\n\n return true;\n });\n\n if (this.available.length !== 0) {\n this.timeoutId = setTimeout(function () {\n return _this3.gc();\n }, GC_INTERVAL);\n } else {\n this.timeoutId = 0;\n }\n};\n\nmodule.exports = Pool;\n\n},{}],14:[function(_dereq_,module,exports){\n// min size = 1 can consume large amount of memory\n\nvar MIN_INNER_TILE_SIZE = 2;\n\nmodule.exports = function createStages(fromWidth, fromHeight, toWidth, toHeight, srcTileSize, destTileBorder) {\n var scaleX = toWidth / fromWidth;\n var scaleY = toHeight / fromHeight; // derived from createRegions equation:\n // innerTileWidth = pixelFloor(srcTileSize * scaleX) - 2 * destTileBorder;\n\n var minScale = (2 * destTileBorder + MIN_INNER_TILE_SIZE + 1) / srcTileSize; // refuse to scale image multiple times by less than twice each time,\n // it could only happen because of invalid options\n\n if (minScale > 0.5) return [[toWidth, toHeight]];\n var stageCount = Math.ceil(Math.log(Math.min(scaleX, scaleY)) / Math.log(minScale)); // no additional resizes are necessary,\n // stageCount can be zero or be negative when enlarging the image\n\n if (stageCount <= 1) return [[toWidth, toHeight]];\n var result = [];\n\n for (var i = 0; i < stageCount; i++) {\n var width = Math.round(Math.pow(Math.pow(fromWidth, stageCount - i - 1) * Math.pow(toWidth, i + 1), 1 / stageCount));\n var height = Math.round(Math.pow(Math.pow(fromHeight, stageCount - i - 1) * Math.pow(toHeight, i + 1), 1 / stageCount));\n result.push([width, height]);\n }\n\n return result;\n};\n\n},{}],15:[function(_dereq_,module,exports){\n/*\n * pixelFloor and pixelCeil are modified versions of Math.floor and Math.ceil\n * functions which take into account floating point arithmetic errors.\n * Those errors can cause undesired increments/decrements of sizes and offsets:\n * Math.ceil(36 / (36 / 500)) = 501\n * pixelCeil(36 / (36 / 500)) = 500\n */\n\nvar PIXEL_EPSILON = 1e-5;\n\nfunction pixelFloor(x) {\n var nearest = Math.round(x);\n\n if (Math.abs(x - nearest) < PIXEL_EPSILON) {\n return nearest;\n }\n\n return Math.floor(x);\n}\n\nfunction pixelCeil(x) {\n var nearest = Math.round(x);\n\n if (Math.abs(x - nearest) < PIXEL_EPSILON) {\n return nearest;\n }\n\n return Math.ceil(x);\n}\n\nmodule.exports = function createRegions(options) {\n var scaleX = options.toWidth / options.width;\n var scaleY = options.toHeight / options.height;\n var innerTileWidth = pixelFloor(options.srcTileSize * scaleX) - 2 * options.destTileBorder;\n var innerTileHeight = pixelFloor(options.srcTileSize * scaleY) - 2 * options.destTileBorder; // prevent infinite loop, this should never happen\n\n if (innerTileWidth < 1 || innerTileHeight < 1) {\n throw new Error('Internal error in pica: target tile width/height is too small.');\n }\n\n var x, y;\n var innerX, innerY, toTileWidth, toTileHeight;\n var tiles = [];\n var tile; // we go top-to-down instead of left-to-right to make image displayed from top to\n // doesn in the browser\n\n for (innerY = 0; innerY < options.toHeight; innerY += innerTileHeight) {\n for (innerX = 0; innerX < options.toWidth; innerX += innerTileWidth) {\n x = innerX - options.destTileBorder;\n\n if (x < 0) {\n x = 0;\n }\n\n toTileWidth = innerX + innerTileWidth + options.destTileBorder - x;\n\n if (x + toTileWidth >= options.toWidth) {\n toTileWidth = options.toWidth - x;\n }\n\n y = innerY - options.destTileBorder;\n\n if (y < 0) {\n y = 0;\n }\n\n toTileHeight = innerY + innerTileHeight + options.destTileBorder - y;\n\n if (y + toTileHeight >= options.toHeight) {\n toTileHeight = options.toHeight - y;\n }\n\n tile = {\n toX: x,\n toY: y,\n toWidth: toTileWidth,\n toHeight: toTileHeight,\n toInnerX: innerX,\n toInnerY: innerY,\n toInnerWidth: innerTileWidth,\n toInnerHeight: innerTileHeight,\n offsetX: x / scaleX - pixelFloor(x / scaleX),\n offsetY: y / scaleY - pixelFloor(y / scaleY),\n scaleX: scaleX,\n scaleY: scaleY,\n x: pixelFloor(x / scaleX),\n y: pixelFloor(y / scaleY),\n width: pixelCeil(toTileWidth / scaleX),\n height: pixelCeil(toTileHeight / scaleY)\n };\n tiles.push(tile);\n }\n }\n\n return tiles;\n};\n\n},{}],16:[function(_dereq_,module,exports){\n\nfunction objClass(obj) {\n return Object.prototype.toString.call(obj);\n}\n\nmodule.exports.isCanvas = function isCanvas(element) {\n var cname = objClass(element);\n return cname === '[object HTMLCanvasElement]'\n /* browser */\n || cname === '[object OffscreenCanvas]' || cname === '[object Canvas]'\n /* node-canvas */\n ;\n};\n\nmodule.exports.isImage = function isImage(element) {\n return objClass(element) === '[object HTMLImageElement]';\n};\n\nmodule.exports.isImageBitmap = function isImageBitmap(element) {\n return objClass(element) === '[object ImageBitmap]';\n};\n\nmodule.exports.limiter = function limiter(concurrency) {\n var active = 0,\n queue = [];\n\n function roll() {\n if (active < concurrency && queue.length) {\n active++;\n queue.shift()();\n }\n }\n\n return function limit(fn) {\n return new Promise(function (resolve, reject) {\n queue.push(function () {\n fn().then(function (result) {\n resolve(result);\n active--;\n roll();\n }, function (err) {\n reject(err);\n active--;\n roll();\n });\n });\n roll();\n });\n };\n};\n\nmodule.exports.cib_quality_name = function cib_quality_name(num) {\n switch (num) {\n case 0:\n return 'pixelated';\n\n case 1:\n return 'low';\n\n case 2:\n return 'medium';\n }\n\n return 'high';\n};\n\nmodule.exports.cib_support = function cib_support(createCanvas) {\n return Promise.resolve().then(function () {\n if (typeof createImageBitmap === 'undefined') {\n return false;\n }\n\n var c = createCanvas(100, 100);\n return createImageBitmap(c, 0, 0, 100, 100, {\n resizeWidth: 10,\n resizeHeight: 10,\n resizeQuality: 'high'\n }).then(function (bitmap) {\n var status = bitmap.width === 10; // Branch below is filtered on upper level. We do not call resize\n // detection for basic ImageBitmap.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap\n // old Crome 51 has ImageBitmap without .close(). Then this code\n // will throw and return 'false' as expected.\n //\n\n bitmap.close();\n c = null;\n return status;\n });\n })[\"catch\"](function () {\n return false;\n });\n};\n\nmodule.exports.worker_offscreen_canvas_support = function worker_offscreen_canvas_support() {\n return new Promise(function (resolve, reject) {\n if (typeof OffscreenCanvas === 'undefined') {\n // if OffscreenCanvas is present, we assume browser supports Worker and built-in Promise as well\n resolve(false);\n return;\n }\n\n function workerPayload(self) {\n if (typeof createImageBitmap === 'undefined') {\n self.postMessage(false);\n return;\n }\n\n Promise.resolve().then(function () {\n var canvas = new OffscreenCanvas(10, 10); // test that 2d context can be used in worker\n\n var ctx = canvas.getContext('2d');\n ctx.rect(0, 0, 1, 1); // test that cib can be used to return image bitmap from worker\n\n return createImageBitmap(canvas, 0, 0, 1, 1);\n }).then(function () {\n return self.postMessage(true);\n }, function () {\n return self.postMessage(false);\n });\n }\n\n var code = btoa(\"(\".concat(workerPayload.toString(), \")(self);\"));\n var w = new Worker(\"data:text/javascript;base64,\".concat(code));\n\n w.onmessage = function (ev) {\n return resolve(ev.data);\n };\n\n w.onerror = reject;\n }).then(function (result) {\n return result;\n }, function () {\n return false;\n });\n}; // Check if canvas.getContext('2d').getImageData can be used,\n// FireFox randomizes the output of that function in `privacy.resistFingerprinting` mode\n\n\nmodule.exports.can_use_canvas = function can_use_canvas(createCanvas) {\n var usable = false;\n\n try {\n var canvas = createCanvas(2, 1);\n var ctx = canvas.getContext('2d');\n var d = ctx.createImageData(2, 1);\n d.data[0] = 12;\n d.data[1] = 23;\n d.data[2] = 34;\n d.data[3] = 255;\n d.data[4] = 45;\n d.data[5] = 56;\n d.data[6] = 67;\n d.data[7] = 255;\n ctx.putImageData(d, 0, 0);\n d = null;\n d = ctx.getImageData(0, 0, 2, 1);\n\n if (d.data[0] === 12 && d.data[1] === 23 && d.data[2] === 34 && d.data[3] === 255 && d.data[4] === 45 && d.data[5] === 56 && d.data[6] === 67 && d.data[7] === 255) {\n usable = true;\n }\n } catch (err) {}\n\n return usable;\n}; // Check if createImageBitmap(img, sx, sy, sw, sh) signature works correctly\n// with JPEG images oriented with Exif;\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1220671\n// TODO: remove after it's fixed in chrome for at least 2 releases\n\n\nmodule.exports.cib_can_use_region = function cib_can_use_region() {\n return new Promise(function (resolve) {\n if (typeof createImageBitmap === 'undefined') {\n resolve(false);\n return;\n }\n\n var image = new Image();\n image.src = 'data:image/jpeg;base64,' + '/9j/4QBiRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAYAAAEaAAUAAAABAAAASgEbAAUAA' + 'AABAAAAUgEoAAMAAAABAAIAAAITAAMAAAABAAEAAAAAAAAAAABIAAAAAQAAAEgAAAAB/9' + 'sAQwAEAwMEAwMEBAMEBQQEBQYKBwYGBgYNCQoICg8NEBAPDQ8OERMYFBESFxIODxUcFRc' + 'ZGRsbGxAUHR8dGh8YGhsa/9sAQwEEBQUGBQYMBwcMGhEPERoaGhoaGhoaGhoaGhoaGhoa' + 'GhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoa/8IAEQgAAQACAwERAAIRAQMRA' + 'f/EABQAAQAAAAAAAAAAAAAAAAAAAAf/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAA' + 'IQAxAAAAF/P//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAQUCf//EABQRAQAAAAA' + 'AAAAAAAAAAAAAAAD/2gAIAQMBAT8Bf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIB' + 'AT8Bf//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEABj8Cf//EABQQAQAAAAAAAAAAA' + 'AAAAAAAAAD/2gAIAQEAAT8hf//aAAwDAQACAAMAAAAQH//EABQRAQAAAAAAAAAAAAAAAA' + 'AAAAD/2gAIAQMBAT8Qf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIBAT8Qf//EABQ' + 'QAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAT8Qf//Z';\n\n image.onload = function () {\n createImageBitmap(image, 0, 0, image.width, image.height).then(function (bitmap) {\n if (bitmap.width === image.width && bitmap.height === image.height) {\n resolve(true);\n } else {\n resolve(false);\n }\n }, function () {\n return resolve(false);\n });\n };\n\n image.onerror = function () {\n return resolve(false);\n };\n });\n};\n\n},{}],17:[function(_dereq_,module,exports){\n\nmodule.exports = function () {\n var MathLib = _dereq_('./mathlib');\n\n var mathLib;\n /* eslint-disable no-undef */\n\n onmessage = function onmessage(ev) {\n var tileOpts = ev.data.opts;\n var returnBitmap = false;\n\n if (!tileOpts.src && tileOpts.srcBitmap) {\n var canvas = new OffscreenCanvas(tileOpts.width, tileOpts.height);\n var ctx = canvas.getContext('2d', {\n alpha: Boolean(tileOpts.alpha)\n });\n ctx.drawImage(tileOpts.srcBitmap, 0, 0);\n tileOpts.src = ctx.getImageData(0, 0, tileOpts.width, tileOpts.height).data;\n canvas.width = canvas.height = 0;\n canvas = null;\n tileOpts.srcBitmap.close();\n tileOpts.srcBitmap = null;\n returnBitmap = true;\n }\n\n if (!mathLib) mathLib = new MathLib(ev.data.features); // Use multimath's sync auto-init. Avoid Promise use in old browsers,\n // because polyfills are not propagated to webworker.\n\n var data = mathLib.resizeAndUnsharp(tileOpts);\n\n if (returnBitmap) {\n var toImageData = new ImageData(new Uint8ClampedArray(data), tileOpts.toWidth, tileOpts.toHeight);\n\n var _canvas = new OffscreenCanvas(tileOpts.toWidth, tileOpts.toHeight);\n\n var _ctx = _canvas.getContext('2d', {\n alpha: Boolean(tileOpts.alpha)\n });\n\n _ctx.putImageData(toImageData, 0, 0);\n\n createImageBitmap(_canvas).then(function (bitmap) {\n postMessage({\n bitmap: bitmap\n }, [bitmap]);\n });\n } else {\n postMessage({\n data: data\n }, [data.buffer]);\n }\n };\n};\n\n},{\"./mathlib\":1}],18:[function(_dereq_,module,exports){\n// Calculate Gaussian blur of an image using IIR filter\n// The method is taken from Intel's white paper and code example attached to it:\n// https://software.intel.com/en-us/articles/iir-gaussian-blur-filter\n// -implementation-using-intel-advanced-vector-extensions\n\nvar a0, a1, a2, a3, b1, b2, left_corner, right_corner;\n\nfunction gaussCoef(sigma) {\n if (sigma < 0.5) {\n sigma = 0.5;\n }\n\n var a = Math.exp(0.726 * 0.726) / sigma,\n g1 = Math.exp(-a),\n g2 = Math.exp(-2 * a),\n k = (1 - g1) * (1 - g1) / (1 + 2 * a * g1 - g2);\n\n a0 = k;\n a1 = k * (a - 1) * g1;\n a2 = k * (a + 1) * g1;\n a3 = -k * g2;\n b1 = 2 * g1;\n b2 = -g2;\n left_corner = (a0 + a1) / (1 - b1 - b2);\n right_corner = (a2 + a3) / (1 - b1 - b2);\n\n // Attempt to force type to FP32.\n return new Float32Array([ a0, a1, a2, a3, b1, b2, left_corner, right_corner ]);\n}\n\nfunction convolveMono16(src, out, line, coeff, width, height) {\n // takes src image and writes the blurred and transposed result into out\n\n var prev_src, curr_src, curr_out, prev_out, prev_prev_out;\n var src_index, out_index, line_index;\n var i, j;\n var coeff_a0, coeff_a1, coeff_b1, coeff_b2;\n\n for (i = 0; i < height; i++) {\n src_index = i * width;\n out_index = i;\n line_index = 0;\n\n // left to right\n prev_src = src[src_index];\n prev_prev_out = prev_src * coeff[6];\n prev_out = prev_prev_out;\n\n coeff_a0 = coeff[0];\n coeff_a1 = coeff[1];\n coeff_b1 = coeff[4];\n coeff_b2 = coeff[5];\n\n for (j = 0; j < width; j++) {\n curr_src = src[src_index];\n\n curr_out = curr_src * coeff_a0 +\n prev_src * coeff_a1 +\n prev_out * coeff_b1 +\n prev_prev_out * coeff_b2;\n\n prev_prev_out = prev_out;\n prev_out = curr_out;\n prev_src = curr_src;\n\n line[line_index] = prev_out;\n line_index++;\n src_index++;\n }\n\n src_index--;\n line_index--;\n out_index += height * (width - 1);\n\n // right to left\n prev_src = src[src_index];\n prev_prev_out = prev_src * coeff[7];\n prev_out = prev_prev_out;\n curr_src = prev_src;\n\n coeff_a0 = coeff[2];\n coeff_a1 = coeff[3];\n\n for (j = width - 1; j >= 0; j--) {\n curr_out = curr_src * coeff_a0 +\n prev_src * coeff_a1 +\n prev_out * coeff_b1 +\n prev_prev_out * coeff_b2;\n\n prev_prev_out = prev_out;\n prev_out = curr_out;\n\n prev_src = curr_src;\n curr_src = src[src_index];\n\n out[out_index] = line[line_index] + prev_out;\n\n src_index--;\n line_index--;\n out_index -= height;\n }\n }\n}\n\n\nfunction blurMono16(src, width, height, radius) {\n // Quick exit on zero radius\n if (!radius) { return; }\n\n var out = new Uint16Array(src.length),\n tmp_line = new Float32Array(Math.max(width, height));\n\n var coeff = gaussCoef(radius);\n\n convolveMono16(src, out, tmp_line, coeff, width, height);\n convolveMono16(out, src, tmp_line, coeff, height, width);\n}\n\nmodule.exports = blurMono16;\n\n},{}],19:[function(_dereq_,module,exports){\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n\n},{}],20:[function(_dereq_,module,exports){\n\n\nvar assign = _dereq_('object-assign');\nvar base64decode = _dereq_('./lib/base64decode');\nvar hasWebAssembly = _dereq_('./lib/wa_detect');\n\n\nvar DEFAULT_OPTIONS = {\n js: true,\n wasm: true\n};\n\n\nfunction MultiMath(options) {\n if (!(this instanceof MultiMath)) return new MultiMath(options);\n\n var opts = assign({}, DEFAULT_OPTIONS, options || {});\n\n this.options = opts;\n\n this.__cache = {};\n\n this.__init_promise = null;\n this.__modules = opts.modules || {};\n this.__memory = null;\n this.__wasm = {};\n\n this.__isLE = ((new Uint32Array((new Uint8Array([ 1, 0, 0, 0 ])).buffer))[0] === 1);\n\n if (!this.options.js && !this.options.wasm) {\n throw new Error('mathlib: at least \"js\" or \"wasm\" should be enabled');\n }\n}\n\n\nMultiMath.prototype.has_wasm = hasWebAssembly;\n\n\nMultiMath.prototype.use = function (module) {\n this.__modules[module.name] = module;\n\n // Pin the best possible implementation\n if (this.options.wasm && this.has_wasm() && module.wasm_fn) {\n this[module.name] = module.wasm_fn;\n } else {\n this[module.name] = module.fn;\n }\n\n return this;\n};\n\n\nMultiMath.prototype.init = function () {\n if (this.__init_promise) return this.__init_promise;\n\n if (!this.options.js && this.options.wasm && !this.has_wasm()) {\n return Promise.reject(new Error('mathlib: only \"wasm\" was enabled, but it\\'s not supported'));\n }\n\n var self = this;\n\n this.__init_promise = Promise.all(Object.keys(self.__modules).map(function (name) {\n var module = self.__modules[name];\n\n if (!self.options.wasm || !self.has_wasm() || !module.wasm_fn) return null;\n\n // If already compiled - exit\n if (self.__wasm[name]) return null;\n\n // Compile wasm source\n return WebAssembly.compile(self.__base64decode(module.wasm_src))\n .then(function (m) { self.__wasm[name] = m; });\n }))\n .then(function () { return self; });\n\n return this.__init_promise;\n};\n\n\n////////////////////////////////////////////////////////////////////////////////\n// Methods below are for internal use from plugins\n\n\n// Simple decode base64 to typed array. Useful to load embedded webassembly\n// code. You probably don't need to call this method directly.\n//\nMultiMath.prototype.__base64decode = base64decode;\n\n\n// Increase current memory to include specified number of bytes. Do nothing if\n// size is already ok. You probably don't need to call this method directly,\n// because it will be invoked from `.__instance()`.\n//\nMultiMath.prototype.__reallocate = function mem_grow_to(bytes) {\n if (!this.__memory) {\n this.__memory = new WebAssembly.Memory({\n initial: Math.ceil(bytes / (64 * 1024))\n });\n return this.__memory;\n }\n\n var mem_size = this.__memory.buffer.byteLength;\n\n if (mem_size < bytes) {\n this.__memory.grow(Math.ceil((bytes - mem_size) / (64 * 1024)));\n }\n\n return this.__memory;\n};\n\n\n// Returns instantinated webassembly item by name, with specified memory size\n// and environment.\n// - use cache if available\n// - do sync module init, if async init was not called earlier\n// - allocate memory if not enougth\n// - can export functions to webassembly via \"env_extra\",\n// for example, { exp: Math.exp }\n//\nMultiMath.prototype.__instance = function instance(name, memsize, env_extra) {\n if (memsize) this.__reallocate(memsize);\n\n // If .init() was not called, do sync compile\n if (!this.__wasm[name]) {\n var module = this.__modules[name];\n this.__wasm[name] = new WebAssembly.Module(this.__base64decode(module.wasm_src));\n }\n\n if (!this.__cache[name]) {\n var env_base = {\n memoryBase: 0,\n memory: this.__memory,\n tableBase: 0,\n table: new WebAssembly.Table({ initial: 0, element: 'anyfunc' })\n };\n\n this.__cache[name] = new WebAssembly.Instance(this.__wasm[name], {\n env: assign(env_base, env_extra || {})\n });\n }\n\n return this.__cache[name];\n};\n\n\n// Helper to calculate memory aligh for pointers. Webassembly does not require\n// this, but you may wish to experiment. Default base = 8;\n//\nMultiMath.prototype.__align = function align(number, base) {\n base = base || 8;\n var reminder = number % base;\n return number + (reminder ? base - reminder : 0);\n};\n\n\nmodule.exports = MultiMath;\n\n},{\"./lib/base64decode\":21,\"./lib/wa_detect\":22,\"object-assign\":23}],21:[function(_dereq_,module,exports){\n\n\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n\nmodule.exports = function base64decode(str) {\n var input = str.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length;\n\n var out = new Uint8Array((max * 3) >> 2);\n\n // Collect by 6*4 bits (3 bytes)\n\n var bits = 0;\n var ptr = 0;\n\n for (var idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n out[ptr++] = (bits >> 16) & 0xFF;\n out[ptr++] = (bits >> 8) & 0xFF;\n out[ptr++] = bits & 0xFF;\n }\n\n bits = (bits << 6) | BASE64_MAP.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n var tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n out[ptr++] = (bits >> 16) & 0xFF;\n out[ptr++] = (bits >> 8) & 0xFF;\n out[ptr++] = bits & 0xFF;\n } else if (tailbits === 18) {\n out[ptr++] = (bits >> 10) & 0xFF;\n out[ptr++] = (bits >> 2) & 0xFF;\n } else if (tailbits === 12) {\n out[ptr++] = (bits >> 4) & 0xFF;\n }\n\n return out;\n};\n\n},{}],22:[function(_dereq_,module,exports){\n\n\nvar wa;\n\n\nmodule.exports = function hasWebAssembly() {\n // use cache if called before;\n if (typeof wa !== 'undefined') return wa;\n\n wa = false;\n\n if (typeof WebAssembly === 'undefined') return wa;\n\n // If WebAssenbly is disabled, code can throw on compile\n try {\n // https://github.com/brion/min-wasm-fail/blob/master/min-wasm-fail.in.js\n // Additional check that WA internals are correct\n\n /* eslint-disable comma-spacing, max-len */\n var bin = new Uint8Array([ 0,97,115,109,1,0,0,0,1,6,1,96,1,127,1,127,3,2,1,0,5,3,1,0,1,7,8,1,4,116,101,115,116,0,0,10,16,1,14,0,32,0,65,1,54,2,0,32,0,40,2,0,11 ]);\n var module = new WebAssembly.Module(bin);\n var instance = new WebAssembly.Instance(module, {});\n\n // test storing to and loading from a non-zero location via a parameter.\n // Safari on iOS 11.2.5 returns 0 unexpectedly at non-zero locations\n if (instance.exports.test(4) !== 0) wa = true;\n\n return wa;\n } catch (__) {}\n\n return wa;\n};\n\n},{}],23:[function(_dereq_,module,exports){\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n},{}],24:[function(_dereq_,module,exports){\nvar bundleFn = arguments[3];\nvar sources = arguments[4];\nvar cache = arguments[5];\n\nvar stringify = JSON.stringify;\n\nmodule.exports = function (fn, options) {\n var wkey;\n var cacheKeys = Object.keys(cache);\n\n for (var i = 0, l = cacheKeys.length; i < l; i++) {\n var key = cacheKeys[i];\n var exp = cache[key].exports;\n // Using babel as a transpiler to use esmodule, the export will always\n // be an object with the default export as a property of it. To ensure\n // the existing api and babel esmodule exports are both supported we\n // check for both\n if (exp === fn || exp && exp.default === fn) {\n wkey = key;\n break;\n }\n }\n\n if (!wkey) {\n wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);\n var wcache = {};\n for (var i = 0, l = cacheKeys.length; i < l; i++) {\n var key = cacheKeys[i];\n wcache[key] = key;\n }\n sources[wkey] = [\n 'function(require,module,exports){' + fn + '(self); }',\n wcache\n ];\n }\n var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);\n\n var scache = {}; scache[wkey] = wkey;\n sources[skey] = [\n 'function(require,module,exports){' +\n // try to call default if defined to also support babel esmodule exports\n 'var f = require(' + stringify(wkey) + ');' +\n '(f.default ? f.default : f)(self);' +\n '}',\n scache\n ];\n\n var workerSources = {};\n resolveSources(skey);\n\n function resolveSources(key) {\n workerSources[key] = true;\n\n for (var depPath in sources[key][1]) {\n var depKey = sources[key][1][depPath];\n if (!workerSources[depKey]) {\n resolveSources(depKey);\n }\n }\n }\n\n var src = '(' + bundleFn + ')({'\n + Object.keys(workerSources).map(function (key) {\n return stringify(key) + ':['\n + sources[key][0]\n + ',' + stringify(sources[key][1]) + ']'\n ;\n }).join(',')\n + '},{},[' + stringify(skey) + '])'\n ;\n\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n\n var blob = new Blob([src], { type: 'text/javascript' });\n if (options && options.bare) { return blob; }\n var workerUrl = URL.createObjectURL(blob);\n var worker = new Worker(workerUrl);\n worker.objectURL = workerUrl;\n return worker;\n};\n\n},{}],\"/index.js\":[function(_dereq_,module,exports){\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nvar assign = _dereq_('object-assign');\n\nvar webworkify = _dereq_('webworkify');\n\nvar MathLib = _dereq_('./lib/mathlib');\n\nvar Pool = _dereq_('./lib/pool');\n\nvar utils = _dereq_('./lib/utils');\n\nvar worker = _dereq_('./lib/worker');\n\nvar createStages = _dereq_('./lib/stepper');\n\nvar createRegions = _dereq_('./lib/tiler'); // Deduplicate pools & limiters with the same configs\n// when user creates multiple pica instances.\n\n\nvar singletones = {};\nvar NEED_SAFARI_FIX = false;\n\ntry {\n if (typeof navigator !== 'undefined' && navigator.userAgent) {\n NEED_SAFARI_FIX = navigator.userAgent.indexOf('Safari') >= 0;\n }\n} catch (e) {}\n\nvar concurrency = 1;\n\nif (typeof navigator !== 'undefined') {\n concurrency = Math.min(navigator.hardwareConcurrency || 1, 4);\n}\n\nvar DEFAULT_PICA_OPTS = {\n tile: 1024,\n concurrency: concurrency,\n features: ['js', 'wasm', 'ww'],\n idle: 2000,\n createCanvas: function createCanvas(width, height) {\n var tmpCanvas = document.createElement('canvas');\n tmpCanvas.width = width;\n tmpCanvas.height = height;\n return tmpCanvas;\n }\n};\nvar DEFAULT_RESIZE_OPTS = {\n quality: 3,\n alpha: false,\n unsharpAmount: 0,\n unsharpRadius: 0.0,\n unsharpThreshold: 0\n};\nvar CAN_NEW_IMAGE_DATA = false;\nvar CAN_CREATE_IMAGE_BITMAP = false;\nvar CAN_USE_CANVAS_GET_IMAGE_DATA = false;\nvar CAN_USE_OFFSCREEN_CANVAS = false;\nvar CAN_USE_CIB_REGION_FOR_IMAGE = false;\n\nfunction workerFabric() {\n return {\n value: webworkify(worker),\n destroy: function destroy() {\n this.value.terminate();\n\n if (typeof window !== 'undefined') {\n var url = window.URL || window.webkitURL || window.mozURL || window.msURL;\n\n if (url && url.revokeObjectURL && this.value.objectURL) {\n url.revokeObjectURL(this.value.objectURL);\n }\n }\n }\n };\n} ////////////////////////////////////////////////////////////////////////////////\n// API methods\n\n\nfunction Pica(options) {\n if (!(this instanceof Pica)) return new Pica(options);\n this.options = assign({}, DEFAULT_PICA_OPTS, options || {});\n var limiter_key = \"lk_\".concat(this.options.concurrency); // Share limiters to avoid multiple parallel workers when user creates\n // multiple pica instances.\n\n this.__limit = singletones[limiter_key] || utils.limiter(this.options.concurrency);\n if (!singletones[limiter_key]) singletones[limiter_key] = this.__limit; // List of supported features, according to options & browser/node.js\n\n this.features = {\n js: false,\n // pure JS implementation, can be disabled for testing\n wasm: false,\n // webassembly implementation for heavy functions\n cib: false,\n // resize via createImageBitmap (only FF at this moment)\n ww: false // webworkers\n\n };\n this.__workersPool = null; // Store requested features for webworkers\n\n this.__requested_features = [];\n this.__mathlib = null;\n}\n\nPica.prototype.init = function () {\n var _this = this;\n\n if (this.__initPromise) return this.__initPromise; // Test if we can create ImageData without canvas and memory copy\n\n if (typeof ImageData !== 'undefined' && typeof Uint8ClampedArray !== 'undefined') {\n try {\n /* eslint-disable no-new */\n new ImageData(new Uint8ClampedArray(400), 10, 10);\n CAN_NEW_IMAGE_DATA = true;\n } catch (__) {}\n } // ImageBitmap can be effective in 2 places:\n //\n // 1. Threaded jpeg unpack (basic)\n // 2. Built-in resize (blocked due problem in chrome, see issue #89)\n //\n // For basic use we also need ImageBitmap wo support .close() method,\n // see https://developer.mozilla.org/ru/docs/Web/API/ImageBitmap\n\n\n if (typeof ImageBitmap !== 'undefined') {\n if (ImageBitmap.prototype && ImageBitmap.prototype.close) {\n CAN_CREATE_IMAGE_BITMAP = true;\n } else {\n this.debug('ImageBitmap does not support .close(), disabled');\n }\n }\n\n var features = this.options.features.slice();\n\n if (features.indexOf('all') >= 0) {\n features = ['cib', 'wasm', 'js', 'ww'];\n }\n\n this.__requested_features = features;\n this.__mathlib = new MathLib(features); // Check WebWorker support if requested\n\n if (features.indexOf('ww') >= 0) {\n if (typeof window !== 'undefined' && 'Worker' in window) {\n // IE <= 11 don't allow to create webworkers from string. We should check it.\n // https://connect.microsoft.com/IE/feedback/details/801810/web-workers-from-blob-urls-in-ie-10-and-11\n try {\n var wkr = _dereq_('webworkify')(function () {});\n\n wkr.terminate();\n this.features.ww = true; // pool uniqueness depends on pool config + webworker config\n\n var wpool_key = \"wp_\".concat(JSON.stringify(this.options));\n\n if (singletones[wpool_key]) {\n this.__workersPool = singletones[wpool_key];\n } else {\n this.__workersPool = new Pool(workerFabric, this.options.idle);\n singletones[wpool_key] = this.__workersPool;\n }\n } catch (__) {}\n }\n }\n\n var initMath = this.__mathlib.init().then(function (mathlib) {\n // Copy detected features\n assign(_this.features, mathlib.features);\n });\n\n var checkCibResize;\n\n if (!CAN_CREATE_IMAGE_BITMAP) {\n checkCibResize = Promise.resolve(false);\n } else {\n checkCibResize = utils.cib_support(this.options.createCanvas).then(function (status) {\n if (_this.features.cib && features.indexOf('cib') < 0) {\n _this.debug('createImageBitmap() resize supported, but disabled by config');\n\n return;\n }\n\n if (features.indexOf('cib') >= 0) _this.features.cib = status;\n });\n }\n\n CAN_USE_CANVAS_GET_IMAGE_DATA = utils.can_use_canvas(this.options.createCanvas);\n var checkOffscreenCanvas;\n\n if (CAN_CREATE_IMAGE_BITMAP && CAN_NEW_IMAGE_DATA && features.indexOf('ww') !== -1) {\n checkOffscreenCanvas = utils.worker_offscreen_canvas_support();\n } else {\n checkOffscreenCanvas = Promise.resolve(false);\n }\n\n checkOffscreenCanvas = checkOffscreenCanvas.then(function (result) {\n CAN_USE_OFFSCREEN_CANVAS = result;\n }); // we use createImageBitmap to crop image data and pass it to workers,\n // so need to check whether function works correctly;\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1220671\n\n var checkCibRegion = utils.cib_can_use_region().then(function (result) {\n CAN_USE_CIB_REGION_FOR_IMAGE = result;\n }); // Init math lib. That's async because can load some\n\n this.__initPromise = Promise.all([initMath, checkCibResize, checkOffscreenCanvas, checkCibRegion]).then(function () {\n return _this;\n });\n return this.__initPromise;\n}; // Call resizer in webworker or locally, depending on config\n\n\nPica.prototype.__invokeResize = function (tileOpts, opts) {\n var _this2 = this;\n\n // Share cache between calls:\n //\n // - wasm instance\n // - wasm memory object\n //\n opts.__mathCache = opts.__mathCache || {};\n return Promise.resolve().then(function () {\n if (!_this2.features.ww) {\n // not possible to have ImageBitmap here if user disabled WW\n return {\n data: _this2.__mathlib.resizeAndUnsharp(tileOpts, opts.__mathCache)\n };\n }\n\n return new Promise(function (resolve, reject) {\n var w = _this2.__workersPool.acquire();\n\n if (opts.cancelToken) opts.cancelToken[\"catch\"](function (err) {\n return reject(err);\n });\n\n w.value.onmessage = function (ev) {\n w.release();\n if (ev.data.err) reject(ev.data.err);else resolve(ev.data);\n };\n\n var transfer = [];\n if (tileOpts.src) transfer.push(tileOpts.src.buffer);\n if (tileOpts.srcBitmap) transfer.push(tileOpts.srcBitmap);\n w.value.postMessage({\n opts: tileOpts,\n features: _this2.__requested_features,\n preload: {\n wasm_nodule: _this2.__mathlib.__\n }\n }, transfer);\n });\n });\n}; // this function can return promise if createImageBitmap is used\n\n\nPica.prototype.__extractTileData = function (tile, from, opts, stageEnv, extractTo) {\n if (this.features.ww && CAN_USE_OFFSCREEN_CANVAS && ( // createImageBitmap doesn't work for images (Image, ImageBitmap) with Exif orientation in Chrome,\n // can use canvas because canvas doesn't have orientation;\n // see https://bugs.chromium.org/p/chromium/issues/detail?id=1220671\n utils.isCanvas(from) || CAN_USE_CIB_REGION_FOR_IMAGE)) {\n this.debug('Create tile for OffscreenCanvas');\n return createImageBitmap(stageEnv.srcImageBitmap || from, tile.x, tile.y, tile.width, tile.height).then(function (bitmap) {\n extractTo.srcBitmap = bitmap;\n return extractTo;\n });\n } // Extract tile RGBA buffer, depending on input type\n\n\n if (utils.isCanvas(from)) {\n if (!stageEnv.srcCtx) stageEnv.srcCtx = from.getContext('2d', {\n alpha: Boolean(opts.alpha)\n }); // If input is Canvas - extract region data directly\n\n this.debug('Get tile pixel data');\n extractTo.src = stageEnv.srcCtx.getImageData(tile.x, tile.y, tile.width, tile.height).data;\n return extractTo;\n } // If input is Image or decoded to ImageBitmap,\n // draw region to temporary canvas and extract data from it\n //\n // Note! Attempt to reuse this canvas causes significant slowdown in chrome\n //\n\n\n this.debug('Draw tile imageBitmap/image to temporary canvas');\n var tmpCanvas = this.options.createCanvas(tile.width, tile.height);\n var tmpCtx = tmpCanvas.getContext('2d', {\n alpha: Boolean(opts.alpha)\n });\n tmpCtx.globalCompositeOperation = 'copy';\n tmpCtx.drawImage(stageEnv.srcImageBitmap || from, tile.x, tile.y, tile.width, tile.height, 0, 0, tile.width, tile.height);\n this.debug('Get tile pixel data');\n extractTo.src = tmpCtx.getImageData(0, 0, tile.width, tile.height).data; // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n\n tmpCanvas.width = tmpCanvas.height = 0;\n return extractTo;\n};\n\nPica.prototype.__landTileData = function (tile, result, stageEnv) {\n var toImageData;\n this.debug('Convert raw rgba tile result to ImageData');\n\n if (result.bitmap) {\n stageEnv.toCtx.drawImage(result.bitmap, tile.toX, tile.toY);\n return null;\n }\n\n if (CAN_NEW_IMAGE_DATA) {\n // this branch is for modern browsers\n // If `new ImageData()` & Uint8ClampedArray suported\n toImageData = new ImageData(new Uint8ClampedArray(result.data), tile.toWidth, tile.toHeight);\n } else {\n // fallback for `node-canvas` and old browsers\n // (IE11 has ImageData but does not support `new ImageData()`)\n toImageData = stageEnv.toCtx.createImageData(tile.toWidth, tile.toHeight);\n\n if (toImageData.data.set) {\n toImageData.data.set(result.data);\n } else {\n // IE9 don't have `.set()`\n for (var i = toImageData.data.length - 1; i >= 0; i--) {\n toImageData.data[i] = result.data[i];\n }\n }\n }\n\n this.debug('Draw tile');\n\n if (NEED_SAFARI_FIX) {\n // Safari draws thin white stripes between tiles without this fix\n stageEnv.toCtx.putImageData(toImageData, tile.toX, tile.toY, tile.toInnerX - tile.toX, tile.toInnerY - tile.toY, tile.toInnerWidth + 1e-5, tile.toInnerHeight + 1e-5);\n } else {\n stageEnv.toCtx.putImageData(toImageData, tile.toX, tile.toY, tile.toInnerX - tile.toX, tile.toInnerY - tile.toY, tile.toInnerWidth, tile.toInnerHeight);\n }\n\n return null;\n};\n\nPica.prototype.__tileAndResize = function (from, to, opts) {\n var _this3 = this;\n\n var stageEnv = {\n srcCtx: null,\n srcImageBitmap: null,\n isImageBitmapReused: false,\n toCtx: null\n };\n\n var processTile = function processTile(tile) {\n return _this3.__limit(function () {\n if (opts.canceled) return opts.cancelToken;\n var tileOpts = {\n width: tile.width,\n height: tile.height,\n toWidth: tile.toWidth,\n toHeight: tile.toHeight,\n scaleX: tile.scaleX,\n scaleY: tile.scaleY,\n offsetX: tile.offsetX,\n offsetY: tile.offsetY,\n quality: opts.quality,\n alpha: opts.alpha,\n unsharpAmount: opts.unsharpAmount,\n unsharpRadius: opts.unsharpRadius,\n unsharpThreshold: opts.unsharpThreshold\n };\n\n _this3.debug('Invoke resize math');\n\n return Promise.resolve(tileOpts).then(function (tileOpts) {\n return _this3.__extractTileData(tile, from, opts, stageEnv, tileOpts);\n }).then(function (tileOpts) {\n _this3.debug('Invoke resize math');\n\n return _this3.__invokeResize(tileOpts, opts);\n }).then(function (result) {\n if (opts.canceled) return opts.cancelToken;\n stageEnv.srcImageData = null;\n return _this3.__landTileData(tile, result, stageEnv);\n });\n });\n }; // Need to normalize data source first. It can be canvas or image.\n // If image - try to decode in background if possible\n\n\n return Promise.resolve().then(function () {\n stageEnv.toCtx = to.getContext('2d', {\n alpha: Boolean(opts.alpha)\n });\n if (utils.isCanvas(from)) return null;\n\n if (utils.isImageBitmap(from)) {\n stageEnv.srcImageBitmap = from;\n stageEnv.isImageBitmapReused = true;\n return null;\n }\n\n if (utils.isImage(from)) {\n // try do decode image in background for faster next operations;\n // if we're using offscreen canvas, cib is called per tile, so not needed here\n if (!CAN_CREATE_IMAGE_BITMAP) return null;\n\n _this3.debug('Decode image via createImageBitmap');\n\n return createImageBitmap(from).then(function (imageBitmap) {\n stageEnv.srcImageBitmap = imageBitmap;\n }) // Suppress error to use fallback, if method fails\n // https://github.com/nodeca/pica/issues/190\n\n /* eslint-disable no-unused-vars */\n [\"catch\"](function (e) {\n return null;\n });\n }\n\n throw new Error('Pica: \".from\" should be Image, Canvas or ImageBitmap');\n }).then(function () {\n if (opts.canceled) return opts.cancelToken;\n\n _this3.debug('Calculate tiles'); //\n // Here we are with \"normalized\" source,\n // follow to tiling\n //\n\n\n var regions = createRegions({\n width: opts.width,\n height: opts.height,\n srcTileSize: _this3.options.tile,\n toWidth: opts.toWidth,\n toHeight: opts.toHeight,\n destTileBorder: opts.__destTileBorder\n });\n var jobs = regions.map(function (tile) {\n return processTile(tile);\n });\n\n function cleanup(stageEnv) {\n if (stageEnv.srcImageBitmap) {\n if (!stageEnv.isImageBitmapReused) stageEnv.srcImageBitmap.close();\n stageEnv.srcImageBitmap = null;\n }\n }\n\n _this3.debug('Process tiles');\n\n return Promise.all(jobs).then(function () {\n _this3.debug('Finished!');\n\n cleanup(stageEnv);\n return to;\n }, function (err) {\n cleanup(stageEnv);\n throw err;\n });\n });\n};\n\nPica.prototype.__processStages = function (stages, from, to, opts) {\n var _this4 = this;\n\n if (opts.canceled) return opts.cancelToken;\n\n var _stages$shift = stages.shift(),\n _stages$shift2 = _slicedToArray(_stages$shift, 2),\n toWidth = _stages$shift2[0],\n toHeight = _stages$shift2[1];\n\n var isLastStage = stages.length === 0;\n opts = assign({}, opts, {\n toWidth: toWidth,\n toHeight: toHeight,\n // only use user-defined quality for the last stage,\n // use simpler (Hamming) filter for the first stages where\n // scale factor is large enough (more than 2-3)\n quality: isLastStage ? opts.quality : Math.min(1, opts.quality)\n });\n var tmpCanvas;\n\n if (!isLastStage) {\n // create temporary canvas\n tmpCanvas = this.options.createCanvas(toWidth, toHeight);\n }\n\n return this.__tileAndResize(from, isLastStage ? to : tmpCanvas, opts).then(function () {\n if (isLastStage) return to;\n opts.width = toWidth;\n opts.height = toHeight;\n return _this4.__processStages(stages, tmpCanvas, to, opts);\n }).then(function (res) {\n if (tmpCanvas) {\n // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n tmpCanvas.width = tmpCanvas.height = 0;\n }\n\n return res;\n });\n};\n\nPica.prototype.__resizeViaCreateImageBitmap = function (from, to, opts) {\n var _this5 = this;\n\n var toCtx = to.getContext('2d', {\n alpha: Boolean(opts.alpha)\n });\n this.debug('Resize via createImageBitmap()');\n return createImageBitmap(from, {\n resizeWidth: opts.toWidth,\n resizeHeight: opts.toHeight,\n resizeQuality: utils.cib_quality_name(opts.quality)\n }).then(function (imageBitmap) {\n if (opts.canceled) return opts.cancelToken; // if no unsharp - draw directly to output canvas\n\n if (!opts.unsharpAmount) {\n toCtx.drawImage(imageBitmap, 0, 0);\n imageBitmap.close();\n toCtx = null;\n\n _this5.debug('Finished!');\n\n return to;\n }\n\n _this5.debug('Unsharp result');\n\n var tmpCanvas = _this5.options.createCanvas(opts.toWidth, opts.toHeight);\n\n var tmpCtx = tmpCanvas.getContext('2d', {\n alpha: Boolean(opts.alpha)\n });\n tmpCtx.drawImage(imageBitmap, 0, 0);\n imageBitmap.close();\n var iData = tmpCtx.getImageData(0, 0, opts.toWidth, opts.toHeight);\n\n _this5.__mathlib.unsharp_mask(iData.data, opts.toWidth, opts.toHeight, opts.unsharpAmount, opts.unsharpRadius, opts.unsharpThreshold);\n\n toCtx.putImageData(iData, 0, 0); // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n\n tmpCanvas.width = tmpCanvas.height = 0;\n iData = tmpCtx = tmpCanvas = toCtx = null;\n\n _this5.debug('Finished!');\n\n return to;\n });\n};\n\nPica.prototype.resize = function (from, to, options) {\n var _this6 = this;\n\n this.debug('Start resize...');\n var opts = assign({}, DEFAULT_RESIZE_OPTS);\n\n if (!isNaN(options)) {\n opts = assign(opts, {\n quality: options\n });\n } else if (options) {\n opts = assign(opts, options);\n }\n\n opts.toWidth = to.width;\n opts.toHeight = to.height;\n opts.width = from.naturalWidth || from.width;\n opts.height = from.naturalHeight || from.height; // Prevent stepper from infinite loop\n\n if (to.width === 0 || to.height === 0) {\n return Promise.reject(new Error(\"Invalid output size: \".concat(to.width, \"x\").concat(to.height)));\n }\n\n if (opts.unsharpRadius > 2) opts.unsharpRadius = 2;\n opts.canceled = false;\n\n if (opts.cancelToken) {\n // Wrap cancelToken to avoid successive resolve & set flag\n opts.cancelToken = opts.cancelToken.then(function (data) {\n opts.canceled = true;\n throw data;\n }, function (err) {\n opts.canceled = true;\n throw err;\n });\n }\n\n var DEST_TILE_BORDER = 3; // Max possible filter window size\n\n opts.__destTileBorder = Math.ceil(Math.max(DEST_TILE_BORDER, 2.5 * opts.unsharpRadius | 0));\n return this.init().then(function () {\n if (opts.canceled) return opts.cancelToken; // if createImageBitmap supports resize, just do it and return\n\n if (_this6.features.cib) {\n return _this6.__resizeViaCreateImageBitmap(from, to, opts);\n }\n\n if (!CAN_USE_CANVAS_GET_IMAGE_DATA) {\n var err = new Error('Pica: cannot use getImageData on canvas, ' + \"make sure fingerprinting protection isn't enabled\");\n err.code = 'ERR_GET_IMAGE_DATA';\n throw err;\n } //\n // No easy way, let's resize manually via arrays\n //\n\n\n var stages = createStages(opts.width, opts.height, opts.toWidth, opts.toHeight, _this6.options.tile, opts.__destTileBorder);\n return _this6.__processStages(stages, from, to, opts);\n });\n}; // RGBA buffer resize\n//\n\n\nPica.prototype.resizeBuffer = function (options) {\n var _this7 = this;\n\n var opts = assign({}, DEFAULT_RESIZE_OPTS, options);\n return this.init().then(function () {\n return _this7.__mathlib.resizeAndUnsharp(opts);\n });\n};\n\nPica.prototype.toBlob = function (canvas, mimeType, quality) {\n mimeType = mimeType || 'image/png';\n return new Promise(function (resolve) {\n if (canvas.toBlob) {\n canvas.toBlob(function (blob) {\n return resolve(blob);\n }, mimeType, quality);\n return;\n }\n\n if (canvas.convertToBlob) {\n resolve(canvas.convertToBlob({\n type: mimeType,\n quality: quality\n }));\n return;\n } // Fallback for old browsers\n\n\n var asString = atob(canvas.toDataURL(mimeType, quality).split(',')[1]);\n var len = asString.length;\n var asBuffer = new Uint8Array(len);\n\n for (var i = 0; i < len; i++) {\n asBuffer[i] = asString.charCodeAt(i);\n }\n\n resolve(new Blob([asBuffer], {\n type: mimeType\n }));\n });\n};\n\nPica.prototype.debug = function () {};\n\nmodule.exports = Pica;\n\n},{\"./lib/mathlib\":1,\"./lib/pool\":13,\"./lib/stepper\":14,\"./lib/tiler\":15,\"./lib/utils\":16,\"./lib/worker\":17,\"object-assign\":23,\"webworkify\":24}]},{},[])(\"/index.js\")\n});\n});\n\nvar image_traverse = createCommonjsModule(function (module) {\n\n//////////////////////////////////////////////////////////////////////////\n// Helpers\n//\nfunction error(message, code) {\n var err = new Error(message);\n err.code = code;\n return err;\n}\n\n\n// Convert number to 0xHH string\n//\nfunction to_hex(number) {\n var n = number.toString(16).toUpperCase();\n for (var i = 2 - n.length; i > 0; i--) n = '0' + n;\n return '0x' + n;\n}\n\n\nfunction utf8_encode(str) {\n try {\n return unescape(encodeURIComponent(str));\n } catch (_) {\n return str;\n }\n}\n\n\nfunction utf8_decode(str) {\n try {\n return decodeURIComponent(escape(str));\n } catch (_) {\n return str;\n }\n}\n\n\n// Check if input is a Uint8Array\n//\nfunction is_uint8array(bin) {\n return Object.prototype.toString.call(bin) === '[object Uint8Array]';\n}\n\n\n//////////////////////////////////////////////////////////////////////////\n// Exif parser\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - exif_start: Number - start of TIFF header (after Exif\\0\\0)\n// - exif_end: Number - end of Exif segment\n// - on_entry: Number - callback\n//\nfunction ExifParser(jpeg_bin, exif_start, exif_end) {\n // Uint8Array, exif without signature (which isn't included in offsets)\n this.input = jpeg_bin.subarray(exif_start, exif_end);\n\n // offset correction for `on_entry` callback\n this.start = exif_start;\n\n // Check TIFF header (includes byte alignment and first IFD offset)\n var sig = String.fromCharCode.apply(null, this.input.subarray(0, 4));\n\n if (sig !== 'II\\x2A\\0' && sig !== 'MM\\0\\x2A') {\n throw error('invalid TIFF signature', 'EBADDATA');\n }\n\n // true if motorola (big endian) byte alignment, false if intel\n this.big_endian = sig[0] === 'M';\n}\n\n\nExifParser.prototype.each = function (on_entry) {\n // allow premature exit\n this.aborted = false;\n\n var offset = this.read_uint32(4);\n\n this.ifds_to_read = [ {\n id: 0,\n offset: offset\n } ];\n\n while (this.ifds_to_read.length > 0 && !this.aborted) {\n var i = this.ifds_to_read.shift();\n if (!i.offset) continue;\n this.scan_ifd(i.id, i.offset, on_entry);\n }\n};\n\n\nExifParser.prototype.filter = function (on_entry) {\n var ifds = {};\n\n // make sure IFD0 always exists\n ifds.ifd0 = { id: 0, entries: [] };\n\n this.each(function (entry) {\n if (on_entry(entry) === false && !entry.is_subifd_link) return;\n if (entry.is_subifd_link && entry.count !== 1 && entry.format !== 4) return; // filter out bogus links\n\n if (!ifds['ifd' + entry.ifd]) {\n ifds['ifd' + entry.ifd] = { id: entry.ifd, entries: [] };\n }\n\n ifds['ifd' + entry.ifd].entries.push(entry);\n });\n\n // thumbnails are not supported just yet, so delete all information related to it\n delete ifds.ifd1;\n\n // Calculate output size\n var length = 8;\n Object.keys(ifds).forEach(function (ifd_no) {\n length += 2;\n\n ifds[ifd_no].entries.forEach(function (entry) {\n length += 12 + (entry.data_length > 4 ? Math.ceil(entry.data_length / 2) * 2 : 0);\n });\n\n length += 4;\n });\n\n this.output = new Uint8Array(length);\n this.output[0] = this.output[1] = (this.big_endian ? 'M' : 'I').charCodeAt(0);\n this.write_uint16(2, 0x2A);\n\n var offset = 8;\n var self = this;\n this.write_uint32(4, offset);\n\n Object.keys(ifds).forEach(function (ifd_no) {\n ifds[ifd_no].written_offset = offset;\n\n var ifd_start = offset;\n var ifd_end = ifd_start + 2 + ifds[ifd_no].entries.length * 12 + 4;\n offset = ifd_end;\n\n self.write_uint16(ifd_start, ifds[ifd_no].entries.length);\n\n ifds[ifd_no].entries.sort(function (a, b) {\n // IFD entries must be in order of increasing tag IDs\n return a.tag - b.tag;\n }).forEach(function (entry, idx) {\n var entry_offset = ifd_start + 2 + idx * 12;\n\n self.write_uint16(entry_offset, entry.tag);\n self.write_uint16(entry_offset + 2, entry.format);\n self.write_uint32(entry_offset + 4, entry.count);\n\n if (entry.is_subifd_link) {\n // filled in later\n if (ifds['ifd' + entry.tag]) ifds['ifd' + entry.tag].link_offset = entry_offset + 8;\n } else if (entry.data_length <= 4) {\n self.output.set(\n self.input.subarray(entry.data_offset - self.start, entry.data_offset - self.start + 4),\n entry_offset + 8\n );\n } else {\n self.write_uint32(entry_offset + 8, offset);\n self.output.set(\n self.input.subarray(entry.data_offset - self.start, entry.data_offset - self.start + entry.data_length),\n offset\n );\n offset += Math.ceil(entry.data_length / 2) * 2;\n }\n });\n\n var next_ifd = ifds['ifd' + (ifds[ifd_no].id + 1)];\n if (next_ifd) next_ifd.link_offset = ifd_end - 4;\n });\n\n Object.keys(ifds).forEach(function (ifd_no) {\n if (ifds[ifd_no].written_offset && ifds[ifd_no].link_offset) {\n self.write_uint32(ifds[ifd_no].link_offset, ifds[ifd_no].written_offset);\n }\n });\n\n if (this.output.length !== offset) throw error('internal error: incorrect buffer size allocated');\n\n return this.output;\n};\n\n\nExifParser.prototype.read_uint16 = function (offset) {\n var d = this.input;\n if (offset + 2 > d.length) throw error('unexpected EOF', 'EBADDATA');\n\n return this.big_endian ?\n d[offset] * 0x100 + d[offset + 1] :\n d[offset] + d[offset + 1] * 0x100;\n};\n\n\nExifParser.prototype.read_uint32 = function (offset) {\n var d = this.input;\n if (offset + 4 > d.length) throw error('unexpected EOF', 'EBADDATA');\n\n return this.big_endian ?\n d[offset] * 0x1000000 + d[offset + 1] * 0x10000 + d[offset + 2] * 0x100 + d[offset + 3] :\n d[offset] + d[offset + 1] * 0x100 + d[offset + 2] * 0x10000 + d[offset + 3] * 0x1000000;\n};\n\n\nExifParser.prototype.write_uint16 = function (offset, value) {\n var d = this.output;\n\n if (this.big_endian) {\n d[offset] = (value >>> 8) & 0xFF;\n d[offset + 1] = value & 0xFF;\n } else {\n d[offset] = value & 0xFF;\n d[offset + 1] = (value >>> 8) & 0xFF;\n }\n};\n\n\nExifParser.prototype.write_uint32 = function (offset, value) {\n var d = this.output;\n\n if (this.big_endian) {\n d[offset] = (value >>> 24) & 0xFF;\n d[offset + 1] = (value >>> 16) & 0xFF;\n d[offset + 2] = (value >>> 8) & 0xFF;\n d[offset + 3] = value & 0xFF;\n } else {\n d[offset] = value & 0xFF;\n d[offset + 1] = (value >>> 8) & 0xFF;\n d[offset + 2] = (value >>> 16) & 0xFF;\n d[offset + 3] = (value >>> 24) & 0xFF;\n }\n};\n\n\nExifParser.prototype.is_subifd_link = function (ifd, tag) {\n return (ifd === 0 && tag === 0x8769) || // SubIFD\n (ifd === 0 && tag === 0x8825) || // GPS Info\n (ifd === 0x8769 && tag === 0xA005); // Interop IFD\n};\n\n\n// Returns byte length of a single component of a given format\n//\nExifParser.prototype.exif_format_length = function (format) {\n switch (format) {\n case 1: // byte\n case 2: // ascii\n case 6: // sbyte\n case 7: // undefined\n return 1;\n\n case 3: // short\n case 8: // sshort\n return 2;\n\n case 4: // long\n case 9: // slong\n case 11: // float\n return 4;\n\n case 5: // rational\n case 10: // srational\n case 12: // double\n return 8;\n\n default:\n // unknown type\n return 0;\n }\n};\n\n\n// Reads Exif data\n//\nExifParser.prototype.exif_format_read = function (format, offset) {\n var v;\n\n switch (format) {\n case 1: // byte\n case 2: // ascii\n v = this.input[offset];\n return v;\n\n case 6: // sbyte\n v = this.input[offset];\n return v | (v & 0x80) * 0x1fffffe;\n\n case 3: // short\n v = this.read_uint16(offset);\n return v;\n\n case 8: // sshort\n v = this.read_uint16(offset);\n return v | (v & 0x8000) * 0x1fffe;\n\n case 4: // long\n v = this.read_uint32(offset);\n return v;\n\n case 9: // slong\n v = this.read_uint32(offset);\n return v | 0;\n\n case 5: // rational\n case 10: // srational\n case 11: // float\n case 12: // double\n return null; // not implemented\n\n case 7: // undefined\n return null; // blob\n\n default:\n // unknown type\n return null;\n }\n};\n\n\nExifParser.prototype.scan_ifd = function (ifd_no, offset, on_entry) {\n var entry_count = this.read_uint16(offset);\n\n offset += 2;\n\n for (var i = 0; i < entry_count; i++) {\n var tag = this.read_uint16(offset);\n var format = this.read_uint16(offset + 2);\n var count = this.read_uint32(offset + 4);\n\n var comp_length = this.exif_format_length(format);\n var data_length = count * comp_length;\n var data_offset = data_length <= 4 ? offset + 8 : this.read_uint32(offset + 8);\n var is_subifd_link = false;\n\n if (data_offset + data_length > this.input.length) {\n throw error('unexpected EOF', 'EBADDATA');\n }\n\n var value = [];\n var comp_offset = data_offset;\n\n for (var j = 0; j < count; j++, comp_offset += comp_length) {\n var item = this.exif_format_read(format, comp_offset);\n if (item === null) {\n value = null;\n break;\n }\n value.push(item);\n }\n\n if (Array.isArray(value) && format === 2) {\n try {\n value = utf8_decode(String.fromCharCode.apply(null, value));\n } catch (_) {\n value = null;\n }\n\n if (value && value[value.length - 1] === '\\0') value = value.slice(0, -1);\n }\n\n if (this.is_subifd_link(ifd_no, tag)) {\n if (Array.isArray(value) && Number.isInteger(value[0]) && value[0] > 0) {\n this.ifds_to_read.push({\n id: tag,\n offset: value[0]\n });\n is_subifd_link = true;\n }\n }\n\n var entry = {\n is_big_endian: this.big_endian,\n ifd: ifd_no,\n tag: tag,\n format: format,\n count: count,\n entry_offset: offset + this.start,\n data_length: data_length,\n data_offset: data_offset + this.start,\n value: value,\n is_subifd_link: is_subifd_link\n };\n\n if (on_entry(entry) === false) {\n this.aborted = true;\n return;\n }\n\n offset += 12;\n }\n\n if (ifd_no === 0) {\n this.ifds_to_read.push({\n id: 1,\n offset: this.read_uint32(offset)\n });\n }\n};\n\n\n// Check whether input is a JPEG image\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n//\n// Returns true if it is and false otherwise\n//\nmodule.exports.is_jpeg = function (jpeg_bin) {\n return jpeg_bin.length >= 4 && jpeg_bin[0] === 0xFF && jpeg_bin[1] === 0xD8 && jpeg_bin[2] === 0xFF;\n};\n\n\n// Call an iterator on each segment in the given JPEG image\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - on_segment: Function - callback executed on each JPEG marker segment\n// - segment: Object\n// - code: Number - marker type (2nd byte, e.g. 0xE0 for APP0)\n// - offset: Number - offset of the first byte (0xFF) relative to `jpeg_bin` start\n// - length: Number - length of the entire marker segment including first two bytes and length\n// - 2 for standalone markers\n// - 4+length for markers with data\n//\n// Iteration stops when `EOI` (0xFFD9) marker is reached or if `on_segment`\n// function returns `false`.\n//\nmodule.exports.jpeg_segments_each = function (jpeg_bin, on_segment) {\n if (!is_uint8array(jpeg_bin)) {\n throw error('Invalid argument (jpeg_bin), Uint8Array expected', 'EINVAL');\n }\n\n if (typeof on_segment !== 'function') {\n throw error('Invalid argument (on_segment), Function expected', 'EINVAL');\n }\n\n if (!module.exports.is_jpeg(jpeg_bin)) {\n throw error('Unknown file format', 'ENOTJPEG');\n }\n\n var offset = 0, length = jpeg_bin.length, inside_scan = false;\n\n for (;;) {\n var segment_code, segment_length;\n\n if (offset + 1 >= length) throw error('Unexpected EOF', 'EBADDATA');\n var byte1 = jpeg_bin[offset];\n var byte2 = jpeg_bin[offset + 1];\n\n if (byte1 === 0xFF && byte2 === 0xFF) {\n // padding\n segment_code = 0xFF;\n segment_length = 1;\n\n } else if (byte1 === 0xFF && byte2 !== 0) {\n // marker\n segment_code = byte2;\n segment_length = 2;\n\n if ((0xD0 <= segment_code && segment_code <= 0xD9) || segment_code === 0x01) ; else {\n if (offset + 3 >= length) throw error('Unexpected EOF', 'EBADDATA');\n segment_length += jpeg_bin[offset + 2] * 0x100 + jpeg_bin[offset + 3];\n if (segment_length < 2) throw error('Invalid segment length', 'EBADDATA');\n if (offset + segment_length - 1 >= length) throw error('Unexpected EOF', 'EBADDATA');\n }\n\n if (inside_scan) {\n if (segment_code >= 0xD0 && segment_code <= 0xD7) ; else {\n inside_scan = false;\n }\n }\n\n if (segment_code === 0xDA /* SOS */) inside_scan = true;\n } else if (inside_scan) {\n // entropy-encoded segment\n for (var pos = offset + 1; ; pos++) {\n // scan until we find FF\n if (pos >= length) throw error('Unexpected EOF', 'EBADDATA');\n if (jpeg_bin[pos] === 0xFF) {\n if (pos + 1 >= length) throw error('Unexpected EOF', 'EBADDATA');\n if (jpeg_bin[pos + 1] !== 0) {\n segment_code = 0;\n segment_length = pos - offset;\n break;\n }\n }\n }\n } else {\n throw error('Unexpected byte at segment start: ' + to_hex(byte1) +\n ' (offset ' + to_hex(offset) + ')', 'EBADDATA');\n }\n\n if (on_segment({ code: segment_code, offset: offset, length: segment_length }) === false) break;\n if (segment_code === 0xD9 /* EOI */) break;\n offset += segment_length;\n }\n};\n\n\n// Replace or remove segments in the given JPEG image\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - on_segment: Function - callback executed on each JPEG marker segment\n// - segment: Object\n// - code: Number - marker type (2nd byte, e.g. 0xE0 for APP0)\n// - offset: Number - offset of the first byte (0xFF) relative to `jpeg_bin` start\n// - length: Number - length of the entire marker segment including first two bytes and length\n// - 2 for standalone markers\n// - 4+length for markers with data\n//\n// `on_segment` function should return one of the following:\n// - `false` - segment is removed from the output\n// - Uint8Array - segment is replaced with the new data\n// - [ Uint8Array ] - segment is replaced with the new data\n// - anything else - segment is copied to the output as is\n//\n// Any data after `EOI` (0xFFD9) marker is removed.\n//\nmodule.exports.jpeg_segments_filter = function (jpeg_bin, on_segment) {\n if (!is_uint8array(jpeg_bin)) {\n throw error('Invalid argument (jpeg_bin), Uint8Array expected', 'EINVAL');\n }\n\n if (typeof on_segment !== 'function') {\n throw error('Invalid argument (on_segment), Function expected', 'EINVAL');\n }\n\n var ranges = [];\n var out_length = 0;\n\n module.exports.jpeg_segments_each(jpeg_bin, function (segment) {\n var new_segment = on_segment(segment);\n\n if (is_uint8array(new_segment)) {\n ranges.push({ data: new_segment });\n out_length += new_segment.length;\n } else if (Array.isArray(new_segment)) {\n new_segment.filter(is_uint8array).forEach(function (s) {\n ranges.push({ data: s });\n out_length += s.length;\n });\n } else if (new_segment !== false) {\n var new_range = { start: segment.offset, end: segment.offset + segment.length };\n\n if (ranges.length > 0 && ranges[ranges.length - 1].end === new_range.start) {\n ranges[ranges.length - 1].end = new_range.end;\n } else {\n ranges.push(new_range);\n }\n\n out_length += segment.length;\n }\n });\n\n var result = new Uint8Array(out_length);\n var offset = 0;\n\n ranges.forEach(function (range) {\n var data = range.data || jpeg_bin.subarray(range.start, range.end);\n result.set(data, offset);\n offset += data.length;\n });\n\n return result;\n};\n\n\n// Call an iterator on each Exif entry in the given JPEG image\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - on_entry: Function - callback executed on each Exif entry\n// - entry: Object\n// - is_big_endian: Boolean - whether Exif uses big or little endian byte alignment\n// - ifd: Number - IFD identifier (0 for IFD0, 1 for IFD1, 0x8769 for SubIFD,\n// 0x8825 for GPS Info, 0xA005 for Interop IFD)\n// - tag: Number - exif entry tag (0x0110 - camera name, 0x0112 - orientation, etc. - see Exif spec)\n// - format: Number - exif entry format (1 - byte, 2 - ascii, 3 - short, etc. - see Exif spec)\n// - count: Number - number of components of the given format inside data\n// (usually 1, or string length for ascii format)\n// - entry_offset: Number - start of Exif entry (entry length is always 12, so not included)\n// - data_offset: Number - start of data attached to Exif entry (will overlap with entry if length <= 4)\n// - data_length: Number - length of data attached to Exif entry\n// - value: Array|String|Null - our best attempt at parsing data (not all formats supported right now)\n// - is_subifd_link: Boolean - whether this entry is recognized to be a link to subifd (can't filter these out)\n//\n// Iteration stops early if iterator returns `false`.\n//\n// If Exif wasn't found anywhere (before start of the image data, SOS),\n// iterator is never executed.\n//\nmodule.exports.jpeg_exif_tags_each = function (jpeg_bin, on_exif_entry) {\n if (!is_uint8array(jpeg_bin)) {\n throw error('Invalid argument (jpeg_bin), Uint8Array expected', 'EINVAL');\n }\n\n if (typeof on_exif_entry !== 'function') {\n throw error('Invalid argument (on_exif_entry), Function expected', 'EINVAL');\n }\n\n /* eslint-disable consistent-return */\n module.exports.jpeg_segments_each(jpeg_bin, function (segment) {\n if (segment.code === 0xDA /* SOS */) return false;\n\n // look for APP1 segment and compare header with 'Exif\\0\\0'\n if (segment.code === 0xE1 && segment.length >= 10 &&\n jpeg_bin[segment.offset + 4] === 0x45 && jpeg_bin[segment.offset + 5] === 0x78 &&\n jpeg_bin[segment.offset + 6] === 0x69 && jpeg_bin[segment.offset + 7] === 0x66 &&\n jpeg_bin[segment.offset + 8] === 0x00 && jpeg_bin[segment.offset + 9] === 0x00) {\n\n new ExifParser(jpeg_bin, segment.offset + 10, segment.offset + segment.length).each(on_exif_entry);\n return false;\n }\n });\n};\n\n\n// Remove Exif entries in the given JPEG image\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - on_entry: Function - callback executed on each Exif entry\n// - entry: Object\n// - is_big_endian: Boolean - whether Exif uses big or little endian byte alignment\n// - ifd: Number - IFD identifier (0 for IFD0, 1 for IFD1, 0x8769 for SubIFD,\n// 0x8825 for GPS Info, 0xA005 for Interop IFD)\n// - tag: Number - exif entry tag (0x0110 - camera name, 0x0112 - orientation, etc. - see Exif spec)\n// - format: Number - exif entry format (1 - byte, 2 - ascii, 3 - short, etc. - see Exif spec)\n// - count: Number - number of components of the given format inside data\n// (usually 1, or string length for ascii format)\n// - entry_offset: Number - start of Exif entry (entry length is always 12, so not included)\n// - data_offset: Number - start of data attached to Exif entry (will overlap with entry if length <= 4)\n// - data_length: Number - length of data attached to Exif entry\n// - value: Array|String|Null - our best attempt at parsing data (not all formats supported right now)\n// - is_subifd_link: Boolean - whether this entry is recognized to be a link to subifd (can't filter these out)\n//\n// This function removes following from Exif:\n// - all entries where iterator returned false (except subifd links which are mandatory)\n// - IFD1 and thumbnail image (the purpose of this function is to reduce file size,\n// so thumbnail is usually the first thing to go)\n// - all other data that isn't in IFD0, SubIFD, GPSIFD, InteropIFD\n// (theoretically possible proprietary extensions, I haven't seen any of these yet)\n//\n// Changing data inside Exif entries is NOT supported yet (modifying `entry` object inside callback may break stuff).\n//\n// If Exif wasn't found anywhere (before start of the image data, SOS),\n// iterator is never executed, and original JPEG is returned as is.\n//\nmodule.exports.jpeg_exif_tags_filter = function (jpeg_bin, on_exif_entry) {\n if (!is_uint8array(jpeg_bin)) {\n throw error('Invalid argument (jpeg_bin), Uint8Array expected', 'EINVAL');\n }\n\n if (typeof on_exif_entry !== 'function') {\n throw error('Invalid argument (on_exif_entry), Function expected', 'EINVAL');\n }\n\n var stop_search = false;\n\n return module.exports.jpeg_segments_filter(jpeg_bin, function (segment) {\n if (stop_search) return;\n if (segment.code === 0xDA /* SOS */) stop_search = true;\n\n // look for APP1 segment and compare header with 'Exif\\0\\0'\n if (segment.code === 0xE1 && segment.length >= 10 &&\n jpeg_bin[segment.offset + 4] === 0x45 && jpeg_bin[segment.offset + 5] === 0x78 &&\n jpeg_bin[segment.offset + 6] === 0x69 && jpeg_bin[segment.offset + 7] === 0x66 &&\n jpeg_bin[segment.offset + 8] === 0x00 && jpeg_bin[segment.offset + 9] === 0x00) {\n\n var new_exif = new ExifParser(jpeg_bin, segment.offset + 10, segment.offset + segment.length)\n .filter(on_exif_entry);\n if (!new_exif) return false;\n\n var header = new Uint8Array(10);\n\n header.set(jpeg_bin.slice(segment.offset, segment.offset + 10));\n header[2] = ((new_exif.length + 8) >>> 8) & 0xFF;\n header[3] = (new_exif.length + 8) & 0xFF;\n\n stop_search = true;\n return [ header, new_exif ];\n }\n });\n};\n\n\n// Inserts a custom comment marker segment into JPEG file.\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - comment: String\n//\n// Comment is inserted after first two bytes (FFD8, SOI).\n//\n// If JFIF (APP0) marker exists immediately after SOI (as mandated by the JFIF\n// spec), we insert comment after it instead.\n//\nmodule.exports.jpeg_add_comment = function (jpeg_bin, comment) {\n var comment_inserted = false, segment_count = 0;\n\n return module.exports.jpeg_segments_filter(jpeg_bin, function (segment) {\n segment_count++;\n if (segment_count === 1 && segment.code === 0xD8 /* SOI */) return;\n if (segment_count === 2 && segment.code === 0xE0 /* APP0 */) return;\n\n if (comment_inserted) return;\n comment = utf8_encode(comment);\n\n // comment segment\n var csegment = new Uint8Array(5 + comment.length);\n var offset = 0;\n\n csegment[offset++] = 0xFF;\n csegment[offset++] = 0xFE;\n csegment[offset++] = ((comment.length + 3) >>> 8) & 0xFF;\n csegment[offset++] = (comment.length + 3) & 0xFF;\n\n comment.split('').forEach(function (c) {\n csegment[offset++] = c.charCodeAt(0) & 0xFF;\n });\n\n csegment[offset++] = 0;\n comment_inserted = true;\n\n return [ csegment, jpeg_bin.subarray(segment.offset, segment.offset + segment.length) ];\n });\n};\n});\n\nfunction jpeg_patch_exif(env) {\n return this._getUint8Array(env.blob).then(function (data) {\n env.is_jpeg = image_traverse.is_jpeg(data);\n\n if (!env.is_jpeg) return Promise.resolve(env);\n\n env.orig_blob = env.blob;\n\n try {\n var exif_is_big_endian, orientation_offset;\n\n /* eslint-disable consistent-return */\n image_traverse.jpeg_exif_tags_each(data, function (entry) {\n if (entry.ifd === 0 && entry.tag === 0x112 && Array.isArray(entry.value)) {\n env.orientation = entry.value[0] || 1;\n exif_is_big_endian = entry.is_big_endian;\n orientation_offset = entry.data_offset;\n return false;\n }\n });\n\n if (orientation_offset) {\n var orientation_patch = exif_is_big_endian ?\n new Uint8Array([ 0, 1 ]) :\n new Uint8Array([ 1, 0 ]);\n\n env.blob = new Blob([\n data.slice(0, orientation_offset),\n orientation_patch,\n data.slice(orientation_offset + 2)\n ], { type: 'image/jpeg' });\n }\n } catch (_) {}\n\n return env;\n });\n}\n\n\nfunction jpeg_rotate_canvas(env) {\n if (!env.is_jpeg) return Promise.resolve(env);\n\n var orientation = env.orientation - 1;\n if (!orientation) return Promise.resolve(env);\n\n var canvas;\n\n if (orientation & 4) {\n canvas = this.pica.options.createCanvas(env.out_canvas.height, env.out_canvas.width);\n } else {\n canvas = this.pica.options.createCanvas(env.out_canvas.width, env.out_canvas.height);\n }\n\n var ctx = canvas.getContext('2d');\n\n ctx.save();\n\n if (orientation & 1) ctx.transform(-1, 0, 0, 1, canvas.width, 0);\n if (orientation & 2) ctx.transform(-1, 0, 0, -1, canvas.width, canvas.height);\n if (orientation & 4) ctx.transform(0, 1, 1, 0, 0, 0);\n\n ctx.drawImage(env.out_canvas, 0, 0);\n ctx.restore();\n\n // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n env.out_canvas.width = env.out_canvas.height = 0;\n\n env.out_canvas = canvas;\n\n return Promise.resolve(env);\n}\n\n\nfunction jpeg_attach_orig_segments(env) {\n if (!env.is_jpeg) return Promise.resolve(env);\n\n return Promise.all([\n this._getUint8Array(env.blob),\n this._getUint8Array(env.out_blob)\n ]).then(function (res) {\n var data = res[0];\n var data_out = res[1];\n\n if (!image_traverse.is_jpeg(data)) return Promise.resolve(env);\n\n var segments = [];\n\n image_traverse.jpeg_segments_each(data, function (segment) {\n if (segment.code === 0xDA /* SOS */) return false;\n segments.push(segment);\n });\n\n segments = segments\n .filter(function (segment) {\n // Drop ICC_PROFILE\n //\n if (segment.code === 0xE2) return false;\n\n // Keep all APPn segments excluding APP2 (ICC_PROFILE),\n // remove others because most of them depend on image data (DCT and such).\n //\n // APP0 - JFIF, APP1 - Exif, the rest are photoshop metadata and such\n //\n // See full list at https://www.w3.org/Graphics/JPEG/itu-t81.pdf (table B.1 on page 32)\n //\n if (segment.code >= 0xE0 && segment.code < 0xF0) return true;\n\n // Keep comments\n //\n if (segment.code === 0xFE) return true;\n\n return false;\n })\n .map(function (segment) {\n return data.slice(segment.offset, segment.offset + segment.length);\n });\n\n env.out_blob = new Blob(\n // intentionally omitting expected JFIF segment (offset 2 to 20)\n [ data_out.slice(0, 2) ].concat(segments).concat([ data_out.slice(20) ]),\n { type: 'image/jpeg' }\n );\n\n return env;\n });\n}\n\n\nfunction assign(reducer) {\n reducer.before('_blob_to_image', jpeg_patch_exif);\n reducer.after('_transform', jpeg_rotate_canvas);\n reducer.after('_create_blob', jpeg_attach_orig_segments);\n}\n\n\nvar jpeg_patch_exif_1 = jpeg_patch_exif;\nvar jpeg_rotate_canvas_1 = jpeg_rotate_canvas;\nvar jpeg_attach_orig_segments_1 = jpeg_attach_orig_segments;\nvar assign_1 = assign;\n\nvar jpeg_plugins = {\n\tjpeg_patch_exif: jpeg_patch_exif_1,\n\tjpeg_rotate_canvas: jpeg_rotate_canvas_1,\n\tjpeg_attach_orig_segments: jpeg_attach_orig_segments_1,\n\tassign: assign_1\n};\n\nfunction ImageBlobReduce(options) {\n if (!(this instanceof ImageBlobReduce)) return new ImageBlobReduce(options);\n\n options = options || {};\n\n this.pica = options.pica || pica({});\n this.initialized = false;\n\n this.utils = utils;\n}\n\n\nImageBlobReduce.prototype.use = function (plugin /*, params, ... */) {\n var args = [ this ].concat(Array.prototype.slice.call(arguments, 1));\n plugin.apply(plugin, args);\n return this;\n};\n\n\nImageBlobReduce.prototype.init = function () {\n this.use(jpeg_plugins.assign);\n};\n\n\nImageBlobReduce.prototype.toBlob = function (blob, options) {\n var opts = utils.assign({ max: Infinity }, options);\n var env = {\n blob: blob,\n opts: opts\n };\n\n if (!this.initialized) {\n this.init();\n this.initialized = true;\n }\n\n return Promise.resolve(env)\n .then(this._blob_to_image)\n .then(this._calculate_size)\n .then(this._transform)\n .then(this._cleanup)\n .then(this._create_blob)\n .then(function (_env) {\n // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n _env.out_canvas.width = _env.out_canvas.height = 0;\n\n return _env.out_blob;\n });\n};\n\n\nImageBlobReduce.prototype.toCanvas = function (blob, options) {\n var opts = utils.assign({ max: Infinity }, options);\n var env = {\n blob: blob,\n opts: opts\n };\n\n if (!this.initialized) {\n this.init();\n this.initialized = true;\n }\n\n return Promise.resolve(env)\n .then(this._blob_to_image)\n .then(this._calculate_size)\n .then(this._transform)\n .then(this._cleanup)\n .then(function (_env) { return _env.out_canvas; });\n};\n\n\nImageBlobReduce.prototype.before = function (method_name, fn) {\n if (!this[method_name]) throw new Error('Method \"' + method_name + '\" does not exist');\n if (typeof fn !== 'function') throw new Error('Invalid argument \"fn\", function expected');\n\n var old_fn = this[method_name];\n var self = this;\n\n this[method_name] = function (env) {\n return fn.call(self, env).then(function (_env) {\n return old_fn.call(self, _env);\n });\n };\n\n return this;\n};\n\n\nImageBlobReduce.prototype.after = function (method_name, fn) {\n if (!this[method_name]) throw new Error('Method \"' + method_name + '\" does not exist');\n if (typeof fn !== 'function') throw new Error('Invalid argument \"fn\", function expected');\n\n var old_fn = this[method_name];\n var self = this;\n\n this[method_name] = function (env) {\n return old_fn.call(self, env).then(function (_env) {\n return fn.call(self, _env);\n });\n };\n\n return this;\n};\n\n\nImageBlobReduce.prototype._blob_to_image = function (env) {\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n\n env.image = document.createElement('img');\n env.image_url = URL.createObjectURL(env.blob);\n env.image.src = env.image_url;\n\n return new Promise(function (resolve, reject) {\n env.image.onerror = function () { reject(new Error('ImageBlobReduce: failed to create Image() from blob')); };\n env.image.onload = function () { resolve(env); };\n });\n};\n\n\nImageBlobReduce.prototype._calculate_size = function (env) {\n //\n // Note, if your need not \"symmetric\" resize logic, you MUST check\n // `env.orientation` (set by plugins) and swap width/height appropriately.\n //\n var scale_factor = env.opts.max / Math.max(env.image.width, env.image.height);\n\n if (scale_factor > 1) scale_factor = 1;\n\n env.transform_width = Math.max(Math.round(env.image.width * scale_factor), 1);\n env.transform_height = Math.max(Math.round(env.image.height * scale_factor), 1);\n\n // Info for user plugins, to check if scaling applied\n env.scale_factor = scale_factor;\n\n return Promise.resolve(env);\n};\n\n\nImageBlobReduce.prototype._transform = function (env) {\n env.out_canvas = this.pica.options.createCanvas(env.transform_width, env.transform_height);\n\n // Dim env temporary vars to prohibit use and avoid confusion when orientation\n // changed. You should take real size from canvas.\n env.transform_width = null;\n env.transform_height = null;\n\n // By default use alpha for png only\n var pica_opts = { alpha: env.blob.type === 'image/png' };\n\n // Extract pica options if been passed\n this.utils.assign(pica_opts, this.utils.pick_pica_resize_options(env.opts));\n\n return this.pica\n .resize(env.image, env.out_canvas, pica_opts)\n .then(function () { return env; });\n};\n\n\nImageBlobReduce.prototype._cleanup = function (env) {\n env.image.src = '';\n env.image = null;\n\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n if (URL.revokeObjectURL) URL.revokeObjectURL(env.image_url);\n\n env.image_url = null;\n\n return Promise.resolve(env);\n};\n\n\nImageBlobReduce.prototype._create_blob = function (env) {\n return this.pica.toBlob(env.out_canvas, env.blob.type)\n .then(function (blob) {\n env.out_blob = blob;\n return env;\n });\n};\n\n\nImageBlobReduce.prototype._getUint8Array = function (blob) {\n if (blob.arrayBuffer) {\n return blob.arrayBuffer().then(function (buf) {\n return new Uint8Array(buf);\n });\n }\n\n return new Promise(function (resolve, reject) {\n var fr = new FileReader();\n\n fr.readAsArrayBuffer(blob);\n\n fr.onload = function () { resolve(new Uint8Array(fr.result)); };\n fr.onerror = function () {\n reject(new Error('ImageBlobReduce: failed to load data from input blob'));\n fr.abort();\n };\n fr.onabort = function () {\n reject(new Error('ImageBlobReduce: failed to load data from input blob (aborted)'));\n };\n });\n};\n\n\nImageBlobReduce.pica = pica;\n\nvar imageBlobReduce = ImageBlobReduce;\n\nexport default imageBlobReduce;\n","\n\n\n \n\n \n \n\n \n\n {#if image}\n
Adjust your image
\n
\n \n
\n\n
\n {#if isCropping}\n
Saving Image... please wait...
\n {:else}\n \n \n {/if}\n
\n {:else}\n
\n \n
\n {/if}\n \n\n","\n\n
(isTakingPhoto = true)}>\n \n \n \n \n \n \n \n
\n\n\n{#if isTakingPhoto}\n \n{/if}\n","\n\n
\n {#if isEditingName}\n \n \n\n \n {preventEditName ? 'Cancel' : 'Done'}\n {:else}\n \n \n\n \n \n \n \n \n \n {/if}\n
\n","export function longpress(node, threshold = 500) {\n const handle_mousedown = (evt) => {\n\n evt.preventDefault();\n\n const timeout = setTimeout(() => {\n node.removeEventListener('mousemove', cancel);\n node.removeEventListener('mouseup', cancel);\n node.removeEventListener('touchend', cancel);\n node.removeEventListener('touchcancel', cancel);\n node.dispatchEvent(new CustomEvent('longpress'));\n }, threshold);\n\n const cancel = (evt) => {\n clearTimeout(timeout);\n evt.preventDefault();\n node.removeEventListener('mousemove', cancel);\n node.removeEventListener('mouseup', cancel);\n node.removeEventListener('touchend', cancel);\n node.removeEventListener('touchcancel', cancel);\n node.dispatchEvent(new CustomEvent('tagclick'));\n };\n\n node.addEventListener('mousemove', cancel);\n node.addEventListener('mouseup', cancel);\n node.addEventListener('touchend', cancel);\n node.addEventListener('touchcancel', cancel);\n }\n\n node.addEventListener('mousedown', handle_mousedown);\n node.addEventListener('touchstart', handle_mousedown);\n\n return {\n destroy() {\n node.removeEventListener('mousedown', handle_mousedown);\n node.removeEventListener('touchstart', handle_mousedown);\n }\n };\n}","\n\n{#if dense}\n \n {name}\n \n{:else}\n \n \n {name}\n \n{/if}\n","\n\n
\n {#each $tags as tag}\n \n {:else}\n dispatch('tagclick')}\n >\n \n \n \n add tag \n \n {/each}\n
\n","\n\n
\n \n \n\n \n add\n
\n","\n\nRename Tag\n\n
\n \n \n\n \n {isRemoving ? 'Remove' : 'Rename'}\n
\n\n{#if isRenaming}\n {original} to {workingTag}\n{/if}\n{#if isRemoving}\n Removing tag {original} entirely\n{/if}\n","\n\n\n
\n {#each $allTags as selection, index}\n handleLongPress(index)}\n />\n {/each}\n
\n\n{#if isRenamingTag}\n \n \n \n\n
\n (isRenamingTag = false)}>cancel\n
\n
\n{/if}\n","\n\n\n\n{#if isEditingTag}\n \n \n \n \n\n
\n close\n
\n
\n{/if}\n","\n\n
\n Remind me in\n\n {#if isEditing}\n \n\n Done\n {:else}\n \n {/if}\n\n Days\n
\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",$=\"Invalid Date\",l=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\")},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},g={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date() (state) => {\n\tconst newState = { ...state, [property]: value };\n\treturn { ...newState, selected: new Date(newState.year, newState.month, newState.day) };\n};\n\nconst pipe = (...fns) => (val) => fns.reduce((accum, fn) => fn(accum), val);\n\nconst zeroDay = (date) => dayjs(date).startOf('day').toDate();\n\nconst get = ({ selected, start, end, startOfWeekIndex = 0, shouldEnlargeDay = false }) => {\n\tconst { subscribe, set, update } = writable({\n\t\topen: false,\n\t\thasChosen: false,\n\t\tselected,\n\t\tstart: zeroDay(start),\n\t\tend: zeroDay(end),\n\t\tshouldEnlargeDay,\n\t\tenlargeDay: false,\n\t\tyear: selected.getFullYear(),\n\t\tmonth: selected.getMonth(),\n\t\tday: selected.getDate(),\n\t\tactiveView: 'days',\n\t\tactiveViewDirection: 1,\n\t\tstartOfWeekIndex\n\t});\n\n\treturn {\n\t\tset,\n\t\tsubscribe,\n\t\tgetState() {\n\t\t\treturn getFromStore({ subscribe });\n\t\t},\n\t\tenlargeDay(enlargeDay = true) {\n\t\t\tupdate((state) => ({ ...state, enlargeDay }));\n\t\t},\n\t\tgetSelectableVector(date) {\n\t\t\tconst { start, end } = this.getState();\n\t\t\tif (date < start) return -1;\n\t\t\tif (date > end) return 1;\n\t\t\treturn 0;\n\t\t},\n\t\tisSelectable(date, clamping = []) {\n\t\t\tconst vector = this.getSelectableVector(date);\n\t\t\tif (vector === 0) return true;\n\t\t\tif (!clamping.length) return false;\n\t\t\tconst clamped = this.clampValue(dayjs(date), clamping).toDate();\n\t\t\treturn this.isSelectable(clamped);\n\t\t},\n\t\tclampValue(day, clampable) {\n\t\t\tconst vector = this.getSelectableVector(day.toDate());\n\t\t\tif (vector === 0) return day;\n\t\t\tconst boundaryKey = vector === 1 ? 'end' : 'start';\n\t\t\tconst boundary = dayjs(this.getState()[boundaryKey]);\n\t\t\treturn clampable.reduce((day, type) => day[type](boundary[type]()), day);\n\t\t},\n\t\tadd(amount, unit, clampable = []) {\n\t\t\tupdate(({ month, year, day, ...state }) => {\n\t\t\t\tconst d = this.clampValue(dayjs(new Date(year, month, day)).add(amount, unit), clampable);\n\t\t\t\tif (!this.isSelectable(d.toDate())) return { ...state, year, month, day };\n\t\t\t\treturn {\n\t\t\t\t\t...state,\n\t\t\t\t\tmonth: d.month(),\n\t\t\t\t\tyear: d.year(),\n\t\t\t\t\tday: d.date(),\n\t\t\t\t\tselected: d.toDate()\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t\tsetActiveView(newActiveView) {\n\t\t\tconst newIndex = PICKER_TYPES.indexOf(newActiveView);\n\t\t\tif (newIndex === -1) return;\n\t\t\tupdate(({ activeView, ...state }) => ({\n\t\t\t\t...state,\n\t\t\t\tactiveViewDirection: PICKER_TYPES.indexOf(activeView) > newIndex ? -1 : 1,\n\t\t\t\tactiveView: newActiveView\n\t\t\t}));\n\t\t},\n\t\tsetYear(year) {\n\t\t\tupdate(updateSelected(year, 'year'));\n\t\t},\n\t\tsetMonth(month) {\n\t\t\tupdate(updateSelected(month, 'month'));\n\t\t},\n\t\tsetDay(day) {\n\t\t\tupdate(\n\t\t\t\tpipe(\n\t\t\t\t\tupdateSelected(day.getDate(), 'day'),\n\t\t\t\t\tupdateSelected(day.getMonth(), 'month'),\n\t\t\t\t\tupdateSelected(day.getFullYear(), 'year')\n\t\t\t\t)\n\t\t\t);\n\t\t},\n\t\tclose(extraState) {\n\t\t\tupdate((state) => ({ ...state, ...extraState, open: false }));\n\t\t},\n\t\tselectDay() {\n\t\t\tthis.close({ hasChosen: true });\n\t\t},\n\t\tgetCalendarPage(month, year) {\n\t\t\tconst { startOfWeekIndex } = this.getState();\n\t\t\tlet last = { date: new Date(year, month, 1), outsider: false };\n\t\t\tconst days = [];\n\n\t\t\twhile (last.date.getMonth() === month) {\n\t\t\t\tdays.push(last);\n\t\t\t\tconst date = new Date(last.date);\n\t\t\t\tdate.setDate(last.date.getDate() + 1);\n\t\t\t\tlast = { date, outsider: false };\n\t\t\t}\n\n\t\t\twhile (days[0].date.getDay() !== startOfWeekIndex) {\n\t\t\t\tconst date = new Date(days[0].date);\n\t\t\t\tdate.setDate(days[0].date.getDate() - 1);\n\t\t\t\tdays.unshift({\n\t\t\t\t\tdate,\n\t\t\t\t\toutsider: true\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tlast.outsider = true;\n\t\t\twhile (days.length < 42) {\n\t\t\t\tdays.push(last);\n\t\t\t\tlast = { date: new Date(last.date), outsider: true };\n\t\t\t\tlast.date.setDate(last.date.getDate() + 1);\n\t\t\t}\n\n\t\t\treturn days;\n\t\t}\n\t};\n};\n\nexport default { get };\n","const storeContextKey = {};\nconst keyControlsContextKey = {};\nconst themeContextKey = {};\n\nexport { storeContextKey, keyControlsContextKey, themeContextKey };\n","\n\n\n","export default (node) => {\n\tconst click = (evt) => {\n\t\tif (!node || node.contains(evt.target) || evt.defaultPrevented) return;\n\t\tnode.dispatchEvent(new CustomEvent('blurr', node));\n\t};\n\n\tdocument.addEventListener('click', click, true);\n\n\treturn {\n\t\tdestroy() {\n\t\t\tdocument.removeEventListener('click', click, true);\n\t\t}\n\t};\n};\n","\n\n\n\t\n\t\t{#if !isOpen}\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t{:else}\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\n\t\t{/if}\n\t\n
\n\n\n","const light = {\n\tcalendar: {\n\t\twidth: '700px',\n\t\tmaxWidth: '100vw',\n\t\tlegend: {\n\t\t\theight: '45px'\n\t\t},\n\t\tshadow: '0px 10px 26px rgba(0, 0, 0, 0.25)',\n\t\tcolors: {\n\t\t\ttext: {\n\t\t\t\tprimary: '#333',\n\t\t\t\thighlight: '#fff'\n\t\t\t},\n\t\t\tbackground: {\n\t\t\t\tprimary: '#fff',\n\t\t\t\thighlight: '#eb7400',\n\t\t\t\thover: '#eee'\n\t\t\t},\n\t\t\tborder: '#eee'\n\t\t},\n\t\tfont: {\n\t\t\tregular: '1.5em',\n\t\t\tlarge: '37em'\n\t\t},\n\t\tgrid: {\n\t\t\tdisabledOpacity: '.35',\n\t\t\toutsiderOpacity: '.6'\n\t\t}\n\t}\n};\n\nconst dark = {\n\tcalendar: {\n\t\twidth: '700px',\n\t\tmaxWidth: '100vw',\n\t\tlegend: {\n\t\t\theight: '45px'\n\t\t},\n\t\tshadow: '0px 10px 26px rgba(0, 0, 0, 0.25)',\n\t\tcolors: {\n\t\t\ttext: {\n\t\t\t\tprimary: '#eee',\n\t\t\t\thighlight: '#fff'\n\t\t\t},\n\t\t\tbackground: {\n\t\t\t\tprimary: '#333',\n\t\t\t\thighlight: '#5829d6',\n\t\t\t\thover: '#222'\n\t\t\t},\n\t\t\tborder: '#222'\n\t\t},\n\t\tfont: {\n\t\t\tregular: '1.5em',\n\t\t\tlarge: '37em'\n\t\t},\n\t\tgrid: {\n\t\t\tdisabledOpacity: '.5',\n\t\t\toutsiderOpacity: '.7'\n\t\t}\n\t}\n};\n\nexport { light, dark };\n","\n\n\n","const KEY_CODES = {\n\t33: 'pageUp',\n\t34: 'pageDown',\n\t37: 'left',\n\t38: 'up',\n\t39: 'right',\n\t40: 'down',\n\t27: 'escape',\n\t13: 'enter',\n\t17: 'control'\n};\n\nexport { KEY_CODES };\n","module.exports = throttle;\n\nfunction throttle(fn, interval, options) {\n var timeoutId = null;\n var throttledFn = null;\n var leading = (options && options.leading);\n var trailing = (options && options.trailing);\n\n if (leading == null) {\n leading = true; // default\n }\n\n if (trailing == null) {\n trailing = !leading; //default\n }\n\n if (leading == true) {\n trailing = false; // forced because there should be invocation per call\n }\n\n var cancel = function() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n\n var flush = function() {\n var call = throttledFn;\n cancel();\n\n if (call) {\n call();\n }\n };\n\n var throttleWrapper = function() {\n var callNow = leading && !timeoutId;\n var context = this;\n var args = arguments;\n\n throttledFn = function() {\n return fn.apply(context, args);\n };\n\n if (!timeoutId) {\n timeoutId = setTimeout(function() {\n timeoutId = null;\n\n if (trailing) {\n return throttledFn();\n }\n }, interval);\n }\n\n if (callNow) {\n callNow = false;\n return throttledFn();\n }\n };\n\n throttleWrapper.cancel = cancel;\n throttleWrapper.flush = flush;\n\n return throttleWrapper;\n}\n","\n\n\n\n\n","\n\n
\n\t\n
\n\n\n","\n\n
\n\t{#each $visibleData as obj (obj.data?.[idKey] || obj.index)}\n\t\t
\n\t\t\t\n\t\t
\n\t{/each}\n
\n\n\n","const scrollStep = 120;\n\nexport { scrollStep };\n","import { scrollStep } from '../config/scroll';\n\nexport default (node, opts) => {\n\tlet { y: yi = 0, step = scrollStep } = opts;\n\tlet lastTouch = 0;\n\tlet y = yi;\n\n\tconst updateY = (val) => {\n\t\tconst { maxSteps = Infinity } = opts;\n\t\ty = Math.max(0, Math.min(maxSteps * step, val));\n\t};\n\n\tconst emitY = () => {\n\t\tif (Math.round(y / step) === Math.round(yi / step)) return;\n\t\tyi = y;\n\t\tnode.dispatchEvent(\n\t\t\tnew CustomEvent('y', {\n\t\t\t\tdetail: {\n\t\t\t\t\ty,\n\t\t\t\t\tstep: Math.round(y / step)\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\t};\n\n\tconst wheelListener = ({ deltaY }) => {\n\t\tupdateY(y + deltaY);\n\t\temitY();\n\t};\n\tconst touchstartListener = ({ touches: [{ pageY }] }) => {\n\t\tlastTouch = pageY;\n\t\temitY();\n\t};\n\tconst touchmoveListener = ({ touches: [{ pageY }] }) => {\n\t\tupdateY(y - (pageY - lastTouch));\n\t\tlastTouch = pageY;\n\t\temitY();\n\t};\n\n\tnode.addEventListener('wheel', wheelListener);\n\tnode.addEventListener('touchstart', touchstartListener);\n\tnode.addEventListener('touchmove', touchmoveListener);\n\tnode.style.touchAction = 'none';\n\n\treturn {\n\t\tdestroy() {\n\t\t\tnode.removeEventListener('wheel', wheelListener);\n\t\t\tnode.removeEventListener('touchstart', touchstartListener);\n\t\t\tnode.removeEventListener('touchmove', touchmoveListener);\n\t\t}\n\t};\n};\n","\n\n\n\n
\n\t
\n\t\t{#each legend as label}\n\t\t\t{label}\n\t\t{/each}\n\t
\n\t\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{#each days as day, i (day)}\n\t\t\t\t\t\t{#if !$store.enlargeDay || index !== monthIndex || !dayjs(day.date).isSame($store.selected)}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{day.date.getDate()}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t{/each}\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t{#if $store.enlargeDay}\n\t\t\t
\n\t\t\t\t{dayjs($store.selected).date()}\n\t\t\t
\n\t\t{/if}\n\t
\n
\n\n\n","\n\n\n\t\n\n","\n\n\n\n\n","\n\n\n
\n\t
\n\t\t\n\t
\n\t\n\t\t{label}\n\t\n\t
\n\t\t\n\t
\n
\n\n\n","\n\n\n","\n\n\n
\n\t\n\t\t\n\t\t\t{#each months as month, i}\n\t\t\t\t\n\t\t\t\t\t{month.label}\n\t\t\t\t\n\t\t\t{/each}\n\t\t\n\t\n
\n\n\n","\n\n\n\n
\n\t\n\t\t\n\t\t\t{#each years as year}\n\t\t\t\t\n\t\t\t\t\t{year.number}\n\t\t\t\t\n\t\t\t{/each}\n\t\t\n\t\n
\n\n\n","\n\n\n\t
\n\t\t\n\t\t
\n\t\t\t{#if $store.activeView === 'days'}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t{:else if $store.activeView === 'months'}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t{:else if $store.activeView === 'years'}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t{/if}\n\t\t
\n\t
\n
\n\n\n","import dayjs from 'dayjs';\n\nconst calendar = {\n\tselected: new Date(),\n\tstart: dayjs().add(-100, 'year').toDate(),\n\tend: dayjs().add(100, 'year').toDate(),\n\tformat: 'MM/DD/YYYY'\n};\n\nexport { calendar };\n","\n\n\n\t\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t
\n\t\t\n\t\t\t\n\t\t\n\t
\n
\n\n\n","\n\n
\n \n {#if isEditing}\n \n \n \n {:else}\n \n \n \n \n {count}\n \n \n +\n \n {/if}\n
\n\n","\n\n
\n
\n \n \n {#if $store?.hasChosen}\n Date Chosen. THis is a bug.\n {:else}\n Pick a Date\n {/if}\n \n \n
\n\n \n
\n","\n\n
\n \n {toDateString(batch)}\n \n\n {#if confirmingDelete}\n
\n \n
\n {:else}\n \n {/if}\n
\n","\n\n
\n {#each $batches as batch, index}\n \n $performBatchDec[index]()}\n incrementBatchCount={() => $performBatchInc[index]()}\n updateBatchCount={(v) => $performBatchUpdate[index](v)}\n deleteBatch={() => $performDeleteBatch[index]()}\n />\n
\n {/each}\n\n
\n \n
\n\n\n\n","\n\n
\n {#if isEditingNote}\n \n \n \n\n \n {preventEditNote ? 'Cancel' : 'Add Note'}\n {:else}\n \n \n\n \n \n \n \n \n \n {/if}\n
\n","\n\n\n \n\n \n \n \n \n \n
\n \n
\n \n \n
\n
\n","\n\n\n \n \n \n
\n","\n","\n\n
\n
\n

The Date

\n\n

Hello!

\n\n

\n Use this application to remind you about expiring stuff before it goes to\n waste.\n

\n\n

\n Add this web application to your Home for the best experience.To learn\n more about us, tap on the \"B4\" button at the bottom left.\n

\n\n

\n Want to start right away? Click on the \"+\" button at the bottom center.\n

\n\n

Have fun!

\n
\n
\n\n\n","\n\n\n{#if hasItem}\n \n {#each $items as item, index}\n
\n {#if item.blob}\n \n {:else}\n \n
\n \n
\n
\n {/if}\n \n {item.name}\n {#if item.expiry}\n {expireInDays(item.expiry)} days left\n {/if}\n
\n {/each}\n\n {#each filler as _, i}\n \n
\n \n
\n \n {/each}\n \n{:else}\n \n{/if}\n\n\n","\n\n\n\n {#if title == 'Filter'}\n \n \n \n {/if}\n\n {#if title == 'B4'}\n \n {/if}\n\n {#if needAttention}\n \n \n \n {/if}\n {title}\n\n","\n\n\n
\n Filter with Tags \n {#if hasSelectedTag}\n Clear\n {/if}\n
\n
\n {#each $allTags as selection, index}\n \n {/each}\n {#if ($expiringItemCount > 0 || $expiringFilterSelected) && !$outOfStockFilterSelected}\n \n {/if}\n {#if ($outOfStockItemCount > 0 || $outOfStockFilterSelected) && !$expiringFilterSelected}\n \n {/if}\n
\n\n","\n\n
\n
\n {#each $tags as tag}\n \n {/each}\n {#if $expiringFilterSelected}\n \n {/if}\n {#if $outOfStockFilterSelected}\n \n {/if}\n
\n
\n","\n\n\n\n{#if expanded}\n
\n \n{:else}\n \n{/if}\n","\n\n\n {#if title == 'Settings'}\n \n \n \n {/if}\n\n {#if title == 'Info'}\n \n \n \n {/if}\n\n {#if title == 'HowTo'}\n \n \n \n {/if}\n\n {#if title == 'Releases'}\n \n \n \n {/if}\n\n {#if title == 'Review'}\n \n \n \n {/if}\n\n {title}\n\n","\n\n\n\n\n{#if expanded}\n
\n
\n \n \n \n \n \n
\n{/if}\n","\n\n\n \n \n\n \n \n \n \n \n \n
\n Add\n \n\n \n
\n","\n\n
\n

\n The Date\n

\n

What is this?

\n

\n It helps you keep track of all your food, cans, pickles, dried food, etc.\n

\n

\n With a glance, you will know what is expiring, how many of them left, which\n you need to consume first and when is your next restock.\n

\n\n

\n How to use?\n

\n

\n We have a dedicated section for the guides. Visit Here.\n

\n\n

\n Is this free?\n

\n

\n Not entirely. It is free to use on your personal device, mobile phone,\n tablet or laptop.\n

\n

\n However, if you need a backup on the Internet, I need you to chip in for the\n server cost.\n

\n

\n Don't worry about it now. Talk to Kuan after you used B4TheDate extensively.\n We will figure it out.\n

\n\n

\n This is not online?\n

\n

\n Indeed it is not. You can use this application offline. You can add it to your Home screen too.\n \n

\n

\n B4 will store all your data and photos inside your phone. I do not upload\n your information to the Internet unless you decide to backup your data into\n the remote server.\n

\n\n

\n How to backup?\n

\n

Talk to Kuan.

\n

\n I will provide you with a backup code eventually. You will use it to upload\n all your data and photos to a remote server. Later, you can use the same\n code in another device, or the same device, to download all the backup data.\n

\n\n

\n How to \"talk to Kuan\"?\n

\n

Call or message him lah.

\n

\n If you do not have his phone number (Welcome stranger on the Internet!),\n send an email to kuan@hey.com\n

\n\n
\n close\n
\n
\n","\nexport default function collapse (node, params) {\n\n const defaultParams = {\n open: true,\n duration: 0.2,\n easing: 'ease'\n }\n\n params = Object.assign(defaultParams, params)\n\n const noop = () => {}\n let transitionEndResolve = noop\n let transitionEndReject = noop\n\n const listener = node.addEventListener('transitionend', () => {\n transitionEndResolve()\n transitionEndResolve = noop\n transitionEndReject = noop\n })\n\n // convenience functions\n async function asyncTransitionEnd () {\n return new Promise((resolve, reject) => {\n transitionEndResolve = resolve\n transitionEndReject = reject\n })\n }\n\n async function nextFrame () {\n return new Promise(requestAnimationFrame)\n }\n\n function transition () {\n return `height ${params.duration}s ${params.easing}`\n }\n\n // set initial styles\n node.style.overflow = 'hidden'\n node.style.transition = transition()\n node.style.height = params.open ? 'auto' : '0px'\n\n async function enter () {\n\n // height is already in pixels\n // start the transition\n node.style.height = node.scrollHeight + 'px'\n\n // wait for transition to end,\n // then switch back to height auto\n try {\n await asyncTransitionEnd()\n node.style.height = 'auto'\n } catch(err) {\n // interrupted by a leave transition\n }\n\n }\n\n async function leave () {\n\n if (node.style.height === 'auto') {\n\n // temporarily turn transitions off\n node.style.transition = 'none'\n await nextFrame()\n\n // set height to pixels, and turn transition back on\n node.style.height = node.scrollHeight + 'px'\n node.style.transition = transition()\n await nextFrame()\n\n // start the transition\n node.style.height = '0px'\n\n }\n else {\n\n // we are interrupting an enter transition\n transitionEndReject()\n node.style.height = '0px'\n\n }\n\n }\n\n function update (newParams) {\n params = Object.assign(params, newParams)\n params.open ? enter() : leave()\n }\n\n function destroy () {\n node.removeEventListener('transitionend', listener)\n }\n\n return { update, destroy }\n\n}","\n\n\n\n
    \n \n
\n\n","\n\n\n\n
  • \n\n
    \n \n
    \n\n
    \n \n
    \n\n \n\n
  • \n\n","\n\n
    \n
    How to use?
    \n
    \n Always use B4 with a mobile phone.\n
    \n\n \n \n
    Add New Item
    \n
    \n

    \n Tap on\n \n \n \n \n \n

    \n \n on the main page. You will see a new page.\n

    \n

    \n On that page, tap on the empty image box to upload a photo of the new\n item.\n

    \n

    \n Lastly, give the new item a name. Press enter or click on \"DONE\"\n button to complete.\n

    \n \n \n\n \n
    Tag the item
    \n
    \n

    \n Select an item from the grid. Then, at the item page, tap on\n \n \n \n \n add tag \n \n

    \n\n

    \n If you are just getting started with B4TheDate, you will see an empty\n pop-up with an input box. Use it to add a new tag for your item.\n

    \n\n

    You can have multiple tags for each item.

    \n\n

    \n Close the pop-up when you completed your tagging. You will notice the\n tags of the item is displayed instead.\n

    \n
    \n
    \n\n \n
    Manage Item's Tags
    \n
    \n

    \n To add or remove tags from an item. Go to its page and tap on the tags\n section:\n \n \n \n \n

    \n\n

    \n Selected tag is highlighted\n \n \n \n Tap on it to remove this tag from the item.\n

    \n\n

    \n Available tag has no color\n \n \n \n Tap on it to add this tag to the item.\n

    \n\n

    \n If you do not find the tag you want, create a new one with the input\n box at the top of the pop-up\n

    \n
    \n
    \n\n \n
    Filter Items with Tags
    \n
    \n

    \n You can configure the main page to only show items with certain tags.\n To do that, tap on the Filter\n\n \n \n \n

    \n\n

    \n From the pop-up, select the tags you want to use as a filter. As you\n select the tags, you can see the grid changes its content.\n

    \n\n

    \n When none of the tags is selected, all items will be shown. This is\n the default behaviour.\n

    \n
    \n
    \n\n \n
    Rename and Remove Tag
    \n
    \n

    \n Caution! Renaming a tag will rename it for all items with the same\n tag. Removing a tag will remove it from all item with the same tag.\n

    \n\n

    \n First, go to an item page with the tag you like to rename. Tap on the\n tags section to open up the tag cloud:\n \n

    \n \n \n\n \n add\n
    \n\n \n \n \n \n\n
    \n close\n \n

    \n\n

    \n Long press (press and hold for 1 second) on the Tag you like to\n rename. Another popup will appear which let you input the new name for\n the tag:\n\n \n Rename Tag\n\n \n \n \n\n \n Rename\n \n old to new\n \n

    \n\n

    \n To remove a tag, clear the input box to have the button turns to\n \"REMOVE\".\n\n \n Rename Tag\n\n \n \n \n\n \n Remove\n \n Removing tag old entirely\n \n

    \n
    \n
    \n\n \n
    Create A Batch
    \n
    \n

    \n A batch has two things: An expiry date and a stock count. You can have\n multiple batches for each item.\n

    \n\n

    \n Create a new batch by tapping on\n \n

    \n\n

    \n Once a date is selected, a new line will be created right above the\n button:\n \n \n \n

    \n\n

    \n This is the new batch you just created. You can adjust the stock count\n with the \"+\" and \"-\" button. To key in a larger number directly, tap\n on the count number.\n

    \n
    \n
    \n\n \n
    Update Stock
    \n
    \n

    Now and then, you will consume the food and buy new stock.

    \n\n

    \n When you take one out for use, remember to deduct it from the batch it\n belongs to (hint: same expiry date).\n

    \n\n

    \n If you happen to buy new stock that shares the existing expiry date,\n add one to the batch's stock with the \"+\" button. Otherwise, create a\n new batch for the new stock with a new date.\n

    \n\n

    \n It is common to have multiple batches with multiple stock counts of a\n single item.\n

    \n\n

    \n When you take the last one out from a batch, reduce its stock count to\n zero. A delete button will appear. Tap on it to remove the batch.\n

    \n
    \n
    \n\n \n
    Remind You Before The Date
    \n
    \n

    \n Each item has its reminder period (in days). An item will be marked as\n expiring when one of its batches have an expiry date that falls within\n the reminding period.\n

    \n\n

    days = expiry - today

    \n

    \n Expiring = days {'<'} reminder\n

    \n\n

    \n By default, each item has a 30 days reminder period. To change it, use\n the reminder section on the item page:\n \n Remind me in\n\n \n\n Days\n \n

    \n
    \n
    \n\n \n
    Show Only Expiring Items
    \n
    \n

    \n When you have expiring items, the Expiring filter will have the number\n of expiring items to it:\n \n \n \n

    \n\n

    \n Selecting this filter tag will show you all the expiring items in the\n grid. You can further filter it by your tags too.\n

    \n\n

    \n Find it from the Filter button:\n \n \n \n

    \n
    \n
    \n\n \n
    Show Only Out of Stock Items
    \n
    \n

    \n Similar to Expiring Items. You can use the Out of Stock filter tag to\n show all the out of stock items.\n \n \n \n

    \n\n

    \n After you delete the last batch from an item, that item will be\n considered out of stock. Adding a new batch to it will revoke this\n stauts.\n

    \n\n

    \n New item before adding any batches will not be considered as out of\n stock.\n

    \n
    \n
    \n\n \n
    Backup
    \n
    \n \n \n\n
    \n close\n
    \n\n\n\n","\n\n
    \n

    \n The Date\n

    \n\n

    February 2022

    \n
      \n
    • \n Out of Stock filter: As you deleted the last batch from an item, it\n will be deemed out of stock. You can filter it with the new \"out of stock\"\n filter.\n
    • \n
    • Polished Backup UI and setting page.
    • \n
    \n\n

    December 2021

    \n\n
      \n
    • Made a wrong tag? You can now rename or remove it.
    • \n
    • \n Have a large number of batch, like a pallet of pills? Tap on the number to\n directly input the count.\n
    • \n
    \n
    \n close\n
    \n
    \n","'use strict';\nexports.test = function () {\n return typeof global.queueMicrotask === 'function';\n};\n\nexports.install = function (func) {\n return function () {\n global.queueMicrotask(func);\n };\n};\n","'use strict';\n//based off rsvp https://github.com/tildeio/rsvp.js\n//license https://github.com/tildeio/rsvp.js/blob/master/LICENSE\n//https://github.com/tildeio/rsvp.js/blob/master/lib/rsvp/asap.js\n\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nexports.test = function () {\n return Mutation;\n};\n\nexports.install = function (handle) {\n var called = 0;\n var observer = new Mutation(handle);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n return function () {\n element.data = (called = ++called % 2);\n };\n};","'use strict';\nvar types = [\n require('./nextTick'),\n require('./queueMicrotask'),\n require('./mutation.js'),\n require('./messageChannel'),\n require('./stateChange'),\n require('./timeout')\n];\nvar draining;\nvar currentQueue;\nvar queueIndex = -1;\nvar queue = [];\nvar scheduled = false;\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n nextTick();\n }\n}\n\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n if (draining) {\n return;\n }\n scheduled = false;\n draining = true;\n var len = queue.length;\n var timeout = setTimeout(cleanUpNextTick);\n while (len) {\n currentQueue = queue;\n queue = [];\n while (currentQueue && ++queueIndex < len) {\n currentQueue[queueIndex].run();\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n queueIndex = -1;\n draining = false;\n clearTimeout(timeout);\n}\nvar scheduleDrain;\nvar i = -1;\nvar len = types.length;\nwhile (++i < len) {\n if (types[i] && types[i].test && types[i].test()) {\n scheduleDrain = types[i].install(nextTick);\n break;\n }\n}\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n var fun = this.fun;\n var array = this.array;\n switch (array.length) {\n case 0:\n return fun();\n case 1:\n return fun(array[0]);\n case 2:\n return fun(array[0], array[1]);\n case 3:\n return fun(array[0], array[1], array[2]);\n default:\n return fun.apply(null, array);\n }\n\n};\nmodule.exports = immediate;\nfunction immediate(task) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(task, args));\n if (!scheduled && !draining) {\n scheduled = true;\n scheduleDrain();\n }\n}\n","'use strict';\n\nexports.test = function () {\n if (global.setImmediate) {\n // we can only get here in IE10\n // which doesn't handel postMessage well\n return false;\n }\n return typeof global.MessageChannel !== 'undefined';\n};\n\nexports.install = function (func) {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = func;\n return function () {\n channel.port2.postMessage(0);\n };\n};","'use strict';\n\nexports.test = function () {\n return 'document' in global && 'onreadystatechange' in global.document.createElement('script');\n};\n\nexports.install = function (handle) {\n return function () {\n\n // Create a \n\n
    \n

    Sync

    \n\n {#if hasCode}\n

    Sync often to keep your data safe.

    \n

    Code: {$savedCode}

    \n {#if isSyncing}\n

    {syncMessage}

    \n {:else}\n

    Last Sync: {timeAgoText}

    \n {/if}\n\n
    \n \n Sync Now\n
    \n {:else}\n

    \n Sync lets you backup data into a remote database. You can later sync this\n data from another device.\n

    \n (settingUp = true)}>Setup Sync\n {/if}\n
    \n\n{#if settingUp}\n \n \n Setup Sync\n\n
    \n \n\n \n Submit\n
    \n\n {#if hasSyncStatus}\n {#if syncStatusIsError}\n

    {syncMessage}

    \n {:else}\n

    {syncMessage}

    \n {/if}\n {/if}\n\n {#if showingTips}\n

    \n A personalised code is needed to upload and download data from the\n remote database.\n

    \n

    \n If you like to have one, send an email to kuan@hey.com\n

    \n {/if}\n\n
    \n (showingTips = !showingTips)}>What is this?\n {#if !isSyncing}\n Close\n {/if}\n
    \n \n
    \n{/if}\n","\n\n\n \n {message}\n\n
    \n
    \n \n
    \n","\n\n
    \n
    \n\n
    \n

    \n Settings\n

    \n\n \n\n
    \n

    Compact

    \n

    \n Free up some space by trimming bits and bytes that B4 no longer need.\n

    \n\n Compact Storage\n
    \n\n
    \n

    Factory Reset

    \n

    \n Delete everything in this device (does not affect remote backup).\n

    \n\n (sureAboutReset = true)}>Factory Reset\n
    \n\n \n
    \n
    \n\n{#if sureAboutReset}\n (sureAboutReset = false)}\n onConfirm={confirmReset}\n />\n{/if}\n","import daggy from 'daggy';\nimport * as R from 'ramda';\nimport * as free from 'fp/free';\n\nimport * as kv from '../kv';\nimport { fetchJson, tapLog } from '../utils';\nimport { syncWithBackUp } from '../db_ops';\n\nconst Backup = daggy.taggedSum('Backup', {\n Sync: ['code'],\n});\n// @ts-ignore\nconst { Sync } = Backup;\n\nconst remoteSyncWithCode = (code) =>\n free.of(code)//\n // @ts-ignore replacable ENV\n .map((code) => `${REMOTE_BACKUP_CRED_URL}/${code}`)\n .chain((requestUrl) => fetchJson(requestUrl, { method: 'GET' }))\n .chain((creds) => syncWithBackUp(creds.dbUrl, creds.username, creds.password));\n\nconst remoteBackupToFuture = (p) => p.cata({\n Sync: (code) => free.interpete(remoteSyncWithCode(code)),\n});\n\nconst localBackupToFuture = (p) => p.cata({\n // @ts-ignore replacable ENV\n Sync: (code) => free.interpete(syncWithBackUp(`${LOCAL_DB_URL}/${code}`, LOCAL_DB_USERNAME, LOCAL_DB_PASSWORD)),\n});\n\nconst emptyBackupToFuture = (p) => p.cata({\n Sync: (_) => free.of(null),\n});\n\nconst setupBackupInterpretor = () => {\n // Read the ENV variables\n // @ts-ignore replacable ENV\n let isRemoteBackup = REMOTE_BACKUP_CRED_URL != undefined;\n // @ts-ignore replacable ENV\n let isLocalBackup = LOCAL_DB_URL != undefined;\n if (!isRemoteBackup && !isLocalBackup) {\n console.warn('Backup is not setup properly');\n return [Backup, emptyBackupToFuture];\n } else {\n return [Backup,\n isRemoteBackup ? remoteBackupToFuture : localBackupToFuture];\n }\n}\n\nconst sync = (code) => free.lift(Sync(code));\nconst saveCode = (code, timeStamp) =>\n free.sequence([\n kv.set('backupCode', code),\n kv.set('backupTimestamp', timeStamp),\n ])\nconst getSavedCode = () =>\n kv.get('', 'backupCode')\n .chain(\n R.ifElse(\n R.isEmpty,\n free.left,\n free.right,\n ));\n\nconst getSavedTimestamp = () =>\n kv.get('', 'backupTimestamp')\n .chain(\n R.ifElse(\n R.isEmpty,\n free.left,\n (dateString) => free.right(new Date(dateString)),\n ));\n\nexport { setupBackupInterpretor, sync, saveCode, getSavedCode, getSavedTimestamp };\n","import * as R from 'ramda';\nimport { cleanUp, destroy } from '../database';\n\nimport * as free from 'fp/free';\nimport { setRef } from 'fp/ref';\nimport { addSop } from 'fp/sop';\nimport { viewMainPage } from 'fp/view';\n\nimport Setting from 'view/setting/Setting.svelte';\nimport { SettingStores, SyncStores } from 'app/stores';\n\nimport { setSettingUrl } from '../router';\nimport { reload, tapLog } from '../utils';\nimport { goToHome } from './home';\nimport * as backup from './backup';\nimport * as kv from 'app/kv';\n\nconst performDestroyStorage = () =>\n free.sequence([\n kv.remove('filteringTags'),\n kv.remove('hasExpiringFla'),\n kv.remove('version'),\n kv.remove('backupCode'),\n kv.remove('backupTimestamp'),\n destroy(),\n reload()\n ]);\n\nconst performCompactStorage = () =>\n cleanUp()\n\nconst performSyncStorage = (backupCode) =>\n free.sequence([\n setRef(SyncStores.syncStatus, SyncStores.SYNCING),\n free.of(backupCode)\n .chain(backup.sync)\n .call(free.bichain(\n (error) => free.sequence([\n setRef(SyncStores.syncStatus, SyncStores.FAILED),\n setRef(SyncStores.syncErrorMessage, error)\n ]),\n (_) => free.sequence([\n setRef(SyncStores.syncStatus, SyncStores.DONE),\n backup.saveCode(backupCode, new Date()),\n // presentSync()\n ])\n )\n )\n ])\n\n\nconst presentSync = () =>\n free.sequence([\n setRef(SyncStores.syncStatus, SyncStores.IDLE),\n free.bichain(\n () => setRef(SyncStores.savedCode, ''),\n setRef(SyncStores.savedCode),\n backup.getSavedCode(),\n ),\n free.bichain(\n () => setRef(SyncStores.savedTimestamp, ''),\n setRef(SyncStores.savedTimestamp),\n backup.getSavedTimestamp(),\n ),\n setRef(SyncStores.performSyncStorage, (code) =>\n addSop(() => performSyncStorage(code))\n ),\n ]);\n\nconst goToSettingPage = () =>\n free.sequence([\n viewMainPage(Setting),\n setSettingUrl(),\n presentSync(),\n setRef(SettingStores.performCleanupStorage, () =>\n addSop(() => performCompactStorage())\n ),\n setRef(SettingStores.performDestroyStorage, () =>\n addSop(() => performDestroyStorage())\n ),\n setRef(SettingStores.backFromSettingPage, () => addSop(() => goToHome())),\n ]);\n\nexport { goToSettingPage };\n","import * as R from 'ramda';\nimport * as kv from '../kv';\nimport * as free from 'fp/free';\n\nimport * as database from '../database';\nimport * as db_ops from '../db_ops';\nimport * as batch_ops from 'app/sop/batch_ops';\nimport * as stock_ops from './stock_ops';\nimport { tapLog } from 'app/utils';\n\nconst save = (version) => kv.set('version', version);\nconst load = () => kv.get(null, 'version');\n\nconst itemHasBatch = (itemId) =>\n free.of(itemId)\n .chain(batch_ops.getAll)\n .map(R.complement(R.isEmpty))\n\nconst updateItemStockStatusBaseOnBatch = (itemId) =>\n free.of(itemId)\n .chain(itemHasBatch)\n .map(R.cond([\n [R.equals(true), R.always(stock_ops.Status.has_stock)],\n [R.equals(false), R.always(stock_ops.Status.out_of_stock)]\n ]))\n .chain(stock_ops.updateItemStockStatus(itemId))\n\nconst migrateOutOfStockStatus = () =>\n free.of(db_ops.makeStartEndRangeAllDocOption('i_'))\n .chain(database.allDocs)\n .map(R.pluck('_id'))\n .map(R.map(updateItemStockStatusBaseOnBatch))\n .chain(free.sequence);\n\nconst migrate = (previousVersion) =>\n free.of(previousVersion)\n .chain(\n R.cond([\n [R.equals(1), R.always(migrateOutOfStockStatus())],\n [R.T, R.always(free.of({}))]\n ])\n )\n\nexport { save, load, migrate };\n","import * as R from 'ramda';\nimport * as free from 'fp/free';\nimport { setRef } from 'fp/ref';\nimport { addSop } from 'fp/sop';\nimport { viewMainPage, viewSubPage } from 'fp/view';\n\nimport Home from 'view/home/Home.svelte';\nimport InfoOnePager from 'view/info/InfoOnePager.svelte';\nimport HowToOnePager from 'view/info/HowToOnePager.svelte';\nimport Releases from 'view/info/Releases.svelte';\n\nimport { Nav } from 'app/stores';\nimport { presentGrid } from './grid';\nimport * as router from '../router';\nimport { goToItemCreation } from './item';\nimport { goToSettingPage } from './setting';\n\nimport * as version_ops from './version_ops';\nimport { tapLog } from 'app/utils';\n\nconst goToInfo = () => free.sequence([\n viewSubPage(Home, InfoOnePager, () => addSop(() => goToHome())),\n router.setInfoUrl(),\n presentGrid(),\n]);\n\nconst goToHowTo = () => free.sequence([\n viewSubPage(Home, HowToOnePager, () => addSop(() => goToHome())),\n router.setHowToUrl(),\n presentGrid(),\n]);\n\nconst goToRelease = () => free.sequence([\n viewSubPage(Home, Releases, () => addSop(() => goToHome())),\n router.setReleaseUrl(),\n presentGrid(),\n]);\n\nconst setupHome = () => free.sequence([\n //TODO: set this static NAV closure in ItemCration/ setting module instead?\n setRef(Nav.goToCreateItem, () => addSop(() => goToItemCreation())),\n setRef(Nav.goToSetting, () => addSop(() => goToSettingPage())),\n setRef(Nav.goToInfo, () => addSop(() => goToInfo())),\n setRef(Nav.goToHowTo, () => addSop(() => goToHowTo())),\n setRef(Nav.goToRelease, () => addSop(() => goToRelease())),\n setRef(Nav.backToHome, () => addSop(() => goToHome())),\n]);\n\nconst presentHome = () =>\n free.sequence([\n viewMainPage(Home),\n router.setHomeUrl(),\n presentGrid(),\n ]);\n\nconst currentVersion = 2;\n\nconst goToHome = () =>\n version_ops.load()\n .chain(\n R.cond([\n [R.equals(currentVersion), R.always(presentHome())],\n [\n R.isNil,\n R.always(free.sequence([\n presentHome(),\n version_ops.save(currentVersion)\n ]))\n ],\n [\n R.T,\n (previousVersion) => free.sequence([\n version_ops.migrate(previousVersion),\n version_ops.save(currentVersion),\n goToRelease(),\n ])\n ],\n ])\n )\n\nexport { setupHome, goToHome, goToInfo, goToHowTo, goToRelease };","import * as R from 'ramda';\nimport * as free from 'fp/free';\nimport { get, put } from 'app/database';\n\nconst L = {\n tags: R.lensProp('tags'),\n};\n\nconst getItemTags = (itemId) =>\n free\n .of(itemId) //\n .chain(get)\n .map(R.view(L.tags))\n .map(R.defaultTo([]))\n\nconst appendTagAndSort = R.curry((tag, tags) =>\n R.pipe(R.defaultTo([]), R.append(tag), R.sortBy(R.toLower))(tags)\n);\n\nconst addTag = R.curry((tag, itemDoc) =>\n R.over(L.tags, appendTagAndSort(tag), itemDoc)\n);\n\nconst removeTag = R.curry((tag, itemDoc) =>\n R.over(L.tags, R.without([tag]), itemDoc)\n);\n\nconst add = (itemId, tag) =>\n free\n .of(itemId) //\n .chain(get)\n .map(addTag(tag))\n .chain(put)\n\nconst remove = (itemId, tag) =>\n free\n .of(itemId) //\n .chain(get)\n .map(removeTag(tag))\n .chain(put)\n\nexport { getItemTags, add, remove }","import * as R from 'ramda';\nimport * as free from 'fp/free';\n\nimport * as filter_ops from './filter_ops';\nimport * as tag_ops from \"./tag_ops\";\n\nconst renameItemTag = (original, next) =>\n free.of(original)\n .map(R.of)\n // TODO: We do not need blob and name, just id\n .chain(filter_ops.getItemsWithTags)\n .map(R.pluck('itemId'))\n .chain((ids) =>\n free.sequence([\n R.traverse(free.of, (id) => tag_ops.remove(id, original), ids),\n R.traverse(free.of, (id) => tag_ops.add(id, next), ids)\n ]));\n\nconst renameSavedTagFilter = (original, next) =>\n filter_ops.getSavedTagFilter()\n .call(free.bichain(\n // Left, there is no saved filter, we pass the result as a free\n free.of,\n // Right, there is saved tag, proceed to chain\n R.ifElse(\n R.includes(original),\n (_) => free.sequence([\n filter_ops.removeFilterTag(original),\n filter_ops.addFilterTag(next),\n ]),\n free.of\n )\n )\n );\n\nconst removeItemTag = (original) =>\n free.of(original)\n .map(R.of)\n // TODO: We do not need blob and name, just id\n .chain(filter_ops.getItemsWithTags)\n .map(R.pluck('itemId'))\n .chain((ids) =>\n free.sequence([\n R.traverse(free.of, (id) => tag_ops.remove(id, original), ids)\n ]));\n\nconst removeSavedTagFilter = (original) =>\n filter_ops.removeFilterTag(original);\n\nconst renameTag = R.curry((original, next) =>\n free.parallel([\n renameItemTag(original, next),\n renameSavedTagFilter(original, next),\n ]));\n\nconst removeTag = (original) =>\n free.parallel([\n removeItemTag(original),\n removeSavedTagFilter(original),\n ]);\n\nexport { renameTag, removeTag }","import * as R from 'ramda';\n\nimport * as free from 'fp/free';\nimport { addSop } from 'fp/sop';\nimport { resetRef, setRef } from 'fp/ref';\nimport { viewMainPage } from 'fp/view';\n\nimport Item from 'view/item/Item.svelte';\nimport ItemCreation from 'view/item/ItemCreation.svelte';\n\nimport { setItemCreationUrl, setItemUrl } from '../router';\nimport { ItemStores, BatchStores, TagStores } from '../stores';\nimport { goToHome } from './home';\n\nimport * as batch_ops from './batch_ops';\nimport * as bulk_tag_ops from './bulk_tag_ops';\nimport * as filter_ops from './filter_ops';\nimport * as item_ops from './item_ops';\nimport * as stock_ops from './stock_ops';\nimport * as tag_ops from './tag_ops';\nimport { tapLog } from 'app/utils';\n\nconst performCreateItem = (name, blob) =>\n item_ops.create(name, blob)\n .chain(goToItem)\n .chain((_) => setRef(ItemStores.savedStatus, `Saved! ${name} is created.`))\n\nconst goToItemCreation = () =>\n free.sequence([\n viewMainPage(ItemCreation),\n setItemCreationUrl(),\n resetRef(ItemStores.photoBlob),\n setRef(ItemStores.performSave, (name, photoId) =>\n addSop(() => performCreateItem(name, photoId))\n ),\n ]);\n\nconst performDeleteItem = (itemId) =>\n free.sequence([\n item_ops.remove(itemId),\n goToHome()\n ]);\n\nconst performEditPhoto = (itemId, blob) =>\n free.sequence([\n item_ops.editPhoto(itemId, blob),\n goToItem(itemId),\n setRef(ItemStores.savedStatus, `Saved! New photo.`)\n ]);\n\nconst performEditName = (itemId, name) =>\n item_ops.editName(itemId, name) //\n .chain(setRef(ItemStores.name))\n .chain((_) => setRef(ItemStores.savedStatus, `Saved! Name is \"${name}\".`));\n\nconst performEditRemindDays = (itemId, days) =>\n item_ops.editRemindDays(itemId, days)\n .chain(setRef(ItemStores.remindDays))\n .chain((_) => setRef(ItemStores.savedStatus, `Saved! ${days} to remind.`));\n\nconst performEditNote = (itemId, note) =>\n item_ops.editNote(itemId, note)\n .chain(setRef(ItemStores.note))\n .chain((_) => setRef(ItemStores.savedStatus, `Saved new notes.`));\n\nconst presentNote = (itemId) =>\n item_ops.getItemNote(itemId)\n .chain(setRef(ItemStores.note));\n\nconst presentRemind = (itemId) =>\n item_ops.getItemRemindDays(itemId)\n .chain(setRef(ItemStores.remindDays));\n\nconst performCreateBatch = (itemId, expiryDate) =>\n free.sequence([\n batch_ops.create(itemId, expiryDate),\n stock_ops.refreshItemStockStatus(itemId),\n presentBatches(itemId),\n setRef(ItemStores.savedStatus, `Saved new batch`)\n ]);\n\nconst performDeleteBatch = (itemId, batchId) =>\n free.sequence([\n batch_ops.remove(batchId),\n stock_ops.refreshItemStockStatus(itemId),\n presentBatches(itemId),\n setRef(ItemStores.savedStatus, `Saved. Removed a batch`)\n ]);\n\nconst makeDeleteBatch = (itemId, batches) =>\n R.map((batch) => () => addSop(() => performDeleteBatch(itemId, batch._id)))(\n batches\n );\n\nconst performBatchCounting = (itemId, batches, operation) =>\n R.map(\n (batch) => () =>\n addSop(() => free.sequence([\n operation(batch),\n stock_ops.refreshItemStockStatus(itemId),\n presentBatches(itemId),\n setRef(ItemStores.savedStatus, `Saved. Updated a batch`)\n ]))\n )(batches);\n\nconst performBatchDirectUpdate = (itemId, batches) =>\n R.map(\n (batch) => (count) =>\n addSop(() => free.sequence([\n batch_ops.updateAndSaveCount(count, batch),\n stock_ops.refreshItemStockStatus(itemId),\n presentBatches(itemId),\n setRef(ItemStores.savedStatus, `Saved. Updated a batch`)\n ]))\n )(batches);\n\nconst presentBatches = (itemId) =>\n batch_ops.getAll(itemId)\n .chain((batches) =>\n free.sequence([\n setRef(BatchStores.batches, batches),\n setRef(BatchStores.performBatchInc, performBatchCounting(itemId, batches, batch_ops.incAndSaveCount)),\n setRef(BatchStores.performBatchDec, performBatchCounting(itemId, batches, batch_ops.decAndSaveCount)),\n setRef(BatchStores.performBatchUpdate, performBatchDirectUpdate(itemId, batches)),\n setRef(BatchStores.performDeleteBatch, makeDeleteBatch(itemId, batches)),\n ])\n );\n\nconst performAddNewTag = (itemId, tag) =>\n free.sequence([\n tag_ops.add(itemId, tag),\n presentTags(itemId),\n setRef(ItemStores.savedStatus, `Saved. Added #${tag}.`)\n ]);\n\nconst performRemoveTag = (itemId, tag) =>\n free.sequence([\n tag_ops.remove(itemId, tag),\n presentTags(itemId),\n setRef(ItemStores.savedStatus, `Saved. Removed #${tag}.`)\n ]);\n\nconst performTagRenaming = (itemId, original, next) =>\n free.sequence([\n bulk_tag_ops.renameTag(original, next),\n presentTags(itemId),\n setRef(ItemStores.savedStatus, `Saved. Renamed #${original} to #${next}.`)\n ]);\n\nconst performTagRemoving = (itemId, tag) =>\n free.sequence([\n bulk_tag_ops.removeTag(tag),\n presentTags(itemId),\n setRef(ItemStores.savedStatus, `Saved. Deleted #${tag} from all items.`)\n ]);\n\nconst presentTags = (itemId) =>\n free\n // Convert the two arguments to a list\n .of(R.curryN(2, R.unapply(R.identity)))\n .ap(filter_ops.getAllTags())\n .ap(tag_ops.getItemTags(itemId))\n .chain(([allTags, itemTags]) => free.sequence([\n setRef(TagStores.tags, itemTags),\n setRef(TagStores.allTags, allTags),\n setRef(TagStores.allTagsSelected, R.map((tag) => R.includes(tag, itemTags), allTags)),\n setRef(\n TagStores.performToggleTagFilter,\n R.map(\n (tag) => R.ifElse(\n R.flip(R.includes)(itemTags),\n (tag) => () => addSop(() => performRemoveTag(itemId, tag)),\n (tag) => () => addSop(() => performAddNewTag(itemId, tag))\n )(tag),\n allTags\n )\n ),\n setRef(TagStores.performRenameTag,\n R.map((tag) => (next) => addSop(() => performTagRenaming(itemId, tag, next)), allTags)\n ),\n setRef(TagStores.performRemoveTag,\n R.map((tag) => () => addSop(() => performTagRemoving(itemId, tag)), allTags)\n ),\n ]))\n\nconst presentItem = (itemId) =>\n item_ops.getItemWithPhoto(itemId).chain((itemWithBlob) =>\n free.sequence([\n setRef(ItemStores.name, itemWithBlob.name),\n setRef(ItemStores.photoBlob, itemWithBlob.blob),\n ])\n );\n\nconst goToItem = (itemId) =>\n free.sequence([\n viewMainPage(Item),\n setItemUrl(itemId),\n resetRef(ItemStores.savedStatus),\n setRef(ItemStores.nameError, null),\n setRef(ItemStores.performEditName, (newName) =>\n addSop(() => performEditName(itemId, newName))\n ),\n setRef(ItemStores.performEditRemindDays, (newDays) =>\n addSop(() => performEditRemindDays(itemId, newDays))\n ),\n setRef(BatchStores.performAddBatch, (expiryDate, count) =>\n addSop(() => performCreateBatch(itemId, expiryDate))\n ),\n setRef(TagStores.performAddNewTag, (tag) =>\n addSop(() => performAddNewTag(itemId, tag))\n ),\n setRef(ItemStores.performEditPhoto, (blob) =>\n addSop(() => performEditPhoto(itemId, blob))\n ),\n setRef(ItemStores.performEditNote, (note) =>\n addSop(() => performEditNote(itemId, note))\n ),\n setRef(ItemStores.performDeleteItem, () =>\n addSop(() => performDeleteItem(itemId))\n ),\n presentItem(itemId),\n presentRemind(itemId),\n presentTags(itemId),\n presentBatches(itemId),\n presentNote(itemId),\n ]);\n\nexport { goToItem, goToItemCreation };\n","import daggy from 'daggy';\nimport Future from 'fluture';\nimport page from 'page';\nimport { Path } from 'path-parser';\n\nimport * as free from 'fp/free';\nimport { addSop } from 'fp/sop';\n\nimport { goToItem, goToItemCreation } from 'app/sop/item';\nimport { goToSettingPage } from 'app/sop/setting';\nimport { goToHome, goToHowTo, goToInfo, goToRelease } from 'app/sop/home';\n\nconst Navigation = daggy.taggedSum('Navigation', {\n Show: ['path', 'params'],\n});\n// @ts-ignore\nconst { Show } = Navigation;\n\nconst nagivationToFuture = (p) =>\n p.cata({\n Show: (path, params) =>\n Future((reject, resolve) => {\n try {\n const newPath = new Path(path).build(params, { ignoreConstraints: true });\n\n if (newPath != page.current) {\n // @ts-ignore wrong type definition version?\n page.show(newPath, page.prevContext, false, true);\n }\n\n resolve(newPath);\n } catch (error) {\n reject(`Navigation error: ${error} when path is ${path} and params are ${JSON.stringify(params)}`);\n }\n return () => { };\n }),\n });\n\nconst setUrl = (path, params) => free.lift(Show(path, params));\n\n\nconst gridPath = '/';\nconst itemCreatePath = '/item';\nconst itemPath = '/item/:itemId';\nconst settingPath = '/setting';\nconst infoPath = '/info';\nconst howtoPath = '/howto';\nconst releasePath = '/releases';\n\nconst setHomeUrl = () => setUrl(gridPath);\nconst setItemUrl = (itemId) => setUrl(itemPath, { 'itemId': encodeURIComponent(itemId) });\nconst setItemCreationUrl = () => setUrl('/item');\nconst setSettingUrl = () => setUrl(settingPath);\nconst setInfoUrl = () => setUrl(infoPath);\nconst setHowToUrl = () => setUrl(howtoPath);\nconst setReleaseUrl = () => setUrl(releasePath);\n\nfunction start() {\n page('/', () => {\n addSop(() => goToHome());\n });\n\n page(itemCreatePath, (ctx) => {\n addSop(() => goToItemCreation());\n });\n\n page(itemPath, (ctx) => {\n addSop(() => goToItem(ctx.params.itemId));\n });\n\n page(settingPath, (ctx) => {\n addSop(() => goToSettingPage());\n });\n\n page(infoPath, (ctx) => {\n addSop(() => goToInfo());\n });\n\n page(howtoPath, (ctx) => {\n addSop(() => goToHowTo());\n });\n\n page(releasePath, (ctx) => {\n addSop(() => goToRelease());\n });\n\n page('*', () => {\n console.error('Unknown path');\n });\n page();\n}\n\nexport const navigationInterpretor = [Navigation, nagivationToFuture];\nexport { start, setHomeUrl, setHowToUrl, setInfoUrl, setItemUrl, setItemCreationUrl, setSettingUrl, setReleaseUrl };\n","import App from 'view/App.svelte';\n\nimport { addSop, addToastErrorSop, registerStaticInterpretor } from 'fp/sop';\nimport { freeUtilsInterpretor } from 'fp/free';\n\nimport { navigationInterpretor, start } from 'app/router';\nimport { gridSetup } from 'app/sop/grid';\nimport { setupHome } from 'app/sop/home';\nimport { setupDatabaseInterpretor } from 'app/database';\nimport { setupKVInterpretor } from 'app/kv';\nimport { utilsInterpretor } from 'app/utils';\nimport { setupBackupInterpretor } from 'app/sop/backup';\nimport { toast } from 'fp/view';\n\n// Use Free Utils\nregisterStaticInterpretor(freeUtilsInterpretor);\n\n// Setup SOP manager\nregisterStaticInterpretor(setupDatabaseInterpretor());\nregisterStaticInterpretor(setupKVInterpretor());\nregisterStaticInterpretor(navigationInterpretor);\nregisterStaticInterpretor(utilsInterpretor);\nregisterStaticInterpretor(setupBackupInterpretor());\n\naddToastErrorSop((error) => () => toast(error));\naddSop(() => gridSetup());\naddSop(() => setupHome());\n\nstart();\n\n// Kick start Svelte\nconst app = new App({\n target: document.body,\n});\n\nexport default app;\n"],"names":["noop","identity","x","assign","tar","src","k","run","fn","blank_object","Object","create","run_all","fns","forEach","is_function","thing","safe_not_equal","a","b","src_url_equal_anchor","src_url_equal","element_src","url","document","createElement","href","subscribe","store","callbacks","unsub","unsubscribe","get_store_value","value","_","component_subscribe","component","callback","$$","on_destroy","push","create_slot","definition","ctx","$$scope","slot_ctx","get_slot_context","slice","get_slot_changes","dirty","lets","undefined","merged","len","Math","max","length","i","update_slot_base","slot","slot_definition","slot_changes","get_slot_context_fn","slot_context","p","get_all_dirty_from_scope","exclude_internal_props","props","result","null_to_empty","action_destroyer","action_result","destroy","is_client","window","now","performance","Date","raf","cb","requestAnimationFrame","tasks","Set","run_tasks","task","c","delete","f","size","loop","promise","Promise","fulfill","add","abort","append","target","node","appendChild","get_root_for_style","root","getRootNode","ownerDocument","host","append_empty_stylesheet","style_element","element","style","head","append_stylesheet","insert","anchor","insertBefore","detach","parentNode","removeChild","destroy_each","iterations","detaching","d","name","svg_element","createElementNS","text","data","createTextNode","space","empty","listen","event","handler","options","addEventListener","removeEventListener","prevent_default","preventDefault","call","this","attr","attribute","removeAttribute","getAttribute","setAttribute","to_number","set_data","wholeText","set_input_value","input","set_style","key","important","setProperty","crossorigin","is_crossorigin","parent","error","add_resize_listener","getComputedStyle","position","iframe","tabIndex","source","contentWindow","onload","toggle_class","toggle","classList","custom_event","type","detail","bubbles","e","createEvent","initCustomEvent","HtmlTag","constructor","n","html","h","m","nodeName","t","innerHTML","Array","from","childNodes","active_docs","current_component","active","create_rule","duration","delay","ease","uid","step","keyframes","rule","str","hash","charCodeAt","doc","stylesheet","__svelte_stylesheet","sheet","current_rules","__svelte_rules","insertRule","cssRules","animation","delete_rule","previous","split","next","filter","anim","indexOf","deleted","join","deleteRule","clear","add_transform","getBoundingClientRect","left","top","transform","set_current_component","get_current_component","Error","onMount","on_mount","onDestroy","createEventDispatcher","setContext","context","set","getContext","get","bubble","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","resolve","update_scheduled","schedule_update","then","flush","tick","add_render_callback","add_flush_callback","flushing","seen_callbacks","update","pop","has","fragment","before_update","after_update","wait","dispatch","direction","kind","dispatchEvent","outroing","outros","group_outros","r","check_outros","transition_in","block","local","transition_out","o","null_transition","create_in_transition","params","animation_name","config","running","cleanup","go","easing","css","start_time","end_time","started","start","invalidate","end","create_out_transition","group","reset","create_bidirectional_transition","intro","running_program","pending_program","clear_animation","init","program","abs","globals","globalThis","global","destroy_block","lookup","outro_and_destroy_block","fix_and_outro_and_destroy_block","update_keyed_each","old_blocks","get_key","dynamic","list","create_each_block","get_context","old_indexes","new_blocks","new_lookup","Map","deltas","child_ctx","will_move","did_move","first","new_block","old_block","new_key","old_key","get_spread_update","levels","updates","to_null_out","accounted_for","get_spread_object","spread_props","bind","index","bound","create_component","mount_component","customElement","new_on_destroy","map","destroy_component","instance","create_fragment","not_equal","append_styles","parent_component","on_disconnect","skip_bound","ready","ret","rest","fill","make_dirty","hydrate","nodes","children","l","SvelteComponent","$destroy","$on","splice","$set","$$props","obj","$$set","keys","circInOut","sqrt","cubicInOut","pow","cubicOut","fade","linear","opacity","fly","y","target_opacity","od","u","slide","height","parseFloat","padding_top","paddingTop","padding_bottom","paddingBottom","margin_top","marginTop","margin_bottom","marginBottom","border_top_width","borderTopWidth","border_bottom_width","borderBottomWidth","min","scale","sd","_t","crossfade","_a","fallback","defaults","s","prototype","hasOwnProperty","getOwnPropertySymbols","propertyIsEnumerable","__rest","to_receive","to_send","transition","items","counterparts","rect","to","dx","dy","dw","width","dh","stopPropagation","$$show","seen","entry","show","sortedKeys","sort","toString","valueOf","Infinity","JSON","stringify","isNaN","NaN","toISOString","message","concat","test","values","entries","String","module","$$type","TAG","VALUES","TYPE","RET_TYPE","TAGS","SHOW","tagged","typeName","fields","proto","tagged$toString","typeRep","makeConstructor","typeRepToString","is","isType","makeConstructorFromObject","taggedSum","constructors","cata","sum$cata","sum$toString","tags","tag","tagProto","defProp","makeValue","sum$isUnit","sum$isVariant","sum$ctrToString","fs","idx","TypeError","apply","arrToString","variant","val","Boolean","unit","argumentsLength","prop","desc","enumerable","writable","configurable","defineProperty","arr","arguments","g","j","field","require$$0","require$$1","pattern","RegExp","parse","namespace","version","groups","exec","Number","FL","ordinal","List","tail","toJSON","toArray","nil","isNil","cons","reverse","xs","ys","captureStackTrace","stack","_debug","debug","captureContext","setImmediate","setTimeout","raise","showArg","typeError","invalidArgument","it","at","expected","actual","invalidArgumentOf","invalidFuture","id","invalidVersion","invalidFutureArgument","assignUnenumerable","wrapException","caught","callingFuture","origin","ensureError","zs","cat","future","reason","withExtraContext","contextToStackTrace","isFunction","isObject","hasMethod","method","isApply","isFunctor","Next","done","Done","getArgs","args","arity","arg","any","pred","func","isFuture","positiveInteger","isNumber","application","prev","charAt","toUpperCase","invalidArity","application1","Future","computation","Computation","createInterpreter","interpret","Interpreter","$1","$2","$3","_interpret","_transform","ChainTransformation","chainRec$recur","pipe","other","ApTransformation","mapper","MapTransformation","lmapper","rmapper","BimapTransformation","AltTransformation","extractLeft","extractRight","transformation","Transformer","isTransformer","$","rec","rej","res","open","cancel","cont","Never","_isNever","never","Crash","crash","Reject","reject","Resolve","settled","cold","hot","async","nextHot","nextCold","settle","exception","rejected","resolved","warmupActions","drain","early","terminator","Sequence$cancel","reduce","action","BaseTransformation","wrapHandler","createTransformation","Transformation","clearTimeout","AndTransformation","invalidPromise","BichainTransformation","bichain","context1","context2","context3","Eager","_this","crashed","earlyCrash","earlyReject","createParallelTransformation","ParallelTransformation","eager","Parallel$early","PairTransformation","Cold","Pending","Crashed","Rejected","Resolved","Queued","Cache","_state","_addToQueue","_value","_queue","_cancel","_queued","_drainQueue","queue","state","monad","chain","CoalesceTransformation","coalesce","fork","Undetermined","Synchronous","Asynchronous","invalidState","iterator","timing","isIterator","isBoolean","resource","_acquire","_dispose","_consume","cancelConsume","Hook$done","Hook$rec","Hook$dispose","disposal","invalidDisposal","Hook$cancelDisposal","Hook$disposalRejected","Hook$cancelConsumption","Hook$consumptionException","Hook$consumptionRejected","Hook$consumptionResolved","cancelAcquire","consumption","invalidConsumption","err","ParallelApTransformation","futureArray","isArray","Parallel","futures","cancels","out","cursor","blocked","Parallel$cancel","Parallel$run","Parallel$drain","emptyArray","parallel","ms","RaceTransformation","ConcurrentFuture","sequential","Par","zeroInstance","_isPlaceholder","_curry1","f1","_curry2","f2","_b","_concat","set1","set2","len1","len2","_arity","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","_curryN","received","combined","argsIdx","combinedIdx","curryN","origFn","_curry3","f3","_c","_isTransformer","_dispatchable","methodNames","xf","_isArray","transducer","_map","functor","_isString","nodeType","XWrap","acc","thisObj","_iterableReduce","iter","_methodReduce","methodName","symIterator","Symbol","_reduce","_xwrap","_isArrayLike","_arrayReduce","XMap","_xfBase","_has","hasEnumBug","nonEnumerableProps","hasArgsEnumBug","contains","item","nIdx","ks","checkArgsLength","_isArguments","_xmap","isInteger","offset","pathsArray","paths","_isInteger","nth","pathAr","path","applyF","applyX","ap","el","vals","mapValues","applySpec","spec","v","pluck","assocPath","nextObj","assoc","_isFunction","lifted","liftN","not","_pipe","_checkForMethod","methodname","fromIndex","toIndex","compose","_identity","_arrayFromIterator","_includesWith","_uniqContentEquals","aIterator","bIterator","stackA","stackB","eq","_equals","aItem","_objectIs","typeA","equals","match","_functionName","ignoreCase","multiline","sticky","unicode","keysA","extendedStackA","extendedStackB","_includes","inf","_indexOf","_quote","replace","pad","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","toFixed","_filter","_isObject","XFilter","filterable","_complement","_toString","recur","mapPairs","_toISOString","repr","pairs","pair","after","hasOrAdd","shouldAdd","prevSize","_items","_nativeSet","bIdx","_Set","XTake","condition","onTrue","onFalse","appliedItem","list1","list2","lookupList","filteredList","uniq","flip","getter","setter","toFunctorFn","focus","lens","_of","Identity","regex","replacement","of","traversable","sequence","reduceRight","prepend","over","always","aa","bb","ws","trim","beginRx","endRx","Const","subscriber_queue","readable","stop","subscribers","new_value","run_queue","subscriber","derived","stores","initial_value","single","stores_array","auto","inited","pending","sync","unsubscribers","FreeMonad","daggy","Impure","Pure","fold","kleisli_comp","lift","command","foldMap","interpreter","intruction_of_arg","interpreted","fluture.isFuture","fluture.chain","console","assert","MAX_THREAD","FreeUtils","Bichain","Bimap","Left","Right","freeMonads","parallelConverge","R.converge","R.sequence","bimap","R.curry","right","freeMonad","freeUtilsInterpretor","fluture.bichain","fluture.coalesce","R.map","fm","fluture.parallel","fluture.reject","fluture.resolve","instruction_of_arg","found","find","for","idle","working","toastErrorSop","sopId","getDeref","refget","refset","sopManager","sopQueue","mode","sop","continuedDeref","sopFn","deref","shift","constructInterpretor","unshift","addSop","derefAction","staticInterpretors","dynamicInterpretorGetters","derefInterpretors","registerStaticInterpretor","interpretor","derefer","builder","R.pipe","R.concat","createRef","defaultValue","originalSet","owner","hotValue","verifyOwnership","changeOwner","log","newValue","Ref","Deref","Get","Reset","Update","refToFuture","ref","setRef","free.lift","resetRef","ox","oy","transformOrigin","sx","sy","initial","pausable","dismissable","reversed","theme","toast","count","_obj","msg","opts","param","conf","findIndex","_init","createToast","is_date","tick_spring","last_value","current_value","target_value","delta","velocity","dt","stiffness","damping","inv_mass","precision","getTime","next_value","spring","last_time","current_token","inv_mass_recovery_rate","cancel_task","token","hard","soft","rate","fulfil","get_interpolator","bi","interpolators","progress","previous_task","interpolate","elapsed","tweened","close","autoclose","$progress","paused","onpop","sendIdTo","bottom","$toast","primaryView","modalView","closeModal","toastMessage","navigator","clipboard","writeText","modalViewComponent","$modalView","isarray","pathToRegexp_1","pathToRegexp","parse_1","compile_1","compile","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","tokens","escaped","prefix","capture","suffix","asterisk","repeat","optional","delimiter","escapeGroup","substr","matches","segment","encodeURIComponent","escapeString","attachKeys","re","flags","sensitive","regexpToRegexp","arrayToRegexp","parts","stringToRegexp","strict","route","lastToken","endsWithSlash","loaded","hasDocument","hasWindow","hasHistory","history","hasProcess","process","clickEvent","ontouchstart","isLocation","location","Page","exits","current","_decodeURLComponents","_base","_strict","_running","_hashbang","clickHandler","_onpopstate","createPage","pageInstance","pageFn","page","base","back","redirect","exit","configure","sameOrigin","Context","Route","middleware","unhandled","handled","_window","_getBase","pathname","search","canonicalPath","escapeRegExp","_page","hashbang","pageBase","title","querystring","_decodeURLEncodedURIComponent","globalPage","regexp","decodeURLComponents","_popstate","popstate","_click","click","loc","protocol","enable","prevContext","pushState","inst","save","nextExit","nextEnter","_which","metaKey","ctrlKey","shiftKey","defaultPrevented","eventPath","composedPath","svg","hasAttribute","link","_samePath","baseVal","orig","readyState","which","button","_toURL","URL","anc","hostname","port","decodeURIComponent","replaceState","self","routePath","qsIndex","page_js","default_1","default","factory","__assign","makeOptions","arrayFormat","booleanFormat","nullFormat","encodeValue","decodeValue","encode","encodeNull","encodeBoolean","encodeName","getNameEncoder","encodeArray","pos","getSearch","rawName","bracketPosition","hasBrackets","parseName","currentValue","decodedValue","decode","excludeSubDelimiters","encodeURIComponentExcludingSubDelims","encodingMethods","uri","encodeURI","uriComponent","none","legacy","decodingMethods","decodeURI","encodeParam","encoding","isSpatParam","encoder","defaultOrConstrained","rules","tokenise","some","otherVal","Function","exists","defaultOptions","urlParamsEncoding","Path","hasUrlParams","hasSpatParam","hasMatrixParams","hasQueryParams","spatParams","getParams","urlParams","queryParams","createPath","isQueryParam","caseSensitive","strictTrailingSlash","optTrailingSlash","urlTest","partialTest","delimited","upToDelimiter","existingVal","appendQueryParam","build","ignoreConstraints","ignoreSearch","encodedUrlParams","missingParameters","every","searchPart","paramName","sparams","predicate","viewMainPage","viewSubPage","primaryComponent","subComponent","subViewClosed","free.sequence","ref.setRef","Nav","goToCreateItem","goToSetting","goToInfo","goToHowTo","goToRelease","backToHome","GridStores","goToItem","FilterStores","allTags","allTagsSelected","performToggleTagFilter","performClearFilter","expiringItemCount","expiringFilterSelected","performToggleExpiringFilter","outOfStockItemCount","outOfStockFilterSelected","performToggleOutOfStockFilter","ItemStores","nameError","photoBlob","editingPhotoBlob","remindDays","note","savedStatus","performEditName","performEditPhoto","performDeleteItem","backFromEditPhoto","performSave","performEditRemindDays","performEditNote","TagStores","performAddNewTag","performRenameTag","performRemoveTag","BatchStores","batches","performAddBatch","performBatchInc","performBatchDec","performBatchUpdate","performDeleteBatch","SettingStores","spaceTaken","spaceLeft","performCleanupStorage","performDestroyStorage","backFromSettingPage","SyncStores","savedCode","savedTimestamp","syncStatus","syncErrorMessage","performSyncStorage","IDLE","SYNCING","DONE","FAILED","label","classes","actions","expanded","$backToHome","statusText","getCropSize","imgWidth","imgHeight","aspect","restrictPosition","imageSize","cropSize","zoom","restrictPositionCoord","maxPosition","getDistanceBetweenPoints","pointA","pointB","limitArea","shouldRound","round","noOp","getCenter","image","crop","minZoom","maxZoom","cropShape","showGrid","zoomSpeed","crossOrigin","cropperSize","naturalWidth","naturalHeight","containerEl","containerRect","imgEl","dragStartPosition","dragStartCrop","lastPinchDistance","rafDragTimeout","rafZoomTimeout","isDragging","complete","onImgLoad","computeSizes","emitCropData","helpers.getCropSize","getMousePoint","clientX","clientY","getTouchPoint","touch","onDragStart","onDrag","cancelAnimationFrame","offsetX","offsetY","requestedPosition","helpers.restrictPosition","onPinchStart","touches","helpers.getDistanceBetweenPoints","helpers.getCenter","onPinchMove","center","distance","setNewZoom","newZoom","point","zoomPoint","getPointOnContainer","zoomTarget","getPointOnImage","croppedAreaPercentages","croppedAreaPixels","imgSize","limitAreaFn","widthInPixels","heightInPixels","sizePixels","helpers.computeCroppedArea","percent","pixels","deltaY","getCroppedImg","imageSrc","pixelCrop","mimetype","Image","canvas","safeArea","translate","drawImage","getImageData","putImageData","toBlob","require","code","exports","_dereq_","inherits","Multimath","mm_unsharp_mask","mm_resize","MathLib","requested_features","__requested_features","features","js","wasm","has_wasm","use","resizeAndUnsharp","cache","resize","unsharpAmount","unsharp_mask","toWidth","toHeight","unsharpRadius","unsharpThreshold","multimath","clampTo8","convolveHorizontally","dest","srcW","srcH","destW","filters","filterPtr","filterShift","filterSize","srcPtr","srcY","destX","filterVal","srcOffset","destOffset","convolveVertically","wasm_fn","wasm_src","createFilters","resetAlpha","dst","ptr","destH","scaleX","scaleY","Uint8Array","quality","alpha","filtersX","filtersY","tmp","FILTER_INFO","FIXED_FRAC_BITS","toFixedPoint","num","srcSize","destSize","destPixel","srcPixel","srcFirst","srcLast","filterElementSize","floatFilter","fxpFilter","total","pxl","floatVal","filterTotal","leftNotEmpty","rightNotEmpty","filterFunction","scaleInverted","scaleClamped","srcWindow","win","maxFilterElementSize","floor","packedFilter","Int16Array","packedFilterPtr","slowCopy","subarray","ceil","Float32Array","xpi","PI","sin","cos","asUint8Array","buffer","byteLength","IS_LE","Uint32Array","__","copyInt16asLE","target_offset","src_offset","tmp_offset","__align","filtersX_offset","filtersY_offset","alloc_bytes","__instance","mem","__memory","mem32","src32","convolveHV","_convolveHV","glur_mono16","hsv_v16","img","Uint16Array","amount","radius","threshold","v1","v2","vmul","diff","iTimes4","brightness","blured","amountFp","thresholdFp","img_bytes_cnt","hsv_bytes_cnt","blur_bytes_cnt","blur_line_byte_cnt","blur_coeffs_byte_cnt","img_offset","hsv_offset","blur_offset","blur_tmp_offset","blur_line_offset","blur_coeffs_offset","exp","img32","_hsv_v16","blurMono16","_blurMono16","unsharp","_unsharp","GC_INTERVAL","Pool","available","acquired","lastId","timeoutId","acquire","release","_this2","lastUsed","gc","_this3","MIN_INNER_TILE_SIZE","fromWidth","fromHeight","srcTileSize","destTileBorder","minScale","stageCount","PIXEL_EPSILON","pixelFloor","nearest","pixelCeil","innerX","innerY","toTileWidth","toTileHeight","innerTileWidth","innerTileHeight","tile","tiles","toX","toY","toInnerX","toInnerY","toInnerWidth","toInnerHeight","objClass","isCanvas","cname","isImage","isImageBitmap","limiter","concurrency","roll","cib_quality_name","cib_support","createCanvas","createImageBitmap","resizeWidth","resizeHeight","resizeQuality","bitmap","status","worker_offscreen_canvas_support","OffscreenCanvas","btoa","workerPayload","w","Worker","onmessage","ev","onerror","postMessage","can_use_canvas","usable","createImageData","cib_can_use_region","mathLib","tileOpts","returnBitmap","srcBitmap","toImageData","ImageData","Uint8ClampedArray","_canvas","b1","b2","gaussCoef","sigma","g1","g2","convolveMono16","line","coeff","prev_src","curr_src","curr_out","prev_out","prev_prev_out","src_index","out_index","line_index","coeff_a0","coeff_a1","coeff_b1","coeff_b2","tmp_line","ctor","superCtor","super_","TempCtor","base64decode","hasWebAssembly","DEFAULT_OPTIONS","MultiMath","__cache","__init_promise","__modules","modules","__wasm","__isLE","all","WebAssembly","__base64decode","__reallocate","bytes","Memory","mem_size","grow","memsize","env_extra","Module","env_base","memoryBase","memory","tableBase","table","Table","Instance","env","number","reminder","BASE64_MAP","bits","tailbits","wa","bin","propIsEnumerable","toObject","shouldUseNative","test1","getOwnPropertyNames","test2","fromCharCode","test3","letter","symbols","bundleFn","sources","wkey","cacheKeys","random","wcache","skey","scache","workerSources","resolveSources","depPath","depKey","webkitURL","mozURL","msURL","blob","Blob","bare","workerUrl","createObjectURL","worker","objectURL","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","minLen","_arrayLikeToArray","arr2","_i","_s","_e","_arr","_n","_d","webworkify","utils","createStages","createRegions","singletones","NEED_SAFARI_FIX","userAgent","hardwareConcurrency","DEFAULT_PICA_OPTS","tmpCanvas","DEFAULT_RESIZE_OPTS","CAN_NEW_IMAGE_DATA","CAN_CREATE_IMAGE_BITMAP","CAN_USE_CANVAS_GET_IMAGE_DATA","CAN_USE_OFFSCREEN_CANVAS","CAN_USE_CIB_REGION_FOR_IMAGE","workerFabric","terminate","revokeObjectURL","Pica","limiter_key","__limit","cib","ww","__workersPool","__mathlib","__initPromise","ImageBitmap","wpool_key","checkCibResize","checkOffscreenCanvas","initMath","mathlib","checkCibRegion","__invokeResize","__mathCache","cancelToken","transfer","preload","wasm_nodule","__extractTileData","stageEnv","extractTo","srcImageBitmap","srcCtx","tmpCtx","globalCompositeOperation","__landTileData","toCtx","__tileAndResize","isImageBitmapReused","processTile","canceled","srcImageData","imageBitmap","jobs","__destTileBorder","__processStages","stages","_this4","_stages$shift2","isLastStage","__resizeViaCreateImageBitmap","_this5","iData","_this6","DEST_TILE_BORDER","resizeBuffer","_this7","mimeType","convertToBlob","asString","atob","toDataURL","asBuffer","pick","pick_pica_resize_options","createCommonjsModule","commonjsRequire","pica","image_traverse","to_hex","utf8_decode","escape","is_uint8array","ExifParser","jpeg_bin","exif_start","exif_end","sig","big_endian","each","on_entry","aborted","read_uint32","ifds_to_read","scan_ifd","ifds","ifd0","is_subifd_link","format","ifd","ifd1","ifd_no","data_length","output","write_uint16","write_uint32","written_offset","ifd_start","ifd_end","entry_offset","link_offset","data_offset","next_ifd","read_uint16","exif_format_length","exif_format_read","entry_count","comp_length","comp_offset","is_big_endian","is_jpeg","jpeg_segments_each","on_segment","inside_scan","segment_code","segment_length","byte1","byte2","jpeg_segments_filter","ranges","out_length","new_segment","new_range","range","jpeg_exif_tags_each","on_exif_entry","jpeg_exif_tags_filter","stop_search","new_exif","header","jpeg_add_comment","comment","comment_inserted","segment_count","unescape","utf8_encode","csegment","jpeg_patch_exif","_getUint8Array","orig_blob","exif_is_big_endian","orientation_offset","orientation","orientation_patch","jpeg_rotate_canvas","out_canvas","restore","jpeg_attach_orig_segments","out_blob","data_out","segments","jpeg_plugins","reducer","before","ImageBlobReduce","initialized","plugin","_blob_to_image","_calculate_size","_cleanup","_create_blob","_env","toCanvas","method_name","old_fn","image_url","scale_factor","transform_width","transform_height","pica_opts","arrayBuffer","buf","fr","FileReader","readAsArrayBuffer","onabort","imageBlobReduce","photoChanged","photoCancelled","startCamera","cameraInput","isCropping","files","resizedBlob","photoUrl","isTakingPhoto","updatePhotoUrl","workingName","isEditingName","editName","cancelled","clickedToActivate","preventEditName","inputElement","select","longpress","handle_mousedown","evt","timeout","CustomEvent","selected","dense","workingTag","addNewTag","$performAddNewTag","original","submit","isRemoving","isRenaming","renamingIndex","isRenamingTag","handleLongPress","$allTags","$performRenameTag","$performRemoveTag","isEditingTag","isEditing","$remindDays","$performEditRemindDays","M","weekdays","months","z","utcOffset","date","year","month","clone","D","Q","toLowerCase","S","O","locale","$L","utc","$u","$x","$offset","$d","substring","UTC","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","isSame","startOf","endOf","isAfter","isBefore","$g","unix","toDate","$locale","weekStart","daysInMonth","subtract","invalidDate","meridiem","YY","YYYY","MM","MMM","monthsShort","MMMM","DD","dd","weekdaysMin","ddd","weekdaysShort","dddd","H","HH","hh","A","mm","ss","SSS","Z","getTimezoneOffset","toUTCString","extend","$i","isDayjs","en","Ls","PICKER_TYPES","updateSelected","property","newState","day","zeroDay","dayjs","startOfWeekIndex","shouldEnlargeDay","hasChosen","enlargeDay","activeView","activeViewDirection","getState","getFromStore","getSelectableVector","isSelectable","clamping","clamped","clampValue","clampable","vector","boundaryKey","boundary","setActiveView","newActiveView","newIndex","setYear","setMonth","setDay","accum","extraState","selectDay","getCalendarPage","last","outsider","days","setDate","storeContextKey","keyControlsContextKey","themeContextKey","send","receive","popover","triggerWidth","triggerHeight","contentsWrapper","isOpen","translateY","translateX","dist","innerHeight","body","clientWidth","getDistanceToEdges","getX","getY","light","calendar","maxWidth","legend","shadow","colors","primary","highlight","background","hover","border","font","regular","large","grid","disabledOpacity","outsiderOpacity","appliedTheme","defaultTheme","lightTheme","getTheme","overrides","KEY_CODES","justThrottle","interval","throttledFn","leading","trailing","throttleWrapper","callNow","limit","currentCtx","includes","$currentCtx","mapping","keyCode","eventHandler","throttle","template","cellCount","itemCount","vertical","useCache","idKey","forceUpdate","inRange","dim","visibleData","$o","$initialized","$force","$visibleData","cellHeight","baseOffset","getCached","gridStyle","$dim","scrollStep","yi","lastTouch","updateY","maxSteps","emitY","wheelListener","touchstartListener","pageY","touchmoveListener","touchAction","$store","KEY_MAPPINGS","up","down","enter","calPagesBetweenDates","yearDelta","totalMonths","monthIndex","initialY","dir","UNIT_BY_VIEW","years","addMult","VIEW_TRANSITIONS","updateActiveView","transitionIndex","newView","pageDown","pageUp","control","visibleMonth","disabled","yearIndex","selectable","rowCount","colCount","startYear","endYear","numPerPage","firstYear","calendarDefaults","formatted","datepickerStore","workingCount","onEditCount","batch","decrementBatchCount","incrementBatchCount","updateBatchCount","deleteBatch","confirmingDelete","expiry","toLocaleDateString","lastAddedDate","dateString","$performAddBatch","$performBatchDec","$performBatchInc","$performBatchUpdate","$performDeleteBatch","workingNote","isEditingNote","editNote","preventEditNote","newName","$performEditName","$performEditPhoto","$performSave","filler","dayInMs","hasItem","$items","today","needAttention","hasSelectedTag","$tags","hasFilter","hasExpiringItem","$expiringItemCount","$expiringFilterSelected","collapse","transitionEndResolve","transitionEndReject","listener","nextFrame","scrollHeight","asyncTransitionEnd","overflow","newParams","leave","accordionKey","queueMicrotask","Mutation","MutationObserver","WebKitMutationObserver","handle","called","observer","observe","characterData","draining","currentQueue","scheduleDrain","MessageChannel","channel","port1","port2","scriptEl","onreadystatechange","documentElement","types","require$$2","require$$3","require$$4","require$$5","queueIndex","scheduled","cleanUpNextTick","nextTick","install","Item","fun","array","lib","rngBrowser","getRandomValues","rnds8","crypto","msCrypto","bytesToUuid_1","byteToHex","_default","bth","v1_1","_rng","_interopRequireDefault","_bytesToUuid","__esModule","_nodeId","_clockseq","_lastMSecs","_lastNSecs","clockseq","seedBytes","rng","msecs","nsecs","tl","tmh","v35","hashfunc","generateUUID","off","stringToBytes","uuid","hex","parseInt","uuidToBytes","DNS","getOutputLength","inputLength8","safeAdd","lsw","md5cmn","q","cnt","md5ff","md5gg","md5hh","md5ii","md5Browser","length32","hexTab","md5ToHexEncodedArray","olda","oldb","oldc","oldd","wordsToMd5","length8","bytesToWords","v3_1","_v","_md","v4_1","rnds","ROTL","sha1Browser","K","N","W","T","v5_1","_sha","_v2","_v3","_v4","v3","v4","v5","hex_chr","md5cycle","md5blk","md5blks","md5blk_array","md51","lo","hi","md51_array","rhex","toUtf8","utf8Str2ArrayBuffer","returnUInt8Array","buff","ArrayBuffer","arrayBuffer2Utf8Str","concatenateArrayBuffers","second","hexToBinaryString","SparkMD5","clamp","targetArray","sourceArray","begin","appendBinary","contents","_buff","_length","_hash","raw","_finish","setState","hashBinary","content","metaStack","lastMetaElement","lastElementIndex","arrayPrefix","objPrefix","collationIndex","parsedNum","numChar","parsedString","lastCh","numConsecutiveSlashes","ch","arrayElement","objElement","argsarray","inherits_browserModule","domain","ExportedSet","ExportedMap","EventHandlers","EventEmitter","$getMaxListeners","that","_maxListeners","defaultMaxListeners","emitNone","isFn","listeners","arrayClone","emitOne","arg1","emitTwo","arg2","emitThree","arg3","emitMany","_addListener","events","existing","_events","newListener","emit","_eventsCount","warned","emitter","warn","_onceWrap","fired","removeListener","listenerCount","evlistener","copy","mangle","unmangle","Map$1","_store","Set$1","cloneBinaryObject","object","cloneArrayBuffer","webkitSlice","usingDomains","getPrototypeOf","setMaxListeners","getMaxListeners","er","doError","domainEmitter","domainThrown","addListener","on","prependListener","once","prependOnceListener","originalListener","spliceOne","removeAllListeners","unwrapListeners","eventNames","Reflect","ownKeys","mangled","getOwnPropertyDescriptor","species","supportsMapAndSet","funcToString","objectCtorString","newObject","isBinaryObject","Ctor","isPlainObject","getArguments","toPromise","usedCB","resp","mesg","adapterFun","_closed","_destroyed","logArgs","origCallback","responseArgs","logApiCall","taskqueue","isReady","addTask","failed","hasLocal","MAX_NUM_CONCURRENT_REQUESTS","identityFunction","formatResultForOpenRevsGet","ok","bulkGet","db","requests","docs","requestsById","request","numDocs","numDone","perDocResults","checkDone","results","info","allRequests","nextBatch","upTo","docId","docIdx","docRequests","docOpts","open_revs","rev","formatResult","processBatch","localStorage","setItem","getItem","hasLocalStorage","Changes","EE","_listeners","attachBrowserEvents","guardedConsole","defaultBackOff","maxTimeout","randomNumber","explainError","dbName","inprogress","eventFunction","changesOpts","changes","seq","since","onChange","immediate","notifyLocalWindows","notify","$inject_Object_assign","nextSource","nextKey","PouchError","MISSING_BULK_DOCS","MISSING_DOC","REV_CONFLICT","INVALID_ID","MISSING_ID","RESERVED_ID","UNKNOWN_ERROR","BAD_ARG","QUERY_PARSE_ERROR","DOC_VALIDATION","BAD_REQUEST","NOT_AN_OBJECT","IDB_ERROR","INVALID_REV","MISSING_STUB","createError","CustomPouchError","names","generateErrorFromResponse","filterChange","req","query","query_params","change","filterReturn","tryFilter","include_docs","attachments","att","_attachments","stub","flatten","arrs","invalidIdError","isRemote","_remote","parseDesignDocFunctionName","normalizeDesignDocFunctionName","normalized","qName","qParser","parser","parseUri","encoded","$0","scopeEval","scope","upsert","diffFun","docRev","_rev","newDoc","updated","_id","put","tryAndPut","thisAtob","thisBtoa","createBlob","properties","BlobBuilder","MSBlobBuilder","MozBlobBuilder","WebKitBlobBuilder","getBlob","binaryStringToArrayBuffer","binStringToBluffer","binString","b64ToBluffer","b64","readAsBinaryString","reader","hasBinaryString","onloadend","binary","arrayBufferToBinaryString","blobToBinaryString","blobOrBuffer","blobToBase64","base64","setImmediateShim","MD5_CHUNK_SIZE","appendBlob","sliceBlob","appendString","string","binaryMd5","inputIsString","chunkSize","chunks","currentChunk","Md5","loadNextChunk","rawToBase64","stringMd5","deterministic_revs","clonedDoc","_rev_tree","winningRev","metadata","winningId","winningPos","winningDeleted","toVisit","rev_tree","tree","ids","branches","traverseRevTree","revs","newCtx","sortByPos","collectLeaves","leaves","isLeaf","collectConflicts","conflicts","leaf","rootToLeaf","sortByPos$1","insertSorted","comparator","mid","low","high","binarySearch","pathToTree","numStemmed","currentLeaf","compareTree","mergeTree","in_tree1","in_tree2","tree1","tree2","doMerge","dontExpand","restree","branch","t1","t2","candidateParents","trees","parentIdx","elements","elementsLen","merge","depth","newTree","stemmed","stemmedRevs","revHash","stem","getTrees","isDeleted","isLocalId","Changes$1","ee","lastSeq","isCancelled","tryCatchInChangeListener","validateChanges","processChange","changeList","_conflicts","compare","yankError","compareByIdThenRev","idCompare","_revisions","doNextCompaction","_compactionQueue","catch","last_seq","_compact","AbstractPouchDB","TaskQueue","PouchDB","__opts","auto_compaction","backend","adapter","adapters","preferredAdapters","adapterName","use_prefix","parseAdapter","_adapter","valid","fail","onDestroyed","from_constructor","onClosed","prepareForDestruction","_changesFilterPlugin","validate","doChanges","continuous","live","normalize","shouldFilter","descending","newPromise","_changes","update_seq","post","bulkDocs","_putLocal","_deleted","_removeLocal","oldRevId","newRevNum","newRevId","putDoc","_put","new_edits","force","putAttachment","attachmentId","rev$$1","api","createAttachment","prevrevpos","content_type","revpos","removeAttachment","remove","docOrId","optsOrRev","was_delete","revsDiff","missing","addToMissing","revId","_getRevisionTree","missingForId","processDoc","missingObj","compactDocument","maxHeight","revTree","edges","prnt","edge","computeHeight","candidates","_doCompaction","compact","return_docs","promises","row","_getLocal","finishOpenRevs","latest","_get","revs_info","splittedRev","revNo","currentPath","hashIndex","indexOfRev","howMany","_revs_info","_getAttachment","getAttachment","allDocs","skip","start_key","startkey","end_key","endkey","incompatibleOpt","allDocsKeysParse","_allDocs","_close","_info","db_name","_type","attachmentError","attachmentNameError","atts","cleanDocs","_bulkDocs","registerDependentDatabase","dependentDb","depDB","dependentDbs","usePrefix","destroyDb","_destroy","localDoc","deletedMap","trueName","execute","AbortController","f$1","fetch","Headers","eventEmitter","Pouch","destructListeners","_destructionListeners","dbList","setUpEventEmitter","addToPreferredAdapters","__defaults","defaultOpts","PouchAlt","getFieldFromDoc","parsedField","parseField","fieldName","combinationFields","isCombinationalField","getKey","mergeAndedSelectors","selectors","selector","matcher","$eq","fieldMatchers","operator","$gte","$gt","mergeGtGte","$lte","$lt","mergeLtLte","$ne","mergeNe","mergeEq","mergeAndedSelectorsNested","isAndInSelector","isAnd","massageSelector","wasAnded","orOrNor","subSelector","MIN_MAGNITUDE","MAGNITUDE_DIGITS","SEP","collate","normalizeKey","ai","stringCollate","arrayCollate","ak","bk","objectCollate","origKey","indexify","expFormat","toExponential","magnitude","neg","magString","padWith","upToLength","padding","targetLength","factor","factorStr","numToIndexableString","toIndexableString","objKey","parseNumber","originalIdx","numAsString","magAsString","filterInMemoryFields","rows","requestDef","inMemoryFields","rowFilter","fieldSorter","getFieldValuesAsArray","sorting","aRow","bRow","collation","compare$1","createFieldSorter","getValue","docFieldValue","orMatchers","matchCominationalSelector","matchSelector","userOperator","userValue","matchers","fieldExists","fieldIsNotUndefined","arrayContainsValue","$elemMatch","$allMatch","$exists","$mod","divisor","mod","modField","neValue","$in","$nin","$size","arraySize","$all","arrayContainsAllValues","$regex","regexMatch","$type","typeMatch","filterName","view","changesHandler","doc_ids","viewName","ddoc","mapFun","views","rowsMatched","matchesSelector","filterFun","reservedWords","dataWords","parseRevisionInfo","parseDoc","newEdits","dbOpts","nRevNum","revInfo","revisions","revisionIds","makeRevTreeFromRevisions","specialKey","preprocessString","blobType","asBinary","parseBase64","digest","preprocessAttachment","md5","preprocessBlob","updateDoc","revLimit","docInfo","writeDoc","splitRev","targetPos","targetId","revExists","previousWinningRev","previouslyDeleted","isRoot","newRev","rev_map","winningRev$$1","winningRevIsDeleted","processDocs","docInfos","fetchedDocs","tx","overallCallback","idsToDocs","docsDone","docsToDo","checkAllDocsDone","currentDoc","resultsIdx","docWritten","nextDoc","rootIsMissing","insertDoc","ADAPTER_VERSION","DOC_STORE","BY_SEQ_STORE","ATTACH_STORE","ATTACH_AND_SEQ_STORE","META_STORE","LOCAL_STORE","DETECT_BLOB_SUPPORT_STORE","safeJsonStringify","json","vuvuzela","idbError","encodeMetadata","deletedOrLocal","decodeMetadata","storedObject","safeJsonParse","decodeDoc","_doc_id_rev","lastIndexOf","readBlobData","asBlob","fetchAttachmentsIfNecessary","txn","attObj","objectStore","onsuccess","fetchAttachment","postProcessAttachments","attNames","compactRevs","possiblyOrphanedDigests","seqStore","attStore","attAndSeqStore","IDBKeyRange","deleteOrphanedAttachments","openCursor","only","digestSeq","primaryKey","continue","openTransactionSafely","idb","transaction","idbBulkDocs","docStore","bySeqStore","attachStore","attachAndSeqStore","metaStore","docInfoError","metaDoc","allDocsProcessed","docCountDelta","preconditionErrored","_meta","blobSupport","onAllDocsProcessed","updateDocCountIfReady","docCount","newRevIsDeleted","isUpdate","collectResults","finishDoc","attachmentSaved","newAtt","saveAttachment","writeAttachments","afterPutDoc","revsToDelete","compactTree","metadataToStore","afterPutMetadata","attsAdded","attsToAdd","insertAttachmentMappings","putReq","overallErr","docv","recv","processedAttachment","preprocessAttachments","txnResult","ontimeout","oncomplete","finish","digests","filename","verifyAttachment","attErr","verifyAttachments","numFetched","revs_limit","readMetadata","fetchExistingDocs","startTransaction","runBatchedCursor","keyRange","batchSize","onBatch","keysBatch","valuesBatch","pseudoCursor","onGetAll","onGetAllKeys","onCursor","getAll","getAllKeys","newKeyRange","lastKey","upper","upperOpen","lowerBound","idbAllDocs","keyRangeError","inclusiveEnd","inclusive_end","upperBound","createKeyRange","onResultsReady","updateSeq","docIdRevIndex","allDocsInner","fetchDocAsynchronously","batchValues","batchValue","batchKeys","returnVal","total_rows","onSuccess","maxKey","getMaxUpdateSeq","allDocsKeys","applyNext","docIds","numResults","docIdsToMetadata","onGetMetadata","docIdRev","objectStores","winningDocs","metadatas","fetchWinningDocAndMetadata","winningDoc","processMetadataAndWinningDoc","onBatchDone","filtered","blobSupportPromise","cachedDBs","openReqList","IdbPouch","tryCode","enqueueTask","thisCallback","createSchema","createObjectStore","keyPath","autoIncrement","createIndex","unique","addDeletedOrLocalIndex","createLocalStoreSchema","migrateLocalStore","localStore","seqCursor","addAttachAndSeqStore","migrateAttsAndSeqs","digestMap","migrateMetadata","decodeMetadataCompat","onGetMetadataSeq","fetchMetadataSeq","metadataSeq","instanceId","reqOpts","historyNode","attachId","attachment","blobData","doc_count","idb_attachment_format","oldRev","oStore","oldDoc","openReq","indexedDB","deleteDatabase","cached","onupgradeneeded","oldVersion","currentTarget","migrations","migration","onversionchange","storedMetaDoc","completeSetup","storeMetaDocIfReady","instanceKey","countDocs","blob$$1","matchedChrome","matchedEdge","checkBlobSupport","CHANGES_BATCH_SIZE","MAX_SIMULTANEOUS_REVS","CHANGES_TIMEOUT_BUFFER","DEFAULT_HEARTBEAT","supportsBulkGetMap","readAttachmentsAsBlobOrBuffer","encodeDocId","preprocessAttachments$1","getHost","hasUrlPrefix","user","password","auth","username","genDBUrl","genUrl","pathDel","paramsToStr","HttpPouch","dbUrl","setupPromise","ourFetch","headers","credentials","nAuth","ua","isIE","isTrident","isEdge","isGET","shouldCacheBust","adapterFun$$1","setup","fetchJSON","response","skip_setup","encodeAttachmentId","uuid$$1","ping","compact_running","doBulkGet","doBulkGetShim","numBatches","onResult","batchNum","subOpts","supportsBulkGet","fetchAttachments","filenames","promiseFactories","doNext","runNextBatch","onError","thisErr","pool","typeFieldDescriptor","__proto__","fetchData","docOrDocs","contentType","browser","paramStr","batch_size","heartbeat","requestTimeout","leftToFetch","feed","seq_interval","param_name","lastFetchedSeq","controller","fetchOpts","signal","fetched","raw_results_length","finished","QueryParseError","NotFoundError","BuiltInError","promisedCallback","sequentialize","promiseFactory","theSet","mapToKeysArray","createBuiltInError","sum","jLen","jNum","evalFunctionWithEval","TaskQueue$1","createView","sourceDB","reduceFun","temporary","localDocName","cachedViews","viewSignature","createViewSignature","_cachedViews","promiseForView","depDbName","fullViewName","depDbs","lastSeqDoc","persistentQueues","tempViewQueue","CHANGES_BATCH_SIZE$1","parseViewName","emitError","builtInReduce","sumsqr","_sumsqr","abstract","ddocValidator","tryMap","tryReduce","rereduce","sortByKeyThenValue","keyCompare","sliceResults","rowToDocId","postprocessAttachments","addHttpParam","asJson","coerceInteger","integerCandidate","asNumber","checkQueryParseError","startkeyName","endkeyName","group_level","optionName","checkPositiveInteger","defaultsTo","getDocsToPersist","docIdsToChangesAndEmits","metaDocId","defaultMetaDoc","docData","indexableKeysToKeyValues","isGenOne","getKeyValueDocs","kvDocsRes","kvDocs","oldKeys","keyValue","newKeys","kvDoc","processKeyValueDocs","getQueue","updateView","mapResults","currentSeq","seqDocId","listOfDocsToPersist","docsToPersist","saveKeyValues","processNextBatch","createDocIdsToChangesAndEmits","createIndexableKeysToKeyValues","emittedKeyValue","complexKey","updateViewInQueue","queryView","totalRows","shouldReduce","fetchFromView","viewOpts","expectedKeys","parsedKeyAndDocId","parsedStr","parseIndexableString","onMapResultsReady","finalResults","shouldGroup","lvl","POSITIVE_INFINITY","groupKey","reduceTry","reduceView","allDocsRes","docIdsToDocs","fetchPromises","keyStart","keyEnd","queryViewInQueue","queryPromised","_query","customQuery","keysAsString","httpQuery","finalPromiseFactory","fin","designDocName","stale","coerceOptions","viewCleanup","_viewCleanup","customViewCleanup","httpViewCleanup","docsToViews","viewsToStatus","ddocName","viewDBNames","statusIsGood","viewDBName","destroyPromises","localViewCleanup","createAbstractMapReduce","origMap","reduceFunString","builtIn","getBuiltIn","mapreduce","isGenOne$1","getDocAttachments","getDocs","diffs","resultDocs","fetchRevisionOneDocs","hasConflicts","bulkGetOpts","missingRev","createBulkGetOpts","bulkGetResponse","bulkGetInfo","remoteDoc","doCheckForLocalAttachments","fileHasChanged","getDocAttachmentsFromTargetOrSource","CHECKPOINT_VERSION","REPLICATOR","CHECKPOINT_HISTORY_SIZE","LOWEST_SEQ","updateCheckpoint","checkpoint","session","returnValue","session_id","replicator","Checkpointer","writeCheckpoint","updateTarget","updateSource","writeTargetCheckpoint","writeSourceCheckpoint","isForbiddenError","comparisons","targetDoc","sourceDoc","srcDoc","tgtDoc","compareReplicationHistory","compareReplicationLogs","sourceHistory","targetHistory","sourceRest","targetRest","hasSessionId","sessionId","getCheckpoint","STARTING_BACK_OFF","generateReplicationId","filterViewName","sortObjectPropertiesByKey","queryData","md5sum","replicate","currentBatch","repId","checkpointer","pendingBatch","writingCheckpoint","changesCompleted","replicationCompleted","batches_limit","changesPending","changedDocs","docs_read","docs_written","doc_write_failures","errors","initCheckpointer","checkpointOpts","writeDocs","bulkOpts","completeReplication","errorsById","errorsNo","errorName","finishBatch","outResult","getChanges","onCheckpointError","getBatchDocs","got","startNextBatch","abortReplication","processPendingBatch","immediate$$1","fatalError","retry","back_off_function","backOffSet","current_back_off","backOff","onChangesComplete","onChangesError","_abortChanges","abortChanges","startChanges","_addedListeners","Replication","toPouch","PouchConstructor","replicateWrapper","replicateRet","Sync","optsPush","optsPull","pull","pullChange","pushChange","pushDenied","pullDenied","pushPaused","pullPaused","pushActive","pullActive","removed","removeAll","addOneListener","success","_readyCalled","replicateMethods","assign$1","setFieldInDoc","elem","massageCreateIndexRequest","dbFetch","explain","getIndexes","deleteIndex","indexDef","callbackify","subArr","mergeObjects","oneArrayIsSubArrayOfOther","arrayEquals","arr1","createMapper","isShallow","checkShallow","isSingle","createShallowSingleMapper","toEmit","createShallowMultiMapper","createDeepSingleMapper","iLen","createDeepMultiMapper","abstractMapper","base64StringToBlobOrBuffer","abstractMapReduce","mapFunDef","abstractMapper$1","_customFindAbstractMapper","massageIndexDef","getKeyFromDoc","def","getIndexes$1","indexes","language","COLLATE_LO","COLLATE_HI","SHORT_CIRCUIT_QUERY","queryOpts","checkFieldInIndex","indexFields","userOperatorLosesPrecision","sortFieldsByIndex","userFields","aIdx","MAX_VALUE","getInMemoryFields","coreInMemoryFields","needToFilterInMemory","getBasicInMemoryFields","getInMemoryFieldsFromNe","checkIndexFieldsMatch","sortOrder","sortMatches","oneArrayIsStrictSubArrayOfOther","selectorMatches","leftIdx","oneSetIsSubArrayOfOther","logicalMatchers","isNonLogicalMatcher","checkIndexMatches","checkFieldsLogicallySound","findBestMatchingIndex","useIndex","matchingIndexes","findMatchingIndexes","defaultIndex","defaultUsed","userFieldsMap","arrayToObject","useIndexDdoc","useIndexName","maxScore","score","indexField","getSingleFieldCoreQueryPlan","combinedOpts","newQueryOpts","inclusive_start","getSingleFieldQueryOptsFor","getMultiFieldCoreQueryPlan","getCoreQueryPlan","getDefaultQueryPlan","inclusiveStart","usingGtlt","previousKeys","previousWasEq","previousWasSame","userOperators","newOpts","getMultiFieldQueryOpts","planQuery","shouldShortCircuit","userFieldsRes","selectorFields","sortFields","rightIdx","getUserFields","use_index","coreQueryPlan","find$1","cleanedUseIndex","massageSort","validateFindRequest","getIndexesRes","queryPlan","indexToUse","noneIdSorts","sortItem","validateSort","indexes_count","reverseOptions","originalOpts","original_limit","doAllDocs","signature","targetValue","docKey","filterInclusiveStart","warning","createIndexAsCallback","originalIndexDef","getMd5","ascFields","validateIndex","ddocId","hasInvalidLanguage","viewExists","findAsCallback","explainAsCallback","dbname","bookmark","getIndexesAsCallback","deleteIndexAsCallback","PouchDBFind","Database","AllDocs","Put","BulkDocs","Attach","Query","CreateIndex","Find","CleanUp","Destroy","databaseToFuture","pouchdb","withAttachment","option","R.compose","R.pluck","R.prop","targetUrl","getWithAttachment","attach","L","R.lensProp","markDeleted","R.set","markAllDeleted","del","deleteAllDocs","includeDoc","makeStartEndRangeAllDocOption","R.applySpec","R.identity","makeKeysAllDocOptionAttached","makeMapWithKeysForDocAttachmentQueryOption","syncWithBackUp","pouch.sync","startsWith","Utils","Random","Reload","FetchJson","atMostFourChar","R.multiply","R.take","randomFourCharacter","utilsInterpretor","reload","itemId","toSnakeCase","R.replace","R.toLower","R.trim","convertItemIdToBatchId","convertBatchIdToItemId","batchId","makeBatchId","expiryDate","docToItemWithBlob","makeItemWithBlob","remind","msBeforeDays","makeGetBatchesAllDocOption","db_ops.makeStartEndRangeAllDocOption","free\n .of","makeBatchDoc","free\n .of","item_ops.getItemRemindDays","free.of","updateBatchRemind","batchDoc","updateAllRemind","addCount","R.over","R.add","incAndSaveCount","decAndSaveCount","updateAndSaveCount","makeItemDoc","postHash","makeItemId","free.parallel","batch_ops.removeAll","getItemRemindDays","R.view","editPhoto","internalEditRemindDays","Status","stockStatus","updateItemStockStatus","newStatus","determineStatus","previousStatus","hasBatch","R.cond","R.always","R.and","R.equals","R.T","refreshItemStockStatus","R.defaultTo","getItemStockStatus","batch_ops.getAll","R.complement","R.isEmpty","KV","Remove","kvToFuture","kv","removeItem","R.lensPath","makeSortByRemindOptions","getSavedTagFilter","kv.get","R.ifElse","free.left","free.right","setSavedTagFilter","kv.set","updateSavedTagFilter","modifier","free.bimap","removeFilterTag","R.without","queryTagFilter","queryResultToTagSelection","getAllTags","queryResultToItem","R.uniqBy","getItemsWithTags","setExpiringFlag","findExpiringItemIdAndExpiry","indexedMap","R.addIndex","getExpiringItems","tagFilter","itemIdAndExpirys","R.filter","itemWithTagFilter","R.not","R.intersection","setOutOfStockFlag","findOutOfStockItems","stock_ops.Status","getOutOfStockItems","free.bichain","presentGoToItems","itemWithBlobs","ivb","presentItems","presentAllItems","item_ops.getAll","presentFilteredItem","filterTags","filter_ops.getItemsWithTags","presentTagSelection","selectedTags","filter_ops.getAllTags","R.includes","R.flip","filter_ops.updateSavedTagFilter","presentGrid","performRemoveTagFilter","R.append","performAddTagFilter","filter_ops.setExpiringFlag","filter_ops.setOutOfStockFlag","presentExpiringItemsWithTags","filter_ops.getExpiringItemsWithTags","presentExpiringFilter","itsOn","R.length","presentOutOfStockItemsWithTags","filter_ops.getOutOfStockItemsWithTags","presentOutOfStockFilter","presentOutOfStockGrid","no","filter_ops.getSavedTagFilter","free.parallelConverge","yes","filter_ops.getOutOfStockItems","filter_ops.getExpiringItems","hookCallback","hooks","setHookCallback","hasOwnProp","isObjectEmpty","isUndefined","isDate","createUTC","createLocalOrUTC","defaultParsingFlags","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","rfc2822","weekdayMismatch","getParsingFlags","_pf","_isValid","parsedParts","isNowValid","invalidWeekday","bigHour","isFrozen","createInvalid","momentProperties","updateInProgress","copyConfig","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","deprecations","deprecateSimple","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","mom","_calendar","zeroFill","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","replaceLongDateFormatTokens","longDateFormat","lastIndex","defaultLongDateFormat","LTS","LT","LL","LLL","LLLL","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","past","yy","relativeTime","withoutSuffix","_relativeTime","pastFuture","aliases","addUnitAlias","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","isLeapYear","absFloor","toInt","argumentForCoercion","coercedNumber","isFinite","makeGetSet","keepTime","set$1","stringGet","stringSet","prioritized","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","modMonth","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","dayOfMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","setFullYear","createUTCDate","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","seconds","kInput","_isPm","isPM","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","minl","normalizeLocale","chooseLocale","loadLocale","oldLocale","_abbr","getSetGlobalLocale","getLocale","defineLocale","abbr","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","E","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","hour","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configFromObject","dayOrDate","minute","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","isValid$1","createInvalid$1","createDuration","Duration","quarters","quarter","weeks","isoWeek","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","separator","sign","offsetFromString","chunkOffset","cloneWithOffset","model","setTime","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","createAdder","period","isAdding","invalid","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","calendarFormat","localInput","isBetween","inclusivity","localFrom","localTo","inputMs","isSameOrAfter","isSameOrBefore","asFloat","zoneDelta","monthDiff","wholeMonthDiff","keepOffset","inspect","datetime","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","until","localeErasParse","eraName","narrow","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","timeAgoText","settingUp","showingTips","previosSyncDate","moment","daysDifference","hoursDifference","workingCode","isSyncing","$performSyncStorage","syncMessage","hasCode","$savedCode","hasSyncStatus","$syncStatus","syncStatusIsError","$syncErrorMessage","confirmText","cancelText","onCancel","onConfirm","sureAboutReset","$performDestroyStorage","Backup","remoteSyncWithCode","requestUrl","creds","remoteBackupToFuture","free.interpete","performCompactStorage","presentSync","backupCode","backup.sync","timeStamp","goToSettingPage","Setting","setSettingUrl","kv.remove","goToHome","itemHasBatch","updateItemStockStatusBaseOnBatch","stock_ops.updateItemStockStatus","migrate","previousVersion","database.allDocs","Home","InfoOnePager","router.setInfoUrl","HowToOnePager","router.setHowToUrl","Releases","router.setReleaseUrl","presentHome","router.setHomeUrl","currentVersion","R.isNil","version_ops.save","version_ops.migrate","appendTagAndSort","R.sortBy","addTag","itemDoc","removeTag","renameItemTag","R.of","R.traverse","tag_ops.remove","tag_ops.add","renameSavedTagFilter","filter_ops.removeFilterTag","removeItemTag","removeSavedTagFilter","renameTag","performCreateItem","item_ops.create","goToItemCreation","ItemCreation","setItemCreationUrl","photoId","item_ops.editName","batch_ops.updateAllRemind","R.head","item_ops.editRemindDays","item_ops.editNote","presentNote","item_ops.getItemNote","presentRemind","makeDeleteBatch","batch_ops.remove","stock_ops.refreshItemStockStatus","presentBatches","performBatchCounting","operation","performBatchDirectUpdate","batch_ops.updateAndSaveCount","batch_ops.incAndSaveCount","batch_ops.decAndSaveCount","presentTags","free\n // Convert the two arguments to a list\n .of","R.curryN","R.unapply","tag_ops.getItemTags","itemTags","bulk_tag_ops.renameTag","performTagRenaming","performTagRemoving","presentItem","item_ops.getItemWithPhoto","itemWithBlob","setItemUrl","newDays","batch_ops.create","performCreateBatch","item_ops.editPhoto","item_ops.remove","Navigation","Show","setUrl","gridPath","itemCreatePath","itemPath","settingPath","infoPath","howtoPath","releasePath","setHomeUrl","setInfoUrl","setHowToUrl","setReleaseUrl","navigationInterpretor","newPath","memoryPouchdb","memoryKV","gridSetup"],"mappings":"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"}